From feld@feld.me  Wed Aug 15 05:24:23 2012
Return-Path: <feld@feld.me>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id E0A14106564A
	for <FreeBSD-gnats-submit@freebsd.org>; Wed, 15 Aug 2012 05:24:22 +0000 (UTC)
	(envelope-from feld@feld.me)
Received: from feld.me (unknown [IPv6:2607:f4e0:100:300::2])
	by mx1.freebsd.org (Postfix) with ESMTP id 8804A8FC0A
	for <FreeBSD-gnats-submit@freebsd.org>; Wed, 15 Aug 2012 05:24:22 +0000 (UTC)
Received: from feld by feld.me with local (Exim 4.80 (FreeBSD))
	(envelope-from <feld@feld.me>)
	id 1T1W5c-000JUo-BB
	for FreeBSD-gnats-submit@freebsd.org; Wed, 15 Aug 2012 00:24:20 -0500
Message-Id: <E1T1W5c-000JUo-BB@feld.me>
Date: Wed, 15 Aug 2012 00:24:20 -0500
From: Mark Felder <feld@feld.me>
To: FreeBSD-gnats-submit@freebsd.org
Subject: [PATCH] irc/inspircd: update to 2.0.8
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         170644
>Category:       ports
>Synopsis:       [PATCH] irc/inspircd: update to 2.0.8
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    swills
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Wed Aug 15 05:30:10 UTC 2012
>Closed-Date:    Fri Aug 17 16:59:17 UTC 2012
>Last-Modified:  Fri Aug 17 17:00:24 UTC 2012
>Originator:     feld
>Release:        FreeBSD 9.0-STABLE amd64
>Organization:
>Environment:
System: FreeBSD mwi1.coffeenet.org 9.0-STABLE FreeBSD 9.0-STABLE #3 r234963: Thu May  3 13:12:01
>Description:
- Update to 2.0.8
- Made the knobs actually work
- Added regex modules as new knobs
- Added ldapoper module knob
- regex_posix and sqlite enabled by default (following upstream)

Added file(s):
- files/patch-make_template_main.mk

Removed file(s):
- files/patch-src_dns.cpp

https://redports.org/buildarchive/20120815052212-46196/

Generated with FreeBSD Port Tools 0.99_6 (mode: update, diff: suffix)
>How-To-Repeat:
>Fix:

--- inspircd-2.0.8.patch begins here ---
diff -ruN --exclude=CVS ../inspircd.orig/Makefile ./Makefile
--- ../inspircd.orig/Makefile	2012-06-14 14:28:02.000000000 -0500
+++ ./Makefile	2012-08-15 00:21:05.821274446 -0500
@@ -6,8 +6,7 @@
 #
 
 PORTNAME=	inspircd
-PORTVERSION=	2.0.5
-PORTREVISION=	2
+PORTVERSION=	2.0.8
 CATEGORIES=	irc
 MASTER_SITES=	http://cloud.github.com/downloads/inspircd/inspircd/
 DISTNAME=	InspIRCd-${PORTVERSION}
@@ -36,34 +35,44 @@
 
 HAS_CONFIGURE=	yes
 CONFIGURE_ARGS=	--with-cc=${CXX} --config-dir=${ETCDIR} \
-		--module-dir=${PREFIX}/lib/${PORTNAME}/modules            \
-		--library-dir=${PREFIX}/lib/${PORTNAME}                   \
+		--module-dir=${PREFIX}/lib/${PORTNAME}/modules \
 		--prefix=${PREFIX}/lib/${PORTNAME} --binary-dir=${PREFIX}/bin \
-		--enable-kqueue --enable-ipv6 --disable-interactive \
+		--enable-kqueue --disable-interactive \
 		--uid=${INSPIRCD_UID}
-
 PORTDOCS=	docs/* extras/*
 
-OPTIONS_DEFINE=	MYSQL PGSQL SQLITE LDAP GNUTLS OPENSSL
+OPTIONS_DEFINE=	MYSQL PGSQL SQLITE LDAPAUTH LDAPOPER GNUTLS OPENSSL PCRE POSIX
+OPTIONS_DEFAULT=	POSIX SQLITE
 
 GNUTLS_DESC=	Build m_ssl_gnutls module
-LDAP_DESC=	Build m_ldapauth module
+LDAPAUTH_DESC=	Build m_ldapauth module
+LDAPOPER_DESC=	Build m_ldapoper module
 MYSQL_DESC=	Build m_mysql module
 OPENSSL_DESC=	Build m_ssl_openssl module
 PGSQL_DESC=	Build m_pgsql module
 SQLITE_DESC=	Build m_sqlite3 module
+PCRE_DESC=	Build m_regex_pcre module
+POSIX_DESC=	Build m_regex_posix module
 
 .include <bsd.port.options.mk>
 
 post-extract:
 	@(cd ${WRKDIR} && ${MV} ${PORTNAME} ${DISTNAME})
 
-.if ${PORT_OPTIONS:MLDAP}
+.if ${PORT_OPTIONS:MLDAPAUTH}
 USE_OPENLDAP=	yes
 EXTRAS:=${EXTRAS},m_ldapauth.cpp
-PLIST_SUB+=	LDAP=""
+PLIST_SUB+=	LDAPAUTH=""
+.else
+PLIST_SUB+=	LDAPAUTH="@comment "
+.endif
+
+.if ${PORT_OPTIONS:MLDAPOPER}
+USE_OPENLDAP=	yes
+EXTRAS:=${EXTRAS},m_ldapoper.cpp
+PLIST_SUB+=	LDAPOPER=""
 .else
-PLIST_SUB+=	LDAP="@comment "
+PLIST_SUB+=	LDAPOPER="@comment "
 .endif
 
 .if ${PORT_OPTIONS:MMYSQL}
@@ -94,6 +103,7 @@
 LIB_DEPENDS+=	gnutls.47:${PORTSDIR}/security/gnutls \
 		gcrypt.18:${PORTSDIR}/security/libgcrypt
 CONFIGURE_ARGS+=	--enable-gnutls
+EXTRAS:=${EXTRAS},m_ssl_gnutls.cpp
 PLIST_SUB+=	GNUTLS=""
 .else
 PLIST_SUB+=	GNUTLS="@comment "
@@ -102,12 +112,31 @@
 .if ${PORT_OPTIONS:MOPENSSL}
 USE_OPENSSL=yes
 CONFIGURE_ARGS+=	--enable-openssl
+EXTRAS:=${EXTRAS},m_ssl_openssl.cpp
 PLIST_SUB+=	OPENSSL=""
 .else
 PLIST_SUB+=	OPENSSL="@comment "
 .endif
 
-CONFIGURE_ARGS+=	--enable-extras=${EXTRAS}
+.if ${PORT_OPTIONS:MPCRE}
+LIB_DEPENDS+=	pcre:${PORTSDIR}/devel/pcre
+EXTRAS:=${EXTRAS},m_regex_pcre.cpp
+PLIST_SUB+=	PCRE=""
+.else
+PLIST_SUB+=	PCRE="@comment "
+.endif
+
+.if ${PORT_OPTIONS:MPOSIX}
+EXTRAS:=${EXTRAS},m_regex_posix.cpp
+PLIST_SUB+=	POSIX=""
+.else
+PLIST_SUB+=	POSIX="@comment "
+.endif
+
+pre-configure:
+	@if [ ${EXTRAS} ]; then \
+		cd ${WRKSRC} && ./${CONFIGURE_SCRIPT} --enable-extras=${EXTRAS} ; \
+	fi
 
 post-install:
 	@${STRIP_CMD} ${PREFIX}/lib/${PORTNAME}/modules/*.so
diff -ruN --exclude=CVS ../inspircd.orig/distinfo ./distinfo
--- ../inspircd.orig/distinfo	2012-05-15 21:45:17.000000000 -0500
+++ ./distinfo	2012-08-14 17:04:27.000000000 -0500
@@ -1,2 +1,2 @@
-SHA256 (InspIRCd-2.0.5.tar.bz2) = 425bf79ae1348b398ce6d2348f6cc8baeebe8125f62337e98c136942223f4fc6
-SIZE (InspIRCd-2.0.5.tar.bz2) = 575852
+SHA256 (InspIRCd-2.0.8.tar.bz2) = 5fd57df1a2a10f480aefc61272f22fdd8addb5ab3a544582235377b8fa8b9296
+SIZE (InspIRCd-2.0.8.tar.bz2) = 591761
diff -ruN --exclude=CVS ../inspircd.orig/files/patch-make_template_main.mk ./files/patch-make_template_main.mk
--- ../inspircd.orig/files/patch-make_template_main.mk	1969-12-31 18:00:00.000000000 -0600
+++ ./files/patch-make_template_main.mk	2012-08-14 23:58:15.000000000 -0500
@@ -0,0 +1,22 @@
+--- make/template/main.mk.orig	2012-07-13 10:38:01.000000000 -0500
++++ make/template/main.mk	2012-08-14 23:58:06.816315279 -0500
+@@ -58,6 +58,10 @@
+ @IFEQ $(SYSTEM) linux
+   LDLIBS += -ldl -lrt
+ @ENDIF
++@IFEQ $(SYSTEM) freebsd
++  CXXFLAGS += -I/usr/local/include
++  LDFLAGS += -L/usr/local/lib
++@ENDIF
+ @IFEQ $(SYSTEM) gnukfreebsd
+   LDLIBS += -ldl -lrt
+ @ENDIF
+@@ -124,7 +128,7 @@
+   CXXFLAGS += -DPURE_STATIC
+ @ENDIF
+ 
+-@DO_EXPORT RUNCC RUNLD CXXFLAGS LDLIBS PICLDFLAGS VERBOSE SOCKETENGINE CORELDFLAGS
++@DO_EXPORT RUNCC RUNLD CXXFLAGS LDLIBS PICLDFLAGS VERBOSE SOCKETENGINE CORELDFLAGS LDFLAGS
+ @DO_EXPORT SOURCEPATH BUILDPATH PURE_STATIC SPLIT_CC
+ 
+ # Default target
diff -ruN --exclude=CVS ../inspircd.orig/files/patch-src_dns.cpp ./files/patch-src_dns.cpp
--- ../inspircd.orig/files/patch-src_dns.cpp	2012-05-16 08:29:59.000000000 -0500
+++ ./files/patch-src_dns.cpp	1969-12-31 18:00:00.000000000 -0600
@@ -1,135 +0,0 @@
---- src/dns.cpp.orig	2012-05-15 21:45:31.840274636 -0500
-+++ src/dns.cpp	2012-05-15 21:45:58.653278686 -0500
-@@ -38,6 +49,8 @@
- #include "configreader.h"
- #include "socket.h"
- 
-+#define DN_COMP_BITMASK	0xC000		/* highest 6 bits in a DN label header */
-+
- /** Masks to mask off the responses we get from the DNSRequest methods
-  */
- enum QueryInfo
-@@ -98,7 +111,7 @@
- 
- 	DNSRequest(DNS* dns, int id, const std::string &original);
- 	~DNSRequest();
--	DNSInfo ResultIsReady(DNSHeader &h, int length);
-+	DNSInfo ResultIsReady(DNSHeader &h, unsigned length);
- 	int SendRequests(const DNSHeader *header, const int length, QueryType qt);
- };
- 
-@@ -161,7 +174,10 @@
- /* Allocate the processing buffer */
- DNSRequest::DNSRequest(DNS* dns, int rid, const std::string &original) : dnsobj(dns)
- {
--	res = new unsigned char[512];
-+	/* hardening against overflow here:  make our work buffer twice the theoretical
-+	 * maximum size so that hostile input doesn't screw us over.
-+	 */
-+	res = new unsigned char[sizeof(DNSHeader) * 2];
- 	*res = 0;
- 	orig = original;
- 	RequestTimeout* RT = new RequestTimeout(ServerInstance->Config->dns_timeout ? ServerInstance->Config->dns_timeout : 5, this, rid);
-@@ -688,11 +704,11 @@
- }
- 
- /** A result is ready, process it */
--DNSInfo DNSRequest::ResultIsReady(DNSHeader &header, int length)
-+DNSInfo DNSRequest::ResultIsReady(DNSHeader &header, unsigned length)
- {
--	int i = 0;
-+	unsigned i = 0, o;
- 	int q = 0;
--	int curanswer, o;
-+	int curanswer;
- 	ResourceRecord rr;
-  	unsigned short ptr;
- 
-@@ -755,7 +771,7 @@
- 				else i += header.payload[i] + 1; /* skip length and label */
- 			}
- 		}
--		if (length - i < 10)
-+		if (static_cast<int>(length - i) < 10)
- 			return std::make_pair((unsigned char*)NULL,"Incorrectly sized DNS reply");
- 
- 		/* XXX: We actually initialise 'rr' here including its ttl field */
-@@ -790,17 +806,37 @@
- 
- 	switch (rr.type)
- 	{
-+		/*
-+		 * CNAME and PTR are compressed.  We need to decompress them.
-+		 */
- 		case DNS_QUERY_CNAME:
--			/* CNAME and PTR have the same processing code */
- 		case DNS_QUERY_PTR:
-+		{
-+			unsigned short lowest_pos = length;
- 			o = 0;
- 			q = 0;
- 			while (q == 0 && i < length && o + 256 < 1023)
- 			{
-+				/* DN label found (byte over 63) */
- 				if (header.payload[i] > 63)
- 				{
- 					memcpy(&ptr,&header.payload[i],2);
--					i = ntohs(ptr) - 0xC000 - 12;
-+
-+					i = ntohs(ptr);
-+
-+					/* check that highest two bits are set. if not, we've been had */
-+					if ((i & DN_COMP_BITMASK) != DN_COMP_BITMASK)
-+						return std::make_pair((unsigned char *) NULL, "DN label decompression header is bogus");
-+
-+					/* mask away the two highest bits. */
-+					i &= ~DN_COMP_BITMASK;
-+
-+					/* and decrease length by 12 bytes. */
-+					i -= 12;
-+
-+					if (i >= lowest_pos)
-+						return std::make_pair((unsigned char *) NULL, "Invalid decompression pointer");
-+					lowest_pos = i;
- 				}
- 				else
- 				{
-@@ -813,25 +849,35 @@
- 						res[o] = 0;
- 						if (o != 0)
- 							res[o++] = '.';
--						memcpy(&res[o],&header.payload[i + 1],header.payload[i]);
-+
-+						if (o + header.payload[i] > sizeof(DNSHeader))
-+							return std::make_pair((unsigned char *) NULL, "DN label decompression is impossible -- malformed/hostile packet?");
-+
-+						memcpy(&res[o], &header.payload[i + 1], header.payload[i]);
- 						o += header.payload[i];
- 						i += header.payload[i] + 1;
- 					}
- 				}
- 			}
- 			res[o] = 0;
-+		}
- 		break;
- 		case DNS_QUERY_AAAA:
-+			if (rr.rdlength != sizeof(struct in6_addr))
-+				return std::make_pair((unsigned char *) NULL, "rr.rdlength is larger than 16 bytes for an ipv6 entry -- malformed/hostile packet?");
-+
- 			memcpy(res,&header.payload[i],rr.rdlength);
- 			res[rr.rdlength] = 0;
- 		break;
- 		case DNS_QUERY_A:
-+			if (rr.rdlength != sizeof(struct in_addr))
-+				return std::make_pair((unsigned char *) NULL, "rr.rdlength is larger than 4 bytes for an ipv4 entry -- malformed/hostile packet?");
-+
- 			memcpy(res,&header.payload[i],rr.rdlength);
- 			res[rr.rdlength] = 0;
- 		break;
- 		default:
--			memcpy(res,&header.payload[i],rr.rdlength);
--			res[rr.rdlength] = 0;
-+			return std::make_pair((unsigned char *) NULL, "don't know how to handle undefined type (" + ConvToStr(rr.type) + ") -- rejecting");
- 		break;
- 	}
- 	return std::make_pair(res,"No error");
diff -ruN --exclude=CVS ../inspircd.orig/pkg-plist ./pkg-plist
--- ../inspircd.orig/pkg-plist	2012-06-14 14:28:02.000000000 -0500
+++ ./pkg-plist	2012-08-15 00:06:28.000000000 -0500
@@ -182,12 +182,15 @@
 lib/inspircd/modules/m_spanningtree.so
 lib/inspircd/modules/m_sqlauth.so
 lib/inspircd/modules/m_sqloper.so
