<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "http://bugs.gentoo.org/bugzilla.dtd">

<bugzilla version="2.22.7"
          urlbase="http://bugs.gentoo.org/"
          maintainer="bugzilla@gentoo.org"
>

    <bug>
          <bug_id>53394</bug_id>
          
          <creation_ts>2004-06-09 05:07 0000</creation_ts>
          <short_desc>Metis-4.0.ebuild (New Package)</short_desc>
          <delta_ts>2008-02-05 18:58:09 0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Gentoo Linux</product>
          <component>Ebuilds</component>
          <version>unspecified</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <keywords>EBUILD</keywords>
          <priority>P2</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>quintino@vki.ac.be</reporter>
          <assigned_to>sci@gentoo.org</assigned_to>
          <cc>giamma@vki.ac.be</cc>
    
    <cc>jsbronder@gentoo.org</cc>
    
    <cc>quintino@vki.ac.be</cc>

      

      
          <long_desc isprivate="0">
            <who>quintino@vki.ac.be</who>
            <bug_when>2004-06-09 05:07:29 0000</bug_when>
            <thetext>Please find attached a new ebuild for Metis-4.0.

From the website (http://www-users.cs.umn.edu/~karypis/metis/metis/index.html) you can read the following description:

&quot; METIS is a set of programs for partitioning graphs, partitioning finite element meshes, and for producing fill reducing orderings for sparse matrices. The algorithms implemented in METIS are based on the multilevel graph partitioning schemes.&quot;

It&apos;s a highly utilized tool for parallel computing, either on shared or distributed memory machines.

My suggestion is to place it in app-sci/metis.

Tiago Quintino</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>quintino@vki.ac.be</who>
            <bug_when>2004-06-09 05:09:43 0000</bug_when>
            <thetext>Created an attachment (id=32964)
metis-4.0.ebuild

Initial ebuild for Metis-4.0</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>giamma@vki.ac.be</who>
            <bug_when>2004-06-09 10:46:34 0000</bug_when>
            <thetext>Nice,
 you took care of modifying the names of the installed objects 
so that this package can coexist with parmetis. I saw you
mentioned in bug 49953 you wanted to try the ebuild for metis,
so I guess you have parmetis installed as well.

I do not think we need a metis-config, so I guess this is the best way.

Indeed the parmetis ebuild I provided lacks executables, it is 
just the core libraries.

I see we are from the same place, must meet sooner or later :)

Cyao </thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>johan@bondeson.mine.nu</who>
            <bug_when>2007-04-09 12:29:25 0000</bug_when>
            <thetext>Created an attachment (id=115817)
the same ebuild with updated url

this is just the same ebuild but with a new download url. I guess they changed it...</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jsbronder@gentoo.org</who>
            <bug_when>2007-09-20 16:26:29 0000</bug_when>
            <thetext>Created an attachment (id=131411)
metis-5.0_pre2 ebuild

Version bump for metis.  This is required for cholmod to build as referred to in bug #173900.

Also added a patch to use autotools.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jsbronder@gentoo.org</who>
            <bug_when>2007-09-20 16:27:00 0000</bug_when>
            <thetext>Created an attachment (id=131413)
metis-5.0_pre2-autotools.patch

</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>bicatali@gentoo.org</who>
            <bug_when>2007-09-24 16:24:39 0000</bug_when>
            <thetext>Hi

I put metis-5.0_pre2 in the science overlay. Please test it and review changes I made (quite a lot) with respect to the one posted here, and the autotools patch.

I could push it to the main tree, however I don&apos;t know the package.
The default src_test is quite buggy right now. So I would need someone interested to work out a src_test (or equivalently an autotools test suite). Also would we need metis-4.0.2 as well?

