<?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>106294</bug_id>
          
          <creation_ts>2013-01-07 20:42:27 -0800</creation_ts>
          <short_desc>[Shadow DOM] Distribution related code on ElementShadow should be minimized.</short_desc>
          <delta_ts>2013-01-09 18:31:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          <blocked>103339</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>philn</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>801975</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-07 20:42:27 -0800</bug_when>
    <thetext>This is a dual of 106282.
There are many projection related code in ElementShadow.cpp, which should be moved ContentDistributor or its family.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803090</commentid>
    <comment_count>1</comment_count>
      <attachid>181862</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-08 23:50:10 -0800</bug_when>
    <thetext>Created attachment 181862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803092</commentid>
    <comment_count>2</comment_count>
      <attachid>181862</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-08 23:55:34 -0800</bug_when>
    <thetext>Comment on attachment 181862
Patch

Attachment 181862 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15771384</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803108</commentid>
    <comment_count>3</comment_count>
      <attachid>181862</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-09 00:31:45 -0800</bug_when>
    <thetext>Comment on attachment 181862
Patch

Attachment 181862 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15761402</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803129</commentid>
    <comment_count>4</comment_count>
      <attachid>181872</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-09 01:21:18 -0800</bug_when>
    <thetext>Created attachment 181872
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803136</commentid>
    <comment_count>5</comment_count>
      <attachid>181872</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-09 01:26:44 -0800</bug_when>
    <thetext>Comment on attachment 181872
Patch

Attachment 181872 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15762418</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803141</commentid>
    <comment_count>6</comment_count>
      <attachid>181872</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-01-09 01:37:19 -0800</bug_when>
    <thetext>Comment on attachment 181872
Patch

Attachment 181872 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15766361</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803148</commentid>
    <comment_count>7</comment_count>
      <attachid>181872</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-09 01:45:37 -0800</bug_when>
    <thetext>Comment on attachment 181872
Patch

Attachment 181872 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15757445</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803170</commentid>
    <comment_count>8</comment_count>
      <attachid>181882</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-09 02:24:32 -0800</bug_when>
    <thetext>Created attachment 181882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803191</commentid>
    <comment_count>9</comment_count>
      <attachid>181882</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-09 03:16:28 -0800</bug_when>
    <thetext>Comment on attachment 181882
Patch

Attachment 181882 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15762444

New failing tests:
inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803388</commentid>
    <comment_count>10</comment_count>
      <attachid>181882</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-09 09:26:38 -0800</bug_when>
    <thetext>Comment on attachment 181882
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=181882&amp;action=review

&gt; Source/WebCore/dom/ElementShadow.h:69
&gt; +    void invalidateDistribution() { m_distributor.invalidateDistribution(host()); }
&gt; +    void ensureDistribution() { m_distributor.ensureDistribution(host()); }
&gt; +    void didAffectSelector(AffectedSelectorMask mask) { m_distributor.didAffectSelector(host(), mask); }
&gt; +    void willAffectSelector() { m_distributor.willAffectSelector(host()); }

I wonder if these plumb-throughs could be just eliminated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803785</commentid>
    <comment_count>11</comment_count>
      <attachid>181882</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-09 15:38:42 -0800</bug_when>
    <thetext>Comment on attachment 181882
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=181882&amp;action=review

Thanks for reviewing! I believe cr-linux redness came fron the tree itself
but I&apos;ll check it before landing.

&gt;&gt; Source/WebCore/dom/ElementShadow.h:69
&gt;&gt; +    void willAffectSelector() { m_distributor.willAffectSelector(host()); }
&gt; 
&gt; I wonder if these plumb-throughs could be just eliminated?

I first tried that but the code then had strange duplication: shadow-&gt;distributor().invalidateDistribution(shadow-&gt;host());
So I gave it up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803860</commentid>
    <comment_count>12</comment_count>
      <attachid>182023</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-09 17:16:11 -0800</bug_when>
    <thetext>Created attachment 182023
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803861</commentid>
    <comment_count>13</comment_count>
      <attachid>182023</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-09 17:17:31 -0800</bug_when>
    <thetext>Comment on attachment 182023
Patch for landing

Rejecting attachment 182023 from commit-queue.

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, u&apos;--status-host=queues.webkit.org&apos;, ...&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
 file Source/WebCore/testing/Internals.cpp
patching file Source/WebKit/win/WebKit.vcproj/WebKit.def.in
Hunk #1 FAILED at 181.
Hunk #2 FAILED at 570.
Hunk #3 FAILED at 959.
Hunk #4 FAILED at 1348.
4 out of 4 hunks FAILED -- saving rejects to file Source/WebKit/win/WebKit.vcproj/WebKit.def.in.rej
patching file Source/autotools/symbols.filter
patching file ChangeLog

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/15758740</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803904</commentid>
    <comment_count>14</comment_count>
      <attachid>182035</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-09 18:06:49 -0800</bug_when>
    <thetext>Created attachment 182035
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803921</commentid>
    <comment_count>15</comment_count>
      <attachid>182035</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-09 18:31:00 -0800</bug_when>
    <thetext>Comment on attachment 182035
Patch for landing

Clearing flags on attachment: 182035

Committed r139269: &lt;http://trac.webkit.org/changeset/139269&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803922</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-09 18:31:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181862</attachid>
            <date>2013-01-08 23:50:10 -0800</date>
            <delta_ts>2013-01-09 01:21:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106294-20130109164714.patch</filename>
            <type>text/plain</type>
            <size>27353</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOGEx
YWM5MWZlYWRkMTY3ZTBmYjhlMDQ5MGU3YjgxOWVhNDAwMWU4Zi4uNDkzNGI5ZDk2MjkxOTI1NzM5
MWRmMDVhY2E0MzgzYTRjZWRmNjE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtOTE3LDE1
ICs5MTcsMTUgQEAgdm9pZCBFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRv
bWljU3RyaW5nJiBuZXdDbGFzc1N0cmluZykKIGJvb2wgRWxlbWVudDo6c2hvdWxkSW52YWxpZGF0
ZURpc3RyaWJ1dGlvbldoZW5BdHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRT
aGFkb3csIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3
VmFsdWUpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnRTaGFkb3cpOwotICAgIGVsZW1lbnRTaGFkb3ct
PmVuc3VyZVNlbGVjdEZlYXR1cmVTZXRDb2xsZWN0ZWQoKTsKKyAgICBjb25zdCBTZWxlY3RSdWxl
RmVhdHVyZVNldCYgZmVhdHVyZVNldCA9IGVsZW1lbnRTaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZW5z
dXJlU2VsZWN0RmVhdHVyZVNldChlbGVtZW50U2hhZG93KTsKIAogICAgIGlmIChpc0lkQXR0cmli
dXRlTmFtZShuYW1lKSkgewogICAgICAgICBBdG9taWNTdHJpbmcgb2xkSWQgPSBhdHRyaWJ1dGVE
YXRhKCktPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCk7CiAgICAgICAgIEF0b21pY1N0cmluZyBuZXdJ
ZCA9IG1ha2VJZEZvclN0eWxlUmVzb2x1dGlvbihuZXdWYWx1ZSwgZG9jdW1lbnQoKS0+aW5RdWly
a3NNb2RlKCkpOwogICAgICAgICBpZiAobmV3SWQgIT0gb2xkSWQpIHsKLSAgICAgICAgICAgIGlm
ICghb2xkSWQuaXNFbXB0eSgpICYmIGVsZW1lbnRTaGFkb3ctPnNlbGVjdFJ1bGVGZWF0dXJlU2V0
KCkuaGFzU2VsZWN0b3JGb3JJZChvbGRJZCkpCisgICAgICAgICAgICBpZiAoIW9sZElkLmlzRW1w
dHkoKSAmJiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9ySWQob2xkSWQpKQogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgaWYgKCFuZXdJZC5pc0VtcHR5KCkgJiYgZWxl
bWVudFNoYWRvdy0+c2VsZWN0UnVsZUZlYXR1cmVTZXQoKS5oYXNTZWxlY3RvckZvcklkKG5ld0lk
KSkKKyAgICAgICAgICAgIGlmICghbmV3SWQuaXNFbXB0eSgpICYmIGZlYXR1cmVTZXQuaGFzU2Vs
ZWN0b3JGb3JJZChuZXdJZCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICB9CkBAIC05MzcsMTYgKzkzNywxNiBAQCBib29sIEVsZW1lbnQ6OnNob3VsZEludmFs
aWRhdGVEaXN0cmlidXRpb25XaGVuQXR0cmlidXRlQ2hhbmdlZChFbGVtZW50U2hhZG93KiBlbAog
ICAgICAgICAgICAgY29uc3QgYm9vbCBzaG91bGRGb2xkQ2FzZSA9IGRvY3VtZW50KCktPmluUXVp
cmtzTW9kZSgpOwogICAgICAgICAgICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgb2xkQ2xhc3Nl
cyA9IGF0dHJpYnV0ZURhdGEtPmNsYXNzTmFtZXMoKTsKICAgICAgICAgICAgIGNvbnN0IFNwYWNl
U3BsaXRTdHJpbmcgbmV3Q2xhc3NlcyhuZXdDbGFzc1N0cmluZywgc2hvdWxkRm9sZENhc2UpOwot
ICAgICAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3JGb3JDbGFzc0NoYW5nZShvbGRDbGFzc2VzLCBu
ZXdDbGFzc2VzLCBlbGVtZW50U2hhZG93LT5zZWxlY3RSdWxlRmVhdHVyZVNldCgpKSkKKyAgICAg
ICAgICAgIGlmIChjaGVja1NlbGVjdG9yRm9yQ2xhc3NDaGFuZ2Uob2xkQ2xhc3NlcywgbmV3Q2xh
c3NlcywgZmVhdHVyZVNldCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0gZWxzZSBpZiAoY29uc3QgRWxlbWVudEF0dHJpYnV0ZURhdGEqIGF0dHJpYnV0ZURhdGEgPSB0
aGlzLT5hdHRyaWJ1dGVEYXRhKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFNwYWNlU3BsaXRTdHJp
bmcmIG9sZENsYXNzZXMgPSBhdHRyaWJ1dGVEYXRhLT5jbGFzc05hbWVzKCk7Ci0gICAgICAgICAg
ICBpZiAoY2hlY2tTZWxlY3RvckZvckNsYXNzQ2hhbmdlKG9sZENsYXNzZXMsIGVsZW1lbnRTaGFk
b3ctPnNlbGVjdFJ1bGVGZWF0dXJlU2V0KCkpKQorICAgICAgICAgICAgaWYgKGNoZWNrU2VsZWN0
b3JGb3JDbGFzc0NoYW5nZShvbGRDbGFzc2VzLCBmZWF0dXJlU2V0KSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBlbGVtZW50U2hh
ZG93LT5zZWxlY3RSdWxlRmVhdHVyZVNldCgpLmhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKG5hbWUu
bG9jYWxOYW1lKCkpOworICAgIHJldHVybiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9yQXR0cmli
dXRlKG5hbWUubG9jYWxOYW1lKCkpOwogfQogCiAvLyBSZXR1cm5zIHRydWUgaXMgdGhlIGdpdmVu
IGF0dHJpYnV0ZSBpcyBhbiBldmVudCBoYW5kbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFk
b3cuY3BwCmluZGV4IDllNjg2YTdkOGNkYTk4YjNlM2UyZDU1MzkwM2E2ZmQ5ODAzNDQyNmEuLjcy
MDFkMzI3NTIyMDdhNTViN2E3ODA1YTE5Zjg0Yjg0ZWU0ZGFmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudFNoYWRvdy5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogRWxlbWVudFNoYWRvdzo6RWxlbWVudFNoYWRvdygpCi0gICAgOiBtX3Nob3VsZENvbGxlY3RT
ZWxlY3RGZWF0dXJlU2V0KGZhbHNlKQogewogfQogCkBAIC04Myw4ICs4Miw3IEBAIHZvaWQgRWxl
bWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdChFbGVtZW50KiBzaGFkb3dIb3N0LCBQYXNzUmVmUHRy
PFNoYWRvd1Jvb3Q+IHNoCiAgICAgc2hhZG93Um9vdC0+c2V0SG9zdChzaGFkb3dIb3N0KTsKICAg
ICBzaGFkb3dSb290LT5zZXRQYXJlbnRUcmVlU2NvcGUoc2hhZG93SG9zdC0+dHJlZVNjb3BlKCkp
OwogICAgIG1fc2hhZG93Um9vdHMucHVzaChzaGFkb3dSb290LmdldCgpKTsKLSAgICBzZXRWYWxp
ZGl0eVVuZGV0ZXJtaW5lZCgpOwotICAgIGludmFsaWRhdGVEaXN0cmlidXRpb24oc2hhZG93SG9z
dCk7CisgICAgbV9kaXN0cmlidXRvci5kaWRTaGFkb3dCb3VuZGFyeUNoYW5nZShzaGFkb3dIb3N0
KTsKICAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcihzaGFkb3dIb3N0KS5ub3RpZnkoc2hh
ZG93Um9vdC5nZXQoKSk7CiAKICAgICAvLyBFeGlzdGVuY2Ugb2Ygc2hhZG93IHJvb3RzIHJlcXVp
cmVzIHRoZSBob3N0IGFuZCBpdHMgY2hpbGRyZW4gdG8gZG8gdHJhdmVyc2FsIHVzaW5nIENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlci4KQEAgLTExOSw3ICsxMTcsNyBAQCB2b2lkIEVsZW1lbnRTaGFk
b3c6OnJlbW92ZUFsbFNoYWRvd1Jvb3RzKCkKICAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlm
aWVyKHNoYWRvd0hvc3QpLm5vdGlmeShvbGRSb290LmdldCgpKTsKICAgICB9CiAKLSAgICBpbnZh
bGlkYXRlRGlzdHJpYnV0aW9uKHNoYWRvd0hvc3QpOworICAgIG1fZGlzdHJpYnV0b3IuaW52YWxp
ZGF0ZURpc3RyaWJ1dGlvbihzaGFkb3dIb3N0KTsKIH0KIAogdm9pZCBFbGVtZW50U2hhZG93Ojph
dHRhY2goKQpAQCAtMTY1LDk0ICsxNjMsNiBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OnJlY2FsY1N0
eWxlKE5vZGU6OlN0eWxlQ2hhbmdlIGNoYW5nZSkKICAgICAgICAgcm9vdC0+cmVjYWxjU3R5bGUo
Y2hhbmdlKTsKIH0KIAotdm9pZCBFbGVtZW50U2hhZG93OjplbnN1cmVEaXN0cmlidXRpb24oKQot
ewotICAgIGlmICghbV9kaXN0cmlidXRvci5uZWVkc0Rpc3RyaWJ1dGlvbigpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgbV9kaXN0cmlidXRvci5kaXN0cmlidXRlKGhvc3QoKSk7Ci19Ci0KLXZvaWQg
RWxlbWVudFNoYWRvdzo6ZW5zdXJlRGlzdHJpYnV0aW9uRnJvbURvY3VtZW50KCkKLXsKLSAgICBW
ZWN0b3I8RWxlbWVudCosIDg+IGhvc3RzOwotICAgIGZvciAoRWxlbWVudCogY3VycmVudCA9IGhv
c3QoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnNoYWRvd0hvc3QoKSkKLSAgICAgICAg
aG9zdHMuYXBwZW5kKGN1cnJlbnQpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IGhvc3RzLnNpemUo
KTsgaSA+IDA7IC0taSkKLSAgICAgICAgaG9zdHNbaSAtIDFdLT5zaGFkb3coKS0+ZW5zdXJlRGlz
dHJpYnV0aW9uKCk7Ci19Ci0KLXZvaWQgRWxlbWVudFNoYWRvdzo6c2V0VmFsaWRpdHlVbmRldGVy
bWluZWQoKQotewotICAgIG1fZGlzdHJpYnV0b3Iuc2V0VmFsaWRpdHkoQ29udGVudERpc3RyaWJ1
dG9yOjpVbmRldGVybWluZWQpOwotfQotCi12b2lkIEVsZW1lbnRTaGFkb3c6OmludmFsaWRhdGVE
aXN0cmlidXRpb24oKQotewotICAgIGludmFsaWRhdGVEaXN0cmlidXRpb24oaG9zdCgpKTsKLX0K
LQotdm9pZCBFbGVtZW50U2hhZG93OjppbnZhbGlkYXRlRGlzdHJpYnV0aW9uKEVsZW1lbnQqIGhv
c3QpCi17Ci0gICAgYm9vbCBuZWVkc0ludmFsaWRhdGlvbiA9IG1fZGlzdHJpYnV0b3IubmVlZHNJ
bnZhbGlkYXRpb24oKTsKLSAgICBib29sIG5lZWRzUmVhdHRhY2ggPSBuZWVkc0ludmFsaWRhdGlv
biA/IG1fZGlzdHJpYnV0b3IuaW52YWxpZGF0ZShob3N0KSA6IGZhbHNlOwotCi0gICAgaWYgKG5l
ZWRzUmVhdHRhY2ggJiYgaG9zdC0+YXR0YWNoZWQoKSkgewotICAgICAgICBmb3IgKE5vZGUqIG4g
PSBob3N0LT5maXJzdENoaWxkKCk7IG47IG4gPSBuLT5uZXh0U2libGluZygpKQotICAgICAgICAg
ICAgbi0+bGF6eVJlYXR0YWNoKCk7Ci0gICAgICAgIGhvc3QtPnNldE5lZWRzU3R5bGVSZWNhbGMo
KTsKLSAgICB9Ci0KLSAgICBpZiAobmVlZHNJbnZhbGlkYXRpb24pCi0gICAgICAgIG1fZGlzdHJp
YnV0b3IuZmluaXNoSW5pdmFsaWRhdGlvbigpOwotfQotCi12b2lkIEVsZW1lbnRTaGFkb3c6OnNl
dFNob3VsZENvbGxlY3RTZWxlY3RGZWF0dXJlU2V0KCkKLXsKLSAgICBpZiAoc2hvdWxkQ29sbGVj
dFNlbGVjdEZlYXR1cmVTZXQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zaG91bGRDb2xs
ZWN0U2VsZWN0RmVhdHVyZVNldCA9IHRydWU7Ci0KLSAgICBpZiAoU2hhZG93Um9vdCogcGFyZW50
U2hhZG93Um9vdCA9IGhvc3QoKS0+Y29udGFpbmluZ1NoYWRvd1Jvb3QoKSkgewotICAgICAgICBp
ZiAoRWxlbWVudFNoYWRvdyogcGFyZW50RWxlbWVudFNoYWRvdyA9IHBhcmVudFNoYWRvd1Jvb3Qt
Pm93bmVyKCkpCi0gICAgICAgICAgICBwYXJlbnRFbGVtZW50U2hhZG93LT5zZXRTaG91bGRDb2xs
ZWN0U2VsZWN0RmVhdHVyZVNldCgpOwotICAgIH0KLX0KLQotdm9pZCBFbGVtZW50U2hhZG93Ojpl
bnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCkKLXsKLSAgICBpZiAoIW1fc2hvdWxkQ29s
bGVjdFNlbGVjdEZlYXR1cmVTZXQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc2VsZWN0RmVh
dHVyZXMuY2xlYXIoKTsKLSAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBvbGRlc3RTaGFkb3dS
b290KCk7IHJvb3Q7IHJvb3QgPSByb290LT55b3VuZ2VyU2hhZG93Um9vdCgpKQotICAgICAgICBj
b2xsZWN0U2VsZWN0RmVhdHVyZVNldEZyb20ocm9vdCk7Ci0gICAgbV9zaG91bGRDb2xsZWN0U2Vs
ZWN0RmVhdHVyZVNldCA9IGZhbHNlOwotfQotCi12b2lkIEVsZW1lbnRTaGFkb3c6OmNvbGxlY3RT
ZWxlY3RGZWF0dXJlU2V0RnJvbShTaGFkb3dSb290KiByb290KQotewotICAgIGlmIChTY29wZUNv
bnRlbnREaXN0cmlidXRpb246Omhhc0VsZW1lbnRTaGFkb3cocm9vdCkpIHsKLSAgICAgICAgZm9y
IChFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4ocm9vdCk7
IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQpKSB7Ci0g
ICAgICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRvdyA9IGVsZW1lbnQtPnNo
YWRvdygpKSB7Ci0gICAgICAgICAgICAgICAgZWxlbWVudFNoYWRvdy0+ZW5zdXJlU2VsZWN0RmVh
dHVyZVNldENvbGxlY3RlZCgpOwotICAgICAgICAgICAgICAgIG1fc2VsZWN0RmVhdHVyZXMuYWRk
KGVsZW1lbnRTaGFkb3ctPm1fc2VsZWN0RmVhdHVyZXMpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgaWYgKFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzQ29udGVu
dEVsZW1lbnQocm9vdCkpIHsKLSAgICAgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVu
dFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4ocm9vdCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50
VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBpZiAoaXNIVE1MQ29udGVu
dEVsZW1lbnQoZWxlbWVudCkpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBDU1NTZWxlY3Rvckxp
c3QmIGxpc3QgPSB0b0hUTUxDb250ZW50RWxlbWVudChlbGVtZW50KS0+c2VsZWN0b3JMaXN0KCk7
Ci0gICAgICAgICAgICAgICAgZm9yIChDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBsaXN0LmZpcnN0
KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IGxpc3QubmV4dChzZWxlY3RvcikpCi0gICAgICAgICAg
ICAgICAgICAgIG1fc2VsZWN0RmVhdHVyZXMuY29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKHNl
bGVjdG9yKTsgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotfQotCiB2b2lkIEVsZW1lbnRTaGFkb3c6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZv
IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpET00pOwpA
QCAtMjY1LDExICsxNzUsNCBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OnJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgaW5mby5hZGRN
ZW1iZXIobV9kaXN0cmlidXRvcik7CiB9CiAKLXZvaWQgRWxlbWVudFNoYWRvdzo6ZGlkQWZmZWN0
U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2sgbWFzaykKLXsKLSAgICBlbnN1cmVTZWxlY3RG
ZWF0dXJlU2V0Q29sbGVjdGVkKCk7Ci0gICAgaWYgKHNlbGVjdFJ1bGVGZWF0dXJlU2V0KCkuaGFz
U2VsZWN0b3JGb3IobWFzaykpCi0gICAgICAgIGludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
U2hhZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCmluZGV4IDU5NGM5
ZTY2MWM4MDhkYmJlMzgyNjAyYzYwMjM2YTMwYzc1MDZlOTcuLjkzOWU5YjY5ZjljNjY1N2RhYWI1
OGYwMjNkZTE4ZjkwNTAxMDY3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50U2hhZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaApAQCAt
MjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIlNlbGVjdFJ1bGVGZWF0dXJlU2V0LmgiCiAj
aW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC01Miw2ICs1MSw3IEBAIHB1YmxpYzoK
ICAgICBFbGVtZW50KiBob3N0KCkgY29uc3Q7CiAgICAgU2hhZG93Um9vdCogeW91bmdlc3RTaGFk
b3dSb290KCkgY29uc3Q7CiAgICAgU2hhZG93Um9vdCogb2xkZXN0U2hhZG93Um9vdCgpIGNvbnN0
OworICAgIEVsZW1lbnRTaGFkb3cqIGNvbnRhaW5pbmdTaGFkb3coKSBjb25zdDsKIAogICAgIHZv
aWQgcmVtb3ZlQWxsU2hhZG93Um9vdHMoKTsKICAgICB2b2lkIGFkZFNoYWRvd1Jvb3QoRWxlbWVu
dCogc2hhZG93SG9zdCwgUGFzc1JlZlB0cjxTaGFkb3dSb290PiwgU2hhZG93Um9vdDo6U2hhZG93
Um9vdFR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTYzLDMxICs2MywxOSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBuZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgdm9pZCByZWNhbGNTdHlsZShOb2RlOjpT
dHlsZUNoYW5nZSk7CiAKLSAgICB2b2lkIHNldFZhbGlkaXR5VW5kZXRlcm1pbmVkKCk7Ci0gICAg
dm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7Ci0gICAgdm9pZCBlbnN1cmVEaXN0cmlidXRp
b24oKTsKLSAgICB2b2lkIGVuc3VyZURpc3RyaWJ1dGlvbkZyb21Eb2N1bWVudCgpOworICAgIHZv
aWQgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpIHsgbV9kaXN0cmlidXRvci5pbnZhbGlkYXRlRGlz
dHJpYnV0aW9uKGhvc3QoKSk7IH0KKyAgICB2b2lkIGVuc3VyZURpc3RyaWJ1dGlvbigpIHsgbV9k
aXN0cmlidXRvci5lbnN1cmVEaXN0cmlidXRpb24oaG9zdCgpKTsgfQorICAgIHZvaWQgZGlkQWZm
ZWN0U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2sgbWFzaykgeyBtX2Rpc3RyaWJ1dG9yLmRp
ZEFmZmVjdFNlbGVjdG9yKGhvc3QoKSwgbWFzayk7IH0KKyAgICB2b2lkIHdpbGxBZmZlY3RTZWxl
Y3RvcigpIHsgbV9kaXN0cmlidXRvci53aWxsQWZmZWN0U2VsZWN0b3IoaG9zdCgpKTsgfQogCiAg
ICAgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0cmlidXRvcigpOwogICAgIGNvbnN0IENvbnRlbnRE
aXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKSBjb25zdDsKIAotICAgIHZvaWQgZGlkQWZmZWN0U2Vs
ZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2spOwotICAgIGJvb2wgc2hvdWxkQ29sbGVjdFNlbGVj
dEZlYXR1cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENvbGxlY3RTZWxlY3RGZWF0dXJl
U2V0OyB9Ci0gICAgdm9pZCBzZXRTaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCgpOwotICAg
IHZvaWQgZW5zdXJlU2VsZWN0RmVhdHVyZVNldENvbGxlY3RlZCgpOwotCi0gICAgY29uc3QgU2Vs
ZWN0UnVsZUZlYXR1cmVTZXQmIHNlbGVjdFJ1bGVGZWF0dXJlU2V0KCkgY29uc3Q7Ci0KICAgICB2
b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIHByaXZhdGU6
Ci0gICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKEVsZW1lbnQqIGhvc3QpOwotCi0gICAg
dm9pZCBjb2xsZWN0U2VsZWN0RmVhdHVyZVNldEZyb20oU2hhZG93Um9vdCopOwogCiAgICAgRG91
Ymx5TGlua2VkTGlzdDxTaGFkb3dSb290PiBtX3NoYWRvd1Jvb3RzOwogICAgIENvbnRlbnREaXN0
cmlidXRvciBtX2Rpc3RyaWJ1dG9yOwotICAgIFNlbGVjdFJ1bGVGZWF0dXJlU2V0IG1fc2VsZWN0
RmVhdHVyZXM7Ci0gICAgYm9vbCBtX3Nob3VsZENvbGxlY3RTZWxlY3RGZWF0dXJlU2V0IDogMTsK
IH07CiAKIGlubGluZSBTaGFkb3dSb290KiBFbGVtZW50U2hhZG93Ojp5b3VuZ2VzdFNoYWRvd1Jv
b3QoKSBjb25zdApAQCAtMTE2LDEyICsxMDQsNiBAQCBpbmxpbmUgRWxlbWVudCogRWxlbWVudFNo
YWRvdzo6aG9zdCgpIGNvbnN0CiAgICAgcmV0dXJuIHlvdW5nZXN0U2hhZG93Um9vdCgpLT5ob3N0
KCk7CiB9CiAKLWlubGluZSBjb25zdCBTZWxlY3RSdWxlRmVhdHVyZVNldCYgRWxlbWVudFNoYWRv
dzo6c2VsZWN0UnVsZUZlYXR1cmVTZXQoKSBjb25zdAotewotICAgIEFTU0VSVCghbV9zaG91bGRD
b2xsZWN0U2VsZWN0RmVhdHVyZVNldCk7Ci0gICAgcmV0dXJuIG1fc2VsZWN0RmVhdHVyZXM7Ci19
Ci0KIGlubGluZSBTaGFkb3dSb290KiBOb2RlOjp5b3VuZ2VzdFNoYWRvd1Jvb3QoKSBjb25zdAog
ewogICAgIGlmICghdGhpcy0+aXNFbGVtZW50Tm9kZSgpKQpAQCAtMTMxLDYgKzExMywxNCBAQCBp
bmxpbmUgU2hhZG93Um9vdCogTm9kZTo6eW91bmdlc3RTaGFkb3dSb290KCkgY29uc3QKICAgICBy
ZXR1cm4gMDsKIH0KIAoraW5saW5lIEVsZW1lbnRTaGFkb3cqIEVsZW1lbnRTaGFkb3c6OmNvbnRh
aW5pbmdTaGFkb3coKSBjb25zdAoreworICAgIFNoYWRvd1Jvb3QqIHBhcmVudFJvb3QgPSBob3N0
KCktPmNvbnRhaW5pbmdTaGFkb3dSb290KCk7CisgICAgaWYgKCFwYXJlbnRSb290KQorICAgICAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gcGFyZW50Um9vdC0+b3duZXIoKTsKK30KKwogY2xhc3Mg
U2hhZG93Um9vdFZlY3RvciA6IHB1YmxpYyBWZWN0b3I8UmVmUHRyPFNoYWRvd1Jvb3Q+ID4gewog
cHVibGljOgogICAgIGV4cGxpY2l0IFNoYWRvd1Jvb3RWZWN0b3IoRWxlbWVudFNoYWRvdyogdHJl
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmli
dXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3Iu
Y3BwCmluZGV4IDc3YzRkM2IxNmExZDA4MDAyZGY1Y2M1NjVmNTBlNDU2Y2FkMTA3M2EuLjBkM2Ri
ZWEwYjhiN2NiMTY4MjIyY2JhZjgyZTA5NjgyNzNhYmI3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcApAQCAtMTEwLDcgKzExMCw3
IEBAIGNvbnN0IFZlY3RvcjxSZWZQdHI8SW5zZXJ0aW9uUG9pbnQ+ID4mIFNjb3BlQ29udGVudERp
c3RyaWJ1dGlvbjo6ZW5zdXJlSW5zZXJ0aW9uCiAgICAgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnRM
aXN0OwogfQogCi12b2lkIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6cmVnaXN0ZXJJbnNlcnRp
b25Qb2ludChTaGFkb3dSb290KiBzY29wZSwgSW5zZXJ0aW9uUG9pbnQqIHBvaW50KQordm9pZCBT
Y29wZUNvbnRlbnREaXN0cmlidXRpb246OnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9u
UG9pbnQqIHBvaW50KQogewogICAgIHN3aXRjaCAocG9pbnQtPmluc2VydGlvblBvaW50VHlwZSgp
KSB7CiAgICAgY2FzZSBJbnNlcnRpb25Qb2ludDo6U2hhZG93SW5zZXJ0aW9uUG9pbnQ6CkBAIC0x
MTgsMTQgKzExOCwxMyBAQCB2b2lkIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6cmVnaXN0ZXJJ
bnNlcnRpb25Qb2ludChTaGFkb3dSb290KiBzY29wZSwgSW5zZXJ0aQogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEluc2VydGlvblBvaW50OjpDb250ZW50SW5zZXJ0aW9uUG9pbnQ6CiAgICAgICAg
ICsrbV9udW1iZXJPZkNvbnRlbnRFbGVtZW50Q2hpbGRyZW47Ci0gICAgICAgIHNjb3BlLT5vd25l
cigpLT5zZXRTaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCgpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKICAgICBpbnZhbGlkYXRlSW5zZXJ0aW9uUG9pbnRMaXN0KCk7CiB9CiAKLXZvaWQg
U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjp1bnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQoU2hhZG93
Um9vdCogc2NvcGUsIEluc2VydGlvblBvaW50KiBwb2ludCkKK3ZvaWQgU2NvcGVDb250ZW50RGlz
dHJpYnV0aW9uOjp1bnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqIHBvaW50
KQogewogICAgIHN3aXRjaCAocG9pbnQtPmluc2VydGlvblBvaW50VHlwZSgpKSB7CiAgICAgY2Fz
ZSBJbnNlcnRpb25Qb2ludDo6U2hhZG93SW5zZXJ0aW9uUG9pbnQ6CkBAIC0xMzUsOCArMTM0LDYg
QEAgdm9pZCBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OnVucmVnaXN0ZXJJbnNlcnRpb25Qb2lu
dChTaGFkb3dSb290KiBzY29wZSwgSW5zZXIKICAgICBjYXNlIEluc2VydGlvblBvaW50OjpDb250
ZW50SW5zZXJ0aW9uUG9pbnQ6CiAgICAgICAgIEFTU0VSVChtX251bWJlck9mQ29udGVudEVsZW1l
bnRDaGlsZHJlbiA+IDApOwogICAgICAgICAtLW1fbnVtYmVyT2ZDb250ZW50RWxlbWVudENoaWxk
cmVuOwotICAgICAgICBpZiAoc2NvcGUtPm93bmVyKCkpCi0gICAgICAgICAgICBzY29wZS0+b3du
ZXIoKS0+c2V0U2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQoKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCkBAIC0xODEsNyArMTc4LDggQEAgSW5zZXJ0aW9uUG9pbnQqIFNjb3BlQ29udGVu
dERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyhjb25zdCBTaGFkb3dSb290KiBob2xkZXIpCiB9CiAK
IENvbnRlbnREaXN0cmlidXRvcjo6Q29udGVudERpc3RyaWJ1dG9yKCkKLSAgICA6IG1fdmFsaWRp
dHkoVW5kZXRlcm1pbmVkKQorICAgIDogbV9uZWVkc1NlbGVjdEZlYXR1cmVTZXQoZmFsc2UpCisg
ICAgLCBtX3ZhbGlkaXR5KFVuZGV0ZXJtaW5lZCkKIHsKIH0KIApAQCAtMjg3LDEyICsyODUsNiBA
QCBib29sIENvbnRlbnREaXN0cmlidXRvcjo6aW52YWxpZGF0ZShFbGVtZW50KiBob3N0KQogICAg
IHJldHVybiBuZWVkc1JlYXR0YWNoOwogfQogCi12b2lkIENvbnRlbnREaXN0cmlidXRvcjo6Zmlu
aXNoSW5pdmFsaWRhdGlvbigpCi17Ci0gICAgQVNTRVJUKG1fdmFsaWRpdHkgPT0gSW52YWxpZGF0
aW5nKTsKLSAgICBtX3ZhbGlkaXR5ID0gSW52YWxpZGF0ZWQ7Ci19Ci0KIHZvaWQgQ29udGVudERp
c3RyaWJ1dG9yOjpkaXN0cmlidXRlU2VsZWN0aW9uc1RvKEluc2VydGlvblBvaW50KiBpbnNlcnRp
b25Qb2ludCwgY29uc3QgQ29udGVudERpc3RyaWJ1dGlvbiYgcG9vbCwgVmVjdG9yPGJvb2w+JiBk
aXN0cmlidXRlZCkKIHsKICAgICBDb250ZW50RGlzdHJpYnV0aW9uIGRpc3RyaWJ1dGlvbjsKQEAg
LTM0MiwxMSArMzM0LDk4IEBAIHZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmlidXRlTm9k
ZUNoaWxkcmVuVG8oSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50CiAgICAgaW5zZXJ0aW9u
UG9pbnQtPnNldERpc3RyaWJ1dGlvbihkaXN0cmlidXRpb24pOwogfQogCi12b2lkIENvbnRlbnRE
aXN0cmlidXRvcjo6aW52YWxpZGF0ZURpc3RyaWJ1dGlvbkluKENvbnRlbnREaXN0cmlidXRpb24q
IGxpc3QpCit2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9uKEVsZW1l
bnQqIGhvc3QpCit7CisgICAgaWYgKCFuZWVkc0Rpc3RyaWJ1dGlvbigpKQorICAgICAgICByZXR1
cm47CisgICAgZGlzdHJpYnV0ZShob3N0KTsKK30KKwordm9pZCBDb250ZW50RGlzdHJpYnV0b3I6
OmVuc3VyZURpc3RyaWJ1dGlvbkZyb21Eb2N1bWVudChFbGVtZW50KiBzb3VyY2UpCit7CisgICAg
Q29udGFpbmVyTm9kZSogbWF5U2hhZG93ID0gc291cmNlLT50cmVlU2NvcGUoKS0+cm9vdE5vZGUo
KTsKKyAgICBpZiAoIW1heVNoYWRvdy0+aXNTaGFkb3dSb290KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIFZlY3RvcjxFbGVtZW50KiwgOD4gaG9zdHM7CisgICAgZm9yIChFbGVtZW50KiBjdXJy
ZW50ID0gdG9TaGFkb3dSb290KG1heVNoYWRvdyktPmhvc3QoKTsgY3VycmVudDsgY3VycmVudCA9
IGN1cnJlbnQtPnNoYWRvd0hvc3QoKSkKKyAgICAgICAgaG9zdHMuYXBwZW5kKGN1cnJlbnQpOwor
CisgICAgZm9yIChzaXplX3QgaSA9IGhvc3RzLnNpemUoKTsgaSA+IDA7IC0taSkKKyAgICAgICAg
aG9zdHNbaSAtIDFdLT5zaGFkb3coKS0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7Cit9CisKKwordm9p
ZCBDb250ZW50RGlzdHJpYnV0b3I6OmludmFsaWRhdGVEaXN0cmlidXRpb24oRWxlbWVudCogaG9z
dCkKK3sKKyAgICBib29sIGRpZE5lZWRJbnZhbGlkYXRpb24gPSBuZWVkc0ludmFsaWRhdGlvbigp
OworICAgIGJvb2wgbmVlZHNSZWF0dGFjaCA9IGRpZE5lZWRJbnZhbGlkYXRpb24gPyBpbnZhbGlk
YXRlKGhvc3QpIDogZmFsc2U7CisKKyAgICBpZiAobmVlZHNSZWF0dGFjaCAmJiBob3N0LT5hdHRh
Y2hlZCgpKSB7CisgICAgICAgIGZvciAoTm9kZSogbiA9IGhvc3QtPmZpcnN0Q2hpbGQoKTsgbjsg
biA9IG4tPm5leHRTaWJsaW5nKCkpCisgICAgICAgICAgICBuLT5sYXp5UmVhdHRhY2goKTsKKyAg
ICAgICAgaG9zdC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgIH0KKworICAgIGlmIChkaWRO
ZWVkSW52YWxpZGF0aW9uKSB7CisgICAgICAgIEFTU0VSVChtX3ZhbGlkaXR5ID09IEludmFsaWRh
dGluZyk7CisgICAgICAgIG1fdmFsaWRpdHkgPSBJbnZhbGlkYXRlZDsKKyAgICB9Cit9CisKK2Nv
bnN0IFNlbGVjdFJ1bGVGZWF0dXJlU2V0JiBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZVNlbGVj
dEZlYXR1cmVTZXQoRWxlbWVudFNoYWRvdyogc2hhZG93KQoreworICAgIGlmICghbV9uZWVkc1Nl
bGVjdEZlYXR1cmVTZXQpCisgICAgICAgIHJldHVybiBtX3NlbGVjdEZlYXR1cmVzOworCisgICAg
bV9zZWxlY3RGZWF0dXJlcy5jbGVhcigpOworICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHNo
YWRvdy0+b2xkZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+eW91bmdlclNoYWRv
d1Jvb3QoKSkKKyAgICAgICAgY29sbGVjdFNlbGVjdEZlYXR1cmVTZXRGcm9tKHJvb3QpOworICAg
IG1fbmVlZHNTZWxlY3RGZWF0dXJlU2V0ID0gZmFsc2U7CisgICAgcmV0dXJuIG1fc2VsZWN0RmVh
dHVyZXM7Cit9CisKK3ZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpjb2xsZWN0U2VsZWN0RmVhdHVy
ZVNldEZyb20oU2hhZG93Um9vdCogcm9vdCkKK3sKKyAgICBpZiAoU2NvcGVDb250ZW50RGlzdHJp
YnV0aW9uOjpoYXNFbGVtZW50U2hhZG93KHJvb3QpKSB7CisgICAgICAgIGZvciAoRWxlbWVudCog
ZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKHJvb3QpOyBlbGVtZW50OyBl
bGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dChlbGVtZW50KSkgeworICAgICAgICAgICAg
aWYgKEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFkb3cgPSBlbGVtZW50LT5zaGFkb3coKSkKKyAg
ICAgICAgICAgICAgICBtX3NlbGVjdEZlYXR1cmVzLmFkZChlbGVtZW50U2hhZG93LT5kaXN0cmli
dXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoZWxlbWVudFNoYWRvdykpOworICAgICAgICB9
CisgICAgfQorCisgICAgaWYgKFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzQ29udGVudEVs
ZW1lbnQocm9vdCkpIHsKKyAgICAgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRy
YXZlcnNhbDo6Zmlyc3RXaXRoaW4ocm9vdCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJh
dmVyc2FsOjpuZXh0KGVsZW1lbnQpKSB7CisgICAgICAgICAgICBpZiAoaXNIVE1MQ29udGVudEVs
ZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3Qm
IGxpc3QgPSB0b0hUTUxDb250ZW50RWxlbWVudChlbGVtZW50KS0+c2VsZWN0b3JMaXN0KCk7Cisg
ICAgICAgICAgICAgICAgZm9yIChDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBsaXN0LmZpcnN0KCk7
IHNlbGVjdG9yOyBzZWxlY3RvciA9IGxpc3QubmV4dChzZWxlY3RvcikpCisgICAgICAgICAgICAg
ICAgICAgIG1fc2VsZWN0RmVhdHVyZXMuY29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKHNlbGVj
dG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBDb250ZW50
RGlzdHJpYnV0b3I6OmRpZEFmZmVjdFNlbGVjdG9yKEVsZW1lbnQqIGhvc3QsIEFmZmVjdGVkU2Vs
ZWN0b3JNYXNrIG1hc2spCit7CisgICAgaWYgKGVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoaG9zdC0+
c2hhZG93KCkpLmhhc1NlbGVjdG9yRm9yKG1hc2spKQorICAgICAgICBpbnZhbGlkYXRlRGlzdHJp
YnV0aW9uKGhvc3QpOworfQorCit2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6d2lsbEFmZmVjdFNl
bGVjdG9yKEVsZW1lbnQqIGhvc3QpCit7CisgICAgZm9yIChFbGVtZW50U2hhZG93KiBzaGFkb3cg
PSBob3N0LT5zaGFkb3coKTsgc2hhZG93OyBzaGFkb3cgPSBzaGFkb3ctPmNvbnRhaW5pbmdTaGFk
b3coKSkgeworICAgICAgICBpZiAoc2hhZG93LT5kaXN0cmlidXRvcigpLm5lZWRzU2VsZWN0RmVh
dHVyZVNldCgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHNoYWRvdy0+ZGlzdHJpYnV0
b3IoKS5zZXROZWVkc1NlbGVjdEZlYXR1cmVTZXQoKTsKKyAgICB9CisKKyAgICBpbnZhbGlkYXRl
RGlzdHJpYnV0aW9uKGhvc3QpOworfQorCit2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZGlkU2hh
ZG93Qm91bmRhcnlDaGFuZ2UoRWxlbWVudCogaG9zdCkKIHsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxpc3QtPnNpemUoKTsgKytpKQotICAgICAgICBtX25vZGVUb0luc2VydGlvblBvaW50
LnJlbW92ZShsaXN0LT5hdChpKS5nZXQoKSk7Ci0gICAgbGlzdC0+Y2xlYXIoKTsKKyAgICBzZXRW
YWxpZGl0eShVbmRldGVybWluZWQpOworICAgIGludmFsaWRhdGVEaXN0cmlidXRpb24oaG9zdCk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRE
aXN0cmlidXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1
dG9yLmgKaW5kZXggZjk4MzgzN2YxMDY3M2FhZTRmODRiMzJlMDAwN2QyZGI0NjdlYTIzNy4uNDYw
ZDQxMzVkOTkwZThmZjY5Njc1N2Q1NjJhMGIwYjEzZWY3MzY4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpZm5kZWYgQ29udGVudERpc3RyaWJ1dG9yX2gKICNkZWZpbmUgQ29udGVudERpc3RyaWJ1dG9y
X2gKIAorI2luY2x1ZGUgIlNlbGVjdFJ1bGVGZWF0dXJlU2V0LmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CkBAIC03Nyw4ICs3OCw4IEBAIHB1YmxpYzoKICAgICBJbnNlcnRpb25Qb2ludCogaW5z
ZXJ0aW9uUG9pbnRBc3NpZ25lZFRvKCkgY29uc3QgeyByZXR1cm4gbV9pbnNlcnRpb25Qb2ludEFz
c2lnbmVkVG87IH0KICAgICB2b2lkIHNldEluc2VydGlvblBvaW50QXNzaWduZWRUbyhJbnNlcnRp
b25Qb2ludCogaW5zZXJ0aW9uUG9pbnQpIHsgbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG8gPSBp
bnNlcnRpb25Qb2ludDsgfQogCi0gICAgdm9pZCByZWdpc3Rlckluc2VydGlvblBvaW50KFNoYWRv
d1Jvb3QqLCBJbnNlcnRpb25Qb2ludCopOwotICAgIHZvaWQgdW5yZWdpc3Rlckluc2VydGlvblBv
aW50KFNoYWRvd1Jvb3QqLCBJbnNlcnRpb25Qb2ludCopOworICAgIHZvaWQgcmVnaXN0ZXJJbnNl
cnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCopOworICAgIHZvaWQgdW5yZWdpc3Rlckluc2VydGlv
blBvaW50KEluc2VydGlvblBvaW50Kik7CiAgICAgYm9vbCBoYXNTaGFkb3dFbGVtZW50Q2hpbGRy
ZW4oKSBjb25zdCB7IHJldHVybiBtX251bWJlck9mU2hhZG93RWxlbWVudENoaWxkcmVuID4gMDsg
fQogICAgIGJvb2wgaGFzQ29udGVudEVsZW1lbnRDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1f
bnVtYmVyT2ZDb250ZW50RWxlbWVudENoaWxkcmVuID4gMDsgfQogCkBAIC0xMjIsMjMgKzEyMywz
NSBAQCBwdWJsaWM6CiAgICAgfkNvbnRlbnREaXN0cmlidXRvcigpOwogCiAgICAgSW5zZXJ0aW9u
UG9pbnQqIGZpbmRJbnNlcnRpb25Qb2ludEZvcihjb25zdCBOb2RlKiBrZXkpIGNvbnN0OwotCi0g
ICAgdm9pZCBzZXRWYWxpZGl0eShWYWxpZGl0eSB2YWxpZGl0eSkgeyBtX3ZhbGlkaXR5ID0gdmFs
aWRpdHk7IH0KLQotICAgIHZvaWQgZGlzdHJpYnV0ZShFbGVtZW50KiBob3N0KTsKLSAgICBib29s
IGludmFsaWRhdGUoRWxlbWVudCogaG9zdCk7Ci0gICAgdm9pZCBmaW5pc2hJbml2YWxpZGF0aW9u
KCk7Ci0gICAgYm9vbCBuZWVkc0Rpc3RyaWJ1dGlvbigpIGNvbnN0OwotICAgIGJvb2wgbmVlZHNJ
bnZhbGlkYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3ZhbGlkaXR5ICE9IEludmFsaWRhdGVkOyB9
CisgICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIGVuc3VyZVNlbGVjdEZlYXR1cmVTZXQo
RWxlbWVudFNoYWRvdyopOwogCiAgICAgdm9pZCBkaXN0cmlidXRlU2VsZWN0aW9uc1RvKEluc2Vy
dGlvblBvaW50KiwgY29uc3QgQ29udGVudERpc3RyaWJ1dGlvbiYgcG9vbCwgVmVjdG9yPGJvb2w+
JiBkaXN0cmlidXRlZCk7CiAgICAgdm9pZCBkaXN0cmlidXRlTm9kZUNoaWxkcmVuVG8oSW5zZXJ0
aW9uUG9pbnQqLCBDb250YWluZXJOb2RlKik7Ci0gICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0
aW9uSW4oQ29udGVudERpc3RyaWJ1dGlvbiopOworCisgICAgdm9pZCBlbnN1cmVEaXN0cmlidXRp
b24oRWxlbWVudCogaG9zdCk7CisgICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKEVsZW1l
bnQqIGhvc3QpOworICAgIHZvaWQgZGlkU2hhZG93Qm91bmRhcnlDaGFuZ2UoRWxlbWVudCogaG9z
dCk7CisgICAgdm9pZCBkaWRBZmZlY3RTZWxlY3RvcihFbGVtZW50KiBob3N0LCBBZmZlY3RlZFNl
bGVjdG9yTWFzayk7CisgICAgdm9pZCB3aWxsQWZmZWN0U2VsZWN0b3IoRWxlbWVudCogaG9zdCk7
CisKKyAgICBzdGF0aWMgdm9pZCBlbnN1cmVEaXN0cmlidXRpb25Gcm9tRG9jdW1lbnQoRWxlbWVu
dCogc291cmNlKTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGRpc3RyaWJ1dGUoRWxlbWVudCogaG9z
dCk7CisgICAgYm9vbCBpbnZhbGlkYXRlKEVsZW1lbnQqIGhvc3QpOwogICAgIHZvaWQgcG9wdWxh
dGUoTm9kZSosIENvbnRlbnREaXN0cmlidXRpb24mKTsKIAorICAgIHZvaWQgY29sbGVjdFNlbGVj
dEZlYXR1cmVTZXRGcm9tKFNoYWRvd1Jvb3QqKTsKKyAgICBib29sIG5lZWRzU2VsZWN0RmVhdHVy
ZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNTZWxlY3RGZWF0dXJlU2V0OyB9CisgICAgdm9p
ZCBzZXROZWVkc1NlbGVjdEZlYXR1cmVTZXQoKSB7IG1fbmVlZHNTZWxlY3RGZWF0dXJlU2V0ID0g
dHJ1ZTsgfQorCisgICAgdm9pZCBzZXRWYWxpZGl0eShWYWxpZGl0eSB2YWxpZGl0eSkgeyBtX3Zh
bGlkaXR5ID0gdmFsaWRpdHk7IH0KKyAgICBib29sIG5lZWRzRGlzdHJpYnV0aW9uKCkgY29uc3Q7
CisgICAgYm9vbCBuZWVkc0ludmFsaWRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmFsaWRpdHkg
IT0gSW52YWxpZGF0ZWQ7IH0KKwogICAgIEhhc2hNYXA8Y29uc3QgTm9kZSosIFJlZlB0cjxJbnNl
cnRpb25Qb2ludD4gPiBtX25vZGVUb0luc2VydGlvblBvaW50OworICAgIFNlbGVjdFJ1bGVGZWF0
dXJlU2V0IG1fc2VsZWN0RmVhdHVyZXM7CisgICAgYm9vbCBtX25lZWRzU2VsZWN0RmVhdHVyZVNl
dCA6IDE7CiAgICAgdW5zaWduZWQgbV92YWxpZGl0eSA6IDI7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAppbmRleCA5MGM3ODZh
ZGE4OTNkNzUzY2JlNjdkODRhMTg5NGQ5NjU5OWMzZDA0Li4zN2Q1NzBiNWJhNjEyMDY5OTc2ZjE4
ZmU3Y2ZiMzlkMTUwMmE0ZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0hUTUxDb250ZW50RWxlbWVudC5jcHAKQEAgLTk5LDEwICs5OSw4IEBAIHZvaWQgSFRNTENvbnRl
bnRFbGVtZW50OjplbnN1cmVTZWxlY3RQYXJzZWQoKQogdm9pZCBIVE1MQ29udGVudEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gc2VsZWN0QXR0cikgewotICAgICAgICBp
ZiAoU2hhZG93Um9vdCogcm9vdCA9IGNvbnRhaW5pbmdTaGFkb3dSb290KCkpIHsKLSAgICAgICAg
ICAgIHJvb3QtPm93bmVyKCktPnNldFNob3VsZENvbGxlY3RTZWxlY3RGZWF0dXJlU2V0KCk7Ci0g
ICAgICAgICAgICByb290LT5vd25lcigpLT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7Ci0gICAg
ICAgIH0KKyAgICAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBjb250YWluaW5nU2hhZG93Um9v
dCgpKQorICAgICAgICAgICAgcm9vdC0+b3duZXIoKS0+d2lsbEFmZmVjdFNlbGVjdG9yKCk7CiAg
ICAgICAgIG1fc2hvdWxkUGFyc2VTZWxlY3Rvckxpc3QgPSB0cnVlOwogICAgIH0gZWxzZQogICAg
ICAgICBJbnNlcnRpb25Qb2ludDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaAppbmRleCBhNmRj
NWY0Y2JiNDE1MDdmMWI1NGIwZjYwOThkYzNiOTFhYjA5MWIzLi5hMzE4Y2Y3OGJlYzY5M2RhMTc4
OGJlMmYxYjc0NGQ1ZjQ1ZTFjNTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9IVE1MQ29udGVudEVsZW1lbnQuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGlzU2VsZWN0VmFsaWQoKTsKICAgICB2aXJ0dWFsIGNvbnN0IENTU1NlbGVjdG9y
TGlzdCYgc2VsZWN0b3JMaXN0KCk7CiAgICAgdmlydHVhbCBUeXBlIGluc2VydGlvblBvaW50VHlw
ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIENvbnRlbnRJbnNlcnRpb25Qb2ludDsgfQorICAg
IHZpcnR1YWwgYm9vbCBjYW5BZmZlY3RTZWxlY3RvcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IHRydWU7IH0KIAogcHJvdGVjdGVkOgogICAgIEhUTUxDb250ZW50RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0hUTUxTaGFkb3dFbGVtZW50LmNwcAppbmRleCAyMmMwNzY1NmE1NTdlNDdjOTNmZWI1M2FiM2Uz
NTUyMjA3YWY4ZTljLi4xNzQ3ZWNkMTcyOTA5Y2YyMWVlY2Y2MjNiNjc5NzMwYjNmZDU1MGQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3Bw
CkBAIC03MCw3ICs3MCw3IEBAIFNoYWRvd1Jvb3QqIEhUTUxTaGFkb3dFbGVtZW50OjpvbGRlclNo
YWRvd1Jvb3QoKQogICAgIGlmICghdHJlZVNjb3BlKCktPnJvb3ROb2RlKCktPmlzU2hhZG93Um9v
dCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHRvU2hhZG93Um9vdCh0cmVlU2NvcGUoKS0+
cm9vdE5vZGUoKSktPm93bmVyKCktPmVuc3VyZURpc3RyaWJ1dGlvbkZyb21Eb2N1bWVudCgpOwor
ICAgIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9uRnJvbURvY3VtZW50KHRo
aXMpOwogCiAgICAgU2hhZG93Um9vdCogb2xkZXIgPSB0b1NoYWRvd1Jvb3QodHJlZVNjb3BlKCkt
PnJvb3ROb2RlKCkpLT5vbGRlclNoYWRvd1Jvb3QoKTsKICAgICBpZiAoIW9sZGVyIHx8IG9sZGVy
LT50eXBlKCkgIT0gU2hhZG93Um9vdDo6QXV0aG9yU2hhZG93Um9vdCB8fCBTY29wZUNvbnRlbnRE
aXN0cmlidXRpb246OmFzc2lnbmVkVG8ob2xkZXIpICE9IHRoaXMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKaW5kZXggNDRlMzRiOTUzNDU3NGVjMDY4
ZGVlZDJhZmQ4MGE2OTY2NDdiYWM1OS4uOGMxNWEzMTA2OTM1NTIwMWFiNzBhMGEyYjFkNzEzYzgw
NzFiNmE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9u
UG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmNwcApAQCAtOTcsMTIgKzk3LDkgQEAgYm9vbCBJbnNlcnRpb25Qb2ludDo6aXNBY3RpdmUoKSBj
b25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnNlcnRp
b25Qb2ludDo6Z2V0RGlzdHJpYnV0ZWROb2RlcygpIGNvbnN0CitQYXNzUmVmUHRyPE5vZGVMaXN0
PiBJbnNlcnRpb25Qb2ludDo6Z2V0RGlzdHJpYnV0ZWROb2RlcygpCiB7Ci0gICAgQ29udGFpbmVy
Tm9kZSogcm9vdE5vZGUgPSB0cmVlU2NvcGUoKS0+cm9vdE5vZGUoKTsKLSAgICBpZiAocm9vdE5v
ZGUtPmlzU2hhZG93Um9vdCgpKQotICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogcm9vdE93bmVy
ID0gdG9TaGFkb3dSb290KHJvb3ROb2RlKS0+b3duZXIoKSkKLSAgICAgICAgICAgIHJvb3RPd25l
ci0+ZW5zdXJlRGlzdHJpYnV0aW9uRnJvbURvY3VtZW50KCk7CisgICAgQ29udGVudERpc3RyaWJ1
dG9yOjplbnN1cmVEaXN0cmlidXRpb25Gcm9tRG9jdW1lbnQodGhpcyk7CiAKICAgICBWZWN0b3I8
UmVmUHRyPE5vZGU+ID4gbm9kZXM7CiAKQEAgLTEzMSwxMSArMTI4LDEyIEBAIE5vZGU6Okluc2Vy
dGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSW5zZXJ0aW9uUG9pbnQ6Omluc2VydGVkSW50byhDb250
YWluZXJOb2RlKiBpCiAKICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IGNvbnRhaW5pbmdTaGFk
b3dSb290KCkpIHsKICAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHJvb3RPd25lciA9IHJvb3Qt
Pm93bmVyKCkpIHsKLSAgICAgICAgICAgIHJvb3RPd25lci0+c2V0VmFsaWRpdHlVbmRldGVybWlu
ZWQoKTsKLSAgICAgICAgICAgIHJvb3RPd25lci0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwor
ICAgICAgICAgICAgcm9vdE93bmVyLT5kaXN0cmlidXRvcigpLmRpZFNoYWRvd0JvdW5kYXJ5Q2hh
bmdlKHJvb3QtPmhvc3QoKSk7CiAgICAgICAgICAgICBpZiAoaXNBY3RpdmUoKSAmJiAhbV9yZWdp
c3RlcmVkV2l0aFNoYWRvd1Jvb3QgJiYgaW5zZXJ0aW9uUG9pbnQtPnRyZWVTY29wZSgpLT5yb290
Tm9kZSgpID09IHJvb3QpIHsKICAgICAgICAgICAgICAgICBtX3JlZ2lzdGVyZWRXaXRoU2hhZG93
Um9vdCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgcm9vdC0+ZW5zdXJlU2NvcGVEaXN0cmlidXRp
b24oKS0+cmVnaXN0ZXJJbnNlcnRpb25Qb2ludChyb290LCB0aGlzKTsKKyAgICAgICAgICAgICAg
ICByb290LT5lbnN1cmVTY29wZURpc3RyaWJ1dGlvbigpLT5yZWdpc3Rlckluc2VydGlvblBvaW50
KHRoaXMpOworICAgICAgICAgICAgICAgIGlmIChjYW5BZmZlY3RTZWxlY3RvcigpKQorICAgICAg
ICAgICAgICAgICAgICByb290T3duZXItPndpbGxBZmZlY3RTZWxlY3RvcigpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTYwLDcgKzE1OCw5IEBAIHZvaWQgSW5zZXJ0aW9u
UG9pbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogICAgIGlm
IChtX3JlZ2lzdGVyZWRXaXRoU2hhZG93Um9vdCAmJiBpbnNlcnRpb25Qb2ludC0+dHJlZVNjb3Bl
KCktPnJvb3ROb2RlKCkgPT0gcm9vdCkgewogICAgICAgICBBU1NFUlQocm9vdCk7CiAgICAgICAg
IG1fcmVnaXN0ZXJlZFdpdGhTaGFkb3dSb290ID0gZmFsc2U7Ci0gICAgICAgIHJvb3QtPmVuc3Vy
ZVNjb3BlRGlzdHJpYnV0aW9uKCktPnVucmVnaXN0ZXJJbnNlcnRpb25Qb2ludChyb290LCB0aGlz
KTsKKyAgICAgICAgcm9vdC0+ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24oKS0+dW5yZWdpc3Rlcklu
c2VydGlvblBvaW50KHRoaXMpOworICAgICAgICBpZiAocm9vdE93bmVyICYmIGNhbkFmZmVjdFNl
bGVjdG9yKCkpCisgICAgICAgICAgICByb290T3duZXItPndpbGxBZmZlY3RTZWxlY3RvcigpOwog
ICAgIH0KIAogICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAppbmRleCAzYmQ3NTJj
ODczZDFmMWE1OTllNDc5MGI4NjU5NGIwNzVlZWY3ZWNlLi45NGRjNGMwMGVkMTU3Y2YyMWFlM2Ew
OGYyMDg2NjI1ZGRhOTI3YzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9JbnNlcnRpb25Qb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2Vy
dGlvblBvaW50LmgKQEAgLTU2LDEyICs1NiwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NoYWRv
d0JvdW5kYXJ5KCkgY29uc3Q7CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwogCi0gICAgUGFz
c1JlZlB0cjxOb2RlTGlzdD4gZ2V0RGlzdHJpYnV0ZWROb2RlcygpIGNvbnN0OworICAgIFBhc3NS
ZWZQdHI8Tm9kZUxpc3Q+IGdldERpc3RyaWJ1dGVkTm9kZXMoKTsKIAogICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBzZWxlY3QoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlz
U2VsZWN0VmFsaWQoKSA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNl
bGVjdG9yTGlzdCgpID0gMDsKICAgICB2aXJ0dWFsIFR5cGUgaW5zZXJ0aW9uUG9pbnRUeXBlKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5BZmZlY3RTZWxlY3RvcigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29sIHJlc2V0U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0
OwogICAgIHZvaWQgc2V0UmVzZXRTdHlsZUluaGVyaXRhbmNlKGJvb2wpOwpAQCAtODgsNiArODks
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5v
ZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
Ym9vbCBpc0luc2VydGlvblBvaW50Tm9kZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7
IH0KKwogcHJpdmF0ZToKIAogICAgIENvbnRlbnREaXN0cmlidXRpb24gbV9kaXN0cmlidXRpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggNGU4YmY4ZjQ2OTFlZjk0ZDE2
MzgwYjE4NTIzZGNhOTk1MWQ0NTI4ZC4uOWE0Mzc5ZjM1MTdkNjMwN2I1NzA5MTIxYTY1YTBiZTdj
YmMxODIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzQwLDggKzM0
MCw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvcklkSW5TaGFkb3coRWxlbWVudCog
aG9zdCwgY29uc3QgU3RyaW5nJiBpZFZhbHVlLCBFCiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAotICAgIGhvc3QtPnNoYWRvdygpLT5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCk7
Ci0gICAgcmV0dXJuIGhvc3QtPnNoYWRvdygpLT5zZWxlY3RSdWxlRmVhdHVyZVNldCgpLmhhc1Nl
bGVjdG9yRm9ySWQoaWRWYWx1ZSk7CisgICAgcmV0dXJuIGhvc3QtPnNoYWRvdygpLT5kaXN0cmli
dXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoaG9zdC0+c2hhZG93KCkpLmhhc1NlbGVjdG9y
Rm9ySWQoaWRWYWx1ZSk7CiB9CiAKIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckNsYXNz
SW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBjbGFzc05hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQpAQCAtMzUxLDggKzM1MCw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3Rv
ckZvckNsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBjbGFzc05hCiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGhvc3QtPnNoYWRvdygpLT5lbnN1cmVTZWxl
Y3RGZWF0dXJlU2V0Q29sbGVjdGVkKCk7Ci0gICAgcmV0dXJuIGhvc3QtPnNoYWRvdygpLT5zZWxl
Y3RSdWxlRmVhdHVyZVNldCgpLmhhc1NlbGVjdG9yRm9yQ2xhc3MoY2xhc3NOYW1lKTsKKyAgICBy
ZXR1cm4gaG9zdC0+c2hhZG93KCktPmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNl
dChob3N0LT5zaGFkb3coKSkuaGFzU2VsZWN0b3JGb3JDbGFzcyhjbGFzc05hbWUpOwogfQogCiBi
b29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGVJblNoYWRvdyhFbGVtZW50KiBo
b3N0LCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZU5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAt
MzYyLDggKzM2MCw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckF0dHJpYnV0ZUlu
U2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgYXR0CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIAotICAgIGhvc3QtPnNoYWRvdygpLT5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29s
bGVjdGVkKCk7Ci0gICAgcmV0dXJuIGhvc3QtPnNoYWRvdygpLT5zZWxlY3RSdWxlRmVhdHVyZVNl
dCgpLmhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIHJldHVybiBo
b3N0LT5zaGFkb3coKS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGhvc3Qt
PnNoYWRvdygpKS5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKIH0KIAog
Ym9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yUHNldWRvQ2xhc3NJblNoYWRvdyhFbGVtZW50
KiBob3N0LCBjb25zdCBTdHJpbmcmIHBzZXVkb0NsYXNzLCBFeGNlcHRpb25Db2RlJiBlYykKQEAg
LTM3Myw4ICszNzAsNyBAQCBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JQc2V1ZG9DbGFz
c0luU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgcAogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKLSAgICBob3N0LT5zaGFkb3coKS0+ZW5zdXJlU2VsZWN0RmVhdHVyZVNldENv
bGxlY3RlZCgpOwotICAgIGNvbnN0IFNlbGVjdFJ1bGVGZWF0dXJlU2V0JiBmZWF0dXJlU2V0ID0g
aG9zdC0+c2hhZG93KCktPnNlbGVjdFJ1bGVGZWF0dXJlU2V0KCk7CisgICAgY29uc3QgU2VsZWN0
UnVsZUZlYXR1cmVTZXQmIGZlYXR1cmVTZXQgPSBob3N0LT5zaGFkb3coKS0+ZGlzdHJpYnV0b3Io
KS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGhvc3QtPnNoYWRvdygpKTsKICAgICBpZiAocHNldWRv
Q2xhc3MgPT0gImNoZWNrZWQiKQogICAgICAgICByZXR1cm4gZmVhdHVyZVNldC5oYXNTZWxlY3Rv
ckZvckNoZWNrZWQoKTsKICAgICBpZiAocHNldWRvQ2xhc3MgPT0gImVuYWJsZWQiKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181872</attachid>
            <date>2013-01-09 01:21:18 -0800</date>
            <delta_ts>2013-01-09 02:24:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106294-20130109181821.patch</filename>
            <type>text/plain</type>
            <size>31500</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDc1Zjgz
YzdjYmYzODE1MDIyMjFjMTQwYWY2M2Q0NGMxOTExNGY1MTcuLjBhMmE4NTY1OGIzNWI3YTQ2ZjA1
NjAyYTNkMDBhZTVhODM5ODBhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yMTcsNyArMjE3
LDYgQEAgX19aTjdXZWJDb3JlMTNBWE9iamVjdENhY2hlNDJnQWNjZXNzaWJpbGl0eUVuaGFuY2Vk
VXNlckludGVyZmFjZUVuYWJsZWRFCiBfX1pON1dlYkNvcmUxM0NoYXJhY3RlckRhdGE3c2V0RGF0
YUVSS04zV1RGNlN0cmluZ0VSaQogX19aTjdXZWJDb3JlMTNDb250YWluZXJOb2RlMTFhcHBlbmRD
aGlsZEVOM1dURjEwUGFzc1JlZlB0cklOU180Tm9kZUVFRVJpYgogX19aTjdXZWJDb3JlMTNDb250
YWluZXJOb2RlMTFyZW1vdmVDaGlsZEVQTlNfNE5vZGVFUmkKLV9fWk43V2ViQ29yZTEzRWxlbWVu
dFNoYWRvdzMxZW5zdXJlU2VsZWN0RmVhdHVyZVNldENvbGxlY3RlZEV2CiBfX1pON1dlYkNvcmUx
M0hUVFBIZWFkZXJNYXBDMUV2CiBfX1pON1dlYkNvcmUxM0hUVFBIZWFkZXJNYXBEMUV2CiBfX1pO
N1dlYkNvcmUxM0hpdFRlc3RSZXN1bHRDMUVSS1MwXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IDhhMWFjOTFmZWFkZDE2N2UwZmI4ZTA0OTBlN2I4MTllYTQwMDFlOGYuLjQ5MzRiOWQ5NjI5MTky
NTczOTFkZjA1YWNhNDM4M2E0Y2VkZjYxNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTkx
NywxNSArOTE3LDE1IEBAIHZvaWQgRWxlbWVudDo6Y2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NTdHJpbmcpCiBib29sIEVsZW1lbnQ6OnNob3VsZEludmFs
aWRhdGVEaXN0cmlidXRpb25XaGVuQXR0cmlidXRlQ2hhbmdlZChFbGVtZW50U2hhZG93KiBlbGVt
ZW50U2hhZG93LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5ld1ZhbHVlKQogewogICAgIEFTU0VSVChlbGVtZW50U2hhZG93KTsKLSAgICBlbGVtZW50U2hh
ZG93LT5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCk7CisgICAgY29uc3QgU2VsZWN0
UnVsZUZlYXR1cmVTZXQmIGZlYXR1cmVTZXQgPSBlbGVtZW50U2hhZG93LT5kaXN0cmlidXRvcigp
LmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoZWxlbWVudFNoYWRvdyk7CiAKICAgICBpZiAoaXNJZEF0
dHJpYnV0ZU5hbWUobmFtZSkpIHsKICAgICAgICAgQXRvbWljU3RyaW5nIG9sZElkID0gYXR0cmli
dXRlRGF0YSgpLT5pZEZvclN0eWxlUmVzb2x1dGlvbigpOwogICAgICAgICBBdG9taWNTdHJpbmcg
bmV3SWQgPSBtYWtlSWRGb3JTdHlsZVJlc29sdXRpb24obmV3VmFsdWUsIGRvY3VtZW50KCktPmlu
UXVpcmtzTW9kZSgpKTsKICAgICAgICAgaWYgKG5ld0lkICE9IG9sZElkKSB7Ci0gICAgICAgICAg
ICBpZiAoIW9sZElkLmlzRW1wdHkoKSAmJiBlbGVtZW50U2hhZG93LT5zZWxlY3RSdWxlRmVhdHVy
ZVNldCgpLmhhc1NlbGVjdG9yRm9ySWQob2xkSWQpKQorICAgICAgICAgICAgaWYgKCFvbGRJZC5p
c0VtcHR5KCkgJiYgZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvcklkKG9sZElkKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGlmICghbmV3SWQuaXNFbXB0eSgpICYm
IGVsZW1lbnRTaGFkb3ctPnNlbGVjdFJ1bGVGZWF0dXJlU2V0KCkuaGFzU2VsZWN0b3JGb3JJZChu
ZXdJZCkpCisgICAgICAgICAgICBpZiAoIW5ld0lkLmlzRW1wdHkoKSAmJiBmZWF0dXJlU2V0Lmhh
c1NlbGVjdG9yRm9ySWQobmV3SWQpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CiAgICAgfQpAQCAtOTM3LDE2ICs5MzcsMTYgQEAgYm9vbCBFbGVtZW50OjpzaG91bGRJ
bnZhbGlkYXRlRGlzdHJpYnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudFNoYWRvdyog
ZWwKICAgICAgICAgICAgIGNvbnN0IGJvb2wgc2hvdWxkRm9sZENhc2UgPSBkb2N1bWVudCgpLT5p
blF1aXJrc01vZGUoKTsKICAgICAgICAgICAgIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG9sZENs
YXNzZXMgPSBhdHRyaWJ1dGVEYXRhLT5jbGFzc05hbWVzKCk7CiAgICAgICAgICAgICBjb25zdCBT
cGFjZVNwbGl0U3RyaW5nIG5ld0NsYXNzZXMobmV3Q2xhc3NTdHJpbmcsIHNob3VsZEZvbGRDYXNl
KTsKLSAgICAgICAgICAgIGlmIChjaGVja1NlbGVjdG9yRm9yQ2xhc3NDaGFuZ2Uob2xkQ2xhc3Nl
cywgbmV3Q2xhc3NlcywgZWxlbWVudFNoYWRvdy0+c2VsZWN0UnVsZUZlYXR1cmVTZXQoKSkpCisg
ICAgICAgICAgICBpZiAoY2hlY2tTZWxlY3RvckZvckNsYXNzQ2hhbmdlKG9sZENsYXNzZXMsIG5l
d0NsYXNzZXMsIGZlYXR1cmVTZXQpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9IGVsc2UgaWYgKGNvbnN0IEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRh
ID0gdGhpcy0+YXR0cmlidXRlRGF0YSgpKSB7CiAgICAgICAgICAgICBjb25zdCBTcGFjZVNwbGl0
U3RyaW5nJiBvbGRDbGFzc2VzID0gYXR0cmlidXRlRGF0YS0+Y2xhc3NOYW1lcygpOwotICAgICAg
ICAgICAgaWYgKGNoZWNrU2VsZWN0b3JGb3JDbGFzc0NoYW5nZShvbGRDbGFzc2VzLCBlbGVtZW50
U2hhZG93LT5zZWxlY3RSdWxlRmVhdHVyZVNldCgpKSkKKyAgICAgICAgICAgIGlmIChjaGVja1Nl
bGVjdG9yRm9yQ2xhc3NDaGFuZ2Uob2xkQ2xhc3NlcywgZmVhdHVyZVNldCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gZWxlbWVu
dFNoYWRvdy0+c2VsZWN0UnVsZUZlYXR1cmVTZXQoKS5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZShu
YW1lLmxvY2FsTmFtZSgpKTsKKyAgICByZXR1cm4gZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvckF0
dHJpYnV0ZShuYW1lLmxvY2FsTmFtZSgpKTsKIH0KIAogLy8gUmV0dXJucyB0cnVlIGlzIHRoZSBn
aXZlbiBhdHRyaWJ1dGUgaXMgYW4gZXZlbnQgaGFuZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
U2hhZG93LmNwcAppbmRleCA5ZTY4NmE3ZDhjZGE5OGIzZTNlMmQ1NTM5MDNhNmZkOTgwMzQ0MjZh
Li43MjAxZDMyNzUyMjA3YTU1YjdhNzgwNWExOWY4NGI4NGVlNGRhZjZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRTaGFkb3cuY3BwCkBAIC00Miw3ICs0Miw2IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEVsZW1lbnRTaGFkb3c6OkVsZW1lbnRTaGFkb3coKQotICAgIDogbV9zaG91bGRDb2xs
ZWN0U2VsZWN0RmVhdHVyZVNldChmYWxzZSkKIHsKIH0KIApAQCAtODMsOCArODIsNyBAQCB2b2lk
IEVsZW1lbnRTaGFkb3c6OmFkZFNoYWRvd1Jvb3QoRWxlbWVudCogc2hhZG93SG9zdCwgUGFzc1Jl
ZlB0cjxTaGFkb3dSb290PiBzaAogICAgIHNoYWRvd1Jvb3QtPnNldEhvc3Qoc2hhZG93SG9zdCk7
CiAgICAgc2hhZG93Um9vdC0+c2V0UGFyZW50VHJlZVNjb3BlKHNoYWRvd0hvc3QtPnRyZWVTY29w
ZSgpKTsKICAgICBtX3NoYWRvd1Jvb3RzLnB1c2goc2hhZG93Um9vdC5nZXQoKSk7Ci0gICAgc2V0
VmFsaWRpdHlVbmRldGVybWluZWQoKTsKLSAgICBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKHNoYWRv
d0hvc3QpOworICAgIG1fZGlzdHJpYnV0b3IuZGlkU2hhZG93Qm91bmRhcnlDaGFuZ2Uoc2hhZG93
SG9zdCk7CiAgICAgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXIoc2hhZG93SG9zdCkubm90aWZ5
KHNoYWRvd1Jvb3QuZ2V0KCkpOwogCiAgICAgLy8gRXhpc3RlbmNlIG9mIHNoYWRvdyByb290cyBy
ZXF1aXJlcyB0aGUgaG9zdCBhbmQgaXRzIGNoaWxkcmVuIHRvIGRvIHRyYXZlcnNhbCB1c2luZyBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuCkBAIC0xMTksNyArMTE3LDcgQEAgdm9pZCBFbGVtZW50
U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dSb290cygpCiAgICAgICAgIENoaWxkTm9kZVJlbW92YWxO
b3RpZmllcihzaGFkb3dIb3N0KS5ub3RpZnkob2xkUm9vdC5nZXQoKSk7CiAgICAgfQogCi0gICAg
aW52YWxpZGF0ZURpc3RyaWJ1dGlvbihzaGFkb3dIb3N0KTsKKyAgICBtX2Rpc3RyaWJ1dG9yLmlu
dmFsaWRhdGVEaXN0cmlidXRpb24oc2hhZG93SG9zdCk7CiB9CiAKIHZvaWQgRWxlbWVudFNoYWRv
dzo6YXR0YWNoKCkKQEAgLTE2NSw5NCArMTYzLDYgQEAgdm9pZCBFbGVtZW50U2hhZG93OjpyZWNh
bGNTdHlsZShOb2RlOjpTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgICAgIHJvb3QtPnJlY2FsY1N0
eWxlKGNoYW5nZSk7CiB9CiAKLXZvaWQgRWxlbWVudFNoYWRvdzo6ZW5zdXJlRGlzdHJpYnV0aW9u
KCkKLXsKLSAgICBpZiAoIW1fZGlzdHJpYnV0b3IubmVlZHNEaXN0cmlidXRpb24oKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIG1fZGlzdHJpYnV0b3IuZGlzdHJpYnV0ZShob3N0KCkpOwotfQotCi12
b2lkIEVsZW1lbnRTaGFkb3c6OmVuc3VyZURpc3RyaWJ1dGlvbkZyb21Eb2N1bWVudCgpCi17Ci0g
ICAgVmVjdG9yPEVsZW1lbnQqLCA4PiBob3N0czsKLSAgICBmb3IgKEVsZW1lbnQqIGN1cnJlbnQg
PSBob3N0KCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5zaGFkb3dIb3N0KCkpCi0gICAg
ICAgIGhvc3RzLmFwcGVuZChjdXJyZW50KTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSBob3N0cy5z
aXplKCk7IGkgPiAwOyAtLWkpCi0gICAgICAgIGhvc3RzW2kgLSAxXS0+c2hhZG93KCktPmVuc3Vy
ZURpc3RyaWJ1dGlvbigpOwotfQotCi12b2lkIEVsZW1lbnRTaGFkb3c6OnNldFZhbGlkaXR5VW5k
ZXRlcm1pbmVkKCkKLXsKLSAgICBtX2Rpc3RyaWJ1dG9yLnNldFZhbGlkaXR5KENvbnRlbnREaXN0
cmlidXRvcjo6VW5kZXRlcm1pbmVkKTsKLX0KLQotdm9pZCBFbGVtZW50U2hhZG93OjppbnZhbGlk
YXRlRGlzdHJpYnV0aW9uKCkKLXsKLSAgICBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKGhvc3QoKSk7
Ci19Ci0KLXZvaWQgRWxlbWVudFNoYWRvdzo6aW52YWxpZGF0ZURpc3RyaWJ1dGlvbihFbGVtZW50
KiBob3N0KQotewotICAgIGJvb2wgbmVlZHNJbnZhbGlkYXRpb24gPSBtX2Rpc3RyaWJ1dG9yLm5l
ZWRzSW52YWxpZGF0aW9uKCk7Ci0gICAgYm9vbCBuZWVkc1JlYXR0YWNoID0gbmVlZHNJbnZhbGlk
YXRpb24gPyBtX2Rpc3RyaWJ1dG9yLmludmFsaWRhdGUoaG9zdCkgOiBmYWxzZTsKLQotICAgIGlm
IChuZWVkc1JlYXR0YWNoICYmIGhvc3QtPmF0dGFjaGVkKCkpIHsKLSAgICAgICAgZm9yIChOb2Rl
KiBuID0gaG9zdC0+Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkKLSAgICAg
ICAgICAgIG4tPmxhenlSZWF0dGFjaCgpOwotICAgICAgICBob3N0LT5zZXROZWVkc1N0eWxlUmVj
YWxjKCk7Ci0gICAgfQotCi0gICAgaWYgKG5lZWRzSW52YWxpZGF0aW9uKQotICAgICAgICBtX2Rp
c3RyaWJ1dG9yLmZpbmlzaEluaXZhbGlkYXRpb24oKTsKLX0KLQotdm9pZCBFbGVtZW50U2hhZG93
OjpzZXRTaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCgpCi17Ci0gICAgaWYgKHNob3VsZENv
bGxlY3RTZWxlY3RGZWF0dXJlU2V0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc2hvdWxk
Q29sbGVjdFNlbGVjdEZlYXR1cmVTZXQgPSB0cnVlOwotCi0gICAgaWYgKFNoYWRvd1Jvb3QqIHBh
cmVudFNoYWRvd1Jvb3QgPSBob3N0KCktPmNvbnRhaW5pbmdTaGFkb3dSb290KCkpIHsKLSAgICAg
ICAgaWYgKEVsZW1lbnRTaGFkb3cqIHBhcmVudEVsZW1lbnRTaGFkb3cgPSBwYXJlbnRTaGFkb3dS
b290LT5vd25lcigpKQotICAgICAgICAgICAgcGFyZW50RWxlbWVudFNoYWRvdy0+c2V0U2hvdWxk
Q29sbGVjdFNlbGVjdEZlYXR1cmVTZXQoKTsKLSAgICB9Ci19Ci0KLXZvaWQgRWxlbWVudFNoYWRv
dzo6ZW5zdXJlU2VsZWN0RmVhdHVyZVNldENvbGxlY3RlZCgpCi17Ci0gICAgaWYgKCFtX3Nob3Vs
ZENvbGxlY3RTZWxlY3RGZWF0dXJlU2V0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3NlbGVj
dEZlYXR1cmVzLmNsZWFyKCk7Ci0gICAgZm9yIChTaGFkb3dSb290KiByb290ID0gb2xkZXN0U2hh
ZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+eW91bmdlclNoYWRvd1Jvb3QoKSkKLSAgICAg
ICAgY29sbGVjdFNlbGVjdEZlYXR1cmVTZXRGcm9tKHJvb3QpOwotICAgIG1fc2hvdWxkQ29sbGVj
dFNlbGVjdEZlYXR1cmVTZXQgPSBmYWxzZTsKLX0KLQotdm9pZCBFbGVtZW50U2hhZG93Ojpjb2xs
ZWN0U2VsZWN0RmVhdHVyZVNldEZyb20oU2hhZG93Um9vdCogcm9vdCkKLXsKLSAgICBpZiAoU2Nv
cGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNFbGVtZW50U2hhZG93KHJvb3QpKSB7Ci0gICAgICAg
IGZvciAoRWxlbWVudCogZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKHJv
b3QpOyBlbGVtZW50OyBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dChlbGVtZW50KSkg
ewotICAgICAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFkb3cgPSBlbGVtZW50
LT5zaGFkb3coKSkgewotICAgICAgICAgICAgICAgIGVsZW1lbnRTaGFkb3ctPmVuc3VyZVNlbGVj
dEZlYXR1cmVTZXRDb2xsZWN0ZWQoKTsKLSAgICAgICAgICAgICAgICBtX3NlbGVjdEZlYXR1cmVz
LmFkZChlbGVtZW50U2hhZG93LT5tX3NlbGVjdEZlYXR1cmVzKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLQotICAgIGlmIChTY29wZUNvbnRlbnREaXN0cmlidXRpb246Omhhc0Nv
bnRlbnRFbGVtZW50KHJvb3QpKSB7Ci0gICAgICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IEVs
ZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKHJvb3QpOyBlbGVtZW50OyBlbGVtZW50ID0gRWxl
bWVudFRyYXZlcnNhbDo6bmV4dChlbGVtZW50KSkgewotICAgICAgICAgICAgaWYgKGlzSFRNTENv
bnRlbnRFbGVtZW50KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgQ1NTU2VsZWN0
b3JMaXN0JiBsaXN0ID0gdG9IVE1MQ29udGVudEVsZW1lbnQoZWxlbWVudCktPnNlbGVjdG9yTGlz
dCgpOwotICAgICAgICAgICAgICAgIGZvciAoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gbGlzdC5m
aXJzdCgpOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBsaXN0Lm5leHQoc2VsZWN0b3IpKQotICAgICAg
ICAgICAgICAgICAgICBtX3NlbGVjdEZlYXR1cmVzLmNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3Rv
cihzZWxlY3Rvcik7ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgIH0KLX0KLQogdm9pZCBFbGVtZW50U2hhZG93OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNz
SW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9N
KTsKQEAgLTI2NSwxMSArMTc1LDQgQEAgdm9pZCBFbGVtZW50U2hhZG93OjpyZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIGluZm8u
YWRkTWVtYmVyKG1fZGlzdHJpYnV0b3IpOwogfQogCi12b2lkIEVsZW1lbnRTaGFkb3c6OmRpZEFm
ZmVjdFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JNYXNrIG1hc2spCi17Ci0gICAgZW5zdXJlU2Vs
ZWN0RmVhdHVyZVNldENvbGxlY3RlZCgpOwotICAgIGlmIChzZWxlY3RSdWxlRmVhdHVyZVNldCgp
Lmhhc1NlbGVjdG9yRm9yKG1hc2spKQotICAgICAgICBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFNoYWRvdy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaAppbmRleCA1
OTRjOWU2NjFjODA4ZGJiZTM4MjYwMmM2MDIzNmEzMGM3NTA2ZTk3Li45MzllOWI2OWY5YzY2NTdk
YWFiNThmMDIzZGUxOGY5MDUwMTA2N2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudFNoYWRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgK
QEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJTZWxlY3RSdWxlRmVhdHVyZVNldC5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlIDx3dGYvRG91Ymx5TGlua2VkTGlz
dC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNTIsNiArNTEsNyBAQCBwdWJs
aWM6CiAgICAgRWxlbWVudCogaG9zdCgpIGNvbnN0OwogICAgIFNoYWRvd1Jvb3QqIHlvdW5nZXN0
U2hhZG93Um9vdCgpIGNvbnN0OwogICAgIFNoYWRvd1Jvb3QqIG9sZGVzdFNoYWRvd1Jvb3QoKSBj
b25zdDsKKyAgICBFbGVtZW50U2hhZG93KiBjb250YWluaW5nU2hhZG93KCkgY29uc3Q7CiAKICAg
ICB2b2lkIHJlbW92ZUFsbFNoYWRvd1Jvb3RzKCk7CiAgICAgdm9pZCBhZGRTaGFkb3dSb290KEVs
ZW1lbnQqIHNoYWRvd0hvc3QsIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4sIFNoYWRvd1Jvb3Q6OlNo
YWRvd1Jvb3RUeXBlLCBFeGNlcHRpb25Db2RlJik7CkBAIC02MywzMSArNjMsMTkgQEAgcHVibGlj
OgogICAgIGJvb2wgbmVlZHNTdHlsZVJlY2FsYygpOwogICAgIHZvaWQgcmVjYWxjU3R5bGUoTm9k
ZTo6U3R5bGVDaGFuZ2UpOwogCi0gICAgdm9pZCBzZXRWYWxpZGl0eVVuZGV0ZXJtaW5lZCgpOwot
ICAgIHZvaWQgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwotICAgIHZvaWQgZW5zdXJlRGlzdHJp
YnV0aW9uKCk7Ci0gICAgdm9pZCBlbnN1cmVEaXN0cmlidXRpb25Gcm9tRG9jdW1lbnQoKTsKKyAg
ICB2b2lkIGludmFsaWRhdGVEaXN0cmlidXRpb24oKSB7IG1fZGlzdHJpYnV0b3IuaW52YWxpZGF0
ZURpc3RyaWJ1dGlvbihob3N0KCkpOyB9CisgICAgdm9pZCBlbnN1cmVEaXN0cmlidXRpb24oKSB7
IG1fZGlzdHJpYnV0b3IuZW5zdXJlRGlzdHJpYnV0aW9uKGhvc3QoKSk7IH0KKyAgICB2b2lkIGRp
ZEFmZmVjdFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JNYXNrIG1hc2spIHsgbV9kaXN0cmlidXRv
ci5kaWRBZmZlY3RTZWxlY3Rvcihob3N0KCksIG1hc2spOyB9CisgICAgdm9pZCB3aWxsQWZmZWN0
U2VsZWN0b3IoKSB7IG1fZGlzdHJpYnV0b3Iud2lsbEFmZmVjdFNlbGVjdG9yKGhvc3QoKSk7IH0K
IAogICAgIENvbnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKTsKICAgICBjb25zdCBDb250
ZW50RGlzdHJpYnV0b3ImIGRpc3RyaWJ1dG9yKCkgY29uc3Q7CiAKLSAgICB2b2lkIGRpZEFmZmVj
dFNlbGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JNYXNrKTsKLSAgICBib29sIHNob3VsZENvbGxlY3RT
ZWxlY3RGZWF0dXJlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRDb2xsZWN0U2VsZWN0RmVh
dHVyZVNldDsgfQotICAgIHZvaWQgc2V0U2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQoKTsK
LSAgICB2b2lkIGVuc3VyZVNlbGVjdEZlYXR1cmVTZXRDb2xsZWN0ZWQoKTsKLQotICAgIGNvbnN0
IFNlbGVjdFJ1bGVGZWF0dXJlU2V0JiBzZWxlY3RSdWxlRmVhdHVyZVNldCgpIGNvbnN0OwotCiAg
ICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiBwcml2
YXRlOgotICAgIHZvaWQgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihFbGVtZW50KiBob3N0KTsKLQot
ICAgIHZvaWQgY29sbGVjdFNlbGVjdEZlYXR1cmVTZXRGcm9tKFNoYWRvd1Jvb3QqKTsKIAogICAg
IERvdWJseUxpbmtlZExpc3Q8U2hhZG93Um9vdD4gbV9zaGFkb3dSb290czsKICAgICBDb250ZW50
RGlzdHJpYnV0b3IgbV9kaXN0cmlidXRvcjsKLSAgICBTZWxlY3RSdWxlRmVhdHVyZVNldCBtX3Nl
bGVjdEZlYXR1cmVzOwotICAgIGJvb2wgbV9zaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCA6
IDE7CiB9OwogCiBpbmxpbmUgU2hhZG93Um9vdCogRWxlbWVudFNoYWRvdzo6eW91bmdlc3RTaGFk
b3dSb290KCkgY29uc3QKQEAgLTExNiwxMiArMTA0LDYgQEAgaW5saW5lIEVsZW1lbnQqIEVsZW1l
bnRTaGFkb3c6Omhvc3QoKSBjb25zdAogICAgIHJldHVybiB5b3VuZ2VzdFNoYWRvd1Jvb3QoKS0+
aG9zdCgpOwogfQogCi1pbmxpbmUgY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIEVsZW1lbnRT
aGFkb3c6OnNlbGVjdFJ1bGVGZWF0dXJlU2V0KCkgY29uc3QKLXsKLSAgICBBU1NFUlQoIW1fc2hv
dWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQpOwotICAgIHJldHVybiBtX3NlbGVjdEZlYXR1cmVz
OwotfQotCiBpbmxpbmUgU2hhZG93Um9vdCogTm9kZTo6eW91bmdlc3RTaGFkb3dSb290KCkgY29u
c3QKIHsKICAgICBpZiAoIXRoaXMtPmlzRWxlbWVudE5vZGUoKSkKQEAgLTEzMSw2ICsxMTMsMTQg
QEAgaW5saW5lIFNoYWRvd1Jvb3QqIE5vZGU6OnlvdW5nZXN0U2hhZG93Um9vdCgpIGNvbnN0CiAg
ICAgcmV0dXJuIDA7CiB9CiAKK2lubGluZSBFbGVtZW50U2hhZG93KiBFbGVtZW50U2hhZG93Ojpj
b250YWluaW5nU2hhZG93KCkgY29uc3QKK3sKKyAgICBTaGFkb3dSb290KiBwYXJlbnRSb290ID0g
aG9zdCgpLT5jb250YWluaW5nU2hhZG93Um9vdCgpOworICAgIGlmICghcGFyZW50Um9vdCkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHBhcmVudFJvb3QtPm93bmVyKCk7Cit9CisKIGNs
YXNzIFNoYWRvd1Jvb3RWZWN0b3IgOiBwdWJsaWMgVmVjdG9yPFJlZlB0cjxTaGFkb3dSb290PiA+
IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTaGFkb3dSb290VmVjdG9yKEVsZW1lbnRTaGFkb3cq
IHRyZWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlz
dHJpYnV0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1
dG9yLmNwcAppbmRleCA3N2M0ZDNiMTZhMWQwODAwMmRmNWNjNTY1ZjUwZTQ1NmNhZDEwNzNhLi4w
ZDNkYmVhMGI4YjdjYjE2ODIyMmNiYWY4MmUwOTY4MjczYWJiN2E5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKQEAgLTExMCw3ICsx
MTAsNyBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBTY29wZUNvbnRl
bnREaXN0cmlidXRpb246OmVuc3VyZUluc2VydGlvbgogICAgIHJldHVybiBtX2luc2VydGlvblBv
aW50TGlzdDsKIH0KIAotdm9pZCBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OnJlZ2lzdGVySW5z
ZXJ0aW9uUG9pbnQoU2hhZG93Um9vdCogc2NvcGUsIEluc2VydGlvblBvaW50KiBwb2ludCkKK3Zv
aWQgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpyZWdpc3Rlckluc2VydGlvblBvaW50KEluc2Vy
dGlvblBvaW50KiBwb2ludCkKIHsKICAgICBzd2l0Y2ggKHBvaW50LT5pbnNlcnRpb25Qb2ludFR5
cGUoKSkgewogICAgIGNhc2UgSW5zZXJ0aW9uUG9pbnQ6OlNoYWRvd0luc2VydGlvblBvaW50OgpA
QCAtMTE4LDE0ICsxMTgsMTMgQEAgdm9pZCBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OnJlZ2lz
dGVySW5zZXJ0aW9uUG9pbnQoU2hhZG93Um9vdCogc2NvcGUsIEluc2VydGkKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBJbnNlcnRpb25Qb2ludDo6Q29udGVudEluc2VydGlvblBvaW50OgogICAg
ICAgICArK21fbnVtYmVyT2ZDb250ZW50RWxlbWVudENoaWxkcmVuOwotICAgICAgICBzY29wZS0+
b3duZXIoKS0+c2V0U2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgaW52YWxpZGF0ZUluc2VydGlvblBvaW50TGlzdCgpOwogfQogCi12
b2lkIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6dW5yZWdpc3Rlckluc2VydGlvblBvaW50KFNo
YWRvd1Jvb3QqIHNjb3BlLCBJbnNlcnRpb25Qb2ludCogcG9pbnQpCit2b2lkIFNjb3BlQ29udGVu
dERpc3RyaWJ1dGlvbjo6dW5yZWdpc3Rlckluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50KiBw
b2ludCkKIHsKICAgICBzd2l0Y2ggKHBvaW50LT5pbnNlcnRpb25Qb2ludFR5cGUoKSkgewogICAg
IGNhc2UgSW5zZXJ0aW9uUG9pbnQ6OlNoYWRvd0luc2VydGlvblBvaW50OgpAQCAtMTM1LDggKzEz
NCw2IEBAIHZvaWQgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjp1bnJlZ2lzdGVySW5zZXJ0aW9u
UG9pbnQoU2hhZG93Um9vdCogc2NvcGUsIEluc2VyCiAgICAgY2FzZSBJbnNlcnRpb25Qb2ludDo6
Q29udGVudEluc2VydGlvblBvaW50OgogICAgICAgICBBU1NFUlQobV9udW1iZXJPZkNvbnRlbnRF
bGVtZW50Q2hpbGRyZW4gPiAwKTsKICAgICAgICAgLS1tX251bWJlck9mQ29udGVudEVsZW1lbnRD
aGlsZHJlbjsKLSAgICAgICAgaWYgKHNjb3BlLT5vd25lcigpKQotICAgICAgICAgICAgc2NvcGUt
Pm93bmVyKCktPnNldFNob3VsZENvbGxlY3RTZWxlY3RGZWF0dXJlU2V0KCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIApAQCAtMTgxLDcgKzE3OCw4IEBAIEluc2VydGlvblBvaW50KiBTY29wZUNv
bnRlbnREaXN0cmlidXRpb246OmFzc2lnbmVkVG8oY29uc3QgU2hhZG93Um9vdCogaG9sZGVyKQog
fQogCiBDb250ZW50RGlzdHJpYnV0b3I6OkNvbnRlbnREaXN0cmlidXRvcigpCi0gICAgOiBtX3Zh
bGlkaXR5KFVuZGV0ZXJtaW5lZCkKKyAgICA6IG1fbmVlZHNTZWxlY3RGZWF0dXJlU2V0KGZhbHNl
KQorICAgICwgbV92YWxpZGl0eShVbmRldGVybWluZWQpCiB7CiB9CiAKQEAgLTI4NywxMiArMjg1
LDYgQEAgYm9vbCBDb250ZW50RGlzdHJpYnV0b3I6OmludmFsaWRhdGUoRWxlbWVudCogaG9zdCkK
ICAgICByZXR1cm4gbmVlZHNSZWF0dGFjaDsKIH0KIAotdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6
OmZpbmlzaEluaXZhbGlkYXRpb24oKQotewotICAgIEFTU0VSVChtX3ZhbGlkaXR5ID09IEludmFs
aWRhdGluZyk7Ci0gICAgbV92YWxpZGl0eSA9IEludmFsaWRhdGVkOwotfQotCiB2b2lkIENvbnRl
bnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZVNlbGVjdGlvbnNUbyhJbnNlcnRpb25Qb2ludCogaW5z
ZXJ0aW9uUG9pbnQsIGNvbnN0IENvbnRlbnREaXN0cmlidXRpb24mIHBvb2wsIFZlY3Rvcjxib29s
PiYgZGlzdHJpYnV0ZWQpCiB7CiAgICAgQ29udGVudERpc3RyaWJ1dGlvbiBkaXN0cmlidXRpb247
CkBAIC0zNDIsMTEgKzMzNCw5OCBAQCB2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0
ZU5vZGVDaGlsZHJlblRvKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludAogICAgIGluc2Vy
dGlvblBvaW50LT5zZXREaXN0cmlidXRpb24oZGlzdHJpYnV0aW9uKTsKIH0KIAotdm9pZCBDb250
ZW50RGlzdHJpYnV0b3I6OmludmFsaWRhdGVEaXN0cmlidXRpb25JbihDb250ZW50RGlzdHJpYnV0
aW9uKiBsaXN0KQordm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1dGlvbihF
bGVtZW50KiBob3N0KQoreworICAgIGlmICghbmVlZHNEaXN0cmlidXRpb24oKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGRpc3RyaWJ1dGUoaG9zdCk7Cit9CisKK3ZvaWQgQ29udGVudERpc3RyaWJ1
dG9yOjplbnN1cmVEaXN0cmlidXRpb25Gcm9tRG9jdW1lbnQoRWxlbWVudCogc291cmNlKQorewor
ICAgIENvbnRhaW5lck5vZGUqIG1heVNoYWRvdyA9IHNvdXJjZS0+dHJlZVNjb3BlKCktPnJvb3RO
b2RlKCk7CisgICAgaWYgKCFtYXlTaGFkb3ctPmlzU2hhZG93Um9vdCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBWZWN0b3I8RWxlbWVudCosIDg+IGhvc3RzOworICAgIGZvciAoRWxlbWVudCog
Y3VycmVudCA9IHRvU2hhZG93Um9vdChtYXlTaGFkb3cpLT5ob3N0KCk7IGN1cnJlbnQ7IGN1cnJl
bnQgPSBjdXJyZW50LT5zaGFkb3dIb3N0KCkpCisgICAgICAgIGhvc3RzLmFwcGVuZChjdXJyZW50
KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSBob3N0cy5zaXplKCk7IGkgPiAwOyAtLWkpCisgICAg
ICAgIGhvc3RzW2kgLSAxXS0+c2hhZG93KCktPmVuc3VyZURpc3RyaWJ1dGlvbigpOworfQorCisK
K3ZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjppbnZhbGlkYXRlRGlzdHJpYnV0aW9uKEVsZW1lbnQq
IGhvc3QpCit7CisgICAgYm9vbCBkaWROZWVkSW52YWxpZGF0aW9uID0gbmVlZHNJbnZhbGlkYXRp
b24oKTsKKyAgICBib29sIG5lZWRzUmVhdHRhY2ggPSBkaWROZWVkSW52YWxpZGF0aW9uID8gaW52
YWxpZGF0ZShob3N0KSA6IGZhbHNlOworCisgICAgaWYgKG5lZWRzUmVhdHRhY2ggJiYgaG9zdC0+
YXR0YWNoZWQoKSkgeworICAgICAgICBmb3IgKE5vZGUqIG4gPSBob3N0LT5maXJzdENoaWxkKCk7
IG47IG4gPSBuLT5uZXh0U2libGluZygpKQorICAgICAgICAgICAgbi0+bGF6eVJlYXR0YWNoKCk7
CisgICAgICAgIGhvc3QtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICB9CisKKyAgICBpZiAo
ZGlkTmVlZEludmFsaWRhdGlvbikgeworICAgICAgICBBU1NFUlQobV92YWxpZGl0eSA9PSBJbnZh
bGlkYXRpbmcpOworICAgICAgICBtX3ZhbGlkaXR5ID0gSW52YWxpZGF0ZWQ7CisgICAgfQorfQor
Citjb25zdCBTZWxlY3RSdWxlRmVhdHVyZVNldCYgQ29udGVudERpc3RyaWJ1dG9yOjplbnN1cmVT
ZWxlY3RGZWF0dXJlU2V0KEVsZW1lbnRTaGFkb3cqIHNoYWRvdykKK3sKKyAgICBpZiAoIW1fbmVl
ZHNTZWxlY3RGZWF0dXJlU2V0KQorICAgICAgICByZXR1cm4gbV9zZWxlY3RGZWF0dXJlczsKKwor
ICAgIG1fc2VsZWN0RmVhdHVyZXMuY2xlYXIoKTsKKyAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3Qg
PSBzaGFkb3ctPm9sZGVzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPnlvdW5nZXJT
aGFkb3dSb290KCkpCisgICAgICAgIGNvbGxlY3RTZWxlY3RGZWF0dXJlU2V0RnJvbShyb290KTsK
KyAgICBtX25lZWRzU2VsZWN0RmVhdHVyZVNldCA9IGZhbHNlOworICAgIHJldHVybiBtX3NlbGVj
dEZlYXR1cmVzOworfQorCit2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6Y29sbGVjdFNlbGVjdEZl
YXR1cmVTZXRGcm9tKFNoYWRvd1Jvb3QqIHJvb3QpCit7CisgICAgaWYgKFNjb3BlQ29udGVudERp
c3RyaWJ1dGlvbjo6aGFzRWxlbWVudFNoYWRvdyhyb290KSkgeworICAgICAgICBmb3IgKEVsZW1l
bnQqIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbihyb290KTsgZWxlbWVu
dDsgZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQoZWxlbWVudCkpIHsKKyAgICAgICAg
ICAgIGlmIChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0gZWxlbWVudC0+c2hhZG93KCkp
CisgICAgICAgICAgICAgICAgbV9zZWxlY3RGZWF0dXJlcy5hZGQoZWxlbWVudFNoYWRvdy0+ZGlz
dHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGVsZW1lbnRTaGFkb3cpKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGlmIChTY29wZUNvbnRlbnREaXN0cmlidXRpb246Omhhc0NvbnRl
bnRFbGVtZW50KHJvb3QpKSB7CisgICAgICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IEVsZW1l
bnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKHJvb3QpOyBlbGVtZW50OyBlbGVtZW50ID0gRWxlbWVu
dFRyYXZlcnNhbDo6bmV4dChlbGVtZW50KSkgeworICAgICAgICAgICAgaWYgKGlzSFRNTENvbnRl
bnRFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgICAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JM
aXN0JiBsaXN0ID0gdG9IVE1MQ29udGVudEVsZW1lbnQoZWxlbWVudCktPnNlbGVjdG9yTGlzdCgp
OworICAgICAgICAgICAgICAgIGZvciAoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gbGlzdC5maXJz
dCgpOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBsaXN0Lm5leHQoc2VsZWN0b3IpKQorICAgICAgICAg
ICAgICAgICAgICBtX3NlbGVjdEZlYXR1cmVzLmNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3Rvcihz
ZWxlY3Rvcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQ29u
dGVudERpc3RyaWJ1dG9yOjpkaWRBZmZlY3RTZWxlY3RvcihFbGVtZW50KiBob3N0LCBBZmZlY3Rl
ZFNlbGVjdG9yTWFzayBtYXNrKQoreworICAgIGlmIChlbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGhv
c3QtPnNoYWRvdygpKS5oYXNTZWxlY3RvckZvcihtYXNrKSkKKyAgICAgICAgaW52YWxpZGF0ZURp
c3RyaWJ1dGlvbihob3N0KTsKK30KKwordm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OndpbGxBZmZl
Y3RTZWxlY3RvcihFbGVtZW50KiBob3N0KQoreworICAgIGZvciAoRWxlbWVudFNoYWRvdyogc2hh
ZG93ID0gaG9zdC0+c2hhZG93KCk7IHNoYWRvdzsgc2hhZG93ID0gc2hhZG93LT5jb250YWluaW5n
U2hhZG93KCkpIHsKKyAgICAgICAgaWYgKHNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5uZWVkc1NlbGVj
dEZlYXR1cmVTZXQoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBzaGFkb3ctPmRpc3Ry
aWJ1dG9yKCkuc2V0TmVlZHNTZWxlY3RGZWF0dXJlU2V0KCk7CisgICAgfQorCisgICAgaW52YWxp
ZGF0ZURpc3RyaWJ1dGlvbihob3N0KTsKK30KKwordm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRp
ZFNoYWRvd0JvdW5kYXJ5Q2hhbmdlKEVsZW1lbnQqIGhvc3QpCiB7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkKLSAgICAgICAgbV9ub2RlVG9JbnNlcnRpb25Q
b2ludC5yZW1vdmUobGlzdC0+YXQoaSkuZ2V0KCkpOwotICAgIGxpc3QtPmNsZWFyKCk7CisgICAg
c2V0VmFsaWRpdHkoVW5kZXRlcm1pbmVkKTsKKyAgICBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKGhv
c3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250
ZW50RGlzdHJpYnV0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0
cmlidXRvci5oCmluZGV4IGY5ODM4MzdmMTA2NzNhYWU0Zjg0YjMyZTAwMDdkMmRiNDY3ZWEyMzcu
LjQ2MGQ0MTM1ZDk5MGU4ZmY2OTY3NTdkNTYyYTBiMGIxM2VmNzM2ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oCkBAIC0zMSw2ICszMSw3
IEBACiAjaWZuZGVmIENvbnRlbnREaXN0cmlidXRvcl9oCiAjZGVmaW5lIENvbnRlbnREaXN0cmli
dXRvcl9oCiAKKyNpbmNsdWRlICJTZWxlY3RSdWxlRmVhdHVyZVNldC5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgpAQCAtNzcsOCArNzgsOCBAQCBwdWJsaWM6CiAgICAgSW5zZXJ0aW9uUG9pbnQq
IGluc2VydGlvblBvaW50QXNzaWduZWRUbygpIGNvbnN0IHsgcmV0dXJuIG1faW5zZXJ0aW9uUG9p
bnRBc3NpZ25lZFRvOyB9CiAgICAgdm9pZCBzZXRJbnNlcnRpb25Qb2ludEFzc2lnbmVkVG8oSW5z
ZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50KSB7IG1faW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRv
ID0gaW5zZXJ0aW9uUG9pbnQ7IH0KIAotICAgIHZvaWQgcmVnaXN0ZXJJbnNlcnRpb25Qb2ludChT
aGFkb3dSb290KiwgSW5zZXJ0aW9uUG9pbnQqKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJJbnNlcnRp
b25Qb2ludChTaGFkb3dSb290KiwgSW5zZXJ0aW9uUG9pbnQqKTsKKyAgICB2b2lkIHJlZ2lzdGVy
SW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJJbnNl
cnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCopOwogICAgIGJvb2wgaGFzU2hhZG93RWxlbWVudENo
aWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPZlNoYWRvd0VsZW1lbnRDaGlsZHJlbiA+
IDA7IH0KICAgICBib29sIGhhc0NvbnRlbnRFbGVtZW50Q2hpbGRyZW4oKSBjb25zdCB7IHJldHVy
biBtX251bWJlck9mQ29udGVudEVsZW1lbnRDaGlsZHJlbiA+IDA7IH0KIApAQCAtMTIyLDIzICsx
MjMsMzUgQEAgcHVibGljOgogICAgIH5Db250ZW50RGlzdHJpYnV0b3IoKTsKIAogICAgIEluc2Vy
dGlvblBvaW50KiBmaW5kSW5zZXJ0aW9uUG9pbnRGb3IoY29uc3QgTm9kZSoga2V5KSBjb25zdDsK
LQotICAgIHZvaWQgc2V0VmFsaWRpdHkoVmFsaWRpdHkgdmFsaWRpdHkpIHsgbV92YWxpZGl0eSA9
IHZhbGlkaXR5OyB9Ci0KLSAgICB2b2lkIGRpc3RyaWJ1dGUoRWxlbWVudCogaG9zdCk7Ci0gICAg
Ym9vbCBpbnZhbGlkYXRlKEVsZW1lbnQqIGhvc3QpOwotICAgIHZvaWQgZmluaXNoSW5pdmFsaWRh
dGlvbigpOwotICAgIGJvb2wgbmVlZHNEaXN0cmlidXRpb24oKSBjb25zdDsKLSAgICBib29sIG5l
ZWRzSW52YWxpZGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92YWxpZGl0eSAhPSBJbnZhbGlkYXRl
ZDsgfQorICAgIGNvbnN0IFNlbGVjdFJ1bGVGZWF0dXJlU2V0JiBlbnN1cmVTZWxlY3RGZWF0dXJl
U2V0KEVsZW1lbnRTaGFkb3cqKTsKIAogICAgIHZvaWQgZGlzdHJpYnV0ZVNlbGVjdGlvbnNUbyhJ
bnNlcnRpb25Qb2ludCosIGNvbnN0IENvbnRlbnREaXN0cmlidXRpb24mIHBvb2wsIFZlY3Rvcjxi
b29sPiYgZGlzdHJpYnV0ZWQpOwogICAgIHZvaWQgZGlzdHJpYnV0ZU5vZGVDaGlsZHJlblRvKElu
c2VydGlvblBvaW50KiwgQ29udGFpbmVyTm9kZSopOwotICAgIHZvaWQgaW52YWxpZGF0ZURpc3Ry
aWJ1dGlvbkluKENvbnRlbnREaXN0cmlidXRpb24qKTsKKworICAgIHZvaWQgZW5zdXJlRGlzdHJp
YnV0aW9uKEVsZW1lbnQqIGhvc3QpOworICAgIHZvaWQgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihF
bGVtZW50KiBob3N0KTsKKyAgICB2b2lkIGRpZFNoYWRvd0JvdW5kYXJ5Q2hhbmdlKEVsZW1lbnQq
IGhvc3QpOworICAgIHZvaWQgZGlkQWZmZWN0U2VsZWN0b3IoRWxlbWVudCogaG9zdCwgQWZmZWN0
ZWRTZWxlY3Rvck1hc2spOworICAgIHZvaWQgd2lsbEFmZmVjdFNlbGVjdG9yKEVsZW1lbnQqIGhv
c3QpOworCisgICAgc3RhdGljIHZvaWQgZW5zdXJlRGlzdHJpYnV0aW9uRnJvbURvY3VtZW50KEVs
ZW1lbnQqIHNvdXJjZSk7CiAKIHByaXZhdGU6CisgICAgdm9pZCBkaXN0cmlidXRlKEVsZW1lbnQq
IGhvc3QpOworICAgIGJvb2wgaW52YWxpZGF0ZShFbGVtZW50KiBob3N0KTsKICAgICB2b2lkIHBv
cHVsYXRlKE5vZGUqLCBDb250ZW50RGlzdHJpYnV0aW9uJik7CiAKKyAgICB2b2lkIGNvbGxlY3RT
ZWxlY3RGZWF0dXJlU2V0RnJvbShTaGFkb3dSb290Kik7CisgICAgYm9vbCBuZWVkc1NlbGVjdEZl
YXR1cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX25lZWRzU2VsZWN0RmVhdHVyZVNldDsgfQorICAg
IHZvaWQgc2V0TmVlZHNTZWxlY3RGZWF0dXJlU2V0KCkgeyBtX25lZWRzU2VsZWN0RmVhdHVyZVNl
dCA9IHRydWU7IH0KKworICAgIHZvaWQgc2V0VmFsaWRpdHkoVmFsaWRpdHkgdmFsaWRpdHkpIHsg
bV92YWxpZGl0eSA9IHZhbGlkaXR5OyB9CisgICAgYm9vbCBuZWVkc0Rpc3RyaWJ1dGlvbigpIGNv
bnN0OworICAgIGJvb2wgbmVlZHNJbnZhbGlkYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3ZhbGlk
aXR5ICE9IEludmFsaWRhdGVkOyB9CisKICAgICBIYXNoTWFwPGNvbnN0IE5vZGUqLCBSZWZQdHI8
SW5zZXJ0aW9uUG9pbnQ+ID4gbV9ub2RlVG9JbnNlcnRpb25Qb2ludDsKKyAgICBTZWxlY3RSdWxl
RmVhdHVyZVNldCBtX3NlbGVjdEZlYXR1cmVzOworICAgIGJvb2wgbV9uZWVkc1NlbGVjdEZlYXR1
cmVTZXQgOiAxOwogICAgIHVuc2lnbmVkIG1fdmFsaWRpdHkgOiAyOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAKaW5kZXggOTBj
Nzg2YWRhODkzZDc1M2NiZTY3ZDg0YTE4OTRkOTY1OTljM2QwNC4uMzdkNTcwYjViYTYxMjA2OTk3
NmYxOGZlN2NmYjM5ZDE1MDJhNGU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCkBAIC05OSwxMCArOTksOCBAQCB2b2lkIEhUTUxD
b250ZW50RWxlbWVudDo6ZW5zdXJlU2VsZWN0UGFyc2VkKCkKIHZvaWQgSFRNTENvbnRlbnRFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IHNlbGVjdEF0dHIpIHsKLSAgICAg
ICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBjb250YWluaW5nU2hhZG93Um9vdCgpKSB7Ci0gICAg
ICAgICAgICByb290LT5vd25lcigpLT5zZXRTaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCgp
OwotICAgICAgICAgICAgcm9vdC0+b3duZXIoKS0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwot
ICAgICAgICB9CisgICAgICAgIGlmIChTaGFkb3dSb290KiByb290ID0gY29udGFpbmluZ1NoYWRv
d1Jvb3QoKSkKKyAgICAgICAgICAgIHJvb3QtPm93bmVyKCktPndpbGxBZmZlY3RTZWxlY3Rvcigp
OwogICAgICAgICBtX3Nob3VsZFBhcnNlU2VsZWN0b3JMaXN0ID0gdHJ1ZTsKICAgICB9IGVsc2UK
ICAgICAgICAgSW5zZXJ0aW9uUG9pbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgKaW5kZXgg
YTZkYzVmNGNiYjQxNTA3ZjFiNTRiMGY2MDk4ZGMzYjkxYWIwOTFiMy4uYTMxOGNmNzhiZWM2OTNk
YTE3ODhiZTJmMWI3NDRkNWY0NWUxYzUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBpc1NlbGVjdFZhbGlkKCk7CiAgICAgdmlydHVhbCBjb25zdCBDU1NTZWxl
Y3Rvckxpc3QmIHNlbGVjdG9yTGlzdCgpOwogICAgIHZpcnR1YWwgVHlwZSBpbnNlcnRpb25Qb2lu
dFR5cGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBDb250ZW50SW5zZXJ0aW9uUG9pbnQ7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgY2FuQWZmZWN0U2VsZWN0b3IoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CiAKIHByb3RlY3RlZDoKICAgICBIVE1MQ29udGVudEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9IVE1MU2hhZG93RWxlbWVudC5jcHAKaW5kZXggMjJjMDc2NTZhNTU3ZTQ3YzkzZmViNTNh
YjNlMzU1MjIwN2FmOGU5Yy4uMTc0N2VjZDE3MjkwOWNmMjFlZWNmNjIzYjY3OTczMGIzZmQ1NTBk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50
LmNwcApAQCAtNzAsNyArNzAsNyBAQCBTaGFkb3dSb290KiBIVE1MU2hhZG93RWxlbWVudDo6b2xk
ZXJTaGFkb3dSb290KCkKICAgICBpZiAoIXRyZWVTY29wZSgpLT5yb290Tm9kZSgpLT5pc1NoYWRv
d1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB0b1NoYWRvd1Jvb3QodHJlZVNjb3Bl
KCktPnJvb3ROb2RlKCkpLT5vd25lcigpLT5lbnN1cmVEaXN0cmlidXRpb25Gcm9tRG9jdW1lbnQo
KTsKKyAgICBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1dGlvbkZyb21Eb2N1bWVu
dCh0aGlzKTsKIAogICAgIFNoYWRvd1Jvb3QqIG9sZGVyID0gdG9TaGFkb3dSb290KHRyZWVTY29w
ZSgpLT5yb290Tm9kZSgpKS0+b2xkZXJTaGFkb3dSb290KCk7CiAgICAgaWYgKCFvbGRlciB8fCBv
bGRlci0+dHlwZSgpICE9IFNoYWRvd1Jvb3Q6OkF1dGhvclNoYWRvd1Jvb3QgfHwgU2NvcGVDb250
ZW50RGlzdHJpYnV0aW9uOjphc3NpZ25lZFRvKG9sZGVyKSAhPSB0aGlzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCmluZGV4IDQ0ZTM0Yjk1MzQ1NzRl
YzA2OGRlZWQyYWZkODBhNjk2NjQ3YmFjNTkuLjVhYzUyMGQ1NWVkMzkwZmUyZmI5N2YxMDA4YmFj
OTM2NjlmMjU4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2Vy
dGlvblBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5jcHAKQEAgLTk5LDEwICs5OSw3IEBAIGJvb2wgSW5zZXJ0aW9uUG9pbnQ6OmlzQWN0aXZl
KCkgY29uc3QKIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW5zZXJ0aW9uUG9pbnQ6OmdldERpc3Ry
aWJ1dGVkTm9kZXMoKSBjb25zdAogewotICAgIENvbnRhaW5lck5vZGUqIHJvb3ROb2RlID0gdHJl
ZVNjb3BlKCktPnJvb3ROb2RlKCk7Ci0gICAgaWYgKHJvb3ROb2RlLT5pc1NoYWRvd1Jvb3QoKSkK
LSAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHJvb3RPd25lciA9IHRvU2hhZG93Um9vdChyb290
Tm9kZSktPm93bmVyKCkpCi0gICAgICAgICAgICByb290T3duZXItPmVuc3VyZURpc3RyaWJ1dGlv
bkZyb21Eb2N1bWVudCgpOworICAgIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0
aW9uRnJvbURvY3VtZW50KGNvbnN0X2Nhc3Q8SW5zZXJ0aW9uUG9pbnQqPih0aGlzKSk7CiAKICAg
ICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbm9kZXM7CiAKQEAgLTEzMSwxMSArMTI4LDEyIEBAIE5v
ZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSW5zZXJ0aW9uUG9pbnQ6Omluc2VydGVk
SW50byhDb250YWluZXJOb2RlKiBpCiAKICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IGNvbnRh
aW5pbmdTaGFkb3dSb290KCkpIHsKICAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHJvb3RPd25l
ciA9IHJvb3QtPm93bmVyKCkpIHsKLSAgICAgICAgICAgIHJvb3RPd25lci0+c2V0VmFsaWRpdHlV
bmRldGVybWluZWQoKTsKLSAgICAgICAgICAgIHJvb3RPd25lci0+aW52YWxpZGF0ZURpc3RyaWJ1
dGlvbigpOworICAgICAgICAgICAgcm9vdE93bmVyLT5kaXN0cmlidXRvcigpLmRpZFNoYWRvd0Jv
dW5kYXJ5Q2hhbmdlKHJvb3QtPmhvc3QoKSk7CiAgICAgICAgICAgICBpZiAoaXNBY3RpdmUoKSAm
JiAhbV9yZWdpc3RlcmVkV2l0aFNoYWRvd1Jvb3QgJiYgaW5zZXJ0aW9uUG9pbnQtPnRyZWVTY29w
ZSgpLT5yb290Tm9kZSgpID09IHJvb3QpIHsKICAgICAgICAgICAgICAgICBtX3JlZ2lzdGVyZWRX
aXRoU2hhZG93Um9vdCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgcm9vdC0+ZW5zdXJlU2NvcGVE
aXN0cmlidXRpb24oKS0+cmVnaXN0ZXJJbnNlcnRpb25Qb2ludChyb290LCB0aGlzKTsKKyAgICAg
ICAgICAgICAgICByb290LT5lbnN1cmVTY29wZURpc3RyaWJ1dGlvbigpLT5yZWdpc3Rlckluc2Vy
dGlvblBvaW50KHRoaXMpOworICAgICAgICAgICAgICAgIGlmIChjYW5BZmZlY3RTZWxlY3Rvcigp
KQorICAgICAgICAgICAgICAgICAgICByb290T3duZXItPndpbGxBZmZlY3RTZWxlY3RvcigpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTYwLDcgKzE1OCw5IEBAIHZvaWQg
SW5zZXJ0aW9uUG9pbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50
KQogICAgIGlmIChtX3JlZ2lzdGVyZWRXaXRoU2hhZG93Um9vdCAmJiBpbnNlcnRpb25Qb2ludC0+
dHJlZVNjb3BlKCktPnJvb3ROb2RlKCkgPT0gcm9vdCkgewogICAgICAgICBBU1NFUlQocm9vdCk7
CiAgICAgICAgIG1fcmVnaXN0ZXJlZFdpdGhTaGFkb3dSb290ID0gZmFsc2U7Ci0gICAgICAgIHJv
b3QtPmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCktPnVucmVnaXN0ZXJJbnNlcnRpb25Qb2ludChy
b290LCB0aGlzKTsKKyAgICAgICAgcm9vdC0+ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24oKS0+dW5y
ZWdpc3Rlckluc2VydGlvblBvaW50KHRoaXMpOworICAgICAgICBpZiAocm9vdE93bmVyICYmIGNh
bkFmZmVjdFNlbGVjdG9yKCkpCisgICAgICAgICAgICByb290T3duZXItPndpbGxBZmZlY3RTZWxl
Y3RvcigpOwogICAgIH0KIAogICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Q
b2ludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAppbmRl
eCAzYmQ3NTJjODczZDFmMWE1OTllNDc5MGI4NjU5NGIwNzVlZWY3ZWNlLi4yMGNlNzdkMGEzNzll
ZmNjMjQ0OGE2NTg5OWQ2YzU4ZjM3ZjljOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0luc2VydGlvblBvaW50LmgKQEAgLTYyLDYgKzYyLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBpc1NlbGVjdFZhbGlkKCkgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgQ1NTU2VsZWN0
b3JMaXN0JiBzZWxlY3Rvckxpc3QoKSA9IDA7CiAgICAgdmlydHVhbCBUeXBlIGluc2VydGlvblBv
aW50VHlwZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuQWZmZWN0U2VsZWN0b3Io
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgYm9vbCByZXNldFN0eWxlSW5oZXJpdGFu
Y2UoKSBjb25zdDsKICAgICB2b2lkIHNldFJlc2V0U3R5bGVJbmhlcml0YW5jZShib29sKTsKQEAg
LTg4LDYgKzg5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShD
b250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNJbnNlcnRpb25Qb2ludE5vZGUoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CisKIHByaXZhdGU6CiAKICAgICBDb250ZW50RGlzdHJpYnV0aW9uIG1fZGlz
dHJpYnV0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDRlOGJmOGY0
NjkxZWY5NGQxNjM4MGIxODUyM2RjYTk5NTFkNDUyOGQuLjlhNDM3OWYzNTE3ZDYzMDdiNTcwOTEy
MWE2NWEwYmU3Y2JjMTgyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAg
LTM0MCw4ICszNDAsNyBAQCBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JJZEluU2hhZG93
KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgaWRWYWx1ZSwgRQogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKLSAgICBob3N0LT5zaGFkb3coKS0+ZW5zdXJlU2VsZWN0RmVhdHVyZVNldENv
bGxlY3RlZCgpOwotICAgIHJldHVybiBob3N0LT5zaGFkb3coKS0+c2VsZWN0UnVsZUZlYXR1cmVT
ZXQoKS5oYXNTZWxlY3RvckZvcklkKGlkVmFsdWUpOworICAgIHJldHVybiBob3N0LT5zaGFkb3co
KS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGhvc3QtPnNoYWRvdygpKS5o
YXNTZWxlY3RvckZvcklkKGlkVmFsdWUpOwogfQogCiBib29sIEludGVybmFsczo6aGFzU2VsZWN0
b3JGb3JDbGFzc0luU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgY2xhc3NOYW1l
LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTM1MSw4ICszNTAsNyBAQCBib29sIEludGVybmFsczo6
aGFzU2VsZWN0b3JGb3JDbGFzc0luU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYg
Y2xhc3NOYQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBob3N0LT5zaGFkb3coKS0+
ZW5zdXJlU2VsZWN0RmVhdHVyZVNldENvbGxlY3RlZCgpOwotICAgIHJldHVybiBob3N0LT5zaGFk
b3coKS0+c2VsZWN0UnVsZUZlYXR1cmVTZXQoKS5oYXNTZWxlY3RvckZvckNsYXNzKGNsYXNzTmFt
ZSk7CisgICAgcmV0dXJuIGhvc3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVj
dEZlYXR1cmVTZXQoaG9zdC0+c2hhZG93KCkpLmhhc1NlbGVjdG9yRm9yQ2xhc3MoY2xhc3NOYW1l
KTsKIH0KIAogYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRlSW5TaGFkb3co
RWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVOYW1lLCBFeGNlcHRpb25Db2Rl
JiBlYykKQEAgLTM2Miw4ICszNjAsNyBAQCBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JB
dHRyaWJ1dGVJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIGF0dAogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBob3N0LT5zaGFkb3coKS0+ZW5zdXJlU2VsZWN0RmVh
dHVyZVNldENvbGxlY3RlZCgpOwotICAgIHJldHVybiBob3N0LT5zaGFkb3coKS0+c2VsZWN0UnVs
ZUZlYXR1cmVTZXQoKS5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAg
ICByZXR1cm4gaG9zdC0+c2hhZG93KCktPmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVy
ZVNldChob3N0LT5zaGFkb3coKSkuaGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUoYXR0cmlidXRlTmFt
ZSk7CiB9CiAKIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvclBzZXVkb0NsYXNzSW5TaGFk
b3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBwc2V1ZG9DbGFzcywgRXhjZXB0aW9uQ29k
ZSYgZWMpCkBAIC0zNzMsOCArMzcwLDcgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9y
UHNldWRvQ2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIHAKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaG9zdC0+c2hhZG93KCktPmVuc3VyZVNlbGVjdEZl
YXR1cmVTZXRDb2xsZWN0ZWQoKTsKLSAgICBjb25zdCBTZWxlY3RSdWxlRmVhdHVyZVNldCYgZmVh
dHVyZVNldCA9IGhvc3QtPnNoYWRvdygpLT5zZWxlY3RSdWxlRmVhdHVyZVNldCgpOworICAgIGNv
bnN0IFNlbGVjdFJ1bGVGZWF0dXJlU2V0JiBmZWF0dXJlU2V0ID0gaG9zdC0+c2hhZG93KCktPmRp
c3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFkb3coKSk7CiAgICAg
aWYgKHBzZXVkb0NsYXNzID09ICJjaGVja2VkIikKICAgICAgICAgcmV0dXJuIGZlYXR1cmVTZXQu
aGFzU2VsZWN0b3JGb3JDaGVja2VkKCk7CiAgICAgaWYgKHBzZXVkb0NsYXNzID09ICJlbmFibGVk
IikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LmRl
Zi5pbiBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LmRlZi5pbgppbmRl
eCA2YzgwNWZjYzFiMTZlYTkwY2UyYTkyOGMzMzYwYjJjNmVlZjNlMGIxLi43ODRiNzM1YjhlNDVh
YTZmNWNlZjAzNDgwZDMwMWI4OGIyODUwZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJLaXQudmNwcm9qL1dlYktpdC5kZWYuaW4KKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
S2l0LnZjcHJvai9XZWJLaXQuZGVmLmluCkBAIC0xODEsNyArMTgxLDYgQEAgRVhQT1JUUwogICAg
ICAgICA/Y3JlYXRlV3JhcHBlckBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3Rh
dGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVk5vZGVAMUBAWgogICAgICAgICA/ZGVzZXJp
YWxpemVAU2VyaWFsaXplZFNjcmlwdFZhbHVlQFdlYkNvcmVAQFFBRT9BVkpTVmFsdWVASlNDQEBQ
QVZFeGVjU3RhdGVANEBQQVZKU0dsb2JhbE9iamVjdEA0QFBBVj8kVmVjdG9yQFY/JFJlZlB0ckBW
TWVzc2FnZVBvcnRAV2ViQ29yZUBAQFdURkBAJDAwQFdURkBAVzRTZXJpYWxpemF0aW9uRXJyb3JN
b2RlQDJAQFoKICAgICAgICAgP2RvY3VtZW50U3RhdGVASGlzdG9yeUl0ZW1AV2ViQ29yZUBAUUJF
QUJWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBYWgotICAgICAgICA/ZW5zdXJlU2Vs
ZWN0RmVhdHVyZVNldENvbGxlY3RlZEBFbGVtZW50U2hhZG93QFdlYkNvcmVAQFFBRVhYWgogICAg
ICAgICA/ZXF1YWxAV1RGQEBZQV9OUEJWU3RyaW5nSW1wbEAxQFBCRUBaCiAgICAgICAgID9lcXVh
bEBXVEZAQFlBX05QQlZTdHJpbmdJbXBsQDFAMEBaCiAgICAgICAgID9lcXVhbElnbm9yaW5nQ2Fz
ZUBXVEZAQFlBX05QQVZTdHJpbmdJbXBsQDFAUEJFQFoKQEAgLTU3MCw3ICs1NjksNiBAQCBFWFBP
UlRTCiAgICAgICAgID9jcmVhdGVXcmFwcGVyQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBB
VkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWTm9kZUAxQEBaCiAgICAgICAg
ID9kZXNlcmlhbGl6ZUBTZXJpYWxpemVkU2NyaXB0VmFsdWVAV2ViQ29yZUBAUUFFP0FWSlNWYWx1
ZUBKU0NAQFBBVkV4ZWNTdGF0ZUA0QFBBVkpTR2xvYmFsT2JqZWN0QDRAUEFWPyRWZWN0b3JAVj8k
UmVmUHRyQFZNZXNzYWdlUG9ydEBXZWJDb3JlQEBAV1RGQEAkMDBAV1RGQEBXNFNlcmlhbGl6YXRp
b25FcnJvck1vZGVAMkBAWgogICAgICAgICA/ZG9jdW1lbnRTdGF0ZUBIaXN0b3J5SXRlbUBXZWJD
b3JlQEBRQkVBQlY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQFhaCi0gICAgICAgID9l
bnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkQEVsZW1lbnRTaGFkb3dAV2ViQ29yZUBAUUFF
WFhaCiAgICAgICAgID9lcXVhbEBXVEZAQFlBX05QQlZTdHJpbmdJbXBsQDFAUEJFQFoKICAgICAg
ICAgP2VxdWFsQFdURkBAWUFfTlBCVlN0cmluZ0ltcGxAMUAwQFoKICAgICAgICAgP2VxdWFsSWdu
b3JpbmdDYXNlQFdURkBAWUFfTlBBVlN0cmluZ0ltcGxAMUBQQkVAWgpAQCAtOTU5LDcgKzk1Nyw2
IEBAIEVYUE9SVFMKICAgICAgICAgP2NyZWF0ZVdyYXBwZXJAV2ViQ29yZUBAWUE/QVZKU1ZhbHVl
QEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQVZOb2RlQDFAQFoK
ICAgICAgICAgP2Rlc2VyaWFsaXplQFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUBXZWJDb3JlQEBRQUU/
QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDRAUEFWSlNHbG9iYWxPYmplY3RANEBQQVY/JFZl
Y3RvckBWPyRSZWZQdHJAVk1lc3NhZ2VQb3J0QFdlYkNvcmVAQEBXVEZAQCQwMEBXVEZAQFc0U2Vy
aWFsaXphdGlvbkVycm9yTW9kZUAyQEBaCiAgICAgICAgID9kb2N1bWVudFN0YXRlQEhpc3RvcnlJ
dGVtQFdlYkNvcmVAQFFCRUFCVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAWFoKLSAg
ICAgICAgP2Vuc3VyZVNlbGVjdEZlYXR1cmVTZXRDb2xsZWN0ZWRARWxlbWVudFNoYWRvd0BXZWJD
b3JlQEBRQUVYWFoKICAgICAgICAgP2VxdWFsQFdURkBAWUFfTlBCVlN0cmluZ0ltcGxAMUBQQkVA
WgogICAgICAgICA/ZXF1YWxAV1RGQEBZQV9OUEJWU3RyaW5nSW1wbEAxQDBAWgogICAgICAgICA/
ZXF1YWxJZ25vcmluZ0Nhc2VAV1RGQEBZQV9OUEFWU3RyaW5nSW1wbEAxQFBCRUBaCkBAIC0xMzQ4
LDcgKzEzNDUsNiBAQCBFWFBPUlRTCiAgICAgICAgID9jcmVhdGVXcmFwcGVyQFdlYkNvcmVAQFlB
P0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFW
Tm9kZUAxQEBaCiAgICAgICAgID9kZXNlcmlhbGl6ZUBTZXJpYWxpemVkU2NyaXB0VmFsdWVAV2Vi
Q29yZUBAUUFFP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUA0QFBBVkpTR2xvYmFsT2JqZWN0
QDRAUEFWPyRWZWN0b3JAVj8kUmVmUHRyQFZNZXNzYWdlUG9ydEBXZWJDb3JlQEBAV1RGQEAkMDBA
V1RGQEBXNFNlcmlhbGl6YXRpb25FcnJvck1vZGVAMkBAWgogICAgICAgICA/ZG9jdW1lbnRTdGF0
ZUBIaXN0b3J5SXRlbUBXZWJDb3JlQEBRQkVBQlY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBX
VEZAQFhaCi0gICAgICAgID9lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkQEVsZW1lbnRT
aGFkb3dAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9lcXVhbEBXVEZAQFlBX05QQlZTdHJpbmdJ
bXBsQDFAUEJFQFoKICAgICAgICAgP2VxdWFsQFdURkBAWUFfTlBCVlN0cmluZ0ltcGxAMUAwQFoK
ICAgICAgICAgP2VxdWFsSWdub3JpbmdDYXNlQFdURkBAWUFfTlBBVlN0cmluZ0ltcGxAMUBQQkVA
WgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggYTkxNDcwMjhiMWFjMGI5NTU0ODg4MDk3YWFj
ZGNkMTUwMWQxYWRkYy4uOTBjMTk4OGVmYzI4NjE0YTkwMTRlZWVjZTBmMzViZjU3MjliNzBhOCAx
MDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2Uv
YXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC01OCw3ICs1OCw2IEBAIF9aTjdXZWJDb3JlMTJU
ZXh0SXRlcmF0b3IyNnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoRVBOU18xM0NvbnRhaW5lck5v
ZGVFaWliOwogX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjI5Z2V0TG9jYXRpb25BbmRMZW5ndGhG
cm9tUmFuZ2VFUE5TXzdFbGVtZW50RVBLTlNfNVJhbmdlRVJqUzZfOwogX1pON1dlYkNvcmUxMlRl
eHRJdGVyYXRvcjI5Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2VFUE5TXzdFbGVtZW50RVBL
TlNfNVJhbmdlRVJtUzZfOwogX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDIwcGFnZU51bWJlckZv
ckVsZW1lbnRFUE5TXzdFbGVtZW50RVJLTlNfOUZsb2F0U2l6ZUU7Ci1fWk43V2ViQ29yZTEzRWxl
bWVudFNoYWRvdzMxZW5zdXJlU2VsZWN0RmVhdHVyZVNldENvbGxlY3RlZEV2OwogX1pON1dlYkNv
cmUxM2NyZWF0ZVdyYXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVj
dEVQTlNfNE5vZGVFOwogX1pON1dlYkNvcmUxNENsaWVudFJlY3RMaXN0QzFFUktOM1dURjZWZWN0
b3JJTlNfOUZsb2F0UXVhZEVMajBFRUU7CiBfWk43V2ViQ29yZTE0Q2xpZW50UmVjdExpc3RDMUVS
S04zV1RGNlZlY3RvcklOU185RmxvYXRRdWFkRUxtMEVFRTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181882</attachid>
            <date>2013-01-09 02:24:32 -0800</date>
            <delta_ts>2013-01-09 17:16:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106294-20130109192135.patch</filename>
            <type>text/plain</type>
            <size>37983</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjJkNTY1ZGJkMjc4N2Y5
NDFkMmM5YjQzNzA2Yzg2Njk5YWM1ZGYwYS4uN2VkZTA1NzBjNWQ0ZjNhOGFiYTMzYTU4ZjlmZGM3
OTY2N2ZiNjEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTAxLTA5ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0g
RGlzdHJpYnV0aW9uIHJlbGF0ZWQgY29kZSBvbiBFbGVtZW50U2hhZG93IHNob3VsZCBiZSBtaW5p
bWl6ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDYyOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGNoYW5nZSBtb3ZlcyBFbGVtZW50U2hhZG93OjptX3NlbGVjdEZlYXR1cmVzLAorICAgICAg
ICBtX3Nob3VsZENvbGxlY3RTZWxlY3RGZWF0dXJlU2V0IGFuZCByZWxhdGVkIG1ldGhvZHMgdG8K
KyAgICAgICAgQ29udGVudERpc3RyaWJ1dG9yLgorCisgICAgICAgIFRoZXJlIGFyZSBhbHNvIHNv
bWUgcmVuYW1pbmcgYW5kIHNtYWxsIHJlZmFjdG9yaW5ncyBmb3IgYmV0dGVyIGZpdAorICAgICAg
ICBvbiBuZXcgcGxhY2U6CisKKyAgICAgICAgLSBzaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNl
dCBpcyByZW5hbWVkIG5lZWRzU2VsZWN0b3JSdWxlU2V0IGZvciBjb25jaXNlbmVzcy4KKyAgICAg
ICAgLSBzZXRTaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCgpIHdoaWNoIHVzZWQgcmVjdXJz
aW9uIG1vcnBoZWQgaW50bworICAgICAgICAgIGl0ZXJhdGl2ZSB3aWxsQWZmZWN0U2VsZWN0b3Io
KS4KKyAgICAgICAgLSBlbnN1cmVEaXN0cmlidXRpb25Gcm9tRG9jdW1lbnQoKSBiZWNvbWVzIGEg
c3RhdGljIG1ldGhvZC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFJlZmFjdG9yaW5nLgorCisg
ICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlvbldoZW5B
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBkb20vRWxlbWVudFNoYWRvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50U2hhZG93OjphZGRTaGFkb3dSb290KToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnRTaGFkb3c6OnJlbW92ZUFsbFNoYWRvd1Jvb3RzKToKKyAgICAgICAgKiBk
b20vRWxlbWVudFNoYWRvdy5oOgorICAgICAgICAoRWxlbWVudFNoYWRvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50U2hhZG93OjppbnZhbGlkYXRlRGlzdHJpYnV0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OmVuc3VyZURpc3RyaWJ1dGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50U2hhZG93OjpkaWRBZmZlY3RTZWxlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50U2hhZG93Ojp3aWxsQWZmZWN0U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudFNoYWRvdzo6Y29udGFpbmluZ1NoYWRvdyk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpyZWdpc3Rlckluc2VydGlvblBvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6dW5yZWdpc3Rl
ckluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6
Q29udGVudERpc3RyaWJ1dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRv
cjo6ZW5zdXJlRGlzdHJpYnV0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb25Gcm9tRG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9yOjppbnZhbGlkYXRlRGlzdHJp
YnV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlU2Vs
ZWN0RmVhdHVyZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OmNv
bGxlY3RTZWxlY3RGZWF0dXJlU2V0RnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlz
dHJpYnV0b3I6OmRpZEFmZmVjdFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRE
aXN0cmlidXRvcjo6d2lsbEFmZmVjdFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnREaXN0cmlidXRvcjo6ZGlkU2hhZG93Qm91bmRhcnlDaGFuZ2UpOgorICAgICAgICAqIGh0bWwv
c2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oOgorICAgICAgICAoU2NvcGVDb250ZW50RGlzdHJp
YnV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6bmVlZHNTZWxl
Y3RGZWF0dXJlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6c2V0
TmVlZHNTZWxlY3RGZWF0dXJlU2V0KToKKyAgICAgICAgKENvbnRlbnREaXN0cmlidXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OnNldFZhbGlkaXR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6bmVlZHNJbnZhbGlkYXRpb24pOgorICAg
ICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ29udGVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1M
U2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2hhZG93RWxlbWVudDo6
b2xkZXJTaGFkb3dSb290KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6Z2V0RGlzdHJpYnV0ZWROb2Rl
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6aW5zZXJ0ZWRJbnRvKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjpyZW1vdmVkRnJvbSk6CisgICAgICAgICog
aHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydGlv
blBvaW50OjpjYW5BZmZlY3RTZWxlY3Rvcik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvcklkSW5TaGFk
b3cpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckNsYXNzSW5T
aGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckF0dHJp
YnV0ZUluU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JG
b3JQc2V1ZG9DbGFzc0luU2hhZG93KToKKwogMjAxMy0wMS0wOCAgVG9ueSBHZW50aWxjb3JlICA8
dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBkZXBlbmRlbmN5IG9uIERvY3Vt
ZW50IGZyb20gSFRNTENvbnN0cnVjdGlvblNpdGU6OmluUXVpcmtzTW9kZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKaW5kZXggMjY1ZTI0MTdlMjE5NmQwZjBhNDM2ZGIwOTcxZWFjMTkyZGVkZjQ3OS4uZjgzZDdl
ZDc5NDNiNjZjYzk0OWM1MWM5YWNlNmM5YWYxYTQwOTJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDEzLTAxLTA5ICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xl
LmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0gRGlzdHJpYnV0aW9uIHJlbGF0ZWQgY29kZSBv
biBFbGVtZW50U2hhZG93IHNob3VsZCBiZSBtaW5pbWl6ZWQuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyOTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0LmRlZi5p
bjoKKwogMjAxMy0wMS0wOCAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgW1NoYWRvdyBET01dIERpc3RyaWJ1dGlvbiByZWxhdGVkIGNvZGUgb24gU2hhZG93
Um9vdCBzaG91bGQgYmUgbWluaW1pemVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA3NWY4M2M3
Y2JmMzgxNTAyMjIxYzE0MGFmNjNkNDRjMTkxMTRmNTE3Li4yZGVmYjU5MmY1ZmU1NzcwYWVkYzdm
ODM5NzZhZTc1ZjhiNWJkMzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjE3LDcgKzIxNyw2
IEBAIF9fWk43V2ViQ29yZTEzQVhPYmplY3RDYWNoZTQyZ0FjY2Vzc2liaWxpdHlFbmhhbmNlZFVz
ZXJJbnRlcmZhY2VFbmFibGVkRQogX19aTjdXZWJDb3JlMTNDaGFyYWN0ZXJEYXRhN3NldERhdGFF
UktOM1dURjZTdHJpbmdFUmkKIF9fWk43V2ViQ29yZTEzQ29udGFpbmVyTm9kZTExYXBwZW5kQ2hp
bGRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUVSaWIKIF9fWk43V2ViQ29yZTEzQ29udGFp
bmVyTm9kZTExcmVtb3ZlQ2hpbGRFUE5TXzROb2RlRVJpCi1fX1pON1dlYkNvcmUxM0VsZW1lbnRT
aGFkb3czMWVuc3VyZVNlbGVjdEZlYXR1cmVTZXRDb2xsZWN0ZWRFdgogX19aTjdXZWJDb3JlMTNI
VFRQSGVhZGVyTWFwQzFFdgogX19aTjdXZWJDb3JlMTNIVFRQSGVhZGVyTWFwRDFFdgogX19aTjdX
ZWJDb3JlMTNIaXRUZXN0UmVzdWx0QzFFUktTMF8KQEAgLTUxNyw2ICs1MTYsNyBAQCBfX1pON1dl
YkNvcmUxOERPTVdpbmRvd0V4dGVuc2lvbkMxRVBOU181RnJhbWVFUE5TXzE1RE9NV3JhcHBlcldv
cmxkRQogX19aTjdXZWJDb3JlMThIVE1MQ29udGVudEVsZW1lbnQ2Y3JlYXRlRVBOU184RG9jdW1l
bnRFCiBfX1pON1dlYkNvcmUxMFBhc3RlYm9hcmQxN2dlbmVyYWxQYXN0ZWJvYXJkRXYKIF9fWk43
V2ViQ29yZTEwUGFzdGVib2FyZDE0d3JpdGVQbGFpblRleHRFUktOM1dURjZTdHJpbmdFTlMwXzE4
U21hcnRSZXBsYWNlT3B0aW9uRQorX19aTjdXZWJDb3JlMThDb250ZW50RGlzdHJpYnV0b3IyMmVu
c3VyZVNlbGVjdEZlYXR1cmVTZXRFUE5TXzEzRWxlbWVudFNoYWRvd0UKIF9fWk43V2ViQ29yZTE4
UGxhdGZvcm1QYXN0ZWJvYXJkMTB1bmlxdWVOYW1lRXYKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1Q
YXN0ZWJvYXJkMTNidWZmZXJGb3JUeXBlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMThQ
bGF0Zm9ybVBhc3RlYm9hcmQxM3N0cmluZ0ZvclR5cGVFUktOM1dURjZTdHJpbmdFCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKaW5kZXggOGExYWM5MWZlYWRkMTY3ZTBmYjhlMDQ5MGU3YjgxOWVhNDAwMWU4
Zi4uNDkzNGI5ZDk2MjkxOTI1NzM5MWRmMDVhY2E0MzgzYTRjZWRmNjE2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcApAQCAtOTE3LDE1ICs5MTcsMTUgQEAgdm9pZCBFbGVtZW50OjpjbGFzc0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdDbGFzc1N0cmluZykKIGJvb2wgRWxl
bWVudDo6c2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlvbldoZW5BdHRyaWJ1dGVDaGFuZ2VkKEVs
ZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFkb3csIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnRTaGFkb3cp
OwotICAgIGVsZW1lbnRTaGFkb3ctPmVuc3VyZVNlbGVjdEZlYXR1cmVTZXRDb2xsZWN0ZWQoKTsK
KyAgICBjb25zdCBTZWxlY3RSdWxlRmVhdHVyZVNldCYgZmVhdHVyZVNldCA9IGVsZW1lbnRTaGFk
b3ctPmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChlbGVtZW50U2hhZG93KTsK
IAogICAgIGlmIChpc0lkQXR0cmlidXRlTmFtZShuYW1lKSkgewogICAgICAgICBBdG9taWNTdHJp
bmcgb2xkSWQgPSBhdHRyaWJ1dGVEYXRhKCktPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCk7CiAgICAg
ICAgIEF0b21pY1N0cmluZyBuZXdJZCA9IG1ha2VJZEZvclN0eWxlUmVzb2x1dGlvbihuZXdWYWx1
ZSwgZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpOwogICAgICAgICBpZiAobmV3SWQgIT0gb2xk
SWQpIHsKLSAgICAgICAgICAgIGlmICghb2xkSWQuaXNFbXB0eSgpICYmIGVsZW1lbnRTaGFkb3ct
PnNlbGVjdFJ1bGVGZWF0dXJlU2V0KCkuaGFzU2VsZWN0b3JGb3JJZChvbGRJZCkpCisgICAgICAg
ICAgICBpZiAoIW9sZElkLmlzRW1wdHkoKSAmJiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9ySWQo
b2xkSWQpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgaWYgKCFu
ZXdJZC5pc0VtcHR5KCkgJiYgZWxlbWVudFNoYWRvdy0+c2VsZWN0UnVsZUZlYXR1cmVTZXQoKS5o
YXNTZWxlY3RvckZvcklkKG5ld0lkKSkKKyAgICAgICAgICAgIGlmICghbmV3SWQuaXNFbXB0eSgp
ICYmIGZlYXR1cmVTZXQuaGFzU2VsZWN0b3JGb3JJZChuZXdJZCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC05MzcsMTYgKzkzNywxNiBAQCBib29s
IEVsZW1lbnQ6OnNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb25XaGVuQXR0cmlidXRlQ2hhbmdl
ZChFbGVtZW50U2hhZG93KiBlbAogICAgICAgICAgICAgY29uc3QgYm9vbCBzaG91bGRGb2xkQ2Fz
ZSA9IGRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpOwogICAgICAgICAgICAgY29uc3QgU3BhY2VT
cGxpdFN0cmluZyYgb2xkQ2xhc3NlcyA9IGF0dHJpYnV0ZURhdGEtPmNsYXNzTmFtZXMoKTsKICAg
ICAgICAgICAgIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcgbmV3Q2xhc3NlcyhuZXdDbGFzc1N0cmlu
Zywgc2hvdWxkRm9sZENhc2UpOwotICAgICAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3JGb3JDbGFz
c0NoYW5nZShvbGRDbGFzc2VzLCBuZXdDbGFzc2VzLCBlbGVtZW50U2hhZG93LT5zZWxlY3RSdWxl
RmVhdHVyZVNldCgpKSkKKyAgICAgICAgICAgIGlmIChjaGVja1NlbGVjdG9yRm9yQ2xhc3NDaGFu
Z2Uob2xkQ2xhc3NlcywgbmV3Q2xhc3NlcywgZmVhdHVyZVNldCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAoY29uc3QgRWxlbWVudEF0dHJpYnV0ZURh
dGEqIGF0dHJpYnV0ZURhdGEgPSB0aGlzLT5hdHRyaWJ1dGVEYXRhKCkpIHsKICAgICAgICAgICAg
IGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG9sZENsYXNzZXMgPSBhdHRyaWJ1dGVEYXRhLT5jbGFz
c05hbWVzKCk7Ci0gICAgICAgICAgICBpZiAoY2hlY2tTZWxlY3RvckZvckNsYXNzQ2hhbmdlKG9s
ZENsYXNzZXMsIGVsZW1lbnRTaGFkb3ctPnNlbGVjdFJ1bGVGZWF0dXJlU2V0KCkpKQorICAgICAg
ICAgICAgaWYgKGNoZWNrU2VsZWN0b3JGb3JDbGFzc0NoYW5nZShvbGRDbGFzc2VzLCBmZWF0dXJl
U2V0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHJldHVybiBlbGVtZW50U2hhZG93LT5zZWxlY3RSdWxlRmVhdHVyZVNldCgpLmhhc1NlbGVj
dG9yRm9yQXR0cmlidXRlKG5hbWUubG9jYWxOYW1lKCkpOworICAgIHJldHVybiBmZWF0dXJlU2V0
Lmhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKG5hbWUubG9jYWxOYW1lKCkpOwogfQogCiAvLyBSZXR1
cm5zIHRydWUgaXMgdGhlIGdpdmVuIGF0dHJpYnV0ZSBpcyBhbiBldmVudCBoYW5kbGVyLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCmluZGV4IDllNjg2YTdkOGNkYTk4YjNlM2UyZDU1
MzkwM2E2ZmQ5ODAzNDQyNmEuLjcyMDFkMzI3NTIyMDdhNTViN2E3ODA1YTE5Zjg0Yjg0ZWU0ZGFm
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKQEAgLTQyLDcgKzQyLDYgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRWxlbWVudFNoYWRvdzo6RWxlbWVudFNoYWRvdygpCi0g
ICAgOiBtX3Nob3VsZENvbGxlY3RTZWxlY3RGZWF0dXJlU2V0KGZhbHNlKQogewogfQogCkBAIC04
Myw4ICs4Miw3IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdChFbGVtZW50KiBz
aGFkb3dIb3N0LCBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoCiAgICAgc2hhZG93Um9vdC0+c2V0
SG9zdChzaGFkb3dIb3N0KTsKICAgICBzaGFkb3dSb290LT5zZXRQYXJlbnRUcmVlU2NvcGUoc2hh
ZG93SG9zdC0+dHJlZVNjb3BlKCkpOwogICAgIG1fc2hhZG93Um9vdHMucHVzaChzaGFkb3dSb290
LmdldCgpKTsKLSAgICBzZXRWYWxpZGl0eVVuZGV0ZXJtaW5lZCgpOwotICAgIGludmFsaWRhdGVE
aXN0cmlidXRpb24oc2hhZG93SG9zdCk7CisgICAgbV9kaXN0cmlidXRvci5kaWRTaGFkb3dCb3Vu
ZGFyeUNoYW5nZShzaGFkb3dIb3N0KTsKICAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcihz
aGFkb3dIb3N0KS5ub3RpZnkoc2hhZG93Um9vdC5nZXQoKSk7CiAKICAgICAvLyBFeGlzdGVuY2Ug
b2Ygc2hhZG93IHJvb3RzIHJlcXVpcmVzIHRoZSBob3N0IGFuZCBpdHMgY2hpbGRyZW4gdG8gZG8g
dHJhdmVyc2FsIHVzaW5nIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlci4KQEAgLTExOSw3ICsxMTcs
NyBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OnJlbW92ZUFsbFNoYWRvd1Jvb3RzKCkKICAgICAgICAg
Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlmeShvbGRSb290LmdldCgp
KTsKICAgICB9CiAKLSAgICBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKHNoYWRvd0hvc3QpOworICAg
IG1fZGlzdHJpYnV0b3IuaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihzaGFkb3dIb3N0KTsKIH0KIAog
dm9pZCBFbGVtZW50U2hhZG93OjphdHRhY2goKQpAQCAtMTY1LDk0ICsxNjMsNiBAQCB2b2lkIEVs
ZW1lbnRTaGFkb3c6OnJlY2FsY1N0eWxlKE5vZGU6OlN0eWxlQ2hhbmdlIGNoYW5nZSkKICAgICAg
ICAgcm9vdC0+cmVjYWxjU3R5bGUoY2hhbmdlKTsKIH0KIAotdm9pZCBFbGVtZW50U2hhZG93Ojpl
bnN1cmVEaXN0cmlidXRpb24oKQotewotICAgIGlmICghbV9kaXN0cmlidXRvci5uZWVkc0Rpc3Ry
aWJ1dGlvbigpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9kaXN0cmlidXRvci5kaXN0cmlidXRl
KGhvc3QoKSk7Ci19Ci0KLXZvaWQgRWxlbWVudFNoYWRvdzo6ZW5zdXJlRGlzdHJpYnV0aW9uRnJv
bURvY3VtZW50KCkKLXsKLSAgICBWZWN0b3I8RWxlbWVudCosIDg+IGhvc3RzOwotICAgIGZvciAo
RWxlbWVudCogY3VycmVudCA9IGhvc3QoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnNo
YWRvd0hvc3QoKSkKLSAgICAgICAgaG9zdHMuYXBwZW5kKGN1cnJlbnQpOwotCi0gICAgZm9yIChz
aXplX3QgaSA9IGhvc3RzLnNpemUoKTsgaSA+IDA7IC0taSkKLSAgICAgICAgaG9zdHNbaSAtIDFd
LT5zaGFkb3coKS0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7Ci19Ci0KLXZvaWQgRWxlbWVudFNoYWRv
dzo6c2V0VmFsaWRpdHlVbmRldGVybWluZWQoKQotewotICAgIG1fZGlzdHJpYnV0b3Iuc2V0VmFs
aWRpdHkoQ29udGVudERpc3RyaWJ1dG9yOjpVbmRldGVybWluZWQpOwotfQotCi12b2lkIEVsZW1l
bnRTaGFkb3c6OmludmFsaWRhdGVEaXN0cmlidXRpb24oKQotewotICAgIGludmFsaWRhdGVEaXN0
cmlidXRpb24oaG9zdCgpKTsKLX0KLQotdm9pZCBFbGVtZW50U2hhZG93OjppbnZhbGlkYXRlRGlz
dHJpYnV0aW9uKEVsZW1lbnQqIGhvc3QpCi17Ci0gICAgYm9vbCBuZWVkc0ludmFsaWRhdGlvbiA9
IG1fZGlzdHJpYnV0b3IubmVlZHNJbnZhbGlkYXRpb24oKTsKLSAgICBib29sIG5lZWRzUmVhdHRh
Y2ggPSBuZWVkc0ludmFsaWRhdGlvbiA/IG1fZGlzdHJpYnV0b3IuaW52YWxpZGF0ZShob3N0KSA6
IGZhbHNlOwotCi0gICAgaWYgKG5lZWRzUmVhdHRhY2ggJiYgaG9zdC0+YXR0YWNoZWQoKSkgewot
ICAgICAgICBmb3IgKE5vZGUqIG4gPSBob3N0LT5maXJzdENoaWxkKCk7IG47IG4gPSBuLT5uZXh0
U2libGluZygpKQotICAgICAgICAgICAgbi0+bGF6eVJlYXR0YWNoKCk7Ci0gICAgICAgIGhvc3Qt
PnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICB9Ci0KLSAgICBpZiAobmVlZHNJbnZhbGlkYXRp
b24pCi0gICAgICAgIG1fZGlzdHJpYnV0b3IuZmluaXNoSW5pdmFsaWRhdGlvbigpOwotfQotCi12
b2lkIEVsZW1lbnRTaGFkb3c6OnNldFNob3VsZENvbGxlY3RTZWxlY3RGZWF0dXJlU2V0KCkKLXsK
LSAgICBpZiAoc2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9zaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCA9IHRydWU7Ci0KLSAgICBp
ZiAoU2hhZG93Um9vdCogcGFyZW50U2hhZG93Um9vdCA9IGhvc3QoKS0+Y29udGFpbmluZ1NoYWRv
d1Jvb3QoKSkgewotICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogcGFyZW50RWxlbWVudFNoYWRv
dyA9IHBhcmVudFNoYWRvd1Jvb3QtPm93bmVyKCkpCi0gICAgICAgICAgICBwYXJlbnRFbGVtZW50
U2hhZG93LT5zZXRTaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCgpOwotICAgIH0KLX0KLQot
dm9pZCBFbGVtZW50U2hhZG93OjplbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCkKLXsK
LSAgICBpZiAoIW1fc2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIG1fc2VsZWN0RmVhdHVyZXMuY2xlYXIoKTsKLSAgICBmb3IgKFNoYWRvd1Jvb3Qq
IHJvb3QgPSBvbGRlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT55b3VuZ2VyU2hh
ZG93Um9vdCgpKQotICAgICAgICBjb2xsZWN0U2VsZWN0RmVhdHVyZVNldEZyb20ocm9vdCk7Ci0g
ICAgbV9zaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCA9IGZhbHNlOwotfQotCi12b2lkIEVs
ZW1lbnRTaGFkb3c6OmNvbGxlY3RTZWxlY3RGZWF0dXJlU2V0RnJvbShTaGFkb3dSb290KiByb290
KQotewotICAgIGlmIChTY29wZUNvbnRlbnREaXN0cmlidXRpb246Omhhc0VsZW1lbnRTaGFkb3co
cm9vdCkpIHsKLSAgICAgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNh
bDo6Zmlyc3RXaXRoaW4ocm9vdCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2Fs
OjpuZXh0KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogZWxlbWVu
dFNoYWRvdyA9IGVsZW1lbnQtPnNoYWRvdygpKSB7Ci0gICAgICAgICAgICAgICAgZWxlbWVudFNo
YWRvdy0+ZW5zdXJlU2VsZWN0RmVhdHVyZVNldENvbGxlY3RlZCgpOwotICAgICAgICAgICAgICAg
IG1fc2VsZWN0RmVhdHVyZXMuYWRkKGVsZW1lbnRTaGFkb3ctPm1fc2VsZWN0RmVhdHVyZXMpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKFNjb3BlQ29udGVudERp
c3RyaWJ1dGlvbjo6aGFzQ29udGVudEVsZW1lbnQocm9vdCkpIHsKLSAgICAgICAgZm9yIChFbGVt
ZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4ocm9vdCk7IGVsZW1l
bnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQpKSB7Ci0gICAgICAg
ICAgICBpZiAoaXNIVE1MQ29udGVudEVsZW1lbnQoZWxlbWVudCkpIHsKLSAgICAgICAgICAgICAg
ICBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIGxpc3QgPSB0b0hUTUxDb250ZW50RWxlbWVudChlbGVt
ZW50KS0+c2VsZWN0b3JMaXN0KCk7Ci0gICAgICAgICAgICAgICAgZm9yIChDU1NTZWxlY3Rvciog
c2VsZWN0b3IgPSBsaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IGxpc3QubmV4dChz
ZWxlY3RvcikpCi0gICAgICAgICAgICAgICAgICAgIG1fc2VsZWN0RmVhdHVyZXMuY29sbGVjdEZl
YXR1cmVzRnJvbVNlbGVjdG9yKHNlbGVjdG9yKTsgICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCiB2b2lkIEVsZW1lbnRTaGFkb3c6OnJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7
CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29y
ZU1lbW9yeVR5cGVzOjpET00pOwpAQCAtMjY1LDExICsxNzUsNCBAQCB2b2lkIEVsZW1lbnRTaGFk
b3c6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvbnN0CiAgICAgaW5mby5hZGRNZW1iZXIobV9kaXN0cmlidXRvcik7CiB9CiAKLXZvaWQgRWxl
bWVudFNoYWRvdzo6ZGlkQWZmZWN0U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2sgbWFzaykK
LXsKLSAgICBlbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCk7Ci0gICAgaWYgKHNlbGVj
dFJ1bGVGZWF0dXJlU2V0KCkuaGFzU2VsZWN0b3JGb3IobWFzaykpCi0gICAgICAgIGludmFsaWRh
dGVEaXN0cmlidXRpb24oKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFNoYWRvdy5oCmluZGV4IDU5NGM5ZTY2MWM4MDhkYmJlMzgyNjAyYzYwMjM2YTMwYzc1MDZlOTcu
LjkzOWU5YjY5ZjljNjY1N2RhYWI1OGYwMjNkZTE4ZjkwNTAxMDY3YmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRTaGFkb3cuaApAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiQ29udGVudERp
c3RyaWJ1dG9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIlNlbGVj
dFJ1bGVGZWF0dXJlU2V0LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgPHd0
Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC01
Miw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICBFbGVtZW50KiBob3N0KCkgY29uc3Q7CiAgICAgU2hh
ZG93Um9vdCogeW91bmdlc3RTaGFkb3dSb290KCkgY29uc3Q7CiAgICAgU2hhZG93Um9vdCogb2xk
ZXN0U2hhZG93Um9vdCgpIGNvbnN0OworICAgIEVsZW1lbnRTaGFkb3cqIGNvbnRhaW5pbmdTaGFk
b3coKSBjb25zdDsKIAogICAgIHZvaWQgcmVtb3ZlQWxsU2hhZG93Um9vdHMoKTsKICAgICB2b2lk
IGFkZFNoYWRvd1Jvb3QoRWxlbWVudCogc2hhZG93SG9zdCwgUGFzc1JlZlB0cjxTaGFkb3dSb290
PiwgU2hhZG93Um9vdDo6U2hhZG93Um9vdFR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTYzLDMx
ICs2MywxOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgdm9p
ZCByZWNhbGNTdHlsZShOb2RlOjpTdHlsZUNoYW5nZSk7CiAKLSAgICB2b2lkIHNldFZhbGlkaXR5
VW5kZXRlcm1pbmVkKCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7Ci0gICAg
dm9pZCBlbnN1cmVEaXN0cmlidXRpb24oKTsKLSAgICB2b2lkIGVuc3VyZURpc3RyaWJ1dGlvbkZy
b21Eb2N1bWVudCgpOworICAgIHZvaWQgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpIHsgbV9kaXN0
cmlidXRvci5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKGhvc3QoKSk7IH0KKyAgICB2b2lkIGVuc3Vy
ZURpc3RyaWJ1dGlvbigpIHsgbV9kaXN0cmlidXRvci5lbnN1cmVEaXN0cmlidXRpb24oaG9zdCgp
KTsgfQorICAgIHZvaWQgZGlkQWZmZWN0U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2sgbWFz
aykgeyBtX2Rpc3RyaWJ1dG9yLmRpZEFmZmVjdFNlbGVjdG9yKGhvc3QoKSwgbWFzayk7IH0KKyAg
ICB2b2lkIHdpbGxBZmZlY3RTZWxlY3RvcigpIHsgbV9kaXN0cmlidXRvci53aWxsQWZmZWN0U2Vs
ZWN0b3IoaG9zdCgpKTsgfQogCiAgICAgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0cmlidXRvcigp
OwogICAgIGNvbnN0IENvbnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKSBjb25zdDsKIAot
ICAgIHZvaWQgZGlkQWZmZWN0U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2spOwotICAgIGJv
b2wgc2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX3Nob3Vs
ZENvbGxlY3RTZWxlY3RGZWF0dXJlU2V0OyB9Ci0gICAgdm9pZCBzZXRTaG91bGRDb2xsZWN0U2Vs
ZWN0RmVhdHVyZVNldCgpOwotICAgIHZvaWQgZW5zdXJlU2VsZWN0RmVhdHVyZVNldENvbGxlY3Rl
ZCgpOwotCi0gICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIHNlbGVjdFJ1bGVGZWF0dXJl
U2V0KCkgY29uc3Q7Ci0KICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qKSBjb25zdDsKIHByaXZhdGU6Ci0gICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKEVs
ZW1lbnQqIGhvc3QpOwotCi0gICAgdm9pZCBjb2xsZWN0U2VsZWN0RmVhdHVyZVNldEZyb20oU2hh
ZG93Um9vdCopOwogCiAgICAgRG91Ymx5TGlua2VkTGlzdDxTaGFkb3dSb290PiBtX3NoYWRvd1Jv
b3RzOwogICAgIENvbnRlbnREaXN0cmlidXRvciBtX2Rpc3RyaWJ1dG9yOwotICAgIFNlbGVjdFJ1
bGVGZWF0dXJlU2V0IG1fc2VsZWN0RmVhdHVyZXM7Ci0gICAgYm9vbCBtX3Nob3VsZENvbGxlY3RT
ZWxlY3RGZWF0dXJlU2V0IDogMTsKIH07CiAKIGlubGluZSBTaGFkb3dSb290KiBFbGVtZW50U2hh
ZG93Ojp5b3VuZ2VzdFNoYWRvd1Jvb3QoKSBjb25zdApAQCAtMTE2LDEyICsxMDQsNiBAQCBpbmxp
bmUgRWxlbWVudCogRWxlbWVudFNoYWRvdzo6aG9zdCgpIGNvbnN0CiAgICAgcmV0dXJuIHlvdW5n
ZXN0U2hhZG93Um9vdCgpLT5ob3N0KCk7CiB9CiAKLWlubGluZSBjb25zdCBTZWxlY3RSdWxlRmVh
dHVyZVNldCYgRWxlbWVudFNoYWRvdzo6c2VsZWN0UnVsZUZlYXR1cmVTZXQoKSBjb25zdAotewot
ICAgIEFTU0VSVCghbV9zaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCk7Ci0gICAgcmV0dXJu
IG1fc2VsZWN0RmVhdHVyZXM7Ci19Ci0KIGlubGluZSBTaGFkb3dSb290KiBOb2RlOjp5b3VuZ2Vz
dFNoYWRvd1Jvb3QoKSBjb25zdAogewogICAgIGlmICghdGhpcy0+aXNFbGVtZW50Tm9kZSgpKQpA
QCAtMTMxLDYgKzExMywxNCBAQCBpbmxpbmUgU2hhZG93Um9vdCogTm9kZTo6eW91bmdlc3RTaGFk
b3dSb290KCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAoraW5saW5lIEVsZW1lbnRTaGFkb3cq
IEVsZW1lbnRTaGFkb3c6OmNvbnRhaW5pbmdTaGFkb3coKSBjb25zdAoreworICAgIFNoYWRvd1Jv
b3QqIHBhcmVudFJvb3QgPSBob3N0KCktPmNvbnRhaW5pbmdTaGFkb3dSb290KCk7CisgICAgaWYg
KCFwYXJlbnRSb290KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcGFyZW50Um9vdC0+
b3duZXIoKTsKK30KKwogY2xhc3MgU2hhZG93Um9vdFZlY3RvciA6IHB1YmxpYyBWZWN0b3I8UmVm
UHRyPFNoYWRvd1Jvb3Q+ID4gewogcHVibGljOgogICAgIGV4cGxpY2l0IFNoYWRvd1Jvb3RWZWN0
b3IoRWxlbWVudFNoYWRvdyogdHJlZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCmluZGV4IDc3YzRkM2IxNmExZDA4MDAyZGY1Y2M1NjVm
NTBlNDU2Y2FkMTA3M2EuLjBkM2RiZWEwYjhiN2NiMTY4MjIyY2JhZjgyZTA5NjgyNzNhYmI3YTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9y
LmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIGNvbnN0IFZlY3RvcjxSZWZQdHI8SW5zZXJ0aW9uUG9p
bnQ+ID4mIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6ZW5zdXJlSW5zZXJ0aW9uCiAgICAgcmV0
dXJuIG1faW5zZXJ0aW9uUG9pbnRMaXN0OwogfQogCi12b2lkIFNjb3BlQ29udGVudERpc3RyaWJ1
dGlvbjo6cmVnaXN0ZXJJbnNlcnRpb25Qb2ludChTaGFkb3dSb290KiBzY29wZSwgSW5zZXJ0aW9u
UG9pbnQqIHBvaW50KQordm9pZCBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OnJlZ2lzdGVySW5z
ZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqIHBvaW50KQogewogICAgIHN3aXRjaCAocG9pbnQt
Pmluc2VydGlvblBvaW50VHlwZSgpKSB7CiAgICAgY2FzZSBJbnNlcnRpb25Qb2ludDo6U2hhZG93
SW5zZXJ0aW9uUG9pbnQ6CkBAIC0xMTgsMTQgKzExOCwxMyBAQCB2b2lkIFNjb3BlQ29udGVudERp
c3RyaWJ1dGlvbjo6cmVnaXN0ZXJJbnNlcnRpb25Qb2ludChTaGFkb3dSb290KiBzY29wZSwgSW5z
ZXJ0aQogICAgICAgICBicmVhazsKICAgICBjYXNlIEluc2VydGlvblBvaW50OjpDb250ZW50SW5z
ZXJ0aW9uUG9pbnQ6CiAgICAgICAgICsrbV9udW1iZXJPZkNvbnRlbnRFbGVtZW50Q2hpbGRyZW47
Ci0gICAgICAgIHNjb3BlLT5vd25lcigpLT5zZXRTaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNl
dCgpOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpbnZhbGlkYXRlSW5zZXJ0aW9uUG9p
bnRMaXN0KCk7CiB9CiAKLXZvaWQgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjp1bnJlZ2lzdGVy
SW5zZXJ0aW9uUG9pbnQoU2hhZG93Um9vdCogc2NvcGUsIEluc2VydGlvblBvaW50KiBwb2ludCkK
K3ZvaWQgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjp1bnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQo
SW5zZXJ0aW9uUG9pbnQqIHBvaW50KQogewogICAgIHN3aXRjaCAocG9pbnQtPmluc2VydGlvblBv
aW50VHlwZSgpKSB7CiAgICAgY2FzZSBJbnNlcnRpb25Qb2ludDo6U2hhZG93SW5zZXJ0aW9uUG9p
bnQ6CkBAIC0xMzUsOCArMTM0LDYgQEAgdm9pZCBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OnVu
cmVnaXN0ZXJJbnNlcnRpb25Qb2ludChTaGFkb3dSb290KiBzY29wZSwgSW5zZXIKICAgICBjYXNl
IEluc2VydGlvblBvaW50OjpDb250ZW50SW5zZXJ0aW9uUG9pbnQ6CiAgICAgICAgIEFTU0VSVCht
X251bWJlck9mQ29udGVudEVsZW1lbnRDaGlsZHJlbiA+IDApOwogICAgICAgICAtLW1fbnVtYmVy
T2ZDb250ZW50RWxlbWVudENoaWxkcmVuOwotICAgICAgICBpZiAoc2NvcGUtPm93bmVyKCkpCi0g
ICAgICAgICAgICBzY29wZS0+b3duZXIoKS0+c2V0U2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVT
ZXQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0xODEsNyArMTc4LDggQEAgSW5zZXJ0
aW9uUG9pbnQqIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyhjb25zdCBTaGFk
b3dSb290KiBob2xkZXIpCiB9CiAKIENvbnRlbnREaXN0cmlidXRvcjo6Q29udGVudERpc3RyaWJ1
dG9yKCkKLSAgICA6IG1fdmFsaWRpdHkoVW5kZXRlcm1pbmVkKQorICAgIDogbV9uZWVkc1NlbGVj
dEZlYXR1cmVTZXQoZmFsc2UpCisgICAgLCBtX3ZhbGlkaXR5KFVuZGV0ZXJtaW5lZCkKIHsKIH0K
IApAQCAtMjg3LDEyICsyODUsNiBAQCBib29sIENvbnRlbnREaXN0cmlidXRvcjo6aW52YWxpZGF0
ZShFbGVtZW50KiBob3N0KQogICAgIHJldHVybiBuZWVkc1JlYXR0YWNoOwogfQogCi12b2lkIENv
bnRlbnREaXN0cmlidXRvcjo6ZmluaXNoSW5pdmFsaWRhdGlvbigpCi17Ci0gICAgQVNTRVJUKG1f
dmFsaWRpdHkgPT0gSW52YWxpZGF0aW5nKTsKLSAgICBtX3ZhbGlkaXR5ID0gSW52YWxpZGF0ZWQ7
Ci19Ci0KIHZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmlidXRlU2VsZWN0aW9uc1RvKElu
c2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCwgY29uc3QgQ29udGVudERpc3RyaWJ1dGlvbiYg
cG9vbCwgVmVjdG9yPGJvb2w+JiBkaXN0cmlidXRlZCkKIHsKICAgICBDb250ZW50RGlzdHJpYnV0
aW9uIGRpc3RyaWJ1dGlvbjsKQEAgLTM0MiwxMSArMzM0LDk4IEBAIHZvaWQgQ29udGVudERpc3Ry
aWJ1dG9yOjpkaXN0cmlidXRlTm9kZUNoaWxkcmVuVG8oSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlv
blBvaW50CiAgICAgaW5zZXJ0aW9uUG9pbnQtPnNldERpc3RyaWJ1dGlvbihkaXN0cmlidXRpb24p
OwogfQogCi12b2lkIENvbnRlbnREaXN0cmlidXRvcjo6aW52YWxpZGF0ZURpc3RyaWJ1dGlvbklu
KENvbnRlbnREaXN0cmlidXRpb24qIGxpc3QpCit2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZW5z
dXJlRGlzdHJpYnV0aW9uKEVsZW1lbnQqIGhvc3QpCit7CisgICAgaWYgKCFuZWVkc0Rpc3RyaWJ1
dGlvbigpKQorICAgICAgICByZXR1cm47CisgICAgZGlzdHJpYnV0ZShob3N0KTsKK30KKwordm9p
ZCBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1dGlvbkZyb21Eb2N1bWVudChFbGVt
ZW50KiBzb3VyY2UpCit7CisgICAgQ29udGFpbmVyTm9kZSogbWF5U2hhZG93ID0gc291cmNlLT50
cmVlU2NvcGUoKS0+cm9vdE5vZGUoKTsKKyAgICBpZiAoIW1heVNoYWRvdy0+aXNTaGFkb3dSb290
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxFbGVtZW50KiwgOD4gaG9zdHM7Cisg
ICAgZm9yIChFbGVtZW50KiBjdXJyZW50ID0gdG9TaGFkb3dSb290KG1heVNoYWRvdyktPmhvc3Qo
KTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnNoYWRvd0hvc3QoKSkKKyAgICAgICAgaG9z
dHMuYXBwZW5kKGN1cnJlbnQpOworCisgICAgZm9yIChzaXplX3QgaSA9IGhvc3RzLnNpemUoKTsg
aSA+IDA7IC0taSkKKyAgICAgICAgaG9zdHNbaSAtIDFdLT5zaGFkb3coKS0+ZW5zdXJlRGlzdHJp
YnV0aW9uKCk7Cit9CisKKwordm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmludmFsaWRhdGVEaXN0
cmlidXRpb24oRWxlbWVudCogaG9zdCkKK3sKKyAgICBib29sIGRpZE5lZWRJbnZhbGlkYXRpb24g
PSBuZWVkc0ludmFsaWRhdGlvbigpOworICAgIGJvb2wgbmVlZHNSZWF0dGFjaCA9IGRpZE5lZWRJ
bnZhbGlkYXRpb24gPyBpbnZhbGlkYXRlKGhvc3QpIDogZmFsc2U7CisKKyAgICBpZiAobmVlZHNS
ZWF0dGFjaCAmJiBob3N0LT5hdHRhY2hlZCgpKSB7CisgICAgICAgIGZvciAoTm9kZSogbiA9IGhv
c3QtPmZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpCisgICAgICAgICAgICBu
LT5sYXp5UmVhdHRhY2goKTsKKyAgICAgICAgaG9zdC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwor
ICAgIH0KKworICAgIGlmIChkaWROZWVkSW52YWxpZGF0aW9uKSB7CisgICAgICAgIEFTU0VSVCht
X3ZhbGlkaXR5ID09IEludmFsaWRhdGluZyk7CisgICAgICAgIG1fdmFsaWRpdHkgPSBJbnZhbGlk
YXRlZDsKKyAgICB9Cit9CisKK2NvbnN0IFNlbGVjdFJ1bGVGZWF0dXJlU2V0JiBDb250ZW50RGlz
dHJpYnV0b3I6OmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoRWxlbWVudFNoYWRvdyogc2hhZG93KQor
eworICAgIGlmICghbV9uZWVkc1NlbGVjdEZlYXR1cmVTZXQpCisgICAgICAgIHJldHVybiBtX3Nl
bGVjdEZlYXR1cmVzOworCisgICAgbV9zZWxlY3RGZWF0dXJlcy5jbGVhcigpOworICAgIGZvciAo
U2hhZG93Um9vdCogcm9vdCA9IHNoYWRvdy0+b2xkZXN0U2hhZG93Um9vdCgpOyByb290OyByb290
ID0gcm9vdC0+eW91bmdlclNoYWRvd1Jvb3QoKSkKKyAgICAgICAgY29sbGVjdFNlbGVjdEZlYXR1
cmVTZXRGcm9tKHJvb3QpOworICAgIG1fbmVlZHNTZWxlY3RGZWF0dXJlU2V0ID0gZmFsc2U7Cisg
ICAgcmV0dXJuIG1fc2VsZWN0RmVhdHVyZXM7Cit9CisKK3ZvaWQgQ29udGVudERpc3RyaWJ1dG9y
Ojpjb2xsZWN0U2VsZWN0RmVhdHVyZVNldEZyb20oU2hhZG93Um9vdCogcm9vdCkKK3sKKyAgICBp
ZiAoU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNFbGVtZW50U2hhZG93KHJvb3QpKSB7Cisg
ICAgICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0
aGluKHJvb3QpOyBlbGVtZW50OyBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dChlbGVt
ZW50KSkgeworICAgICAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFkb3cgPSBl
bGVtZW50LT5zaGFkb3coKSkKKyAgICAgICAgICAgICAgICBtX3NlbGVjdEZlYXR1cmVzLmFkZChl
bGVtZW50U2hhZG93LT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoZWxlbWVu
dFNoYWRvdykpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKFNjb3BlQ29udGVudERpc3Ry
aWJ1dGlvbjo6aGFzQ29udGVudEVsZW1lbnQocm9vdCkpIHsKKyAgICAgICAgZm9yIChFbGVtZW50
KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4ocm9vdCk7IGVsZW1lbnQ7
IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQpKSB7CisgICAgICAgICAg
ICBpZiAoaXNIVE1MQ29udGVudEVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBj
b25zdCBDU1NTZWxlY3Rvckxpc3QmIGxpc3QgPSB0b0hUTUxDb250ZW50RWxlbWVudChlbGVtZW50
KS0+c2VsZWN0b3JMaXN0KCk7CisgICAgICAgICAgICAgICAgZm9yIChDU1NTZWxlY3Rvciogc2Vs
ZWN0b3IgPSBsaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IGxpc3QubmV4dChzZWxl
Y3RvcikpCisgICAgICAgICAgICAgICAgICAgIG1fc2VsZWN0RmVhdHVyZXMuY29sbGVjdEZlYXR1
cmVzRnJvbVNlbGVjdG9yKHNlbGVjdG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpZEFmZmVjdFNlbGVjdG9yKEVsZW1l
bnQqIGhvc3QsIEFmZmVjdGVkU2VsZWN0b3JNYXNrIG1hc2spCit7CisgICAgaWYgKGVuc3VyZVNl
bGVjdEZlYXR1cmVTZXQoaG9zdC0+c2hhZG93KCkpLmhhc1NlbGVjdG9yRm9yKG1hc2spKQorICAg
ICAgICBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKGhvc3QpOworfQorCit2b2lkIENvbnRlbnREaXN0
cmlidXRvcjo6d2lsbEFmZmVjdFNlbGVjdG9yKEVsZW1lbnQqIGhvc3QpCit7CisgICAgZm9yIChF
bGVtZW50U2hhZG93KiBzaGFkb3cgPSBob3N0LT5zaGFkb3coKTsgc2hhZG93OyBzaGFkb3cgPSBz
aGFkb3ctPmNvbnRhaW5pbmdTaGFkb3coKSkgeworICAgICAgICBpZiAoc2hhZG93LT5kaXN0cmli
dXRvcigpLm5lZWRzU2VsZWN0RmVhdHVyZVNldCgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIHNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5zZXROZWVkc1NlbGVjdEZlYXR1cmVTZXQoKTsKKyAg
ICB9CisKKyAgICBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKGhvc3QpOworfQorCit2b2lkIENvbnRl
bnREaXN0cmlidXRvcjo6ZGlkU2hhZG93Qm91bmRhcnlDaGFuZ2UoRWxlbWVudCogaG9zdCkKIHsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3QtPnNpemUoKTsgKytpKQotICAgICAgICBt
X25vZGVUb0luc2VydGlvblBvaW50LnJlbW92ZShsaXN0LT5hdChpKS5nZXQoKSk7Ci0gICAgbGlz
dC0+Y2xlYXIoKTsKKyAgICBzZXRWYWxpZGl0eShVbmRldGVybWluZWQpOworICAgIGludmFsaWRh
dGVEaXN0cmlidXRpb24oaG9zdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKaW5kZXggZjk4MzgzN2YxMDY3M2FhZTRmODRiMzJl
MDAwN2QyZGI0NjdlYTIzNy4uNDYwZDQxMzVkOTkwZThmZjY5Njc1N2Q1NjJhMGIwYjEzZWY3MzY4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9y
LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpZm5kZWYgQ29udGVudERpc3RyaWJ1dG9yX2gKICNkZWZp
bmUgQ29udGVudERpc3RyaWJ1dG9yX2gKIAorI2luY2x1ZGUgIlNlbGVjdFJ1bGVGZWF0dXJlU2V0
LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC03Nyw4ICs3OCw4IEBAIHB1YmxpYzoKICAg
ICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvKCkgY29uc3QgeyByZXR1
cm4gbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG87IH0KICAgICB2b2lkIHNldEluc2VydGlvblBv
aW50QXNzaWduZWRUbyhJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQpIHsgbV9pbnNlcnRp
b25Qb2ludEFzc2lnbmVkVG8gPSBpbnNlcnRpb25Qb2ludDsgfQogCi0gICAgdm9pZCByZWdpc3Rl
ckluc2VydGlvblBvaW50KFNoYWRvd1Jvb3QqLCBJbnNlcnRpb25Qb2ludCopOwotICAgIHZvaWQg
dW5yZWdpc3Rlckluc2VydGlvblBvaW50KFNoYWRvd1Jvb3QqLCBJbnNlcnRpb25Qb2ludCopOwor
ICAgIHZvaWQgcmVnaXN0ZXJJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCopOworICAgIHZv
aWQgdW5yZWdpc3Rlckluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50Kik7CiAgICAgYm9vbCBo
YXNTaGFkb3dFbGVtZW50Q2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX251bWJlck9mU2hhZG93
RWxlbWVudENoaWxkcmVuID4gMDsgfQogICAgIGJvb2wgaGFzQ29udGVudEVsZW1lbnRDaGlsZHJl
bigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2ZDb250ZW50RWxlbWVudENoaWxkcmVuID4gMDsg
fQogCkBAIC0xMjIsMjMgKzEyMywzNSBAQCBwdWJsaWM6CiAgICAgfkNvbnRlbnREaXN0cmlidXRv
cigpOwogCiAgICAgSW5zZXJ0aW9uUG9pbnQqIGZpbmRJbnNlcnRpb25Qb2ludEZvcihjb25zdCBO
b2RlKiBrZXkpIGNvbnN0OwotCi0gICAgdm9pZCBzZXRWYWxpZGl0eShWYWxpZGl0eSB2YWxpZGl0
eSkgeyBtX3ZhbGlkaXR5ID0gdmFsaWRpdHk7IH0KLQotICAgIHZvaWQgZGlzdHJpYnV0ZShFbGVt
ZW50KiBob3N0KTsKLSAgICBib29sIGludmFsaWRhdGUoRWxlbWVudCogaG9zdCk7Ci0gICAgdm9p
ZCBmaW5pc2hJbml2YWxpZGF0aW9uKCk7Ci0gICAgYm9vbCBuZWVkc0Rpc3RyaWJ1dGlvbigpIGNv
bnN0OwotICAgIGJvb2wgbmVlZHNJbnZhbGlkYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3ZhbGlk
aXR5ICE9IEludmFsaWRhdGVkOyB9CisgICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIGVu
c3VyZVNlbGVjdEZlYXR1cmVTZXQoRWxlbWVudFNoYWRvdyopOwogCiAgICAgdm9pZCBkaXN0cmli
dXRlU2VsZWN0aW9uc1RvKEluc2VydGlvblBvaW50KiwgY29uc3QgQ29udGVudERpc3RyaWJ1dGlv
biYgcG9vbCwgVmVjdG9yPGJvb2w+JiBkaXN0cmlidXRlZCk7CiAgICAgdm9pZCBkaXN0cmlidXRl
Tm9kZUNoaWxkcmVuVG8oSW5zZXJ0aW9uUG9pbnQqLCBDb250YWluZXJOb2RlKik7Ci0gICAgdm9p
ZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uSW4oQ29udGVudERpc3RyaWJ1dGlvbiopOworCisgICAg
dm9pZCBlbnN1cmVEaXN0cmlidXRpb24oRWxlbWVudCogaG9zdCk7CisgICAgdm9pZCBpbnZhbGlk
YXRlRGlzdHJpYnV0aW9uKEVsZW1lbnQqIGhvc3QpOworICAgIHZvaWQgZGlkU2hhZG93Qm91bmRh
cnlDaGFuZ2UoRWxlbWVudCogaG9zdCk7CisgICAgdm9pZCBkaWRBZmZlY3RTZWxlY3RvcihFbGVt
ZW50KiBob3N0LCBBZmZlY3RlZFNlbGVjdG9yTWFzayk7CisgICAgdm9pZCB3aWxsQWZmZWN0U2Vs
ZWN0b3IoRWxlbWVudCogaG9zdCk7CisKKyAgICBzdGF0aWMgdm9pZCBlbnN1cmVEaXN0cmlidXRp
b25Gcm9tRG9jdW1lbnQoRWxlbWVudCogc291cmNlKTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGRp
c3RyaWJ1dGUoRWxlbWVudCogaG9zdCk7CisgICAgYm9vbCBpbnZhbGlkYXRlKEVsZW1lbnQqIGhv
c3QpOwogICAgIHZvaWQgcG9wdWxhdGUoTm9kZSosIENvbnRlbnREaXN0cmlidXRpb24mKTsKIAor
ICAgIHZvaWQgY29sbGVjdFNlbGVjdEZlYXR1cmVTZXRGcm9tKFNoYWRvd1Jvb3QqKTsKKyAgICBi
b29sIG5lZWRzU2VsZWN0RmVhdHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNTZWxlY3RG
ZWF0dXJlU2V0OyB9CisgICAgdm9pZCBzZXROZWVkc1NlbGVjdEZlYXR1cmVTZXQoKSB7IG1fbmVl
ZHNTZWxlY3RGZWF0dXJlU2V0ID0gdHJ1ZTsgfQorCisgICAgdm9pZCBzZXRWYWxpZGl0eShWYWxp
ZGl0eSB2YWxpZGl0eSkgeyBtX3ZhbGlkaXR5ID0gdmFsaWRpdHk7IH0KKyAgICBib29sIG5lZWRz
RGlzdHJpYnV0aW9uKCkgY29uc3Q7CisgICAgYm9vbCBuZWVkc0ludmFsaWRhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsaWRpdHkgIT0gSW52YWxpZGF0ZWQ7IH0KKwogICAgIEhhc2hNYXA8Y29u
c3QgTm9kZSosIFJlZlB0cjxJbnNlcnRpb25Qb2ludD4gPiBtX25vZGVUb0luc2VydGlvblBvaW50
OworICAgIFNlbGVjdFJ1bGVGZWF0dXJlU2V0IG1fc2VsZWN0RmVhdHVyZXM7CisgICAgYm9vbCBt
X25lZWRzU2VsZWN0RmVhdHVyZVNldCA6IDE7CiAgICAgdW5zaWduZWQgbV92YWxpZGl0eSA6IDI7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVu
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVt
ZW50LmNwcAppbmRleCA5MGM3ODZhZGE4OTNkNzUzY2JlNjdkODRhMTg5NGQ5NjU5OWMzZDA0Li4z
N2Q1NzBiNWJhNjEyMDY5OTc2ZjE4ZmU3Y2ZiMzlkMTUwMmE0ZTVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAKQEAgLTk5LDEwICs5
OSw4IEBAIHZvaWQgSFRNTENvbnRlbnRFbGVtZW50OjplbnN1cmVTZWxlY3RQYXJzZWQoKQogdm9p
ZCBIVE1MQ29udGVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gc2Vs
ZWN0QXR0cikgewotICAgICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IGNvbnRhaW5pbmdTaGFk
b3dSb290KCkpIHsKLSAgICAgICAgICAgIHJvb3QtPm93bmVyKCktPnNldFNob3VsZENvbGxlY3RT
ZWxlY3RGZWF0dXJlU2V0KCk7Ci0gICAgICAgICAgICByb290LT5vd25lcigpLT5pbnZhbGlkYXRl
RGlzdHJpYnV0aW9uKCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3Qg
PSBjb250YWluaW5nU2hhZG93Um9vdCgpKQorICAgICAgICAgICAgcm9vdC0+b3duZXIoKS0+d2ls
bEFmZmVjdFNlbGVjdG9yKCk7CiAgICAgICAgIG1fc2hvdWxkUGFyc2VTZWxlY3Rvckxpc3QgPSB0
cnVlOwogICAgIH0gZWxzZQogICAgICAgICBJbnNlcnRpb25Qb2ludDo6cGFyc2VBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRN
TENvbnRlbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVu
dEVsZW1lbnQuaAppbmRleCBhNmRjNWY0Y2JiNDE1MDdmMWI1NGIwZjYwOThkYzNiOTFhYjA5MWIz
Li5hMzE4Y2Y3OGJlYzY5M2RhMTc4OGJlMmYxYjc0NGQ1ZjQ1ZTFjNTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaApAQCAtNTAsNiArNTAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzU2VsZWN0VmFsaWQoKTsKICAgICB2aXJ0
dWFsIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KCk7CiAgICAgdmlydHVhbCBU
eXBlIGluc2VydGlvblBvaW50VHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIENvbnRlbnRJ
bnNlcnRpb25Qb2ludDsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5BZmZlY3RTZWxlY3RvcigpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogcHJvdGVjdGVkOgogICAgIEhUTUxDb250
ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcAppbmRleCAyMmMwNzY1
NmE1NTdlNDdjOTNmZWI1M2FiM2UzNTUyMjA3YWY4ZTljLi4xNzQ3ZWNkMTcyOTA5Y2YyMWVlY2Y2
MjNiNjc5NzMwYjNmZDU1MGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9IVE1MU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SFRNTFNoYWRvd0VsZW1lbnQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIFNoYWRvd1Jvb3QqIEhUTUxT
aGFkb3dFbGVtZW50OjpvbGRlclNoYWRvd1Jvb3QoKQogICAgIGlmICghdHJlZVNjb3BlKCktPnJv
b3ROb2RlKCktPmlzU2hhZG93Um9vdCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHRvU2hh
ZG93Um9vdCh0cmVlU2NvcGUoKS0+cm9vdE5vZGUoKSktPm93bmVyKCktPmVuc3VyZURpc3RyaWJ1
dGlvbkZyb21Eb2N1bWVudCgpOworICAgIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJp
YnV0aW9uRnJvbURvY3VtZW50KHRoaXMpOwogCiAgICAgU2hhZG93Um9vdCogb2xkZXIgPSB0b1No
YWRvd1Jvb3QodHJlZVNjb3BlKCktPnJvb3ROb2RlKCkpLT5vbGRlclNoYWRvd1Jvb3QoKTsKICAg
ICBpZiAoIW9sZGVyIHx8IG9sZGVyLT50eXBlKCkgIT0gU2hhZG93Um9vdDo6QXV0aG9yU2hhZG93
Um9vdCB8fCBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OmFzc2lnbmVkVG8ob2xkZXIpICE9IHRo
aXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2lu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKaW5k
ZXggNDRlMzRiOTUzNDU3NGVjMDY4ZGVlZDJhZmQ4MGE2OTY2NDdiYWM1OS4uNWFjNTIwZDU1ZWQz
OTBmZTJmYjk3ZjEwMDhiYWM5MzY2OWYyNTg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0luc2VydGlvblBvaW50LmNwcApAQCAtOTksMTAgKzk5LDcgQEAgYm9vbCBJbnNlcnRp
b25Qb2ludDo6aXNBY3RpdmUoKSBjb25zdAogCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnNlcnRp
b25Qb2ludDo6Z2V0RGlzdHJpYnV0ZWROb2RlcygpIGNvbnN0CiB7Ci0gICAgQ29udGFpbmVyTm9k
ZSogcm9vdE5vZGUgPSB0cmVlU2NvcGUoKS0+cm9vdE5vZGUoKTsKLSAgICBpZiAocm9vdE5vZGUt
PmlzU2hhZG93Um9vdCgpKQotICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogcm9vdE93bmVyID0g
dG9TaGFkb3dSb290KHJvb3ROb2RlKS0+b3duZXIoKSkKLSAgICAgICAgICAgIHJvb3RPd25lci0+
ZW5zdXJlRGlzdHJpYnV0aW9uRnJvbURvY3VtZW50KCk7CisgICAgQ29udGVudERpc3RyaWJ1dG9y
OjplbnN1cmVEaXN0cmlidXRpb25Gcm9tRG9jdW1lbnQoY29uc3RfY2FzdDxJbnNlcnRpb25Qb2lu
dCo+KHRoaXMpKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBub2RlczsKIApAQCAtMTMx
LDExICsxMjgsMTIgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBJbnNlcnRp
b25Qb2ludDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGkKIAogICAgIGlmIChTaGFkb3dS
b290KiByb290ID0gY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkgewogICAgICAgICBpZiAoRWxlbWVu
dFNoYWRvdyogcm9vdE93bmVyID0gcm9vdC0+b3duZXIoKSkgewotICAgICAgICAgICAgcm9vdE93
bmVyLT5zZXRWYWxpZGl0eVVuZGV0ZXJtaW5lZCgpOwotICAgICAgICAgICAgcm9vdE93bmVyLT5p
bnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CisgICAgICAgICAgICByb290T3duZXItPmRpc3RyaWJ1
dG9yKCkuZGlkU2hhZG93Qm91bmRhcnlDaGFuZ2Uocm9vdC0+aG9zdCgpKTsKICAgICAgICAgICAg
IGlmIChpc0FjdGl2ZSgpICYmICFtX3JlZ2lzdGVyZWRXaXRoU2hhZG93Um9vdCAmJiBpbnNlcnRp
b25Qb2ludC0+dHJlZVNjb3BlKCktPnJvb3ROb2RlKCkgPT0gcm9vdCkgewogICAgICAgICAgICAg
ICAgIG1fcmVnaXN0ZXJlZFdpdGhTaGFkb3dSb290ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBy
b290LT5lbnN1cmVTY29wZURpc3RyaWJ1dGlvbigpLT5yZWdpc3Rlckluc2VydGlvblBvaW50KHJv
b3QsIHRoaXMpOworICAgICAgICAgICAgICAgIHJvb3QtPmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9u
KCktPnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQodGhpcyk7CisgICAgICAgICAgICAgICAgaWYgKGNh
bkFmZmVjdFNlbGVjdG9yKCkpCisgICAgICAgICAgICAgICAgICAgIHJvb3RPd25lci0+d2lsbEFm
ZmVjdFNlbGVjdG9yKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNjAs
NyArMTU4LDkgQEAgdm9pZCBJbnNlcnRpb25Qb2ludDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9k
ZSogaW5zZXJ0aW9uUG9pbnQpCiAgICAgaWYgKG1fcmVnaXN0ZXJlZFdpdGhTaGFkb3dSb290ICYm
IGluc2VydGlvblBvaW50LT50cmVlU2NvcGUoKS0+cm9vdE5vZGUoKSA9PSByb290KSB7CiAgICAg
ICAgIEFTU0VSVChyb290KTsKICAgICAgICAgbV9yZWdpc3RlcmVkV2l0aFNoYWRvd1Jvb3QgPSBm
YWxzZTsKLSAgICAgICAgcm9vdC0+ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24oKS0+dW5yZWdpc3Rl
ckluc2VydGlvblBvaW50KHJvb3QsIHRoaXMpOworICAgICAgICByb290LT5lbnN1cmVTY29wZURp
c3RyaWJ1dGlvbigpLT51bnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQodGhpcyk7CisgICAgICAgIGlm
IChyb290T3duZXIgJiYgY2FuQWZmZWN0U2VsZWN0b3IoKSkKKyAgICAgICAgICAgIHJvb3RPd25l
ci0+d2lsbEFmZmVjdFNlbGVjdG9yKCk7CiAgICAgfQogCiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92
ZWRGcm9tKGluc2VydGlvblBvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNl
cnRpb25Qb2ludC5oCmluZGV4IDNiZDc1MmM4NzNkMWYxYTU5OWU0NzkwYjg2NTk0YjA3NWVlZjdl
Y2UuLjIwY2U3N2QwYTM3OWVmY2MyNDQ4YTY1ODk5ZDZjNThmMzdmOWM5YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtNjIsNiArNjIsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzU2VsZWN0VmFsaWQoKSA9IDA7CiAgICAgdmlydHVh
bCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCgpID0gMDsKICAgICB2aXJ0dWFs
IFR5cGUgaW5zZXJ0aW9uUG9pbnRUeXBlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBj
YW5BZmZlY3RTZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29sIHJl
c2V0U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0UmVzZXRTdHlsZUluaGVy
aXRhbmNlKGJvb2wpOwpAQCAtODgsNiArODksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc0luc2VydGlvblBvaW50Tm9kZSgpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKwogcHJpdmF0ZToKIAogICAgIENvbnRlbnRE
aXN0cmlidXRpb24gbV9kaXN0cmlidXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKaW5kZXggNGU4YmY4ZjQ2OTFlZjk0ZDE2MzgwYjE4NTIzZGNhOTk1MWQ0NTI4ZC4uOWE0Mzc5
ZjM1MTdkNjMwN2I1NzA5MTIxYTY1YTBiZTdjYmMxODIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcApAQCAtMzQwLDggKzM0MCw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxl
Y3RvckZvcklkSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBpZFZhbHVlLCBF
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGhvc3QtPnNoYWRvdygpLT5lbnN1cmVT
ZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCk7Ci0gICAgcmV0dXJuIGhvc3QtPnNoYWRvdygpLT5z
ZWxlY3RSdWxlRmVhdHVyZVNldCgpLmhhc1NlbGVjdG9yRm9ySWQoaWRWYWx1ZSk7CisgICAgcmV0
dXJuIGhvc3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQo
aG9zdC0+c2hhZG93KCkpLmhhc1NlbGVjdG9yRm9ySWQoaWRWYWx1ZSk7CiB9CiAKIGJvb2wgSW50
ZXJuYWxzOjpoYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3Qg
U3RyaW5nJiBjbGFzc05hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzUxLDggKzM1MCw3IEBA
IGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coRWxlbWVudCogaG9z
dCwgY29uc3QgU3RyaW5nJiBjbGFzc05hCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAg
IGhvc3QtPnNoYWRvdygpLT5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCk7Ci0gICAg
cmV0dXJuIGhvc3QtPnNoYWRvdygpLT5zZWxlY3RSdWxlRmVhdHVyZVNldCgpLmhhc1NlbGVjdG9y
Rm9yQ2xhc3MoY2xhc3NOYW1lKTsKKyAgICByZXR1cm4gaG9zdC0+c2hhZG93KCktPmRpc3RyaWJ1
dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFkb3coKSkuaGFzU2VsZWN0b3JG
b3JDbGFzcyhjbGFzc05hbWUpOwogfQogCiBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JB
dHRyaWJ1dGVJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZU5h
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzYyLDggKzM2MCw3IEBAIGJvb2wgSW50ZXJuYWxz
OjpoYXNTZWxlY3RvckZvckF0dHJpYnV0ZUluU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0
cmluZyYgYXR0CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGhvc3QtPnNoYWRvdygp
LT5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCk7Ci0gICAgcmV0dXJuIGhvc3QtPnNo
YWRvdygpLT5zZWxlY3RSdWxlRmVhdHVyZVNldCgpLmhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUpOworICAgIHJldHVybiBob3N0LT5zaGFkb3coKS0+ZGlzdHJpYnV0b3IoKS5l
bnN1cmVTZWxlY3RGZWF0dXJlU2V0KGhvc3QtPnNoYWRvdygpKS5oYXNTZWxlY3RvckZvckF0dHJp
YnV0ZShhdHRyaWJ1dGVOYW1lKTsKIH0KIAogYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9y
UHNldWRvQ2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIHBzZXVkb0Ns
YXNzLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTM3Myw4ICszNzAsNyBAQCBib29sIEludGVybmFs
czo6aGFzU2VsZWN0b3JGb3JQc2V1ZG9DbGFzc0luU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0
IFN0cmluZyYgcAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBob3N0LT5zaGFkb3co
KS0+ZW5zdXJlU2VsZWN0RmVhdHVyZVNldENvbGxlY3RlZCgpOwotICAgIGNvbnN0IFNlbGVjdFJ1
bGVGZWF0dXJlU2V0JiBmZWF0dXJlU2V0ID0gaG9zdC0+c2hhZG93KCktPnNlbGVjdFJ1bGVGZWF0
dXJlU2V0KCk7CisgICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIGZlYXR1cmVTZXQgPSBo
b3N0LT5zaGFkb3coKS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGhvc3Qt
PnNoYWRvdygpKTsKICAgICBpZiAocHNldWRvQ2xhc3MgPT0gImNoZWNrZWQiKQogICAgICAgICBy
ZXR1cm4gZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvckNoZWNrZWQoKTsKICAgICBpZiAocHNldWRv
Q2xhc3MgPT0gImVuYWJsZWQiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0
LnZjcHJvai9XZWJLaXQuZGVmLmluIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9X
ZWJLaXQuZGVmLmluCmluZGV4IDZjODA1ZmNjMWIxNmVhOTBjZTJhOTI4YzMzNjBiMmM2ZWVmM2Uw
YjEuLjFkMGQxZDQ2YmQ3YjNmN2IyYmI5YjIwNGM4OTEwZjk5YjNlYTY3NjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LmRlZi5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC5kZWYuaW4KQEAgLTE4MSw3ICsxODEs
NiBAQCBFWFBPUlRTCiAgICAgICAgID9jcmVhdGVXcmFwcGVyQFdlYkNvcmVAQFlBP0FWSlNWYWx1
ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWTm9kZUAxQEBa
CiAgICAgICAgID9kZXNlcmlhbGl6ZUBTZXJpYWxpemVkU2NyaXB0VmFsdWVAV2ViQ29yZUBAUUFF
P0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUA0QFBBVkpTR2xvYmFsT2JqZWN0QDRAUEFWPyRW
ZWN0b3JAVj8kUmVmUHRyQFZNZXNzYWdlUG9ydEBXZWJDb3JlQEBAV1RGQEAkMDBAV1RGQEBXNFNl
cmlhbGl6YXRpb25FcnJvck1vZGVAMkBAWgogICAgICAgICA/ZG9jdW1lbnRTdGF0ZUBIaXN0b3J5
SXRlbUBXZWJDb3JlQEBRQkVBQlY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQFhaCi0g
ICAgICAgID9lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkQEVsZW1lbnRTaGFkb3dAV2Vi
Q29yZUBAUUFFWFhaCiAgICAgICAgID9lcXVhbEBXVEZAQFlBX05QQlZTdHJpbmdJbXBsQDFAUEJF
QFoKICAgICAgICAgP2VxdWFsQFdURkBAWUFfTlBCVlN0cmluZ0ltcGxAMUAwQFoKICAgICAgICAg
P2VxdWFsSWdub3JpbmdDYXNlQFdURkBAWUFfTlBBVlN0cmluZ0ltcGxAMUBQQkVAWgpAQCAtNTcw
LDcgKzU2OSw2IEBAIEVYUE9SVFMKICAgICAgICAgP2NyZWF0ZVdyYXBwZXJAV2ViQ29yZUBAWUE/
QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQVZO
b2RlQDFAQFoKICAgICAgICAgP2Rlc2VyaWFsaXplQFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUBXZWJD
b3JlQEBRQUU/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDRAUEFWSlNHbG9iYWxPYmplY3RA
NEBQQVY/JFZlY3RvckBWPyRSZWZQdHJAVk1lc3NhZ2VQb3J0QFdlYkNvcmVAQEBXVEZAQCQwMEBX
VEZAQFc0U2VyaWFsaXphdGlvbkVycm9yTW9kZUAyQEBaCiAgICAgICAgID9kb2N1bWVudFN0YXRl
QEhpc3RvcnlJdGVtQFdlYkNvcmVAQFFCRUFCVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdU
RkBAWFoKLSAgICAgICAgP2Vuc3VyZVNlbGVjdEZlYXR1cmVTZXRDb2xsZWN0ZWRARWxlbWVudFNo
YWRvd0BXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2VxdWFsQFdURkBAWUFfTlBCVlN0cmluZ0lt
cGxAMUBQQkVAWgogICAgICAgICA/ZXF1YWxAV1RGQEBZQV9OUEJWU3RyaW5nSW1wbEAxQDBAWgog
ICAgICAgICA/ZXF1YWxJZ25vcmluZ0Nhc2VAV1RGQEBZQV9OUEFWU3RyaW5nSW1wbEAxQFBCRUBa
CkBAIC05NTksNyArOTU3LDYgQEAgRVhQT1JUUwogICAgICAgICA/Y3JlYXRlV3JhcHBlckBXZWJD
b3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVj
dEAxQFBBVk5vZGVAMUBAWgogICAgICAgICA/ZGVzZXJpYWxpemVAU2VyaWFsaXplZFNjcmlwdFZh
bHVlQFdlYkNvcmVAQFFBRT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVANEBQQVZKU0dsb2Jh
bE9iamVjdEA0QFBBVj8kVmVjdG9yQFY/JFJlZlB0ckBWTWVzc2FnZVBvcnRAV2ViQ29yZUBAQFdU
RkBAJDAwQFdURkBAVzRTZXJpYWxpemF0aW9uRXJyb3JNb2RlQDJAQFoKICAgICAgICAgP2RvY3Vt
ZW50U3RhdGVASGlzdG9yeUl0ZW1AV2ViQ29yZUBAUUJFQUJWPyRWZWN0b3JAVlN0cmluZ0BXVEZA
QCQwQUBAV1RGQEBYWgotICAgICAgICA/ZW5zdXJlU2VsZWN0RmVhdHVyZVNldENvbGxlY3RlZEBF
bGVtZW50U2hhZG93QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/ZXF1YWxAV1RGQEBZQV9OUEJW
U3RyaW5nSW1wbEAxQFBCRUBaCiAgICAgICAgID9lcXVhbEBXVEZAQFlBX05QQlZTdHJpbmdJbXBs
QDFAMEBaCiAgICAgICAgID9lcXVhbElnbm9yaW5nQ2FzZUBXVEZAQFlBX05QQVZTdHJpbmdJbXBs
QDFAUEJFQFoKQEAgLTEzNDgsMTEgKzEzNDUsMTEgQEAgRVhQT1JUUwogICAgICAgICA/Y3JlYXRl
V3JhcHBlckBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RP
TUdsb2JhbE9iamVjdEAxQFBBVk5vZGVAMUBAWgogICAgICAgICA/ZGVzZXJpYWxpemVAU2VyaWFs
aXplZFNjcmlwdFZhbHVlQFdlYkNvcmVAQFFBRT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVA
NEBQQVZKU0dsb2JhbE9iamVjdEA0QFBBVj8kVmVjdG9yQFY/JFJlZlB0ckBWTWVzc2FnZVBvcnRA
V2ViQ29yZUBAQFdURkBAJDAwQFdURkBAVzRTZXJpYWxpemF0aW9uRXJyb3JNb2RlQDJAQFoKICAg
ICAgICAgP2RvY3VtZW50U3RhdGVASGlzdG9yeUl0ZW1AV2ViQ29yZUBAUUJFQUJWPyRWZWN0b3JA
VlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBYWgotICAgICAgICA/ZW5zdXJlU2VsZWN0RmVhdHVyZVNl
dENvbGxlY3RlZEBFbGVtZW50U2hhZG93QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/ZXF1YWxA
V1RGQEBZQV9OUEJWU3RyaW5nSW1wbEAxQFBCRUBaCiAgICAgICAgID9lcXVhbEBXVEZAQFlBX05Q
QlZTdHJpbmdJbXBsQDFAMEBaCiAgICAgICAgID9lcXVhbElnbm9yaW5nQ2FzZUBXVEZAQFlBX05Q
QVZTdHJpbmdJbXBsQDFAUEJFQFoKICAgICAgICAgP2V4dGVybmFsUmVwcmVzZW50YXRpb25AV2Vi
Q29yZUBAWUE/QVZTdHJpbmdAV1RGQEBQQVZFbGVtZW50QDFASUBaCisgICAgICAgID9lbnN1cmVT
ZWxlY3RGZWF0dXJlU2V0QENvbnRlbnREaXN0cmlidXRvckBXZWJDb3JlQEBRQUVBQlZTZWxlY3RS
dWxlRmVhdHVyZVNldEAyQFBBVkVsZW1lbnRTaGFkb3dAMkBAWgogICAgICAgICA/aGFzU2hhZG93
RWxlbWVudEBTY29wZUNvbnRlbnREaXN0cmlidXRpb25AV2ViQ29yZUBAU0FfTlBCVlNoYWRvd1Jv
b3RAMkBAWgogICAgICAgICA/aGFzQ29udGVudEVsZW1lbnRAU2NvcGVDb250ZW50RGlzdHJpYnV0
aW9uQFdlYkNvcmVAQFNBX05QQlZTaGFkb3dSb290QDJAQFoKICAgICAgICAgP2NvdW50RWxlbWVu
dFNoYWRvd0BTY29wZUNvbnRlbnREaXN0cmlidXRpb25AV2ViQ29yZUBAU0FJUEJWU2hhZG93Um9v
dEAyQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCBhOTE0NzAyOGIxYWMwYjk1NTQ4ODgw
OTdhYWNkY2QxNTAxZDFhZGRjLi41NzYxY2E4ZjM2MzhmNDE4YTg0Y2U3YmJjOTQxYTlmYzMxMDBl
ZmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1Nv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTU4LDcgKzU4LDYgQEAgX1pON1dlYkNv
cmUxMlRleHRJdGVyYXRvcjI2cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhFUE5TXzEzQ29udGFp
bmVyTm9kZUVpaWI7CiBfWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjlnZXRMb2NhdGlvbkFuZExl
bmd0aEZyb21SYW5nZUVQTlNfN0VsZW1lbnRFUEtOU181UmFuZ2VFUmpTNl87CiBfWk43V2ViQ29y
ZTEyVGV4dEl0ZXJhdG9yMjlnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZUVQTlNfN0VsZW1l
bnRFUEtOU181UmFuZ2VFUm1TNl87CiBfWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MjBwYWdlTnVt
YmVyRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRFUktOU185RmxvYXRTaXplRTsKLV9aTjdXZWJDb3Jl
MTNFbGVtZW50U2hhZG93MzFlbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkRXY7CiBfWk43
V2ViQ29yZTEzY3JlYXRlV3JhcHBlckVQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFs
T2JqZWN0RVBOU180Tm9kZUU7CiBfWk43V2ViQ29yZTE0Q2xpZW50UmVjdExpc3RDMUVSS04zV1RG
NlZlY3RvcklOU185RmxvYXRRdWFkRUxqMEVFRTsKIF9aTjdXZWJDb3JlMTRDbGllbnRSZWN0TGlz
dEMxRVJLTjNXVEY2VmVjdG9ySU5TXzlGbG9hdFF1YWRFTG0wRUVFOwpAQCAtMTU0LDYgKzE1Myw3
IEBAIF9aTks3V2ViQ29yZTVSYW5nZTR0ZXh0RXY7CiBfWk43V2ViQ29yZTIyY291bnRlclZhbHVl
Rm9yRWxlbWVudEVQTlNfN0VsZW1lbnRFOwogX1pOSzdXZWJDb3JlMTREb2N1bWVudE1hcmtlcjEx
ZGVzY3JpcHRpb25FdjsKIF9aTjdXZWJDb3JlOERvY3VtZW50MTZpc1BhZ2VCb3hWaXNpYmxlRWk7
CitfWk43V2ViQ29yZTE4Q29udGVudERpc3RyaWJ1dG9yMjJlbnN1cmVTZWxlY3RGZWF0dXJlU2V0
RVBOU18xM0VsZW1lbnRTaGFkb3dFOwogX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIx
N3N1c3BlbmRBbmltYXRpb25zRXY7CiBfWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjE2
cmVzdW1lQW5pbWF0aW9uc0V2OwogX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIyMHBh
dXNlQW5pbWF0aW9uQXRUaW1lRVBOU18xMlJlbmRlck9iamVjdEVSS04zV1RGNlN0cmluZ0VkOwpk
aWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDAxOGNjMDFiYTAyMjVkMzJl
MmY5NGI5NmE3NTQ5OGQ1NjVkZTMwN2MuLjBmNGNkZWFlYjFhZTllYjFiY2FlMmI0MTZmMTczODVi
ZWZhNDFkNjMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxMy0wMS0wOSAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+
CisKKyAgICAgICAgW1NoYWRvdyBET01dIERpc3RyaWJ1dGlvbiByZWxhdGVkIGNvZGUgb24gRWxl
bWVudFNoYWRvdyBzaG91bGQgYmUgbWluaW1pemVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
OgorCiAyMDEzLTAxLTA4ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAK
ICAgICAgICAgQWRkIGFuIEF1dG9jb25mIG1hY3JvIHRoYXQgY2hlY2tzIHdoZXRoZXIgYSBnaXZl
biBmZWF0dXJlIGlzIGVuYWJsZWQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182023</attachid>
            <date>2013-01-09 17:16:11 -0800</date>
            <delta_ts>2013-01-09 18:06:45 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-106294-20130110101314.patch</filename>
            <type>text/plain</type>
            <size>37977</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTY1MmJkN2NkZjI2NjA4
NDFmN2FhZWVjNmZlYzg4YTViOWRmMDczMS4uNmZmOWIwMTk0ZjQyMjc0NmMzZjUyNWNkNzFjN2Zm
ZjkzOTBmMGYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTAxLTA5ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0g
RGlzdHJpYnV0aW9uIHJlbGF0ZWQgY29kZSBvbiBFbGVtZW50U2hhZG93IHNob3VsZCBiZSBtaW5p
bWl6ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDYyOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGNoYW5nZSBtb3ZlcyBFbGVtZW50U2hhZG93OjptX3NlbGVjdEZlYXR1cmVzLAorICAgICAg
ICBtX3Nob3VsZENvbGxlY3RTZWxlY3RGZWF0dXJlU2V0IGFuZCByZWxhdGVkIG1ldGhvZHMgdG8K
KyAgICAgICAgQ29udGVudERpc3RyaWJ1dG9yLgorCisgICAgICAgIFRoZXJlIGFyZSBhbHNvIHNv
bWUgcmVuYW1pbmcgYW5kIHNtYWxsIHJlZmFjdG9yaW5ncyBmb3IgYmV0dGVyIGZpdAorICAgICAg
ICBvbiBuZXcgcGxhY2U6CisKKyAgICAgICAgLSBzaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNl
dCBpcyByZW5hbWVkIG5lZWRzU2VsZWN0b3JSdWxlU2V0IGZvciBjb25jaXNlbmVzcy4KKyAgICAg
ICAgLSBzZXRTaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCgpIHdoaWNoIHVzZWQgcmVjdXJz
aW9uIG1vcnBoZWQgaW50bworICAgICAgICAgIGl0ZXJhdGl2ZSB3aWxsQWZmZWN0U2VsZWN0b3Io
KS4KKyAgICAgICAgLSBlbnN1cmVEaXN0cmlidXRpb25Gcm9tRG9jdW1lbnQoKSBiZWNvbWVzIGEg
c3RhdGljIG1ldGhvZC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFJlZmFjdG9yaW5nLgorCisg
ICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlvbldoZW5B
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBkb20vRWxlbWVudFNoYWRvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50U2hhZG93OjphZGRTaGFkb3dSb290KToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnRTaGFkb3c6OnJlbW92ZUFsbFNoYWRvd1Jvb3RzKToKKyAgICAgICAgKiBk
b20vRWxlbWVudFNoYWRvdy5oOgorICAgICAgICAoRWxlbWVudFNoYWRvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50U2hhZG93OjppbnZhbGlkYXRlRGlzdHJpYnV0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OmVuc3VyZURpc3RyaWJ1dGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50U2hhZG93OjpkaWRBZmZlY3RTZWxlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50U2hhZG93Ojp3aWxsQWZmZWN0U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudFNoYWRvdzo6Y29udGFpbmluZ1NoYWRvdyk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpyZWdpc3Rlckluc2VydGlvblBvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6dW5yZWdpc3Rl
ckluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6
Q29udGVudERpc3RyaWJ1dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRv
cjo6ZW5zdXJlRGlzdHJpYnV0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb25Gcm9tRG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9yOjppbnZhbGlkYXRlRGlzdHJp
YnV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlU2Vs
ZWN0RmVhdHVyZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OmNv
bGxlY3RTZWxlY3RGZWF0dXJlU2V0RnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlz
dHJpYnV0b3I6OmRpZEFmZmVjdFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRE
aXN0cmlidXRvcjo6d2lsbEFmZmVjdFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnREaXN0cmlidXRvcjo6ZGlkU2hhZG93Qm91bmRhcnlDaGFuZ2UpOgorICAgICAgICAqIGh0bWwv
c2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oOgorICAgICAgICAoU2NvcGVDb250ZW50RGlzdHJp
YnV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6bmVlZHNTZWxl
Y3RGZWF0dXJlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6c2V0
TmVlZHNTZWxlY3RGZWF0dXJlU2V0KToKKyAgICAgICAgKENvbnRlbnREaXN0cmlidXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OnNldFZhbGlkaXR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6bmVlZHNJbnZhbGlkYXRpb24pOgorICAg
ICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ29udGVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1M
U2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2hhZG93RWxlbWVudDo6
b2xkZXJTaGFkb3dSb290KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6Z2V0RGlzdHJpYnV0ZWROb2Rl
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6aW5zZXJ0ZWRJbnRvKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjpyZW1vdmVkRnJvbSk6CisgICAgICAgICog
aHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydGlv
blBvaW50OjpjYW5BZmZlY3RTZWxlY3Rvcik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvcklkSW5TaGFk
b3cpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckNsYXNzSW5T
aGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckF0dHJp
YnV0ZUluU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JG
b3JQc2V1ZG9DbGFzc0luU2hhZG93KToKKwogMjAxMy0wMS0wOSAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBkcm9wIHRvIGh1Z2UgdGlsZSBt
b2RlIGlmIHdlJ3JlIG9ubHkgc2xvdy1zY3JvbGxpbmcgYmVjYXVzZSBvZiBhIHBhZ2Ugb3Zlcmxh
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCmluZGV4IDRhMjFjMjAxYTI0NGQ2ZjczMDk0NGFiM2ViZDkxOGQ1MGU4
YmFjNDcuLmU5MTdhY2JiZjUyMTUwZWRlMGFiN2JiMGYyMGQ1MmJiY2FkMjkxZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wMS0wOSAgSGFqaW1lIE1vcnJpdGEgIDxt
b3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1NoYWRvdyBET01dIERpc3RyaWJ1dGlvbiBy
ZWxhdGVkIGNvZGUgb24gRWxlbWVudFNoYWRvdyBzaG91bGQgYmUgbWluaW1pemVkLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2Mjk0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQudmNwcm9q
L1dlYktpdC5kZWYuaW46CisKIDIwMTMtMDEtMDkgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgV2ViUHJlZmVyZW5jZXMgZm9yIFNlYW1sZXNzIElGcmFt
ZXMgb24gV2luZG93cyBwb3J0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA3NWY4M2M3Y2JmMzgx
NTAyMjIxYzE0MGFmNjNkNDRjMTkxMTRmNTE3Li4yZGVmYjU5MmY1ZmU1NzcwYWVkYzdmODM5NzZh
ZTc1ZjhiNWJkMzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjE3LDcgKzIxNyw2IEBAIF9f
Wk43V2ViQ29yZTEzQVhPYmplY3RDYWNoZTQyZ0FjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRl
cmZhY2VFbmFibGVkRQogX19aTjdXZWJDb3JlMTNDaGFyYWN0ZXJEYXRhN3NldERhdGFFUktOM1dU
RjZTdHJpbmdFUmkKIF9fWk43V2ViQ29yZTEzQ29udGFpbmVyTm9kZTExYXBwZW5kQ2hpbGRFTjNX
VEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUVSaWIKIF9fWk43V2ViQ29yZTEzQ29udGFpbmVyTm9k
ZTExcmVtb3ZlQ2hpbGRFUE5TXzROb2RlRVJpCi1fX1pON1dlYkNvcmUxM0VsZW1lbnRTaGFkb3cz
MWVuc3VyZVNlbGVjdEZlYXR1cmVTZXRDb2xsZWN0ZWRFdgogX19aTjdXZWJDb3JlMTNIVFRQSGVh
ZGVyTWFwQzFFdgogX19aTjdXZWJDb3JlMTNIVFRQSGVhZGVyTWFwRDFFdgogX19aTjdXZWJDb3Jl
MTNIaXRUZXN0UmVzdWx0QzFFUktTMF8KQEAgLTUxNyw2ICs1MTYsNyBAQCBfX1pON1dlYkNvcmUx
OERPTVdpbmRvd0V4dGVuc2lvbkMxRVBOU181RnJhbWVFUE5TXzE1RE9NV3JhcHBlcldvcmxkRQog
X19aTjdXZWJDb3JlMThIVE1MQ29udGVudEVsZW1lbnQ2Y3JlYXRlRVBOU184RG9jdW1lbnRFCiBf
X1pON1dlYkNvcmUxMFBhc3RlYm9hcmQxN2dlbmVyYWxQYXN0ZWJvYXJkRXYKIF9fWk43V2ViQ29y
ZTEwUGFzdGVib2FyZDE0d3JpdGVQbGFpblRleHRFUktOM1dURjZTdHJpbmdFTlMwXzE4U21hcnRS
ZXBsYWNlT3B0aW9uRQorX19aTjdXZWJDb3JlMThDb250ZW50RGlzdHJpYnV0b3IyMmVuc3VyZVNl
bGVjdEZlYXR1cmVTZXRFUE5TXzEzRWxlbWVudFNoYWRvd0UKIF9fWk43V2ViQ29yZTE4UGxhdGZv
cm1QYXN0ZWJvYXJkMTB1bmlxdWVOYW1lRXYKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJv
YXJkMTNidWZmZXJGb3JUeXBlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMThQbGF0Zm9y
bVBhc3RlYm9hcmQxM3N0cmluZ0ZvclR5cGVFUktOM1dURjZTdHJpbmdFCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKaW5kZXggOGExYWM5MWZlYWRkMTY3ZTBmYjhlMDQ5MGU3YjgxOWVhNDAwMWU4Zi4uNDkz
NGI5ZDk2MjkxOTI1NzM5MWRmMDVhY2E0MzgzYTRjZWRmNjE2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcApAQCAtOTE3LDE1ICs5MTcsMTUgQEAgdm9pZCBFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdDbGFzc1N0cmluZykKIGJvb2wgRWxlbWVudDo6
c2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlvbldoZW5BdHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnRT
aGFkb3cqIGVsZW1lbnRTaGFkb3csIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnRTaGFkb3cpOwotICAg
IGVsZW1lbnRTaGFkb3ctPmVuc3VyZVNlbGVjdEZlYXR1cmVTZXRDb2xsZWN0ZWQoKTsKKyAgICBj
b25zdCBTZWxlY3RSdWxlRmVhdHVyZVNldCYgZmVhdHVyZVNldCA9IGVsZW1lbnRTaGFkb3ctPmRp
c3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChlbGVtZW50U2hhZG93KTsKIAogICAg
IGlmIChpc0lkQXR0cmlidXRlTmFtZShuYW1lKSkgewogICAgICAgICBBdG9taWNTdHJpbmcgb2xk
SWQgPSBhdHRyaWJ1dGVEYXRhKCktPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCk7CiAgICAgICAgIEF0
b21pY1N0cmluZyBuZXdJZCA9IG1ha2VJZEZvclN0eWxlUmVzb2x1dGlvbihuZXdWYWx1ZSwgZG9j
dW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpOwogICAgICAgICBpZiAobmV3SWQgIT0gb2xkSWQpIHsK
LSAgICAgICAgICAgIGlmICghb2xkSWQuaXNFbXB0eSgpICYmIGVsZW1lbnRTaGFkb3ctPnNlbGVj
dFJ1bGVGZWF0dXJlU2V0KCkuaGFzU2VsZWN0b3JGb3JJZChvbGRJZCkpCisgICAgICAgICAgICBp
ZiAoIW9sZElkLmlzRW1wdHkoKSAmJiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9ySWQob2xkSWQp
KQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgaWYgKCFuZXdJZC5p
c0VtcHR5KCkgJiYgZWxlbWVudFNoYWRvdy0+c2VsZWN0UnVsZUZlYXR1cmVTZXQoKS5oYXNTZWxl
Y3RvckZvcklkKG5ld0lkKSkKKyAgICAgICAgICAgIGlmICghbmV3SWQuaXNFbXB0eSgpICYmIGZl
YXR1cmVTZXQuaGFzU2VsZWN0b3JGb3JJZChuZXdJZCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC05MzcsMTYgKzkzNywxNiBAQCBib29sIEVsZW1l
bnQ6OnNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb25XaGVuQXR0cmlidXRlQ2hhbmdlZChFbGVt
ZW50U2hhZG93KiBlbAogICAgICAgICAgICAgY29uc3QgYm9vbCBzaG91bGRGb2xkQ2FzZSA9IGRv
Y3VtZW50KCktPmluUXVpcmtzTW9kZSgpOwogICAgICAgICAgICAgY29uc3QgU3BhY2VTcGxpdFN0
cmluZyYgb2xkQ2xhc3NlcyA9IGF0dHJpYnV0ZURhdGEtPmNsYXNzTmFtZXMoKTsKICAgICAgICAg
ICAgIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcgbmV3Q2xhc3NlcyhuZXdDbGFzc1N0cmluZywgc2hv
dWxkRm9sZENhc2UpOwotICAgICAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3JGb3JDbGFzc0NoYW5n
ZShvbGRDbGFzc2VzLCBuZXdDbGFzc2VzLCBlbGVtZW50U2hhZG93LT5zZWxlY3RSdWxlRmVhdHVy
ZVNldCgpKSkKKyAgICAgICAgICAgIGlmIChjaGVja1NlbGVjdG9yRm9yQ2xhc3NDaGFuZ2Uob2xk
Q2xhc3NlcywgbmV3Q2xhc3NlcywgZmVhdHVyZVNldCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAoY29uc3QgRWxlbWVudEF0dHJpYnV0ZURhdGEqIGF0
dHJpYnV0ZURhdGEgPSB0aGlzLT5hdHRyaWJ1dGVEYXRhKCkpIHsKICAgICAgICAgICAgIGNvbnN0
IFNwYWNlU3BsaXRTdHJpbmcmIG9sZENsYXNzZXMgPSBhdHRyaWJ1dGVEYXRhLT5jbGFzc05hbWVz
KCk7Ci0gICAgICAgICAgICBpZiAoY2hlY2tTZWxlY3RvckZvckNsYXNzQ2hhbmdlKG9sZENsYXNz
ZXMsIGVsZW1lbnRTaGFkb3ctPnNlbGVjdFJ1bGVGZWF0dXJlU2V0KCkpKQorICAgICAgICAgICAg
aWYgKGNoZWNrU2VsZWN0b3JGb3JDbGFzc0NoYW5nZShvbGRDbGFzc2VzLCBmZWF0dXJlU2V0KSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJl
dHVybiBlbGVtZW50U2hhZG93LT5zZWxlY3RSdWxlRmVhdHVyZVNldCgpLmhhc1NlbGVjdG9yRm9y
QXR0cmlidXRlKG5hbWUubG9jYWxOYW1lKCkpOworICAgIHJldHVybiBmZWF0dXJlU2V0Lmhhc1Nl
bGVjdG9yRm9yQXR0cmlidXRlKG5hbWUubG9jYWxOYW1lKCkpOwogfQogCiAvLyBSZXR1cm5zIHRy
dWUgaXMgdGhlIGdpdmVuIGF0dHJpYnV0ZSBpcyBhbiBldmVudCBoYW5kbGVyLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRTaGFkb3cuY3BwCmluZGV4IDllNjg2YTdkOGNkYTk4YjNlM2UyZDU1MzkwM2E2
ZmQ5ODAzNDQyNmEuLjcyMDFkMzI3NTIyMDdhNTViN2E3ODA1YTE5Zjg0Yjg0ZWU0ZGFmNmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogRWxlbWVudFNoYWRvdzo6RWxlbWVudFNoYWRvdygpCi0gICAgOiBt
X3Nob3VsZENvbGxlY3RTZWxlY3RGZWF0dXJlU2V0KGZhbHNlKQogewogfQogCkBAIC04Myw4ICs4
Miw3IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdChFbGVtZW50KiBzaGFkb3dI
b3N0LCBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoCiAgICAgc2hhZG93Um9vdC0+c2V0SG9zdChz
aGFkb3dIb3N0KTsKICAgICBzaGFkb3dSb290LT5zZXRQYXJlbnRUcmVlU2NvcGUoc2hhZG93SG9z
dC0+dHJlZVNjb3BlKCkpOwogICAgIG1fc2hhZG93Um9vdHMucHVzaChzaGFkb3dSb290LmdldCgp
KTsKLSAgICBzZXRWYWxpZGl0eVVuZGV0ZXJtaW5lZCgpOwotICAgIGludmFsaWRhdGVEaXN0cmli
dXRpb24oc2hhZG93SG9zdCk7CisgICAgbV9kaXN0cmlidXRvci5kaWRTaGFkb3dCb3VuZGFyeUNo
YW5nZShzaGFkb3dIb3N0KTsKICAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcihzaGFkb3dI
b3N0KS5ub3RpZnkoc2hhZG93Um9vdC5nZXQoKSk7CiAKICAgICAvLyBFeGlzdGVuY2Ugb2Ygc2hh
ZG93IHJvb3RzIHJlcXVpcmVzIHRoZSBob3N0IGFuZCBpdHMgY2hpbGRyZW4gdG8gZG8gdHJhdmVy
c2FsIHVzaW5nIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlci4KQEAgLTExOSw3ICsxMTcsNyBAQCB2
b2lkIEVsZW1lbnRTaGFkb3c6OnJlbW92ZUFsbFNoYWRvd1Jvb3RzKCkKICAgICAgICAgQ2hpbGRO
b2RlUmVtb3ZhbE5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlmeShvbGRSb290LmdldCgpKTsKICAg
ICB9CiAKLSAgICBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKHNoYWRvd0hvc3QpOworICAgIG1fZGlz
dHJpYnV0b3IuaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihzaGFkb3dIb3N0KTsKIH0KIAogdm9pZCBF
bGVtZW50U2hhZG93OjphdHRhY2goKQpAQCAtMTY1LDk0ICsxNjMsNiBAQCB2b2lkIEVsZW1lbnRT
aGFkb3c6OnJlY2FsY1N0eWxlKE5vZGU6OlN0eWxlQ2hhbmdlIGNoYW5nZSkKICAgICAgICAgcm9v
dC0+cmVjYWxjU3R5bGUoY2hhbmdlKTsKIH0KIAotdm9pZCBFbGVtZW50U2hhZG93OjplbnN1cmVE
aXN0cmlidXRpb24oKQotewotICAgIGlmICghbV9kaXN0cmlidXRvci5uZWVkc0Rpc3RyaWJ1dGlv
bigpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9kaXN0cmlidXRvci5kaXN0cmlidXRlKGhvc3Qo
KSk7Ci19Ci0KLXZvaWQgRWxlbWVudFNoYWRvdzo6ZW5zdXJlRGlzdHJpYnV0aW9uRnJvbURvY3Vt
ZW50KCkKLXsKLSAgICBWZWN0b3I8RWxlbWVudCosIDg+IGhvc3RzOwotICAgIGZvciAoRWxlbWVu
dCogY3VycmVudCA9IGhvc3QoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnNoYWRvd0hv
c3QoKSkKLSAgICAgICAgaG9zdHMuYXBwZW5kKGN1cnJlbnQpOwotCi0gICAgZm9yIChzaXplX3Qg
aSA9IGhvc3RzLnNpemUoKTsgaSA+IDA7IC0taSkKLSAgICAgICAgaG9zdHNbaSAtIDFdLT5zaGFk
b3coKS0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7Ci19Ci0KLXZvaWQgRWxlbWVudFNoYWRvdzo6c2V0
VmFsaWRpdHlVbmRldGVybWluZWQoKQotewotICAgIG1fZGlzdHJpYnV0b3Iuc2V0VmFsaWRpdHko
Q29udGVudERpc3RyaWJ1dG9yOjpVbmRldGVybWluZWQpOwotfQotCi12b2lkIEVsZW1lbnRTaGFk
b3c6OmludmFsaWRhdGVEaXN0cmlidXRpb24oKQotewotICAgIGludmFsaWRhdGVEaXN0cmlidXRp
b24oaG9zdCgpKTsKLX0KLQotdm9pZCBFbGVtZW50U2hhZG93OjppbnZhbGlkYXRlRGlzdHJpYnV0
aW9uKEVsZW1lbnQqIGhvc3QpCi17Ci0gICAgYm9vbCBuZWVkc0ludmFsaWRhdGlvbiA9IG1fZGlz
dHJpYnV0b3IubmVlZHNJbnZhbGlkYXRpb24oKTsKLSAgICBib29sIG5lZWRzUmVhdHRhY2ggPSBu
ZWVkc0ludmFsaWRhdGlvbiA/IG1fZGlzdHJpYnV0b3IuaW52YWxpZGF0ZShob3N0KSA6IGZhbHNl
OwotCi0gICAgaWYgKG5lZWRzUmVhdHRhY2ggJiYgaG9zdC0+YXR0YWNoZWQoKSkgewotICAgICAg
ICBmb3IgKE5vZGUqIG4gPSBob3N0LT5maXJzdENoaWxkKCk7IG47IG4gPSBuLT5uZXh0U2libGlu
ZygpKQotICAgICAgICAgICAgbi0+bGF6eVJlYXR0YWNoKCk7Ci0gICAgICAgIGhvc3QtPnNldE5l
ZWRzU3R5bGVSZWNhbGMoKTsKLSAgICB9Ci0KLSAgICBpZiAobmVlZHNJbnZhbGlkYXRpb24pCi0g
ICAgICAgIG1fZGlzdHJpYnV0b3IuZmluaXNoSW5pdmFsaWRhdGlvbigpOwotfQotCi12b2lkIEVs
ZW1lbnRTaGFkb3c6OnNldFNob3VsZENvbGxlY3RTZWxlY3RGZWF0dXJlU2V0KCkKLXsKLSAgICBp
ZiAoc2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9zaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCA9IHRydWU7Ci0KLSAgICBpZiAoU2hh
ZG93Um9vdCogcGFyZW50U2hhZG93Um9vdCA9IGhvc3QoKS0+Y29udGFpbmluZ1NoYWRvd1Jvb3Qo
KSkgewotICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogcGFyZW50RWxlbWVudFNoYWRvdyA9IHBh
cmVudFNoYWRvd1Jvb3QtPm93bmVyKCkpCi0gICAgICAgICAgICBwYXJlbnRFbGVtZW50U2hhZG93
LT5zZXRTaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCgpOwotICAgIH0KLX0KLQotdm9pZCBF
bGVtZW50U2hhZG93OjplbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCkKLXsKLSAgICBp
ZiAoIW1fc2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1fc2VsZWN0RmVhdHVyZXMuY2xlYXIoKTsKLSAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3Qg
PSBvbGRlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT55b3VuZ2VyU2hhZG93Um9v
dCgpKQotICAgICAgICBjb2xsZWN0U2VsZWN0RmVhdHVyZVNldEZyb20ocm9vdCk7Ci0gICAgbV9z
aG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCA9IGZhbHNlOwotfQotCi12b2lkIEVsZW1lbnRT
aGFkb3c6OmNvbGxlY3RTZWxlY3RGZWF0dXJlU2V0RnJvbShTaGFkb3dSb290KiByb290KQotewot
ICAgIGlmIChTY29wZUNvbnRlbnREaXN0cmlidXRpb246Omhhc0VsZW1lbnRTaGFkb3cocm9vdCkp
IHsKLSAgICAgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmly
c3RXaXRoaW4ocm9vdCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0
KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRv
dyA9IGVsZW1lbnQtPnNoYWRvdygpKSB7Ci0gICAgICAgICAgICAgICAgZWxlbWVudFNoYWRvdy0+
ZW5zdXJlU2VsZWN0RmVhdHVyZVNldENvbGxlY3RlZCgpOwotICAgICAgICAgICAgICAgIG1fc2Vs
ZWN0RmVhdHVyZXMuYWRkKGVsZW1lbnRTaGFkb3ctPm1fc2VsZWN0RmVhdHVyZXMpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKFNjb3BlQ29udGVudERpc3RyaWJ1
dGlvbjo6aGFzQ29udGVudEVsZW1lbnQocm9vdCkpIHsKLSAgICAgICAgZm9yIChFbGVtZW50KiBl
bGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4ocm9vdCk7IGVsZW1lbnQ7IGVs
ZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBp
ZiAoaXNIVE1MQ29udGVudEVsZW1lbnQoZWxlbWVudCkpIHsKLSAgICAgICAgICAgICAgICBjb25z
dCBDU1NTZWxlY3Rvckxpc3QmIGxpc3QgPSB0b0hUTUxDb250ZW50RWxlbWVudChlbGVtZW50KS0+
c2VsZWN0b3JMaXN0KCk7Ci0gICAgICAgICAgICAgICAgZm9yIChDU1NTZWxlY3Rvciogc2VsZWN0
b3IgPSBsaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IGxpc3QubmV4dChzZWxlY3Rv
cikpCi0gICAgICAgICAgICAgICAgICAgIG1fc2VsZWN0RmVhdHVyZXMuY29sbGVjdEZlYXR1cmVz
RnJvbVNlbGVjdG9yKHNlbGVjdG9yKTsgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotfQotCiB2b2lkIEVsZW1lbnRTaGFkb3c6OnJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAg
TWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9y
eVR5cGVzOjpET00pOwpAQCAtMjY1LDExICsxNzUsNCBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OnJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
CiAgICAgaW5mby5hZGRNZW1iZXIobV9kaXN0cmlidXRvcik7CiB9CiAKLXZvaWQgRWxlbWVudFNo
YWRvdzo6ZGlkQWZmZWN0U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2sgbWFzaykKLXsKLSAg
ICBlbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCk7Ci0gICAgaWYgKHNlbGVjdFJ1bGVG
ZWF0dXJlU2V0KCkuaGFzU2VsZWN0b3JGb3IobWFzaykpCi0gICAgICAgIGludmFsaWRhdGVEaXN0
cmlidXRpb24oKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50U2hhZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRv
dy5oCmluZGV4IDU5NGM5ZTY2MWM4MDhkYmJlMzgyNjAyYzYwMjM2YTMwYzc1MDZlOTcuLjkzOWU5
YjY5ZjljNjY1N2RhYWI1OGYwMjNkZTE4ZjkwNTAxMDY3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRTaGFkb3cuaApAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1
dG9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIlNlbGVjdFJ1bGVG
ZWF0dXJlU2V0LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgPHd0Zi9Eb3Vi
bHlMaW5rZWRMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC01Miw2ICs1
MSw3IEBAIHB1YmxpYzoKICAgICBFbGVtZW50KiBob3N0KCkgY29uc3Q7CiAgICAgU2hhZG93Um9v
dCogeW91bmdlc3RTaGFkb3dSb290KCkgY29uc3Q7CiAgICAgU2hhZG93Um9vdCogb2xkZXN0U2hh
ZG93Um9vdCgpIGNvbnN0OworICAgIEVsZW1lbnRTaGFkb3cqIGNvbnRhaW5pbmdTaGFkb3coKSBj
b25zdDsKIAogICAgIHZvaWQgcmVtb3ZlQWxsU2hhZG93Um9vdHMoKTsKICAgICB2b2lkIGFkZFNo
YWRvd1Jvb3QoRWxlbWVudCogc2hhZG93SG9zdCwgUGFzc1JlZlB0cjxTaGFkb3dSb290PiwgU2hh
ZG93Um9vdDo6U2hhZG93Um9vdFR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTYzLDMxICs2Mywx
OSBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgdm9pZCByZWNh
bGNTdHlsZShOb2RlOjpTdHlsZUNoYW5nZSk7CiAKLSAgICB2b2lkIHNldFZhbGlkaXR5VW5kZXRl
cm1pbmVkKCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7Ci0gICAgdm9pZCBl
bnN1cmVEaXN0cmlidXRpb24oKTsKLSAgICB2b2lkIGVuc3VyZURpc3RyaWJ1dGlvbkZyb21Eb2N1
bWVudCgpOworICAgIHZvaWQgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpIHsgbV9kaXN0cmlidXRv
ci5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKGhvc3QoKSk7IH0KKyAgICB2b2lkIGVuc3VyZURpc3Ry
aWJ1dGlvbigpIHsgbV9kaXN0cmlidXRvci5lbnN1cmVEaXN0cmlidXRpb24oaG9zdCgpKTsgfQor
ICAgIHZvaWQgZGlkQWZmZWN0U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2sgbWFzaykgeyBt
X2Rpc3RyaWJ1dG9yLmRpZEFmZmVjdFNlbGVjdG9yKGhvc3QoKSwgbWFzayk7IH0KKyAgICB2b2lk
IHdpbGxBZmZlY3RTZWxlY3RvcigpIHsgbV9kaXN0cmlidXRvci53aWxsQWZmZWN0U2VsZWN0b3Io
aG9zdCgpKTsgfQogCiAgICAgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0cmlidXRvcigpOwogICAg
IGNvbnN0IENvbnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKSBjb25zdDsKIAotICAgIHZv
aWQgZGlkQWZmZWN0U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2spOwotICAgIGJvb2wgc2hv
dWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENvbGxl
Y3RTZWxlY3RGZWF0dXJlU2V0OyB9Ci0gICAgdm9pZCBzZXRTaG91bGRDb2xsZWN0U2VsZWN0RmVh
dHVyZVNldCgpOwotICAgIHZvaWQgZW5zdXJlU2VsZWN0RmVhdHVyZVNldENvbGxlY3RlZCgpOwot
Ci0gICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIHNlbGVjdFJ1bGVGZWF0dXJlU2V0KCkg
Y29uc3Q7Ci0KICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBj
b25zdDsKIHByaXZhdGU6Ci0gICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKEVsZW1lbnQq
IGhvc3QpOwotCi0gICAgdm9pZCBjb2xsZWN0U2VsZWN0RmVhdHVyZVNldEZyb20oU2hhZG93Um9v
dCopOwogCiAgICAgRG91Ymx5TGlua2VkTGlzdDxTaGFkb3dSb290PiBtX3NoYWRvd1Jvb3RzOwog
ICAgIENvbnRlbnREaXN0cmlidXRvciBtX2Rpc3RyaWJ1dG9yOwotICAgIFNlbGVjdFJ1bGVGZWF0
dXJlU2V0IG1fc2VsZWN0RmVhdHVyZXM7Ci0gICAgYm9vbCBtX3Nob3VsZENvbGxlY3RTZWxlY3RG
ZWF0dXJlU2V0IDogMTsKIH07CiAKIGlubGluZSBTaGFkb3dSb290KiBFbGVtZW50U2hhZG93Ojp5
b3VuZ2VzdFNoYWRvd1Jvb3QoKSBjb25zdApAQCAtMTE2LDEyICsxMDQsNiBAQCBpbmxpbmUgRWxl
bWVudCogRWxlbWVudFNoYWRvdzo6aG9zdCgpIGNvbnN0CiAgICAgcmV0dXJuIHlvdW5nZXN0U2hh
ZG93Um9vdCgpLT5ob3N0KCk7CiB9CiAKLWlubGluZSBjb25zdCBTZWxlY3RSdWxlRmVhdHVyZVNl
dCYgRWxlbWVudFNoYWRvdzo6c2VsZWN0UnVsZUZlYXR1cmVTZXQoKSBjb25zdAotewotICAgIEFT
U0VSVCghbV9zaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCk7Ci0gICAgcmV0dXJuIG1fc2Vs
ZWN0RmVhdHVyZXM7Ci19Ci0KIGlubGluZSBTaGFkb3dSb290KiBOb2RlOjp5b3VuZ2VzdFNoYWRv
d1Jvb3QoKSBjb25zdAogewogICAgIGlmICghdGhpcy0+aXNFbGVtZW50Tm9kZSgpKQpAQCAtMTMx
LDYgKzExMywxNCBAQCBpbmxpbmUgU2hhZG93Um9vdCogTm9kZTo6eW91bmdlc3RTaGFkb3dSb290
KCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAoraW5saW5lIEVsZW1lbnRTaGFkb3cqIEVsZW1l
bnRTaGFkb3c6OmNvbnRhaW5pbmdTaGFkb3coKSBjb25zdAoreworICAgIFNoYWRvd1Jvb3QqIHBh
cmVudFJvb3QgPSBob3N0KCktPmNvbnRhaW5pbmdTaGFkb3dSb290KCk7CisgICAgaWYgKCFwYXJl
bnRSb290KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcGFyZW50Um9vdC0+b3duZXIo
KTsKK30KKwogY2xhc3MgU2hhZG93Um9vdFZlY3RvciA6IHB1YmxpYyBWZWN0b3I8UmVmUHRyPFNo
YWRvd1Jvb3Q+ID4gewogcHVibGljOgogICAgIGV4cGxpY2l0IFNoYWRvd1Jvb3RWZWN0b3IoRWxl
bWVudFNoYWRvdyogdHJlZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0NvbnRlbnREaXN0cmlidXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250
ZW50RGlzdHJpYnV0b3IuY3BwCmluZGV4IDc3YzRkM2IxNmExZDA4MDAyZGY1Y2M1NjVmNTBlNDU2
Y2FkMTA3M2EuLjBkM2RiZWEwYjhiN2NiMTY4MjIyY2JhZjgyZTA5NjgyNzNhYmI3YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcApA
QCAtMTEwLDcgKzExMCw3IEBAIGNvbnN0IFZlY3RvcjxSZWZQdHI8SW5zZXJ0aW9uUG9pbnQ+ID4m
IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6ZW5zdXJlSW5zZXJ0aW9uCiAgICAgcmV0dXJuIG1f
aW5zZXJ0aW9uUG9pbnRMaXN0OwogfQogCi12b2lkIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6
cmVnaXN0ZXJJbnNlcnRpb25Qb2ludChTaGFkb3dSb290KiBzY29wZSwgSW5zZXJ0aW9uUG9pbnQq
IHBvaW50KQordm9pZCBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OnJlZ2lzdGVySW5zZXJ0aW9u
UG9pbnQoSW5zZXJ0aW9uUG9pbnQqIHBvaW50KQogewogICAgIHN3aXRjaCAocG9pbnQtPmluc2Vy
dGlvblBvaW50VHlwZSgpKSB7CiAgICAgY2FzZSBJbnNlcnRpb25Qb2ludDo6U2hhZG93SW5zZXJ0
aW9uUG9pbnQ6CkBAIC0xMTgsMTQgKzExOCwxMyBAQCB2b2lkIFNjb3BlQ29udGVudERpc3RyaWJ1
dGlvbjo6cmVnaXN0ZXJJbnNlcnRpb25Qb2ludChTaGFkb3dSb290KiBzY29wZSwgSW5zZXJ0aQog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEluc2VydGlvblBvaW50OjpDb250ZW50SW5zZXJ0aW9u
UG9pbnQ6CiAgICAgICAgICsrbV9udW1iZXJPZkNvbnRlbnRFbGVtZW50Q2hpbGRyZW47Ci0gICAg
ICAgIHNjb3BlLT5vd25lcigpLT5zZXRTaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCgpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpbnZhbGlkYXRlSW5zZXJ0aW9uUG9pbnRMaXN0
KCk7CiB9CiAKLXZvaWQgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjp1bnJlZ2lzdGVySW5zZXJ0
aW9uUG9pbnQoU2hhZG93Um9vdCogc2NvcGUsIEluc2VydGlvblBvaW50KiBwb2ludCkKK3ZvaWQg
U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjp1bnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQoSW5zZXJ0
aW9uUG9pbnQqIHBvaW50KQogewogICAgIHN3aXRjaCAocG9pbnQtPmluc2VydGlvblBvaW50VHlw
ZSgpKSB7CiAgICAgY2FzZSBJbnNlcnRpb25Qb2ludDo6U2hhZG93SW5zZXJ0aW9uUG9pbnQ6CkBA
IC0xMzUsOCArMTM0LDYgQEAgdm9pZCBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OnVucmVnaXN0
ZXJJbnNlcnRpb25Qb2ludChTaGFkb3dSb290KiBzY29wZSwgSW5zZXIKICAgICBjYXNlIEluc2Vy
dGlvblBvaW50OjpDb250ZW50SW5zZXJ0aW9uUG9pbnQ6CiAgICAgICAgIEFTU0VSVChtX251bWJl
ck9mQ29udGVudEVsZW1lbnRDaGlsZHJlbiA+IDApOwogICAgICAgICAtLW1fbnVtYmVyT2ZDb250
ZW50RWxlbWVudENoaWxkcmVuOwotICAgICAgICBpZiAoc2NvcGUtPm93bmVyKCkpCi0gICAgICAg
ICAgICBzY29wZS0+b3duZXIoKS0+c2V0U2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0xODEsNyArMTc4LDggQEAgSW5zZXJ0aW9uUG9p
bnQqIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyhjb25zdCBTaGFkb3dSb290
KiBob2xkZXIpCiB9CiAKIENvbnRlbnREaXN0cmlidXRvcjo6Q29udGVudERpc3RyaWJ1dG9yKCkK
LSAgICA6IG1fdmFsaWRpdHkoVW5kZXRlcm1pbmVkKQorICAgIDogbV9uZWVkc1NlbGVjdEZlYXR1
cmVTZXQoZmFsc2UpCisgICAgLCBtX3ZhbGlkaXR5KFVuZGV0ZXJtaW5lZCkKIHsKIH0KIApAQCAt
Mjg3LDEyICsyODUsNiBAQCBib29sIENvbnRlbnREaXN0cmlidXRvcjo6aW52YWxpZGF0ZShFbGVt
ZW50KiBob3N0KQogICAgIHJldHVybiBuZWVkc1JlYXR0YWNoOwogfQogCi12b2lkIENvbnRlbnRE
aXN0cmlidXRvcjo6ZmluaXNoSW5pdmFsaWRhdGlvbigpCi17Ci0gICAgQVNTRVJUKG1fdmFsaWRp
dHkgPT0gSW52YWxpZGF0aW5nKTsKLSAgICBtX3ZhbGlkaXR5ID0gSW52YWxpZGF0ZWQ7Ci19Ci0K
IHZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmlidXRlU2VsZWN0aW9uc1RvKEluc2VydGlv
blBvaW50KiBpbnNlcnRpb25Qb2ludCwgY29uc3QgQ29udGVudERpc3RyaWJ1dGlvbiYgcG9vbCwg
VmVjdG9yPGJvb2w+JiBkaXN0cmlidXRlZCkKIHsKICAgICBDb250ZW50RGlzdHJpYnV0aW9uIGRp
c3RyaWJ1dGlvbjsKQEAgLTM0MiwxMSArMzM0LDk4IEBAIHZvaWQgQ29udGVudERpc3RyaWJ1dG9y
OjpkaXN0cmlidXRlTm9kZUNoaWxkcmVuVG8oSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50
CiAgICAgaW5zZXJ0aW9uUG9pbnQtPnNldERpc3RyaWJ1dGlvbihkaXN0cmlidXRpb24pOwogfQog
Ci12b2lkIENvbnRlbnREaXN0cmlidXRvcjo6aW52YWxpZGF0ZURpc3RyaWJ1dGlvbkluKENvbnRl
bnREaXN0cmlidXRpb24qIGxpc3QpCit2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlz
dHJpYnV0aW9uKEVsZW1lbnQqIGhvc3QpCit7CisgICAgaWYgKCFuZWVkc0Rpc3RyaWJ1dGlvbigp
KQorICAgICAgICByZXR1cm47CisgICAgZGlzdHJpYnV0ZShob3N0KTsKK30KKwordm9pZCBDb250
ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1dGlvbkZyb21Eb2N1bWVudChFbGVtZW50KiBz
b3VyY2UpCit7CisgICAgQ29udGFpbmVyTm9kZSogbWF5U2hhZG93ID0gc291cmNlLT50cmVlU2Nv
cGUoKS0+cm9vdE5vZGUoKTsKKyAgICBpZiAoIW1heVNoYWRvdy0+aXNTaGFkb3dSb290KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxFbGVtZW50KiwgOD4gaG9zdHM7CisgICAgZm9y
IChFbGVtZW50KiBjdXJyZW50ID0gdG9TaGFkb3dSb290KG1heVNoYWRvdyktPmhvc3QoKTsgY3Vy
cmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnNoYWRvd0hvc3QoKSkKKyAgICAgICAgaG9zdHMuYXBw
ZW5kKGN1cnJlbnQpOworCisgICAgZm9yIChzaXplX3QgaSA9IGhvc3RzLnNpemUoKTsgaSA+IDA7
IC0taSkKKyAgICAgICAgaG9zdHNbaSAtIDFdLT5zaGFkb3coKS0+ZW5zdXJlRGlzdHJpYnV0aW9u
KCk7Cit9CisKKwordm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmludmFsaWRhdGVEaXN0cmlidXRp
b24oRWxlbWVudCogaG9zdCkKK3sKKyAgICBib29sIGRpZE5lZWRJbnZhbGlkYXRpb24gPSBuZWVk
c0ludmFsaWRhdGlvbigpOworICAgIGJvb2wgbmVlZHNSZWF0dGFjaCA9IGRpZE5lZWRJbnZhbGlk
YXRpb24gPyBpbnZhbGlkYXRlKGhvc3QpIDogZmFsc2U7CisKKyAgICBpZiAobmVlZHNSZWF0dGFj
aCAmJiBob3N0LT5hdHRhY2hlZCgpKSB7CisgICAgICAgIGZvciAoTm9kZSogbiA9IGhvc3QtPmZp
cnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpCisgICAgICAgICAgICBuLT5sYXp5
UmVhdHRhY2goKTsKKyAgICAgICAgaG9zdC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgIH0K
KworICAgIGlmIChkaWROZWVkSW52YWxpZGF0aW9uKSB7CisgICAgICAgIEFTU0VSVChtX3ZhbGlk
aXR5ID09IEludmFsaWRhdGluZyk7CisgICAgICAgIG1fdmFsaWRpdHkgPSBJbnZhbGlkYXRlZDsK
KyAgICB9Cit9CisKK2NvbnN0IFNlbGVjdFJ1bGVGZWF0dXJlU2V0JiBDb250ZW50RGlzdHJpYnV0
b3I6OmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoRWxlbWVudFNoYWRvdyogc2hhZG93KQoreworICAg
IGlmICghbV9uZWVkc1NlbGVjdEZlYXR1cmVTZXQpCisgICAgICAgIHJldHVybiBtX3NlbGVjdEZl
YXR1cmVzOworCisgICAgbV9zZWxlY3RGZWF0dXJlcy5jbGVhcigpOworICAgIGZvciAoU2hhZG93
Um9vdCogcm9vdCA9IHNoYWRvdy0+b2xkZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9v
dC0+eW91bmdlclNoYWRvd1Jvb3QoKSkKKyAgICAgICAgY29sbGVjdFNlbGVjdEZlYXR1cmVTZXRG
cm9tKHJvb3QpOworICAgIG1fbmVlZHNTZWxlY3RGZWF0dXJlU2V0ID0gZmFsc2U7CisgICAgcmV0
dXJuIG1fc2VsZWN0RmVhdHVyZXM7Cit9CisKK3ZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpjb2xs
ZWN0U2VsZWN0RmVhdHVyZVNldEZyb20oU2hhZG93Um9vdCogcm9vdCkKK3sKKyAgICBpZiAoU2Nv
cGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNFbGVtZW50U2hhZG93KHJvb3QpKSB7CisgICAgICAg
IGZvciAoRWxlbWVudCogZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKHJv
b3QpOyBlbGVtZW50OyBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dChlbGVtZW50KSkg
eworICAgICAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFkb3cgPSBlbGVtZW50
LT5zaGFkb3coKSkKKyAgICAgICAgICAgICAgICBtX3NlbGVjdEZlYXR1cmVzLmFkZChlbGVtZW50
U2hhZG93LT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoZWxlbWVudFNoYWRv
dykpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKFNjb3BlQ29udGVudERpc3RyaWJ1dGlv
bjo6aGFzQ29udGVudEVsZW1lbnQocm9vdCkpIHsKKyAgICAgICAgZm9yIChFbGVtZW50KiBlbGVt
ZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4ocm9vdCk7IGVsZW1lbnQ7IGVsZW1l
bnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQpKSB7CisgICAgICAgICAgICBpZiAo
aXNIVE1MQ29udGVudEVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBD
U1NTZWxlY3Rvckxpc3QmIGxpc3QgPSB0b0hUTUxDb250ZW50RWxlbWVudChlbGVtZW50KS0+c2Vs
ZWN0b3JMaXN0KCk7CisgICAgICAgICAgICAgICAgZm9yIChDU1NTZWxlY3Rvciogc2VsZWN0b3Ig
PSBsaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IGxpc3QubmV4dChzZWxlY3Rvcikp
CisgICAgICAgICAgICAgICAgICAgIG1fc2VsZWN0RmVhdHVyZXMuY29sbGVjdEZlYXR1cmVzRnJv
bVNlbGVjdG9yKHNlbGVjdG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpZEFmZmVjdFNlbGVjdG9yKEVsZW1lbnQqIGhv
c3QsIEFmZmVjdGVkU2VsZWN0b3JNYXNrIG1hc2spCit7CisgICAgaWYgKGVuc3VyZVNlbGVjdEZl
YXR1cmVTZXQoaG9zdC0+c2hhZG93KCkpLmhhc1NlbGVjdG9yRm9yKG1hc2spKQorICAgICAgICBp
bnZhbGlkYXRlRGlzdHJpYnV0aW9uKGhvc3QpOworfQorCit2b2lkIENvbnRlbnREaXN0cmlidXRv
cjo6d2lsbEFmZmVjdFNlbGVjdG9yKEVsZW1lbnQqIGhvc3QpCit7CisgICAgZm9yIChFbGVtZW50
U2hhZG93KiBzaGFkb3cgPSBob3N0LT5zaGFkb3coKTsgc2hhZG93OyBzaGFkb3cgPSBzaGFkb3ct
PmNvbnRhaW5pbmdTaGFkb3coKSkgeworICAgICAgICBpZiAoc2hhZG93LT5kaXN0cmlidXRvcigp
Lm5lZWRzU2VsZWN0RmVhdHVyZVNldCgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHNo
YWRvdy0+ZGlzdHJpYnV0b3IoKS5zZXROZWVkc1NlbGVjdEZlYXR1cmVTZXQoKTsKKyAgICB9CisK
KyAgICBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKGhvc3QpOworfQorCit2b2lkIENvbnRlbnREaXN0
cmlidXRvcjo6ZGlkU2hhZG93Qm91bmRhcnlDaGFuZ2UoRWxlbWVudCogaG9zdCkKIHsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3QtPnNpemUoKTsgKytpKQotICAgICAgICBtX25vZGVU
b0luc2VydGlvblBvaW50LnJlbW92ZShsaXN0LT5hdChpKS5nZXQoKSk7Ci0gICAgbGlzdC0+Y2xl
YXIoKTsKKyAgICBzZXRWYWxpZGl0eShVbmRldGVybWluZWQpOworICAgIGludmFsaWRhdGVEaXN0
cmlidXRpb24oaG9zdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
Q29udGVudERpc3RyaWJ1dG9yLmgKaW5kZXggZjk4MzgzN2YxMDY3M2FhZTRmODRiMzJlMDAwN2Qy
ZGI0NjdlYTIzNy4uNDYwZDQxMzVkOTkwZThmZjY5Njc1N2Q1NjJhMGIwYjEzZWY3MzY4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKQEAg
LTMxLDYgKzMxLDcgQEAKICNpZm5kZWYgQ29udGVudERpc3RyaWJ1dG9yX2gKICNkZWZpbmUgQ29u
dGVudERpc3RyaWJ1dG9yX2gKIAorI2luY2x1ZGUgIlNlbGVjdFJ1bGVGZWF0dXJlU2V0LmgiCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC03Nyw4ICs3OCw4IEBAIHB1YmxpYzoKICAgICBJbnNl
cnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvKCkgY29uc3QgeyByZXR1cm4gbV9p
bnNlcnRpb25Qb2ludEFzc2lnbmVkVG87IH0KICAgICB2b2lkIHNldEluc2VydGlvblBvaW50QXNz
aWduZWRUbyhJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQpIHsgbV9pbnNlcnRpb25Qb2lu
dEFzc2lnbmVkVG8gPSBpbnNlcnRpb25Qb2ludDsgfQogCi0gICAgdm9pZCByZWdpc3Rlckluc2Vy
dGlvblBvaW50KFNoYWRvd1Jvb3QqLCBJbnNlcnRpb25Qb2ludCopOwotICAgIHZvaWQgdW5yZWdp
c3Rlckluc2VydGlvblBvaW50KFNoYWRvd1Jvb3QqLCBJbnNlcnRpb25Qb2ludCopOworICAgIHZv
aWQgcmVnaXN0ZXJJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCopOworICAgIHZvaWQgdW5y
ZWdpc3Rlckluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50Kik7CiAgICAgYm9vbCBoYXNTaGFk
b3dFbGVtZW50Q2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX251bWJlck9mU2hhZG93RWxlbWVu
dENoaWxkcmVuID4gMDsgfQogICAgIGJvb2wgaGFzQ29udGVudEVsZW1lbnRDaGlsZHJlbigpIGNv
bnN0IHsgcmV0dXJuIG1fbnVtYmVyT2ZDb250ZW50RWxlbWVudENoaWxkcmVuID4gMDsgfQogCkBA
IC0xMjIsMjMgKzEyMywzNSBAQCBwdWJsaWM6CiAgICAgfkNvbnRlbnREaXN0cmlidXRvcigpOwog
CiAgICAgSW5zZXJ0aW9uUG9pbnQqIGZpbmRJbnNlcnRpb25Qb2ludEZvcihjb25zdCBOb2RlKiBr
ZXkpIGNvbnN0OwotCi0gICAgdm9pZCBzZXRWYWxpZGl0eShWYWxpZGl0eSB2YWxpZGl0eSkgeyBt
X3ZhbGlkaXR5ID0gdmFsaWRpdHk7IH0KLQotICAgIHZvaWQgZGlzdHJpYnV0ZShFbGVtZW50KiBo
b3N0KTsKLSAgICBib29sIGludmFsaWRhdGUoRWxlbWVudCogaG9zdCk7Ci0gICAgdm9pZCBmaW5p
c2hJbml2YWxpZGF0aW9uKCk7Ci0gICAgYm9vbCBuZWVkc0Rpc3RyaWJ1dGlvbigpIGNvbnN0Owot
ICAgIGJvb2wgbmVlZHNJbnZhbGlkYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3ZhbGlkaXR5ICE9
IEludmFsaWRhdGVkOyB9CisgICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIGVuc3VyZVNl
bGVjdEZlYXR1cmVTZXQoRWxlbWVudFNoYWRvdyopOwogCiAgICAgdm9pZCBkaXN0cmlidXRlU2Vs
ZWN0aW9uc1RvKEluc2VydGlvblBvaW50KiwgY29uc3QgQ29udGVudERpc3RyaWJ1dGlvbiYgcG9v
bCwgVmVjdG9yPGJvb2w+JiBkaXN0cmlidXRlZCk7CiAgICAgdm9pZCBkaXN0cmlidXRlTm9kZUNo
aWxkcmVuVG8oSW5zZXJ0aW9uUG9pbnQqLCBDb250YWluZXJOb2RlKik7Ci0gICAgdm9pZCBpbnZh
bGlkYXRlRGlzdHJpYnV0aW9uSW4oQ29udGVudERpc3RyaWJ1dGlvbiopOworCisgICAgdm9pZCBl
bnN1cmVEaXN0cmlidXRpb24oRWxlbWVudCogaG9zdCk7CisgICAgdm9pZCBpbnZhbGlkYXRlRGlz
dHJpYnV0aW9uKEVsZW1lbnQqIGhvc3QpOworICAgIHZvaWQgZGlkU2hhZG93Qm91bmRhcnlDaGFu
Z2UoRWxlbWVudCogaG9zdCk7CisgICAgdm9pZCBkaWRBZmZlY3RTZWxlY3RvcihFbGVtZW50KiBo
b3N0LCBBZmZlY3RlZFNlbGVjdG9yTWFzayk7CisgICAgdm9pZCB3aWxsQWZmZWN0U2VsZWN0b3Io
RWxlbWVudCogaG9zdCk7CisKKyAgICBzdGF0aWMgdm9pZCBlbnN1cmVEaXN0cmlidXRpb25Gcm9t
RG9jdW1lbnQoRWxlbWVudCogc291cmNlKTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGRpc3RyaWJ1
dGUoRWxlbWVudCogaG9zdCk7CisgICAgYm9vbCBpbnZhbGlkYXRlKEVsZW1lbnQqIGhvc3QpOwog
ICAgIHZvaWQgcG9wdWxhdGUoTm9kZSosIENvbnRlbnREaXN0cmlidXRpb24mKTsKIAorICAgIHZv
aWQgY29sbGVjdFNlbGVjdEZlYXR1cmVTZXRGcm9tKFNoYWRvd1Jvb3QqKTsKKyAgICBib29sIG5l
ZWRzU2VsZWN0RmVhdHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNTZWxlY3RGZWF0dXJl
U2V0OyB9CisgICAgdm9pZCBzZXROZWVkc1NlbGVjdEZlYXR1cmVTZXQoKSB7IG1fbmVlZHNTZWxl
Y3RGZWF0dXJlU2V0ID0gdHJ1ZTsgfQorCisgICAgdm9pZCBzZXRWYWxpZGl0eShWYWxpZGl0eSB2
YWxpZGl0eSkgeyBtX3ZhbGlkaXR5ID0gdmFsaWRpdHk7IH0KKyAgICBib29sIG5lZWRzRGlzdHJp
YnV0aW9uKCkgY29uc3Q7CisgICAgYm9vbCBuZWVkc0ludmFsaWRhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsaWRpdHkgIT0gSW52YWxpZGF0ZWQ7IH0KKwogICAgIEhhc2hNYXA8Y29uc3QgTm9k
ZSosIFJlZlB0cjxJbnNlcnRpb25Qb2ludD4gPiBtX25vZGVUb0luc2VydGlvblBvaW50OworICAg
IFNlbGVjdFJ1bGVGZWF0dXJlU2V0IG1fc2VsZWN0RmVhdHVyZXM7CisgICAgYm9vbCBtX25lZWRz
U2VsZWN0RmVhdHVyZVNldCA6IDE7CiAgICAgdW5zaWduZWQgbV92YWxpZGl0eSA6IDI7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNw
cAppbmRleCA5MGM3ODZhZGE4OTNkNzUzY2JlNjdkODRhMTg5NGQ5NjU5OWMzZDA0Li4zN2Q1NzBi
NWJhNjEyMDY5OTc2ZjE4ZmU3Y2ZiMzlkMTUwMmE0ZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAKQEAgLTk5LDEwICs5OSw4IEBA
IHZvaWQgSFRNTENvbnRlbnRFbGVtZW50OjplbnN1cmVTZWxlY3RQYXJzZWQoKQogdm9pZCBIVE1M
Q29udGVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gc2VsZWN0QXR0
cikgewotICAgICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IGNvbnRhaW5pbmdTaGFkb3dSb290
KCkpIHsKLSAgICAgICAgICAgIHJvb3QtPm93bmVyKCktPnNldFNob3VsZENvbGxlY3RTZWxlY3RG
ZWF0dXJlU2V0KCk7Ci0gICAgICAgICAgICByb290LT5vd25lcigpLT5pbnZhbGlkYXRlRGlzdHJp
YnV0aW9uKCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBjb250
YWluaW5nU2hhZG93Um9vdCgpKQorICAgICAgICAgICAgcm9vdC0+b3duZXIoKS0+d2lsbEFmZmVj
dFNlbGVjdG9yKCk7CiAgICAgICAgIG1fc2hvdWxkUGFyc2VTZWxlY3Rvckxpc3QgPSB0cnVlOwog
ICAgIH0gZWxzZQogICAgICAgICBJbnNlcnRpb25Qb2ludDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwg
dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRl
bnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1l
bnQuaAppbmRleCBhNmRjNWY0Y2JiNDE1MDdmMWI1NGIwZjYwOThkYzNiOTFhYjA5MWIzLi5hMzE4
Y2Y3OGJlYzY5M2RhMTc4OGJlMmYxYjc0NGQ1ZjQ1ZTFjNTJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaApAQCAtNTAsNiArNTAsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzU2VsZWN0VmFsaWQoKTsKICAgICB2aXJ0dWFsIGNv
bnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KCk7CiAgICAgdmlydHVhbCBUeXBlIGlu
c2VydGlvblBvaW50VHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIENvbnRlbnRJbnNlcnRp
b25Qb2ludDsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5BZmZlY3RTZWxlY3RvcigpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogcHJvdGVjdGVkOgogICAgIEhUTUxDb250ZW50RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcAppbmRleCAyMmMwNzY1NmE1NTdl
NDdjOTNmZWI1M2FiM2UzNTUyMjA3YWY4ZTljLi4xNzQ3ZWNkMTcyOTA5Y2YyMWVlY2Y2MjNiNjc5
NzMwYjNmZDU1MGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1M
U2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNo
YWRvd0VsZW1lbnQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIFNoYWRvd1Jvb3QqIEhUTUxTaGFkb3dF
bGVtZW50OjpvbGRlclNoYWRvd1Jvb3QoKQogICAgIGlmICghdHJlZVNjb3BlKCktPnJvb3ROb2Rl
KCktPmlzU2hhZG93Um9vdCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHRvU2hhZG93Um9v
dCh0cmVlU2NvcGUoKS0+cm9vdE5vZGUoKSktPm93bmVyKCktPmVuc3VyZURpc3RyaWJ1dGlvbkZy
b21Eb2N1bWVudCgpOworICAgIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9u
RnJvbURvY3VtZW50KHRoaXMpOwogCiAgICAgU2hhZG93Um9vdCogb2xkZXIgPSB0b1NoYWRvd1Jv
b3QodHJlZVNjb3BlKCktPnJvb3ROb2RlKCkpLT5vbGRlclNoYWRvd1Jvb3QoKTsKICAgICBpZiAo
IW9sZGVyIHx8IG9sZGVyLT50eXBlKCkgIT0gU2hhZG93Um9vdDo6QXV0aG9yU2hhZG93Um9vdCB8
fCBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OmFzc2lnbmVkVG8ob2xkZXIpICE9IHRoaXMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKaW5kZXggNDRl
MzRiOTUzNDU3NGVjMDY4ZGVlZDJhZmQ4MGE2OTY2NDdiYWM1OS4uNWFjNTIwZDU1ZWQzOTBmZTJm
Yjk3ZjEwMDhiYWM5MzY2OWYyNTg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0luc2VydGlvblBvaW50LmNwcApAQCAtOTksMTAgKzk5LDcgQEAgYm9vbCBJbnNlcnRpb25Qb2lu
dDo6aXNBY3RpdmUoKSBjb25zdAogCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnNlcnRpb25Qb2lu
dDo6Z2V0RGlzdHJpYnV0ZWROb2RlcygpIGNvbnN0CiB7Ci0gICAgQ29udGFpbmVyTm9kZSogcm9v
dE5vZGUgPSB0cmVlU2NvcGUoKS0+cm9vdE5vZGUoKTsKLSAgICBpZiAocm9vdE5vZGUtPmlzU2hh
ZG93Um9vdCgpKQotICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogcm9vdE93bmVyID0gdG9TaGFk
b3dSb290KHJvb3ROb2RlKS0+b3duZXIoKSkKLSAgICAgICAgICAgIHJvb3RPd25lci0+ZW5zdXJl
RGlzdHJpYnV0aW9uRnJvbURvY3VtZW50KCk7CisgICAgQ29udGVudERpc3RyaWJ1dG9yOjplbnN1
cmVEaXN0cmlidXRpb25Gcm9tRG9jdW1lbnQoY29uc3RfY2FzdDxJbnNlcnRpb25Qb2ludCo+KHRo
aXMpKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBub2RlczsKIApAQCAtMTMxLDExICsx
MjgsMTIgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBJbnNlcnRpb25Qb2lu
dDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGkKIAogICAgIGlmIChTaGFkb3dSb290KiBy
b290ID0gY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkgewogICAgICAgICBpZiAoRWxlbWVudFNoYWRv
dyogcm9vdE93bmVyID0gcm9vdC0+b3duZXIoKSkgewotICAgICAgICAgICAgcm9vdE93bmVyLT5z
ZXRWYWxpZGl0eVVuZGV0ZXJtaW5lZCgpOwotICAgICAgICAgICAgcm9vdE93bmVyLT5pbnZhbGlk
YXRlRGlzdHJpYnV0aW9uKCk7CisgICAgICAgICAgICByb290T3duZXItPmRpc3RyaWJ1dG9yKCku
ZGlkU2hhZG93Qm91bmRhcnlDaGFuZ2Uocm9vdC0+aG9zdCgpKTsKICAgICAgICAgICAgIGlmIChp
c0FjdGl2ZSgpICYmICFtX3JlZ2lzdGVyZWRXaXRoU2hhZG93Um9vdCAmJiBpbnNlcnRpb25Qb2lu
dC0+dHJlZVNjb3BlKCktPnJvb3ROb2RlKCkgPT0gcm9vdCkgewogICAgICAgICAgICAgICAgIG1f
cmVnaXN0ZXJlZFdpdGhTaGFkb3dSb290ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByb290LT5l
bnN1cmVTY29wZURpc3RyaWJ1dGlvbigpLT5yZWdpc3Rlckluc2VydGlvblBvaW50KHJvb3QsIHRo
aXMpOworICAgICAgICAgICAgICAgIHJvb3QtPmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCktPnJl
Z2lzdGVySW5zZXJ0aW9uUG9pbnQodGhpcyk7CisgICAgICAgICAgICAgICAgaWYgKGNhbkFmZmVj
dFNlbGVjdG9yKCkpCisgICAgICAgICAgICAgICAgICAgIHJvb3RPd25lci0+d2lsbEFmZmVjdFNl
bGVjdG9yKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNjAsNyArMTU4
LDkgQEAgdm9pZCBJbnNlcnRpb25Qb2ludDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSogaW5z
ZXJ0aW9uUG9pbnQpCiAgICAgaWYgKG1fcmVnaXN0ZXJlZFdpdGhTaGFkb3dSb290ICYmIGluc2Vy
dGlvblBvaW50LT50cmVlU2NvcGUoKS0+cm9vdE5vZGUoKSA9PSByb290KSB7CiAgICAgICAgIEFT
U0VSVChyb290KTsKICAgICAgICAgbV9yZWdpc3RlcmVkV2l0aFNoYWRvd1Jvb3QgPSBmYWxzZTsK
LSAgICAgICAgcm9vdC0+ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24oKS0+dW5yZWdpc3Rlckluc2Vy
dGlvblBvaW50KHJvb3QsIHRoaXMpOworICAgICAgICByb290LT5lbnN1cmVTY29wZURpc3RyaWJ1
dGlvbigpLT51bnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQodGhpcyk7CisgICAgICAgIGlmIChyb290
T3duZXIgJiYgY2FuQWZmZWN0U2VsZWN0b3IoKSkKKyAgICAgICAgICAgIHJvb3RPd25lci0+d2ls
bEFmZmVjdFNlbGVjdG9yKCk7CiAgICAgfQogCiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9t
KGluc2VydGlvblBvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5oCmluZGV4IDNiZDc1MmM4NzNkMWYxYTU5OWU0NzkwYjg2NTk0YjA3NWVlZjdlY2UuLjIw
Y2U3N2QwYTM3OWVmY2MyNDQ4YTY1ODk5ZDZjNThmMzdmOWM5YjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzU2VsZWN0VmFsaWQoKSA9IDA7CiAgICAgdmlydHVhbCBjb25z
dCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCgpID0gMDsKICAgICB2aXJ0dWFsIFR5cGUg
aW5zZXJ0aW9uUG9pbnRUeXBlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5BZmZl
Y3RTZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29sIHJlc2V0U3R5
bGVJbmhlcml0YW5jZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0UmVzZXRTdHlsZUluaGVyaXRhbmNl
KGJvb2wpOwpAQCAtODgsNiArODksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc0luc2VydGlvblBvaW50Tm9kZSgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKwogcHJpdmF0ZToKIAogICAgIENvbnRlbnREaXN0cmli
dXRpb24gbV9kaXN0cmlidXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5k
ZXggNGU4YmY4ZjQ2OTFlZjk0ZDE2MzgwYjE4NTIzZGNhOTk1MWQ0NTI4ZC4uOWE0Mzc5ZjM1MTdk
NjMwN2I1NzA5MTIxYTY1YTBiZTdjYmMxODIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcApAQCAtMzQwLDggKzM0MCw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZv
cklkSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBpZFZhbHVlLCBFCiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGhvc3QtPnNoYWRvdygpLT5lbnN1cmVTZWxlY3RG
ZWF0dXJlU2V0Q29sbGVjdGVkKCk7Ci0gICAgcmV0dXJuIGhvc3QtPnNoYWRvdygpLT5zZWxlY3RS
dWxlRmVhdHVyZVNldCgpLmhhc1NlbGVjdG9yRm9ySWQoaWRWYWx1ZSk7CisgICAgcmV0dXJuIGhv
c3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoaG9zdC0+
c2hhZG93KCkpLmhhc1NlbGVjdG9yRm9ySWQoaWRWYWx1ZSk7CiB9CiAKIGJvb2wgSW50ZXJuYWxz
OjpoYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5n
JiBjbGFzc05hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzUxLDggKzM1MCw3IEBAIGJvb2wg
SW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29u
c3QgU3RyaW5nJiBjbGFzc05hCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGhvc3Qt
PnNoYWRvdygpLT5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCk7Ci0gICAgcmV0dXJu
IGhvc3QtPnNoYWRvdygpLT5zZWxlY3RSdWxlRmVhdHVyZVNldCgpLmhhc1NlbGVjdG9yRm9yQ2xh
c3MoY2xhc3NOYW1lKTsKKyAgICByZXR1cm4gaG9zdC0+c2hhZG93KCktPmRpc3RyaWJ1dG9yKCku
ZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFkb3coKSkuaGFzU2VsZWN0b3JGb3JDbGFz
cyhjbGFzc05hbWUpOwogfQogCiBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1
dGVJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZU5hbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzYyLDggKzM2MCw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNT
ZWxlY3RvckZvckF0dHJpYnV0ZUluU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYg
YXR0CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGhvc3QtPnNoYWRvdygpLT5lbnN1
cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCk7Ci0gICAgcmV0dXJuIGhvc3QtPnNoYWRvdygp
LT5zZWxlY3RSdWxlRmVhdHVyZVNldCgpLmhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUpOworICAgIHJldHVybiBob3N0LT5zaGFkb3coKS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVT
ZWxlY3RGZWF0dXJlU2V0KGhvc3QtPnNoYWRvdygpKS5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZShh
dHRyaWJ1dGVOYW1lKTsKIH0KIAogYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yUHNldWRv
Q2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIHBzZXVkb0NsYXNzLCBF
eGNlcHRpb25Db2RlJiBlYykKQEAgLTM3Myw4ICszNzAsNyBAQCBib29sIEludGVybmFsczo6aGFz
U2VsZWN0b3JGb3JQc2V1ZG9DbGFzc0luU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmlu
ZyYgcAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBob3N0LT5zaGFkb3coKS0+ZW5z
dXJlU2VsZWN0RmVhdHVyZVNldENvbGxlY3RlZCgpOwotICAgIGNvbnN0IFNlbGVjdFJ1bGVGZWF0
dXJlU2V0JiBmZWF0dXJlU2V0ID0gaG9zdC0+c2hhZG93KCktPnNlbGVjdFJ1bGVGZWF0dXJlU2V0
KCk7CisgICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIGZlYXR1cmVTZXQgPSBob3N0LT5z
aGFkb3coKS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGhvc3QtPnNoYWRv
dygpKTsKICAgICBpZiAocHNldWRvQ2xhc3MgPT0gImNoZWNrZWQiKQogICAgICAgICByZXR1cm4g
ZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvckNoZWNrZWQoKTsKICAgICBpZiAocHNldWRvQ2xhc3Mg
PT0gImVuYWJsZWQiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJv
ai9XZWJLaXQuZGVmLmluIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQu
ZGVmLmluCmluZGV4IDZjODA1ZmNjMWIxNmVhOTBjZTJhOTI4YzMzNjBiMmM2ZWVmM2UwYjEuLjFk
MGQxZDQ2YmQ3YjNmN2IyYmI5YjIwNGM4OTEwZjk5YjNlYTY3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LmRlZi5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC5kZWYuaW4KQEAgLTE4MSw3ICsxODEsNiBAQCBF
WFBPUlRTCiAgICAgICAgID9jcmVhdGVXcmFwcGVyQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NA
QFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWTm9kZUAxQEBaCiAgICAg
ICAgID9kZXNlcmlhbGl6ZUBTZXJpYWxpemVkU2NyaXB0VmFsdWVAV2ViQ29yZUBAUUFFP0FWSlNW
YWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUA0QFBBVkpTR2xvYmFsT2JqZWN0QDRAUEFWPyRWZWN0b3JA
Vj8kUmVmUHRyQFZNZXNzYWdlUG9ydEBXZWJDb3JlQEBAV1RGQEAkMDBAV1RGQEBXNFNlcmlhbGl6
YXRpb25FcnJvck1vZGVAMkBAWgogICAgICAgICA/ZG9jdW1lbnRTdGF0ZUBIaXN0b3J5SXRlbUBX
ZWJDb3JlQEBRQkVBQlY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQFhaCi0gICAgICAg
ID9lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkQEVsZW1lbnRTaGFkb3dAV2ViQ29yZUBA
UUFFWFhaCiAgICAgICAgID9lcXVhbEBXVEZAQFlBX05QQlZTdHJpbmdJbXBsQDFAUEJFQFoKICAg
ICAgICAgP2VxdWFsQFdURkBAWUFfTlBCVlN0cmluZ0ltcGxAMUAwQFoKICAgICAgICAgP2VxdWFs
SWdub3JpbmdDYXNlQFdURkBAWUFfTlBBVlN0cmluZ0ltcGxAMUBQQkVAWgpAQCAtNTcwLDcgKzU2
OSw2IEBAIEVYUE9SVFMKICAgICAgICAgP2NyZWF0ZVdyYXBwZXJAV2ViQ29yZUBAWUE/QVZKU1Zh
bHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQVZOb2RlQDFA
QFoKICAgICAgICAgP2Rlc2VyaWFsaXplQFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUBXZWJDb3JlQEBR
QUU/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDRAUEFWSlNHbG9iYWxPYmplY3RANEBQQVY/
JFZlY3RvckBWPyRSZWZQdHJAVk1lc3NhZ2VQb3J0QFdlYkNvcmVAQEBXVEZAQCQwMEBXVEZAQFc0
U2VyaWFsaXphdGlvbkVycm9yTW9kZUAyQEBaCiAgICAgICAgID9kb2N1bWVudFN0YXRlQEhpc3Rv
cnlJdGVtQFdlYkNvcmVAQFFCRUFCVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAWFoK
LSAgICAgICAgP2Vuc3VyZVNlbGVjdEZlYXR1cmVTZXRDb2xsZWN0ZWRARWxlbWVudFNoYWRvd0BX
ZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2VxdWFsQFdURkBAWUFfTlBCVlN0cmluZ0ltcGxAMUBQ
QkVAWgogICAgICAgICA/ZXF1YWxAV1RGQEBZQV9OUEJWU3RyaW5nSW1wbEAxQDBAWgogICAgICAg
ICA/ZXF1YWxJZ25vcmluZ0Nhc2VAV1RGQEBZQV9OUEFWU3RyaW5nSW1wbEAxQFBCRUBaCkBAIC05
NTksNyArOTU3LDYgQEAgRVhQT1JUUwogICAgICAgICA/Y3JlYXRlV3JhcHBlckBXZWJDb3JlQEBZ
QT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBB
Vk5vZGVAMUBAWgogICAgICAgICA/ZGVzZXJpYWxpemVAU2VyaWFsaXplZFNjcmlwdFZhbHVlQFdl
YkNvcmVAQFFBRT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVANEBQQVZKU0dsb2JhbE9iamVj
dEA0QFBBVj8kVmVjdG9yQFY/JFJlZlB0ckBWTWVzc2FnZVBvcnRAV2ViQ29yZUBAQFdURkBAJDAw
QFdURkBAVzRTZXJpYWxpemF0aW9uRXJyb3JNb2RlQDJAQFoKICAgICAgICAgP2RvY3VtZW50U3Rh
dGVASGlzdG9yeUl0ZW1AV2ViQ29yZUBAUUJFQUJWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBA
V1RGQEBYWgotICAgICAgICA/ZW5zdXJlU2VsZWN0RmVhdHVyZVNldENvbGxlY3RlZEBFbGVtZW50
U2hhZG93QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/ZXF1YWxAV1RGQEBZQV9OUEJWU3RyaW5n
SW1wbEAxQFBCRUBaCiAgICAgICAgID9lcXVhbEBXVEZAQFlBX05QQlZTdHJpbmdJbXBsQDFAMEBa
CiAgICAgICAgID9lcXVhbElnbm9yaW5nQ2FzZUBXVEZAQFlBX05QQVZTdHJpbmdJbXBsQDFAUEJF
QFoKQEAgLTEzNDgsMTEgKzEzNDUsMTEgQEAgRVhQT1JUUwogICAgICAgICA/Y3JlYXRlV3JhcHBl
ckBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2Jh
bE9iamVjdEAxQFBBVk5vZGVAMUBAWgogICAgICAgICA/ZGVzZXJpYWxpemVAU2VyaWFsaXplZFNj
cmlwdFZhbHVlQFdlYkNvcmVAQFFBRT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVANEBQQVZK
U0dsb2JhbE9iamVjdEA0QFBBVj8kVmVjdG9yQFY/JFJlZlB0ckBWTWVzc2FnZVBvcnRAV2ViQ29y
ZUBAQFdURkBAJDAwQFdURkBAVzRTZXJpYWxpemF0aW9uRXJyb3JNb2RlQDJAQFoKICAgICAgICAg
P2RvY3VtZW50U3RhdGVASGlzdG9yeUl0ZW1AV2ViQ29yZUBAUUJFQUJWPyRWZWN0b3JAVlN0cmlu
Z0BXVEZAQCQwQUBAV1RGQEBYWgotICAgICAgICA/ZW5zdXJlU2VsZWN0RmVhdHVyZVNldENvbGxl
Y3RlZEBFbGVtZW50U2hhZG93QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/ZXF1YWxAV1RGQEBZ
QV9OUEJWU3RyaW5nSW1wbEAxQFBCRUBaCiAgICAgICAgID9lcXVhbEBXVEZAQFlBX05QQlZTdHJp
bmdJbXBsQDFAMEBaCiAgICAgICAgID9lcXVhbElnbm9yaW5nQ2FzZUBXVEZAQFlBX05QQVZTdHJp
bmdJbXBsQDFAUEJFQFoKICAgICAgICAgP2V4dGVybmFsUmVwcmVzZW50YXRpb25AV2ViQ29yZUBA
WUE/QVZTdHJpbmdAV1RGQEBQQVZFbGVtZW50QDFASUBaCisgICAgICAgID9lbnN1cmVTZWxlY3RG
ZWF0dXJlU2V0QENvbnRlbnREaXN0cmlidXRvckBXZWJDb3JlQEBRQUVBQlZTZWxlY3RSdWxlRmVh
dHVyZVNldEAyQFBBVkVsZW1lbnRTaGFkb3dAMkBAWgogICAgICAgICA/aGFzU2hhZG93RWxlbWVu
dEBTY29wZUNvbnRlbnREaXN0cmlidXRpb25AV2ViQ29yZUBAU0FfTlBCVlNoYWRvd1Jvb3RAMkBA
WgogICAgICAgICA/aGFzQ29udGVudEVsZW1lbnRAU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uQFdl
YkNvcmVAQFNBX05QQlZTaGFkb3dSb290QDJAQFoKICAgICAgICAgP2NvdW50RWxlbWVudFNoYWRv
d0BTY29wZUNvbnRlbnREaXN0cmlidXRpb25AV2ViQ29yZUBAU0FJUEJWU2hhZG93Um9vdEAyQEBa
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1
dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCBhOTE0NzAyOGIxYWMwYjk1NTQ4ODgwOTdhYWNk
Y2QxNTAxZDFhZGRjLi41NzYxY2E4ZjM2MzhmNDE4YTg0Y2U3YmJjOTQxYTlmYzMxMDBlZmUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTU4LDcgKzU4LDYgQEAgX1pON1dlYkNvcmUxMlRl
eHRJdGVyYXRvcjI2cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhFUE5TXzEzQ29udGFpbmVyTm9k
ZUVpaWI7CiBfWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjlnZXRMb2NhdGlvbkFuZExlbmd0aEZy
b21SYW5nZUVQTlNfN0VsZW1lbnRFUEtOU181UmFuZ2VFUmpTNl87CiBfWk43V2ViQ29yZTEyVGV4
dEl0ZXJhdG9yMjlnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZUVQTlNfN0VsZW1lbnRFUEtO
U181UmFuZ2VFUm1TNl87CiBfWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MjBwYWdlTnVtYmVyRm9y
RWxlbWVudEVQTlNfN0VsZW1lbnRFUktOU185RmxvYXRTaXplRTsKLV9aTjdXZWJDb3JlMTNFbGVt
ZW50U2hhZG93MzFlbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkRXY7CiBfWk43V2ViQ29y
ZTEzY3JlYXRlV3JhcHBlckVQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0
RVBOU180Tm9kZUU7CiBfWk43V2ViQ29yZTE0Q2xpZW50UmVjdExpc3RDMUVSS04zV1RGNlZlY3Rv
cklOU185RmxvYXRRdWFkRUxqMEVFRTsKIF9aTjdXZWJDb3JlMTRDbGllbnRSZWN0TGlzdEMxRVJL
TjNXVEY2VmVjdG9ySU5TXzlGbG9hdFF1YWRFTG0wRUVFOwpAQCAtMTU0LDYgKzE1Myw3IEBAIF9a
Tks3V2ViQ29yZTVSYW5nZTR0ZXh0RXY7CiBfWk43V2ViQ29yZTIyY291bnRlclZhbHVlRm9yRWxl
bWVudEVQTlNfN0VsZW1lbnRFOwogX1pOSzdXZWJDb3JlMTREb2N1bWVudE1hcmtlcjExZGVzY3Jp
cHRpb25FdjsKIF9aTjdXZWJDb3JlOERvY3VtZW50MTZpc1BhZ2VCb3hWaXNpYmxlRWk7CitfWk43
V2ViQ29yZTE4Q29udGVudERpc3RyaWJ1dG9yMjJlbnN1cmVTZWxlY3RGZWF0dXJlU2V0RVBOU18x
M0VsZW1lbnRTaGFkb3dFOwogX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIxN3N1c3Bl
bmRBbmltYXRpb25zRXY7CiBfWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjE2cmVzdW1l
QW5pbWF0aW9uc0V2OwogX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIyMHBhdXNlQW5p
bWF0aW9uQXRUaW1lRVBOU18xMlJlbmRlck9iamVjdEVSS04zV1RGNlN0cmluZ0VkOwpkaWZmIC0t
Z2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDAxOGNjMDFiYTAyMjVkMzJlMmY5NGI5
NmE3NTQ5OGQ1NjVkZTMwN2MuLjBmNGNkZWFlYjFhZTllYjFiY2FlMmI0MTZmMTczODViZWZhNDFk
NjMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAxMy0wMS0wOSAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgW1NoYWRvdyBET01dIERpc3RyaWJ1dGlvbiByZWxhdGVkIGNvZGUgb24gRWxlbWVudFNo
YWRvdyBzaG91bGQgYmUgbWluaW1pemVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA2Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAy
MDEzLTAxLTA4ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAg
ICAgQWRkIGFuIEF1dG9jb25mIG1hY3JvIHRoYXQgY2hlY2tzIHdoZXRoZXIgYSBnaXZlbiBmZWF0
dXJlIGlzIGVuYWJsZWQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182035</attachid>
            <date>2013-01-09 18:06:49 -0800</date>
            <delta_ts>2013-01-09 18:31:00 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-106294-20130110110352.patch</filename>
            <type>text/plain</type>
            <size>37978</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTMzMzJiYjNjMjlhZGEy
MWU3YTMwYTgwOGIwMTQ4YzJmM2Q0OTJlOC4uMTRjNDQ3ZjRkM2E2MGFjNTY2ZGM2YzliMmRlMmQx
NTVhNjc4NzIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTAxLTA5ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0g
RGlzdHJpYnV0aW9uIHJlbGF0ZWQgY29kZSBvbiBFbGVtZW50U2hhZG93IHNob3VsZCBiZSBtaW5p
bWl6ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDYyOTQKKworICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgbW92ZXMgRWxlbWVudFNoYWRvdzo6bV9zZWxlY3RGZWF0dXJlcywKKyAgICAg
ICAgbV9zaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCBhbmQgcmVsYXRlZCBtZXRob2RzIHRv
CisgICAgICAgIENvbnRlbnREaXN0cmlidXRvci4KKworICAgICAgICBUaGVyZSBhcmUgYWxzbyBz
b21lIHJlbmFtaW5nIGFuZCBzbWFsbCByZWZhY3RvcmluZ3MgZm9yIGJldHRlciBmaXQKKyAgICAg
ICAgb24gbmV3IHBsYWNlOgorCisgICAgICAgIC0gc2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVT
ZXQgaXMgcmVuYW1lZCBuZWVkc1NlbGVjdG9yUnVsZVNldCBmb3IgY29uY2lzZW5lc3MuCisgICAg
ICAgIC0gc2V0U2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQoKSB3aGljaCB1c2VkIHJlY3Vy
c2lvbiBtb3JwaGVkIGludG8KKyAgICAgICAgICBpdGVyYXRpdmUgd2lsbEFmZmVjdFNlbGVjdG9y
KCkuCisgICAgICAgIC0gZW5zdXJlRGlzdHJpYnV0aW9uRnJvbURvY3VtZW50KCkgYmVjb21lcyBh
IHN0YXRpYyBtZXRob2QuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBSZWZhY3RvcmluZy4KKwor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb25XaGVu
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogZG9tL0VsZW1lbnRTaGFkb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dSb290cyk6CisgICAgICAgICog
ZG9tL0VsZW1lbnRTaGFkb3cuaDoKKyAgICAgICAgKEVsZW1lbnRTaGFkb3cpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6aW52YWxpZGF0ZURpc3RyaWJ1dGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50U2hhZG93OjplbnN1cmVEaXN0cmlidXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6ZGlkQWZmZWN0U2VsZWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudFNoYWRvdzo6d2lsbEFmZmVjdFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRTaGFkb3c6OmNvbnRhaW5pbmdTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6cmVnaXN0ZXJJbnNlcnRpb25Qb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZUNvbnRlbnREaXN0cmlidXRpb246OnVucmVnaXN0
ZXJJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6
OkNvbnRlbnREaXN0cmlidXRvcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0
b3I6OmVuc3VyZURpc3RyaWJ1dGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9uRnJvbURvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6aW52YWxpZGF0ZURpc3Ry
aWJ1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZVNl
bGVjdEZlYXR1cmVTZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9yOjpj
b2xsZWN0U2VsZWN0RmVhdHVyZVNldEZyb20pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERp
c3RyaWJ1dG9yOjpkaWRBZmZlY3RTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RGlzdHJpYnV0b3I6OndpbGxBZmZlY3RTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RGlzdHJpYnV0b3I6OmRpZFNoYWRvd0JvdW5kYXJ5Q2hhbmdlKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaDoKKyAgICAgICAgKFNjb3BlQ29udGVudERpc3Ry
aWJ1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6Om5lZWRzU2Vs
ZWN0RmVhdHVyZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OnNl
dE5lZWRzU2VsZWN0RmVhdHVyZVNldCk6CisgICAgICAgIChDb250ZW50RGlzdHJpYnV0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9yOjpzZXRWYWxpZGl0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6Om5lZWRzSW52YWxpZGF0aW9uKToKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENvbnRlbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvSFRN
TFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNoYWRvd0VsZW1lbnQ6
Om9sZGVyU2hhZG93Um9vdCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6OmdldERpc3RyaWJ1dGVkTm9k
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6Omluc2VydGVkSW50byk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAq
IGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRp
b25Qb2ludDo6Y2FuQWZmZWN0U2VsZWN0b3IpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JJZEluU2hh
ZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JDbGFzc0lu
U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JBdHRy
aWJ1dGVJblNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1NlbGVjdG9y
Rm9yUHNldWRvQ2xhc3NJblNoYWRvdyk6CisKIDIwMTMtMDEtMDkgIENocmlzIFJvZ2VycyAgPGNy
b2dlcnNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBBbGxvdyBsaXZlL2xvY2FsIGF1ZGlvIGlucHV0
IHRvIGJlIGVuYWJsZWQgb25seSB3aGVuIG5lZWRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDRmYmU2
YTAyYTE0MGM1YzAxMmJjNjE1NWYwNDdmMTc2YTdiNWZjNjEuLjZiNTM5MTZkZWNlODhmOWY3NDRh
MDg0MDM3MGM0NDYzOGQ5MjNkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMy0wMS0wOSAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgW1NoYWRvdyBET01dIERpc3RyaWJ1dGlvbiByZWxhdGVkIGNvZGUgb24gRWxlbWVudFNoYWRv
dyBzaG91bGQgYmUgbWluaW1pemVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA2Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6
a292LgorCisgICAgICAgICogV2ViS2l0LnZjcHJvai9XZWJLaXQuZGVmLmluOgorCiAyMDEzLTAx
LTA5ICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1l
IGV4cG9ydCBmaWxlcyB0byBtYWtlIHRoZW0gbW9yZSBlYXNpbHkgZmluZGFibGUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCmluZGV4IDc1ZjgzYzdjYmYzODE1MDIyMjFjMTQwYWY2M2Q0NGMxOTExNGY1MTcu
LjJkZWZiNTkyZjVmZTU3NzBhZWRjN2Y4Mzk3NmFlNzVmOGI1YmQzMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCkBAIC0yMTcsNyArMjE3LDYgQEAgX19aTjdXZWJDb3JlMTNBWE9iamVjdENhY2hlNDJn
QWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNlckludGVyZmFjZUVuYWJsZWRFCiBfX1pON1dlYkNvcmUx
M0NoYXJhY3RlckRhdGE3c2V0RGF0YUVSS04zV1RGNlN0cmluZ0VSaQogX19aTjdXZWJDb3JlMTND
b250YWluZXJOb2RlMTFhcHBlbmRDaGlsZEVOM1dURjEwUGFzc1JlZlB0cklOU180Tm9kZUVFRVJp
YgogX19aTjdXZWJDb3JlMTNDb250YWluZXJOb2RlMTFyZW1vdmVDaGlsZEVQTlNfNE5vZGVFUmkK
LV9fWk43V2ViQ29yZTEzRWxlbWVudFNoYWRvdzMxZW5zdXJlU2VsZWN0RmVhdHVyZVNldENvbGxl
Y3RlZEV2CiBfX1pON1dlYkNvcmUxM0hUVFBIZWFkZXJNYXBDMUV2CiBfX1pON1dlYkNvcmUxM0hU
VFBIZWFkZXJNYXBEMUV2CiBfX1pON1dlYkNvcmUxM0hpdFRlc3RSZXN1bHRDMUVSS1MwXwpAQCAt
NTE3LDYgKzUxNiw3IEBAIF9fWk43V2ViQ29yZTE4RE9NV2luZG93RXh0ZW5zaW9uQzFFUE5TXzVG
cmFtZUVQTlNfMTVET01XcmFwcGVyV29ybGRFCiBfX1pON1dlYkNvcmUxOEhUTUxDb250ZW50RWxl
bWVudDZjcmVhdGVFUE5TXzhEb2N1bWVudEUKIF9fWk43V2ViQ29yZTEwUGFzdGVib2FyZDE3Z2Vu
ZXJhbFBhc3RlYm9hcmRFdgogX19aTjdXZWJDb3JlMTBQYXN0ZWJvYXJkMTR3cml0ZVBsYWluVGV4
dEVSS04zV1RGNlN0cmluZ0VOUzBfMThTbWFydFJlcGxhY2VPcHRpb25FCitfX1pON1dlYkNvcmUx
OENvbnRlbnREaXN0cmlidXRvcjIyZW5zdXJlU2VsZWN0RmVhdHVyZVNldEVQTlNfMTNFbGVtZW50
U2hhZG93RQogX19aTjdXZWJDb3JlMThQbGF0Zm9ybVBhc3RlYm9hcmQxMHVuaXF1ZU5hbWVFdgog
X19aTjdXZWJDb3JlMThQbGF0Zm9ybVBhc3RlYm9hcmQxM2J1ZmZlckZvclR5cGVFUktOM1dURjZT
dHJpbmdFCiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDEzc3RyaW5nRm9yVHlwZUVS
S04zV1RGNlN0cmluZ0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA4YTFhYzkxZmVhZGQxNjdl
MGZiOGUwNDkwZTdiODE5ZWE0MDAxZThmLi40OTM0YjlkOTYyOTE5MjU3MzkxZGYwNWFjYTQzODNh
NGNlZGY2MTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC05MTcsMTUgKzkxNywxNSBAQCB2
b2lkIEVsZW1lbnQ6OmNsYXNzQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5l
d0NsYXNzU3RyaW5nKQogYm9vbCBFbGVtZW50OjpzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9u
V2hlbkF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRvdywgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKICAg
ICBBU1NFUlQoZWxlbWVudFNoYWRvdyk7Ci0gICAgZWxlbWVudFNoYWRvdy0+ZW5zdXJlU2VsZWN0
RmVhdHVyZVNldENvbGxlY3RlZCgpOworICAgIGNvbnN0IFNlbGVjdFJ1bGVGZWF0dXJlU2V0JiBm
ZWF0dXJlU2V0ID0gZWxlbWVudFNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0
dXJlU2V0KGVsZW1lbnRTaGFkb3cpOwogCiAgICAgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKG5hbWUp
KSB7CiAgICAgICAgIEF0b21pY1N0cmluZyBvbGRJZCA9IGF0dHJpYnV0ZURhdGEoKS0+aWRGb3JT
dHlsZVJlc29sdXRpb24oKTsKICAgICAgICAgQXRvbWljU3RyaW5nIG5ld0lkID0gbWFrZUlkRm9y
U3R5bGVSZXNvbHV0aW9uKG5ld1ZhbHVlLCBkb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSk7CiAg
ICAgICAgIGlmIChuZXdJZCAhPSBvbGRJZCkgewotICAgICAgICAgICAgaWYgKCFvbGRJZC5pc0Vt
cHR5KCkgJiYgZWxlbWVudFNoYWRvdy0+c2VsZWN0UnVsZUZlYXR1cmVTZXQoKS5oYXNTZWxlY3Rv
ckZvcklkKG9sZElkKSkKKyAgICAgICAgICAgIGlmICghb2xkSWQuaXNFbXB0eSgpICYmIGZlYXR1
cmVTZXQuaGFzU2VsZWN0b3JGb3JJZChvbGRJZCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgICAgICBpZiAoIW5ld0lkLmlzRW1wdHkoKSAmJiBlbGVtZW50U2hhZG93LT5z
ZWxlY3RSdWxlRmVhdHVyZVNldCgpLmhhc1NlbGVjdG9yRm9ySWQobmV3SWQpKQorICAgICAgICAg
ICAgaWYgKCFuZXdJZC5pc0VtcHR5KCkgJiYgZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvcklkKG5l
d0lkKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAg
LTkzNywxNiArOTM3LDE2IEBAIGJvb2wgRWxlbWVudDo6c2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1
dGlvbldoZW5BdHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnRTaGFkb3cqIGVsCiAgICAgICAgICAgICBj
b25zdCBib29sIHNob3VsZEZvbGRDYXNlID0gZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCk7CiAg
ICAgICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBvbGRDbGFzc2VzID0gYXR0cmlidXRl
RGF0YS0+Y2xhc3NOYW1lcygpOwogICAgICAgICAgICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyBu
ZXdDbGFzc2VzKG5ld0NsYXNzU3RyaW5nLCBzaG91bGRGb2xkQ2FzZSk7Ci0gICAgICAgICAgICBp
ZiAoY2hlY2tTZWxlY3RvckZvckNsYXNzQ2hhbmdlKG9sZENsYXNzZXMsIG5ld0NsYXNzZXMsIGVs
ZW1lbnRTaGFkb3ctPnNlbGVjdFJ1bGVGZWF0dXJlU2V0KCkpKQorICAgICAgICAgICAgaWYgKGNo
ZWNrU2VsZWN0b3JGb3JDbGFzc0NoYW5nZShvbGRDbGFzc2VzLCBuZXdDbGFzc2VzLCBmZWF0dXJl
U2V0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSBlbHNlIGlmIChj
b25zdCBFbGVtZW50QXR0cmlidXRlRGF0YSogYXR0cmlidXRlRGF0YSA9IHRoaXMtPmF0dHJpYnV0
ZURhdGEoKSkgewogICAgICAgICAgICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgb2xkQ2xhc3Nl
cyA9IGF0dHJpYnV0ZURhdGEtPmNsYXNzTmFtZXMoKTsKLSAgICAgICAgICAgIGlmIChjaGVja1Nl
bGVjdG9yRm9yQ2xhc3NDaGFuZ2Uob2xkQ2xhc3NlcywgZWxlbWVudFNoYWRvdy0+c2VsZWN0UnVs
ZUZlYXR1cmVTZXQoKSkpCisgICAgICAgICAgICBpZiAoY2hlY2tTZWxlY3RvckZvckNsYXNzQ2hh
bmdlKG9sZENsYXNzZXMsIGZlYXR1cmVTZXQpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGVsZW1lbnRTaGFkb3ctPnNlbGVjdFJ1
bGVGZWF0dXJlU2V0KCkuaGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUobmFtZS5sb2NhbE5hbWUoKSk7
CisgICAgcmV0dXJuIGZlYXR1cmVTZXQuaGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUobmFtZS5sb2Nh
bE5hbWUoKSk7CiB9CiAKIC8vIFJldHVybnMgdHJ1ZSBpcyB0aGUgZ2l2ZW4gYXR0cmlidXRlIGlz
IGFuIGV2ZW50IGhhbmRsZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKaW5kZXgg
OWU2ODZhN2Q4Y2RhOThiM2UzZTJkNTUzOTAzYTZmZDk4MDM0NDI2YS4uNzIwMWQzMjc1MjIwN2E1
NWI3YTc4MDVhMTlmODRiODRlZTRkYWY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93
LmNwcApAQCAtNDIsNyArNDIsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBFbGVtZW50U2hh
ZG93OjpFbGVtZW50U2hhZG93KCkKLSAgICA6IG1fc2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVT
ZXQoZmFsc2UpCiB7CiB9CiAKQEAgLTgzLDggKzgyLDcgQEAgdm9pZCBFbGVtZW50U2hhZG93Ojph
ZGRTaGFkb3dSb290KEVsZW1lbnQqIHNoYWRvd0hvc3QsIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4g
c2gKICAgICBzaGFkb3dSb290LT5zZXRIb3N0KHNoYWRvd0hvc3QpOwogICAgIHNoYWRvd1Jvb3Qt
PnNldFBhcmVudFRyZWVTY29wZShzaGFkb3dIb3N0LT50cmVlU2NvcGUoKSk7CiAgICAgbV9zaGFk
b3dSb290cy5wdXNoKHNoYWRvd1Jvb3QuZ2V0KCkpOwotICAgIHNldFZhbGlkaXR5VW5kZXRlcm1p
bmVkKCk7Ci0gICAgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihzaGFkb3dIb3N0KTsKKyAgICBtX2Rp
c3RyaWJ1dG9yLmRpZFNoYWRvd0JvdW5kYXJ5Q2hhbmdlKHNoYWRvd0hvc3QpOwogICAgIENoaWxk
Tm9kZUluc2VydGlvbk5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlmeShzaGFkb3dSb290LmdldCgp
KTsKIAogICAgIC8vIEV4aXN0ZW5jZSBvZiBzaGFkb3cgcm9vdHMgcmVxdWlyZXMgdGhlIGhvc3Qg
YW5kIGl0cyBjaGlsZHJlbiB0byBkbyB0cmF2ZXJzYWwgdXNpbmcgQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyLgpAQCAtMTE5LDcgKzExNyw3IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6cmVtb3ZlQWxs
U2hhZG93Um9vdHMoKQogICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIoc2hhZG93SG9z
dCkubm90aWZ5KG9sZFJvb3QuZ2V0KCkpOwogICAgIH0KIAotICAgIGludmFsaWRhdGVEaXN0cmli
dXRpb24oc2hhZG93SG9zdCk7CisgICAgbV9kaXN0cmlidXRvci5pbnZhbGlkYXRlRGlzdHJpYnV0
aW9uKHNoYWRvd0hvc3QpOwogfQogCiB2b2lkIEVsZW1lbnRTaGFkb3c6OmF0dGFjaCgpCkBAIC0x
NjUsOTQgKzE2Myw2IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6cmVjYWxjU3R5bGUoTm9kZTo6U3R5
bGVDaGFuZ2UgY2hhbmdlKQogICAgICAgICByb290LT5yZWNhbGNTdHlsZShjaGFuZ2UpOwogfQog
Ci12b2lkIEVsZW1lbnRTaGFkb3c6OmVuc3VyZURpc3RyaWJ1dGlvbigpCi17Ci0gICAgaWYgKCFt
X2Rpc3RyaWJ1dG9yLm5lZWRzRGlzdHJpYnV0aW9uKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBt
X2Rpc3RyaWJ1dG9yLmRpc3RyaWJ1dGUoaG9zdCgpKTsKLX0KLQotdm9pZCBFbGVtZW50U2hhZG93
OjplbnN1cmVEaXN0cmlidXRpb25Gcm9tRG9jdW1lbnQoKQotewotICAgIFZlY3RvcjxFbGVtZW50
KiwgOD4gaG9zdHM7Ci0gICAgZm9yIChFbGVtZW50KiBjdXJyZW50ID0gaG9zdCgpOyBjdXJyZW50
OyBjdXJyZW50ID0gY3VycmVudC0+c2hhZG93SG9zdCgpKQotICAgICAgICBob3N0cy5hcHBlbmQo
Y3VycmVudCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gaG9zdHMuc2l6ZSgpOyBpID4gMDsgLS1p
KQotICAgICAgICBob3N0c1tpIC0gMV0tPnNoYWRvdygpLT5lbnN1cmVEaXN0cmlidXRpb24oKTsK
LX0KLQotdm9pZCBFbGVtZW50U2hhZG93OjpzZXRWYWxpZGl0eVVuZGV0ZXJtaW5lZCgpCi17Ci0g
ICAgbV9kaXN0cmlidXRvci5zZXRWYWxpZGl0eShDb250ZW50RGlzdHJpYnV0b3I6OlVuZGV0ZXJt
aW5lZCk7Ci19Ci0KLXZvaWQgRWxlbWVudFNoYWRvdzo6aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigp
Ci17Ci0gICAgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihob3N0KCkpOwotfQotCi12b2lkIEVsZW1l
bnRTaGFkb3c6OmludmFsaWRhdGVEaXN0cmlidXRpb24oRWxlbWVudCogaG9zdCkKLXsKLSAgICBi
b29sIG5lZWRzSW52YWxpZGF0aW9uID0gbV9kaXN0cmlidXRvci5uZWVkc0ludmFsaWRhdGlvbigp
OwotICAgIGJvb2wgbmVlZHNSZWF0dGFjaCA9IG5lZWRzSW52YWxpZGF0aW9uID8gbV9kaXN0cmli
dXRvci5pbnZhbGlkYXRlKGhvc3QpIDogZmFsc2U7Ci0KLSAgICBpZiAobmVlZHNSZWF0dGFjaCAm
JiBob3N0LT5hdHRhY2hlZCgpKSB7Ci0gICAgICAgIGZvciAoTm9kZSogbiA9IGhvc3QtPmZpcnN0
Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpCi0gICAgICAgICAgICBuLT5sYXp5UmVh
dHRhY2goKTsKLSAgICAgICAgaG9zdC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwotICAgIH0KLQot
ICAgIGlmIChuZWVkc0ludmFsaWRhdGlvbikKLSAgICAgICAgbV9kaXN0cmlidXRvci5maW5pc2hJ
bml2YWxpZGF0aW9uKCk7Ci19Ci0KLXZvaWQgRWxlbWVudFNoYWRvdzo6c2V0U2hvdWxkQ29sbGVj
dFNlbGVjdEZlYXR1cmVTZXQoKQotewotICAgIGlmIChzaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVy
ZVNldCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3Nob3VsZENvbGxlY3RTZWxlY3RGZWF0
dXJlU2V0ID0gdHJ1ZTsKLQotICAgIGlmIChTaGFkb3dSb290KiBwYXJlbnRTaGFkb3dSb290ID0g
aG9zdCgpLT5jb250YWluaW5nU2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIGlmIChFbGVtZW50U2hh
ZG93KiBwYXJlbnRFbGVtZW50U2hhZG93ID0gcGFyZW50U2hhZG93Um9vdC0+b3duZXIoKSkKLSAg
ICAgICAgICAgIHBhcmVudEVsZW1lbnRTaGFkb3ctPnNldFNob3VsZENvbGxlY3RTZWxlY3RGZWF0
dXJlU2V0KCk7Ci0gICAgfQotfQotCi12b2lkIEVsZW1lbnRTaGFkb3c6OmVuc3VyZVNlbGVjdEZl
YXR1cmVTZXRDb2xsZWN0ZWQoKQotewotICAgIGlmICghbV9zaG91bGRDb2xsZWN0U2VsZWN0RmVh
dHVyZVNldCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zZWxlY3RGZWF0dXJlcy5jbGVhcigp
OwotICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IG9sZGVzdFNoYWRvd1Jvb3QoKTsgcm9vdDsg
cm9vdCA9IHJvb3QtPnlvdW5nZXJTaGFkb3dSb290KCkpCi0gICAgICAgIGNvbGxlY3RTZWxlY3RG
ZWF0dXJlU2V0RnJvbShyb290KTsKLSAgICBtX3Nob3VsZENvbGxlY3RTZWxlY3RGZWF0dXJlU2V0
ID0gZmFsc2U7Ci19Ci0KLXZvaWQgRWxlbWVudFNoYWRvdzo6Y29sbGVjdFNlbGVjdEZlYXR1cmVT
ZXRGcm9tKFNoYWRvd1Jvb3QqIHJvb3QpCi17Ci0gICAgaWYgKFNjb3BlQ29udGVudERpc3RyaWJ1
dGlvbjo6aGFzRWxlbWVudFNoYWRvdyhyb290KSkgewotICAgICAgICBmb3IgKEVsZW1lbnQqIGVs
ZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbihyb290KTsgZWxlbWVudDsgZWxl
bWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQoZWxlbWVudCkpIHsKLSAgICAgICAgICAgIGlm
IChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0gZWxlbWVudC0+c2hhZG93KCkpIHsKLSAg
ICAgICAgICAgICAgICBlbGVtZW50U2hhZG93LT5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVj
dGVkKCk7Ci0gICAgICAgICAgICAgICAgbV9zZWxlY3RGZWF0dXJlcy5hZGQoZWxlbWVudFNoYWRv
dy0+bV9zZWxlY3RGZWF0dXJlcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBpZiAoU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNDb250ZW50RWxlbWVudChyb290
KSkgewotICAgICAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpm
aXJzdFdpdGhpbihyb290KTsgZWxlbWVudDsgZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5l
eHQoZWxlbWVudCkpIHsKLSAgICAgICAgICAgIGlmIChpc0hUTUxDb250ZW50RWxlbWVudChlbGVt
ZW50KSkgewotICAgICAgICAgICAgICAgIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgbGlzdCA9IHRv
SFRNTENvbnRlbnRFbGVtZW50KGVsZW1lbnQpLT5zZWxlY3Rvckxpc3QoKTsKLSAgICAgICAgICAg
ICAgICBmb3IgKENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IGxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7
IHNlbGVjdG9yID0gbGlzdC5uZXh0KHNlbGVjdG9yKSkKLSAgICAgICAgICAgICAgICAgICAgbV9z
ZWxlY3RGZWF0dXJlcy5jb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3Ioc2VsZWN0b3IpOyAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIHZv
aWQgRWxlbWVudFNoYWRvdzo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7CkBAIC0yNjUsMTEgKzE3
NSw0IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBpbmZvLmFkZE1lbWJlcihtX2Rpc3Ry
aWJ1dG9yKTsKIH0KIAotdm9pZCBFbGVtZW50U2hhZG93OjpkaWRBZmZlY3RTZWxlY3RvcihBZmZl
Y3RlZFNlbGVjdG9yTWFzayBtYXNrKQotewotICAgIGVuc3VyZVNlbGVjdEZlYXR1cmVTZXRDb2xs
ZWN0ZWQoKTsKLSAgICBpZiAoc2VsZWN0UnVsZUZlYXR1cmVTZXQoKS5oYXNTZWxlY3RvckZvciht
YXNrKSkKLSAgICAgICAgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwotfQotCiB9IC8vIG5hbWVz
cGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgKaW5kZXggNTk0YzllNjYxYzgwOGRiYmUz
ODI2MDJjNjAyMzZhMzBjNzUwNmU5Ny4uOTM5ZTliNjlmOWM2NjU3ZGFhYjU4ZjAyM2RlMThmOTA1
MDEwNjdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCkBAIC0yOSw3ICsyOSw2IEBA
CiAKICNpbmNsdWRlICJDb250ZW50RGlzdHJpYnV0b3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCi0jaW5jbHVkZSAiU2VsZWN0UnVsZUZlYXR1cmVTZXQuaCIKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KQEAgLTUyLDYgKzUxLDcgQEAgcHVibGljOgogICAgIEVsZW1lbnQq
IGhvc3QoKSBjb25zdDsKICAgICBTaGFkb3dSb290KiB5b3VuZ2VzdFNoYWRvd1Jvb3QoKSBjb25z
dDsKICAgICBTaGFkb3dSb290KiBvbGRlc3RTaGFkb3dSb290KCkgY29uc3Q7CisgICAgRWxlbWVu
dFNoYWRvdyogY29udGFpbmluZ1NoYWRvdygpIGNvbnN0OwogCiAgICAgdm9pZCByZW1vdmVBbGxT
aGFkb3dSb290cygpOwogICAgIHZvaWQgYWRkU2hhZG93Um9vdChFbGVtZW50KiBzaGFkb3dIb3N0
LCBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+LCBTaGFkb3dSb290OjpTaGFkb3dSb290VHlwZSwgRXhj
ZXB0aW9uQ29kZSYpOwpAQCAtNjMsMzEgKzYzLDE5IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRz
U3R5bGVSZWNhbGMoKTsKICAgICB2b2lkIHJlY2FsY1N0eWxlKE5vZGU6OlN0eWxlQ2hhbmdlKTsK
IAotICAgIHZvaWQgc2V0VmFsaWRpdHlVbmRldGVybWluZWQoKTsKLSAgICB2b2lkIGludmFsaWRh
dGVEaXN0cmlidXRpb24oKTsKLSAgICB2b2lkIGVuc3VyZURpc3RyaWJ1dGlvbigpOwotICAgIHZv
aWQgZW5zdXJlRGlzdHJpYnV0aW9uRnJvbURvY3VtZW50KCk7CisgICAgdm9pZCBpbnZhbGlkYXRl
RGlzdHJpYnV0aW9uKCkgeyBtX2Rpc3RyaWJ1dG9yLmludmFsaWRhdGVEaXN0cmlidXRpb24oaG9z
dCgpKTsgfQorICAgIHZvaWQgZW5zdXJlRGlzdHJpYnV0aW9uKCkgeyBtX2Rpc3RyaWJ1dG9yLmVu
c3VyZURpc3RyaWJ1dGlvbihob3N0KCkpOyB9CisgICAgdm9pZCBkaWRBZmZlY3RTZWxlY3RvcihB
ZmZlY3RlZFNlbGVjdG9yTWFzayBtYXNrKSB7IG1fZGlzdHJpYnV0b3IuZGlkQWZmZWN0U2VsZWN0
b3IoaG9zdCgpLCBtYXNrKTsgfQorICAgIHZvaWQgd2lsbEFmZmVjdFNlbGVjdG9yKCkgeyBtX2Rp
c3RyaWJ1dG9yLndpbGxBZmZlY3RTZWxlY3Rvcihob3N0KCkpOyB9CiAKICAgICBDb250ZW50RGlz
dHJpYnV0b3ImIGRpc3RyaWJ1dG9yKCk7CiAgICAgY29uc3QgQ29udGVudERpc3RyaWJ1dG9yJiBk
aXN0cmlidXRvcigpIGNvbnN0OwogCi0gICAgdm9pZCBkaWRBZmZlY3RTZWxlY3RvcihBZmZlY3Rl
ZFNlbGVjdG9yTWFzayk7Ci0gICAgYm9vbCBzaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQ7IH0KLSAgICB2
b2lkIHNldFNob3VsZENvbGxlY3RTZWxlY3RGZWF0dXJlU2V0KCk7Ci0gICAgdm9pZCBlbnN1cmVT
ZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCk7Ci0KLSAgICBjb25zdCBTZWxlY3RSdWxlRmVhdHVy
ZVNldCYgc2VsZWN0UnVsZUZlYXR1cmVTZXQoKSBjb25zdDsKLQogICAgIHZvaWQgcmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogcHJpdmF0ZToKLSAgICB2b2lkIGlu
dmFsaWRhdGVEaXN0cmlidXRpb24oRWxlbWVudCogaG9zdCk7Ci0KLSAgICB2b2lkIGNvbGxlY3RT
ZWxlY3RGZWF0dXJlU2V0RnJvbShTaGFkb3dSb290Kik7CiAKICAgICBEb3VibHlMaW5rZWRMaXN0
PFNoYWRvd1Jvb3Q+IG1fc2hhZG93Um9vdHM7CiAgICAgQ29udGVudERpc3RyaWJ1dG9yIG1fZGlz
dHJpYnV0b3I7Ci0gICAgU2VsZWN0UnVsZUZlYXR1cmVTZXQgbV9zZWxlY3RGZWF0dXJlczsKLSAg
ICBib29sIG1fc2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQgOiAxOwogfTsKIAogaW5saW5l
IFNoYWRvd1Jvb3QqIEVsZW1lbnRTaGFkb3c6OnlvdW5nZXN0U2hhZG93Um9vdCgpIGNvbnN0CkBA
IC0xMTYsMTIgKzEwNCw2IEBAIGlubGluZSBFbGVtZW50KiBFbGVtZW50U2hhZG93Ojpob3N0KCkg
Y29uc3QKICAgICByZXR1cm4geW91bmdlc3RTaGFkb3dSb290KCktPmhvc3QoKTsKIH0KIAotaW5s
aW5lIGNvbnN0IFNlbGVjdFJ1bGVGZWF0dXJlU2V0JiBFbGVtZW50U2hhZG93OjpzZWxlY3RSdWxl
RmVhdHVyZVNldCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFtX3Nob3VsZENvbGxlY3RTZWxlY3RG
ZWF0dXJlU2V0KTsKLSAgICByZXR1cm4gbV9zZWxlY3RGZWF0dXJlczsKLX0KLQogaW5saW5lIFNo
YWRvd1Jvb3QqIE5vZGU6OnlvdW5nZXN0U2hhZG93Um9vdCgpIGNvbnN0CiB7CiAgICAgaWYgKCF0
aGlzLT5pc0VsZW1lbnROb2RlKCkpCkBAIC0xMzEsNiArMTEzLDE0IEBAIGlubGluZSBTaGFkb3dS
b290KiBOb2RlOjp5b3VuZ2VzdFNoYWRvd1Jvb3QoKSBjb25zdAogICAgIHJldHVybiAwOwogfQog
CitpbmxpbmUgRWxlbWVudFNoYWRvdyogRWxlbWVudFNoYWRvdzo6Y29udGFpbmluZ1NoYWRvdygp
IGNvbnN0Cit7CisgICAgU2hhZG93Um9vdCogcGFyZW50Um9vdCA9IGhvc3QoKS0+Y29udGFpbmlu
Z1NoYWRvd1Jvb3QoKTsKKyAgICBpZiAoIXBhcmVudFJvb3QpCisgICAgICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBwYXJlbnRSb290LT5vd25lcigpOworfQorCiBjbGFzcyBTaGFkb3dSb290VmVj
dG9yIDogcHVibGljIFZlY3RvcjxSZWZQdHI8U2hhZG93Um9vdD4gPiB7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgU2hhZG93Um9vdFZlY3RvcihFbGVtZW50U2hhZG93KiB0cmVlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKaW5kZXggNzdj
NGQzYjE2YTFkMDgwMDJkZjVjYzU2NWY1MGU0NTZjYWQxMDczYS4uMGQzZGJlYTBiOGI3Y2IxNjgy
MjJjYmFmODJlMDk2ODI3M2FiYjdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgY29uc3QgVmVj
dG9yPFJlZlB0cjxJbnNlcnRpb25Qb2ludD4gPiYgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpl
bnN1cmVJbnNlcnRpb24KICAgICByZXR1cm4gbV9pbnNlcnRpb25Qb2ludExpc3Q7CiB9CiAKLXZv
aWQgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpyZWdpc3Rlckluc2VydGlvblBvaW50KFNoYWRv
d1Jvb3QqIHNjb3BlLCBJbnNlcnRpb25Qb2ludCogcG9pbnQpCit2b2lkIFNjb3BlQ29udGVudERp
c3RyaWJ1dGlvbjo6cmVnaXN0ZXJJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCogcG9pbnQp
CiB7CiAgICAgc3dpdGNoIChwb2ludC0+aW5zZXJ0aW9uUG9pbnRUeXBlKCkpIHsKICAgICBjYXNl
IEluc2VydGlvblBvaW50OjpTaGFkb3dJbnNlcnRpb25Qb2ludDoKQEAgLTExOCwxNCArMTE4LDEz
IEBAIHZvaWQgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpyZWdpc3Rlckluc2VydGlvblBvaW50
KFNoYWRvd1Jvb3QqIHNjb3BlLCBJbnNlcnRpCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5z
ZXJ0aW9uUG9pbnQ6OkNvbnRlbnRJbnNlcnRpb25Qb2ludDoKICAgICAgICAgKyttX251bWJlck9m
Q29udGVudEVsZW1lbnRDaGlsZHJlbjsKLSAgICAgICAgc2NvcGUtPm93bmVyKCktPnNldFNob3Vs
ZENvbGxlY3RTZWxlY3RGZWF0dXJlU2V0KCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAg
IGludmFsaWRhdGVJbnNlcnRpb25Qb2ludExpc3QoKTsKIH0KIAotdm9pZCBTY29wZUNvbnRlbnRE
aXN0cmlidXRpb246OnVucmVnaXN0ZXJJbnNlcnRpb25Qb2ludChTaGFkb3dSb290KiBzY29wZSwg
SW5zZXJ0aW9uUG9pbnQqIHBvaW50KQordm9pZCBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OnVu
cmVnaXN0ZXJJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCogcG9pbnQpCiB7CiAgICAgc3dp
dGNoIChwb2ludC0+aW5zZXJ0aW9uUG9pbnRUeXBlKCkpIHsKICAgICBjYXNlIEluc2VydGlvblBv
aW50OjpTaGFkb3dJbnNlcnRpb25Qb2ludDoKQEAgLTEzNSw4ICsxMzQsNiBAQCB2b2lkIFNjb3Bl
Q29udGVudERpc3RyaWJ1dGlvbjo6dW5yZWdpc3Rlckluc2VydGlvblBvaW50KFNoYWRvd1Jvb3Qq
IHNjb3BlLCBJbnNlcgogICAgIGNhc2UgSW5zZXJ0aW9uUG9pbnQ6OkNvbnRlbnRJbnNlcnRpb25Q
b2ludDoKICAgICAgICAgQVNTRVJUKG1fbnVtYmVyT2ZDb250ZW50RWxlbWVudENoaWxkcmVuID4g
MCk7CiAgICAgICAgIC0tbV9udW1iZXJPZkNvbnRlbnRFbGVtZW50Q2hpbGRyZW47Ci0gICAgICAg
IGlmIChzY29wZS0+b3duZXIoKSkKLSAgICAgICAgICAgIHNjb3BlLT5vd25lcigpLT5zZXRTaG91
bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCgpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAg
LTE4MSw3ICsxNzgsOCBAQCBJbnNlcnRpb25Qb2ludCogU2NvcGVDb250ZW50RGlzdHJpYnV0aW9u
Ojphc3NpZ25lZFRvKGNvbnN0IFNoYWRvd1Jvb3QqIGhvbGRlcikKIH0KIAogQ29udGVudERpc3Ry
aWJ1dG9yOjpDb250ZW50RGlzdHJpYnV0b3IoKQotICAgIDogbV92YWxpZGl0eShVbmRldGVybWlu
ZWQpCisgICAgOiBtX25lZWRzU2VsZWN0RmVhdHVyZVNldChmYWxzZSkKKyAgICAsIG1fdmFsaWRp
dHkoVW5kZXRlcm1pbmVkKQogewogfQogCkBAIC0yODcsMTIgKzI4NSw2IEBAIGJvb2wgQ29udGVu
dERpc3RyaWJ1dG9yOjppbnZhbGlkYXRlKEVsZW1lbnQqIGhvc3QpCiAgICAgcmV0dXJuIG5lZWRz
UmVhdHRhY2g7CiB9CiAKLXZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpmaW5pc2hJbml2YWxpZGF0
aW9uKCkKLXsKLSAgICBBU1NFUlQobV92YWxpZGl0eSA9PSBJbnZhbGlkYXRpbmcpOwotICAgIG1f
dmFsaWRpdHkgPSBJbnZhbGlkYXRlZDsKLX0KLQogdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRp
c3RyaWJ1dGVTZWxlY3Rpb25zVG8oSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50LCBjb25z
dCBDb250ZW50RGlzdHJpYnV0aW9uJiBwb29sLCBWZWN0b3I8Ym9vbD4mIGRpc3RyaWJ1dGVkKQog
ewogICAgIENvbnRlbnREaXN0cmlidXRpb24gZGlzdHJpYnV0aW9uOwpAQCAtMzQyLDExICszMzQs
OTggQEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpc3RyaWJ1dGVOb2RlQ2hpbGRyZW5UbyhJ
bnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQKICAgICBpbnNlcnRpb25Qb2ludC0+c2V0RGlz
dHJpYnV0aW9uKGRpc3RyaWJ1dGlvbik7CiB9CiAKLXZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpp
bnZhbGlkYXRlRGlzdHJpYnV0aW9uSW4oQ29udGVudERpc3RyaWJ1dGlvbiogbGlzdCkKK3ZvaWQg
Q29udGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb24oRWxlbWVudCogaG9zdCkKK3sK
KyAgICBpZiAoIW5lZWRzRGlzdHJpYnV0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICBkaXN0
cmlidXRlKGhvc3QpOworfQorCit2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJp
YnV0aW9uRnJvbURvY3VtZW50KEVsZW1lbnQqIHNvdXJjZSkKK3sKKyAgICBDb250YWluZXJOb2Rl
KiBtYXlTaGFkb3cgPSBzb3VyY2UtPnRyZWVTY29wZSgpLT5yb290Tm9kZSgpOworICAgIGlmICgh
bWF5U2hhZG93LT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9y
PEVsZW1lbnQqLCA4PiBob3N0czsKKyAgICBmb3IgKEVsZW1lbnQqIGN1cnJlbnQgPSB0b1NoYWRv
d1Jvb3QobWF5U2hhZG93KS0+aG9zdCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+c2hh
ZG93SG9zdCgpKQorICAgICAgICBob3N0cy5hcHBlbmQoY3VycmVudCk7CisKKyAgICBmb3IgKHNp
emVfdCBpID0gaG9zdHMuc2l6ZSgpOyBpID4gMDsgLS1pKQorICAgICAgICBob3N0c1tpIC0gMV0t
PnNoYWRvdygpLT5lbnN1cmVEaXN0cmlidXRpb24oKTsKK30KKworCit2b2lkIENvbnRlbnREaXN0
cmlidXRvcjo6aW52YWxpZGF0ZURpc3RyaWJ1dGlvbihFbGVtZW50KiBob3N0KQoreworICAgIGJv
b2wgZGlkTmVlZEludmFsaWRhdGlvbiA9IG5lZWRzSW52YWxpZGF0aW9uKCk7CisgICAgYm9vbCBu
ZWVkc1JlYXR0YWNoID0gZGlkTmVlZEludmFsaWRhdGlvbiA/IGludmFsaWRhdGUoaG9zdCkgOiBm
YWxzZTsKKworICAgIGlmIChuZWVkc1JlYXR0YWNoICYmIGhvc3QtPmF0dGFjaGVkKCkpIHsKKyAg
ICAgICAgZm9yIChOb2RlKiBuID0gaG9zdC0+Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4dFNp
YmxpbmcoKSkKKyAgICAgICAgICAgIG4tPmxhenlSZWF0dGFjaCgpOworICAgICAgICBob3N0LT5z
ZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgfQorCisgICAgaWYgKGRpZE5lZWRJbnZhbGlkYXRp
b24pIHsKKyAgICAgICAgQVNTRVJUKG1fdmFsaWRpdHkgPT0gSW52YWxpZGF0aW5nKTsKKyAgICAg
ICAgbV92YWxpZGl0eSA9IEludmFsaWRhdGVkOworICAgIH0KK30KKworY29uc3QgU2VsZWN0UnVs
ZUZlYXR1cmVTZXQmIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlU2VsZWN0RmVhdHVyZVNldChF
bGVtZW50U2hhZG93KiBzaGFkb3cpCit7CisgICAgaWYgKCFtX25lZWRzU2VsZWN0RmVhdHVyZVNl
dCkKKyAgICAgICAgcmV0dXJuIG1fc2VsZWN0RmVhdHVyZXM7CisKKyAgICBtX3NlbGVjdEZlYXR1
cmVzLmNsZWFyKCk7CisgICAgZm9yIChTaGFkb3dSb290KiByb290ID0gc2hhZG93LT5vbGRlc3RT
aGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT55b3VuZ2VyU2hhZG93Um9vdCgpKQorICAg
ICAgICBjb2xsZWN0U2VsZWN0RmVhdHVyZVNldEZyb20ocm9vdCk7CisgICAgbV9uZWVkc1NlbGVj
dEZlYXR1cmVTZXQgPSBmYWxzZTsKKyAgICByZXR1cm4gbV9zZWxlY3RGZWF0dXJlczsKK30KKwor
dm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmNvbGxlY3RTZWxlY3RGZWF0dXJlU2V0RnJvbShTaGFk
b3dSb290KiByb290KQoreworICAgIGlmIChTY29wZUNvbnRlbnREaXN0cmlidXRpb246Omhhc0Vs
ZW1lbnRTaGFkb3cocm9vdCkpIHsKKyAgICAgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gRWxl
bWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4ocm9vdCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVt
ZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQpKSB7CisgICAgICAgICAgICBpZiAoRWxlbWVudFNo
YWRvdyogZWxlbWVudFNoYWRvdyA9IGVsZW1lbnQtPnNoYWRvdygpKQorICAgICAgICAgICAgICAg
IG1fc2VsZWN0RmVhdHVyZXMuYWRkKGVsZW1lbnRTaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZW5zdXJl
U2VsZWN0RmVhdHVyZVNldChlbGVtZW50U2hhZG93KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBpZiAoU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNDb250ZW50RWxlbWVudChyb290KSkg
eworICAgICAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJz
dFdpdGhpbihyb290KTsgZWxlbWVudDsgZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQo
ZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGlmIChpc0hUTUxDb250ZW50RWxlbWVudChlbGVtZW50
KSkgeworICAgICAgICAgICAgICAgIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgbGlzdCA9IHRvSFRN
TENvbnRlbnRFbGVtZW50KGVsZW1lbnQpLT5zZWxlY3Rvckxpc3QoKTsKKyAgICAgICAgICAgICAg
ICBmb3IgKENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IGxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNl
bGVjdG9yID0gbGlzdC5uZXh0KHNlbGVjdG9yKSkKKyAgICAgICAgICAgICAgICAgICAgbV9zZWxl
Y3RGZWF0dXJlcy5jb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3Ioc2VsZWN0b3IpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6
ZGlkQWZmZWN0U2VsZWN0b3IoRWxlbWVudCogaG9zdCwgQWZmZWN0ZWRTZWxlY3Rvck1hc2sgbWFz
aykKK3sKKyAgICBpZiAoZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFkb3coKSkuaGFz
U2VsZWN0b3JGb3IobWFzaykpCisgICAgICAgIGludmFsaWRhdGVEaXN0cmlidXRpb24oaG9zdCk7
Cit9CisKK3ZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjp3aWxsQWZmZWN0U2VsZWN0b3IoRWxlbWVu
dCogaG9zdCkKK3sKKyAgICBmb3IgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IGhvc3QtPnNoYWRv
dygpOyBzaGFkb3c7IHNoYWRvdyA9IHNoYWRvdy0+Y29udGFpbmluZ1NoYWRvdygpKSB7CisgICAg
ICAgIGlmIChzaGFkb3ctPmRpc3RyaWJ1dG9yKCkubmVlZHNTZWxlY3RGZWF0dXJlU2V0KCkpCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgc2hhZG93LT5kaXN0cmlidXRvcigpLnNldE5lZWRz
U2VsZWN0RmVhdHVyZVNldCgpOworICAgIH0KKworICAgIGludmFsaWRhdGVEaXN0cmlidXRpb24o
aG9zdCk7Cit9CisKK3ZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpkaWRTaGFkb3dCb3VuZGFyeUNo
YW5nZShFbGVtZW50KiBob3N0KQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC0+
c2l6ZSgpOyArK2kpCi0gICAgICAgIG1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQucmVtb3ZlKGxpc3Qt
PmF0KGkpLmdldCgpKTsKLSAgICBsaXN0LT5jbGVhcigpOworICAgIHNldFZhbGlkaXR5KFVuZGV0
ZXJtaW5lZCk7CisgICAgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihob3N0KTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAppbmRleCBm
OTgzODM3ZjEwNjczYWFlNGY4NGIzMmUwMDA3ZDJkYjQ2N2VhMjM3Li40NjBkNDEzNWQ5OTBlOGZm
Njk2NzU3ZDU2MmEwYjBiMTNlZjczNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaApAQCAtMzEsNiArMzEsNyBAQAogI2lmbmRlZiBDb250
ZW50RGlzdHJpYnV0b3JfaAogI2RlZmluZSBDb250ZW50RGlzdHJpYnV0b3JfaAogCisjaW5jbHVk
ZSAiU2VsZWN0UnVsZUZlYXR1cmVTZXQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTc3
LDggKzc4LDggQEAgcHVibGljOgogICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludEFz
c2lnbmVkVG8oKSBjb25zdCB7IHJldHVybiBtX2luc2VydGlvblBvaW50QXNzaWduZWRUbzsgfQog
ICAgIHZvaWQgc2V0SW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvKEluc2VydGlvblBvaW50KiBpbnNl
cnRpb25Qb2ludCkgeyBtX2luc2VydGlvblBvaW50QXNzaWduZWRUbyA9IGluc2VydGlvblBvaW50
OyB9CiAKLSAgICB2b2lkIHJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQoU2hhZG93Um9vdCosIEluc2Vy
dGlvblBvaW50Kik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQoU2hhZG93Um9v
dCosIEluc2VydGlvblBvaW50Kik7CisgICAgdm9pZCByZWdpc3Rlckluc2VydGlvblBvaW50KElu
c2VydGlvblBvaW50Kik7CisgICAgdm9pZCB1bnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQoSW5zZXJ0
aW9uUG9pbnQqKTsKICAgICBib29sIGhhc1NoYWRvd0VsZW1lbnRDaGlsZHJlbigpIGNvbnN0IHsg
cmV0dXJuIG1fbnVtYmVyT2ZTaGFkb3dFbGVtZW50Q2hpbGRyZW4gPiAwOyB9CiAgICAgYm9vbCBo
YXNDb250ZW50RWxlbWVudENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPZkNvbnRl
bnRFbGVtZW50Q2hpbGRyZW4gPiAwOyB9CiAKQEAgLTEyMiwyMyArMTIzLDM1IEBAIHB1YmxpYzoK
ICAgICB+Q29udGVudERpc3RyaWJ1dG9yKCk7CiAKICAgICBJbnNlcnRpb25Qb2ludCogZmluZElu
c2VydGlvblBvaW50Rm9yKGNvbnN0IE5vZGUqIGtleSkgY29uc3Q7Ci0KLSAgICB2b2lkIHNldFZh
bGlkaXR5KFZhbGlkaXR5IHZhbGlkaXR5KSB7IG1fdmFsaWRpdHkgPSB2YWxpZGl0eTsgfQotCi0g
ICAgdm9pZCBkaXN0cmlidXRlKEVsZW1lbnQqIGhvc3QpOwotICAgIGJvb2wgaW52YWxpZGF0ZShF
bGVtZW50KiBob3N0KTsKLSAgICB2b2lkIGZpbmlzaEluaXZhbGlkYXRpb24oKTsKLSAgICBib29s
IG5lZWRzRGlzdHJpYnV0aW9uKCkgY29uc3Q7Ci0gICAgYm9vbCBuZWVkc0ludmFsaWRhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsaWRpdHkgIT0gSW52YWxpZGF0ZWQ7IH0KKyAgICBjb25zdCBT
ZWxlY3RSdWxlRmVhdHVyZVNldCYgZW5zdXJlU2VsZWN0RmVhdHVyZVNldChFbGVtZW50U2hhZG93
Kik7CiAKICAgICB2b2lkIGRpc3RyaWJ1dGVTZWxlY3Rpb25zVG8oSW5zZXJ0aW9uUG9pbnQqLCBj
b25zdCBDb250ZW50RGlzdHJpYnV0aW9uJiBwb29sLCBWZWN0b3I8Ym9vbD4mIGRpc3RyaWJ1dGVk
KTsKICAgICB2b2lkIGRpc3RyaWJ1dGVOb2RlQ2hpbGRyZW5UbyhJbnNlcnRpb25Qb2ludCosIENv
bnRhaW5lck5vZGUqKTsKLSAgICB2b2lkIGludmFsaWRhdGVEaXN0cmlidXRpb25JbihDb250ZW50
RGlzdHJpYnV0aW9uKik7CisKKyAgICB2b2lkIGVuc3VyZURpc3RyaWJ1dGlvbihFbGVtZW50KiBo
b3N0KTsKKyAgICB2b2lkIGludmFsaWRhdGVEaXN0cmlidXRpb24oRWxlbWVudCogaG9zdCk7Cisg
ICAgdm9pZCBkaWRTaGFkb3dCb3VuZGFyeUNoYW5nZShFbGVtZW50KiBob3N0KTsKKyAgICB2b2lk
IGRpZEFmZmVjdFNlbGVjdG9yKEVsZW1lbnQqIGhvc3QsIEFmZmVjdGVkU2VsZWN0b3JNYXNrKTsK
KyAgICB2b2lkIHdpbGxBZmZlY3RTZWxlY3RvcihFbGVtZW50KiBob3N0KTsKKworICAgIHN0YXRp
YyB2b2lkIGVuc3VyZURpc3RyaWJ1dGlvbkZyb21Eb2N1bWVudChFbGVtZW50KiBzb3VyY2UpOwog
CiBwcml2YXRlOgorICAgIHZvaWQgZGlzdHJpYnV0ZShFbGVtZW50KiBob3N0KTsKKyAgICBib29s
IGludmFsaWRhdGUoRWxlbWVudCogaG9zdCk7CiAgICAgdm9pZCBwb3B1bGF0ZShOb2RlKiwgQ29u
dGVudERpc3RyaWJ1dGlvbiYpOwogCisgICAgdm9pZCBjb2xsZWN0U2VsZWN0RmVhdHVyZVNldEZy
b20oU2hhZG93Um9vdCopOworICAgIGJvb2wgbmVlZHNTZWxlY3RGZWF0dXJlU2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9uZWVkc1NlbGVjdEZlYXR1cmVTZXQ7IH0KKyAgICB2b2lkIHNldE5lZWRzU2Vs
ZWN0RmVhdHVyZVNldCgpIHsgbV9uZWVkc1NlbGVjdEZlYXR1cmVTZXQgPSB0cnVlOyB9CisKKyAg
ICB2b2lkIHNldFZhbGlkaXR5KFZhbGlkaXR5IHZhbGlkaXR5KSB7IG1fdmFsaWRpdHkgPSB2YWxp
ZGl0eTsgfQorICAgIGJvb2wgbmVlZHNEaXN0cmlidXRpb24oKSBjb25zdDsKKyAgICBib29sIG5l
ZWRzSW52YWxpZGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92YWxpZGl0eSAhPSBJbnZhbGlkYXRl
ZDsgfQorCiAgICAgSGFzaE1hcDxjb25zdCBOb2RlKiwgUmVmUHRyPEluc2VydGlvblBvaW50PiA+
IG1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQ7CisgICAgU2VsZWN0UnVsZUZlYXR1cmVTZXQgbV9zZWxl
Y3RGZWF0dXJlczsKKyAgICBib29sIG1fbmVlZHNTZWxlY3RGZWF0dXJlU2V0IDogMTsKICAgICB1
bnNpZ25lZCBtX3ZhbGlkaXR5IDogMjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCmluZGV4IDkwYzc4NmFkYTg5M2Q3NTNjYmU2
N2Q4NGExODk0ZDk2NTk5YzNkMDQuLjM3ZDU3MGI1YmE2MTIwNjk5NzZmMThmZTdjZmIzOWQxNTAy
YTRlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRF
bGVtZW50LmNwcApAQCAtOTksMTAgKzk5LDggQEAgdm9pZCBIVE1MQ29udGVudEVsZW1lbnQ6OmVu
c3VyZVNlbGVjdFBhcnNlZCgpCiB2b2lkIEhUTUxDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkK
IHsKICAgICBpZiAobmFtZSA9PSBzZWxlY3RBdHRyKSB7Ci0gICAgICAgIGlmIChTaGFkb3dSb290
KiByb290ID0gY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkgewotICAgICAgICAgICAgcm9vdC0+b3du
ZXIoKS0+c2V0U2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQoKTsKLSAgICAgICAgICAgIHJv
b3QtPm93bmVyKCktPmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKLSAgICAgICAgfQorICAgICAg
ICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IGNvbnRhaW5pbmdTaGFkb3dSb290KCkpCisgICAgICAg
ICAgICByb290LT5vd25lcigpLT53aWxsQWZmZWN0U2VsZWN0b3IoKTsKICAgICAgICAgbV9zaG91
bGRQYXJzZVNlbGVjdG9yTGlzdCA9IHRydWU7CiAgICAgfSBlbHNlCiAgICAgICAgIEluc2VydGlv
blBvaW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oCmluZGV4IGE2ZGM1ZjRjYmI0MTUwN2Yx
YjU0YjBmNjA5OGRjM2I5MWFiMDkxYjMuLmEzMThjZjc4YmVjNjkzZGExNzg4YmUyZjFiNzQ0ZDVm
NDVlMWM1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250
ZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50
RWxlbWVudC5oCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNT
ZWxlY3RWYWxpZCgpOwogICAgIHZpcnR1YWwgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rv
ckxpc3QoKTsKICAgICB2aXJ0dWFsIFR5cGUgaW5zZXJ0aW9uUG9pbnRUeXBlKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gQ29udGVudEluc2VydGlvblBvaW50OyB9CisgICAgdmlydHVhbCBib29s
IGNhbkFmZmVjdFNlbGVjdG9yKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiBw
cm90ZWN0ZWQ6CiAgICAgSFRNTENvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNo
YWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0Vs
ZW1lbnQuY3BwCmluZGV4IDIyYzA3NjU2YTU1N2U0N2M5M2ZlYjUzYWIzZTM1NTIyMDdhZjhlOWMu
LjE3NDdlY2QxNzI5MDljZjIxZWVjZjYyM2I2Nzk3MzBiM2ZkNTUwZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5jcHAKQEAgLTcwLDcgKzcw
LDcgQEAgU2hhZG93Um9vdCogSFRNTFNoYWRvd0VsZW1lbnQ6Om9sZGVyU2hhZG93Um9vdCgpCiAg
ICAgaWYgKCF0cmVlU2NvcGUoKS0+cm9vdE5vZGUoKS0+aXNTaGFkb3dSb290KCkpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgdG9TaGFkb3dSb290KHRyZWVTY29wZSgpLT5yb290Tm9kZSgpKS0+
b3duZXIoKS0+ZW5zdXJlRGlzdHJpYnV0aW9uRnJvbURvY3VtZW50KCk7CisgICAgQ29udGVudERp
c3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb25Gcm9tRG9jdW1lbnQodGhpcyk7CiAKICAgICBT
aGFkb3dSb290KiBvbGRlciA9IHRvU2hhZG93Um9vdCh0cmVlU2NvcGUoKS0+cm9vdE5vZGUoKSkt
Pm9sZGVyU2hhZG93Um9vdCgpOwogICAgIGlmICghb2xkZXIgfHwgb2xkZXItPnR5cGUoKSAhPSBT
aGFkb3dSb290OjpBdXRob3JTaGFkb3dSb290IHx8IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6
YXNzaWduZWRUbyhvbGRlcikgIT0gdGhpcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0luc2VydGlvblBvaW50LmNwcAppbmRleCA0NGUzNGI5NTM0NTc0ZWMwNjhkZWVkMmFmZDgwYTY5
NjY0N2JhYzU5Li41YWM1MjBkNTVlZDM5MGZlMmZiOTdmMTAwOGJhYzkzNjY5ZjI1ODUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCkBAIC05OSwx
MCArOTksNyBAQCBib29sIEluc2VydGlvblBvaW50Ojppc0FjdGl2ZSgpIGNvbnN0CiAKIFBhc3NS
ZWZQdHI8Tm9kZUxpc3Q+IEluc2VydGlvblBvaW50OjpnZXREaXN0cmlidXRlZE5vZGVzKCkgY29u
c3QKIHsKLSAgICBDb250YWluZXJOb2RlKiByb290Tm9kZSA9IHRyZWVTY29wZSgpLT5yb290Tm9k
ZSgpOwotICAgIGlmIChyb290Tm9kZS0+aXNTaGFkb3dSb290KCkpCi0gICAgICAgIGlmIChFbGVt
ZW50U2hhZG93KiByb290T3duZXIgPSB0b1NoYWRvd1Jvb3Qocm9vdE5vZGUpLT5vd25lcigpKQot
ICAgICAgICAgICAgcm9vdE93bmVyLT5lbnN1cmVEaXN0cmlidXRpb25Gcm9tRG9jdW1lbnQoKTsK
KyAgICBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1dGlvbkZyb21Eb2N1bWVudChj
b25zdF9jYXN0PEluc2VydGlvblBvaW50Kj4odGhpcykpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxO
b2RlPiA+IG5vZGVzOwogCkBAIC0xMzEsMTEgKzEyOCwxMiBAQCBOb2RlOjpJbnNlcnRpb25Ob3Rp
ZmljYXRpb25SZXF1ZXN0IEluc2VydGlvblBvaW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9k
ZSogaQogCiAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBjb250YWluaW5nU2hhZG93Um9vdCgp
KSB7CiAgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiByb290T3duZXIgPSByb290LT5vd25lcigp
KSB7Ci0gICAgICAgICAgICByb290T3duZXItPnNldFZhbGlkaXR5VW5kZXRlcm1pbmVkKCk7Ci0g
ICAgICAgICAgICByb290T3duZXItPmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKKyAgICAgICAg
ICAgIHJvb3RPd25lci0+ZGlzdHJpYnV0b3IoKS5kaWRTaGFkb3dCb3VuZGFyeUNoYW5nZShyb290
LT5ob3N0KCkpOwogICAgICAgICAgICAgaWYgKGlzQWN0aXZlKCkgJiYgIW1fcmVnaXN0ZXJlZFdp
dGhTaGFkb3dSb290ICYmIGluc2VydGlvblBvaW50LT50cmVlU2NvcGUoKS0+cm9vdE5vZGUoKSA9
PSByb290KSB7CiAgICAgICAgICAgICAgICAgbV9yZWdpc3RlcmVkV2l0aFNoYWRvd1Jvb3QgPSB0
cnVlOwotICAgICAgICAgICAgICAgIHJvb3QtPmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCktPnJl
Z2lzdGVySW5zZXJ0aW9uUG9pbnQocm9vdCwgdGhpcyk7CisgICAgICAgICAgICAgICAgcm9vdC0+
ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24oKS0+cmVnaXN0ZXJJbnNlcnRpb25Qb2ludCh0aGlzKTsK
KyAgICAgICAgICAgICAgICBpZiAoY2FuQWZmZWN0U2VsZWN0b3IoKSkKKyAgICAgICAgICAgICAg
ICAgICAgcm9vdE93bmVyLT53aWxsQWZmZWN0U2VsZWN0b3IoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KQEAgLTE2MCw3ICsxNTgsOSBAQCB2b2lkIEluc2VydGlvblBvaW50Ojpy
ZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKICAgICBpZiAobV9yZWdp
c3RlcmVkV2l0aFNoYWRvd1Jvb3QgJiYgaW5zZXJ0aW9uUG9pbnQtPnRyZWVTY29wZSgpLT5yb290
Tm9kZSgpID09IHJvb3QpIHsKICAgICAgICAgQVNTRVJUKHJvb3QpOwogICAgICAgICBtX3JlZ2lz
dGVyZWRXaXRoU2hhZG93Um9vdCA9IGZhbHNlOwotICAgICAgICByb290LT5lbnN1cmVTY29wZURp
c3RyaWJ1dGlvbigpLT51bnJlZ2lzdGVySW5zZXJ0aW9uUG9pbnQocm9vdCwgdGhpcyk7CisgICAg
ICAgIHJvb3QtPmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCktPnVucmVnaXN0ZXJJbnNlcnRpb25Q
b2ludCh0aGlzKTsKKyAgICAgICAgaWYgKHJvb3RPd25lciAmJiBjYW5BZmZlY3RTZWxlY3Rvcigp
KQorICAgICAgICAgICAgcm9vdE93bmVyLT53aWxsQWZmZWN0U2VsZWN0b3IoKTsKICAgICB9CiAK
ICAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggM2JkNzUyYzg3M2QxZjFh
NTk5ZTQ3OTBiODY1OTRiMDc1ZWVmN2VjZS4uMjBjZTc3ZDBhMzc5ZWZjYzI0NDhhNjU4OTlkNmM1
OGYzN2Y5YzliOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0
aW9uUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2lu
dC5oCkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RW
YWxpZCgpID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JM
aXN0KCkgPSAwOwogICAgIHZpcnR1YWwgVHlwZSBpbnNlcnRpb25Qb2ludFR5cGUoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGNhbkFmZmVjdFNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAogICAgIGJvb2wgcmVzZXRTdHlsZUluaGVyaXRhbmNlKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRSZXNldFN0eWxlSW5oZXJpdGFuY2UoYm9vbCk7CkBAIC04OCw2ICs4OSw3IEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlz
SW5zZXJ0aW9uUG9pbnROb2RlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorCiBw
cml2YXRlOgogCiAgICAgQ29udGVudERpc3RyaWJ1dGlvbiBtX2Rpc3RyaWJ1dGlvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA0ZThiZjhmNDY5MWVmOTRkMTYzODBiMTg1
MjNkY2E5OTUxZDQ1MjhkLi45YTQzNzlmMzUxN2Q2MzA3YjU3MDkxMjFhNjVhMGJlN2NiYzE4MjMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0zNDAsOCArMzQwLDcgQEAg
Ym9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9ySWRJblNoYWRvdyhFbGVtZW50KiBob3N0LCBj
b25zdCBTdHJpbmcmIGlkVmFsdWUsIEUKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAg
aG9zdC0+c2hhZG93KCktPmVuc3VyZVNlbGVjdEZlYXR1cmVTZXRDb2xsZWN0ZWQoKTsKLSAgICBy
ZXR1cm4gaG9zdC0+c2hhZG93KCktPnNlbGVjdFJ1bGVGZWF0dXJlU2V0KCkuaGFzU2VsZWN0b3JG
b3JJZChpZFZhbHVlKTsKKyAgICByZXR1cm4gaG9zdC0+c2hhZG93KCktPmRpc3RyaWJ1dG9yKCku
ZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFkb3coKSkuaGFzU2VsZWN0b3JGb3JJZChp
ZFZhbHVlKTsKIH0KIAogYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yQ2xhc3NJblNoYWRv
dyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCkBAIC0zNTEsOCArMzUwLDcgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yQ2xh
c3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIGNsYXNzTmEKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCi0gICAgaG9zdC0+c2hhZG93KCktPmVuc3VyZVNlbGVjdEZlYXR1
cmVTZXRDb2xsZWN0ZWQoKTsKLSAgICByZXR1cm4gaG9zdC0+c2hhZG93KCktPnNlbGVjdFJ1bGVG
ZWF0dXJlU2V0KCkuaGFzU2VsZWN0b3JGb3JDbGFzcyhjbGFzc05hbWUpOworICAgIHJldHVybiBo
b3N0LT5zaGFkb3coKS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGhvc3Qt
PnNoYWRvdygpKS5oYXNTZWxlY3RvckZvckNsYXNzKGNsYXNzTmFtZSk7CiB9CiAKIGJvb2wgSW50
ZXJuYWxzOjpoYXNTZWxlY3RvckZvckF0dHJpYnV0ZUluU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNv
bnN0IFN0cmluZyYgYXR0cmlidXRlTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0zNjIsOCAr
MzYwLDcgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRlSW5TaGFkb3co
RWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBhdHQKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCi0gICAgaG9zdC0+c2hhZG93KCktPmVuc3VyZVNlbGVjdEZlYXR1cmVTZXRDb2xsZWN0ZWQo
KTsKLSAgICByZXR1cm4gaG9zdC0+c2hhZG93KCktPnNlbGVjdFJ1bGVGZWF0dXJlU2V0KCkuaGFz
U2VsZWN0b3JGb3JBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgcmV0dXJuIGhvc3QtPnNo
YWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoaG9zdC0+c2hhZG93
KCkpLmhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwogfQogCiBib29sIElu
dGVybmFsczo6aGFzU2VsZWN0b3JGb3JQc2V1ZG9DbGFzc0luU2hhZG93KEVsZW1lbnQqIGhvc3Qs
IGNvbnN0IFN0cmluZyYgcHNldWRvQ2xhc3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzczLDgg
KzM3MCw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvclBzZXVkb0NsYXNzSW5TaGFk
b3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBwCiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAotICAgIGhvc3QtPnNoYWRvdygpLT5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVk
KCk7Ci0gICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIGZlYXR1cmVTZXQgPSBob3N0LT5z
aGFkb3coKS0+c2VsZWN0UnVsZUZlYXR1cmVTZXQoKTsKKyAgICBjb25zdCBTZWxlY3RSdWxlRmVh
dHVyZVNldCYgZmVhdHVyZVNldCA9IGhvc3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3Vy
ZVNlbGVjdEZlYXR1cmVTZXQoaG9zdC0+c2hhZG93KCkpOwogICAgIGlmIChwc2V1ZG9DbGFzcyA9
PSAiY2hlY2tlZCIpCiAgICAgICAgIHJldHVybiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9yQ2hl
Y2tlZCgpOwogICAgIGlmIChwc2V1ZG9DbGFzcyA9PSAiZW5hYmxlZCIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluIGIvU291
cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgppbmRleCA2
YzgwNWZjYzFiMTZlYTkwY2UyYTkyOGMzMzYwYjJjNmVlZjNlMGIxLi4xZDBkMWQ0NmJkN2IzZjdi
MmJiOWIyMDRjODkxMGY5OWIzZWE2NzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KQEAgLTE4MSw3ICsxODEsNiBAQCBF
WFBPUlRTCiAgICAgICAgID9jcmVhdGVXcmFwcGVyQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NA
QFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWTm9kZUAxQEBaCiAgICAg
ICAgID9kZXNlcmlhbGl6ZUBTZXJpYWxpemVkU2NyaXB0VmFsdWVAV2ViQ29yZUBAUUFFP0FWSlNW
YWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUA0QFBBVkpTR2xvYmFsT2JqZWN0QDRAUEFWPyRWZWN0b3JA
Vj8kUmVmUHRyQFZNZXNzYWdlUG9ydEBXZWJDb3JlQEBAV1RGQEAkMDBAV1RGQEBXNFNlcmlhbGl6
YXRpb25FcnJvck1vZGVAMkBAWgogICAgICAgICA/ZG9jdW1lbnRTdGF0ZUBIaXN0b3J5SXRlbUBX
ZWJDb3JlQEBRQkVBQlY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQFhaCi0gICAgICAg
ID9lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkQEVsZW1lbnRTaGFkb3dAV2ViQ29yZUBA
UUFFWFhaCiAgICAgICAgID9lcXVhbEBXVEZAQFlBX05QQlZTdHJpbmdJbXBsQDFAUEJFQFoKICAg
ICAgICAgP2VxdWFsQFdURkBAWUFfTlBCVlN0cmluZ0ltcGxAMUAwQFoKICAgICAgICAgP2VxdWFs
SWdub3JpbmdDYXNlQFdURkBAWUFfTlBBVlN0cmluZ0ltcGxAMUBQQkVAWgpAQCAtNTcwLDcgKzU2
OSw2IEBAIEVYUE9SVFMKICAgICAgICAgP2NyZWF0ZVdyYXBwZXJAV2ViQ29yZUBAWUE/QVZKU1Zh
bHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQVZOb2RlQDFA
QFoKICAgICAgICAgP2Rlc2VyaWFsaXplQFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUBXZWJDb3JlQEBR
QUU/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDRAUEFWSlNHbG9iYWxPYmplY3RANEBQQVY/
JFZlY3RvckBWPyRSZWZQdHJAVk1lc3NhZ2VQb3J0QFdlYkNvcmVAQEBXVEZAQCQwMEBXVEZAQFc0
U2VyaWFsaXphdGlvbkVycm9yTW9kZUAyQEBaCiAgICAgICAgID9kb2N1bWVudFN0YXRlQEhpc3Rv
cnlJdGVtQFdlYkNvcmVAQFFCRUFCVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAWFoK
LSAgICAgICAgP2Vuc3VyZVNlbGVjdEZlYXR1cmVTZXRDb2xsZWN0ZWRARWxlbWVudFNoYWRvd0BX
ZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2VxdWFsQFdURkBAWUFfTlBCVlN0cmluZ0ltcGxAMUBQ
QkVAWgogICAgICAgICA/ZXF1YWxAV1RGQEBZQV9OUEJWU3RyaW5nSW1wbEAxQDBAWgogICAgICAg
ICA/ZXF1YWxJZ25vcmluZ0Nhc2VAV1RGQEBZQV9OUEFWU3RyaW5nSW1wbEAxQFBCRUBaCkBAIC05
NTksNyArOTU3LDYgQEAgRVhQT1JUUwogICAgICAgICA/Y3JlYXRlV3JhcHBlckBXZWJDb3JlQEBZ
QT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBB
Vk5vZGVAMUBAWgogICAgICAgICA/ZGVzZXJpYWxpemVAU2VyaWFsaXplZFNjcmlwdFZhbHVlQFdl
YkNvcmVAQFFBRT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVANEBQQVZKU0dsb2JhbE9iamVj
dEA0QFBBVj8kVmVjdG9yQFY/JFJlZlB0ckBWTWVzc2FnZVBvcnRAV2ViQ29yZUBAQFdURkBAJDAw
QFdURkBAVzRTZXJpYWxpemF0aW9uRXJyb3JNb2RlQDJAQFoKICAgICAgICAgP2RvY3VtZW50U3Rh
dGVASGlzdG9yeUl0ZW1AV2ViQ29yZUBAUUJFQUJWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBA
V1RGQEBYWgotICAgICAgICA/ZW5zdXJlU2VsZWN0RmVhdHVyZVNldENvbGxlY3RlZEBFbGVtZW50
U2hhZG93QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/ZXF1YWxAV1RGQEBZQV9OUEJWU3RyaW5n
SW1wbEAxQFBCRUBaCiAgICAgICAgID9lcXVhbEBXVEZAQFlBX05QQlZTdHJpbmdJbXBsQDFAMEBa
CiAgICAgICAgID9lcXVhbElnbm9yaW5nQ2FzZUBXVEZAQFlBX05QQVZTdHJpbmdJbXBsQDFAUEJF
QFoKQEAgLTEzNDgsMTEgKzEzNDUsMTEgQEAgRVhQT1JUUwogICAgICAgICA/Y3JlYXRlV3JhcHBl
ckBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2Jh
bE9iamVjdEAxQFBBVk5vZGVAMUBAWgogICAgICAgICA/ZGVzZXJpYWxpemVAU2VyaWFsaXplZFNj
cmlwdFZhbHVlQFdlYkNvcmVAQFFBRT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVANEBQQVZK
U0dsb2JhbE9iamVjdEA0QFBBVj8kVmVjdG9yQFY/JFJlZlB0ckBWTWVzc2FnZVBvcnRAV2ViQ29y
ZUBAQFdURkBAJDAwQFdURkBAVzRTZXJpYWxpemF0aW9uRXJyb3JNb2RlQDJAQFoKICAgICAgICAg
P2RvY3VtZW50U3RhdGVASGlzdG9yeUl0ZW1AV2ViQ29yZUBAUUJFQUJWPyRWZWN0b3JAVlN0cmlu
Z0BXVEZAQCQwQUBAV1RGQEBYWgotICAgICAgICA/ZW5zdXJlU2VsZWN0RmVhdHVyZVNldENvbGxl
Y3RlZEBFbGVtZW50U2hhZG93QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/ZXF1YWxAV1RGQEBZ
QV9OUEJWU3RyaW5nSW1wbEAxQFBCRUBaCiAgICAgICAgID9lcXVhbEBXVEZAQFlBX05QQlZTdHJp
bmdJbXBsQDFAMEBaCiAgICAgICAgID9lcXVhbElnbm9yaW5nQ2FzZUBXVEZAQFlBX05QQVZTdHJp
bmdJbXBsQDFAUEJFQFoKICAgICAgICAgP2V4dGVybmFsUmVwcmVzZW50YXRpb25AV2ViQ29yZUBA
WUE/QVZTdHJpbmdAV1RGQEBQQVZFbGVtZW50QDFASUBaCisgICAgICAgID9lbnN1cmVTZWxlY3RG
ZWF0dXJlU2V0QENvbnRlbnREaXN0cmlidXRvckBXZWJDb3JlQEBRQUVBQlZTZWxlY3RSdWxlRmVh
dHVyZVNldEAyQFBBVkVsZW1lbnRTaGFkb3dAMkBAWgogICAgICAgICA/aGFzU2hhZG93RWxlbWVu
dEBTY29wZUNvbnRlbnREaXN0cmlidXRpb25AV2ViQ29yZUBAU0FfTlBCVlNoYWRvd1Jvb3RAMkBA
WgogICAgICAgICA/aGFzQ29udGVudEVsZW1lbnRAU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uQFdl
YkNvcmVAQFNBX05QQlZTaGFkb3dSb290QDJAQFoKICAgICAgICAgP2NvdW50RWxlbWVudFNoYWRv
d0BTY29wZUNvbnRlbnREaXN0cmlidXRpb25AV2ViQ29yZUBAU0FJUEJWU2hhZG93Um9vdEAyQEBa
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1
dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCBhOTE0NzAyOGIxYWMwYjk1NTQ4ODgwOTdhYWNk
Y2QxNTAxZDFhZGRjLi41NzYxY2E4ZjM2MzhmNDE4YTg0Y2U3YmJjOTQxYTlmYzMxMDBlZmUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTU4LDcgKzU4LDYgQEAgX1pON1dlYkNvcmUxMlRl
eHRJdGVyYXRvcjI2cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhFUE5TXzEzQ29udGFpbmVyTm9k
ZUVpaWI7CiBfWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjlnZXRMb2NhdGlvbkFuZExlbmd0aEZy
b21SYW5nZUVQTlNfN0VsZW1lbnRFUEtOU181UmFuZ2VFUmpTNl87CiBfWk43V2ViQ29yZTEyVGV4
dEl0ZXJhdG9yMjlnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZUVQTlNfN0VsZW1lbnRFUEtO
U181UmFuZ2VFUm1TNl87CiBfWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MjBwYWdlTnVtYmVyRm9y
RWxlbWVudEVQTlNfN0VsZW1lbnRFUktOU185RmxvYXRTaXplRTsKLV9aTjdXZWJDb3JlMTNFbGVt
ZW50U2hhZG93MzFlbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkRXY7CiBfWk43V2ViQ29y
ZTEzY3JlYXRlV3JhcHBlckVQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0
RVBOU180Tm9kZUU7CiBfWk43V2ViQ29yZTE0Q2xpZW50UmVjdExpc3RDMUVSS04zV1RGNlZlY3Rv
cklOU185RmxvYXRRdWFkRUxqMEVFRTsKIF9aTjdXZWJDb3JlMTRDbGllbnRSZWN0TGlzdEMxRVJL
TjNXVEY2VmVjdG9ySU5TXzlGbG9hdFF1YWRFTG0wRUVFOwpAQCAtMTU0LDYgKzE1Myw3IEBAIF9a
Tks3V2ViQ29yZTVSYW5nZTR0ZXh0RXY7CiBfWk43V2ViQ29yZTIyY291bnRlclZhbHVlRm9yRWxl
bWVudEVQTlNfN0VsZW1lbnRFOwogX1pOSzdXZWJDb3JlMTREb2N1bWVudE1hcmtlcjExZGVzY3Jp
cHRpb25FdjsKIF9aTjdXZWJDb3JlOERvY3VtZW50MTZpc1BhZ2VCb3hWaXNpYmxlRWk7CitfWk43
V2ViQ29yZTE4Q29udGVudERpc3RyaWJ1dG9yMjJlbnN1cmVTZWxlY3RGZWF0dXJlU2V0RVBOU18x
M0VsZW1lbnRTaGFkb3dFOwogX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIxN3N1c3Bl
bmRBbmltYXRpb25zRXY7CiBfWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjE2cmVzdW1l
QW5pbWF0aW9uc0V2OwogX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIyMHBhdXNlQW5p
bWF0aW9uQXRUaW1lRVBOU18xMlJlbmRlck9iamVjdEVSS04zV1RGNlN0cmluZ0VkOwpkaWZmIC0t
Z2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDAxOGNjMDFiYTAyMjVkMzJlMmY5NGI5
NmE3NTQ5OGQ1NjVkZTMwN2MuLmMwMzQ0NmI5YjI1NzU3MWNhNzhmOGQ0YmJmMTE1OWRkZDZjZDBh
ZWMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAxMy0wMS0wOSAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgW1NoYWRvdyBET01dIERpc3RyaWJ1dGlvbiByZWxhdGVkIGNvZGUgb24gRWxlbWVudFNo
YWRvdyBzaG91bGQgYmUgbWluaW1pemVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA2Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBH
bGF6a292LgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwog
MjAxMy0wMS0wOCAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgogCiAgICAg
ICAgIEFkZCBhbiBBdXRvY29uZiBtYWNybyB0aGF0IGNoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gZmVh
dHVyZSBpcyBlbmFibGVkCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>