-%%LDAP%%lib/inspircd/modules/m_ldapauth.so
+%%LDAPAUTH%%lib/inspircd/modules/m_ldapauth.so
+%%LDAPOPER%%lib/inspircd/modules/m_ldapoper.so
 %%MYSQL%%lib/inspircd/modules/m_mysql.so
 %%PGSQL%%lib/inspircd/modules/m_pgsql.so
 %%SQLITE%%lib/inspircd/modules/m_sqlite3.so
 %%GNUTLS%%lib/inspircd/modules/m_ssl_gnutls.so
 %%OPENSSL%%lib/inspircd/modules/m_ssl_openssl.so
+%%PCRE%%lib/inspircd/modules/m_regex_pcre.so
+%%POSIX%%lib/inspircd/modules/m_regex_posix.so
 lib/inspircd/modules/m_sslinfo.so
 lib/inspircd/modules/m_sslmodes.so
 lib/inspircd/modules/m_stripcolor.so
--- inspircd-2.0.8.patch ends here ---

>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-ports-bugs->swills 
Responsible-Changed-By: edwin 
Responsible-Changed-When: Wed Aug 15 05:30:23 UTC 2012 
Responsible-Changed-Why:  
swills@ wants his PRs (via the GNATS Auto Assign Tool) 

http://www.freebsd.org/cgi/query-pr.cgi?pr=170644 

From: Mark Felder <feld@feld.me>
To: bug-followup@freebsd.org
Cc:  
Subject: Re: ports/170644: [PATCH] irc/inspircd: update to 2.0.8
Date: Wed, 15 Aug 2012 11:14:26 -0500

 new patch revision coming soon... noticed a plist issue with the one I  
 submitted