Sebastien
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jsbronder@gentoo.org</who>
            <bug_when>2007-09-24 19:27:38 0000</bug_when>
            <thetext>(In reply to comment #6)
Looks good to me.  I pushed the changes your changes to our local overlay.

As far as testing goes, I am only the middle man supplying the ebuilds to others.  I had to grab metis-5.0_pre* because cholmod requires metis.h, which appears to have been introduced in the newer versions.  So, in my case at least, I don&apos;t have any need for 4.0.2.

Thanks,
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>quintino@vki.ac.be</who>
            <bug_when>2007-09-25 08:09:02 0000</bug_when>
            <thetext>(In reply to comment #6)
&gt; I could push it to the main tree, however I don&apos;t know the package.
&gt; The default src_test is quite buggy right now. So I would need someone
&gt; interested to work out a src_test (or equivalently an autotools test suite).
&gt; Also would we need metis-4.0.2 as well?

Indeed. Metis 4.0 is still quite used in many projects (some of then legacy code), so I find it usefull to keep around. Maybe with a slotted installation?

Anyway, thanks for putting metis in the science overlay.
I use this overlay on all my machines, so its quite usefull.

Best, Tiago Quintino



</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>bicatali@gentoo.org</who>
            <bug_when>2008-02-05 18:58:09 0000</bug_when>
            <thetext>Now in the main tree. I masked metis-5* for now, since it is quite experimental. metis-4.0.1 is not masked.</thetext>
          </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>32964</attachid>
            <date>2004-06-09 05:09 0000</date>
            <desc>metis-4.0.ebuild</desc>
            <filename>metis-4.0.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA0IEdlbnRvbyBUZWNobm9sb2dpZXMsIEluYy4KIyBEaXN0cmli
dXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHYy
CiMgJEhlYWRlcjogJAoKaW5oZXJpdCBldXRpbHMKCkRFU0NSSVBUSU9OPSJTZXJpYWwgZ3JhcGgg
cGFydGl0aW9uZXIiCkhPTUVQQUdFPSJodHRwOi8vd3d3LXVzZXJzLmNzLnVtbi5lZHUvfmthcnlw
aXMvbWV0aXMvbWV0aXMvaW5kZXguaHRtbCIKU1JDX1VSST0iaHR0cDovL3d3dy11c2Vycy5jcy51
bW4uZWR1L35rYXJ5cGlzL21ldGlzL21ldGlzL2ZpbGVzL21ldGlzLSR7UFZ9LnRhci5neiIKCkxJ
Q0VOU0U9Ik5PVF9GUkVFIgoKSVVTRT0iIgoKU0xPVD0iMCIKCktFWVdPUkRTPSJ+eDg2IgoKUz0k
e1dPUktESVJ9L21ldGlzLSR7UFZ9CgpzcmNfdW5wYWNrKCkgewoJdW5wYWNrICR7QX0KCWNkICR7
U30KfQoKc3JjX2NvbXBpbGUoKSB7CgllbWFrZSB8fCBkaWUgImVtYWtlIGZhaWxlZCIKCWNkIC4v
RG9jIHx8IGRpZQoJbXYgbWFudWFsLnBzIE1ldGlzLSR7UFZ9LnBzIHx8IGRpZQoJY2QgLi4gfHwg
ZGllCgltdiBsaWJtZXRpcy5hIGxpYm1ldGlzLXNlcmlhbC5hCn0KCnNyY19pbnN0YWxsKCkgewoJ
ZG9saWIuYSBsaWJtZXRpcy1zZXJpYWwuYSB8fCBkaWUKCWRvYmluIHBtZXRpcyB8fCBkaWUKCWRv
YmluIG9lbWV0aXMgfHwgZGllCglkb2JpbiBvbm1ldGlzIHx8IGRpZQoJZG9iaW4ga21ldGlzIHx8
IGRpZQoJZG9iaW4gbWVzaDJkdWFsIHx8IGRpZQoJZG9iaW4gbWVzaDJub2RhbCB8fCBkaWUKCWRv
YmluIHBhcnRkbWVzaCB8fCBkaWUKCWRvYmluIHBhcnRubWVzaCB8fCBkaWUKCWRvYmluIGdyYXBo
Y2hrIHx8IGRpZQoJZG9kaXIgL3Vzci9pbmNsdWRlL21ldGlzLXNlcmlhbCB8fCBkaWUKCWluc2lu
dG8gL3Vzci9pbmNsdWRlL21ldGlzLXNlcmlhbCB8fCBkaWUKCWNkIC4vTGliIHx8IGRpZQoJZG9p
bnMgKi5oIHx8IGRpZQoJY2QgLi4gfHwgZGllCQkKCWRvZG9jIC4vRG9jL01ldGlzLSR7UFZ9LnBz
IHx8IGRpZQp9Cg==
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>115817</attachid>
            <date>2007-04-09 12:29 0000</date>
            <desc>the same ebuild with updated url</desc>
            <filename>metis-4.0.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA0IEdlbnRvbyBUZWNobm9sb2dpZXMsIEluYy4KIyBEaXN0cmli
dXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHYy
CiMgJEhlYWRlcjogJAoKaW5oZXJpdCBldXRpbHMKCkRFU0NSSVBUSU9OPSJTZXJpYWwgZ3JhcGgg
cGFydGl0aW9uZXIiCkhPTUVQQUdFPSJodHRwOi8vd3d3LXVzZXJzLmNzLnVtbi5lZHUvfmthcnlw
aXMvbWV0aXMvbWV0aXMvaW5kZXguaHRtbCIKU1JDX1VSST0iaHR0cDovL2dsYXJvcy5kdGMudW1u
LmVkdS9na2hvbWUvZmV0Y2gvc3cvbWV0aXMvbWV0aXMtJHtQVn0udGFyLmd6IgoKTElDRU5TRT0i
Tk9UX0ZSRUUiCgpJVVNFPSIiCgpTTE9UPSIwIgoKS0VZV09SRFM9In54ODYiCgpTPSR7V09SS0RJ
Un0vbWV0aXMtJHtQVn0KCnNyY191bnBhY2soKSB7Cgl1bnBhY2sgJHtBfQoJY2QgJHtTfQp9Cgpz
cmNfY29tcGlsZSgpIHsKCWVtYWtlIHx8IGRpZSAiZW1ha2UgZmFpbGVkIgoJY2QgLi9Eb2MgfHwg
ZGllCgltdiBtYW51YWwucHMgTWV0aXMtJHtQVn0ucHMgfHwgZGllCgljZCAuLiB8fCBkaWUKCW12
IGxpYm1ldGlzLmEgbGlibWV0aXMtc2VyaWFsLmEKfQoKc3JjX2luc3RhbGwoKSB7Cglkb2xpYi5h
IGxpYm1ldGlzLXNlcmlhbC5hIHx8IGRpZQoJZG9iaW4gcG1ldGlzIHx8IGRpZQoJZG9iaW4gb2Vt
ZXRpcyB8fCBkaWUKCWRvYmluIG9ubWV0aXMgfHwgZGllCglkb2JpbiBrbWV0aXMgfHwgZGllCglk
b2JpbiBtZXNoMmR1YWwgfHwgZGllCglkb2JpbiBtZXNoMm5vZGFsIHx8IGRpZQoJZG9iaW4gcGFy
dGRtZXNoIHx8IGRpZQoJZG9iaW4gcGFydG5tZXNoIHx8IGRpZQoJZG9iaW4gZ3JhcGhjaGsgfHwg
ZGllCglkb2RpciAvdXNyL2luY2x1ZGUvbWV0aXMtc2VyaWFsIHx8IGRpZQoJaW5zaW50byAvdXNy
L2luY2x1ZGUvbWV0aXMtc2VyaWFsIHx8IGRpZQoJY2QgLi9MaWIgfHwgZGllCglkb2lucyAqLmgg
fHwgZGllCgljZCAuLiB8fCBkaWUJCQoJZG9kb2MgLi9Eb2MvTWV0aXMtJHtQVn0ucHMgfHwgZGll
Cn0K
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>131411</attachid>
            <date>2007-09-20 16:26 0000</date>
            <desc>metis-5.0_pre2 ebuild</desc>
            <filename>metis-5.0_pre2.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA0IEdlbnRvbyBUZWNobm9sb2dpZXMsIEluYy4KIyBEaXN0cmli
dXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHYy
CiMgJEhlYWRlcjogJAoKaW5oZXJpdCBhdXRvdG9vbHMgZXV0aWxzCgpNWV9QVj0ke1BWL18vfQpE
RVNDUklQVElPTj0iU2VyaWFsIGdyYXBoIHBhcnRpdGlvbmVyIgpIT01FUEFHRT0iaHR0cDovL3d3
dy11c2Vycy5jcy51bW4uZWR1L35rYXJ5cGlzL21ldGlzL21ldGlzL2luZGV4Lmh0bWwiClNSQ19V
Ukk9Imh0dHA6Ly9nbGFyb3MuZHRjLnVtbi5lZHUvZ2tob21lL2ZldGNoL3N3L21ldGlzL21ldGlz
LSR7TVlfUFZ9LnRhci5neiIKCkxJQ0VOU0U9Ik5PVF9GUkVFIgoKSVVTRT0iIgoKU0xPVD0iMCIK
CktFWVdPUkRTPSJ+YW1kNjQgfng4NiIKClM9IiR7V09SS0RJUn0vbWV0aXMtJHtNWV9QVn0iCgpz
cmNfdW5wYWNrKCkgewoJdW5wYWNrICR7QX0KCWNkICR7V09SS0RJUn0KCWVwYXRjaCAiJHtGSUxF
U0RJUn0iLyR7UH0tYXV0b3Rvb2xzLnBhdGNoCgljZCAke1N9CgllYXV0b3JlY29uZiAKfQoKc3Jj
X2NvbXBpbGUoKSB7CgllY29uZiB8fCBkaWUgImVjb25mIGZhaWxlZCIKCWVtYWtlIHx8IGRpZSAi
ZW1ha2UgZmFpbGVkIgp9CgpzcmNfaW5zdGFsbCgpIHsKCWVtYWtlIERFU1RESVI9JHtEfSBpbnN0
YWxsIHx8IGRpZSAiZW1ha2UgaW5zdGFsbCBmYWlsZWQiCglkb2RvYyBDSEFOR0VTLnY1IElOU1RB
TEwudjUKfQo=
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131413</attachid>
            <date>2007-09-20 16:27 0000</date>
            <desc>metis-5.0_pre2-autotools.patch</desc>
            <filename>metis-5.0_pre2-autotools.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtdXJOIG1ldGlzLTUuMHByZTJfb3JpZy9HS2xpYi90cnVuay9NYWtlZmlsZS5hbSBtZXRp
cy01LjBwcmUyL0dLbGliL3RydW5rL01ha2VmaWxlLmFtCi0tLSBtZXRpcy01LjBwcmUyX29yaWcv
R0tsaWIvdHJ1bmsvTWFrZWZpbGUuYW0JMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1
MDAKKysrIG1ldGlzLTUuMHByZTIvR0tsaWIvdHJ1bmsvTWFrZWZpbGUuYW0JMjAwNy0wOS0yMCAx
MDo1NDo1OS4wMDAwMDAwMDAgLTA0MDAKQEAgLTAsMCArMSwyNSBAQAorQU1fQ0ZMQUdTID0gLURM
SU5VWCAtc3RkPWM5OSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0Citub2luc3RfTFRMSUJSQVJJRVMg
PSBsaWJHS2xpYi5sYQorbm9pbnN0X0hFQURFUlMgPSBHS2xpYi5oCisKK2NvbW1vbl9zcmMgPSBi
NjQuYyBcCisJYmxhcy5jIFwKKwlkZmt2a3NlbGVjdC5jIFwKKwlkbG1hbGxvYy5jIFwKKwllcnJv
ci5jIFwKKwlmcy5jIFwKKwlnZXRvcHQuYyBcCisJaHRhYmxlLmMgXAorCWlvLmMgXAorCW1lbW9y
eS5jIFwKKwlvbXAuYyBcCisJcGRiLmMgXAorCXNlcS5jIFwKKwlzb3J0LmMgXAorCXN0cmluZy5j
IFwKKwl0aW1lcnMuYyBcCisJdG9rZW5pemVyLmMgXAorCXV0aWwuYworCisKK2xpYkdLbGliX2xh
X1NPVVJDRVMgPSAgJChjb21tb25fc3JjKQpkaWZmIC11ck4gbWV0aXMtNS4wcHJlMl9vcmlnL01h
a2VmaWxlLmFtIG1ldGlzLTUuMHByZTIvTWFrZWZpbGUuYW0KLS0tIG1ldGlzLTUuMHByZTJfb3Jp
Zy9NYWtlZmlsZS5hbQkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAorKysgbWV0
aXMtNS4wcHJlMi9NYWtlZmlsZS5hbQkyMDA3LTA5LTIwIDEwOjU0OjU5LjAwMDAwMDAwMCAtMDQw
MApAQCAtMCwwICsxLDMgQEAKK1NVQkRJUlMgPSBHS2xpYi90cnVuayBsaWJtZXRpcyBwcm9ncmFt
cyB0ZXN0CitFWFRSQV9ESVNUID0gQ0hBTkdFUyoKK2luY2x1ZGVfSEVBREVSUyA9IGluY2x1ZGUv
bWV0aXMuaApkaWZmIC11ck4gbWV0aXMtNS4wcHJlMl9vcmlnL2NvbmZpZ3VyZS5hYyBtZXRpcy01
LjBwcmUyL2NvbmZpZ3VyZS5hYwotLS0gbWV0aXMtNS4wcHJlMl9vcmlnL2NvbmZpZ3VyZS5hYwkx
OTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAorKysgbWV0aXMtNS4wcHJlMi9jb25m
aWd1cmUuYWMJMjAwNy0wOS0yMCAxMDo1NzoyNS4wMDAwMDAwMDAgLTA0MDAKQEAgLTAsMCArMSwx
NCBAQAorQUNfSU5JVChtZXRpcywgNS4wcHJlMiwgbWV0aXNAY3MudW1uLmVkdSkKK0FNX0lOSVRf
QVVUT01BS0UoW2ZvcmVpZ25dKQorQUNfQ0hFQ0tfTElCKG0sIFtzcXJ0LCBwb3csIGxvZ10gKQor
QUNfUFJPR19JTlNUQUxMCitBQ19QUk9HX0xJQlRPT0wKK0FDX0NPTkZJR19GSUxFUyggXAorICAg
IE1ha2VmaWxlIFwKKyAgICBHS2xpYi90cnVuay9NYWtlZmlsZSBcCisgICAgbGlibWV0aXMvTWFr
ZWZpbGUgXAorICAgIHByb2dyYW1zL01ha2VmaWxlIFwKKyAgICB0ZXN0L01ha2VmaWxlIAorKQor
QUNfT1VUUFVUCisKZGlmZiAtdXJOIG1ldGlzLTUuMHByZTJfb3JpZy9saWJtZXRpcy9NYWtlZmls
ZS5hbSBtZXRpcy01LjBwcmUyL2xpYm1ldGlzL01ha2VmaWxlLmFtCi0tLSBtZXRpcy01LjBwcmUy
X29yaWcvbGlibWV0aXMvTWFrZWZpbGUuYW0JMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAg
LTA1MDAKKysrIG1ldGlzLTUuMHByZTIvbGlibWV0aXMvTWFrZWZpbGUuYW0JMjAwNy0wOS0yMCAx
MDo1NjowOC4wMDAwMDAwMDAgLTA0MDAKQEAgLTAsMCArMSwxNyBAQAorQU1fQ0ZMQUdTID0gLUkk
KHRvcF9zcmNkaXIpL2luY2x1ZGUgLUkkKHRvcF9zcmNkaXIpL0dLbGliL3RydW5rIC1ETElOVVgg
LURVTklYIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQKK2xpYl9MVExJQlJBUklFUyA9IGxpYm1ldGlz
LmxhCitsaWJtZXRpc19sYV9TT1VSQ0VTPSBcCisJYmFsYW5jZS5jIGJ1Y2tldHNvcnQuYyBjY2dy
YXBoLmMgY2hlY2tncmFwaC5jIGNtZXRpcy5jIFwKKwljb2Fyc2VuLmMgY29tcHJlc3MuYyBkZWJ1
Zy5jIGVzdG1lbS5jIGZtLmMgZm9ydHJhbi5jIFwKKwlmcmVuYW1lLmMgZ3JhcGguYyBpbml0cGFy
dC5jIGtmbWV0aXMuYyBrbWV0aXMuYyBrdm1ldGlzLmMgXAorCWt3YXlmbS5jIGt3YXlyZWZpbmUu
YyBrd2F5dm9sZm0uYyBrd2F5dm9scmVmaW5lLmMgbWF0Y2guYyBcCisJbWJhbGFuY2UuYyBtYmFs
YW5jZTIuYyBtY29hcnNlbi5jIG1lbW9yeS5jIG1lc2guYyBtZXNocGFydC5jIFwKKwltZm0uYyBt
Zm0yLmMgbWluY292ZXIuYyBtaW5pdHBhcnQuYyBtaW5pdHBhcnQyLmMgbWttZXRpcy5jIFwKKwlt
a3dheWZtaC5jIG1rd2F5cmVmaW5lLmMgbW1hdGNoLmMgbW1kLmMgbXBtZXRpcy5jIG1yZWZpbmUu
YyBcCisJbXJlZmluZTIuYyBtcmttZXRpcy5jIG11dGlsLmMgbXlxc29ydC5jIG9tZXRpcy5jIHBh
cm1ldGlzLmMgXAorCXBtZXRpcy5jIHBxdWV1ZS5jIHJlZmluZS5jIHJrbWV0aXMuYyBzZXBhcmF0
b3IuYyBzZm0uYyBcCisJc3JlZmluZS5jIHN0YXQuYyBzdHJlYW1pby5jIHN1YmRvbWFpbnMuYyB0
aW1pbmcuYyB1dGlsLmMgXAorCXNtYmZhY3Rvci5jCisKK2xpYm1ldGlzX2xhX0xJQkFERCA9IFwK
KwkkKHRvcF9zcmNkaXIpL0dLbGliL3RydW5rL2xpYkdLbGliLmxhCmRpZmYgLXVyTiBtZXRpcy01
LjBwcmUyX29yaWcvbGlibWV0aXMvc21iZmFjdG9yLmMgbWV0aXMtNS4wcHJlMi9saWJtZXRpcy9z
bWJmYWN0b3IuYwotLS0gbWV0aXMtNS4wcHJlMl9vcmlnL2xpYm1ldGlzL3NtYmZhY3Rvci5jCTE5
NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCisrKyBtZXRpcy01LjBwcmUyL2xpYm1l
dGlzL3NtYmZhY3Rvci5jCTIwMDctMDktMjAgMTA6NTQ6NTkuMDAwMDAwMDAwIC0wNDAwCkBAIC0w
LDAgKzEsMzgzIEBACisvKgorICogQ29weXJpZ2h0IDE5OTcsIFJlZ2VudHMgb2YgdGhlIFVuaXZl
cnNpdHkgb2YgTWlubmVzb3RhCisgKgorICogc21iZmFjdG9yLmMKKyAqCisgKiBUaGlzIGZpbGUg
cGVyZm9ybXMgdGhlIHN5bWJvbGljIGZhY3Rvcml6YXRpb24gb2YgYSBtYXRyaXgKKyAqCisgKiBT
dGFydGVkIDgvMS85NworICogR2VvcmdlCisgKgorICogJElkOiBzbWJmYWN0b3IuYyx2IDEuMiAy
MDAyLzA4LzEwIDA2OjAyOjU1IGthcnlwaXMgRXhwICQKKyAqCisgKi8KKworI2luY2x1ZGUgPG1l
dGlzbGliLmg+CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBUaGlzIGZ1bmN0aW9uIHNldHMgdXAgZGF0
YSBzdHJ1Y3R1cmVzIGZvciBmaWxsLWluIGNvbXB1dGF0aW9ucworKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
Cit2b2lkIENvbXB1dGVGaWxsSW4oR3JhcGhUeXBlICpncmFwaCwgaWR4dHlwZSAqaXBlcm0pCit7
CisgIGlkeHR5cGUgaSwgaiwgaywgbnZ0eHMsIG1heGxueiwgbWF4c3ViOworICBpZHh0eXBlICp4
YWRqLCAqYWRqbmN5OworICBpZHh0eXBlICpwZXJtLCAqeGxueiwgKnhuenN1YiwgKm56c3ViOwor
ICBkb3VibGUgb3BjOworCisvKgorICBtcHJpbnRmKCJcblN5bWJvbGljIGZhY3Rvcml6YXRpb24u
Li4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOworKi8K
KworICBudnR4cyA9IGdyYXBoLT5udnR4czsKKyAgeGFkaiA9IGdyYXBoLT54YWRqOworICBhZGpu
Y3kgPSBncmFwaC0+YWRqbmN5OworCisgIG1heHN1YiA9IDQqeGFkaltudnR4c107CisKKyAgLyog
UmVsYWJlbCB0aGUgdmVydGljZXMgc28gdGhhdCBpdCBzdGFydHMgZnJvbSAxICovCisgIGsgPSB4
YWRqW252dHhzXTsKKyAgZm9yIChpPTA7IGk8azsgaSsrKQorICAgIGFkam5jeVtpXSsrOworICBm
b3IgKGk9MDsgaTxudnR4cysxOyBpKyspCisgICAgeGFkaltpXSsrOworCisgIC8qIEFsbG9jYXRl
IHRoZSByZXF1aXJlZCBtZW1vcnkgKi8KKyAgcGVybSA9IGlkeG1hbGxvYyhudnR4cysxLCAiQ29t
cHV0ZUZpbGxJbjogcGVybSIpOworICB4bG56ID0gaWR4bWFsbG9jKG52dHhzKzEsICJDb21wdXRl
RmlsbEluOiB4bG56Iik7CisgIHhuenN1YiA9IGlkeG1hbGxvYyhudnR4cysxLCAiQ29tcHV0ZUZp
bGxJbjogeG56c3ViIik7CisgIG56c3ViID0gaWR4bWFsbG9jKG1heHN1YiwgIkNvbXB1dGVGaWxs
SW46IG56c3ViIik7CisKKyAgLyogQ29uc3RydWN0IHBlcm0gZnJvbSBpcGVybSBhbmQgY2hhbmdl
IHRoZSBudW1iZXJpbmcgb2YgaXBlcm0gKi8KKyAgZm9yIChpPTA7IGk8bnZ0eHM7IGkrKykKKyAg
ICBwZXJtW2lwZXJtW2ldXSA9IGk7CisgIGZvciAoaT0wOyBpPG52dHhzOyBpKyspIHsKKyAgICBp
cGVybVtpXSsrOworICAgIHBlcm1baV0rKzsKKyAgfQorICAKKyAgLyoKKyAgICogQ2FsbCBzcGFy
c3BhayByb3V0aW5lLgorICAgKi8KKyAgaWYgKHNtYmZjdChudnR4cywgeGFkaiwgYWRqbmN5LCBw
ZXJtLCBpcGVybSwgeGxueiwgJm1heGxueiwgeG56c3ViLCBuenN1YiwgJm1heHN1YikpIHsKKyAg
ICBna19mcmVlKCh2b2lkICoqKSZuenN1YiwgTFRFUk0pOworCisgICAgbWF4c3ViID0gNCptYXhz
dWI7IAorICAgIG56c3ViID0gaWR4bWFsbG9jKG1heHN1YiwgIkNvbXB1dGVGaWxsSW46IG56c3Vi
Iik7CisgICAgaWYgKHNtYmZjdChudnR4cywgeGFkaiwgYWRqbmN5LCBwZXJtLCBpcGVybSwgeGxu
eiwgJm1heGxueiwgeG56c3ViLCBuenN1YiwgJm1heHN1YikpIAorICAgICAgZXJyZXhpdCgiTUFY
U1VCIGlzIHRvbyBzbWFsbCEiKTsKKyAgfQorCisgIG9wYyA9IDA7CisgIGZvciAoaT0wOyBpPG52
dHhzOyBpKyspCisgICAgeGxueltpXS0tOworICBmb3IgKGk9MDsgaTxudnR4czsgaSsrKQorICAg
IG9wYyArPSAoeGxueltpKzFdLXhsbnpbaV0pKih4bG56W2krMV0teGxueltpXSkgLSAoeGxueltp
KzFdLXhsbnpbaV0pOworCisgIG1wcmludGYoIiAgTm9uemVyb3M6ICVELCBcdE9wZXJhdGlvbiBD
b3VudDogJTYuNGxlXG4iLCBtYXhsbnosIG9wYyk7CisKKworICBna19mcmVlKCh2b2lkICoqKSZw
ZXJtLCAmeGxueiwgJnhuenN1YiwgJm56c3ViLCBMVEVSTSk7CisKKworICAvKiBSZWxhYmVsIHRo
ZSB2ZXJ0aWNlcyBzbyB0aGF0IGl0IHN0YXJ0cyBmcm9tIDAgKi8KKyAgZm9yIChpPTA7IGk8bnZ0
eHM7IGkrKykKKyAgICBpcGVybVtpXS0tOworICBmb3IgKGk9MDsgaTxudnR4cysxOyBpKyspCisg
ICAgeGFkaltpXS0tOworICBrID0geGFkaltudnR4c107CisgIGZvciAoaT0wOyBpPGs7IGkrKykK
KyAgICBhZGpuY3lbaV0tLTsKKworfQorCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogVGhpcyBm
dW5jdGlvbiBzZXRzIHVwIGRhdGEgc3RydWN0dXJlcyBmb3IgZmlsbC1pbiBjb21wdXRhdGlvbnMK
KyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqLworaWR4dHlwZSBDb21wdXRlRmlsbEluMihHcmFwaFR5cGUgKmdy
YXBoLCBpZHh0eXBlICppcGVybSkKK3sKKyAgaWR4dHlwZSBpLCBqLCBrLCBudnR4cywgbWF4bG56
LCBtYXhzdWI7CisgIGlkeHR5cGUgKnhhZGosICphZGpuY3k7CisgIGlkeHR5cGUgKnBlcm0sICp4
bG56LCAqeG56c3ViLCAqbnpzdWI7CisgIGRvdWJsZSBvcGM7CisKKyAgbnZ0eHMgPSBncmFwaC0+
bnZ0eHM7CisgIHhhZGogPSBncmFwaC0+eGFkajsKKyAgYWRqbmN5ID0gZ3JhcGgtPmFkam5jeTsK
KworICBtYXhzdWIgPSA0KnhhZGpbbnZ0eHNdOworCisgIC8qIFJlbGFiZWwgdGhlIHZlcnRpY2Vz
IHNvIHRoYXQgaXQgc3RhcnRzIGZyb20gMSAqLworICBrID0geGFkaltudnR4c107CisgIGZvciAo
aT0wOyBpPGs7IGkrKykKKyAgICBhZGpuY3lbaV0rKzsKKyAgZm9yIChpPTA7IGk8bnZ0eHMrMTsg
aSsrKQorICAgIHhhZGpbaV0rKzsKKworICAvKiBBbGxvY2F0ZSB0aGUgcmVxdWlyZWQgbWVtb3J5
ICovCisgIHBlcm0gPSBpZHhtYWxsb2MobnZ0eHMrMSwgIkNvbXB1dGVGaWxsSW46IHBlcm0iKTsK
KyAgeGxueiA9IGlkeG1hbGxvYyhudnR4cysxLCAiQ29tcHV0ZUZpbGxJbjogeGxueiIpOworICB4
bnpzdWIgPSBpZHhtYWxsb2MobnZ0eHMrMSwgIkNvbXB1dGVGaWxsSW46IHhuenN1YiIpOworICBu
enN1YiA9IGlkeG1hbGxvYyhtYXhzdWIsICJDb21wdXRlRmlsbEluOiBuenN1YiIpOworCisgIC8q
IENvbnN0cnVjdCBwZXJtIGZyb20gaXBlcm0gYW5kIGNoYW5nZSB0aGUgbnVtYmVyaW5nIG9mIGlw
ZXJtICovCisgIGZvciAoaT0wOyBpPG52dHhzOyBpKyspCisgICAgcGVybVtpcGVybVtpXV0gPSBp
OworICBmb3IgKGk9MDsgaTxudnR4czsgaSsrKSB7CisgICAgaXBlcm1baV0rKzsKKyAgICBwZXJt
W2ldKys7CisgIH0KKyAgCisgIC8qCisgICAqIENhbGwgc3BhcnNwYWsgcm91dGluZS4KKyAgICov
CisgIGlmIChzbWJmY3QobnZ0eHMsIHhhZGosIGFkam5jeSwgcGVybSwgaXBlcm0sIHhsbnosICZt
YXhsbnosIHhuenN1YiwgbnpzdWIsICZtYXhzdWIpKSB7CisgICAgZ2tfZnJlZSgodm9pZCAqKikm
bnpzdWIsIExURVJNKTsKKworICAgIG1heHN1YiA9IDQqbWF4c3ViOyAKKyAgICBuenN1YiA9IGlk
eG1hbGxvYyhtYXhzdWIsICJDb21wdXRlRmlsbEluOiBuenN1YiIpOworICAgIGlmIChzbWJmY3Qo
bnZ0eHMsIHhhZGosIGFkam5jeSwgcGVybSwgaXBlcm0sIHhsbnosICZtYXhsbnosIHhuenN1Yiwg
bnpzdWIsICZtYXhzdWIpKSAKKyAgICAgIGVycmV4aXQoIk1BWFNVQiBpcyB0b28gc21hbGwhIik7
CisgIH0KKworICBvcGMgPSAwOworICBmb3IgKGk9MDsgaTxudnR4czsgaSsrKQorICAgIHhsbnpb
aV0tLTsKKyAgZm9yIChpPTA7IGk8bnZ0eHM7IGkrKykKKyAgICBvcGMgKz0gKHhsbnpbaSsxXS14
bG56W2ldKSooeGxueltpKzFdLXhsbnpbaV0pIC0gKHhsbnpbaSsxXS14bG56W2ldKTsKKworCisg
IGdrX2ZyZWUoKHZvaWQgKiopJnBlcm0sICZ4bG56LCAmeG56c3ViLCAmbnpzdWIsIExURVJNKTsK
KworCisgIC8qIFJlbGFiZWwgdGhlIHZlcnRpY2VzIHNvIHRoYXQgaXQgc3RhcnRzIGZyb20gMCAq
LworICBmb3IgKGk9MDsgaTxudnR4czsgaSsrKQorICAgIGlwZXJtW2ldLS07CisgIGZvciAoaT0w
OyBpPG52dHhzKzE7IGkrKykKKyAgICB4YWRqW2ldLS07CisgIGsgPSB4YWRqW252dHhzXTsKKyAg
Zm9yIChpPTA7IGk8azsgaSsrKQorICAgIGFkam5jeVtpXS0tOworCisgIHJldHVybiBtYXhsbno7
CisKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKiogICAgICAgICAgCisqKioqKioqKioqICAgICBTTUJGQ1QgLi4u
Li4gU1lNQk9MSUMgRkFDVE9SSVpBVElPTiAgICAgICAqKioqKioqKiogCisqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAg
ICAgICAgCisqICAgUFVSUE9TRSAtIFRISVMgUk9VVElORSBQRVJGT1JNUyBTWU1CT0xJQyBGQUNU
T1JJWkFUSU9OICAgICAgICAgICAgICAgCisqICAgT04gQSBQRVJNVVRFRCBMSU5FQVIgU1lTVEVN
IEFORCBJVCBBTFNPIFNFVFMgVVAgVEhFICAgICAgICAgICAgICAgCisqICAgQ09NUFJFU1NFRCBE
QVRBIFNUUlVDVFVSRSBGT1IgVEhFIFNZU1RFTS4gICAgICAgICAgICAgICAgICAgICAgICAgCisq
CisqICAgSU5QVVQgUEFSQU1FVEVSUyAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKKyogICAgICBORVFOUyAtIE5VTUJFUiBPRiBFUVVBVElPTlMuICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisqICAgICAgKFhBREosIEFESk5DWSkgLSBUSEUg
QURKQUNFTkNZIFNUUlVDVFVSRS4gICAgICAgICAgICAgICAgICAgCisqICAgICAgKFBFUk0sIElO
VlApIC0gVEhFIFBFUk1VVEFUSU9OIFZFQ1RPUiBBTkQgSVRTIElOVkVSU0UuICAgICAKKyoKKyog
ICBVUERBVEVEIFBBUkFNRVRFUlMgLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCisqICAgICAgTUFYU1VCIC0gU0laRSBPRiBUSEUgU1VCU0NSSVBUIEFSUkFZIE5aU1VC
LiAgT04gUkVUVVJOLCAgCisqICAgICAgICAgICAgIElUIENPTlRBSU5TIFRIRSBOVU1CRVIgT0Yg
U1VCU0NSSVBUUyBVU0VEICAgICAgICAKKyoKKyogICBPVVRQVVQgUEFSQU1FVEVSUyAtICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisqICAgICAgWExOWiAtIElOREVYIElO
VE8gVEhFIE5PTlpFUk8gU1RPUkFHRSBWRUNUT1IgTE5aLiAgIAorKiAgICAgIChYTlpTVUIsIE5a
U1VCKSAtIFRIRSBDT01QUkVTU0VEIFNVQlNDUklQVCBWRUNUT1JTLiAKKyogICAgICBNQVhMTlog
LSBUSEUgTlVNQkVSIE9GIE5PTlpFUk9TIEZPVU5ELiAgICAgICAgICAgICAKKyoKKyoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovCitpZHh0eXBlIHNtYmZjdChpZHh0eXBlIG5lcW5zLCBpZHh0eXBlICp4YWRqLCBpZHh0eXBl
ICphZGpuY3ksIGlkeHR5cGUgKnBlcm0sIGlkeHR5cGUgKmludnAsIAorCSAgICAgICBpZHh0eXBl
ICp4bG56LCBpZHh0eXBlICptYXhsbnosIGlkeHR5cGUgKnhuenN1YiwgaWR4dHlwZSAqbnpzdWIs
IGlkeHR5cGUgKm1heHN1YikKK3sKKyAgLyogTG9jYWwgdmFyaWFibGVzICovCisgIGlkeHR5cGUg
bm9kZSwgcmNobSwgbXJnaywgbG1heCwgaSwgaiwgaywgbSwgbmFib3IsIG56YmVnLCBuemVuZDsK
KyAgaWR4dHlwZSBreHN1YiwganN0b3AsIGpzdHJ0LCBtcmtmbGcsIGlueiwga256LCBmbGFnOwor
ICBpZHh0eXBlICptcmdsbmssICptYXJrZXIsICpyY2hsbms7CisKKyAgcmNobG5rID0gaWR4bWFs
bG9jKG5lcW5zKzEsICJzbWJmY3Q6IHJjaGxuayIpOworICBtYXJrZXIgPSBpZHhzbWFsbG9jKG5l
cW5zKzEsIDAsICJzbWJmY3Q6IG1hcmtlciIpOworICBtcmdsbmsgPSBpZHhzbWFsbG9jKG5lcW5z
KzEsIDAsICJzbWJmY3Q6IG1ncmxuayIpOworCisgIC8qIFBhcmFtZXRlciBhZGp1c3RtZW50cyAq
LworICAtLW1hcmtlcjsKKyAgLS1tcmdsbms7CisgIC0tcmNobG5rOworICAtLW56c3ViOworICAt
LXhuenN1YjsKKyAgLS14bG56OworICAtLWludnA7CisgIC0tcGVybTsKKyAgLS1hZGpuY3k7Cisg
IC0teGFkajsKKworICAvKiBGdW5jdGlvbiBCb2R5ICovCisgIGZsYWcgPSAwOworICBuemJlZyA9
IDE7CisgIG56ZW5kID0gMDsKKyAgeGxuelsxXSA9IDE7CisKKyAgLyogRk9SIEVBQ0ggQ09MVU1O
IEtOWiBDT1VOVFMgVEhFIE5VTUJFUiBPRiBOT05aRVJPUyBJTiBDT0xVTU4gSyBBQ0NVTVVMQVRF
RCBJTiBSQ0hMTksuICovCisgIGZvciAoayA9IDE7IGsgPD0gbmVxbnM7ICsraykgeworICAgIGtu
eiA9IDA7CisgICAgbXJnayA9IG1yZ2xua1trXTsKKyAgICBtcmtmbGcgPSAwOworICAgIG1hcmtl
cltrXSA9IGs7CisgICAgaWYgKG1yZ2sgIT0gMCkgCisgICAgICBtYXJrZXJba10gPSBtYXJrZXJb
bXJna107CisgICAgeG56c3ViW2tdID0gbnplbmQ7CisgICAgbm9kZSA9IHBlcm1ba107CisKKyAg
ICBpZiAoeGFkaltub2RlXSA+PSB4YWRqW25vZGUrMV0pIHsKKyAgICAgIHhsbnpbaysxXSA9IHhs
bnpba107CisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICAvKiBVU0UgUkNITE5LIFRPIExJ
TksgVEhST1VHSCBUSEUgU1RSVUNUVVJFIE9GIEEoKixLKSBCRUxPVyBESUFHT05BTCAqLworICAg
IHJjaGxua1trXSA9IG5lcW5zKzE7CisgICAgZm9yIChqPXhhZGpbbm9kZV07IGo8eGFkaltub2Rl
KzFdOyBqKyspIHsKKyAgICAgIG5hYm9yID0gaW52cFthZGpuY3lbal1dOworICAgICAgaWYgKG5h
Ym9yIDw9IGspIAorICAgICAgICBjb250aW51ZTsKKyAgICAgIHJjaG0gPSBrOworCisgICAgICBk
byB7CisgICAgICAgIG0gPSByY2htOworICAgICAgICByY2htID0gcmNobG5rW21dOworICAgICAg
fSB3aGlsZSAocmNobSA8PSBuYWJvcik7IAorCisgICAgICBrbnorKzsKKyAgICAgIHJjaGxua1tt
XSA9IG5hYm9yOworICAgICAgcmNobG5rW25hYm9yXSA9IHJjaG07CisgICAgICBpZiAobWFya2Vy
W25hYm9yXSAhPSBtYXJrZXJba10pIAorICAgICAgICBtcmtmbGcgPSAxOworICAgIH0KKworICAg
IC8qIFRFU1QgRk9SIE1BU1MgU1lNQk9MSUMgRUxJTUlOQVRJT04gKi8KKyAgICBsbWF4ID0gMDsK
KyAgICBpZiAobXJrZmxnICE9IDAgfHwgbXJnayA9PSAwIHx8IG1yZ2xua1ttcmdrXSAhPSAwKSAK
KyAgICAgIGdvdG8gTDM1MDsKKyAgICB4bnpzdWJba10gPSB4bnpzdWJbbXJna10gKyAxOworICAg
IGtueiA9IHhsbnpbbXJnayArIDFdIC0gKHhsbnpbbXJna10gKyAxKTsKKyAgICBnb3RvIEwxNDAw
OworCisKKyAgICAvKiBMSU5LIFRIUk9VR0ggRUFDSCBDT0xVTU4gSSBUSEFUIEFGRkVDVFMgTCgq
LEspICovCitMMzUwOgorICAgIGkgPSBrOworICAgIHdoaWxlICgoaSA9IG1yZ2xua1tpXSkgIT0g
MCkgeworICAgICAgaW56ID0geGxueltpKzFdIC0gKHhsbnpbaV0rMSk7CisgICAgICBqc3RydCA9
IHhuenN1YltpXSArIDE7CisgICAgICBqc3RvcCA9IHhuenN1YltpXSArIGluejsKKworICAgICAg
aWYgKGlueiA+IGxtYXgpIHsgCisgICAgICAgIGxtYXggPSBpbno7CisgICAgICAgIHhuenN1Yltr
XSA9IGpzdHJ0OworICAgICAgfQorCisgICAgICAvKiBNRVJHRSBTVFJVQ1RVUkUgT0YgTCgqLEkp
IElOIE5aU1VCIElOVE8gUkNITE5LLiAqLyAKKyAgICAgIHJjaG0gPSBrOworICAgICAgZm9yIChq
ID0ganN0cnQ7IGogPD0ganN0b3A7ICsraikgeworICAgICAgICBuYWJvciA9IG56c3ViW2pdOwor
ICAgICAgICBkbyB7CisgICAgICAgICAgbSA9IHJjaG07CisgICAgICAgICAgcmNobSA9IHJjaGxu
a1ttXTsKKyAgICAgICAgfSB3aGlsZSAocmNobSA8IG5hYm9yKTsKKworICAgICAgICBpZiAocmNo
bSAhPSBuYWJvcikgeworICAgICAgICAgIGtueisrOworICAgICAgICAgIHJjaGxua1ttXSA9IG5h
Ym9yOworICAgICAgICAgIHJjaGxua1tuYWJvcl0gPSByY2htOworICAgICAgICAgIHJjaG0gPSBu
YWJvcjsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIC8qIENIRUNLIElGIFNVQlND
UklQVFMgRFVQTElDQVRFIFRIT1NFIE9GIEFOT1RIRVIgQ09MVU1OICovCisgICAgaWYgKGtueiA9
PSBsbWF4KSAKKyAgICAgIGdvdG8gTDE0MDA7CisKKyAgICAvKiBPUiBJRiBUQUlMIE9GIEstMVNU
IENPTFVNTiBNQVRDSEVTIEhFQUQgT0YgS1RIICovCisgICAgaWYgKG56YmVnID4gbnplbmQpIAor
ICAgICAgZ290byBMMTIwMDsKKworICAgIGkgPSByY2hsbmtba107CisgICAgZm9yIChqc3RydCA9
IG56YmVnOyBqc3RydCA8PSBuemVuZDsgKytqc3RydCkgeworICAgICAgaWYgKG56c3ViW2pzdHJ0
XSA8IGkpIAorICAgICAgICBjb250aW51ZTsKKworICAgICAgaWYgKG56c3ViW2pzdHJ0XSA9PSBp
KSAKKyAgICAgICAgZ290byBMMTAwMDsKKyAgICAgIGVsc2UgCisgICAgICAgIGdvdG8gTDEyMDA7
CisgICAgfQorICAgIGdvdG8gTDEyMDA7CisKK0wxMDAwOgorICAgIHhuenN1YltrXSA9IGpzdHJ0
OworICAgIGZvciAoaiA9IGpzdHJ0OyBqIDw9IG56ZW5kOyArK2opIHsKKyAgICAgIGlmIChuenN1
YltqXSAhPSBpKSAKKyAgICAgICAgZ290byBMMTIwMDsKKyAgICAgIAorICAgICAgaSA9IHJjaGxu
a1tpXTsKKyAgICAgIGlmIChpID4gbmVxbnMpIAorICAgICAgICBnb3RvIEwxNDAwOworICAgIH0K
KyAgICBuemVuZCA9IGpzdHJ0IC0gMTsKKworICAgIC8qIENPUFkgVEhFIFNUUlVDVFVSRSBPRiBM
KCosSykgRlJPTSBSQ0hMTksgVE8gVEhFIERBVEEgU1RSVUNUVVJFIChYTlpTVUIsIE5aU1VCKSAq
LworTDEyMDA6CisgICAgbnpiZWcgPSBuemVuZCArIDE7CisgICAgbnplbmQgKz0ga256OworCisg
ICAgaWYgKG56ZW5kID4gKm1heHN1YikgeworICAgICAgZmxhZyA9IDE7IC8qIE91dCBvZiBtZW1v
cnkgKi8KKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIGkgPSBrOworICAgIGZvciAoaj1uemJl
Zzsgajw9bnplbmQ7ICsraikgeworICAgICAgaSA9IHJjaGxua1tpXTsKKyAgICAgIG56c3ViW2pd
ID0gaTsKKyAgICAgIG1hcmtlcltpXSA9IGs7CisgICAgfQorICAgIHhuenN1YltrXSA9IG56YmVn
OworICAgIG1hcmtlcltrXSA9IGs7CisKKyAgICAvKgorICAgICAqIFVQREFURSBUSEUgVkVDVE9S
IE1SR0xOSy4gIE5PVEUgQ09MVU1OIEwoKixLKSBKVVNUIEZPVU5EICAgCisgICAgICogSVMgUkVR
VUlSRUQgVE8gREVURVJNSU5FIENPTFVNTiBMKCosSiksIFdIRVJFICAgICAgICAgICAgICAKKyAg
ICAgKiBMKEosSykgSVMgVEhFIEZJUlNUIE5PTlpFUk8gSU4gTCgqLEspIEJFTE9XIERJQUdPTkFM
LiAgICAgIAorICAgICAqLworTDE0MDA6CisgICAgaWYgKGtueiA+IDEpIHsgCisgICAgICBreHN1
YiA9IHhuenN1YltrXTsKKyAgICAgIGkgPSBuenN1YltreHN1Yl07CisgICAgICBtcmdsbmtba10g
PSBtcmdsbmtbaV07CisgICAgICBtcmdsbmtbaV0gPSBrOworICAgIH0KKworICAgIHhsbnpbayAr
IDFdID0geGxueltrXSArIGtuejsKKyAgfQorCisgIGlmIChmbGFnID09IDApIHsKKyAgICAqbWF4
bG56ID0geGxueltuZXFuc10gLSAxOworICAgICptYXhzdWIgPSB4bnpzdWJbbmVxbnNdOworICAg
IHhuenN1YltuZXFucyArIDFdID0geG56c3ViW25lcW5zXTsKKyAgfQorCisgIG1hcmtlcisrOwor
ICBtcmdsbmsrKzsKKyAgcmNobG5rKys7CisgIG56c3ViKys7CisgIHhuenN1YisrOworICB4bG56
Kys7CisgIGludnArKzsKKyAgcGVybSsrOworICBhZGpuY3krKzsKKyAgeGFkaisrOworICBna19m
cmVlKCh2b2lkICoqKSZyY2hsbmssICZtcmdsbmssICZtYXJrZXIsIExURVJNKTsKKworICByZXR1
cm4gZmxhZzsKKyAgCit9IAorCmRpZmYgLXVyTiBtZXRpcy01LjBwcmUyX29yaWcvcHJvZ3JhbXMv
TWFrZWZpbGUuYW0gbWV0aXMtNS4wcHJlMi9wcm9ncmFtcy9NYWtlZmlsZS5hbQotLS0gbWV0aXMt
NS4wcHJlMl9vcmlnL3Byb2dyYW1zL01ha2VmaWxlLmFtCTE5NjktMTItMzEgMTk6MDA6MDAuMDAw
MDAwMDAwIC0wNTAwCisrKyBtZXRpcy01LjBwcmUyL3Byb2dyYW1zL01ha2VmaWxlLmFtCTIwMDct
MDktMjAgMTA6NTQ6NTkuMDAwMDAwMDAwIC0wNDAwCkBAIC0wLDAgKzEsMjAgQEAKK0FNX0NGTEFH
UyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKS9HS2xpYi90cnVuayAt
RExJTlVYIC1EVU5JWCAtRF9GSUxFX09GRlNFVF9CSVRTPTY0CitBTV9MREZMQUdTID0gLUwkKHRv
cF9idWlsZGRpcikvbGlibWV0aXMgLWxtZXRpcworCitiaW5fUFJPR1JBTVMgPSBjbWV0aXMgZ3Jh
cGhjaGsga2ZtZXRpcyBrbWV0aXMgbWVzaDJkdWFsIG1lc2gybm9kYWwgbWV0aXMgXAorCW9lbWV0
aXMgb25tZXRpcyBwYXJ0ZG1lc2ggcGFydG5tZXNoIHBtZXRpcworCisjIERpZmZlcmluZyBmcm9t
IHVwc3RyZWFtLCBhIGxvdCBvZiB0aGVzZSBnZXQgc21iZmFjdG9yLmMgYXMgd2UgbmVlZAorIyBD
b21wdXRlRmlsbEluMiwgd2hpY2ggaXMgcmVmZXJlbmNlZCBpbiBwcm90by5oIDwtIG1ldGlzYmlu
LmgKK2NtZXRpc19TT1VSQ0VTID0gY21ldGlzLmMgaW8uYyBjbWRsaW5lX2NtZXRpcy5jIAorZ3Jh
cGhjaGtfU09VUkNFUyA9IGdyYXBoY2hrLmMgaW8uYyAKK2tmbWV0aXNfU09VUkNFUyA9IGtmbWV0
aXMuYyBpby5jIGNtZGxpbmVfa2ZtZXRpcy5jIAora21ldGlzX1NPVVJDRVMgPSBrbWV0aXMuYyBp
by5jIAorbWVzaDJkdWFsX1NPVVJDRVMgPSBtZXNoMmR1YWwuYyBpby5jIAorbWVzaDJub2RhbF9T
T1VSQ0VTID0gbWVzaDJub2RhbC5jIGlvLmMgCittZXRpc19TT1VSQ0VTID0gbWV0aXMuYyBpby5j
IAorb2VtZXRpc19TT1VSQ0VTID0gb2VtZXRpcy5jIGlvLmMgCitvbm1ldGlzX1NPVVJDRVMgPSBv
bm1ldGlzLmMgaW8uYyAKK3BhcnRkbWVzaF9TT1VSQ0VTID0gcGFydGRtZXNoLmMgaW8uYyAKK3Bh
cnRubWVzaF9TT1VSQ0VTID0gcGFydG5tZXNoLmMgaW8uYyAKK3BtZXRpc19TT1VSQ0VTID0gcG1l
dGlzLmMgaW8uYyBjbWRsaW5lX3BtZXRpcy5jIApkaWZmIC11ck4gbWV0aXMtNS4wcHJlMl9vcmln
L3Byb2dyYW1zL3NtYmZhY3Rvci5jIG1ldGlzLTUuMHByZTIvcHJvZ3JhbXMvc21iZmFjdG9yLmMK
LS0tIG1ldGlzLTUuMHByZTJfb3JpZy9wcm9ncmFtcy9zbWJmYWN0b3IuYwkyMDA3LTA0LTA2IDE5
OjUwOjI5LjAwMDAwMDAwMCAtMDQwMAorKysgbWV0aXMtNS4wcHJlMi9wcm9ncmFtcy9zbWJmYWN0
b3IuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMApAQCAtMSwzODUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAxOTk3LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIE1p
bm5lc290YQotICoKLSAqIHNtYmZhY3Rvci5jCi0gKgotICogVGhpcyBmaWxlIHBlcmZvcm1zIHRo
ZSBzeW1ib2xpYyBmYWN0b3JpemF0aW9uIG9mIGEgbWF0cml4Ci0gKgotICogU3RhcnRlZCA4LzEv
OTcKLSAqIEdlb3JnZQotICoKLSAqICRJZDogc21iZmFjdG9yLmMsdiAxLjIgMjAwMi8wOC8xMCAw
NjowMjo1NSBrYXJ5cGlzIEV4cCAkCi0gKgotICovCi0KLSNpbmNsdWRlIDxtZXRpc2Jpbi5oPgot
Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqCi0qIFRoaXMgZnVuY3Rpb24gc2V0cyB1cCBkYXRhIHN0cnVj
dHVyZXMgZm9yIGZpbGwtaW4gY29tcHV0YXRpb25zCi0qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXZvaWQg
Q29tcHV0ZUZpbGxJbihHcmFwaFR5cGUgKmdyYXBoLCBpZHh0eXBlICppcGVybSkKLXsKLSAgaWR4
dHlwZSBpLCBqLCBrLCBudnR4cywgbWF4bG56LCBtYXhzdWI7Ci0gIGlkeHR5cGUgKnhhZGosICph
ZGpuY3k7Ci0gIGlkeHR5cGUgKnBlcm0sICp4bG56LCAqeG56c3ViLCAqbnpzdWI7Ci0gIGRvdWJs
ZSBvcGM7Ci0KLS8qCi0gIG1wcmludGYoIlxuU3ltYm9saWMgZmFjdG9yaXphdGlvbi4uLiAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7Ci0qLwotCi0gIG52
dHhzID0gZ3JhcGgtPm52dHhzOwotICB4YWRqID0gZ3JhcGgtPnhhZGo7Ci0gIGFkam5jeSA9IGdy
YXBoLT5hZGpuY3k7Ci0KLSAgbWF4c3ViID0gNCp4YWRqW252dHhzXTsKLQotICAvKiBSZWxhYmVs
IHRoZSB2ZXJ0aWNlcyBzbyB0aGF0IGl0IHN0YXJ0cyBmcm9tIDEgKi8KLSAgayA9IHhhZGpbbnZ0
eHNdOwotICBmb3IgKGk9MDsgaTxrOyBpKyspCi0gICAgYWRqbmN5W2ldKys7Ci0gIGZvciAoaT0w
OyBpPG52dHhzKzE7IGkrKykKLSAgICB4YWRqW2ldKys7Ci0KLSAgLyogQWxsb2NhdGUgdGhlIHJl
cXVpcmVkIG1lbW9yeSAqLwotICBwZXJtID0gaWR4bWFsbG9jKG52dHhzKzEsICJDb21wdXRlRmls
bEluOiBwZXJtIik7Ci0gIHhsbnogPSBpZHhtYWxsb2MobnZ0eHMrMSwgIkNvbXB1dGVGaWxsSW46
IHhsbnoiKTsKLSAgeG56c3ViID0gaWR4bWFsbG9jKG52dHhzKzEsICJDb21wdXRlRmlsbEluOiB4
bnpzdWIiKTsKLSAgbnpzdWIgPSBpZHhtYWxsb2MobWF4c3ViLCAiQ29tcHV0ZUZpbGxJbjogbnpz
dWIiKTsKLQotICAvKiBDb25zdHJ1Y3QgcGVybSBmcm9tIGlwZXJtIGFuZCBjaGFuZ2UgdGhlIG51
bWJlcmluZyBvZiBpcGVybSAqLwotICBmb3IgKGk9MDsgaTxudnR4czsgaSsrKQotICAgIHBlcm1b
aXBlcm1baV1dID0gaTsKLSAgZm9yIChpPTA7IGk8bnZ0eHM7IGkrKykgewotICAgIGlwZXJtW2ld
Kys7Ci0gICAgcGVybVtpXSsrOwotICB9Ci0gIAotICAvKgotICAgKiBDYWxsIHNwYXJzcGFrIHJv
dXRpbmUuCi0gICAqLwotICBpZiAoc21iZmN0KG52dHhzLCB4YWRqLCBhZGpuY3ksIHBlcm0sIGlw
ZXJtLCB4bG56LCAmbWF4bG56LCB4bnpzdWIsIG56c3ViLCAmbWF4c3ViKSkgewotICAgIGdrX2Zy
ZWUoKHZvaWQgKiopJm56c3ViLCBMVEVSTSk7Ci0KLSAgICBtYXhzdWIgPSA0Km1heHN1YjsgCi0g
ICAgbnpzdWIgPSBpZHhtYWxsb2MobWF4c3ViLCAiQ29tcHV0ZUZpbGxJbjogbnpzdWIiKTsKLSAg
ICBpZiAoc21iZmN0KG52dHhzLCB4YWRqLCBhZGpuY3ksIHBlcm0sIGlwZXJtLCB4bG56LCAmbWF4
bG56LCB4bnpzdWIsIG56c3ViLCAmbWF4c3ViKSkgCi0gICAgICBlcnJleGl0KCJNQVhTVUIgaXMg
dG9vIHNtYWxsISIpOwotICB9Ci0KLSAgb3BjID0gMDsKLSAgZm9yIChpPTA7IGk8bnZ0eHM7IGkr
KykKLSAgICB4bG56W2ldLS07Ci0gIGZvciAoaT0wOyBpPG52dHhzOyBpKyspCi0gICAgb3BjICs9
ICh4bG56W2krMV0teGxueltpXSkqKHhsbnpbaSsxXS14bG56W2ldKSAtICh4bG56W2krMV0teGxu
eltpXSk7Ci0KLSAgbXByaW50ZigiICBOb256ZXJvczogJUQsIFx0T3BlcmF0aW9uIENvdW50OiAl
Ni40bGVcbiIsIG1heGxueiwgb3BjKTsKLQotCi0gIGdrX2ZyZWUoKHZvaWQgKiopJnBlcm0sICZ4
bG56LCAmeG56c3ViLCAmbnpzdWIsIExURVJNKTsKLQotCi0gIC8qIFJlbGFiZWwgdGhlIHZlcnRp
Y2VzIHNvIHRoYXQgaXQgc3RhcnRzIGZyb20gMCAqLwotICBmb3IgKGk9MDsgaTxudnR4czsgaSsr
KQotICAgIGlwZXJtW2ldLS07Ci0gIGZvciAoaT0wOyBpPG52dHhzKzE7IGkrKykKLSAgICB4YWRq
W2ldLS07Ci0gIGsgPSB4YWRqW252dHhzXTsKLSAgZm9yIChpPTA7IGk8azsgaSsrKQotICAgIGFk
am5jeVtpXS0tOwotCi19Ci0KLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiBUaGlzIGZ1bmN0aW9u
IHNldHMgdXAgZGF0YSBzdHJ1Y3R1cmVzIGZvciBmaWxsLWluIGNvbXB1dGF0aW9ucwotKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKiovCi1pZHh0eXBlIENvbXB1dGVGaWxsSW4yKEdyYXBoVHlwZSAqZ3JhcGgsIGlk
eHR5cGUgKmlwZXJtKQotewotICBpZHh0eXBlIGksIGosIGssIG52dHhzLCBtYXhsbnosIG1heHN1
YjsKLSAgaWR4dHlwZSAqeGFkaiwgKmFkam5jeTsKLSAgaWR4dHlwZSAqcGVybSwgKnhsbnosICp4
bnpzdWIsICpuenN1YjsKLSAgZG91YmxlIG9wYzsKLQotICBudnR4cyA9IGdyYXBoLT5udnR4czsK
LSAgeGFkaiA9IGdyYXBoLT54YWRqOwotICBhZGpuY3kgPSBncmFwaC0+YWRqbmN5OwotCi0gIG1h
eHN1YiA9IDQqeGFkaltudnR4c107Ci0KLSAgLyogUmVsYWJlbCB0aGUgdmVydGljZXMgc28gdGhh
dCBpdCBzdGFydHMgZnJvbSAxICovCi0gIGsgPSB4YWRqW252dHhzXTsKLSAgZm9yIChpPTA7IGk8
azsgaSsrKQotICAgIGFkam5jeVtpXSsrOwotICBmb3IgKGk9MDsgaTxudnR4cysxOyBpKyspCi0g
ICAgeGFkaltpXSsrOwotCi0gIC8qIEFsbG9jYXRlIHRoZSByZXF1aXJlZCBtZW1vcnkgKi8KLSAg
cGVybSA9IGlkeG1hbGxvYyhudnR4cysxLCAiQ29tcHV0ZUZpbGxJbjogcGVybSIpOwotICB4bG56
ID0gaWR4bWFsbG9jKG52dHhzKzEsICJDb21wdXRlRmlsbEluOiB4bG56Iik7Ci0gIHhuenN1YiA9
IGlkeG1hbGxvYyhudnR4cysxLCAiQ29tcHV0ZUZpbGxJbjogeG56c3ViIik7Ci0gIG56c3ViID0g
aWR4bWFsbG9jKG1heHN1YiwgIkNvbXB1dGVGaWxsSW46IG56c3ViIik7Ci0KLSAgLyogQ29uc3Ry
dWN0IHBlcm0gZnJvbSBpcGVybSBhbmQgY2hhbmdlIHRoZSBudW1iZXJpbmcgb2YgaXBlcm0gKi8K
LSAgZm9yIChpPTA7IGk8bnZ0eHM7IGkrKykKLSAgICBwZXJtW2lwZXJtW2ldXSA9IGk7Ci0gIGZv
ciAoaT0wOyBpPG52dHhzOyBpKyspIHsKLSAgICBpcGVybVtpXSsrOwotICAgIHBlcm1baV0rKzsK
LSAgfQotICAKLSAgLyoKLSAgICogQ2FsbCBzcGFyc3BhayByb3V0aW5lLgotICAgKi8KLSAgaWYg
KHNtYmZjdChudnR4cywgeGFkaiwgYWRqbmN5LCBwZXJtLCBpcGVybSwgeGxueiwgJm1heGxueiwg
eG56c3ViLCBuenN1YiwgJm1heHN1YikpIHsKLSAgICBna19mcmVlKCh2b2lkICoqKSZuenN1Yiwg
TFRFUk0pOwotCi0gICAgbWF4c3ViID0gNCptYXhzdWI7IAotICAgIG56c3ViID0gaWR4bWFsbG9j
KG1heHN1YiwgIkNvbXB1dGVGaWxsSW46IG56c3ViIik7Ci0gICAgaWYgKHNtYmZjdChudnR4cywg
eGFkaiwgYWRqbmN5LCBwZXJtLCBpcGVybSwgeGxueiwgJm1heGxueiwgeG56c3ViLCBuenN1Yiwg
Jm1heHN1YikpIAotICAgICAgZXJyZXhpdCgiTUFYU1VCIGlzIHRvbyBzbWFsbCEiKTsKLSAgfQot
Ci0gIG9wYyA9IDA7Ci0gIGZvciAoaT0wOyBpPG52dHhzOyBpKyspCi0gICAgeGxueltpXS0tOwot
ICBmb3IgKGk9MDsgaTxudnR4czsgaSsrKQotICAgIG9wYyArPSAoeGxueltpKzFdLXhsbnpbaV0p
Kih4bG56W2krMV0teGxueltpXSkgLSAoeGxueltpKzFdLXhsbnpbaV0pOwotCi0KLSAgZ2tfZnJl
ZSgodm9pZCAqKikmcGVybSwgJnhsbnosICZ4bnpzdWIsICZuenN1YiwgTFRFUk0pOwotCi0KLSAg
LyogUmVsYWJlbCB0aGUgdmVydGljZXMgc28gdGhhdCBpdCBzdGFydHMgZnJvbSAwICovCi0gIGZv
ciAoaT0wOyBpPG52dHhzOyBpKyspCi0gICAgaXBlcm1baV0tLTsKLSAgZm9yIChpPTA7IGk8bnZ0
eHMrMTsgaSsrKQotICAgIHhhZGpbaV0tLTsKLSAgayA9IHhhZGpbbnZ0eHNdOwotICBmb3IgKGk9
MDsgaTxrOyBpKyspCi0gICAgYWRqbmN5W2ldLS07Ci0KLSAgcmV0dXJuIG1heGxuejsKLQotfQot
Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKiAgICAgICAgICAKLSoqKioqKioqKiogICAgIFNNQkZDVCAuLi4uLiBTWU1C
T0xJQyBGQUNUT1JJWkFUSU9OICAgICAgICoqKioqKioqKiAKLSoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgICAgICAgICAK
LSogICBQVVJQT1NFIC0gVEhJUyBST1VUSU5FIFBFUkZPUk1TIFNZTUJPTElDIEZBQ1RPUklaQVRJ
T04gICAgICAgICAgICAgICAKLSogICBPTiBBIFBFUk1VVEVEIExJTkVBUiBTWVNURU0gQU5EIElU
IEFMU08gU0VUUyBVUCBUSEUgICAgICAgICAgICAgICAKLSogICBDT01QUkVTU0VEIERBVEEgU1RS
VUNUVVJFIEZPUiBUSEUgU1lTVEVNLiAgICAgICAgICAgICAgICAgICAgICAgICAKLSoKLSogICBJ
TlBVVCBQQVJBTUVURVJTIC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAotKiAgICAgIE5FUU5TIC0gTlVNQkVSIE9GIEVRVUFUSU9OUy4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKLSogICAgICAoWEFESiwgQURKTkNZKSAtIFRIRSBBREpBQ0VO
Q1kgU1RSVUNUVVJFLiAgICAgICAgICAgICAgICAgICAKLSogICAgICAoUEVSTSwgSU5WUCkgLSBU
SEUgUEVSTVVUQVRJT04gVkVDVE9SIEFORCBJVFMgSU5WRVJTRS4gICAgIAotKgotKiAgIFVQREFU
RUQgUEFSQU1FVEVSUyAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
LSogICAgICBNQVhTVUIgLSBTSVpFIE9GIFRIRSBTVUJTQ1JJUFQgQVJSQVkgTlpTVUIuICBPTiBS
RVRVUk4sICAKLSogICAgICAgICAgICAgSVQgQ09OVEFJTlMgVEhFIE5VTUJFUiBPRiBTVUJTQ1JJ
UFRTIFVTRUQgICAgICAgIAotKgotKiAgIE9VVFBVVCBQQVJBTUVURVJTIC0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKLSogICAgICBYTE5aIC0gSU5ERVggSU5UTyBUSEUg
Tk9OWkVSTyBTVE9SQUdFIFZFQ1RPUiBMTlouICAgCi0qICAgICAgKFhOWlNVQiwgTlpTVUIpIC0g
VEhFIENPTVBSRVNTRUQgU1VCU0NSSVBUIFZFQ1RPUlMuIAotKiAgICAgIE1BWExOWiAtIFRIRSBO
VU1CRVIgT0YgTk9OWkVST1MgRk9VTkQuICAgICAgICAgICAgIAotKgotKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLWlk
eHR5cGUgc21iZmN0KGlkeHR5cGUgbmVxbnMsIGlkeHR5cGUgKnhhZGosIGlkeHR5cGUgKmFkam5j
eSwgaWR4dHlwZSAqcGVybSwgaWR4dHlwZSAqaW52cCwgCi0JICAgICAgIGlkeHR5cGUgKnhsbnos
IGlkeHR5cGUgKm1heGxueiwgaWR4dHlwZSAqeG56c3ViLCBpZHh0eXBlICpuenN1YiwgaWR4dHlw
ZSAqbWF4c3ViKQotewotICAvKiBMb2NhbCB2YXJpYWJsZXMgKi8KLSAgaWR4dHlwZSBub2RlLCBy
Y2htLCBtcmdrLCBsbWF4LCBpLCBqLCBrLCBtLCBuYWJvciwgbnpiZWcsIG56ZW5kOwotICBpZHh0
eXBlIGt4c3ViLCBqc3RvcCwganN0cnQsIG1ya2ZsZywgaW56LCBrbnosIGZsYWc7Ci0gIGlkeHR5
cGUgKm1yZ2xuaywgKm1hcmtlciwgKnJjaGxuazsKLQotICByY2hsbmsgPSBpZHhtYWxsb2MobmVx
bnMrMSwgInNtYmZjdDogcmNobG5rIik7Ci0gIG1hcmtlciA9IGlkeHNtYWxsb2MobmVxbnMrMSwg
MCwgInNtYmZjdDogbWFya2VyIik7Ci0gIG1yZ2xuayA9IGlkeHNtYWxsb2MobmVxbnMrMSwgMCwg
InNtYmZjdDogbWdybG5rIik7Ci0KLSAgLyogUGFyYW1ldGVyIGFkanVzdG1lbnRzICovCi0gIC0t
bWFya2VyOwotICAtLW1yZ2xuazsKLSAgLS1yY2hsbms7Ci0gIC0tbnpzdWI7Ci0gIC0teG56c3Vi
OwotICAtLXhsbno7Ci0gIC0taW52cDsKLSAgLS1wZXJtOwotICAtLWFkam5jeTsKLSAgLS14YWRq
OwotCi0gIC8qIEZ1bmN0aW9uIEJvZHkgKi8KLSAgZmxhZyA9IDA7Ci0gIG56YmVnID0gMTsKLSAg
bnplbmQgPSAwOwotICB4bG56WzFdID0gMTsKLQotICAvKiBGT1IgRUFDSCBDT0xVTU4gS05aIENP
VU5UUyBUSEUgTlVNQkVSIE9GIE5PTlpFUk9TIElOIENPTFVNTiBLIEFDQ1VNVUxBVEVEIElOIFJD
SExOSy4gKi8KLSAgZm9yIChrID0gMTsgayA8PSBuZXFuczsgKytrKSB7Ci0gICAga256ID0gMDsK
LSAgICBtcmdrID0gbXJnbG5rW2tdOwotICAgIG1ya2ZsZyA9IDA7Ci0gICAgbWFya2VyW2tdID0g
azsKLSAgICBpZiAobXJnayAhPSAwKSAKLSAgICAgIG1hcmtlcltrXSA9IG1hcmtlclttcmdrXTsK
LSAgICB4bnpzdWJba10gPSBuemVuZDsKLSAgICBub2RlID0gcGVybVtrXTsKLQotICAgIGlmICh4
YWRqW25vZGVdID49IHhhZGpbbm9kZSsxXSkgewotICAgICAgeGxueltrKzFdID0geGxueltrXTsK
LSAgICAgIGNvbnRpbnVlOwotICAgIH0KLQotICAgIC8qIFVTRSBSQ0hMTksgVE8gTElOSyBUSFJP
VUdIIFRIRSBTVFJVQ1RVUkUgT0YgQSgqLEspIEJFTE9XIERJQUdPTkFMICovCi0gICAgcmNobG5r
W2tdID0gbmVxbnMrMTsKLSAgICBmb3IgKGo9eGFkaltub2RlXTsgajx4YWRqW25vZGUrMV07IGor
KykgewotICAgICAgbmFib3IgPSBpbnZwW2Fkam5jeVtqXV07Ci0gICAgICBpZiAobmFib3IgPD0g
aykgCi0gICAgICAgIGNvbnRpbnVlOwotICAgICAgcmNobSA9IGs7Ci0KLSAgICAgIGRvIHsKLSAg
ICAgICAgbSA9IHJjaG07Ci0gICAgICAgIHJjaG0gPSByY2hsbmtbbV07Ci0gICAgICB9IHdoaWxl
IChyY2htIDw9IG5hYm9yKTsgCi0KLSAgICAgIGtueisrOwotICAgICAgcmNobG5rW21dID0gbmFi
b3I7Ci0gICAgICByY2hsbmtbbmFib3JdID0gcmNobTsKLSAgICAgIGlmIChtYXJrZXJbbmFib3Jd
ICE9IG1hcmtlcltrXSkgCi0gICAgICAgIG1ya2ZsZyA9IDE7Ci0gICAgfQotCi0gICAgLyogVEVT
VCBGT1IgTUFTUyBTWU1CT0xJQyBFTElNSU5BVElPTiAqLwotICAgIGxtYXggPSAwOwotICAgIGlm
IChtcmtmbGcgIT0gMCB8fCBtcmdrID09IDAgfHwgbXJnbG5rW21yZ2tdICE9IDApIAotICAgICAg
Z290byBMMzUwOwotICAgIHhuenN1YltrXSA9IHhuenN1YlttcmdrXSArIDE7Ci0gICAga256ID0g
eGxuelttcmdrICsgMV0gLSAoeGxuelttcmdrXSArIDEpOwotICAgIGdvdG8gTDE0MDA7Ci0KLQot
ICAgIC8qIExJTksgVEhST1VHSCBFQUNIIENPTFVNTiBJIFRIQVQgQUZGRUNUUyBMKCosSykgKi8K
LUwzNTA6Ci0gICAgaSA9IGs7Ci0gICAgd2hpbGUgKChpID0gbXJnbG5rW2ldKSAhPSAwKSB7Ci0g
ICAgICBpbnogPSB4bG56W2krMV0gLSAoeGxueltpXSsxKTsKLSAgICAgIGpzdHJ0ID0geG56c3Vi
W2ldICsgMTsKLSAgICAgIGpzdG9wID0geG56c3ViW2ldICsgaW56OwotCi0gICAgICBpZiAoaW56
ID4gbG1heCkgeyAKLSAgICAgICAgbG1heCA9IGluejsKLSAgICAgICAgeG56c3ViW2tdID0ganN0
cnQ7Ci0gICAgICB9Ci0KLSAgICAgIC8qIE1FUkdFIFNUUlVDVFVSRSBPRiBMKCosSSkgSU4gTlpT
VUIgSU5UTyBSQ0hMTksuICovIAotICAgICAgcmNobSA9IGs7Ci0gICAgICBmb3IgKGogPSBqc3Ry
dDsgaiA8PSBqc3RvcDsgKytqKSB7Ci0gICAgICAgIG5hYm9yID0gbnpzdWJbal07Ci0gICAgICAg
IGRvIHsKLSAgICAgICAgICBtID0gcmNobTsKLSAgICAgICAgICByY2htID0gcmNobG5rW21dOwot
ICAgICAgICB9IHdoaWxlIChyY2htIDwgbmFib3IpOwotCi0gICAgICAgIGlmIChyY2htICE9IG5h
Ym9yKSB7Ci0gICAgICAgICAga256Kys7Ci0gICAgICAgICAgcmNobG5rW21dID0gbmFib3I7Ci0g
ICAgICAgICAgcmNobG5rW25hYm9yXSA9IHJjaG07Ci0gICAgICAgICAgcmNobSA9IG5hYm9yOwot
ICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLyogQ0hFQ0sgSUYgU1VCU0NSSVBUUyBE
VVBMSUNBVEUgVEhPU0UgT0YgQU5PVEhFUiBDT0xVTU4gKi8KLSAgICBpZiAoa256ID09IGxtYXgp
IAotICAgICAgZ290byBMMTQwMDsKLQotICAgIC8qIE9SIElGIFRBSUwgT0YgSy0xU1QgQ09MVU1O
IE1BVENIRVMgSEVBRCBPRiBLVEggKi8KLSAgICBpZiAobnpiZWcgPiBuemVuZCkgCi0gICAgICBn
b3RvIEwxMjAwOwotCi0gICAgaSA9IHJjaGxua1trXTsKLSAgICBmb3IgKGpzdHJ0ID0gbnpiZWc7
IGpzdHJ0IDw9IG56ZW5kOyArK2pzdHJ0KSB7Ci0gICAgICBpZiAobnpzdWJbanN0cnRdIDwgaSkg
Ci0gICAgICAgIGNvbnRpbnVlOwotCi0gICAgICBpZiAobnpzdWJbanN0cnRdID09IGkpIAotICAg
ICAgICBnb3RvIEwxMDAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZ290byBMMTIwMDsKLSAgICB9
Ci0gICAgZ290byBMMTIwMDsKLQotTDEwMDA6Ci0gICAgeG56c3ViW2tdID0ganN0cnQ7Ci0gICAg
Zm9yIChqID0ganN0cnQ7IGogPD0gbnplbmQ7ICsraikgewotICAgICAgaWYgKG56c3ViW2pdICE9
IGkpIAotICAgICAgICBnb3RvIEwxMjAwOwotICAgICAgCi0gICAgICBpID0gcmNobG5rW2ldOwot
ICAgICAgaWYgKGkgPiBuZXFucykgCi0gICAgICAgIGdvdG8gTDE0MDA7Ci0gICAgfQotICAgIG56
ZW5kID0ganN0cnQgLSAxOwotCi0gICAgLyogQ09QWSBUSEUgU1RSVUNUVVJFIE9GIEwoKixLKSBG
Uk9NIFJDSExOSyBUTyBUSEUgREFUQSBTVFJVQ1RVUkUgKFhOWlNVQiwgTlpTVUIpICovCi1MMTIw
MDoKLSAgICBuemJlZyA9IG56ZW5kICsgMTsKLSAgICBuemVuZCArPSBrbno7Ci0KLSAgICBpZiAo
bnplbmQgPiAqbWF4c3ViKSB7Ci0gICAgICBmbGFnID0gMTsgLyogT3V0IG9mIG1lbW9yeSAqLwot
ICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaSA9IGs7Ci0gICAgZm9yIChqPW56YmVnOyBqPD1u
emVuZDsgKytqKSB7Ci0gICAgICBpID0gcmNobG5rW2ldOwotICAgICAgbnpzdWJbal0gPSBpOwot
ICAgICAgbWFya2VyW2ldID0gazsKLSAgICB9Ci0gICAgeG56c3ViW2tdID0gbnpiZWc7Ci0gICAg
bWFya2VyW2tdID0gazsKLQotICAgIC8qCi0gICAgICogVVBEQVRFIFRIRSBWRUNUT1IgTVJHTE5L
LiAgTk9URSBDT0xVTU4gTCgqLEspIEpVU1QgRk9VTkQgICAKLSAgICAgKiBJUyBSRVFVSVJFRCBU
TyBERVRFUk1JTkUgQ09MVU1OIEwoKixKKSwgV0hFUkUgICAgICAgICAgICAgIAotICAgICAqIEwo
SixLKSBJUyBUSEUgRklSU1QgTk9OWkVSTyBJTiBMKCosSykgQkVMT1cgRElBR09OQUwuICAgICAg
Ci0gICAgICovCi1MMTQwMDoKLSAgICBpZiAoa256ID4gMSkgeyAKLSAgICAgIGt4c3ViID0geG56
c3ViW2tdOwotICAgICAgaSA9IG56c3ViW2t4c3ViXTsKLSAgICAgIG1yZ2xua1trXSA9IG1yZ2xu
a1tpXTsKLSAgICAgIG1yZ2xua1tpXSA9IGs7Ci0gICAgfQotCi0gICAgeGxueltrICsgMV0gPSB4
bG56W2tdICsga256OwotICB9Ci0KLSAgaWYgKGZsYWcgPT0gMCkgewotICAgICptYXhsbnogPSB4
bG56W25lcW5zXSAtIDE7Ci0gICAgKm1heHN1YiA9IHhuenN1YltuZXFuc107Ci0gICAgeG56c3Vi
W25lcW5zICsgMV0gPSB4bnpzdWJbbmVxbnNdOwotICB9Ci0KLSAgbWFya2VyKys7Ci0gIG1yZ2xu
aysrOwotICByY2hsbmsrKzsKLSAgbnpzdWIrKzsKLSAgeG56c3ViKys7Ci0gIHhsbnorKzsKLSAg
aW52cCsrOwotICBwZXJtKys7Ci0gIGFkam5jeSsrOwotICB4YWRqKys7Ci0gIGdrX2ZyZWUoKHZv
aWQgKiopJnJjaGxuaywgJm1yZ2xuaywgJm1hcmtlciwgTFRFUk0pOwotCi0gIHJldHVybiBmbGFn
OwotICAKLX0gCi0KZGlmZiAtdXJOIG1ldGlzLTUuMHByZTJfb3JpZy90ZXN0L01ha2VmaWxlLmFt
IG1ldGlzLTUuMHByZTIvdGVzdC9NYWtlZmlsZS5hbQotLS0gbWV0aXMtNS4wcHJlMl9vcmlnL3Rl
c3QvTWFrZWZpbGUuYW0JMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKKysrIG1l
dGlzLTUuMHByZTIvdGVzdC9NYWtlZmlsZS5hbQkyMDA3LTA5LTIwIDEwOjU0OjU5LjAwMDAwMDAw
MCAtMDQwMApAQCAtMCwwICsxLDYgQEAKK0FNX0NGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNs
dWRlIC1JJCh0b3Bfc3JjZGlyKS9HS2xpYi90cnVuayAtRExJTlVYIC1EVU5JWCAtRF9GSUxFX09G
RlNFVF9CSVRTPTY0CitBTV9MREZMQUdTID0gLUwkKHRvcF9idWlsZGRpcikgLWxtZXRpcworCitj
aGVja19QUk9HUkFNUyA9IG10ZXN0CittdGVzdF9TT1VSQ0VTID0gbXRlc3QuYworCg==
</data>        

          </attachment>
    </bug>

</bugzilla>