<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>42389</bug_id>
          
          <creation_ts>2010-07-15 11:29:17 -0700</creation_ts>
          <short_desc>Add leakRef and clear to all RefPtr variants</short_desc>
          <delta_ts>2010-08-11 00:08:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>abarth</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>252009</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-15 11:29:17 -0700</bug_when>
    <thetext>Add leakRef and clear to all RefPtr variants</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252023</commentid>
    <comment_count>1</comment_count>
      <attachid>61697</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-15 11:49:03 -0700</bug_when>
    <thetext>Created attachment 61697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252278</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-15 19:07:40 -0700</bug_when>
    <thetext>Attachment 61697 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3401449</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261635</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-06 20:10:32 -0700</bug_when>
    <thetext>Darin, did you want to land this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261946</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-08 17:41:49 -0700</bug_when>
    <thetext>Yes, I am planning to and have not had time to yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261950</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-08 18:28:03 -0700</bug_when>
    <thetext>I&apos;d be happy to do it for you if you&apos;d rather spend that time reviewing patches.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261969</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-08 21:40:14 -0700</bug_when>
    <thetext>If you want to land it, that would be fine with me. But there may be merging necessary due to changes related to WARN_UNUSED_RETURN.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263060</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-10 23:17:18 -0700</bug_when>
    <thetext>I have a merged version locally.  Attempting to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263079</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-11 00:08:41 -0700</bug_when>
    <thetext>Committed r65130: &lt;http://trac.webkit.org/changeset/65130&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61697</attachid>
            <date>2010-07-15 11:49:03 -0700</date>
            <delta_ts>2010-07-15 22:16:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42389-20100715114902.patch</filename>
            <type>text/plain</type>
            <size>40280</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzNDM5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTAtMDctMTUgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBsZWFrUmVmIGFuZCBjbGVhciB0byBhbGwgUmVmUHRyIHZhcmlh
bnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjM4
OQorCisgICAgICAgICogQVBJL0pTUmV0YWluUHRyLmg6IENoYW5nZWQgYWxsIHVzZXMgb2YgInRl
bXBsYXRlIDwuLi4+IiB0byBpbnN0ZWFkIGRvCisgICAgICAgICJ0ZW1wbGF0ZTwuLi4+Ii4gV2Ug
c2hvdWxkIHByb2JhYmx5IHB1dCB0aGlzIGluIHRoZSBzdHlsZSBndWlkZSBhbmQgZG8gaXQKKyAg
ICAgICAgY29uc2l0ZW50bHkuIEZpeGVkIG90aGVyIG1pbm9yIHN0eWxlIGlzc3Vlcy4gRGVmaW5l
ZCBtYW55IG9mIHRoZSBpbmxpbmVkCisgICAgICAgIGZ1bmN0aW9ucyBvdXRzaWRlIHRoZSBjbGFz
cyBkZWZpbml0aW9uLCB0byBhdm9pZCBzdHlsZSBjaGVja2VyIHdhcm5pbmdzCisgICAgICAgIGFi
b3V0IG11bHRpcGxlIHN0YXRlbWVudHMgb24gYSBzaW5nbGUgbGluZSBhbmQgZm9yIHNsaWdodGx5
IGJldHRlciBjbGFyaXR5CisgICAgICAgIG9mIHRoZSBjbGFzcyBkZWZpbml0aW9uIGl0c2VsZi4g
UmVuYW1lZCByZWxlYXNlUmVmIHRvIGxlYWtSZWYuIEFkZGVkIGEKKyAgICAgICAgcmVsZWFzZVJl
ZiB0aGF0IGNhbGxzIGxlYWtSZWYgc28gd2UgZG9uJ3QgaGF2ZSB0byByZW5hbWUgYWxsIGNhbGxl
cnMgb2F0CisgICAgICAgIG9uY2UuIEFkZGVkIGEgY2xlYXIgZnVuY3Rpb24uCisKKyAgICAgICAg
KiB3dGYvUGFzc1JlZlB0ci5oOiBDaGFuZ2VkIGFsbCB1c2VzIG9mIHJlbGVhc2VSZWYgdG8gbGVh
a1JlZi4KKworICAgICAgICAqIHd0Zi9SZWZQdHIuaDogQ2hhbmdlZCBhbGwgdXNlcyBvZiAidGVt
cGxhdGUgPC4uLj4iIHRvIGluc3RlYWQgZG8KKyAgICAgICAgInRlbXBsYXRlPC4uLj4iLiBUaWRp
ZWQgdXAgZGVjbGFyYXRpb25zIGFuZCBjb21tZW50cyBhIGJpdC4KKyAgICAgICAgIENoYW5nZWQg
YWxsIHVzZXMgb2YgcmVsZWFzZVJlZiB0byBsZWFrUmVmLgorCisgICAgICAgICogd3RmL1JldGFp
blB0ci5oOiBDaGFuZ2VkIGFsbCB1c2VzIG9mICJ0ZW1wbGF0ZSA8Li4uPiIgdG8gaW5zdGVhZCBk
bworICAgICAgICAidGVtcGxhdGU8Li4uPiIuIERlZmluZWQgbWFueSBvZiB0aGUgaW5saW5lZCBm
dW5jdGlvbnMgb3V0c2lkZSB0aGUgY2xhc3MKKyAgICAgICAgZGVmaW5pdGlvbiwgdG8gYXZvaWQg
c3R5bGUgY2hlY2tlciB3YXJuaW5ncyBhYm91dCBtdWx0aXBsZSBzdGF0ZW1lbnRzIG9uCisgICAg
ICAgIGEgc2luZ2xlIGxpbmUgYW5kIGZvciBzbGlnaHRseSBiZXR0ZXIgY2xhcml0eSBvZiB0aGUg
Y2xhc3MgZGVmaW5pdGlvbiBpdHNlbGYuCisgICAgICAgIFJlbmFtZWQgcmVsZWFzZVJlZiB0byBs
ZWFrUmVmLiBBZGRlZCBhIHJlbGVhc2VSZWYgdGhhdCBjYWxscyBsZWFrUmVmIHNvIHdlCisgICAg
ICAgIGRvbid0IGhhdmUgdG8gcmVuYW1lIGFsbCBjYWxsZXJzIGF0IG9uY2UuIEFkZGVkIGEgY2xl
YXIgZnVuY3Rpb24uCisKIDIwMTAtMDctMTUgIFpvbHRhbiBIZXJjemVnICA8emhlcmN6ZWdAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL0FQSS9KU1JldGFpblB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L0FQSS9KU1JldGFpblB0ci5oCShyZXZpc2lvbiA2MzQyOSkKKysrIEphdmFTY3JpcHRDb3JlL0FQ
SS9KU1JldGFpblB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
NywyMyArMzcsMjAgQEAgaW5saW5lIHZvaWQgSlNSZWxlYXNlKEpTU3RyaW5nUmVmIHN0cmluZwog
CiBlbnVtIEFkb3B0VGFnIHsgQWRvcHQgfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNz
IEpTUmV0YWluUHRyIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIEpTUmV0YWluUHRyIHsK
IHB1YmxpYzoKLSAgICBKU1JldGFpblB0cigpIDogbV9wdHIoMCkge30KKyAgICBKU1JldGFpblB0
cigpIDogbV9wdHIoMCkgeyB9CiAgICAgSlNSZXRhaW5QdHIoVCBwdHIpIDogbV9wdHIocHRyKSB7
IGlmIChwdHIpIEpTUmV0YWluKHB0cik7IH0KLQogICAgIEpTUmV0YWluUHRyKEFkb3B0VGFnLCBU
IHB0cikgOiBtX3B0cihwdHIpIHsgfQotICAgIAotICAgIEpTUmV0YWluUHRyKGNvbnN0IEpTUmV0
YWluUHRyJiBvKSA6IG1fcHRyKG8ubV9wdHIpIHsgaWYgKFQgcHRyID0gbV9wdHIpIEpTUmV0YWlu
KHB0cik7IH0KLQotICAgIH5KU1JldGFpblB0cigpIHsgaWYgKFQgcHRyID0gbV9wdHIpIEpTUmVs
ZWFzZShwdHIpOyB9Ci0gICAgCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IEpTUmV0YWluUHRy
KGNvbnN0IEpTUmV0YWluUHRyPFU+JiBvKSA6IG1fcHRyKG8uZ2V0KCkpIHsgaWYgKFQgcHRyID0g
bV9wdHIpIEpTUmV0YWluKHB0cik7IH0KKyAgICBKU1JldGFpblB0cihjb25zdCBKU1JldGFpblB0
ciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IEpTUmV0YWluUHRyKGNvbnN0IEpTUmV0YWlu
UHRyPFU+Jik7CisgICAgfkpTUmV0YWluUHRyKCk7CiAgICAgCiAgICAgVCBnZXQoKSBjb25zdCB7
IHJldHVybiBtX3B0cjsgfQogICAgIAotICAgIFQgcmVsZWFzZVJlZigpIHsgVCB0bXAgPSBtX3B0
cjsgbV9wdHIgPSAwOyByZXR1cm4gdG1wOyB9Ci0gICAgCisgICAgdm9pZCBjbGVhcigpOworICAg
IFQgbGVha1JlZigpOworCiAgICAgVCBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7
IH0KICAgICAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQpA
QCAtNjMsMTkgKzYwLDU3IEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPyAmSlNSZXRhaW5QdHI6Om1fcHRyIDogMDsgfQog
ICAgIAogICAgIEpTUmV0YWluUHRyJiBvcGVyYXRvcj0oY29uc3QgSlNSZXRhaW5QdHImKTsKLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gSlNSZXRhaW5QdHImIG9wZXJhdG9yPShjb25zdCBKU1Jl
dGFpblB0cjxVPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IEpTUmV0YWluUHRyJiBvcGVy
YXRvcj0oY29uc3QgSlNSZXRhaW5QdHI8VT4mKTsKICAgICBKU1JldGFpblB0ciYgb3BlcmF0b3I9
KFQpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBKU1JldGFpblB0ciYgb3BlcmF0b3I9KFUq
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBKU1JldGFpblB0ciYgb3BlcmF0b3I9KFUqKTsK
IAogICAgIHZvaWQgYWRvcHQoVCk7CiAgICAgCiAgICAgdm9pZCBzd2FwKEpTUmV0YWluUHRyJik7
CiAKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHJlbGVhc2VSZWYgb25jZSB3ZSBjaGFuZ2UgYWxsIGNh
bGxlcnMgdG8gY2FsbCBsZWFrUmVmIGluc3RlYWQuCisgICAgVCByZWxlYXNlUmVmKCkgeyByZXR1
cm4gbGVha1JlZigpOyB9CisKIHByaXZhdGU6CiAgICAgVCBtX3B0cjsKIH07CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBpbmxpbmUgSlNSZXRhaW5QdHI8VD4mIEpTUmV0YWluUHRyPFQ+OjpvcGVy
YXRvcj0oY29uc3QgSlNSZXRhaW5QdHI8VD4mIG8pCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgSlNSZXRhaW5QdHI8VD46OkpTUmV0YWluUHRyKGNvbnN0IEpTUmV0YWluUHRyJiBvKQorICAg
IDogbV9wdHIoby5tX3B0cikKK3sKKyAgICBpZiAobV9wdHIpCisgICAgICAgIEpTUmV0YWluKG1f
cHRyKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5s
aW5lIEpTUmV0YWluUHRyPFQ+OjpKU1JldGFpblB0cihjb25zdCBKU1JldGFpblB0cjxVPiYgbykK
KyAgICA6IG1fcHRyKG8uZ2V0KCkpCit7CisgICAgaWYgKG1fcHRyKQorICAgICAgICBKU1JldGFp
bihtX3B0cik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU1JldGFpblB0cjxU
Pjo6fkpTUmV0YWluUHRyKCkKK3sKKyAgICBpZiAobV9wdHIpCisgICAgICAgIEpTUmVsZWFzZSht
X3B0cik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIEpTUmV0YWluUHRy
PFQ+OjpjbGVhcigpCit7CisgICAgaWYgKFQgcHRyID0gbV9wdHIpIHsKKyAgICAgICAgbV9wdHIg
PSAwOworICAgICAgICBKU1JlbGVhc2UocHRyKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBUIEpTUmV0YWluUHRyPFQ+OjpsZWFrUmVmKCkKK3sKKyAgICBUIHB0ciA9
IG1fcHRyOworICAgIG1fcHRyID0gMDsKKyAgICByZXR1cm4gcHRyOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBpbmxpbmUgSlNSZXRhaW5QdHI8VD4mIEpTUmV0YWluUHRyPFQ+OjpvcGVyYXRv
cj0oY29uc3QgSlNSZXRhaW5QdHI8VD4mIG8pCiB7CiAgICAgVCBvcHRyID0gby5nZXQoKTsKICAg
ICBpZiAob3B0cikKQEAgLTg3LDcgKzEyMiw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxp
bmUgSlNSZXRhaW5QdHIKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gaW5saW5lIEpTUmV0YWluUHRyPFQ+JiBKU1JldGFp
blB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IEpTUmV0YWluUHRyPFU+JiBvKQordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5lIEpTUmV0YWluUHRyPFQ+JiBKU1Jl
dGFpblB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IEpTUmV0YWluUHRyPFU+JiBvKQogewogICAgIFQg
b3B0ciA9IG8uZ2V0KCk7CiAgICAgaWYgKG9wdHIpCkBAIC05OSw3ICsxMzQsNyBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUgPHR5cGVuYW1lCiAgICAgcmV0dXJuICp0aGlzOwogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIEpTUmV0YWluUHRyPFQ+JiBKU1JldGFpblB0
cjxUPjo6b3BlcmF0b3I9KFQgb3B0cikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU1Jl
dGFpblB0cjxUPiYgSlNSZXRhaW5QdHI8VD46Om9wZXJhdG9yPShUIG9wdHIpCiB7CiAgICAgaWYg
KG9wdHIpCiAgICAgICAgIEpTUmV0YWluKG9wdHIpOwpAQCAtMTEwLDcgKzE0NSw3IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgSlNSZXRhaW5QdHIKICAgICByZXR1cm4gKnRoaXM7CiB9
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBKU1JldGFpblB0cjxUPjo6YWRv
cHQoVCBvcHRyKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgSlNSZXRhaW5QdHI8
VD46OmFkb3B0KFQgb3B0cikKIHsKICAgICBUIHB0ciA9IG1fcHRyOwogICAgIG1fcHRyID0gb3B0
cjsKQEAgLTExOCw3ICsxNTMsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQg
SlNSZXRhCiAgICAgICAgIEpTUmVsZWFzZShwdHIpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gdGVtcGxhdGUgPHR5cGVuYW1lIFU+IGlubGluZSBKU1JldGFpblB0cjxUPiYgSlNSZXRhaW5Q
dHI8VD46Om9wZXJhdG9yPShVKiBvcHRyKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8
dHlwZW5hbWUgVT4gaW5saW5lIEpTUmV0YWluUHRyPFQ+JiBKU1JldGFpblB0cjxUPjo6b3BlcmF0
b3I9KFUqIG9wdHIpCiB7CiAgICAgaWYgKG9wdHIpCiAgICAgICAgIEpTUmV0YWluKG9wdHIpOwpA
QCAtMTI5LDQyICsxNjQsNDIgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHRlbXBsYXRlIDx0eXBl
bmFtZQogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSB2
b2lkIEpTUmV0YWluUHRyPFQ+Ojpzd2FwKEpTUmV0YWluUHRyPFQ+JiBvKQordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gaW5saW5lIHZvaWQgSlNSZXRhaW5QdHI8VD46OnN3YXAoSlNSZXRhaW5QdHI8VD4m
IG8pCiB7CiAgICAgc3RkOjpzd2FwKG1fcHRyLCBvLm1fcHRyKTsKIH0KIAotdGVtcGxhdGUgPGNs
YXNzIFQ+IGlubGluZSB2b2lkIHN3YXAoSlNSZXRhaW5QdHI8VD4mIGEsIEpTUmV0YWluUHRyPFQ+
JiBiKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgc3dhcChKU1JldGFpblB0cjxU
PiYgYSwgSlNSZXRhaW5QdHI8VD4mIGIpCiB7CiAgICAgYS5zd2FwKGIpOwogfQogCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBK
U1JldGFpblB0cjxUPiYgYSwgY29uc3QgSlNSZXRhaW5QdHI8VT4mIGIpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEpTUmV0YWlu
UHRyPFQ+JiBhLCBjb25zdCBKU1JldGFpblB0cjxVPiYgYikKIHsgCiAgICAgcmV0dXJuIGEuZ2V0
KCkgPT0gYi5nZXQoKTsgCiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEpTUmV0YWluUHRyPFQ+JiBhLCBVKiBiKQordGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBKU1JldGFpblB0cjxUPiYgYSwgVSogYikKIHsgCiAgICAgcmV0dXJuIGEuZ2V0KCkgPT0gYjsg
CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KFQqIGEsIGNvbnN0IEpTUmV0YWluUHRyPFU+JiBiKSAKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oVCogYSwgY29uc3QgSlNSZXRh
aW5QdHI8VT4mIGIpIAogewogICAgIHJldHVybiBhID09IGIuZ2V0KCk7IAogfQogCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBK
U1JldGFpblB0cjxUPiYgYSwgY29uc3QgSlNSZXRhaW5QdHI8VT4mIGIpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEpTUmV0YWlu
UHRyPFQ+JiBhLCBjb25zdCBKU1JldGFpblB0cjxVPiYgYikKIHsgCiAgICAgcmV0dXJuIGEuZ2V0
KCkgIT0gYi5nZXQoKTsgCiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEpTUmV0YWluUHRyPFQ+JiBhLCBVKiBiKQordGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBKU1JldGFpblB0cjxUPiYgYSwgVSogYikKIHsKICAgICByZXR1cm4gYS5nZXQoKSAhPSBiOyAK
IH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJh
dG9yIT0oVCogYSwgY29uc3QgSlNSZXRhaW5QdHI8VT4mIGIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0IEpTUmV0YWlu
UHRyPFU+JiBiKQogeyAKICAgICByZXR1cm4gYSAhPSBiLmdldCgpOyAKIH0KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3d0Zi9QYXNzUmVmUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
d3RmL1Bhc3NSZWZQdHIuaAkocmV2aXNpb24gNjM0MjkpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYv
UGFzc1JlZlB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw4ICs2Nyw4IEBAIG5hbWVzcGFjZSBX
VEYgewogICAgICAgICAvLyBJdCBzb21ld2hhdCBicmVha3MgdGhlIHR5cGUgc3lzdGVtIHRvIGFs
bG93IHRyYW5zZmVyIG9mIG93bmVyc2hpcCBvdXQgb2YKICAgICAgICAgLy8gYSBjb25zdCBQYXNz
UmVmUHRyLiBIb3dldmVyLCBpdCBtYWtlcyBpdCBtdWNoIGVhc2llciB0byB3b3JrIHdpdGggUGFz
c1JlZlB0cgogICAgICAgICAvLyB0ZW1wb3JhcmllcywgYW5kIHdlIGRvbid0IGhhdmUgYSBuZWVk
IHRvIHVzZSByZWFsIGNvbnN0IFBhc3NSZWZQdHJzIGFueXdheS4KLSAgICAgICAgUGFzc1JlZlB0
cihjb25zdCBQYXNzUmVmUHRyJiBvKSA6IG1fcHRyKG8ucmVsZWFzZVJlZigpKSB7IH0KLSAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUGFzc1JlZlB0cihjb25zdCBQYXNzUmVmUHRyPFU+JiBv
KSA6IG1fcHRyKG8ucmVsZWFzZVJlZigpKSB7IH0KKyAgICAgICAgUGFzc1JlZlB0cihjb25zdCBQ
YXNzUmVmUHRyJiBvKSA6IG1fcHRyKG8ubGVha1JlZigpKSB7IH0KKyAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4gUGFzc1JlZlB0cihjb25zdCBQYXNzUmVmUHRyPFU+JiBvKSA6IG1fcHRyKG8u
bGVha1JlZigpKSB7IH0KIAogICAgICAgICBBTFdBWVNfSU5MSU5FIH5QYXNzUmVmUHRyKCkgeyBk
ZXJlZklmTm90TnVsbChtX3B0cik7IH0KIApAQCAtMTA2LDcgKzEwNiw3IEBAIG5hbWVzcGFjZSBX
VEYgewogICAgIH07CiAgICAgCiAgICAgLy8gTm9uTnVsbFBhc3NSZWZQdHI6IE9wdGltaXplZCBm
b3IgcGFzc2luZyBub24tbnVsbCBwb2ludGVycy4gQSBOb25OdWxsUGFzc1JlZlB0cgotICAgIC8v
IGJlZ2lucyBsaWZlIG5vbi1udWxsLCBhbmQgY2FuIG9ubHkgYmVjb21lIG51bGwgdGhyb3VnaCBh
IGNhbGwgdG8gcmVsZWFzZVJlZigpCisgICAgLy8gYmVnaW5zIGxpZmUgbm9uLW51bGwsIGFuZCBj
YW4gb25seSBiZWNvbWUgbnVsbCB0aHJvdWdoIGEgY2FsbCB0byBsZWFrUmVmKCkKICAgICAvLyBv
ciBjbGVhcigpLgogCiAgICAgLy8gRklYTUU6IE5vbk51bGxQYXNzUmVmUHRyIGNvdWxkIGp1c3Qg
aW5oZXJpdCBmcm9tIFBhc3NSZWZQdHIuIEhvd2V2ZXIsCkBAIC0xMzAsMTkgKzEzMCwxOSBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICAgICAgfQogCiAgICAgICAgIE5vbk51bGxQYXNzUmVmUHRyKGNv
bnN0IE5vbk51bGxQYXNzUmVmUHRyJiBvKQotICAgICAgICAgICAgOiBtX3B0cihvLnJlbGVhc2VS
ZWYoKSkKKyAgICAgICAgICAgIDogbV9wdHIoby5sZWFrUmVmKCkpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEFTU0VSVChtX3B0cik7CiAgICAgICAgIH0KIAogICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiBOb25OdWxsUGFzc1JlZlB0cihjb25zdCBOb25OdWxsUGFzc1JlZlB0cjxVPiYgbykK
LSAgICAgICAgICAgIDogbV9wdHIoby5yZWxlYXNlUmVmKCkpCisgICAgICAgICAgICA6IG1fcHRy
KG8ubGVha1JlZigpKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9wdHIpOwogICAg
ICAgICB9CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gTm9uTnVsbFBhc3NSZWZQdHIo
Y29uc3QgUGFzc1JlZlB0cjxVPiYgbykKLSAgICAgICAgICAgIDogbV9wdHIoby5yZWxlYXNlUmVm
KCkpCisgICAgICAgICAgICA6IG1fcHRyKG8ubGVha1JlZigpKQogICAgICAgICB7CiAgICAgICAg
ICAgICBBU1NFUlQobV9wdHIpOwogICAgICAgICB9CkBAIC0yMDcsNyArMjA3LDcgQEAgbmFtZXNw
YWNlIFdURiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NSZWZQdHI8VD4m
IFBhc3NSZWZQdHI8VD46Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFQ+JiByZWYpCiAgICAg
ewogICAgICAgICBUKiBwdHIgPSBtX3B0cjsKLSAgICAgICAgbV9wdHIgPSByZWYucmVsZWFzZVJl
ZigpOworICAgICAgICBtX3B0ciA9IHJlZi5sZWFrUmVmKCk7CiAgICAgICAgIGRlcmVmSWZOb3RO
dWxsKHB0cik7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CkBAIC0yMTUsNyArMjE1LDcg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlw
ZW5hbWUgVT4gaW5saW5lIFBhc3NSZWZQdHI8VD4mIFBhc3NSZWZQdHI8VD46Om9wZXJhdG9yPShj
b25zdCBQYXNzUmVmUHRyPFU+JiByZWYpCiAgICAgewogICAgICAgICBUKiBwdHIgPSBtX3B0cjsK
LSAgICAgICAgbV9wdHIgPSByZWYucmVsZWFzZVJlZigpOworICAgICAgICBtX3B0ciA9IHJlZi5s
ZWFrUmVmKCk7CiAgICAgICAgIGRlcmVmSWZOb3ROdWxsKHB0cik7CiAgICAgICAgIHJldHVybiAq
dGhpczsKICAgICB9CkBAIC0yNzgsMTIgKzI3OCwxMiBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBQYXNzUmVmUHRyPFQ+IHN0
YXRpY19wb2ludGVyX2Nhc3QoY29uc3QgUGFzc1JlZlB0cjxVPiYgcCkgCiAgICAgeyAKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKHN0YXRpY19jYXN0PFQqPihwLnJlbGVhc2VSZWYoKSkpOyAKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKHN0YXRpY19jYXN0PFQqPihwLmxlYWtSZWYoKSkpOyAKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1Jl
ZlB0cjxUPiBjb25zdF9wb2ludGVyX2Nhc3QoY29uc3QgUGFzc1JlZlB0cjxVPiYgcCkgCiAgICAg
eyAKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKGNvbnN0X2Nhc3Q8VCo+KHAucmVsZWFzZVJlZigp
KSk7IAorICAgICAgICByZXR1cm4gYWRvcHRSZWYoY29uc3RfY2FzdDxUKj4ocC5sZWFrUmVmKCkp
KTsgCiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIGdldFB0cihj
b25zdCBQYXNzUmVmUHRyPFQ+JiBwKQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1JlZlB0ci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9SZWZQdHIuaAkocmV2aXNpb24gNjM0
MjkpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUmVmUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDE5ICszMiwyMSBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIGVudW0gUGxhY2VtZW50TmV3QWRv
cHRUeXBlIHsgUGxhY2VtZW50TmV3QWRvcHQgfTsKIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBQYXNzUmVmUHRyOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBOb25O
dWxsUGFzc1JlZlB0cjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRy
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIE5vbk51bGxQYXNzUmVmUHRyOwogCiAg
ICAgZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlIHsgSGFzaFRhYmxlRGVsZXRlZFZhbHVl
IH07CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUmVmUHRyIDogcHVibGljIEZh
c3RBbGxvY0Jhc2UgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJlZlB0ciA6IHB1
YmxpYyBGYXN0QWxsb2NCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEFMV0FZU19JTkxJTkUg
UmVmUHRyKCkgOiBtX3B0cigwKSB7IH0KICAgICAgICAgQUxXQVlTX0lOTElORSBSZWZQdHIoVCog
cHRyKSA6IG1fcHRyKHB0cikgeyByZWZJZk5vdE51bGwocHRyKTsgfQotICAgICAgICBBTFdBWVNf
SU5MSU5FIFJlZlB0cihjb25zdCBSZWZQdHImIG8pIDogbV9wdHIoby5tX3B0cikgeyBUKiBwdHIg
PSBtX3B0cjsgcmVmSWZOb3ROdWxsKHB0cik7IH0KLSAgICAgICAgLy8gc2VlIGNvbW1lbnQgaW4g
UGFzc1JlZlB0ci5oIGZvciB3aHkgdGhpcyB0YWtlcyBjb25zdCByZWZlcmVuY2UKLSAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFU+IFJlZlB0cihjb25zdCBQYXNzUmVmUHRyPFU+Jik7Ci0gICAg
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBSZWZQdHIoY29uc3QgTm9uTnVsbFBhc3NSZWZQdHI8
VT4mKTsKKyAgICAgICAgQUxXQVlTX0lOTElORSBSZWZQdHIoY29uc3QgUmVmUHRyJiBvKSA6IG1f
cHRyKG8ubV9wdHIpIHsgcmVmSWZOb3ROdWxsKG1fcHRyKTsgfQorICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiBSZWZQdHIoY29uc3QgUmVmUHRyPFU+JiBvKSA6IG1fcHRyKG8uZ2V0KCkpIHsg
cmVmSWZOb3ROdWxsKG1fcHRyKTsgfQorCisgICAgICAgIC8vIFNlZSBjb21tZW50cyBpbiBQYXNz
UmVmUHRyLmggZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGVzZSB0YWtlcyBjb25zdCByZWZl
cmVuY2VzLgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHIoY29uc3QgUGFzc1Jl
ZlB0cjxVPiYpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHIoY29uc3QgTm9u
TnVsbFBhc3NSZWZQdHI8VT4mKTsKIAogICAgICAgICAvLyBTcGVjaWFsIGNvbnN0cnVjdG9yIGZv
ciBjYXNlcyB3aGVyZSB3ZSBvdmVyd3JpdGUgYW4gb2JqZWN0IGluIHBsYWNlLgogICAgICAgICBB
TFdBWVNfSU5MSU5FIFJlZlB0cihQbGFjZW1lbnROZXdBZG9wdFR5cGUpIHsgfQpAQCAtNTQsOSAr
NTYsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID09IGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9
CiAKICAgICAgICAgQUxXQVlTX0lOTElORSB+UmVmUHRyKCkgeyBkZXJlZklmTm90TnVsbChtX3B0
cik7IH0KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBSZWZQdHIoY29u
c3QgUmVmUHRyPFU+JiBvKSA6IG1fcHRyKG8uZ2V0KCkpIHsgVCogcHRyID0gbV9wdHI7IHJlZklm
Tm90TnVsbChwdHIpOyB9Ci0gICAgICAgIAorCiAgICAgICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHRyOyB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGNsZWFyKCk7CkBAIC03NSw5ICs3
NSw5IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShUKik7CiAg
ICAgICAgIFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VD4mKTsKICAgICAgICAg
UmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgTm9uTnVsbFBhc3NSZWZQdHI8VD4mKTsKLSAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFJlZlB0cjxVPiYp
OwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gUmVmUHRyJiBvcGVyYXRvcj0oY29uc3Qg
UGFzc1JlZlB0cjxVPiYpOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gUmVmUHRyJiBv
cGVyYXRvcj0oY29uc3QgTm9uTnVsbFBhc3NSZWZQdHI8VT4mKTsKKyAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4gUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFU+Jik7CisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8
VT4mKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmUHRyJiBvcGVyYXRvcj0oY29u
c3QgTm9uTnVsbFBhc3NSZWZQdHI8VT4mKTsKIAogICAgICAgICB2b2lkIHN3YXAoUmVmUHRyJik7
CiAKQEAgLTg3LDI0ICs4NywyNCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgVCogbV9wdHI7
CiAgICAgfTsKICAgICAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUgPHR5cGVu
YW1lIFU+IGlubGluZSBSZWZQdHI8VD46OlJlZlB0cihjb25zdCBQYXNzUmVmUHRyPFU+JiBvKQot
ICAgICAgICA6IG1fcHRyKG8ucmVsZWFzZVJlZigpKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8VD46OlJlZlB0cihjb25zdCBQYXNz
UmVmUHRyPFU+JiBvKQorICAgICAgICA6IG1fcHRyKG8ubGVha1JlZigpKQogICAgIHsKICAgICB9
CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUgPHR5cGVuYW1lIFU+IGlubGlu
ZSBSZWZQdHI8VD46OlJlZlB0cihjb25zdCBOb25OdWxsUGFzc1JlZlB0cjxVPiYgbykKLSAgICAg
ICAgOiBtX3B0cihvLnJlbGVhc2VSZWYoKSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUmVmUHRyPFQ+OjpSZWZQdHIoY29uc3QgTm9uTnVsbFBh
c3NSZWZQdHI8VT4mIG8pCisgICAgICAgIDogbV9wdHIoby5sZWFrUmVmKCkpCiAgICAgewogICAg
IH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBSZWZQdHI8VD46OmNs
ZWFyKCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBSZWZQdHI8VD46OmNs
ZWFyKCkKICAgICB7CiAgICAgICAgIFQqIHB0ciA9IG1fcHRyOwogICAgICAgICBtX3B0ciA9IDA7
CiAgICAgICAgIGRlcmVmSWZOb3ROdWxsKHB0cik7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFJl
ZlB0cjxUPiYgbykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUmVmUHRyPFQ+JiBS
ZWZQdHI8VD46Om9wZXJhdG9yPShjb25zdCBSZWZQdHI8VD4mIG8pCiAgICAgewogICAgICAgICBU
KiBvcHRyID0gby5nZXQoKTsKICAgICAgICAgcmVmSWZOb3ROdWxsKG9wdHIpOwpAQCAtMTE0LDcg
KzExNCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQog
ICAgIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gaW5s
aW5lIFJlZlB0cjxUPiYgUmVmUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFU+JiBvKQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBSZWZQ
dHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFJlZlB0cjxVPiYgbykKICAgICB7CiAg
ICAgICAgIFQqIG9wdHIgPSBvLmdldCgpOwogICAgICAgICByZWZJZk5vdE51bGwob3B0cik7CkBA
IC0xMjQsNyArMTI0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICB9CiAgICAgCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBSZWZQdHI8VD4m
IFJlZlB0cjxUPjo6b3BlcmF0b3I9KFQqIG9wdHIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
aW5saW5lIFJlZlB0cjxUPiYgUmVmUHRyPFQ+OjpvcGVyYXRvcj0oVCogb3B0cikKICAgICB7CiAg
ICAgICAgIHJlZklmTm90TnVsbChvcHRyKTsKICAgICAgICAgVCogcHRyID0gbV9wdHI7CkBAIC0x
MzMsODkgKzEzMyw4OSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuICp0aGlzOwog
ICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQ
dHI8VD46Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFQ+JiBvKQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFBh
c3NSZWZQdHI8VD4mIG8pCiAgICAgewogICAgICAgICBUKiBwdHIgPSBtX3B0cjsKLSAgICAgICAg
bV9wdHIgPSBvLnJlbGVhc2VSZWYoKTsKKyAgICAgICAgbV9wdHIgPSBvLmxlYWtSZWYoKTsKICAg
ICAgICAgZGVyZWZJZk5vdE51bGwocHRyKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0K
IAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQdHI8VD46
Om9wZXJhdG9yPShjb25zdCBOb25OdWxsUGFzc1JlZlB0cjxUPiYgbykKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQdHI8VD46Om9wZXJhdG9yPShjb25zdCBO
b25OdWxsUGFzc1JlZlB0cjxUPiYgbykKICAgICB7CiAgICAgICAgIFQqIHB0ciA9IG1fcHRyOwot
ICAgICAgICBtX3B0ciA9IG8ucmVsZWFzZVJlZigpOworICAgICAgICBtX3B0ciA9IG8ubGVha1Jl
ZigpOwogICAgICAgICBkZXJlZklmTm90TnVsbChwdHIpOwogICAgICAgICByZXR1cm4gKnRoaXM7
CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHRlbXBsYXRlIDx0eXBlbmFtZSBV
PiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQdHI8VD46Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRy
PFU+JiBvKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlu
bGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VT4m
IG8pCiAgICAgewogICAgICAgICBUKiBwdHIgPSBtX3B0cjsKLSAgICAgICAgbV9wdHIgPSBvLnJl
bGVhc2VSZWYoKTsKKyAgICAgICAgbV9wdHIgPSBvLmxlYWtSZWYoKTsKICAgICAgICAgZGVyZWZJ
Zk5vdE51bGwocHRyKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gaW5saW5lIFJlZlB0cjxUPiYg
UmVmUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgTm9uTnVsbFBhc3NSZWZQdHI8VT4mIG8pCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5lIFJlZlB0cjxU
PiYgUmVmUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgTm9uTnVsbFBhc3NSZWZQdHI8VT4mIG8pCiAg
ICAgewogICAgICAgICBUKiBwdHIgPSBtX3B0cjsKLSAgICAgICAgbV9wdHIgPSBvLnJlbGVhc2VS
ZWYoKTsKKyAgICAgICAgbV9wdHIgPSBvLmxlYWtSZWYoKTsKICAgICAgICAgZGVyZWZJZk5vdE51
bGwocHRyKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDxj
bGFzcyBUPiBpbmxpbmUgdm9pZCBSZWZQdHI8VD46OnN3YXAoUmVmUHRyPFQ+JiBvKQorICAgIHRl
bXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lkIFJlZlB0cjxUPjo6c3dhcChSZWZQdHI8VD4mIG8p
CiAgICAgewogICAgICAgICBzdGQ6OnN3YXAobV9wdHIsIG8ubV9wdHIpOwogICAgIH0KIAotICAg
IHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgdm9pZCBzd2FwKFJlZlB0cjxUPiYgYSwgUmVmUHRy
PFQ+JiBiKQorICAgIHRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lkIHN3YXAoUmVmUHRyPFQ+
JiBhLCBSZWZQdHI8VD4mIGIpCiAgICAgewogICAgICAgICBhLnN3YXAoYik7CiAgICAgfQogCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25zdCBSZWZQdHI8VT4mIGIpCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZQ
dHI8VD4mIGEsIGNvbnN0IFJlZlB0cjxVPiYgYikKICAgICB7IAogICAgICAgICByZXR1cm4gYS5n
ZXQoKSA9PSBiLmdldCgpOyAKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZQdHI8VD4mIGEsIFUqIGIp
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBSZWZQdHI8VD4mIGEsIFUqIGIpCiAgICAgeyAKICAgICAgICAgcmV0dXJuIGEu
Z2V0KCkgPT0gYjsgCiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFQqIGEsIGNvbnN0IFJlZlB0cjxVPiYgYikg
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShUKiBhLCBjb25zdCBSZWZQdHI8VT4mIGIpIAogICAgIHsKICAgICAgICAgcmV0dXJuIGEg
PT0gYi5nZXQoKTsgCiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZlB0cjxUPiYgYSwgY29uc3Qg
UmVmUHRyPFU+JiBiKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25zdCBSZWZQdHI8VT4mIGIp
CiAgICAgeyAKICAgICAgICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsgCiAgICAgfQogCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBVKiBiKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBVKiBi
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGEuZ2V0KCkgIT0gYjsgCiAgICAgfQogCi0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oVCog
YSwgY29uc3QgUmVmUHRyPFU+JiBiKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oVCogYSwgY29uc3QgUmVmUHRyPFU+JiBiKQogICAg
IHsgCiAgICAgICAgIHJldHVybiBhICE9IGIuZ2V0KCk7IAogICAgIH0KICAgICAKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFJlZlB0cjxUPiBzdGF0aWNfcG9p
bnRlcl9jYXN0KGNvbnN0IFJlZlB0cjxVPiYgcCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPiBpbmxpbmUgUmVmUHRyPFQ+IHN0YXRpY19wb2ludGVyX2Nhc3QoY29uc3QgUmVm
UHRyPFU+JiBwKQogICAgIHsgCiAgICAgICAgIHJldHVybiBSZWZQdHI8VD4oc3RhdGljX2Nhc3Q8
VCo+KHAuZ2V0KCkpKTsgCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IGlubGluZSBSZWZQdHI8VD4gY29uc3RfcG9pbnRlcl9jYXN0KGNvbnN0IFJlZlB0cjxV
PiYgcCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgUmVmUHRy
PFQ+IGNvbnN0X3BvaW50ZXJfY2FzdChjb25zdCBSZWZQdHI8VT4mIHApCiAgICAgeyAKICAgICAg
ICAgcmV0dXJuIFJlZlB0cjxUPihjb25zdF9jYXN0PFQqPihwLmdldCgpKSk7IAogICAgIH0KIAot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCogZ2V0UHRyKGNvbnN0IFJlZlB0cjxU
PiYgcCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCogZ2V0UHRyKGNvbnN0IFJl
ZlB0cjxUPiYgcCkKICAgICB7CiAgICAgICAgIHJldHVybiBwLmdldCgpOwogICAgIH0KSW5kZXg6
IEphdmFTY3JpcHRDb3JlL3d0Zi9SZXRhaW5QdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS93dGYvUmV0YWluUHRyLmgJKHJldmlzaW9uIDYzNDI5KQorKysgSmF2YVNjcmlwdENvcmUv
d3RmL1JldGFpblB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAjZW5kaWYKIAotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBSZXRhaW5QdHIgeworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGNsYXNzIFJldGFpblB0ciB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIHR5
cGVuYW1lIFJlbW92ZVBvaW50ZXI8VD46OlR5cGUgVmFsdWVUeXBlOwogICAgICAgICB0eXBlZGVm
IFZhbHVlVHlwZSogUHRyVHlwZTsKQEAgLTY3LDExICs2NywxMiBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICAgICAgCiAgICAgICAgIH5SZXRhaW5QdHIoKSB7IGlmIChQdHJUeXBlIHB0ciA9IG1fcHRy
KSBDRlJlbGVhc2UocHRyKTsgfQogICAgICAgICAKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFU+IFJldGFpblB0cihjb25zdCBSZXRhaW5QdHI8VT4mIG8pIDogbV9wdHIoby5nZXQoKSkgeyBp
ZiAoUHRyVHlwZSBwdHIgPSBtX3B0cikgQ0ZSZXRhaW4ocHRyKTsgfQorICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiBSZXRhaW5QdHIoY29uc3QgUmV0YWluUHRyPFU+Jik7CiAgICAgICAgIAog
ICAgICAgICBQdHJUeXBlIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9Ci0gICAgICAgIAot
ICAgICAgICBQdHJUeXBlIHJlbGVhc2VSZWYoKSB7IFB0clR5cGUgdG1wID0gbV9wdHI7IG1fcHRy
ID0gMDsgcmV0dXJuIHRtcDsgfSBXQVJOX1VOVVNFRF9SRVRVUk47CisKKyAgICAgICAgdm9pZCBj
bGVhcigpOworICAgICAgICBQdHJUeXBlIGxlYWtSZWYoKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAg
ICAgICAgIAogICAgICAgICBQdHJUeXBlIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3B0
cjsgfQogICAgICAgICAKQEAgLTgyLDIyICs4Myw0NyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8g
JlJldGFpblB0cjo6bV9wdHIgOiAwOyB9CiAgICAgICAgIAogICAgICAgICBSZXRhaW5QdHImIG9w
ZXJhdG9yPShjb25zdCBSZXRhaW5QdHImKTsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+
IFJldGFpblB0ciYgb3BlcmF0b3I9KGNvbnN0IFJldGFpblB0cjxVPiYpOworICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBSZXRhaW5QdHImIG9wZXJhdG9yPShjb25zdCBSZXRhaW5QdHI8VT4m
KTsKICAgICAgICAgUmV0YWluUHRyJiBvcGVyYXRvcj0oUHRyVHlwZSk7Ci0gICAgICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBVPiBSZXRhaW5QdHImIG9wZXJhdG9yPShVKik7CisgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IFJldGFpblB0ciYgb3BlcmF0b3I9KFUqKTsKIAogICAgICAgICB2b2lk
IGFkb3B0Q0YoUHRyVHlwZSk7CiAgICAgICAgIHZvaWQgYWRvcHROUyhQdHJUeXBlKTsKICAgICAg
ICAgCiAgICAgICAgIHZvaWQgc3dhcChSZXRhaW5QdHImKTsKIAorICAgICAgICAvLyBGSVhNRTog
UmVtb3ZlIHJlbGVhc2VSZWYgb25jZSB3ZSBjaGFuZ2UgYWxsIGNhbGxlcnMgdG8gY2FsbCBsZWFr
UmVmIGluc3RlYWQuCisgICAgICAgIFB0clR5cGUgcmVsZWFzZVJlZigpIHsgcmV0dXJuIGxlYWtS
ZWYoKTsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIFQqIGhhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KC0xKTsgfQogCiAgICAgICAg
IFB0clR5cGUgbV9wdHI7CiAgICAgfTsKICAgICAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
aW5saW5lIFJldGFpblB0cjxUPiYgUmV0YWluUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgUmV0YWlu
UHRyPFQ+JiBvKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+
IGlubGluZSBSZXRhaW5QdHI8VD46OlJldGFpblB0cihjb25zdCBSZXRhaW5QdHI8VT4mIG8pCisg
ICAgICAgIDogbV9wdHIoby5nZXQoKSkKKyAgICB7CisgICAgICAgIGlmIChQdHJUeXBlIHB0ciA9
IG1fcHRyKQorICAgICAgICAgICAgQ0ZSZXRhaW4ocHRyKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBSZXRhaW5QdHI8VD46OmNsZWFyKCkKKyAgICB7Cisg
ICAgICAgIGlmIChQdHJUeXBlIHB0ciA9IG1fcHRyKSB7CisgICAgICAgICAgICBtX3B0ciA9IDA7
CisgICAgICAgICAgICBDRlJlbGVhc2UocHRyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB0eXBlbmFtZSBSZXRhaW5QdHI8VD46OlB0clR5cGUg
UmV0YWluUHRyPFQ+OjpsZWFrUmVmKCkKKyAgICB7CisgICAgICAgIFB0clR5cGUgcHRyID0gbV9w
dHI7CisgICAgICAgIG1fcHRyID0gMDsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUmV0YWluUHRyPFQ+JiBSZXRhaW5QdHI8VD46
Om9wZXJhdG9yPShjb25zdCBSZXRhaW5QdHI8VD4mIG8pCiAgICAgewogICAgICAgICBQdHJUeXBl
IG9wdHIgPSBvLmdldCgpOwogICAgICAgICBpZiAob3B0cikKQEAgLTEwOSw3ICsxMzUsNyBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KICAgICAKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUgPHR5cGVuYW1lIFU+IGlubGluZSBSZXRhaW5Q
dHI8VD4mIFJldGFpblB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFJldGFpblB0cjxVPiYgbykKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUmV0YWlu
UHRyPFQ+JiBSZXRhaW5QdHI8VD46Om9wZXJhdG9yPShjb25zdCBSZXRhaW5QdHI8VT4mIG8pCiAg
ICAgewogICAgICAgICBQdHJUeXBlIG9wdHIgPSBvLmdldCgpOwogICAgICAgICBpZiAob3B0cikK
QEAgLTEyMSw3ICsxNDcsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuICp0aGlz
OwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFJldGFpblB0
cjxUPiYgUmV0YWluUHRyPFQ+OjpvcGVyYXRvcj0oUHRyVHlwZSBvcHRyKQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGlubGluZSBSZXRhaW5QdHI8VD4mIFJldGFpblB0cjxUPjo6b3BlcmF0b3I9
KFB0clR5cGUgb3B0cikKICAgICB7CiAgICAgICAgIGlmIChvcHRyKQogICAgICAgICAgICAgQ0ZS
ZXRhaW4ob3B0cik7CkBAIC0xMzIsNyArMTU4LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAg
IHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5l
IHZvaWQgUmV0YWluUHRyPFQ+OjphZG9wdENGKFB0clR5cGUgb3B0cikKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBSZXRhaW5QdHI8VD46OmFkb3B0Q0YoUHRyVHlwZSBvcHRy
KQogICAgIHsKICAgICAgICAgUHRyVHlwZSBwdHIgPSBtX3B0cjsKICAgICAgICAgbV9wdHIgPSBv
cHRyOwpAQCAtMTQwLDcgKzE2Niw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgQ0ZS
ZWxlYXNlKHB0cik7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2
b2lkIFJldGFpblB0cjxUPjo6YWRvcHROUyhQdHJUeXBlIG9wdHIpCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gaW5saW5lIHZvaWQgUmV0YWluUHRyPFQ+OjphZG9wdE5TKFB0clR5cGUgb3B0cikK
ICAgICB7CiAgICAgICAgIGFkb3B0TlNSZWZlcmVuY2Uob3B0cik7CiAgICAgICAgIApAQCAtMTUw
LDcgKzE3Niw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgQ0ZSZWxlYXNlKHB0cik7
CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVT4gaW5saW5lIFJldGFpblB0cjxUPiYgUmV0YWluUHRyPFQ+OjpvcGVyYXRvcj0oVSogb3B0
cikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUg
UmV0YWluUHRyPFQ+JiBSZXRhaW5QdHI8VD46Om9wZXJhdG9yPShVKiBvcHRyKQogICAgIHsKICAg
ICAgICAgaWYgKG9wdHIpCiAgICAgICAgICAgICBDRlJldGFpbihvcHRyKTsKQEAgLTE2MSw0MiAr
MTg3LDQyIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSB2b2lkIFJldGFpblB0cjxUPjo6c3dhcChS
ZXRhaW5QdHI8VD4mIG8pCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgUmV0
YWluUHRyPFQ+Ojpzd2FwKFJldGFpblB0cjxUPiYgbykKICAgICB7CiAgICAgICAgIHN0ZDo6c3dh
cChtX3B0ciwgby5tX3B0cik7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGlu
ZSB2b2lkIHN3YXAoUmV0YWluUHRyPFQ+JiBhLCBSZXRhaW5QdHI8VD4mIGIpCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgc3dhcChSZXRhaW5QdHI8VD4mIGEsIFJldGFpblB0
cjxUPiYgYikKICAgICB7CiAgICAgICAgIGEuc3dhcChiKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBS
ZXRhaW5QdHI8VD4mIGEsIGNvbnN0IFJldGFpblB0cjxVPiYgYikKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJldGFpblB0
cjxUPiYgYSwgY29uc3QgUmV0YWluUHRyPFU+JiBiKQogICAgIHsgCiAgICAgICAgIHJldHVybiBh
LmdldCgpID09IGIuZ2V0KCk7IAogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJldGFpblB0cjxUPiYgYSwg
VSogYikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFJldGFpblB0cjxUPiYgYSwgVSogYikKICAgICB7IAogICAgICAgICBy
ZXR1cm4gYS5nZXQoKSA9PSBiOyAKICAgICB9CiAgICAgCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oVCogYSwgY29uc3QgUmV0YWlu
UHRyPFU+JiBiKSAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KFQqIGEsIGNvbnN0IFJldGFpblB0cjxVPiYgYikgCiAgICAgewogICAg
ICAgICByZXR1cm4gYSA9PSBiLmdldCgpOyAKICAgICB9CiAgICAgCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmV0YWlu
UHRyPFQ+JiBhLCBjb25zdCBSZXRhaW5QdHI8VT4mIGIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZXRhaW5QdHI8VD4m
IGEsIGNvbnN0IFJldGFpblB0cjxVPiYgYikKICAgICB7IAogICAgICAgICByZXR1cm4gYS5nZXQo
KSAhPSBiLmdldCgpOyAKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZXRhaW5QdHI8VD4mIGEsIFUqIGIp
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBSZXRhaW5QdHI8VD4mIGEsIFUqIGIpCiAgICAgewogICAgICAgICByZXR1cm4g
YS5nZXQoKSAhPSBiOyAKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBSZXRhaW5QdHI8VT4mIGIp
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShUKiBhLCBjb25zdCBSZXRhaW5QdHI8VT4mIGIpCiAgICAgeyAKICAgICAgICAgcmV0dXJu
IGEgIT0gYi5nZXQoKTsgCiAgICAgfQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzNDM5KQorKysgV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNy0xNSAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGxlYWtSZWYgYW5kIGNsZWFyIHRvIGFsbCBSZWZQdHIgdmFy
aWFudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQy
Mzg5CisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ09NUHRyLmg6IENoYW5nZWQgYWxsIHVzZXMg
b2YgInRlbXBsYXRlIDwuLi4+IiB0byBpbnN0ZWFkIGRvCisgICAgICAgICJ0ZW1wbGF0ZTwuLi4+
Ii4gRGVmaW5lZCBtYW55IG9mIHRoZSBpbmxpbmVkIGZ1bmN0aW9ucyBvdXRzaWRlIHRoZSBjbGFz
cworICAgICAgICBkZWZpbml0aW9uLCB0byBhdm9pZCBzdHlsZSBjaGVja2VyIHdhcm5pbmdzIGFi
b3V0IG11bHRpcGxlIHN0YXRlbWVudHMgb24KKyAgICAgICAgYSBzaW5nbGUgbGluZSBhbmQgZm9y
IHNsaWdodGx5IGJldHRlciBjbGFyaXR5IG9mIHRoZSBjbGFzcyBkZWZpbml0aW9uIGl0c2VsZi4K
KyAgICAgICAgUmVuYW1lZCByZWxlYXNlUmVmIHRvIGxlYWtSZWYuIEFkZGVkIGEgcmVsZWFzZVJl
ZiB0aGF0IGNhbGxzIGxlYWtSZWYgc28gd2UKKyAgICAgICAgZG9uJ3QgaGF2ZSB0byByZW5hbWUg
YWxsIGNhbGxlcnMgYXQgb25jZS4gQWRkZWQgYSBjbGVhciBmdW5jdGlvbi4gQ2hhbmdlZAorICAg
ICAgICB0aGUgaGFzaCB0YWJsZSBjb2RlIHNvIGl0IGRvZXNuJ3QgbmVlZCB0byBjYWxsIHJlbGVh
c2VSZWYsIGFuZCBzbyBpdCB1c2VzCisgICAgICAgIHRoZSBoYXNoIHRhYmxlIGRlbGV0ZWQgdmFs
dWUgaG9va3MgYWxyZWFkeSBwcmVzZW50IHdpdGhpbiB0aGUgY2xhc3MuCisKIDIwMTAtMDctMTUg
IEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KIAogICAgICAgICBSdWJi
ZXItc3RhbXBlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vd2luL0NPTVB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd2lu
L0NPTVB0ci5oCShyZXZpc2lvbiA2MzQyOSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vd2luL0NPTVB0
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00NCw3ICs0NCw3IEBAIGVudW0gQWRvcHRDT01UYWcgeyBBZG9w
dENPTSB9OwogZW51bSBRdWVyeVRhZyB7IFF1ZXJ5IH07CiBlbnVtIENyZWF0ZVRhZyB7IENyZWF0
ZSB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgQ09NUHRyIHsKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IGNsYXNzIENPTVB0ciB7CiBwdWJsaWM6CiAgICAgQ09NUHRyKCkgOiBtX3B0cigw
KSB7IH0KICAgICBDT01QdHIoVCogcHRyKSA6IG1fcHRyKHB0cikgeyBpZiAobV9wdHIpIG1fcHRy
LT5BZGRSZWYoKTsgfQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgQ09NUHRyKGNvbnN0
IENPTVB0ciYgbykgOiBtX3B0cihvLm1fcHRyKSB7IGlmIChUKiBwdHIgPSBtX3B0cikgcHRyLT5B
ZGRSZWYoKTsgfQogCiAgICAgQ09NUHRyKFF1ZXJ5VGFnLCBJVW5rbm93biogcHRyKSA6IG1fcHRy
KGNvcHlRdWVyeUludGVyZmFjZVJlZihwdHIpKSB7IH0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VT4gQ09NUHRyKFF1ZXJ5VGFnLCBjb25zdCBDT01QdHI8VT4mIHB0cikgOiBtX3B0cihjb3B5UXVl
cnlJbnRlcmZhY2VSZWYocHRyLmdldCgpKSkgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
Q09NUHRyKFF1ZXJ5VGFnLCBjb25zdCBDT01QdHI8VT4mIHB0cikgOiBtX3B0cihjb3B5UXVlcnlJ
bnRlcmZhY2VSZWYocHRyLmdldCgpKSkgeyB9CiAKICAgICBDT01QdHIoQ3JlYXRlVGFnLCBjb25z
dCBJSUQmIGNsc2lkKSA6IG1fcHRyKGNyZWF0ZUluc3RhbmNlKGNsc2lkKSkgeyB9CiAKQEAgLTYz
LDcgKzYzLDkgQEAgcHVibGljOgogICAgIH5DT01QdHIoKSB7IGlmIChtX3B0cikgbV9wdHItPlJl
bGVhc2UoKTsgfQogCiAgICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KLSAgICBU
KiByZWxlYXNlUmVmKCkgeyBUKiB0bXAgPSBtX3B0cjsgbV9wdHIgPSAwOyByZXR1cm4gdG1wOyB9
CisKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgVCogbGVha1JlZigpOwogCiAgICAgVCYgb3BlcmF0
b3IqKCkgY29uc3QgeyByZXR1cm4gKm1fcHRyOyB9CiAgICAgVCogb3BlcmF0b3ItPigpIGNvbnN0
IHsgcmV0dXJuIG1fcHRyOyB9CkBAIC03OCwxNiArODAsMTkgQEAgcHVibGljOgogCiAgICAgQ09N
UHRyJiBvcGVyYXRvcj0oY29uc3QgQ09NUHRyJik7CiAgICAgQ09NUHRyJiBvcGVyYXRvcj0oVCop
OwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBDT01QdHImIG9wZXJhdG9yPShjb25zdCBDT01Q
dHI8VT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBDT01QdHImIG9wZXJhdG9yPShjb25z
dCBDT01QdHI8VT4mKTsKIAogICAgIHZvaWQgcXVlcnkoSVVua25vd24qIHB0cikgeyBhZG9wdFJl
Zihjb3B5UXVlcnlJbnRlcmZhY2VSZWYocHRyKSk7IH0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VT4gdm9pZCBxdWVyeShjb25zdCBDT01QdHI8VT4mIHB0cikgeyBxdWVyeShwdHIuZ2V0KCkpOyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBxdWVyeShjb25zdCBDT01QdHI8VT4mIHB0
cikgeyBxdWVyeShwdHIuZ2V0KCkpOyB9CiAKICAgICB2b2lkIGNyZWF0ZShjb25zdCBJSUQmIGNs
c2lkKSB7IGFkb3B0UmVmKGNyZWF0ZUluc3RhbmNlKGNsc2lkKSk7IH0KIAotICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBVPiBIUkVTVUxUIGNvcHlSZWZUbyhVKiopOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+IEhSRVNVTFQgY29weVJlZlRvKFUqKik7CiAgICAgdm9pZCBhZG9wdFJlZihUKik7CiAK
KyAgICAvLyBGSVhNRTogUmVtb3ZlIHJlbGVhc2VSZWYgb25jZSB3ZSBjaGFuZ2UgYWxsIGNhbGxl
cnMgdG8gY2FsbCBsZWFrUmVmIGluc3RlYWQuCisgICAgVCogcmVsZWFzZVJlZigpIHsgcmV0dXJu
IGxlYWtSZWYoKTsgfQorCiBwcml2YXRlOgogICAgIHN0YXRpYyBUKiBjb3B5UXVlcnlJbnRlcmZh
Y2VSZWYoSVVua25vd24qKTsKICAgICBzdGF0aWMgVCogY3JlYXRlSW5zdGFuY2UoY29uc3QgSUlE
JiBjbHNpZCk7CkBAIC05Niw3ICsxMDEsMjIgQEAgcHJpdmF0ZToKICAgICBUKiBtX3B0cjsKIH07
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCogQ09NUHRyPFQ+OjpjcmVhdGVJbnN0
YW5jZShjb25zdCBJSUQmIGNsc2lkKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQg
Q09NUHRyPFQ+OjpjbGVhcigpCit7CisgICAgaWYgKFQqIHB0ciA9IG1fcHRyKSB7CisgICAgICAg
IG1fcHRyID0gMDsKKyAgICAgICAgcHRyLT5SZWxlYXNlKCk7CisgICAgfQorfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCogQ09NUHRyPFQ+OjpsZWFrUmVmKCkKK3sKKyAgICBUKiBw
dHIgPSBtX3B0cjsKKyAgICBtX3B0ciA9IDA7CisgICAgcmV0dXJuIHB0cjsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIENPTVB0cjxUPjo6Y3JlYXRlSW5zdGFuY2UoY29uc3Qg
SUlEJiBjbHNpZCkKIHsKICAgICBUKiByZXN1bHQ7CiAgICAgaWYgKEZBSUxFRChDb0NyZWF0ZUlu
c3RhbmNlKGNsc2lkLCAwLCBDTFNDVFhfQUxMLCBfX3V1aWRvZihyZXN1bHQpLCByZWludGVycHJl
dF9jYXN0PHZvaWQqKj4oJnJlc3VsdCkpKSkKQEAgLTEwNCw3ICsxMjQsNyBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gaW5saW5lIFQqIENPTVB0cjxUCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBDT01QdHI8VD46OmNvcHlRdWVyeUludGVy
ZmFjZVJlZihJVW5rbm93biogcHRyKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIENP
TVB0cjxUPjo6Y29weVF1ZXJ5SW50ZXJmYWNlUmVmKElVbmtub3duKiBwdHIpCiB7CiAgICAgaWYg
KCFwdHIpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTE0LDcgKzEzNCw3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBpbmxpbmUgVCogQ09NUHRyPFQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUgPHR5cGVuYW1lIFU+IGlubGluZSBIUkVTVUxU
IENPTVB0cjxUPjo6Y29weVJlZlRvKFUqKiBwdHIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgSFJFU1VMVCBDT01QdHI8VD46OmNvcHlSZWZUbyhVKiog
cHRyKQogewogICAgIGlmICghcHRyKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTI0
LDE0ICsxNDQsMTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHRlbXBsYXRlIDx0eXBlbmFtZQog
ICAgIHJldHVybiBTX09LOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQg
Q09NUHRyPFQ+OjphZG9wdFJlZihUICpwdHIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUg
dm9pZCBDT01QdHI8VD46OmFkb3B0UmVmKFQgKnB0cikKIHsKICAgICBpZiAobV9wdHIpCiAgICAg
ICAgIG1fcHRyLT5SZWxlYXNlKCk7CiAgICAgbV9wdHIgPSBwdHI7CiB9CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBpbmxpbmUgQ09NUHRyPFQ+JiBDT01QdHI8VD46Om9wZXJhdG9yPShjb25zdCBD
T01QdHI8VD4mIG8pCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgQ09NUHRyPFQ+JiBDT01Q
dHI8VD46Om9wZXJhdG9yPShjb25zdCBDT01QdHI8VD4mIG8pCiB7CiAgICAgVCogb3B0ciA9IG8u
Z2V0KCk7CiAgICAgaWYgKG9wdHIpCkBAIC0xNDMsNyArMTYzLDcgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGlubGluZSBDT01QdHI8VD4mIAogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBpbmxpbmUgQ09NUHRyPFQ+JiBD
T01QdHI8VD46Om9wZXJhdG9yPShjb25zdCBDT01QdHI8VT4mIG8pCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgQ09NUHRyPFQ+JiBDT01QdHI8VD46Om9w
ZXJhdG9yPShjb25zdCBDT01QdHI8VT4mIG8pCiB7CiAgICAgVCogb3B0ciA9IG8uZ2V0KCk7CiAg
ICAgaWYgKG9wdHIpCkBAIC0xNTUsNyArMTc1LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHRl
bXBsYXRlIDx0eXBlbmFtZQogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGlubGluZSBDT01QdHI8VD4mIENPTVB0cjxUPjo6b3BlcmF0b3I9KFQqIG9wdHIpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgQ09NUHRyPFQ+JiBDT01QdHI8VD46Om9wZXJhdG9y
PShUKiBvcHRyKQogewogICAgIGlmIChvcHRyKQogICAgICAgICBvcHRyLT5BZGRSZWYoKTsKQEAg
LTE2NiwzMiArMTg2LDMyIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgQ09NUHRyPFQ+
JiAKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENPTVB0cjxUPiYgYSwgY29uc3QgQ09N
UHRyPFU+JiBiKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDT01QdHI8VD4mIGEsIGNvbnN0IENPTVB0cjxVPiYgYikKIHsKICAg
ICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDT01QdHI8VD4mIGEsIFUq
IGIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IENPTVB0cjxUPiYgYSwgVSogYikKIHsKICAgICByZXR1cm4gYS5nZXQoKSA9PSBi
OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShUKiBhLCBjb25zdCBDT01QdHI8VT4mIGIpIAordGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShUKiBhLCBjb25zdCBDT01QdHI8VT4m
IGIpIAogewogICAgIHJldHVybiBhID09IGIuZ2V0KCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENPTVB0cjxUPiYg
YSwgY29uc3QgQ09NUHRyPFU+JiBiKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDT01QdHI8VD4mIGEsIGNvbnN0IENPTVB0cjxV
PiYgYikKIHsKICAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOwogfQogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDT01Q
dHI8VD4mIGEsIFUqIGIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IENPTVB0cjxUPiYgYSwgVSogYikKIHsKICAgICByZXR1cm4g
YS5nZXQoKSAhPSBiOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBDT01QdHI8VT4mIGIpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0
IENPTVB0cjxVPiYgYikKIHsKICAgICByZXR1cm4gYSAhPSBiLmdldCgpOwogfQpAQCAtMjAwLDgg
KzIyMCw4IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3Ry
dWN0IEhhc2hUcmFpdHM8Q09NUHRyPFA+ID4gOiBHZW5lcmljSGFzaFRyYWl0czxDT01QdHI8UD4g
PiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOwot
ICAgICAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoQ09NUHRyPFA+JiBzbG90
KSB7IHNsb3QucmVsZWFzZVJlZigpOyAqJnNsb3QgPSByZWludGVycHJldF9jYXN0PFAqPigtMSk7
IH0KLSAgICAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgQ09NUHRyPFA+JiB2
YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gcmVpbnRlcnByZXRfY2FzdDxQKj4oLTEpOyB9CisgICAg
ICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShDT01QdHI8UD4mIHNsb3QpIHsg
bmV3ICgmc2xvdCkgQ09NUHRyPFA+KEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOyB9CisgICAg
ICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IENPTVB0cjxQPiYgdmFsdWUpIHsg
cmV0dXJuIHZhbHVlLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KICAgICB9OwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IFB0ckhhc2g8Q09NUHRyPFA+ID4gOiBQdHJIYXNo
PFAqPiB7CkluZGV4OiBXZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL0No
YW5nZUxvZwkocmV2aXNpb24gNjM0MzkpCisrKyBXZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEwLTA3LTE1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgbGVha1JlZiBhbmQgY2xlYXIgdG8gYWxsIFJlZlB0ciB2YXJpYW50cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIzODkKKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmg6IENoYW5nZWQgYWxsIHVzZXMgb2YgInRl
bXBsYXRlIDwuLi4+IiB0bworICAgICAgICAidGVtcGxhdGU8Li4uPiIuIERlZmluZWQgbWFueSBv
ZiB0aGUgaW5saW5lZCBmdW5jdGlvbnMgb3V0c2lkZSB0aGUgY2xhc3MKKyAgICAgICAgZGVmaW5p
dGlvbiwgdG8gYXZvaWQgc3R5bGUgY2hlY2tlciB3YXJuaW5ncyBhYm91dCBtdWx0aXBsZSBzdGF0
ZW1lbnRzIG9uCisgICAgICAgIGEgc2luZ2xlIGxpbmUgYW5kIGZvciBzbGlnaHRseSBiZXR0ZXIg
Y2xhcml0eSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBpdHNlbGYuCisgICAgICAgIFJlbmFtZWQg
cmVsZWFzZVJlZiB0byBsZWFrUmVmLiBBZGRlZCBhIHJlbGVhc2VSZWYgdGhhdCBjYWxscyBsZWFr
UmVmIHNvIHdlCisgICAgICAgIGRvbid0IGhhdmUgdG8gcmVuYW1lIGFsbCBjYWxsZXJzIGF0IG9u
Y2UuIEFkZGVkIGEgY2xlYXIgZnVuY3Rpb24uCisKIDIwMTAtMDctMTUgIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvV0tSZXRhaW5QdHIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmgJKHJldmlzaW9u
IDYzNDI5KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9XS1JldGFpblB0ci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw4ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBlbnVtIFdL
QWRvcHRUYWcgeyBBZG9wdFdLIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgV0tS
ZXRhaW5QdHIgewordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgV0tSZXRhaW5QdHIgewogcHVi
bGljOgogICAgIHR5cGVkZWYgVCBQdHJUeXBlOwogCkBAIC01NCw3ICs1Myw3IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+CiAgICAgV0tSZXRhaW5QdHIoY29uc3QgV0tSZXRhaW5QdHI8VT4mIG8p
CiAgICAgICAgIDogbV9wdHIoby5nZXQoKSkKICAgICB7CkBAIC03Niw3ICs3NSw5IEBAIHB1Ymxp
YzoKICAgICB9CiAKICAgICBQdHJUeXBlIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9Ci0g
ICAgUHRyVHlwZSByZWxlYXNlUmVmKCkgeyBQdHJUeXBlIHRtcCA9IG1fcHRyOyBtX3B0ciA9IDA7
IHJldHVybiB0bXA7IH0KKworICAgIHZvaWQgY2xlYXIoKTsKKyAgICBQdHJUeXBlIGxlYWtSZWYo
KTsKICAgICAKICAgICBQdHJUeXBlIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3B0cjsg
fQogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcHRyOyB9CkBAIC04Niwx
OCArODcsMzYgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBj
b25zdCB7IHJldHVybiBtX3B0ciA/ICZXS1JldGFpblB0cjo6bV9wdHIgOiAwOyB9CiAKICAgICBX
S1JldGFpblB0ciYgb3BlcmF0b3I9KGNvbnN0IFdLUmV0YWluUHRyJik7Ci0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFU+IFdLUmV0YWluUHRyJiBvcGVyYXRvcj0oY29uc3QgV0tSZXRhaW5QdHI8VT4m
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBXS1JldGFpblB0ciYgb3BlcmF0b3I9KGNvbnN0
IFdLUmV0YWluUHRyPFU+Jik7CiAgICAgV0tSZXRhaW5QdHImIG9wZXJhdG9yPShQdHJUeXBlKTsK
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gV0tSZXRhaW5QdHImIG9wZXJhdG9yPShVKik7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gV0tSZXRhaW5QdHImIG9wZXJhdG9yPShVKik7CiAKICAg
ICB2b2lkIGFkb3B0KFB0clR5cGUpOwogICAgIHZvaWQgc3dhcChXS1JldGFpblB0ciYpOwogCisg
ICAgLy8gRklYTUU6IFJlbW92ZSByZWxlYXNlUmVmIG9uY2Ugd2UgY2hhbmdlIGFsbCBjYWxsZXJz
IHRvIGNhbGwgbGVha1JlZiBpbnN0ZWFkLgorICAgIFQgcmVsZWFzZVJlZigpIHsgcmV0dXJuIGxl
YWtSZWYoKTsgfQorCiBwcml2YXRlOgogICAgIFB0clR5cGUgbV9wdHI7CiB9OwogCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFdLUmV0YWluUHRyPFQ+JiBXS1JldGFpblB0cjxUPjo6b3Bl
cmF0b3I9KGNvbnN0IFdLUmV0YWluUHRyPFQ+JiBvKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIHZvaWQgV0tSZXRhaW5QdHI8VD46OmNsZWFyKCkKK3sKKyAgICBpZiAoUHRyVHlwZSBwdHIg
PSBtX3B0cikgeworICAgICAgICBtX3B0ciA9IDA7CisgICAgICAgIFdLUmVsZWFzZShwdHIpOwor
ICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHR5cGVuYW1lIFdLUmV0YWlu
UHRyPFQ+OjpQdHJUeXBlIFdLUmV0YWluUHRyPFQ+OjpsZWFrUmVmKCkKK3sKKyAgICBQdHJUeXBl
IHB0ciA9IG1fcHRyOworICAgIG1fcHRyID0gMDsKKyAgICByZXR1cm4gcHRyOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV0tSZXRhaW5QdHI8VD4mIFdLUmV0YWluUHRyPFQ+Ojpv
cGVyYXRvcj0oY29uc3QgV0tSZXRhaW5QdHI8VD4mIG8pCiB7CiAgICAgUHRyVHlwZSBvcHRyID0g
by5nZXQoKTsKICAgICBpZiAob3B0cikKQEAgLTEwOSw3ICsxMjgsNyBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gaW5saW5lIFdLUmV0YWluUHRyCiAgICAgcmV0dXJuICp0aGlzOwogfQogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUgPHR5cGVuYW1lIFU+IGlubGluZSBXS1JldGFpblB0
cjxUPiYgV0tSZXRhaW5QdHI8VD46Om9wZXJhdG9yPShjb25zdCBXS1JldGFpblB0cjxVPiYgbykK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBXS1JldGFp
blB0cjxUPiYgV0tSZXRhaW5QdHI8VD46Om9wZXJhdG9yPShjb25zdCBXS1JldGFpblB0cjxVPiYg
bykKIHsKICAgICBQdHJUeXBlIG9wdHIgPSBvLmdldCgpOwogICAgIGlmIChvcHRyKQpAQCAtMTIx
LDcgKzE0MCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB0ZW1wbGF0ZSA8dHlwZW5hbWUKICAg
ICByZXR1cm4gKnRoaXM7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgV0tSZXRh
aW5QdHI8VD4mIFdLUmV0YWluUHRyPFQ+OjpvcGVyYXRvcj0oUHRyVHlwZSBvcHRyKQordGVtcGxh
dGU8dHlwZW5hbWUgVD4gaW5saW5lIFdLUmV0YWluUHRyPFQ+JiBXS1JldGFpblB0cjxUPjo6b3Bl
cmF0b3I9KFB0clR5cGUgb3B0cikKIHsKICAgICBpZiAob3B0cikKICAgICAgICAgV0tSZXRhaW4o
b3B0cik7CkBAIC0xMzIsNyArMTUxLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBX
S1JldGFpblB0cgogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGlubGluZSB2b2lkIFdLUmV0YWluUHRyPFQ+OjphZG9wdChQdHJUeXBlIG9wdHIpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBXS1JldGFpblB0cjxUPjo6YWRvcHQoUHRyVHlwZSBv
cHRyKQogewogICAgIFB0clR5cGUgcHRyID0gbV9wdHI7CiAgICAgbV9wdHIgPSBvcHRyOwpAQCAt
MTQwLDcgKzE1OSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBXS1JldGEK
ICAgICAgICAgV0tSZWxlYXNlKHB0cik7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVT4gaW5saW5lIFdLUmV0YWluUHRyPFQ+JiBXS1JldGFpblB0cjxUPjo6
b3BlcmF0b3I9KFUqIG9wdHIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiBpbmxpbmUgV0tSZXRhaW5QdHI8VD4mIFdLUmV0YWluUHRyPFQ+OjpvcGVyYXRvcj0oVSog
b3B0cikKIHsKICAgICBpZiAob3B0cikKICAgICAgICAgV0tSZXRhaW4ob3B0cik7CkBAIC0xNTEs
NDIgKzE3MCw0MiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUgPHR5cGVuYW1lCiAg
ICAgcmV0dXJuICp0aGlzOwogfQogCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIHZvaWQgV0tS
ZXRhaW5QdHI8VD46OnN3YXAoV0tSZXRhaW5QdHI8VD4mIG8pCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBpbmxpbmUgdm9pZCBXS1JldGFpblB0cjxUPjo6c3dhcChXS1JldGFpblB0cjxUPiYgbykKIHsK
ICAgICBzdGQ6OnN3YXAobV9wdHIsIG8ubV9wdHIpOwogfQogCi10ZW1wbGF0ZSA8Y2xhc3MgVD4g
aW5saW5lIHZvaWQgc3dhcChXS1JldGFpblB0cjxUPiYgYSwgV0tSZXRhaW5QdHI8VD4mIGIpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBzd2FwKFdLUmV0YWluUHRyPFQ+JiBhLCBX
S1JldGFpblB0cjxUPiYgYikKIHsKICAgICBhLnN3YXAoYik7CiB9CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdLUmV0YWlu
UHRyPFQ+JiBhLCBjb25zdCBXS1JldGFpblB0cjxVPiYgYikKK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV0tSZXRhaW5QdHI8VD4m
IGEsIGNvbnN0IFdLUmV0YWluUHRyPFU+JiBiKQogeyAKICAgICByZXR1cm4gYS5nZXQoKSA9PSBi
LmdldCgpOyAKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgV0tSZXRhaW5QdHI8VD4mIGEsIFUqIGIpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdLUmV0
YWluUHRyPFQ+JiBhLCBVKiBiKQogeyAKICAgICByZXR1cm4gYS5nZXQoKSA9PSBiOyAKIH0KIAot
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0o
VCogYSwgY29uc3QgV0tSZXRhaW5QdHI8VT4mIGIpIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShUKiBhLCBjb25zdCBXS1JldGFpblB0cjxV
PiYgYikgCiB7CiAgICAgcmV0dXJuIGEgPT0gYi5nZXQoKTsgCiB9CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdLUmV0YWlu
UHRyPFQ+JiBhLCBjb25zdCBXS1JldGFpblB0cjxVPiYgYikKK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV0tSZXRhaW5QdHI8VD4m
IGEsIGNvbnN0IFdLUmV0YWluUHRyPFU+JiBiKQogeyAKICAgICByZXR1cm4gYS5nZXQoKSAhPSBi
LmdldCgpOyAKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgV0tSZXRhaW5QdHI8VD4mIGEsIFUqIGIpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdLUmV0
YWluUHRyPFQ+JiBhLCBVKiBiKQogewogICAgIHJldHVybiBhLmdldCgpICE9IGI7IAogfQogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShU
KiBhLCBjb25zdCBXS1JldGFpblB0cjxVPiYgYikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oVCogYSwgY29uc3QgV0tSZXRhaW5QdHI8VT4m
IGIpCiB7IAogICAgIHJldHVybiBhICE9IGIuZ2V0KCk7IAogfQo=
</data>
<flag name="review"
          id="49767"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>