From: Mark Felder <feld@feld.me>
To: bug-followup@freebsd.org
Cc:  
Subject: Re: ports/170644: [PATCH] irc/inspircd: update to 2.0.8
Date: Wed, 15 Aug 2012 16:52:38 -0500

 ------------quJnls4csXx7GE6yhWre15
 Content-Type: text/plain; charset=utf-8; format=flowed; delsp=yes
 
 New patch is ready to commit!
 
 Changes:
 -fixed plist
 -I was wrong, SQLITE isn't default upstream. REMOVED (so don't mention  
 that in commit changelog)
 
 
 Squeaky-clean redports:  
 https://redports.org/buildarchive/20120815161533-62688/
 
 ------------quJnls4csXx7GE6yhWre15
 Content-Disposition: attachment; filename=inspircd-2.0.8.patchv2
 Content-Type: application/octet-stream; name=inspircd-2.0.8.patchv2
 Content-Transfer-Encoding: base64
 
 LS0tIGluc3BpcmNkLTIuMC44LnBhdGNoIGJlZ2lucyBoZXJlIC0tLQpkaWZmIC1ydU4gLS1l
 eGNsdWRlPUNWUyAuLi9pbnNwaXJjZC5vcmlnL01ha2VmaWxlIC4vTWFrZWZpbGUKLS0tIC4u
 L2luc3BpcmNkLm9yaWcvTWFrZWZpbGUJMjAxMi0wNi0xNCAxNDoyODowMi4wMDAwMDAwMDAg
 LTA1MDAKKysrIC4vTWFrZWZpbGUJMjAxMi0wOC0xNSAxNjo0OTowOS41OTkzMTYzOTMgLTA1
 MDAKQEAgLTYsOCArNiw3IEBACiAjCiAKIFBPUlROQU1FPQlpbnNwaXJjZAotUE9SVFZFUlNJ
 T049CTIuMC41Ci1QT1JUUkVWSVNJT049CTIKK1BPUlRWRVJTSU9OPQkyLjAuOAogQ0FURUdP
 UklFUz0JaXJjCiBNQVNURVJfU0lURVM9CWh0dHA6Ly9jbG91ZC5naXRodWIuY29tL2Rvd25s
 b2Fkcy9pbnNwaXJjZC9pbnNwaXJjZC8KIERJU1ROQU1FPQlJbnNwSVJDZC0ke1BPUlRWRVJT
 SU9OfQpAQCAtMzYsMzQgKzM1LDQ0IEBACiAKIEhBU19DT05GSUdVUkU9CXllcwogQ09ORklH
 VVJFX0FSR1M9CS0td2l0aC1jYz0ke0NYWH0gLS1jb25maWctZGlyPSR7RVRDRElSfSBcCi0J
 CS0tbW9kdWxlLWRpcj0ke1BSRUZJWH0vbGliLyR7UE9SVE5BTUV9L21vZHVsZXMgICAgICAg
 ICAgICBcCi0JCS0tbGlicmFyeS1kaXI9JHtQUkVGSVh9L2xpYi8ke1BPUlROQU1FfSAgICAg
 ICAgICAgICAgICAgICBcCisJCS0tbW9kdWxlLWRpcj0ke1BSRUZJWH0vbGliLyR7UE9SVE5B
 TUV9L21vZHVsZXMgXAogCQktLXByZWZpeD0ke1BSRUZJWH0vbGliLyR7UE9SVE5BTUV9IC0t
 YmluYXJ5LWRpcj0ke1BSRUZJWH0vYmluIFwKLQkJLS1lbmFibGUta3F1ZXVlIC0tZW5hYmxl
 LWlwdjYgLS1kaXNhYmxlLWludGVyYWN0aXZlIFwKKwkJLS1lbmFibGUta3F1ZXVlIC0tZGlz
 YWJsZS1pbnRlcmFjdGl2ZSBcCiAJCS0tdWlkPSR7SU5TUElSQ0RfVUlEfQotCiBQT1JURE9D
 Uz0JZG9jcy8qIGV4dHJhcy8qCiAKLU9QVElPTlNfREVGSU5FPQlNWVNRTCBQR1NRTCBTUUxJ
 VEUgTERBUCBHTlVUTFMgT1BFTlNTTAorT1BUSU9OU19ERUZJTkU9CU1ZU1FMIFBHU1FMIFNR
 TElURSBMREFQQVVUSCBMREFQT1BFUiBHTlVUTFMgT1BFTlNTTCBQQ1JFIFBPU0lYCitPUFRJ
 T05TX0RFRkFVTFQ9CVBPU0lYCiAKIEdOVVRMU19ERVNDPQlCdWlsZCBtX3NzbF9nbnV0bHMg
 bW9kdWxlCi1MREFQX0RFU0M9CUJ1aWxkIG1fbGRhcGF1dGggbW9kdWxlCitMREFQQVVUSF9E
 RVNDPQlCdWlsZCBtX2xkYXBhdXRoIG1vZHVsZQorTERBUE9QRVJfREVTQz0JQnVpbGQgbV9s
 ZGFwb3BlciBtb2R1bGUKIE1ZU1FMX0RFU0M9CUJ1aWxkIG1fbXlzcWwgbW9kdWxlCiBPUEVO
 U1NMX0RFU0M9CUJ1aWxkIG1fc3NsX29wZW5zc2wgbW9kdWxlCiBQR1NRTF9ERVNDPQlCdWls
 ZCBtX3Bnc3FsIG1vZHVsZQogU1FMSVRFX0RFU0M9CUJ1aWxkIG1fc3FsaXRlMyBtb2R1bGUK
 K1BDUkVfREVTQz0JQnVpbGQgbV9yZWdleF9wY3JlIG1vZHVsZQorUE9TSVhfREVTQz0JQnVp
 bGQgbV9yZWdleF9wb3NpeCBtb2R1bGUKIAogLmluY2x1ZGUgPGJzZC5wb3J0Lm9wdGlvbnMu
 bWs+CiAKIHBvc3QtZXh0cmFjdDoKIAlAKGNkICR7V1JLRElSfSAmJiAke01WfSAke1BPUlRO
 QU1FfSAke0RJU1ROQU1FfSkKIAotLmlmICR7UE9SVF9PUFRJT05TOk1MREFQfQorLmlmICR7
 UE9SVF9PUFRJT05TOk1MREFQQVVUSH0KIFVTRV9PUEVOTERBUD0JeWVzCiBFWFRSQVM6PSR7
 RVhUUkFTfSxtX2xkYXBhdXRoLmNwcAotUExJU1RfU1VCKz0JTERBUD0iIgorUExJU1RfU1VC
 Kz0JTERBUEFVVEg9IiIKKy5lbHNlCitQTElTVF9TVUIrPQlMREFQQVVUSD0iQGNvbW1lbnQg
 IgorLmVuZGlmCisKKy5pZiAke1BPUlRfT1BUSU9OUzpNTERBUE9QRVJ9CitVU0VfT1BFTkxE
 QVA9CXllcworRVhUUkFTOj0ke0VYVFJBU30sbV9sZGFwb3Blci5jcHAKK1BMSVNUX1NVQis9
 CUxEQVBPUEVSPSIiCiAuZWxzZQotUExJU1RfU1VCKz0JTERBUD0iQGNvbW1lbnQgIgorUExJ
 U1RfU1VCKz0JTERBUE9QRVI9IkBjb21tZW50ICIKIC5lbmRpZgogCiAuaWYgJHtQT1JUX09Q
 VElPTlM6TU1ZU1FMfQpAQCAtOTQsNiArMTAzLDcgQEAKIExJQl9ERVBFTkRTKz0JZ251dGxz
 LjQ3OiR7UE9SVFNESVJ9L3NlY3VyaXR5L2dudXRscyBcCiAJCWdjcnlwdC4xODoke1BPUlRT
 RElSfS9zZWN1cml0eS9saWJnY3J5cHQKIENPTkZJR1VSRV9BUkdTKz0JLS1lbmFibGUtZ251
 dGxzCitFWFRSQVM6PSR7RVhUUkFTfSxtX3NzbF9nbnV0bHMuY3BwCiBQTElTVF9TVUIrPQlH
 TlVUTFM9IiIKIC5lbHNlCiBQTElTVF9TVUIrPQlHTlVUTFM9IkBjb21tZW50ICIKQEAgLTEw
 MiwyMiArMTEyLDQxIEBACiAuaWYgJHtQT1JUX09QVElPTlM6TU9QRU5TU0x9CiBVU0VfT1BF
 TlNTTD15ZXMKIENPTkZJR1VSRV9BUkdTKz0JLS1lbmFibGUtb3BlbnNzbAorRVhUUkFTOj0k
 e0VYVFJBU30sbV9zc2xfb3BlbnNzbC5jcHAKIFBMSVNUX1NVQis9CU9QRU5TU0w9IiIKIC5l
 bHNlCiBQTElTVF9TVUIrPQlPUEVOU1NMPSJAY29tbWVudCAiCiAuZW5kaWYKIAotQ09ORklH
 VVJFX0FSR1MrPQktLWVuYWJsZS1leHRyYXM9JHtFWFRSQVN9CisuaWYgJHtQT1JUX09QVElP
 TlM6TVBDUkV9CitMSUJfREVQRU5EUys9CXBjcmU6JHtQT1JUU0RJUn0vZGV2ZWwvcGNyZQor
 RVhUUkFTOj0ke0VYVFJBU30sbV9yZWdleF9wY3JlLmNwcAorUExJU1RfU1VCKz0JUENSRT0i
 IgorLmVsc2UKK1BMSVNUX1NVQis9CVBDUkU9IkBjb21tZW50ICIKKy5lbmRpZgorCisuaWYg
 JHtQT1JUX09QVElPTlM6TVBPU0lYfQorRVhUUkFTOj0ke0VYVFJBU30sbV9yZWdleF9wb3Np
 eC5jcHAKK1BMSVNUX1NVQis9CVBPU0lYPSIiCisuZWxzZQorUExJU1RfU1VCKz0JUE9TSVg9
 IkBjb21tZW50ICIKKy5lbmRpZgorCitwcmUtY29uZmlndXJlOgorCUBpZiBbICR7RVhUUkFT
 fSBdOyB0aGVuIFwKKwkJY2QgJHtXUktTUkN9ICYmIC4vJHtDT05GSUdVUkVfU0NSSVBUfSAt
 LWVuYWJsZS1leHRyYXM9JHtFWFRSQVN9IDsgXAorCWZpCiAKIHBvc3QtaW5zdGFsbDoKIAlA
 JHtTVFJJUF9DTUR9ICR7UFJFRklYfS9saWIvJHtQT1JUTkFNRX0vbW9kdWxlcy8qLnNvCiAJ
 QCR7U1RSSVBfQ01EfSAke1BSRUZJWH0vYmluLyR7UE9SVE5BTUV9CiAuZm9yIEZJTEUgaW4g
 aW5zcGlyY2QuY2Vuc29yIGluc3BpcmNkLmNvbmYgaW5zcGlyY2QuZmlsdGVyIGluc3BpcmNk
 LmhlbHBvcC1mdWxsIFwKIAlpbnNwaXJjZC5oZWxwb3AgaW5zcGlyY2QubW90ZCBpbnNwaXJj
 ZC5xdW90ZXMgaW5zcGlyY2QucnVsZXMgbGlua3MuY29uZiBtb2R1bGVzLmNvbmYgb3BlcnMu
 Y29uZgotCUBpZiAke1RFU1R9IC1mICR7RVRDRElSfS8ke0ZJTEV9ICYmICAgICAgICAgICAg
 ICBcCi0JICAgICR7VEVTVH0gISAtZiAke0VUQ0RJUn0vJHtGSUxFfS5leGFtcGxlIDsgdGhl
 biBcCi0JCSR7Q1B9IC1wICR7RVRDRElSfS8ke0ZJTEV9LmV4YW1wbGUgICAgICAgXAotCQkJ
 JHtFVENESVJ9LyR7RklMRX07ICAgICAgICAgICAgICAgXAorCUBpZiAke1RFU1R9IC1mICR7
 RVRDRElSfS8ke0ZJTEV9ICYmIFwKKwkJJHtURVNUfSAhIC1mICR7RVRDRElSfS9leGFtcGxl
 cy8ke0ZJTEV9LmV4YW1wbGUgOyB0aGVuIFwKKwkJCSR7Q1B9IC1wICR7RVRDRElSfS9leGFt
 cGxlcy8ke0ZJTEV9LmV4YW1wbGUgXAorCQkJJHtFVENESVJ9LyR7RklMRX07IFwKIAlmaQog
 LmVuZGZvcgogCmRpZmYgLXJ1TiAtLWV4Y2x1ZGU9Q1ZTIC4uL2luc3BpcmNkLm9yaWcvZGlz
 dGluZm8gLi9kaXN0aW5mbwotLS0gLi4vaW5zcGlyY2Qub3JpZy9kaXN0aW5mbwkyMDEyLTA1
 LTE1IDIxOjQ1OjE3LjAwMDAwMDAwMCAtMDUwMAorKysgLi9kaXN0aW5mbwkyMDEyLTA4LTE0
 IDE3OjA0OjI3LjAwMDAwMDAwMCAtMDUwMApAQCAtMSwyICsxLDIgQEAKLVNIQTI1NiAoSW5z
 cElSQ2QtMi4wLjUudGFyLmJ6MikgPSA0MjViZjc5YWUxMzQ4YjM5OGNlNmQyMzQ4ZjZjYzhi
 YWVlYmU4MTI1ZjYyMzM3ZTk4YzEzNjk0MjIyM2Y0ZmM2Ci1TSVpFIChJbnNwSVJDZC0yLjAu
 NS50YXIuYnoyKSA9IDU3NTg1MgorU0hBMjU2IChJbnNwSVJDZC0yLjAuOC50YXIuYnoyKSA9
 IDVmZDU3ZGYxYTJhMTBmNDgwYWVmYzYxMjcyZjIyZmRkOGFkZGI1YWIzYTU0NDU4MjIzNTM3
 N2I4ZmE4YjkyOTYKK1NJWkUgKEluc3BJUkNkLTIuMC44LnRhci5iejIpID0gNTkxNzYxCmRp
 ZmYgLXJ1TiAtLWV4Y2x1ZGU9Q1ZTIC4uL2luc3BpcmNkLm9yaWcvZmlsZXMvcGF0Y2gtbWFr
 ZV90ZW1wbGF0ZV9tYWluLm1rIC4vZmlsZXMvcGF0Y2gtbWFrZV90ZW1wbGF0ZV9tYWluLm1r
 Ci0tLSAuLi9pbnNwaXJjZC5vcmlnL2ZpbGVzL3BhdGNoLW1ha2VfdGVtcGxhdGVfbWFpbi5t
 awkxOTY5LTEyLTMxIDE4OjAwOjAwLjAwMDAwMDAwMCAtMDYwMAorKysgLi9maWxlcy9wYXRj
 aC1tYWtlX3RlbXBsYXRlX21haW4ubWsJMjAxMi0wOC0xNCAyMzo1ODoxNS4wMDAwMDAwMDAg
 LTA1MDAKQEAgLTAsMCArMSwyMiBAQAorLS0tIG1ha2UvdGVtcGxhdGUvbWFpbi5tay5vcmln
 CTIwMTItMDctMTMgMTA6Mzg6MDEuMDAwMDAwMDAwIC0wNTAwCisrKysgbWFrZS90ZW1wbGF0
 ZS9tYWluLm1rCTIwMTItMDgtMTQgMjM6NTg6MDYuODE2MzE1Mjc5IC0wNTAwCitAQCAtNTgs
 NiArNTgsMTAgQEAKKyBASUZFUSAkKFNZU1RFTSkgbGludXgKKyAgIExETElCUyArPSAtbGRs
 IC1scnQKKyBARU5ESUYKKytASUZFUSAkKFNZU1RFTSkgZnJlZWJzZAorKyAgQ1hYRkxBR1Mg
 Kz0gLUkvdXNyL2xvY2FsL2luY2x1ZGUKKysgIExERkxBR1MgKz0gLUwvdXNyL2xvY2FsL2xp
 YgorK0BFTkRJRgorIEBJRkVRICQoU1lTVEVNKSBnbnVrZnJlZWJzZAorICAgTERMSUJTICs9
 IC1sZGwgLWxydAorIEBFTkRJRgorQEAgLTEyNCw3ICsxMjgsNyBAQAorICAgQ1hYRkxBR1Mg
 Kz0gLURQVVJFX1NUQVRJQworIEBFTkRJRgorIAorLUBET19FWFBPUlQgUlVOQ0MgUlVOTEQg
 Q1hYRkxBR1MgTERMSUJTIFBJQ0xERkxBR1MgVkVSQk9TRSBTT0NLRVRFTkdJTkUgQ09SRUxE
 RkxBR1MKKytARE9fRVhQT1JUIFJVTkNDIFJVTkxEIENYWEZMQUdTIExETElCUyBQSUNMREZM
 QUdTIFZFUkJPU0UgU09DS0VURU5HSU5FIENPUkVMREZMQUdTIExERkxBR1MKKyBARE9fRVhQ
 T1JUIFNPVVJDRVBBVEggQlVJTERQQVRIIFBVUkVfU1RBVElDIFNQTElUX0NDCisgCisgIyBE
 ZWZhdWx0IHRhcmdldApkaWZmIC1ydU4gLS1leGNsdWRlPUNWUyAuLi9pbnNwaXJjZC5vcmln
 L2ZpbGVzL3BhdGNoLXNyY19kbnMuY3BwIC4vZmlsZXMvcGF0Y2gtc3JjX2Rucy5jcHAKLS0t
 IC4uL2luc3BpcmNkLm9yaWcvZmlsZXMvcGF0Y2gtc3JjX2Rucy5jcHAJMjAxMi0wNS0xNiAw
 ODoyOTo1OS4wMDAwMDAwMDAgLTA1MDAKKysrIC4vZmlsZXMvcGF0Y2gtc3JjX2Rucy5jcHAJ
 MTk2OS0xMi0zMSAxODowMDowMC4wMDAwMDAwMDAgLTA2MDAKQEAgLTEsMTM1ICswLDAgQEAK
 LS0tLSBzcmMvZG5zLmNwcC5vcmlnCTIwMTItMDUtMTUgMjE6NDU6MzEuODQwMjc0NjM2IC0w
 NTAwCi0rKysgc3JjL2Rucy5jcHAJMjAxMi0wNS0xNSAyMTo0NTo1OC42NTMyNzg2ODYgLTA1
 MDAKLUBAIC0zOCw2ICs0OSw4IEBACi0gI2luY2x1ZGUgImNvbmZpZ3JlYWRlci5oIgotICNp
 bmNsdWRlICJzb2NrZXQuaCIKLSAKLSsjZGVmaW5lIEROX0NPTVBfQklUTUFTSwkweEMwMDAJ
 CS8qIGhpZ2hlc3QgNiBiaXRzIGluIGEgRE4gbGFiZWwgaGVhZGVyICovCi0rCi0gLyoqIE1h
 c2tzIHRvIG1hc2sgb2ZmIHRoZSByZXNwb25zZXMgd2UgZ2V0IGZyb20gdGhlIEROU1JlcXVl
 c3QgbWV0aG9kcwotICAqLwotIGVudW0gUXVlcnlJbmZvCi1AQCAtOTgsNyArMTExLDcgQEAK
 LSAKLSAJRE5TUmVxdWVzdChETlMqIGRucywgaW50IGlkLCBjb25zdCBzdGQ6OnN0cmluZyAm
 b3JpZ2luYWwpOwotIAl+RE5TUmVxdWVzdCgpOwotLQlETlNJbmZvIFJlc3VsdElzUmVhZHko
 RE5TSGVhZGVyICZoLCBpbnQgbGVuZ3RoKTsKLSsJRE5TSW5mbyBSZXN1bHRJc1JlYWR5KERO
 U0hlYWRlciAmaCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAJaW50IFNlbmRSZXF1ZXN0cyhjb25z
 dCBETlNIZWFkZXIgKmhlYWRlciwgY29uc3QgaW50IGxlbmd0aCwgUXVlcnlUeXBlIHF0KTsK
 LSB9OwotIAotQEAgLTE2MSw3ICsxNzQsMTAgQEAKLSAvKiBBbGxvY2F0ZSB0aGUgcHJvY2Vz
 c2luZyBidWZmZXIgKi8KLSBETlNSZXF1ZXN0OjpETlNSZXF1ZXN0KEROUyogZG5zLCBpbnQg
 cmlkLCBjb25zdCBzdGQ6OnN0cmluZyAmb3JpZ2luYWwpIDogZG5zb2JqKGRucykKLSB7Ci0t
 CXJlcyA9IG5ldyB1bnNpZ25lZCBjaGFyWzUxMl07Ci0rCS8qIGhhcmRlbmluZyBhZ2FpbnN0
 IG92ZXJmbG93IGhlcmU6ICBtYWtlIG91ciB3b3JrIGJ1ZmZlciB0d2ljZSB0aGUgdGhlb3Jl
 dGljYWwKLSsJICogbWF4aW11bSBzaXplIHNvIHRoYXQgaG9zdGlsZSBpbnB1dCBkb2Vzbid0
 IHNjcmV3IHVzIG92ZXIuCi0rCSAqLwotKwlyZXMgPSBuZXcgdW5zaWduZWQgY2hhcltzaXpl
 b2YoRE5TSGVhZGVyKSAqIDJdOwotIAkqcmVzID0gMDsKLSAJb3JpZyA9IG9yaWdpbmFsOwot
 IAlSZXF1ZXN0VGltZW91dCogUlQgPSBuZXcgUmVxdWVzdFRpbWVvdXQoU2VydmVySW5zdGFu
 Y2UtPkNvbmZpZy0+ZG5zX3RpbWVvdXQgPyBTZXJ2ZXJJbnN0YW5jZS0+Q29uZmlnLT5kbnNf
 dGltZW91dCA6IDUsIHRoaXMsIHJpZCk7Ci1AQCAtNjg4LDExICs3MDQsMTEgQEAKLSB9Ci0g
 Ci0gLyoqIEEgcmVzdWx0IGlzIHJlYWR5LCBwcm9jZXNzIGl0ICovCi0tRE5TSW5mbyBETlNS
 ZXF1ZXN0OjpSZXN1bHRJc1JlYWR5KEROU0hlYWRlciAmaGVhZGVyLCBpbnQgbGVuZ3RoKQot
 K0ROU0luZm8gRE5TUmVxdWVzdDo6UmVzdWx0SXNSZWFkeShETlNIZWFkZXIgJmhlYWRlciwg
 dW5zaWduZWQgbGVuZ3RoKQotIHsKLS0JaW50IGkgPSAwOwotKwl1bnNpZ25lZCBpID0gMCwg
 bzsKLSAJaW50IHEgPSAwOwotLQlpbnQgY3VyYW5zd2VyLCBvOwotKwlpbnQgY3VyYW5zd2Vy
 OwotIAlSZXNvdXJjZVJlY29yZCBycjsKLSAgCXVuc2lnbmVkIHNob3J0IHB0cjsKLSAKLUBA
 IC03NTUsNyArNzcxLDcgQEAKLSAJCQkJZWxzZSBpICs9IGhlYWRlci5wYXlsb2FkW2ldICsg
 MTsgLyogc2tpcCBsZW5ndGggYW5kIGxhYmVsICovCi0gCQkJfQotIAkJfQotLQkJaWYgKGxl
 bmd0aCAtIGkgPCAxMCkKLSsJCWlmIChzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aCAtIGkpIDwg
 MTApCi0gCQkJcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKCh1bnNpZ25lZCBjaGFyKilOVUxMLCJJ
 bmNvcnJlY3RseSBzaXplZCBETlMgcmVwbHkiKTsKLSAKLSAJCS8qIFhYWDogV2UgYWN0dWFs
 bHkgaW5pdGlhbGlzZSAncnInIGhlcmUgaW5jbHVkaW5nIGl0cyB0dGwgZmllbGQgKi8KLUBA
 IC03OTAsMTcgKzgwNiwzNyBAQAotIAotIAlzd2l0Y2ggKHJyLnR5cGUpCi0gCXsKLSsJCS8q
 Ci0rCQkgKiBDTkFNRSBhbmQgUFRSIGFyZSBjb21wcmVzc2VkLiAgV2UgbmVlZCB0byBkZWNv
 bXByZXNzIHRoZW0uCi0rCQkgKi8KLSAJCWNhc2UgRE5TX1FVRVJZX0NOQU1FOgotLQkJCS8q
 IENOQU1FIGFuZCBQVFIgaGF2ZSB0aGUgc2FtZSBwcm9jZXNzaW5nIGNvZGUgKi8KLSAJCWNh
 c2UgRE5TX1FVRVJZX1BUUjoKLSsJCXsKLSsJCQl1bnNpZ25lZCBzaG9ydCBsb3dlc3RfcG9z
 ID0gbGVuZ3RoOwotIAkJCW8gPSAwOwotIAkJCXEgPSAwOwotIAkJCXdoaWxlIChxID09IDAg
 JiYgaSA8IGxlbmd0aCAmJiBvICsgMjU2IDwgMTAyMykKLSAJCQl7Ci0rCQkJCS8qIEROIGxh
 YmVsIGZvdW5kIChieXRlIG92ZXIgNjMpICovCi0gCQkJCWlmIChoZWFkZXIucGF5bG9hZFtp
 XSA+IDYzKQotIAkJCQl7Ci0gCQkJCQltZW1jcHkoJnB0ciwmaGVhZGVyLnBheWxvYWRbaV0s
 Mik7Ci0tCQkJCQlpID0gbnRvaHMocHRyKSAtIDB4QzAwMCAtIDEyOwotKwotKwkJCQkJaSA9
 IG50b2hzKHB0cik7Ci0rCi0rCQkJCQkvKiBjaGVjayB0aGF0IGhpZ2hlc3QgdHdvIGJpdHMg
 YXJlIHNldC4gaWYgbm90LCB3ZSd2ZSBiZWVuIGhhZCAqLwotKwkJCQkJaWYgKChpICYgRE5f
 Q09NUF9CSVRNQVNLKSAhPSBETl9DT01QX0JJVE1BU0spCi0rCQkJCQkJcmV0dXJuIHN0ZDo6
 bWFrZV9wYWlyKCh1bnNpZ25lZCBjaGFyICopIE5VTEwsICJETiBsYWJlbCBkZWNvbXByZXNz
 aW9uIGhlYWRlciBpcyBib2d1cyIpOwotKwotKwkJCQkJLyogbWFzayBhd2F5IHRoZSB0d28g
 aGlnaGVzdCBiaXRzLiAqLwotKwkJCQkJaSAmPSB+RE5fQ09NUF9CSVRNQVNLOwotKwotKwkJ
 CQkJLyogYW5kIGRlY3JlYXNlIGxlbmd0aCBieSAxMiBieXRlcy4gKi8KLSsJCQkJCWkgLT0g
 MTI7Ci0rCi0rCQkJCQlpZiAoaSA+PSBsb3dlc3RfcG9zKQotKwkJCQkJCXJldHVybiBzdGQ6
 Om1ha2VfcGFpcigodW5zaWduZWQgY2hhciAqKSBOVUxMLCAiSW52YWxpZCBkZWNvbXByZXNz
 aW9uIHBvaW50ZXIiKTsKLSsJCQkJCWxvd2VzdF9wb3MgPSBpOwotIAkJCQl9Ci0gCQkJCWVs
 c2UKLSAJCQkJewotQEAgLTgxMywyNSArODQ5LDM1IEBACi0gCQkJCQkJcmVzW29dID0gMDsK
 LSAJCQkJCQlpZiAobyAhPSAwKQotIAkJCQkJCQlyZXNbbysrXSA9ICcuJzsKLS0JCQkJCQlt
 ZW1jcHkoJnJlc1tvXSwmaGVhZGVyLnBheWxvYWRbaSArIDFdLGhlYWRlci5wYXlsb2FkW2ld
 KTsKLSsKLSsJCQkJCQlpZiAobyArIGhlYWRlci5wYXlsb2FkW2ldID4gc2l6ZW9mKEROU0hl
 YWRlcikpCi0rCQkJCQkJCXJldHVybiBzdGQ6Om1ha2VfcGFpcigodW5zaWduZWQgY2hhciAq
 KSBOVUxMLCAiRE4gbGFiZWwgZGVjb21wcmVzc2lvbiBpcyBpbXBvc3NpYmxlIC0tIG1hbGZv
 cm1lZC9ob3N0aWxlIHBhY2tldD8iKTsKLSsKLSsJCQkJCQltZW1jcHkoJnJlc1tvXSwgJmhl
 YWRlci5wYXlsb2FkW2kgKyAxXSwgaGVhZGVyLnBheWxvYWRbaV0pOwotIAkJCQkJCW8gKz0g
 aGVhZGVyLnBheWxvYWRbaV07Ci0gCQkJCQkJaSArPSBoZWFkZXIucGF5bG9hZFtpXSArIDE7
 Ci0gCQkJCQl9Ci0gCQkJCX0KLSAJCQl9Ci0gCQkJcmVzW29dID0gMDsKLSsJCX0KLSAJCWJy
 ZWFrOwotIAkJY2FzZSBETlNfUVVFUllfQUFBQToKLSsJCQlpZiAocnIucmRsZW5ndGggIT0g
 c2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpCi0rCQkJCXJldHVybiBzdGQ6Om1ha2VfcGFpcigo
 dW5zaWduZWQgY2hhciAqKSBOVUxMLCAicnIucmRsZW5ndGggaXMgbGFyZ2VyIHRoYW4gMTYg
 Ynl0ZXMgZm9yIGFuIGlwdjYgZW50cnkgLS0gbWFsZm9ybWVkL2hvc3RpbGUgcGFja2V0PyIp
 OwotKwotIAkJCW1lbWNweShyZXMsJmhlYWRlci5wYXlsb2FkW2ldLHJyLnJkbGVuZ3RoKTsK
 LSAJCQlyZXNbcnIucmRsZW5ndGhdID0gMDsKLSAJCWJyZWFrOwotIAkJY2FzZSBETlNfUVVF
 UllfQToKLSsJCQlpZiAocnIucmRsZW5ndGggIT0gc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSkK
 LSsJCQkJcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKCh1bnNpZ25lZCBjaGFyICopIE5VTEwsICJy
 ci5yZGxlbmd0aCBpcyBsYXJnZXIgdGhhbiA0IGJ5dGVzIGZvciBhbiBpcHY0IGVudHJ5IC0t
 IG1hbGZvcm1lZC9ob3N0aWxlIHBhY2tldD8iKTsKLSsKLSAJCQltZW1jcHkocmVzLCZoZWFk
 ZXIucGF5bG9hZFtpXSxyci5yZGxlbmd0aCk7Ci0gCQkJcmVzW3JyLnJkbGVuZ3RoXSA9IDA7
 Ci0gCQlicmVhazsKLSAJCWRlZmF1bHQ6Ci0tCQkJbWVtY3B5KHJlcywmaGVhZGVyLnBheWxv
 YWRbaV0scnIucmRsZW5ndGgpOwotLQkJCXJlc1tyci5yZGxlbmd0aF0gPSAwOwotKwkJCXJl
 dHVybiBzdGQ6Om1ha2VfcGFpcigodW5zaWduZWQgY2hhciAqKSBOVUxMLCAiZG9uJ3Qga25v
 dyBob3cgdG8gaGFuZGxlIHVuZGVmaW5lZCB0eXBlICgiICsgQ29udlRvU3RyKHJyLnR5cGUp
 ICsgIikgLS0gcmVqZWN0aW5nIik7Ci0gCQlicmVhazsKLSAJfQotIAlyZXR1cm4gc3RkOjpt
 YWtlX3BhaXIocmVzLCJObyBlcnJvciIpOwpkaWZmIC1ydU4gLS1leGNsdWRlPUNWUyAuLi9p
 bnNwaXJjZC5vcmlnL3BrZy1wbGlzdCAuL3BrZy1wbGlzdAotLS0gLi4vaW5zcGlyY2Qub3Jp
 Zy9wa2ctcGxpc3QJMjAxMi0wNi0xNCAxNDoyODowMi4wMDAwMDAwMDAgLTA1MDAKKysrIC4v
 cGtnLXBsaXN0CTIwMTItMDgtMTUgMTE6MDk6NTkuMDAwMDAwMDAwIC0wNTAwCkBAIC0xLDQg
 KzEsMjEgQEAKIGJpbi9pbnNwaXJjZAorZXRjL2luc3BpcmNkL2V4YW1wbGVzL29wZXJzLmNv
 bmYuZXhhbXBsZQorZXRjL2luc3BpcmNkL2V4YW1wbGVzL21vZHVsZXMvbW9kdWxlcy5jb25m
 LnVucmVhbAorZXRjL2luc3BpcmNkL2V4YW1wbGVzL21vZHVsZXMvbW9kdWxlcy5jb25mLmNo
 YXJ5YmRpcworZXRjL2luc3BpcmNkL2V4YW1wbGVzL21vZHVsZXMuY29uZi5leGFtcGxlCitl
 dGMvaW5zcGlyY2QvZXhhbXBsZXMvbGlua3MuY29uZi5leGFtcGxlCitldGMvaW5zcGlyY2Qv
 ZXhhbXBsZXMvaW5zcGlyY2QucnVsZXMuZXhhbXBsZQorZXRjL2luc3BpcmNkL2V4YW1wbGVz
 L2luc3BpcmNkLnF1b3Rlcy5leGFtcGxlCitldGMvaW5zcGlyY2QvZXhhbXBsZXMvaW5zcGly
 Y2QubW90ZC5leGFtcGxlCitldGMvaW5zcGlyY2QvZXhhbXBsZXMvaW5zcGlyY2QuaGVscG9w
 LmV4YW1wbGUKK2V0Yy9pbnNwaXJjZC9leGFtcGxlcy9pbnNwaXJjZC5oZWxwb3AtZnVsbC5l
 eGFtcGxlCitldGMvaW5zcGlyY2QvZXhhbXBsZXMvaW5zcGlyY2QuZmlsdGVyLmV4YW1wbGUK
 K2V0Yy9pbnNwaXJjZC9leGFtcGxlcy9pbnNwaXJjZC5jb25mLmV4YW1wbGUKK2V0Yy9pbnNw
 aXJjZC9leGFtcGxlcy9pbnNwaXJjZC5jZW5zb3IuZXhhbXBsZQorZXRjL2luc3BpcmNkL2V4
 YW1wbGVzL2FsaWFzZXMvbmVvc3RhdHMuY29uZi5leGFtcGxlCitldGMvaW5zcGlyY2QvZXhh
 bXBsZXMvYWxpYXNlcy9pcmNzZXJ2aWNlcy5jb25mLmV4YW1wbGUKK2V0Yy9pbnNwaXJjZC9l
 eGFtcGxlcy9hbGlhc2VzL2F0aGVtZS5jb25mLmV4YW1wbGUKK2V0Yy9pbnNwaXJjZC9leGFt
 cGxlcy9hbGlhc2VzL2Fub3BlLmNvbmYuZXhhbXBsZQogbGliL2luc3BpcmNkLy5nZGJhcmdz
 CiBsaWIvaW5zcGlyY2QvaW5zcGlyY2QKIGxpYi9pbnNwaXJjZC9tb2R1bGVzL2NtZF9hZG1p
 bi5zbwpAQCAtMTE3LDYgKzEzNCw3IEBACiBsaWIvaW5zcGlyY2QvbW9kdWxlcy9tX2h0dHBk
 X3N0YXRzLnNvCiBsaWIvaW5zcGlyY2QvbW9kdWxlcy9tX2lkZW50LnNvCiBsaWIvaW5zcGly
 Y2QvbW9kdWxlcy9tX2ludml0ZWV4Y2VwdGlvbi5zbworbGliL2luc3BpcmNkL21vZHVsZXMv
 bV9pcmN2My5zbwogbGliL2luc3BpcmNkL21vZHVsZXMvbV9qb2luZmxvb2Quc28KIGxpYi9p
 bnNwaXJjZC9tb2R1bGVzL21fanVtcHNlcnZlci5zbwogbGliL2luc3BpcmNkL21vZHVsZXMv
 bV9raWNrbm9yZWpvaW4uc28KQEAgLTEyNSw2ICsxNDMsNyBAQAogbGliL2luc3BpcmNkL21v
 ZHVsZXMvbV9tYXBoaWRlLnNvCiBsaWIvaW5zcGlyY2QvbW9kdWxlcy9tX21kNS5zbwogbGli
 L2luc3BpcmNkL21vZHVsZXMvbV9tZXNzYWdlZmxvb2Quc28KK2xpYi9pbnNwaXJjZC9tb2R1
 bGVzL21fbWxvY2suc28KIGxpYi9pbnNwaXJjZC9tb2R1bGVzL21fbXV0ZWJhbi5zbwogbGli
 L2luc3BpcmNkL21vZHVsZXMvbV9uYW1lZG1vZGVzLnNvCiBsaWIvaW5zcGlyY2QvbW9kdWxl
 cy9tX25hbWVzeC5zbwpAQCAtMTgyLDEyICsyMDEsMTUgQEAKIGxpYi9pbnNwaXJjZC9tb2R1
 bGVzL21fc3Bhbm5pbmd0cmVlLnNvCiBsaWIvaW5zcGlyY2QvbW9kdWxlcy9tX3NxbGF1dGgu
 c28KIGxpYi9pbnNwaXJjZC9tb2R1bGVzL21fc3Fsb3Blci5zbwotJSVMREFQJSVsaWIvaW5z
 cGlyY2QvbW9kdWxlcy9tX2xkYXBhdXRoLnNvCislJUxEQVBBVVRIJSVsaWIvaW5zcGlyY2Qv
 bW9kdWxlcy9tX2xkYXBhdXRoLnNvCislJUxEQVBPUEVSJSVsaWIvaW5zcGlyY2QvbW9kdWxl
 cy9tX2xkYXBvcGVyLnNvCiAlJU1ZU1FMJSVsaWIvaW5zcGlyY2QvbW9kdWxlcy9tX215c3Fs
 LnNvCiAlJVBHU1FMJSVsaWIvaW5zcGlyY2QvbW9kdWxlcy9tX3Bnc3FsLnNvCiAlJVNRTElU
 RSUlbGliL2luc3BpcmNkL21vZHVsZXMvbV9zcWxpdGUzLnNvCiAlJUdOVVRMUyUlbGliL2lu
 c3BpcmNkL21vZHVsZXMvbV9zc2xfZ251dGxzLnNvCiAlJU9QRU5TU0wlJWxpYi9pbnNwaXJj
 ZC9tb2R1bGVzL21fc3NsX29wZW5zc2wuc28KKyUlUENSRSUlbGliL2luc3BpcmNkL21vZHVs
 ZXMvbV9yZWdleF9wY3JlLnNvCislJVBPU0lYJSVsaWIvaW5zcGlyY2QvbW9kdWxlcy9tX3Jl
 Z2V4X3Bvc2l4LnNvCiBsaWIvaW5zcGlyY2QvbW9kdWxlcy9tX3NzbGluZm8uc28KIGxpYi9p
 bnNwaXJjZC9tb2R1bGVzL21fc3NsbW9kZXMuc28KIGxpYi9pbnNwaXJjZC9tb2R1bGVzL21f
 c3RyaXBjb2xvci5zbwpAQCAtMjAyLDQyICsyMjQsNDUgQEAKIGxpYi9pbnNwaXJjZC9tb2R1
 bGVzL21fdmhvc3Quc28KIGxpYi9pbnNwaXJjZC9tb2R1bGVzL21fd2F0Y2guc28KIGxpYi9p
 bnNwaXJjZC9tb2R1bGVzL21feGxpbmVfZGIuc28KK0BkaXJybSBldGMvaW5zcGlyY2QvZXhh
 bXBsZXMvYWxpYXNlcworQGRpcnJtIGV0Yy9pbnNwaXJjZC9leGFtcGxlcy9tb2R1bGVzCitA
 ZGlycm0gZXRjL2luc3BpcmNkL2V4YW1wbGVzCiBAZGlycm0gbGliL2luc3BpcmNkL21vZHVs
 ZXMKIEBkaXJybSBsaWIvaW5zcGlyY2QvbG9ncwogQGRpcnJtIGxpYi9pbnNwaXJjZC9kYXRh
 CiBAZGlycm0gbGliL2luc3BpcmNkCi1AdW5leGVjIGlmIGNtcCAtcyAlRC8lJUVUQ0RJUiUl
 L2luc3BpcmNkLmNlbnNvci5leGFtcGxlICVELyUlRVRDRElSJSUvaW5zcGlyY2QuY2Vuc29y
 OyB0aGVuIHJtIC1mICVELyUlRVRDRElSJSUvaW5zcGlyY2QuY2Vuc29yOyBmaQotJSVFVENE
 SVIlJS9pbnNwaXJjZC5jZW5zb3IuZXhhbXBsZQorQHVuZXhlYyBpZiBjbXAgLXMgJUQvJSVF
 VENESVIlJS9leGFtcGxlcy9pbnNwaXJjZC5jZW5zb3IuZXhhbXBsZSAlRC8lJUVUQ0RJUiUl
 L2luc3BpcmNkLmNlbnNvcjsgdGhlbiBybSAtZiAlRC8lJUVUQ0RJUiUlL2luc3BpcmNkLmNl
 bnNvcjsgZmkKKyUlRVRDRElSJSUvZXhhbXBsZXMvaW5zcGlyY2QuY2Vuc29yLmV4YW1wbGUK
 IEBleGVjIGlmIFsgISAtZiAlQi9pbnNwaXJjZC5jZW5zb3IgXSA7IHRoZW4gY3AgLXAgJUQv
 JUYgJUIvaW5zcGlyY2QuY2Vuc29yOyBmaQotQHVuZXhlYyBpZiBjbXAgLXMgJUQvJSVFVENE
 SVIlJS9pbnNwaXJjZC5jb25mLmV4YW1wbGUgJUQvJSVFVENESVIlJS9pbnNwaXJjZC5jb25m
 OyB0aGVuIHJtIC1mICVELyUlRVRDRElSJSUvaW5zcGlyY2QuY29uZjsgZmkKLSUlRVRDRElS
 JSUvaW5zcGlyY2QuY29uZi5leGFtcGxlCitAdW5leGVjIGlmIGNtcCAtcyAlRC8lJUVUQ0RJ
 UiUlL2V4YW1wbGVzL2luc3BpcmNkLmNvbmYuZXhhbXBsZSAlRC8lJUVUQ0RJUiUlL2luc3Bp
 cmNkLmNvbmY7IHRoZW4gcm0gLWYgJUQvJSVFVENESVIlJS9pbnNwaXJjZC5jb25mOyBmaQor
 JSVFVENESVIlJS9leGFtcGxlcy9pbnNwaXJjZC5jb25mLmV4YW1wbGUKIEBleGVjIGlmIFsg
 ISAtZiAlQi9pbnNwaXJjZC5jb25mIF0gOyB0aGVuIGNwIC1wICVELyVGICVCL2luc3BpcmNk
 LmNvbmY7IGZpCi1AdW5leGVjIGlmIGNtcCAtcyAlRC8lJUVUQ0RJUiUlL2luc3BpcmNkLmZp
 bHRlci5leGFtcGxlICVELyUlRVRDRElSJSUvaW5zcGlyY2QuZmlsdGVyOyB0aGVuIHJtIC1m
 ICVELyUlRVRDRElSJSUvaW5zcGlyY2QuZmlsdGVyOyBmaQotJSVFVENESVIlJS9pbnNwaXJj
 ZC5maWx0ZXIuZXhhbXBsZQorQHVuZXhlYyBpZiBjbXAgLXMgJUQvJSVFVENESVIlJS9leGFt
 cGxlcy9pbnNwaXJjZC5maWx0ZXIuZXhhbXBsZSAlRC8lJUVUQ0RJUiUlL2luc3BpcmNkLmZp
 bHRlcjsgdGhlbiBybSAtZiAlRC8lJUVUQ0RJUiUlL2luc3BpcmNkLmZpbHRlcjsgZmkKKyUl
 RVRDRElSJSUvZXhhbXBsZXMvaW5zcGlyY2QuZmlsdGVyLmV4YW1wbGUKIEBleGVjIGlmIFsg
 ISAtZiAlQi9pbnNwaXJjZC5maWx0ZXIgXSA7IHRoZW4gY3AgLXAgJUQvJUYgJUIvaW5zcGly
 Y2QuZmlsdGVyOyBmaQotQHVuZXhlYyBpZiBjbXAgLXMgJUQvJSVFVENESVIlJS9pbnNwaXJj
 ZC5oZWxwb3AuZXhhbXBsZSAlRC8lJUVUQ0RJUiUlL2luc3BpcmNkLmhlbHBvcDsgdGhlbiBy
 bSAtZiAlRC8lJUVUQ0RJUiUlL2luc3BpcmNkLmhlbHBvcDsgZmkKLSUlRVRDRElSJSUvaW5z
 cGlyY2QuaGVscG9wLmV4YW1wbGUKK0B1bmV4ZWMgaWYgY21wIC1zICVELyUlRVRDRElSJSUv
 ZXhhbXBsZXMvaW5zcGlyY2QuaGVscG9wLmV4YW1wbGUgJUQvJSVFVENESVIlJS9pbnNwaXJj
 ZC5oZWxwb3A7IHRoZW4gcm0gLWYgJUQvJSVFVENESVIlJS9pbnNwaXJjZC5oZWxwb3A7IGZp
 CislJUVUQ0RJUiUlL2V4YW1wbGVzL2luc3BpcmNkLmhlbHBvcC5leGFtcGxlCiBAZXhlYyBp
 ZiBbICEgLWYgJUIvaW5zcGlyY2QuaGVscG9wIF0gOyB0aGVuIGNwIC1wICVELyVGICVCL2lu
 c3BpcmNkLmhlbHBvcDsgZmkKLUB1bmV4ZWMgaWYgY21wIC1zICVELyUlRVRDRElSJSUvaW5z
 cGlyY2QuaGVscG9wLWZ1bGwuZXhhbXBsZSAlRC8lJUVUQ0RJUiUlL2luc3BpcmNkLmhlbHBv
 cC1mdWxsOyB0aGVuIHJtIC1mICVELyUlRVRDRElSJSUvaW5zcGlyY2QuaGVscG9wLWZ1bGw7
 IGZpCi0lJUVUQ0RJUiUlL2luc3BpcmNkLmhlbHBvcC1mdWxsLmV4YW1wbGUKK0B1bmV4ZWMg
 aWYgY21wIC1zICVELyUlRVRDRElSJSUvZXhhbXBsZXMvaW5zcGlyY2QuaGVscG9wLWZ1bGwu
 ZXhhbXBsZSAlRC8lJUVUQ0RJUiUlL2luc3BpcmNkLmhlbHBvcC1mdWxsOyB0aGVuIHJtIC1m
 ICVELyUlRVRDRElSJSUvaW5zcGlyY2QuaGVscG9wLWZ1bGw7IGZpCislJUVUQ0RJUiUlL2V4
 YW1wbGVzL2luc3BpcmNkLmhlbHBvcC1mdWxsLmV4YW1wbGUKIEBleGVjIGlmIFsgISAtZiAl
 Qi9pbnNwaXJjZC5oZWxwb3AtZnVsbCBdIDsgdGhlbiBjcCAtcCAlRC8lRiAlQi9pbnNwaXJj
 ZC5oZWxwb3AtZnVsbDsgZmkKLUB1bmV4ZWMgaWYgY21wIC1zICVELyUlRVRDRElSJSUvaW5z
 cGlyY2QubW90ZC5leGFtcGxlICVELyUlRVRDRElSJSUvaW5zcGlyY2QubW90ZDsgdGhlbiBy
 bSAtZiAlRC8lJUVUQ0RJUiUlL2luc3BpcmNkLm1vdGQ7IGZpCi0lJUVUQ0RJUiUlL2luc3Bp
 cmNkLm1vdGQuZXhhbXBsZQorQHVuZXhlYyBpZiBjbXAgLXMgJUQvJSVFVENESVIlJS9leGFt
 cGxlcy9pbnNwaXJjZC5tb3RkLmV4YW1wbGUgJUQvJSVFVENESVIlJS9pbnNwaXJjZC5tb3Rk
 OyB0aGVuIHJtIC1mICVELyUlRVRDRElSJSUvaW5zcGlyY2QubW90ZDsgZmkKKyUlRVRDRElS
 JSUvZXhhbXBsZXMvaW5zcGlyY2QubW90ZC5leGFtcGxlCiBAZXhlYyBpZiBbICEgLWYgJUIv
 aW5zcGlyY2QubW90ZCBdIDsgdGhlbiBjcCAtcCAlRC8lRiAlQi9pbnNwaXJjZC5tb3RkOyBm
 aQotQHVuZXhlYyBpZiBjbXAgLXMgJUQvJSVFVENESVIlJS9pbnNwaXJjZC5xdW90ZXMuZXhh
 bXBsZSAlRC8lJUVUQ0RJUiUlL2luc3BpcmNkLnF1b3RlczsgdGhlbiBybSAtZiAlRC8lJUVU
 Q0RJUiUlL2luc3BpcmNkLnF1b3RlczsgZmkKLSUlRVRDRElSJSUvaW5zcGlyY2QucXVvdGVz
 LmV4YW1wbGUKK0B1bmV4ZWMgaWYgY21wIC1zICVELyUlRVRDRElSJSUvZXhhbXBsZXMvaW5z
 cGlyY2QucXVvdGVzLmV4YW1wbGUgJUQvJSVFVENESVIlJS9pbnNwaXJjZC5xdW90ZXM7IHRo
 ZW4gcm0gLWYgJUQvJSVFVENESVIlJS9pbnNwaXJjZC5xdW90ZXM7IGZpCislJUVUQ0RJUiUl
 L2V4YW1wbGVzL2luc3BpcmNkLnF1b3Rlcy5leGFtcGxlCiBAZXhlYyBpZiBbICEgLWYgJUIv
 aW5zcGlyY2QucXVvdGVzIF0gOyB0aGVuIGNwIC1wICVELyVGICVCL2luc3BpcmNkLnF1b3Rl
 czsgZmkKLUB1bmV4ZWMgaWYgY21wIC1zICVELyUlRVRDRElSJSUvaW5zcGlyY2QucnVsZXMu
 ZXhhbXBsZSAlRC8lJUVUQ0RJUiUlL2luc3BpcmNkLnJ1bGVzOyB0aGVuIHJtIC1mICVELyUl
 RVRDRElSJSUvaW5zcGlyY2QucnVsZXM7IGZpCi0lJUVUQ0RJUiUlL2luc3BpcmNkLnJ1bGVz
 LmV4YW1wbGUKK0B1bmV4ZWMgaWYgY21wIC1zICVELyUlRVRDRElSJSUvZXhhbXBsZXMvaW5z
 cGlyY2QucnVsZXMuZXhhbXBsZSAlRC8lJUVUQ0RJUiUlL2luc3BpcmNkLnJ1bGVzOyB0aGVu
 IHJtIC1mICVELyUlRVRDRElSJSUvaW5zcGlyY2QucnVsZXM7IGZpCislJUVUQ0RJUiUlL2V4
 YW1wbGVzL2luc3BpcmNkLnJ1bGVzLmV4YW1wbGUKIEBleGVjIGlmIFsgISAtZiAlQi9pbnNw
 aXJjZC5ydWxlcyBdIDsgdGhlbiBjcCAtcCAlRC8lRiAlQi9pbnNwaXJjZC5ydWxlczsgZmkK
 LUB1bmV4ZWMgaWYgY21wIC1zICVELyUlRVRDRElSJSUvbGlua3MuY29uZi5leGFtcGxlICVE
 LyUlRVRDRElSJSUvbGlua3MuY29uZjsgdGhlbiBybSAtZiAlRC8lJUVUQ0RJUiUlL2xpbmtz
 LmNvbmY7IGZpCi0lJUVUQ0RJUiUlL2xpbmtzLmNvbmYuZXhhbXBsZQotQGV4ZWMgaWYgWyAh
 IC1mICVCL2xpbmtzLmNvbmYuZXhhbXBsZSBdIDsgdGhlbiBjcCAtcCAlRC8lRiAlQi9saW5r
 cy5jb25mLmV4YW1wbGU7IGZpCi1AdW5leGVjIGlmIGNtcCAtcyAlRC8lJUVUQ0RJUiUlL21v
 ZHVsZXMuY29uZi5leGFtcGxlICVELyUlRVRDRElSJSUvbW9kdWxlcy5jb25mOyB0aGVuIHJt
 IC1mICVELyUlRVRDRElSJSUvbW9kdWxlcy5jb25mOyBmaQotJSVFVENESVIlJS9tb2R1bGVz
 LmNvbmYuZXhhbXBsZQotQGV4ZWMgaWYgWyAhIC1mICVCL21vZHVsZXMuY29uZi5leGFtcGxl
 IF0gOyB0aGVuIGNwIC1wICVELyVGICVCL21vZHVsZXMuY29uZi5leGFtcGxlOyBmaQotQHVu
 ZXhlYyBpZiBjbXAgLXMgJUQvJSVFVENESVIlJS9vcGVycy5jb25mLmV4YW1wbGUgJUQvJSVF
 VENESVIlJS9vcGVycy5jb25mOyB0aGVuIHJtIC1mICVELyUlRVRDRElSJSUvb3BlcnMuY29u
 ZjsgZmkKLSUlRVRDRElSJSUvb3BlcnMuY29uZi5leGFtcGxlCi1AZXhlYyBpZiBbICEgLWYg
 JUIvb3BlcnMuY29uZi5leGFtcGxlIF0gOyB0aGVuIGNwIC1wICVELyVGICVCL29wZXJzLmNv
 bmYuZXhhbXBsZTsgZmkKLUB1bmV4ZWMgZWNobyAiSWYgcGVybWFuZW50bHkgcmVtb3Zpbmcg
 c29mdHdhcmUsIHlvdSBtYXkgd2lzaCB0byByZW1vdmUgdGhlIGNvbmZpZ3VyYXRpb24gZGly
 ZWN0b3J5IGJ5IHJ1bm5pbmcgXCJybSAtcmYgJSVMT0NBTEJBU0UlJS8lJUVUQ0RJUiUlXCIi
 CitAdW5leGVjIGlmIGNtcCAtcyAlRC8lJUVUQ0RJUiUlL2V4YW1wbGVzL2xpbmtzLmNvbmYu
 ZXhhbXBsZSAlRC8lJUVUQ0RJUiUlL2xpbmtzLmNvbmY7IHRoZW4gcm0gLWYgJUQvJSVFVENE
 SVIlJS9saW5rcy5jb25mOyBmaQorJSVFVENESVIlJS9leGFtcGxlcy9saW5rcy5jb25mLmV4
 YW1wbGUKK0BleGVjIGlmIFsgISAtZiAlQi9saW5rcy5jb25mIF0gOyB0aGVuIGNwIC1wICVE
 LyVGICVCL2xpbmtzLmNvbmY7IGZpCitAdW5leGVjIGlmIGNtcCAtcyAlRC8lJUVUQ0RJUiUl
 L2V4YW1wbGVzL21vZHVsZXMuY29uZi5leGFtcGxlICVELyUlRVRDRElSJSUvbW9kdWxlcy5j
 b25mOyB0aGVuIHJtIC1mICVELyUlRVRDRElSJSUvbW9kdWxlcy5jb25mOyBmaQorJSVFVENE
 SVIlJS9leGFtcGxlcy9tb2R1bGVzLmNvbmYuZXhhbXBsZQorQGV4ZWMgaWYgWyAhIC1mICVC
 L21vZHVsZXMuY29uZiBdIDsgdGhlbiBjcCAtcCAlRC8lRiAlQi9tb2R1bGVzLmNvbmY7IGZp
 CitAdW5leGVjIGlmIGNtcCAtcyAlRC8lJUVUQ0RJUiUlL2V4YW1wbGVzL29wZXJzLmNvbmYu
 ZXhhbXBsZSAlRC8lJUVUQ0RJUiUlL29wZXJzLmNvbmY7IHRoZW4gcm0gLWYgJUQvJSVFVENE
 SVIlJS9vcGVycy5jb25mOyBmaQorJSVFVENESVIlJS9leGFtcGxlcy9vcGVycy5jb25mLmV4
 YW1wbGUKK0BleGVjIGlmIFsgISAtZiAlQi9vcGVycy5jb25mIF0gOyB0aGVuIGNwIC1wICVE
 LyVGICVCL29wZXJzLmNvbmY7IGZpCiBAZGlycm10cnkgJSVFVENESVIlJQorQHVuZXhlYyBl
 Y2hvICJJZiBwZXJtYW5lbnRseSByZW1vdmluZyBzb2Z0d2FyZSwgeW91IG1heSB3aXNoIHRv
 IHJlbW92ZSB0aGUgY29uZmlndXJhdGlvbiBkaXJlY3RvcnkgYnkgcnVubmluZyBcInJtIC1y
 ZiAlJUxPQ0FMQkFTRSUlLyUlRVRDRElSJSVcIiIKLS0tIGluc3BpcmNkLTIuMC44LnBhdGNo
 IGVuZHMgaGVyZSAtLS0KCg==
 
 ------------quJnls4csXx7GE6yhWre15--
State-Changed-From-To: open->closed 
State-Changed-By: swills 
State-Changed-When: Fri Aug 17 16:59:16 UTC 2012 
State-Changed-Why:  
Committed. Thanks! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=170644 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: ports/170644: commit references a PR
Date: Fri, 17 Aug 2012 16:59:08 +0000 (UTC)

 Author: swills
 Date: Fri Aug 17 16:58:53 2012
 New Revision: 302688
 URL: http://svn.freebsd.org/changeset/ports/302688
 
 Log:
   - Update to 2.0.8
   - Made the knobs actually work
   - Added regex modules as new knobs
   - Added ldapoper module knob
   
   PR:		ports/170644
   Submitted by:	Mark Felder <feld@feld.me> (maintainer)
 
 Added:
   head/irc/inspircd/files/patch-make_template_main.mk   (contents, props changed)
 Deleted:
   head/irc/inspircd/files/patch-src_dns.cpp
 Modified:
   head/irc/inspircd/Makefile   (contents, props changed)
   head/irc/inspircd/distinfo   (contents, props changed)
   head/irc/inspircd/pkg-plist   (contents, props changed)
 
 Modified: head/irc/inspircd/Makefile
 ==============================================================================
 --- head/irc/inspircd/Makefile	Fri Aug 17 16:12:49 2012	(r302687)
 +++ head/irc/inspircd/Makefile	Fri Aug 17 16:58:53 2012	(r302688)
 @@ -6,8 +6,7 @@
  #
  
  PORTNAME=	inspircd
 -PORTVERSION=	2.0.5
 -PORTREVISION=	2
 +PORTVERSION=	2.0.8
  CATEGORIES=	irc
  MASTER_SITES=	http://cloud.github.com/downloads/inspircd/inspircd/
  DISTNAME=	InspIRCd-${PORTVERSION}
 @@ -36,34 +35,44 @@ USE_PERL5_BUILD=yes
  
  HAS_CONFIGURE=	yes
  CONFIGURE_ARGS=	--with-cc=${CXX} --config-dir=${ETCDIR} \
 -		--module-dir=${PREFIX}/lib/${PORTNAME}/modules            \
 -		--library-dir=${PREFIX}/lib/${PORTNAME}                   \
 +		--module-dir=${PREFIX}/lib/${PORTNAME}/modules \
  		--prefix=${PREFIX}/lib/${PORTNAME} --binary-dir=${PREFIX}/bin \
 -		--enable-kqueue --enable-ipv6 --disable-interactive \
 +		--enable-kqueue --disable-interactive \
  		--uid=${INSPIRCD_UID}
 -
  PORTDOCS=	docs/* extras/*
  
 -OPTIONS_DEFINE=	MYSQL PGSQL SQLITE LDAP GNUTLS OPENSSL
 +OPTIONS_DEFINE=	MYSQL PGSQL SQLITE LDAPAUTH LDAPOPER GNUTLS OPENSSL PCRE POSIX
 +OPTIONS_DEFAULT=	POSIX
  
  GNUTLS_DESC=	Build m_ssl_gnutls module
 -LDAP_DESC=	Build m_ldapauth module
 +LDAPAUTH_DESC=	Build m_ldapauth module
 +LDAPOPER_DESC=	Build m_ldapoper module
  MYSQL_DESC=	Build m_mysql module
  OPENSSL_DESC=	Build m_ssl_openssl module
  PGSQL_DESC=	Build m_pgsql module
  SQLITE_DESC=	Build m_sqlite3 module
 +PCRE_DESC=	Build m_regex_pcre module
 +POSIX_DESC=	Build m_regex_posix module
  
  .include <bsd.port.options.mk>
  
  post-extract:
  	@(cd ${WRKDIR} && ${MV} ${PORTNAME} ${DISTNAME})
  
 -.if ${PORT_OPTIONS:MLDAP}
 +.if ${PORT_OPTIONS:MLDAPAUTH}
  USE_OPENLDAP=	yes
  EXTRAS:=${EXTRAS},m_ldapauth.cpp
 -PLIST_SUB+=	LDAP=""
 +PLIST_SUB+=	LDAPAUTH=""
 +.else
 +PLIST_SUB+=	LDAPAUTH="@comment "
 +.endif
 +
 +.if ${PORT_OPTIONS:MLDAPOPER}
 +USE_OPENLDAP=	yes
 +EXTRAS:=${EXTRAS},m_ldapoper.cpp
 +PLIST_SUB+=	LDAPOPER=""
  .else
 -PLIST_SUB+=	LDAP="@comment "
 +PLIST_SUB+=	LDAPOPER="@comment "
  .endif
  
  .if ${PORT_OPTIONS:MMYSQL}
 @@ -94,6 +103,7 @@ PLIST_SUB+=	SQLITE="@comment "
  LIB_DEPENDS+=	gnutls.47:${PORTSDIR}/security/gnutls \
  		gcrypt.18:${PORTSDIR}/security/libgcrypt
  CONFIGURE_ARGS+=	--enable-gnutls
 +EXTRAS:=${EXTRAS},m_ssl_gnutls.cpp
  PLIST_SUB+=	GNUTLS=""
  .else
  PLIST_SUB+=	GNUTLS="@comment "
 @@ -102,22 +112,41 @@ PLIST_SUB+=	GNUTLS="@comment "
  .if ${PORT_OPTIONS:MOPENSSL}
  USE_OPENSSL=yes
  CONFIGURE_ARGS+=	--enable-openssl
 +EXTRAS:=${EXTRAS},m_ssl_openssl.cpp
  PLIST_SUB+=	OPENSSL=""
  .else
  PLIST_SUB+=	OPENSSL="@comment "
  .endif
  
 -CONFIGURE_ARGS+=	--enable-extras=${EXTRAS}
 +.if ${PORT_OPTIONS:MPCRE}
 +LIB_DEPENDS+=	pcre:${PORTSDIR}/devel/pcre
 +EXTRAS:=${EXTRAS},m_regex_pcre.cpp
 +PLIST_SUB+=	PCRE=""
 +.else
 +PLIST_SUB+=	PCRE="@comment "
 +.endif
 +
 +.if ${PORT_OPTIONS:MPOSIX}
 +EXTRAS:=${EXTRAS},m_regex_posix.cpp
 +PLIST_SUB+=	POSIX=""
 +.else
 +PLIST_SUB+=	POSIX="@comment "
 +.endif
 +
 +pre-configure:
 +	@if [ ${EXTRAS} ]; then \
 +		cd ${WRKSRC} && ./${CONFIGURE_SCRIPT} --enable-extras=${EXTRAS} ; \
 +	fi
  
  post-install:
  	@${STRIP_CMD} ${PREFIX}/lib/${PORTNAME}/modules/*.so
  	@${STRIP_CMD} ${PREFIX}/bin/${PORTNAME}
  .for FILE in inspircd.censor inspircd.conf inspircd.filter inspircd.helpop-full \
  	inspircd.helpop inspircd.motd inspircd.quotes inspircd.rules links.conf modules.conf opers.conf
 -	@if ${TEST} -f ${ETCDIR}/${FILE} &&              \
 -	    ${TEST} ! -f ${ETCDIR}/${FILE}.example ; then \
 -		${CP} -p ${ETCDIR}/${FILE}.example       \
 -			${ETCDIR}/${FILE};               \
 +	@if ${TEST} -f ${ETCDIR}/${FILE} && \
 +		${TEST} ! -f ${ETCDIR}/examples/${FILE}.example ; then \
 +			${CP} -p ${ETCDIR}/examples/${FILE}.example \
 +			${ETCDIR}/${FILE}; \
  	fi
  .endfor
  
 
 Modified: head/irc/inspircd/distinfo
 ==============================================================================
 --- head/irc/inspircd/distinfo	Fri Aug 17 16:12:49 2012	(r302687)
 +++ head/irc/inspircd/distinfo	Fri Aug 17 16:58:53 2012	(r302688)
 @@ -1,2 +1,2 @@
 -SHA256 (InspIRCd-2.0.5.tar.bz2) = 425bf79ae1348b398ce6d2348f6cc8baeebe8125f62337e98c136942223f4fc6
 -SIZE (InspIRCd-2.0.5.tar.bz2) = 575852
 +SHA256 (InspIRCd-2.0.8.tar.bz2) = 5fd57df1a2a10f480aefc61272f22fdd8addb5ab3a544582235377b8fa8b9296
 +SIZE (InspIRCd-2.0.8.tar.bz2) = 591761
 
 Added: head/irc/inspircd/files/patch-make_template_main.mk
 ==============================================================================
 --- /dev/null	00:00:00 1970	(empty, because file is newly added)
 +++ head/irc/inspircd/files/patch-make_template_main.mk	Fri Aug 17 16:58:53 2012	(r302688)
 @@ -0,0 +1,22 @@
 +--- make/template/main.mk.orig	2012-07-13 10:38:01.000000000 -0500
 ++++ make/template/main.mk	2012-08-14 23:58:06.816315279 -0500
 +@@ -58,6 +58,10 @@
 + @IFEQ $(SYSTEM) linux
 +   LDLIBS += -ldl -lrt
 + @ENDIF
 ++@IFEQ $(SYSTEM) freebsd
 ++  CXXFLAGS += -I/usr/local/include
 ++  LDFLAGS += -L/usr/local/lib
 ++@ENDIF
 + @IFEQ $(SYSTEM) gnukfreebsd
 +   LDLIBS += -ldl -lrt
 + @ENDIF
 +@@ -124,7 +128,7 @@
 +   CXXFLAGS += -DPURE_STATIC
 + @ENDIF
 + 
 +-@DO_EXPORT RUNCC RUNLD CXXFLAGS LDLIBS PICLDFLAGS VERBOSE SOCKETENGINE CORELDFLAGS
 ++@DO_EXPORT RUNCC RUNLD CXXFLAGS LDLIBS PICLDFLAGS VERBOSE SOCKETENGINE CORELDFLAGS LDFLAGS
 + @DO_EXPORT SOURCEPATH BUILDPATH PURE_STATIC SPLIT_CC
 + 
 + # Default target
 
 Modified: head/irc/inspircd/pkg-plist
 ==============================================================================
 --- head/irc/inspircd/pkg-plist	Fri Aug 17 16:12:49 2012	(r302687)
 +++ head/irc/inspircd/pkg-plist	Fri Aug 17 16:58:53 2012	(r302688)
 @@ -1,4 +1,21 @@
  bin/inspircd
 +etc/inspircd/examples/opers.conf.example
 +etc/inspircd/examples/modules/modules.conf.unreal
 +etc/inspircd/examples/modules/modules.conf.charybdis
 +etc/inspircd/examples/modules.conf.example
 +etc/inspircd/examples/links.conf.example
 +etc/inspircd/examples/inspircd.rules.example
 +etc/inspircd/examples/inspircd.quotes.example
 +etc/inspircd/examples/inspircd.motd.example
 +etc/inspircd/examples/inspircd.helpop.example
 +etc/inspircd/examples/inspircd.helpop-full.example
 +etc/inspircd/examples/inspircd.filter.example
 +etc/inspircd/examples/inspircd.conf.example
 +etc/inspircd/examples/inspircd.censor.example
 +etc/inspircd/examples/aliases/neostats.conf.example
 +etc/inspircd/examples/aliases/ircservices.conf.example
 +etc/inspircd/examples/aliases/atheme.conf.example
 +etc/inspircd/examples/aliases/anope.conf.example
  lib/inspircd/.gdbargs
  lib/inspircd/inspircd
  lib/inspircd/modules/cmd_admin.so
 @@ -117,6 +134,7 @@ lib/inspircd/modules/m_httpd_config.so
  lib/inspircd/modules/m_httpd_stats.so
  lib/inspircd/modules/m_ident.so
  lib/inspircd/modules/m_inviteexception.so
 +lib/inspircd/modules/m_ircv3.so
  lib/inspircd/modules/m_joinflood.so
  lib/inspircd/modules/m_jumpserver.so
  lib/inspircd/modules/m_kicknorejoin.so
 @@ -125,6 +143,7 @@ lib/inspircd/modules/m_lockserv.so
  lib/inspircd/modules/m_maphide.so
  lib/inspircd/modules/m_md5.so
  lib/inspircd/modules/m_messageflood.so
 +lib/inspircd/modules/m_mlock.so
  lib/inspircd/modules/m_muteban.so
  lib/inspircd/modules/m_namedmodes.so
  lib/inspircd/modules/m_namesx.so
 @@ -182,12 +201,15 @@ lib/inspircd/modules/m_silence.so
  lib/inspircd/modules/m_spanningtree.so
  lib/inspircd/modules/m_sqlauth.so
  lib/inspircd/modules/m_sqloper.so
 -%%LDAP%%lib/inspircd/modules/m_ldapauth.so
 +%%LDAPAUTH%%lib/inspircd/modules/m_ldapauth.so
 +%%LDAPOPER%%lib/inspircd/modules/m_ldapoper.so
  %%MYSQL%%lib/inspircd/modules/m_mysql.so
  %%PGSQL%%lib/inspircd/modules/m_pgsql.so
  %%SQLITE%%lib/inspircd/modules/m_sqlite3.so
  %%GNUTLS%%lib/inspircd/modules/m_ssl_gnutls.so
  %%OPENSSL%%lib/inspircd/modules/m_ssl_openssl.so
 +%%PCRE%%lib/inspircd/modules/m_regex_pcre.so
 +%%POSIX%%lib/inspircd/modules/m_regex_posix.so
  lib/inspircd/modules/m_sslinfo.so
  lib/inspircd/modules/m_sslmodes.so
  lib/inspircd/modules/m_stripcolor.so
 @@ -202,42 +224,45 @@ lib/inspircd/modules/m_userip.so
  lib/inspircd/modules/m_vhost.so
  lib/inspircd/modules/m_watch.so
  lib/inspircd/modules/m_xline_db.so
 +@dirrm etc/inspircd/examples/aliases
 +@dirrm etc/inspircd/examples/modules
 +@dirrm etc/inspircd/examples
  @dirrm lib/inspircd/modules
  @dirrm lib/inspircd/logs
  @dirrm lib/inspircd/data
  @dirrm lib/inspircd
 -@unexec if cmp -s %D/%%ETCDIR%%/inspircd.censor.example %D/%%ETCDIR%%/inspircd.censor; then rm -f %D/%%ETCDIR%%/inspircd.censor; fi
 -%%ETCDIR%%/inspircd.censor.example
 +@unexec if cmp -s %D/%%ETCDIR%%/examples/inspircd.censor.example %D/%%ETCDIR%%/inspircd.censor; then rm -f %D/%%ETCDIR%%/inspircd.censor; fi
 +%%ETCDIR%%/examples/inspircd.censor.example
  @exec if [ ! -f %B/inspircd.censor ] ; then cp -p %D/%F %B/inspircd.censor; fi
 -@unexec if cmp -s %D/%%ETCDIR%%/inspircd.conf.example %D/%%ETCDIR%%/inspircd.conf; then rm -f %D/%%ETCDIR%%/inspircd.conf; fi
 -%%ETCDIR%%/inspircd.conf.example
 +@unexec if cmp -s %D/%%ETCDIR%%/examples/inspircd.conf.example %D/%%ETCDIR%%/inspircd.conf; then rm -f %D/%%ETCDIR%%/inspircd.conf; fi
 +%%ETCDIR%%/examples/inspircd.conf.example
  @exec if [ ! -f %B/inspircd.conf ] ; then cp -p %D/%F %B/inspircd.conf; fi
 -@unexec if cmp -s %D/%%ETCDIR%%/inspircd.filter.example %D/%%ETCDIR%%/inspircd.filter; then rm -f %D/%%ETCDIR%%/inspircd.filter; fi
 -%%ETCDIR%%/inspircd.filter.example
 +@unexec if cmp -s %D/%%ETCDIR%%/examples/inspircd.filter.example %D/%%ETCDIR%%/inspircd.filter; then rm -f %D/%%ETCDIR%%/inspircd.filter; fi
 +%%ETCDIR%%/examples/inspircd.filter.example
  @exec if [ ! -f %B/inspircd.filter ] ; then cp -p %D/%F %B/inspircd.filter; fi
 -@unexec if cmp -s %D/%%ETCDIR%%/inspircd.helpop.example %D/%%ETCDIR%%/inspircd.helpop; then rm -f %D/%%ETCDIR%%/inspircd.helpop; fi
 -%%ETCDIR%%/inspircd.helpop.example
 +@unexec if cmp -s %D/%%ETCDIR%%/examples/inspircd.helpop.example %D/%%ETCDIR%%/inspircd.helpop; then rm -f %D/%%ETCDIR%%/inspircd.helpop; fi
 +%%ETCDIR%%/examples/inspircd.helpop.example
  @exec if [ ! -f %B/inspircd.helpop ] ; then cp -p %D/%F %B/inspircd.helpop; fi
 -@unexec if cmp -s %D/%%ETCDIR%%/inspircd.helpop-full.example %D/%%ETCDIR%%/inspircd.helpop-full; then rm -f %D/%%ETCDIR%%/inspircd.helpop-full; fi
 -%%ETCDIR%%/inspircd.helpop-full.example
 +@unexec if cmp -s %D/%%ETCDIR%%/examples/inspircd.helpop-full.example %D/%%ETCDIR%%/inspircd.helpop-full; then rm -f %D/%%ETCDIR%%/inspircd.helpop-full; fi
 +%%ETCDIR%%/examples/inspircd.helpop-full.example
  @exec if [ ! -f %B/inspircd.helpop-full ] ; then cp -p %D/%F %B/inspircd.helpop-full; fi
 -@unexec if cmp -s %D/%%ETCDIR%%/inspircd.motd.example %D/%%ETCDIR%%/inspircd.motd; then rm -f %D/%%ETCDIR%%/inspircd.motd; fi
 -%%ETCDIR%%/inspircd.motd.example
 +@unexec if cmp -s %D/%%ETCDIR%%/examples/inspircd.motd.example %D/%%ETCDIR%%/inspircd.motd; then rm -f %D/%%ETCDIR%%/inspircd.motd; fi
 +%%ETCDIR%%/examples/inspircd.motd.example
  @exec if [ ! -f %B/inspircd.motd ] ; then cp -p %D/%F %B/inspircd.motd; fi
 -@unexec if cmp -s %D/%%ETCDIR%%/inspircd.quotes.example %D/%%ETCDIR%%/inspircd.quotes; then rm -f %D/%%ETCDIR%%/inspircd.quotes; fi
 -%%ETCDIR%%/inspircd.quotes.example
 +@unexec if cmp -s %D/%%ETCDIR%%/examples/inspircd.quotes.example %D/%%ETCDIR%%/inspircd.quotes; then rm -f %D/%%ETCDIR%%/inspircd.quotes; fi
 +%%ETCDIR%%/examples/inspircd.quotes.example
  @exec if [ ! -f %B/inspircd.quotes ] ; then cp -p %D/%F %B/inspircd.quotes; fi
 -@unexec if cmp -s %D/%%ETCDIR%%/inspircd.rules.example %D/%%ETCDIR%%/inspircd.rules; then rm -f %D/%%ETCDIR%%/inspircd.rules; fi
 -%%ETCDIR%%/inspircd.rules.example
 +@unexec if cmp -s %D/%%ETCDIR%%/examples/inspircd.rules.example %D/%%ETCDIR%%/inspircd.rules; then rm -f %D/%%ETCDIR%%/inspircd.rules; fi
 +%%ETCDIR%%/examples/inspircd.rules.example
  @exec if [ ! -f %B/inspircd.rules ] ; then cp -p %D/%F %B/inspircd.rules; fi
 -@unexec if cmp -s %D/%%ETCDIR%%/links.conf.example %D/%%ETCDIR%%/links.conf; then rm -f %D/%%ETCDIR%%/links.conf; fi
 -%%ETCDIR%%/links.conf.example
 -@exec if [ ! -f %B/links.conf.example ] ; then cp -p %D/%F %B/links.conf.example; fi
 -@unexec if cmp -s %D/%%ETCDIR%%/modules.conf.example %D/%%ETCDIR%%/modules.conf; then rm -f %D/%%ETCDIR%%/modules.conf; fi
 -%%ETCDIR%%/modules.conf.example
 -@exec if [ ! -f %B/modules.conf.example ] ; then cp -p %D/%F %B/modules.conf.example; fi
 -@unexec if cmp -s %D/%%ETCDIR%%/opers.conf.example %D/%%ETCDIR%%/opers.conf; then rm -f %D/%%ETCDIR%%/opers.conf; fi
 -%%ETCDIR%%/opers.conf.example
 -@exec if [ ! -f %B/opers.conf.example ] ; then cp -p %D/%F %B/opers.conf.example; fi
 -@unexec echo "If permanently removing software, you may wish to remove the configuration directory by running \"rm -rf %%LOCALBASE%%/%%ETCDIR%%\""
 +@unexec if cmp -s %D/%%ETCDIR%%/examples/links.conf.example %D/%%ETCDIR%%/links.conf; then rm -f %D/%%ETCDIR%%/links.conf; fi
 +%%ETCDIR%%/examples/links.conf.example
 +@exec if [ ! -f %B/links.conf ] ; then cp -p %D/%F %B/links.conf; fi
 +@unexec if cmp -s %D/%%ETCDIR%%/examples/modules.conf.example %D/%%ETCDIR%%/modules.conf; then rm -f %D/%%ETCDIR%%/modules.conf; fi
 +%%ETCDIR%%/examples/modules.conf.example
 +@exec if [ ! -f %B/modules.conf ] ; then cp -p %D/%F %B/modules.conf; fi
 +@unexec if cmp -s %D/%%ETCDIR%%/examples/opers.conf.example %D/%%ETCDIR%%/opers.conf; then rm -f %D/%%ETCDIR%%/opers.conf; fi
 +%%ETCDIR%%/examples/opers.conf.example
 +@exec if [ ! -f %B/opers.conf ] ; then cp -p %D/%F %B/opers.conf; fi
  @dirrmtry %%ETCDIR%%
 +@unexec echo "If permanently removing software, you may wish to remove the configuration directory by running \"rm -rf %%LOCALBASE%%/%%ETCDIR%%\""
 _______________________________________________
 svn-ports-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-ports-all
 To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"
 
>Unformatted:
