<?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>105438</bug_id>
          
          <creation_ts>2012-12-19 08:15:32 -0800</creation_ts>
          <short_desc>Web Inspector: Provide an isolated InspectorState instance rather than the shared one for each Agent</short_desc>
          <delta_ts>2012-12-28 23:56:25 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>105722</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>105723</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>794684</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-12-19 08:15:32 -0800</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795416</commentid>
    <comment_count>1</comment_count>
      <attachid>180336</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-12-20 06:59:37 -0800</bug_when>
    <thetext>Created attachment 180336
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795417</commentid>
    <comment_count>2</comment_count>
      <attachid>180336</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-12-20 07:08:27 -0800</bug_when>
    <thetext>Comment on attachment 180336
Patch

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

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:-417
&gt; -    if (!scripts) {

Why is this gone?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795419</commentid>
    <comment_count>3</comment_count>
      <attachid>180336</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-12-20 07:12:53 -0800</bug_when>
    <thetext>Comment on attachment 180336
Patch

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

&gt;&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:-417
&gt;&gt; -    if (!scripts) {
&gt; 
&gt; Why is this gone?

Please see the changelog entry for this method and getObject() implementation :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795429</commentid>
    <comment_count>4</comment_count>
      <attachid>180336</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-12-20 07:30:50 -0800</bug_when>
    <thetext>Comment on attachment 180336
Patch

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

&gt;&gt;&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:-417
&gt;&gt;&gt; -    if (!scripts) {
&gt;&gt; 
&gt;&gt; Why is this gone?
&gt; 
&gt; Please see the changelog entry for this method and getObject() implementation :)

Ok, I see. I did not know the fact that getObject() creates object if field is missing. The sad fact is that it sort of counters the effect of remove upon the first check of this property. Looks like we might be better off with replacing a call to remove() with setting the field to an empty object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795436</commentid>
    <comment_count>5</comment_count>
      <attachid>180336</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-20 07:39:03 -0800</bug_when>
    <thetext>Comment on attachment 180336
Patch

I&apos;d suggest the following refactoring that would make things even better: structure state so that instead of holding all agents&apos; states in a single flat m_properties map, it would have an object property per agent. The resetting the state of a particular agent would be as simple as resetting its state object (or replacing it with new blank object). Such refactoring would require InspectorController to shard state object and pass individual InspectorState into each of the agents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796289</commentid>
    <comment_count>6</comment_count>
      <attachid>180516</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-12-21 07:13:15 -0800</bug_when>
    <thetext>Created attachment 180516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796293</commentid>
    <comment_count>7</comment_count>
      <attachid>180516</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-21 07:20:34 -0800</bug_when>
    <thetext>Comment on attachment 180516
Patch

Attachment 180516 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15445493</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796303</commentid>
    <comment_count>8</comment_count>
      <attachid>180522</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-12-21 07:37:17 -0800</bug_when>
    <thetext>Created attachment 180522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796314</commentid>
    <comment_count>9</comment_count>
      <attachid>180522</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-21 08:01:30 -0800</bug_when>
    <thetext>Comment on attachment 180522
Patch

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

&gt; Source/WebCore/inspector/InspectorState.cpp:118
&gt; +    InspectorState* result = new InspectorState(this, stateProperties);

This should be OwnPtr&lt;InspectorState&gt; or you can inline this.

&gt; Source/WebCore/inspector/InspectorState.cpp:123
&gt; +void InspectorCompositeState::loadFromCookie(const String&amp; InspectorCompositeStateCookie)

InspectorCompositeStateCookie -&gt; inspectorCompositeStateCookie</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796894</commentid>
    <comment_count>10</comment_count>
      <attachid>180649</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-12-23 23:31:05 -0800</bug_when>
    <thetext>Created attachment 180649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796908</commentid>
    <comment_count>11</comment_count>
      <attachid>180649</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-24 00:31:58 -0800</bug_when>
    <thetext>Comment on attachment 180649
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Web Inspector: Make use of the new InspectorState::remove() in inspector agents

The main part of this change is about introduction of a composite state that allows to avoid name collisions, we should probably rename the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796917</commentid>
    <comment_count>12</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-12-24 00:50:06 -0800</bug_when>
    <thetext>The change in its current variation allows to get rid of agent-specific prefix hacks for state property names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796918</commentid>
    <comment_count>13</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-12-24 01:08:44 -0800</bug_when>
    <thetext>Committed r138436: &lt;http://trac.webkit.org/changeset/138436&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796984</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-24 08:41:16 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 105723</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798065</commentid>
    <comment_count>15</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-12-28 23:56:25 -0800</bug_when>
    <thetext>Re-implemented in bug 105722.

*** This bug has been marked as a duplicate of bug 105722 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180336</attachid>
            <date>2012-12-20 06:59:37 -0800</date>
            <delta_ts>2012-12-21 07:13:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105438-20121220185652.patch</filename>
            <type>text/plain</type>
            <size>4675</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQyODZmNmExYTNkMzQ3
NDU5ZmM0OGExMTRmOTBjZjNmMGM4YjYzNy4uOTUxN2M3NzZmZGUzOTUzNzVhNDZmYWExOTFiMDY1
ZTgxYmM2ZDFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTEyLTIwICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogTWFrZSB1c2Ugb2YgdGhlIG5ldyBJbnNwZWN0b3JTdGF0ZTo6cmVtb3ZlKCkgaW4gaW5z
cGVjdG9yIGFnZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA1NDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU2V0dGluZyBwcm9wZXJ0eSB2YWx1ZXMgb2YgSW5zcGVjdG9yU3RhdGUgdG8gImVtcHR5
IiBvYmplY3RzIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHJlbW92aW5nIHRoZW0gZnJvbSB0aGUgc3Rh
dGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaXNhYmxlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6OmFkZFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQpOgorICAgICAgICBSZW1vdmUg
dW5uZWNlc3NhcnkgY29kZSAob2JqZWN0IGlzIGNyZWF0ZWQgYW5kIHB1dCBpbnRvIHRoZSBtYXAg
aWYgbm9uZSBpcyBmb3VuZCkuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlz
YWJsZSk6CisKIDIwMTItMTItMTkgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtDaHJvbWl1bV0gUmVtb3ZlIGlkYkZhY3RvcnkgZnJvbSBQbGF0Zm9ybVN1
cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcAppbmRleCA5Y2Y4ZDAxY2JjNmYyYmY1OGIxZjgwOWVmYTVhZjBjMDgxOWEyYTBk
Li5hNjFiMjE0YWMwNTQyMjE0Nzg1ODViMGI0MjhiZmNmY2RhZDIwNjYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC05
NCw3ICs5NCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZW5hYmxlKCkKIAogdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaXNhYmxlKCkKIHsKLSAgICBtX3N0YXRlLT5zZXRP
YmplY3QoRGVidWdnZXJBZ2VudFN0YXRlOjpqYXZhU2NyaXB0QnJlYWtwb2ludHMsIEluc3BlY3Rv
ck9iamVjdDo6Y3JlYXRlKCkpOworICAgIG1fc3RhdGUtPnJlbW92ZShEZWJ1Z2dlckFnZW50U3Rh
dGU6OmphdmFTY3JpcHRCcmVha3BvaW50cyk7CiAgICAgbV9zdGF0ZS0+c2V0TG9uZyhEZWJ1Z2dl
ckFnZW50U3RhdGU6OnBhdXNlT25FeGNlcHRpb25zU3RhdGUsIFNjcmlwdERlYnVnU2VydmVyOjpE
b250UGF1c2VPbkV4Y2VwdGlvbnMpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5z
cGVjdG9yRGVidWdnZXJBZ2VudCgwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA1YTM1ODJhMjcyZjU5ZjAwNzgyODU3YjZkZjgx
YzA2NWJjY2RmMWEzLi41ZTcwMTM1Y2Y5ZWQwNGUxNmNjNzc3Y2QzNDRiMDg5NmEzZDBmN2U3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApA
QCAtNDAzLDEwICs0MDMsMTAgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpc2FibGUoRXJy
b3JTdHJpbmcqKQogICAgIHNldEVtdWxhdGVkTWVkaWEoMCwgIiIpOwogCiAgICAgLy8gV2hlbiBk
aXNhYmxpbmcgdGhlIGFnZW50LCByZXNldCB0aGUgb3ZlcnJpZGUgdmFsdWVzLgotICAgIG1fc3Rh
dGUtPnNldExvbmcoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmVlbldpZHRoT3ZlcnJpZGUs
IDApOwotICAgIG1fc3RhdGUtPnNldExvbmcoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmVl
bkhlaWdodE92ZXJyaWRlLCAwKTsKLSAgICBtX3N0YXRlLT5zZXREb3VibGUoUGFnZUFnZW50U3Rh
dGU6OnBhZ2VBZ2VudEZvbnRTY2FsZUZhY3Rvck92ZXJyaWRlLCAxKTsKLSAgICBtX3N0YXRlLT5z
ZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRGaXRXaW5kb3csIGZhbHNlKTsKKyAg
ICBtX3N0YXRlLT5yZW1vdmUoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmVlbldpZHRoT3Zl
cnJpZGUpOworICAgIG1fc3RhdGUtPnJlbW92ZShQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2Ny
ZWVuSGVpZ2h0T3ZlcnJpZGUpOworICAgIG1fc3RhdGUtPnJlbW92ZShQYWdlQWdlbnRTdGF0ZTo6
cGFnZUFnZW50Rm9udFNjYWxlRmFjdG9yT3ZlcnJpZGUpOworICAgIG1fc3RhdGUtPnJlbW92ZShQ
YWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50Rml0V2luZG93KTsKICAgICBtX3N0YXRlLT5yZW1vdmUo
UGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmlwdHNUb0V2YWx1YXRlT25Mb2FkKTsKICAgICB1
cGRhdGVWaWV3TWV0cmljcygwLCAwLCAxLCBmYWxzZSk7CiB9CkBAIC00MTQsMTEgKzQxNCw4IEBA
IHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKIHZvaWQgSW5z
cGVjdG9yUGFnZUFnZW50OjphZGRTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBzb3VyY2UsIFN0cmluZyogaWRlbnRpZmllcikKIHsKICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBzY3JpcHRzID0gbV9zdGF0ZS0+Z2V0T2JqZWN0KFBhZ2VBZ2VudFN0
YXRlOjpwYWdlQWdlbnRTY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZCk7Ci0gICAgaWYgKCFzY3JpcHRz
KSB7Ci0gICAgICAgIHNjcmlwdHMgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAg
ICBtX3N0YXRlLT5zZXRPYmplY3QoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmlwdHNUb0V2
YWx1YXRlT25Mb2FkLCBzY3JpcHRzKTsKLSAgICB9Ci0gICAgLy8gQXNzdXJlIHdlIGRvbid0IG92
ZXJyaWRlIGV4aXN0aW5nIGlkcyAtLSBtX2xhc3RTY3JpcHRJZGVudGlmaWVyIGNvdWxkIGdldCBv
dXQgb2Ygc3luYyBXUlQgYWN0dWFsCisKKyAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3Qgb3ZlcnJp
ZGUgZXhpc3RpbmcgaWRzIC0tIG1fbGFzdFNjcmlwdElkZW50aWZpZXIgY291bGQgZ2V0IG91dCBv
ZiBzeW5jIFdSVCBhY3R1YWwKICAgICAvLyBzY3JpcHRzIG9uY2Ugd2UgcmVzdG9yZWQgdGhlIHNj
cmlwdHMgZnJvbSB0aGUgY29va2llIGR1cmluZyBuYXZpZ2F0aW9uLgogICAgIGRvIHsKICAgICAg
ICAgKmlkZW50aWZpZXIgPSBTdHJpbmc6Om51bWJlcigrK21fbGFzdFNjcmlwdElkZW50aWZpZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuY3BwCmluZGV4IGJiMWI0ZmUwZjUzZDQ1MjQ4YzFmNmM5NTg0MmY5YmQzMTBlZGVjODkuLjg1
ZWY2ZDNhNzQ1YWNiMDlkMWEzZGFmZjExZjY5MmY5MWJlMmFiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTU2OCw3
ICs1NjgsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmVuYWJsZSgpCiB2b2lkIElu
c3BlY3RvclJlc291cmNlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogewogICAgIG1fc3Rh
dGUtPnNldEJvb2xlYW4oUmVzb3VyY2VBZ2VudFN0YXRlOjpyZXNvdXJjZUFnZW50RW5hYmxlZCwg
ZmFsc2UpOwotICAgIG1fc3RhdGUtPnNldFN0cmluZyhSZXNvdXJjZUFnZW50U3RhdGU6OnVzZXJB
Z2VudE92ZXJyaWRlLCAiIik7CisgICAgbV9zdGF0ZS0+cmVtb3ZlKFJlc291cmNlQWdlbnRTdGF0
ZTo6dXNlckFnZW50T3ZlcnJpZGUpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5z
cGVjdG9yUmVzb3VyY2VBZ2VudCgwKTsKICAgICBtX3Jlc291cmNlc0RhdGEtPmNsZWFyKCk7CiB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180516</attachid>
            <date>2012-12-21 07:13:15 -0800</date>
            <delta_ts>2012-12-21 07:37:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105438-20121221191029.patch</filename>
            <type>text/plain</type>
            <size>57820</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzgzZDRkMjE2ODQ1ODU5
NDhjODU2NjdkMDEzYjY5MDJmY2RhZTg4My4uNWIxYjgzMzM3N2FlNTUwZGZjNWRlMmQ2YTIwMTJh
NmU1ZWUyOTI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEyLTIxICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogTWFrZSB1c2Ugb2YgdGhlIG5ldyBJbnNwZWN0b3JTdGF0ZTo6cmVtb3ZlKCkgaW4gaW5z
cGVjdG9yIGFnZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA1NDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBmb2xsb3dpbmcgcmVmYWN0b3JpbmdzOgor
ICAgICAgICAtIHNldHRpbmcgcHJvcGVydHkgdmFsdWVzIG9mIEluc3BlY3RvclN0YXRlIHRvICJl
bXB0eSIgb2JqZWN0cyBoYXMgYmVlbiByZXBsYWNlZCBieSByZW1vdmluZyB0aGVtIGZyb20gdGhl
IHN0YXRlOworICAgICAgICAtIEluc3BlY3RvclN0YXRlIGluc3RhbmNlIGlzIG5vIGxvbmdlciBz
aGFyZWQgYWNyb3NzIGFnZW50cywgc28gdGhhdCB0aGUgcHJvcGVydHkgbmFtZXMgY2FuIG5vIGxv
bmdlciBjbGFzaC4KKyAgICAgICAgICBJbnN0ZWFkLCBJbnNwZWN0b3JDb21wb3NpdGVTdGF0ZSBj
cmVhdGVzIGFuZCBvd25zIEluc3BlY3RvclN0YXRlIGluc3RhbmNlcyBmb3IgZXZlcnkgYWdlbnQ7
CisgICAgICAgIC0gYWdlbnQtc3BlY2lmaWMgcHJlZml4IGhhcyBiZWVuIHN0cmlwcGVkIGZyb20g
bW9zdCBwcm9wZXJ0eSBuYW1lcywgd2hlcmUgaXQgbG9va2VkIHN5bnRoZXRpYy4KKyAgICAgICAg
LSB1cGRhdGVDb29raWUoKSBpcyBjYWxsZWQgZnJvbSBJbnNwZWN0b3JTdGF0ZTo6cmVtb3ZlKCku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGVyZSBpcyBubyB2aXNpYmxlIGNoYW5nZSBp
biB0aGUgYmVoYXZpb3IuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3Bw
OiBBZ2VudC1zcGVjaWZpYyBwcm9wZXJ0eSBuYW1lIHByZWZpeCBzdHJpcHBlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDogRGl0dG8uCisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDogRGl0dG8uCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDogRGl0dG8uCisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOiBNYWtlIHVzZSBvZiBJbnNwZWN0b3JD
b21wb3NpdGVTdGF0ZSByYXRoZXIgdGhhbiBJbnNwZWN0b3JTdGF0ZS4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcDogQWdlbnQtc3BlY2lmaWMgcHJvcGVydHkgbmFt
ZSBwcmVmaXggc3RyaXBwZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
QWdlbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZGlzYWJsZSk6CisgICAgICAgIFVzZSAicmVtb3ZlIiBpbnN0ZWFkIG9mIHNldHRpbmcgYW4g
ZW1wdHkgb2JqZWN0LgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQuY3BwOiBBZ2VudC1zcGVjaWZpYyBwcm9wZXJ0eSBuYW1lIHByZWZpeCBzdHJpcHBlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOiBEaXR0by4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOiBEaXR0by4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICBVc2UgInJl
bW92ZSIgaW5zdGVhZCBvZiBzZXR0aW5nIGVtcHR5IHZhbHVlcyBmb3IgY2VydGFpbiBwcm9wZXJ0
aWVzLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjphZGRTY3JpcHRUb0V2
YWx1YXRlT25Mb2FkKToKKyAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGNvZGUgKG9iamVjdCBp
cyBjcmVhdGVkIGFuZCBwdXQgaW50byB0aGUgbWFwIGlmIG5vbmUgaXMgZm91bmQpLgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDogQWdlbnQtc3BlY2lmaWMg
cHJvcGVydHkgbmFtZSBwcmVmaXggc3RyaXBwZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgVXNlICJyZW1vdmUiIGluc3RlYWQg
b2Ygc2V0dGluZyBhbiBlbXB0eSBvYmplY3QgZm9yIHVzZXJBZ2VudE92ZXJyaWRlLgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHA6IEFkZCBJbnNwZWN0b3JDb21wb3NpdGVT
dGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0YXRlOjpzZXRGcm9tQ29va2llKTog
R2V0cyBpbnZva2VkIGZyb20gSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGU6OmxvYWRGcm9tQ29va2ll
KCkuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdGF0ZTo6dXBkYXRlQ29va2llKTogQ2Fs
bCB1cGRhdGVDb29raWUoKS4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbXBvc2l0ZVN0
YXRlOjpjcmVhdGVBZ2VudFN0YXRlKTogQ3JlYXRlcyBhbiBJbnNwZWN0b3JTdGF0ZSBpbnN0YW5j
ZSB0byBiZSBwYXNzZWQgdG8gYW4gYWdlbnQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clN0YXRlLmg6IEFkZCBJbnNwZWN0b3JDb21wb3NpdGVTdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclN0YXRlOjpzZXRMb25nKTogRml4IGNhc3QuCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOiBBZ2VudC1zcGVjaWZpYyBwcm9wZXJ0eSBuYW1l
IHByZWZpeCBzdHJpcHBlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlci5jcHA6IE1ha2UgdXNlIG9mIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlIHJhdGhlciB0
aGFuIEluc3BlY3RvclN0YXRlLgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmg6IERpdHRvLgorCiAyMDEyLTEyLTIxICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNo
aUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCB0eXBpbmcgemVybyBpbnRvIG11bHRpcGxlIGZp
ZWxkIGlucHV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcApp
bmRleCAwMWJhZWI4MDA0OTdlNWVjNDdkYmQ0M2MxYzJkMjZkNjUzMGU1ZDEyLi5hNmY4NDQ0YzNj
YjYwMzRjMDZhMjM0M2E3OWVjNzAyMjI5ODc5NzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIEluc3BlY3RvckFnZW50U3Rh
dGUgewotc3RhdGljIGNvbnN0IGNoYXIgaW5zcGVjdG9yQWdlbnRFbmFibGVkW10gPSAiaW5zcGVj
dG9yQWdlbnRFbmFibGVkIjsKK3N0YXRpYyBjb25zdCBjaGFyIGVuYWJsZWRbXSA9ICJlbmFibGVk
IjsKIH0KIAogSW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KFBhZ2UqIHBhZ2UsIEluamVj
dGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUpCkBAIC0xMTMs
NyArMTEzLDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlkQ29tbWl0TG9hZCgpCiAKIHZvaWQg
SW5zcGVjdG9yQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiB7Ci0gICAgbV9zdGF0ZS0+c2V0
Qm9vbGVhbihJbnNwZWN0b3JBZ2VudFN0YXRlOjppbnNwZWN0b3JBZ2VudEVuYWJsZWQsIHRydWUp
OworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oSW5zcGVjdG9yQWdlbnRTdGF0ZTo6ZW5hYmxlZCwg
dHJ1ZSk7CiAKICAgICBpZiAobV9wZW5kaW5nSW5zcGVjdERhdGEuZmlyc3QpCiAgICAgICAgIGlu
c3BlY3QobV9wZW5kaW5nSW5zcGVjdERhdGEuZmlyc3QsIG1fcGVuZGluZ0luc3BlY3REYXRhLnNl
Y29uZCk7CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZW5hYmxlKEVy
cm9yU3RyaW5nKikKIAogdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyop
CiB7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihJbnNwZWN0b3JBZ2VudFN0YXRlOjppbnNwZWN0
b3JBZ2VudEVuYWJsZWQsIGZhbHNlKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEluc3BlY3Rv
ckFnZW50U3RhdGU6OmVuYWJsZWQsIGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JBZ2VudDo6
ZG9tQ29udGVudExvYWRlZEV2ZW50RmlyZWQoKQpAQCAtMTQwLDcgKzE0MCw3IEBAIGJvb2wgSW5z
cGVjdG9yQWdlbnQ6OmlzTWFpblJlc291cmNlTG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IGNvbnN0IEtVUkwmIHJlCiAKIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmV2YWx1YXRlRm9yVGVzdElu
RnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgc2NyaXB0KQogewotICAgIGlmICht
X3N0YXRlLT5nZXRCb29sZWFuKEluc3BlY3RvckFnZW50U3RhdGU6Omluc3BlY3RvckFnZW50RW5h
YmxlZCkpCisgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oSW5zcGVjdG9yQWdlbnRTdGF0ZTo6
ZW5hYmxlZCkpCiAgICAgICAgIG1fZnJvbnRlbmQtPmluc3BlY3RvcigpLT5ldmFsdWF0ZUZvclRl
c3RJbkZyb250ZW5kKHN0YXRpY19jYXN0PGludD4oY2FsbElkKSwgc2NyaXB0KTsKICAgICBlbHNl
CiAgICAgICAgIG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzLmFwcGVuZChwYWlyPGxvbmcs
IFN0cmluZz4oY2FsbElkLCBzY3JpcHQpKTsKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIEluc3Bl
Y3RvckFnZW50OjpzZXRJbmplY3RlZFNjcmlwdEZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgU3RyaQogCiB2b2lkIEluc3BlY3RvckFnZW50OjppbnNwZWN0KFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGludHMpCiB7Ci0gICAgaWYgKG1fc3RhdGUtPmdldEJv
b2xlYW4oSW5zcGVjdG9yQWdlbnRTdGF0ZTo6aW5zcGVjdG9yQWdlbnRFbmFibGVkKSAmJiBtX2Zy
b250ZW5kKSB7CisgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oSW5zcGVjdG9yQWdlbnRTdGF0
ZTo6ZW5hYmxlZCkgJiYgbV9mcm9udGVuZCkgewogICAgICAgICBtX2Zyb250ZW5kLT5pbnNwZWN0
b3IoKS0+aW5zcGVjdChvYmplY3RUb0luc3BlY3QsIGhpbnRzKTsKICAgICAgICAgbV9wZW5kaW5n
SW5zcGVjdERhdGEuZmlyc3QgPSAwOwogICAgICAgICBtX3BlbmRpbmdJbnNwZWN0RGF0YS5zZWNv
bmQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCAyZTdjN2Q5Yjg3Y2U5OWE2ZTc5ZWMz
MzM0NmQ0NjAyNTQ3MzBlNDI4Li41OTBmMTYzYWZkYTg3NjM0MzdmOGNmMjlkOGRjODNjZTQ2NmUx
ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQXBwbGljYXRpb25DYWNoZUFnZW50U3RhdGUgewotc3Rh
dGljIGNvbnN0IGNoYXIgYXBwbGljYXRpb25DYWNoZUFnZW50RW5hYmxlZFtdID0gImFwcGxpY2F0
aW9uQ2FjaGVBZ2VudEVuYWJsZWQiOworc3RhdGljIGNvbnN0IGNoYXIgZW5hYmxlZFtdID0gImVu
YWJsZWQiOwogfQogCiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Okluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50
KQpAQCAtNjksNyArNjksNyBAQCB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6
Y2xlYXJGcm9udGVuZCgpCiAKIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojpy
ZXN0b3JlKCkKIHsKLSAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihBcHBsaWNhdGlvbkNhY2hl
QWdlbnRTdGF0ZTo6YXBwbGljYXRpb25DYWNoZUFnZW50RW5hYmxlZCkpIHsKKyAgICBpZiAobV9z
dGF0ZS0+Z2V0Qm9vbGVhbihBcHBsaWNhdGlvbkNhY2hlQWdlbnRTdGF0ZTo6ZW5hYmxlZCkpIHsK
ICAgICAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgICAgIGVuYWJsZSgmZXJyb3IpOwogICAg
IH0KQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6
OnJlc3RvcmUoKQogCiB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZW5hYmxl
KEVycm9yU3RyaW5nKikKIHsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudFN0YXRlOjphcHBsaWNhdGlvbkNhY2hlQWdlbnRFbmFibGVkLCB0cnVlKTsKKyAgICBt
X3N0YXRlLT5zZXRCb29sZWFuKEFwcGxpY2F0aW9uQ2FjaGVBZ2VudFN0YXRlOjplbmFibGVkLCB0
cnVlKTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudCh0aGlzKTsKIAogICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbml0aWFsIG5hdmln
YXRvci5vbk9ubGluZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwCmluZGV4IGQ1MjVlNmRmNmE1YzgyM2I4NmNhYWVkNzQ3OTliNzkwNTNlNTNjZWIu
LjYyNjQwOTFiYTc1N2MyYzcxM2IwZGFiMTczMmUzMTAxNWEzMmY4MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNjMsNyArNjMsNyBA
QAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBD
U1NBZ2VudFN0YXRlIHsKLXN0YXRpYyBjb25zdCBjaGFyIGNzc0FnZW50RW5hYmxlZFtdID0gImNz
c0FnZW50RW5hYmxlZCI7CitzdGF0aWMgY29uc3QgY2hhciBlbmFibGVkW10gPSAiZW5hYmxlZCI7
CiBzdGF0aWMgY29uc3QgY2hhciBpc1NlbGVjdG9yUHJvZmlsaW5nW10gPSAiaXNTZWxlY3RvclBy
b2ZpbGluZyI7CiB9CiAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50
OjpkaXNjYXJkQWdlbnQoKQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZXN0b3JlKCkKIHsK
LSAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihDU1NBZ2VudFN0YXRlOjpjc3NBZ2VudEVuYWJs
ZWQpKSB7CisgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oQ1NTQWdlbnRTdGF0ZTo6ZW5hYmxl
ZCkpIHsKICAgICAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgICAgIGVuYWJsZSgmZXJyb3Ip
OwogICAgIH0KQEAgLTU5MCwxNCArNTkwLDE0IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJl
c2V0Tm9uUGVyc2lzdGVudERhdGEoKQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjplbmFibGUo
RXJyb3JTdHJpbmcqKQogewotICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oQ1NTQWdlbnRTdGF0ZTo6
Y3NzQWdlbnRFbmFibGVkLCB0cnVlKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKENTU0FnZW50
U3RhdGU6OmVuYWJsZWQsIHRydWUpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5z
cGVjdG9yQ1NTQWdlbnQodGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpc2Fi
bGUoRXJyb3JTdHJpbmcqKQogewogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVj
dG9yQ1NTQWdlbnQoMCk7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihDU1NBZ2VudFN0YXRlOjpj
c3NBZ2VudEVuYWJsZWQsIGZhbHNlKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKENTU0FnZW50
U3RhdGU6OmVuYWJsZWQsIGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6bWVk
aWFRdWVyeVJlc3VsdENoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggMDRmZWIzMjQxNjBkMmJkYmU3NDVlZGZlNDZk
OGI3YWIyZDIyMTQ0Zi4uMzlkY2EyNTVkZmI1MjA4NWUxYWViZmQzMzA0YTEzMGFlZjIzYmQyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwCkBAIC00Nyw3ICs0Nyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBD
YW52YXNBZ2VudFN0YXRlIHsKLXN0YXRpYyBjb25zdCBjaGFyIGNhbnZhc0FnZW50RW5hYmxlZFtd
ID0gImNhbnZhc0FnZW50RW5hYmxlZCI7CitzdGF0aWMgY29uc3QgY2hhciBlbmFibGVkW10gPSAi
ZW5hYmxlZCI7CiB9OwogCiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6SW5zcGVjdG9yQ2FudmFzQWdl
bnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3Rh
dGUqIHN0YXRlLCBQYWdlKiBwYWdlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2Ny
aXB0TWFuYWdlcikKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6
Y2xlYXJGcm9udGVuZCgpCiAKIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlc3RvcmUoKQog
ewotICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKENhbnZhc0FnZW50U3RhdGU6OmNhbnZhc0Fn
ZW50RW5hYmxlZCkpIHsKKyAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihDYW52YXNBZ2VudFN0
YXRlOjplbmFibGVkKSkgewogICAgICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICAgICAgZW5h
YmxlKCZlcnJvcik7CiAgICAgfQpAQCAtODQsMTQgKzg0LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OnJlc3RvcmUoKQogCiB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjplbmFibGUo
RXJyb3JTdHJpbmcqKQogewotICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oQ2FudmFzQWdlbnRTdGF0
ZTo6Y2FudmFzQWdlbnRFbmFibGVkLCB0cnVlKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKENh
bnZhc0FnZW50U3RhdGU6OmVuYWJsZWQsIHRydWUpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy0+c2V0SW5zcGVjdG9yQ2FudmFzQWdlbnQodGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogewogICAgIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy0+c2V0SW5zcGVjdG9yQ2FudmFzQWdlbnQoMCk7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVh
bihDYW52YXNBZ2VudFN0YXRlOjpjYW52YXNBZ2VudEVuYWJsZWQsIGZhbHNlKTsKKyAgICBtX3N0
YXRlLT5zZXRCb29sZWFuKENhbnZhc0FnZW50U3RhdGU6OmVuYWJsZWQsIGZhbHNlKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZHJvcFRyYWNlTG9nKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiB0cmFjZUxvZ0lkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDNlNGRjOTNmNGU1NGQyMDQ5
OGYyYjk0MDc3N2U5YTkzY2ZjNjkwYjIuLmMzMjNmZTQ2MmRmODYwMGU3NDYwMTk5MTIwYWMxNDRi
NjRhMTgyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKQEAgLTgyLDgxICs4Miw4MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBJbnNw
ZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3Rv
ckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KQogICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKGFk
b3B0UHRyKG5ldyBJbnN0cnVtZW50aW5nQWdlbnRzKCkpKQogICAgICwgbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVGb3JQYWdlKCkpCi0gICAgLCBt
X3N0YXRlKGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JTdGF0ZShpbnNwZWN0b3JDbGllbnQpKSkKKyAg
ICAsIG1fc3RhdGUoYWRvcHRQdHIobmV3IEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlKGluc3BlY3Rv
ckNsaWVudCkpKQogICAgICwgbV9vdmVybGF5KEluc3BlY3Rvck92ZXJsYXk6OmNyZWF0ZShwYWdl
LCBpbnNwZWN0b3JDbGllbnQpKQogICAgICwgbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2luc3BlY3Rv
ckNsaWVudChpbnNwZWN0b3JDbGllbnQpCiB7Ci0gICAgT3duUHRyPEluc3BlY3RvckFnZW50PiBp
bnNwZWN0b3JBZ2VudFB0cihJbnNwZWN0b3JBZ2VudDo6Y3JlYXRlKHBhZ2UsIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmdldCgpLCBtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUu
Z2V0KCkpKTsKKyAgICBPd25QdHI8SW5zcGVjdG9yQWdlbnQ+IGluc3BlY3RvckFnZW50UHRyKElu
c3BlY3RvckFnZW50OjpjcmVhdGUocGFnZSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCks
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS0+Y3JlYXRlQWdlbnRTdGF0ZSgp
KSk7CiAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50UHRyLmdldCgpOwogICAg
IG1fYWdlbnRzLmFwcGVuZChpbnNwZWN0b3JBZ2VudFB0ci5yZWxlYXNlKCkpOwogCi0gICAgT3du
UHRyPEluc3BlY3RvclBhZ2VBZ2VudD4gcGFnZUFnZW50UHRyKEluc3BlY3RvclBhZ2VBZ2VudDo6
Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZSwgbV9pbnNwZWN0b3JBZ2Vu
dCwgbV9zdGF0ZS5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIGluc3BlY3Rv
ckNsaWVudCwgbV9vdmVybGF5LmdldCgpKSk7CisgICAgT3duUHRyPEluc3BlY3RvclBhZ2VBZ2Vu
dD4gcGFnZUFnZW50UHRyKEluc3BlY3RvclBhZ2VBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5nZXQoKSwgcGFnZSwgbV9pbnNwZWN0b3JBZ2VudCwgbV9zdGF0ZS0+Y3JlYXRlQWdl
bnRTdGF0ZSgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSwgaW5zcGVjdG9yQ2xpZW50
LCBtX292ZXJsYXkuZ2V0KCkpKTsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCA9
IHBhZ2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX3BhZ2VBZ2VudCA9IHBhZ2VBZ2VudFB0ci5nZXQo
KTsKICAgICBtX2FnZW50cy5hcHBlbmQocGFnZUFnZW50UHRyLnJlbGVhc2UoKSk7CiAKLSAgICBP
d25QdHI8SW5zcGVjdG9yRE9NQWdlbnQ+IGRvbUFnZW50UHRyKEluc3BlY3RvckRPTUFnZW50Ojpj
cmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlQWdlbnQsIG1fc3RhdGUuZ2V0
KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX292ZXJsYXkuZ2V0KCkpKTsKKyAg
ICBPd25QdHI8SW5zcGVjdG9yRE9NQWdlbnQ+IGRvbUFnZW50UHRyKEluc3BlY3RvckRPTUFnZW50
OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlQWdlbnQsIG1fc3RhdGUt
PmNyZWF0ZUFnZW50U3RhdGUoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIG1fb3Zl
cmxheS5nZXQoKSkpOwogICAgIG1fZG9tQWdlbnQgPSBkb21BZ2VudFB0ci5nZXQoKTsKICAgICBt
X2FnZW50cy5hcHBlbmQoZG9tQWdlbnRQdHIucmVsZWFzZSgpKTsKIAotICAgIG1fYWdlbnRzLmFw
cGVuZChJbnNwZWN0b3JDU1NBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQo
KSwgbV9zdGF0ZS5nZXQoKSwgbV9kb21BZ2VudCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChJbnNw
ZWN0b3JDU1NBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0
ZS0+Y3JlYXRlQWdlbnRTdGF0ZSgpLCBtX2RvbUFnZW50KSk7CiAKICNpZiBFTkFCTEUoU1FMX0RB
VEFCQVNFKQotICAgIE93blB0cjxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PiBkYXRhYmFzZUFnZW50
UHRyKEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMu
Z2V0KCksIG1fc3RhdGUuZ2V0KCkpKTsKKyAgICBPd25QdHI8SW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dD4gZGF0YWJhc2VBZ2VudFB0cihJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpjcmVhdGUobV9pbnN0
cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCkpKTsKICAg
ICBJbnNwZWN0b3JEYXRhYmFzZUFnZW50KiBkYXRhYmFzZUFnZW50ID0gZGF0YWJhc2VBZ2VudFB0
ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoZGF0YWJhc2VBZ2VudFB0ci5yZWxlYXNlKCkp
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBtX2FnZW50cy5h
cHBlbmQoSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBw
YWdlQWdlbnQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6
OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUtPmNyZWF0ZUFnZW50
U3RhdGUoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIHBhZ2VBZ2VudCkpOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgbV9hZ2VudHMuYXBwZW5kKEluc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwg
cGFnZUFnZW50LCBtX3N0YXRlLmdldCgpKSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFn
ZUFnZW50LCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCkpKTsKICNlbmRpZgotICAgIE93blB0
cjxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+IGRvbVN0b3JhZ2VBZ2VudFB0cihJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3Rh
dGUuZ2V0KCkpKTsKKyAgICBPd25QdHI8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PiBkb21TdG9y
YWdlQWdlbnRQdHIoSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50
aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCkpKTsKICAgICBJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQqIGRvbVN0b3JhZ2VBZ2VudCA9IGRvbVN0b3JhZ2VBZ2VudFB0
ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoZG9tU3RvcmFnZUFnZW50UHRyLnJlbGVhc2Uo
KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3Rvck1lbW9yeUFnZW50OjpjcmVhdGUobV9p
bnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBpbnNwZWN0b3JDbGllbnQsIG1fc3RhdGUuZ2V0KCks
IG1fcGFnZSkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpj
cmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlQWdlbnQsIG1fc3RhdGUuZ2V0
KCksIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OlBhZ2VJbnNwZWN0b3IsCisgICAgbV9hZ2VudHMu
YXBwZW5kKEluc3BlY3Rvck1lbW9yeUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCBpbnNwZWN0b3JDbGllbnQsIG1fc3RhdGUtPmNyZWF0ZUFnZW50U3RhdGUoKSwgbV9w
YWdlKSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmNyZWF0
ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2VBZ2VudCwgbV9zdGF0ZS0+Y3JlYXRl
QWdlbnRTdGF0ZSgpLCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpQYWdlSW5zcGVjdG9yLAogICAg
ICAgIGluc3BlY3RvckNsaWVudCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1f
c3RhdGUuZ2V0KCksIHBhZ2VBZ2VudCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCks
IG1fc3RhdGUtPmNyZWF0ZUFnZW50U3RhdGUoKSwgcGFnZUFnZW50KSk7CiAKLSAgICBPd25QdHI8
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4gcmVzb3VyY2VBZ2VudFB0cihJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlQWdlbnQsIGlu
c3BlY3RvckNsaWVudCwgbV9zdGF0ZS5nZXQoKSkpOworICAgIE93blB0cjxJbnNwZWN0b3JSZXNv
dXJjZUFnZW50PiByZXNvdXJjZUFnZW50UHRyKEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNyZWF0
ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2VBZ2VudCwgaW5zcGVjdG9yQ2xpZW50
LCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCkpKTsKICAgICBtX3Jlc291cmNlQWdlbnQgPSBy
ZXNvdXJjZUFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChyZXNvdXJjZUFnZW50
UHRyLnJlbGVhc2UoKSk7CiAKLSAgICBPd25QdHI8SW5zcGVjdG9yUnVudGltZUFnZW50PiBydW50
aW1lQWdlbnRQdHIoUGFnZVJ1bnRpbWVBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50
cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIHBh
Z2UsIHBhZ2VBZ2VudCkpOworICAgIE93blB0cjxJbnNwZWN0b3JSdW50aW1lQWdlbnQ+IHJ1bnRp
bWVBZ2VudFB0cihQYWdlUnVudGltZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCksIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmdldCgpLCBwYWdlLCBwYWdlQWdlbnQpKTsKICAgICBJbnNwZWN0b3JSdW50aW1lQWdlbnQq
IHJ1bnRpbWVBZ2VudCA9IHJ1bnRpbWVBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBl
bmQocnVudGltZUFnZW50UHRyLnJlbGVhc2UoKSk7CiAKLSAgICBPd25QdHI8SW5zcGVjdG9yQ29u
c29sZUFnZW50PiBjb25zb2xlQWdlbnRQdHIoUGFnZUNvbnNvbGVBZ2VudDo6Y3JlYXRlKG1faW5z
dHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9pbnNwZWN0b3JBZ2VudCwgbV9zdGF0ZS5nZXQoKSwg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIG1fZG9tQWdlbnQpKTsKKyAgICBPd25QdHI8
SW5zcGVjdG9yQ29uc29sZUFnZW50PiBjb25zb2xlQWdlbnRQdHIoUGFnZUNvbnNvbGVBZ2VudDo6
Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9pbnNwZWN0b3JBZ2VudCwgbV9z
dGF0ZS0+Y3JlYXRlQWdlbnRTdGF0ZSgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSwg
bV9kb21BZ2VudCkpOwogICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0g
Y29uc29sZUFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChjb25zb2xlQWdlbnRQ
dHIucmVsZWFzZSgpKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIE93
blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PiBkZWJ1Z2dlckFnZW50UHRyKFBhZ2VEZWJ1Z2dl
ckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgp
LCBwYWdlQWdlbnQsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX292ZXJsYXkuZ2V0
KCkpKTsKKyAgICBPd25QdHI8SW5zcGVjdG9yRGVidWdnZXJBZ2VudD4gZGVidWdnZXJBZ2VudFB0
cihQYWdlRGVidWdnZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwg
bV9zdGF0ZS0+Y3JlYXRlQWdlbnRTdGF0ZSgpLCBwYWdlQWdlbnQsIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmdldCgpLCBtX292ZXJsYXkuZ2V0KCkpKTsKICAgICBtX2RlYnVnZ2VyQWdlbnQgPSBk
ZWJ1Z2dlckFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChkZWJ1Z2dlckFnZW50
UHRyLnJlbGVhc2UoKSk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQo
KSwgbV9kb21BZ2VudCwgbV9kZWJ1Z2dlckFnZW50LCBtX2luc3BlY3RvckFnZW50KSk7CisgICAg
bV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUtPmNyZWF0ZUFnZW50U3RhdGUoKSwgbV9kb21B
Z2VudCwgbV9kZWJ1Z2dlckFnZW50LCBtX2luc3BlY3RvckFnZW50KSk7CiAKLSAgICBPd25QdHI8
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4gcHJvZmlsZXJBZ2VudFB0cihJbnNwZWN0b3JQcm9maWxl
ckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBjb25zb2xlQWdlbnQs
IHBhZ2UsIG1fc3RhdGUuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKSk7Cisg
ICAgT3duUHRyPEluc3BlY3RvclByb2ZpbGVyQWdlbnQ+IHByb2ZpbGVyQWdlbnRQdHIoSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgY29u
c29sZUFnZW50LCBwYWdlLCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCksIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmdldCgpKSk7CiAgICAgbV9wcm9maWxlckFnZW50ID0gcHJvZmlsZXJBZ2Vu
dFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQocHJvZmlsZXJBZ2VudFB0ci5yZWxlYXNl
KCkpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV09SS0VSUykKLSAgICBtX2FnZW50cy5hcHBlbmQo
SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCks
IG1fc3RhdGUuZ2V0KCkpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9yV29ya2VyQWdl
bnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUtPmNyZWF0ZUFn
ZW50U3RhdGUoKSkpOwogI2VuZGlmCiAKLSAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0
KCksIHBhZ2UsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKSk7CisgICAgbV9hZ2VudHMu
YXBwZW5kKEluc3BlY3RvckNhbnZhc0FnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCksIHBhZ2UsIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmdldCgpKSk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9ySW5wdXRB
Z2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwg
cGFnZSkpOworICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JJbnB1dEFnZW50OjpjcmVhdGUo
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCks
IHBhZ2UpKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBtX2FnZW50
cy5hcHBlbmQoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdB
Z2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIHBhZ2UpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQo
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0
KCksIG1fc3RhdGUtPmNyZWF0ZUFnZW50U3RhdGUoKSwgcGFnZSkpOwogI2VuZGlmCiAKICAgICBB
U1NFUlRfQVJHKGluc3BlY3RvckNsaWVudCwgaW5zcGVjdG9yQ2xpZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGU2OWZiNzVjZjYw
YjUzMjYxOTk2Njk4MGJjOWIzMzYwOTFmNGQ3OTAuLjRhMmM4OGQ3N2NkYzZlNWYwYmM4ZWRhNzY2
Y2MxZmMwNTA1NzIzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaApAQCAtNTksNyArNTksNyBAQCBjbGFzcyBJbnNwZWN0b3JPdmVybGF5Owog
Y2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDsK
IGNsYXNzIEluc3BlY3RvclJlc291cmNlQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JTdGF0ZTsKK2Ns
YXNzIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsK
IGNsYXNzIEludFNpemU7CiBjbGFzcyBQYWdlOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHByaXZhdGU6
CiAKICAgICBPd25QdHI8SW5zdHJ1bWVudGluZ0FnZW50cz4gbV9pbnN0cnVtZW50aW5nQWdlbnRz
OwogICAgIE93blB0cjxJbmplY3RlZFNjcmlwdE1hbmFnZXI+IG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOwotICAgIE93blB0cjxJbnNwZWN0b3JTdGF0ZT4gbV9zdGF0ZTsKKyAgICBPd25QdHI8SW5z
cGVjdG9yQ29tcG9zaXRlU3RhdGU+IG1fc3RhdGU7CiAgICAgT3duUHRyPEluc3BlY3Rvck92ZXJs
YXk+IG1fb3ZlcmxheTsKIAogICAgIEluc3BlY3RvckFnZW50KiBtX2luc3BlY3RvckFnZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmNwcAppbmRleCA0MTBhZGVjY2I3NmEyYzI3NTk2OTUzYzdjNjcyYzQxNjA0MjdhYTJjLi4y
M2NmNmQ0OWUyZTdiNWY2YzFjYTc3ODFmNWUxNTgyNGQ3YzFhMmQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAt
NTMsNyArNTMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgRE9NU3RvcmFn
ZUFnZW50U3RhdGUgewotc3RhdGljIGNvbnN0IGNoYXIgZG9tU3RvcmFnZUFnZW50RW5hYmxlZFtd
ID0gImRvbVN0b3JhZ2VBZ2VudEVuYWJsZWQiOworc3RhdGljIGNvbnN0IGNoYXIgZW5hYmxlZFtd
ID0gImVuYWJsZWQiOwogfTsKIAogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
SW5zcGVjdG9yU3RhdGUqIHN0YXRlKQpAQCAtODYsNyArODYsNyBAQCB2b2lkIEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCiAKIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50OjpyZXN0b3JlKCkKIHsKLSAgICBtX2VuYWJsZWQgPSAgbV9zdGF0ZS0+Z2V0Qm9vbGVh
bihET01TdG9yYWdlQWdlbnRTdGF0ZTo6ZG9tU3RvcmFnZUFnZW50RW5hYmxlZCk7CisgICAgbV9l
bmFibGVkID0gIG1fc3RhdGUtPmdldEJvb2xlYW4oRE9NU3RvcmFnZUFnZW50U3RhdGU6OmVuYWJs
ZWQpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZW5hYmxlKEVycm9yU3Ry
aW5nKikKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmVu
YWJsZShFcnJvclN0cmluZyopCiAgICAgaWYgKG1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwog
ICAgIG1fZW5hYmxlZCA9IHRydWU7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihET01TdG9yYWdl
QWdlbnRTdGF0ZTo6ZG9tU3RvcmFnZUFnZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKKyAgICBtX3N0
YXRlLT5zZXRCb29sZWFuKERPTVN0b3JhZ2VBZ2VudFN0YXRlOjplbmFibGVkLCBtX2VuYWJsZWQp
OwogCiAgICAgRE9NU3RvcmFnZVJlc291cmNlc01hcDo6aXRlcmF0b3IgcmVzb3VyY2VzRW5kID0g
bV9yZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChET01TdG9yYWdlUmVzb3VyY2VzTWFwOjppdGVy
YXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IHJlc291cmNlc0VuZDsgKytpdCkK
QEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlzYWJs
ZShFcnJvclN0cmluZyopCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX2VuYWJsZWQgPSBmYWxzZTsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKERPTVN0b3JhZ2VB
Z2VudFN0YXRlOjpkb21TdG9yYWdlQWdlbnRFbmFibGVkLCBtX2VuYWJsZWQpOworICAgIG1fc3Rh
dGUtPnNldEJvb2xlYW4oRE9NU3RvcmFnZUFnZW50U3RhdGU6OmVuYWJsZWQsIG1fZW5hYmxlZCk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlRW50cmll
cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4gPiYgZW50cmllcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcApp
bmRleCAwYzIwYTNjN2NlN2I2ZTcxMzE0NTVhNTk2NzgyYTIzZDFiYmFlNGUzLi4yZTdlOWQyOGZl
YWQ1OGUxOWFiNjhhN2I0ZTM4OGI4YjQzODllNDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBA
IHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkRhdGFiYXNlQ29t
bWFuZEhhbmRsZXI6OkV4ZWN1dGVTUUxDCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFj
ZSBEYXRhYmFzZUFnZW50U3RhdGUgewotc3RhdGljIGNvbnN0IGNoYXIgZGF0YWJhc2VBZ2VudEVu
YWJsZWRbXSA9ICJkYXRhYmFzZUFnZW50RW5hYmxlZCI7CitzdGF0aWMgY29uc3QgY2hhciBlbmFi
bGVkW10gPSAiZW5hYmxlZCI7CiB9OwogCiBuYW1lc3BhY2UgewpAQCAtMjQxLDcgKzI0MSw3IEBA
IHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKICAgICBp
ZiAobV9lbmFibGVkKQogICAgICAgICByZXR1cm47CiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKLSAg
ICBtX3N0YXRlLT5zZXRCb29sZWFuKERhdGFiYXNlQWdlbnRTdGF0ZTo6ZGF0YWJhc2VBZ2VudEVu
YWJsZWQsIG1fZW5hYmxlZCk7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihEYXRhYmFzZUFnZW50
U3RhdGU6OmVuYWJsZWQsIG1fZW5hYmxlZCk7CiAKICAgICBEYXRhYmFzZVJlc291cmNlc01hcDo6
aXRlcmF0b3IgZGF0YWJhc2VzRW5kID0gbV9yZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChEYXRh
YmFzZVJlc291cmNlc01hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5iZWdpbigpOyBpdCAh
PSBkYXRhYmFzZXNFbmQ7ICsraXQpCkBAIC0yNTMsMTIgKzI1MywxMiBAQCB2b2lkIEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogICAgIGlmICghbV9lbmFibGVk
KQogICAgICAgICByZXR1cm47CiAgICAgbV9lbmFibGVkID0gZmFsc2U7Ci0gICAgbV9zdGF0ZS0+
c2V0Qm9vbGVhbihEYXRhYmFzZUFnZW50U3RhdGU6OmRhdGFiYXNlQWdlbnRFbmFibGVkLCBtX2Vu
YWJsZWQpOworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oRGF0YWJhc2VBZ2VudFN0YXRlOjplbmFi
bGVkLCBtX2VuYWJsZWQpOwogfQogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OnJlc3Rv
cmUoKQogewotICAgIG1fZW5hYmxlZCA9IG1fc3RhdGUtPmdldEJvb2xlYW4oRGF0YWJhc2VBZ2Vu
dFN0YXRlOjpkYXRhYmFzZUFnZW50RW5hYmxlZCk7CisgICAgbV9lbmFibGVkID0gbV9zdGF0ZS0+
Z2V0Qm9vbGVhbihEYXRhYmFzZUFnZW50U3RhdGU6OmVuYWJsZWQpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ6OmdldERhdGFiYXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyogZXJy
b3IsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+ID4mIG5hbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDljZjhkMDFjYmM2ZjJiZjU4YjFmODA5ZWZhNWFm
MGMwODE5YTJhMGQuLmE2MWIyMTRhYzA1NDIyMTQ3ODU4NWIwYjQyOGJmY2ZjZGFkMjA2NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplbmFi
bGUoKQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoKQogewotICAgIG1f
c3RhdGUtPnNldE9iamVjdChEZWJ1Z2dlckFnZW50U3RhdGU6OmphdmFTY3JpcHRCcmVha3BvaW50
cywgSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgbV9zdGF0ZS0+cmVtb3ZlKERlYnVn
Z2VyQWdlbnRTdGF0ZTo6amF2YVNjcmlwdEJyZWFrcG9pbnRzKTsKICAgICBtX3N0YXRlLT5zZXRM
b25nKERlYnVnZ2VyQWdlbnRTdGF0ZTo6cGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSwgU2NyaXB0RGVi
dWdTZXJ2ZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLT5zZXRJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCmluZGV4IGMyNzIy
ZmUzYTRkN2UzYjExOWI4NWRjZDJmMjAxYzg0MTA1ODgxY2EuLmY1MzQ2Nzg0Mjg1MWYwZGE0NDRm
MTUyODg0Yjk3OTBhYzIwYTA2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHR5cGVk
ZWYgV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkZpbGVTeXN0ZW1Db21tYW5k
SGFuZGxlcjo6RGVsZXRlRW50CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBGaWxl
U3lzdGVtQWdlbnRTdGF0ZSB7Ci1zdGF0aWMgY29uc3QgY2hhciBmaWxlU3lzdGVtQWdlbnRFbmFi
bGVkW10gPSAiZmlsZVN5c3RlbUFnZW50RW5hYmxlZCI7CitzdGF0aWMgY29uc3QgY2hhciBlbmFi
bGVkW10gPSAiZW5hYmxlZCI7CiB9CiAKIG5hbWVzcGFjZSB7CkBAIC02MjAsNyArNjIwLDcgQEAg
dm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiAgICAg
aWYgKG1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fZW5hYmxlZCA9IHRydWU7Ci0g
ICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihGaWxlU3lzdGVtQWdlbnRTdGF0ZTo6ZmlsZVN5c3RlbUFn
ZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEZpbGVTeXN0
ZW1BZ2VudFN0YXRlOjplbmFibGVkLCBtX2VuYWJsZWQpOwogfQogCiB2b2lkIEluc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCkBAIC02MjgsNyArNjI4LDcgQEAg
dm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogICAg
IGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CiAgICAgbV9lbmFibGVkID0gZmFsc2U7
Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihGaWxlU3lzdGVtQWdlbnRTdGF0ZTo6ZmlsZVN5c3Rl
bUFnZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEZpbGVT
eXN0ZW1BZ2VudFN0YXRlOjplbmFibGVkLCBtX2VuYWJsZWQpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdEZpbGVTeXN0ZW1Sb290KEVycm9yU3RyaW5nKiBlcnJv
ciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxS
ZXF1ZXN0RmlsZVN5c3RlbVJvb3RDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQpAQCAtNjk4LDEy
ICs2OTgsMTIgQEAgdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmRlbGV0ZUVudHJ5KEVy
cm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiB1cmwKIHZvaWQgSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50OjpjbGVhckZyb250ZW5kKCkKIHsKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKLSAg
ICBtX3N0YXRlLT5zZXRCb29sZWFuKEZpbGVTeXN0ZW1BZ2VudFN0YXRlOjpmaWxlU3lzdGVtQWdl
bnRFbmFibGVkLCBtX2VuYWJsZWQpOworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oRmlsZVN5c3Rl
bUFnZW50U3RhdGU6OmVuYWJsZWQsIG1fZW5hYmxlZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50OjpyZXN0b3JlKCkKIHsKLSAgICBtX2VuYWJsZWQgPSBtX3N0YXRlLT5nZXRC
b29sZWFuKEZpbGVTeXN0ZW1BZ2VudFN0YXRlOjpmaWxlU3lzdGVtQWdlbnRFbmFibGVkKTsKKyAg
ICBtX2VuYWJsZWQgPSBtX3N0YXRlLT5nZXRCb29sZWFuKEZpbGVTeXN0ZW1BZ2VudFN0YXRlOjpl
bmFibGVkKTsKIH0KIAogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpJbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVj
dG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmlu
ZGV4IDRhMjgzZmEwOTU5ZWFmMGIxNDEwNDM2ZDYzYmRlNzlmODk3YjhmM2IuLjVhMTdkZjUzZDFl
M2VlMmNkOTllOGI4ZTJjZTJlNWM0YTE3Yzg1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtODUsNyArODUsNyBA
QCB0eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jh
c2UgUmVxdWVzdENhbGxiYWNrOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgSW5k
ZXhlZERCQWdlbnRTdGF0ZSB7Ci1zdGF0aWMgY29uc3QgY2hhciBpbmRleGVkREJBZ2VudEVuYWJs
ZWRbXSA9ICJpbmRleGVkREJBZ2VudEVuYWJsZWQiOworc3RhdGljIGNvbnN0IGNoYXIgZW5hYmxl
ZFtdID0gImVuYWJsZWQiOwogfTsKIAogbmFtZXNwYWNlIHsKQEAgLTU3NCw3ICs1NzQsNyBAQCB2
b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpjbGVhckZyb250ZW5kKCkKIAogdm9pZCBJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudDo6cmVzdG9yZSgpCiB7Ci0gICAgaWYgKG1fc3RhdGUtPmdldEJv
b2xlYW4oSW5kZXhlZERCQWdlbnRTdGF0ZTo6aW5kZXhlZERCQWdlbnRFbmFibGVkKSkgeworICAg
IGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKEluZGV4ZWREQkFnZW50U3RhdGU6OmVuYWJsZWQpKSB7
CiAgICAgICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgICAgICBlbmFibGUoJmVycm9yKTsKICAg
ICB9CkBAIC01ODIsMTIgKzU4MiwxMiBAQCB2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50Ojpy
ZXN0b3JlKCkKIAogdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZW5hYmxlKEVycm9yU3Ry
aW5nKikKIHsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEluZGV4ZWREQkFnZW50U3RhdGU6Omlu
ZGV4ZWREQkFnZW50RW5hYmxlZCwgdHJ1ZSk7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihJbmRl
eGVkREJBZ2VudFN0YXRlOjplbmFibGVkLCB0cnVlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiB7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9v
bGVhbihJbmRleGVkREJBZ2VudFN0YXRlOjppbmRleGVkREJBZ2VudEVuYWJsZWQsIGZhbHNlKTsK
KyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEluZGV4ZWREQkFnZW50U3RhdGU6OmVuYWJsZWQsIGZh
bHNlKTsKIH0KIAogc3RhdGljIEZyYW1lKiBhc3NlcnRGcmFtZShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdl
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmNwcAppbmRleCA2ODBlZTJmNzFkZjJkOWY3OGM2YTE0OTdmMTQ0NGEyZWY0NmQwMmE2
Li5mYWNjYTYzZjU1OGVjZjNkMDI2MmMzOWI5M2U3YWE0MWY1ZmFkNjE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIExheWVyVHJl
ZUFnZW50U3RhdGUgewotc3RhdGljIGNvbnN0IGNoYXIgbGF5ZXJUcmVlQWdlbnRFbmFibGVkW10g
PSAibGF5ZXJUcmVlQWdlbnRFbmFibGVkIjsKK3N0YXRpYyBjb25zdCBjaGFyIGVuYWJsZWRbXSA9
ICJlbmFibGVkIjsKIH07CiAKIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNw
ZWN0b3JTdGF0ZSogc3RhdGUsIFBhZ2UqIHBhZ2UpCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQogCiB2b2lkIEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpyZXN0b3JlKCkKIHsKLSAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihM
YXllclRyZWVBZ2VudFN0YXRlOjpsYXllclRyZWVBZ2VudEVuYWJsZWQpKQorICAgIGlmIChtX3N0
YXRlLT5nZXRCb29sZWFuKExheWVyVHJlZUFnZW50U3RhdGU6OmVuYWJsZWQpKQogICAgICAgICBl
bmFibGUoMCk7CiB9CiAKQEAgLTkwLDE1ICs5MCwxNSBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJl
ZUFnZW50OjpyZXNldCgpCiAKIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmVuYWJsZShF
cnJvclN0cmluZyopCiB7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihMYXllclRyZWVBZ2VudFN0
YXRlOjpsYXllclRyZWVBZ2VudEVuYWJsZWQsIHRydWUpOworICAgIG1fc3RhdGUtPnNldEJvb2xl
YW4oTGF5ZXJUcmVlQWdlbnRTdGF0ZTo6ZW5hYmxlZCwgdHJ1ZSk7CiAgICAgbV9pbnN0cnVtZW50
aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JMYXllclRyZWVBZ2VudCh0aGlzKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiB7Ci0gICAgaWYg
KCFtX3N0YXRlLT5nZXRCb29sZWFuKExheWVyVHJlZUFnZW50U3RhdGU6OmxheWVyVHJlZUFnZW50
RW5hYmxlZCkpCisgICAgaWYgKCFtX3N0YXRlLT5nZXRCb29sZWFuKExheWVyVHJlZUFnZW50U3Rh
dGU6OmVuYWJsZWQpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihM
YXllclRyZWVBZ2VudFN0YXRlOjpsYXllclRyZWVBZ2VudEVuYWJsZWQsIGZhbHNlKTsKKyAgICBt
X3N0YXRlLT5zZXRCb29sZWFuKExheWVyVHJlZUFnZW50U3RhdGU6OmVuYWJsZWQsIGZhbHNlKTsK
ICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckxheWVyVHJlZUFnZW50KDAp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCmluZGV4IGY3NTJhNTY2Mzk1NjRiZWZjNjlkZjFhODFjOTQ4ZDgwNmRhYjQ5NWQuLjY0NzUy
NjcxYjVjMjYwMWExMmNlMDdkYjQyYWYxMjUzOThlNWNiMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC04NSwxOSArODUsMTkgQEAg
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFBh
Z2VBZ2VudFN0YXRlIHsKLXN0YXRpYyBjb25zdCBjaGFyIHBhZ2VBZ2VudEVuYWJsZWRbXSA9ICJw
YWdlQWdlbnRFbmFibGVkIjsKLXN0YXRpYyBjb25zdCBjaGFyIHBhZ2VBZ2VudFNjcmlwdEV4ZWN1
dGlvbkRpc2FibGVkW10gPSAicGFnZUFnZW50U2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQiOwotc3Rh
dGljIGNvbnN0IGNoYXIgcGFnZUFnZW50U2NyaXB0c1RvRXZhbHVhdGVPbkxvYWRbXSA9ICJwYWdl
QWdlbnRTY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZCI7Ci1zdGF0aWMgY29uc3QgY2hhciBwYWdlQWdl
bnRTY3JlZW5XaWR0aE92ZXJyaWRlW10gPSAicGFnZUFnZW50U2NyZWVuV2lkdGhPdmVycmlkZSI7
Ci1zdGF0aWMgY29uc3QgY2hhciBwYWdlQWdlbnRTY3JlZW5IZWlnaHRPdmVycmlkZVtdID0gInBh
Z2VBZ2VudFNjcmVlbkhlaWdodE92ZXJyaWRlIjsKLXN0YXRpYyBjb25zdCBjaGFyIHBhZ2VBZ2Vu
dEZvbnRTY2FsZUZhY3Rvck92ZXJyaWRlW10gPSAicGFnZUFnZW50Rm9udFNjYWxlRmFjdG9yT3Zl
cnJpZGUiOwotc3RhdGljIGNvbnN0IGNoYXIgcGFnZUFnZW50Rml0V2luZG93W10gPSAicGFnZUFn
ZW50Rml0V2luZG93IjsKLXN0YXRpYyBjb25zdCBjaGFyIHBhZ2VBZ2VudFNob3dGUFNDb3VudGVy
W10gPSAicGFnZUFnZW50U2hvd0ZQU0NvdW50ZXIiOwotc3RhdGljIGNvbnN0IGNoYXIgcGFnZUFn
ZW50U2hvd1BhaW50UmVjdHNbXSA9ICJwYWdlQWdlbnRTaG93UGFpbnRSZWN0cyI7CitzdGF0aWMg
Y29uc3QgY2hhciBlbmFibGVkW10gPSAiZW5hYmxlZCI7CitzdGF0aWMgY29uc3QgY2hhciBzY3Jp
cHRFeGVjdXRpb25EaXNhYmxlZFtdID0gInNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkIjsKK3N0YXRp
YyBjb25zdCBjaGFyIHNjcmlwdHNUb0V2YWx1YXRlT25Mb2FkW10gPSAic2NyaXB0c1RvRXZhbHVh
dGVPbkxvYWQiOworc3RhdGljIGNvbnN0IGNoYXIgc2NyZWVuV2lkdGhPdmVycmlkZVtdID0gInNj
cmVlbldpZHRoT3ZlcnJpZGUiOworc3RhdGljIGNvbnN0IGNoYXIgc2NyZWVuSGVpZ2h0T3ZlcnJp
ZGVbXSA9ICJzY3JlZW5IZWlnaHRPdmVycmlkZSI7CitzdGF0aWMgY29uc3QgY2hhciBmb250U2Nh
bGVGYWN0b3JPdmVycmlkZVtdID0gImZvbnRTY2FsZUZhY3Rvck92ZXJyaWRlIjsKK3N0YXRpYyBj
b25zdCBjaGFyIGZpdFdpbmRvd1tdID0gImZpdFdpbmRvdyI7CitzdGF0aWMgY29uc3QgY2hhciBz
aG93RlBTQ291bnRlcltdID0gInNob3dGUFNDb3VudGVyIjsKK3N0YXRpYyBjb25zdCBjaGFyIHNo
b3dQYWludFJlY3RzW10gPSAic2hvd1BhaW50UmVjdHMiOwogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCiBzdGF0aWMgY29uc3QgY2hhciB0b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZFtdID0gInRv
dWNoRXZlbnRFbXVsYXRpb25FbmFibGVkIjsKICNlbmRpZgotc3RhdGljIGNvbnN0IGNoYXIgcGFn
ZUFnZW50RW11bGF0ZWRNZWRpYVtdID0gInBhZ2VBZ2VudEVtdWxhdGVkTWVkaWEiOworc3RhdGlj
IGNvbnN0IGNoYXIgZW11bGF0ZWRNZWRpYVtdID0gImVtdWxhdGVkTWVkaWEiOwogfQogCiBzdGF0
aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgY2hhciogYnVmZmVyLCB1bnNpZ25lZCBzaXplLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIFN0cmluZyogcmVzdWx0KQpAQCAtMzU1LDIy
ICszNTUsMjIgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQogCiB2
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzdG9yZSgpCiB7Ci0gICAgaWYgKG1fc3RhdGUtPmdl
dEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudEVuYWJsZWQpKSB7CisgICAgaWYgKG1f
c3RhdGUtPmdldEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6OmVuYWJsZWQpKSB7CiAgICAgICAgIEVy
cm9yU3RyaW5nIGVycm9yOwogICAgICAgICBlbmFibGUoJmVycm9yKTsKLSAgICAgICAgYm9vbCBz
Y3JpcHRFeGVjdXRpb25EaXNhYmxlZCA9IG1fc3RhdGUtPmdldEJvb2xlYW4oUGFnZUFnZW50U3Rh
dGU6OnBhZ2VBZ2VudFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKTsKKyAgICAgICAgYm9vbCBzY3Jp
cHRFeGVjdXRpb25EaXNhYmxlZCA9IG1fc3RhdGUtPmdldEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6
OnNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKTsKICAgICAgICAgc2V0U2NyaXB0RXhlY3V0aW9uRGlz
YWJsZWQoMCwgc2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQpOwotICAgICAgICBib29sIHNob3dQYWlu
dFJlY3RzID0gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2hv
d1BhaW50UmVjdHMpOworICAgICAgICBib29sIHNob3dQYWludFJlY3RzID0gbV9zdGF0ZS0+Z2V0
Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6c2hvd1BhaW50UmVjdHMpOwogICAgICAgICBzZXRTaG93
UGFpbnRSZWN0cygwLCBzaG93UGFpbnRSZWN0cyk7Ci0gICAgICAgIGJvb2wgc2hvd0ZQU0NvdW50
ZXIgPSBtX3N0YXRlLT5nZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTaG93RlBT
Q291bnRlcik7CisgICAgICAgIGJvb2wgc2hvd0ZQU0NvdW50ZXIgPSBtX3N0YXRlLT5nZXRCb29s
ZWFuKFBhZ2VBZ2VudFN0YXRlOjpzaG93RlBTQ291bnRlcik7CiAgICAgICAgIHNldFNob3dGUFND
b3VudGVyKDAsIHNob3dGUFNDb3VudGVyKTsKLSAgICAgICAgU3RyaW5nIGVtdWxhdGVkTWVkaWEg
PSBtX3N0YXRlLT5nZXRTdHJpbmcoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudEVtdWxhdGVkTWVk
aWEpOworICAgICAgICBTdHJpbmcgZW11bGF0ZWRNZWRpYSA9IG1fc3RhdGUtPmdldFN0cmluZyhQ
YWdlQWdlbnRTdGF0ZTo6ZW11bGF0ZWRNZWRpYSk7CiAgICAgICAgIHNldEVtdWxhdGVkTWVkaWEo
MCwgZW11bGF0ZWRNZWRpYSk7CiAKLSAgICAgICAgaW50IGN1cnJlbnRXaWR0aCA9IHN0YXRpY19j
YXN0PGludD4obV9zdGF0ZS0+Z2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2NyZWVu
V2lkdGhPdmVycmlkZSkpOwotICAgICAgICBpbnQgY3VycmVudEhlaWdodCA9IHN0YXRpY19jYXN0
PGludD4obV9zdGF0ZS0+Z2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2NyZWVuSGVp
Z2h0T3ZlcnJpZGUpKTsKLSAgICAgICAgZG91YmxlIGN1cnJlbnRGb250U2NhbGVGYWN0b3IgPSBt
X3N0YXRlLT5nZXREb3VibGUoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudEZvbnRTY2FsZUZhY3Rv
ck92ZXJyaWRlKTsKLSAgICAgICAgYm9vbCBjdXJyZW50Rml0V2luZG93ID0gbV9zdGF0ZS0+Z2V0
Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50Rml0V2luZG93KTsKKyAgICAgICAgaW50
IGN1cnJlbnRXaWR0aCA9IHN0YXRpY19jYXN0PGludD4obV9zdGF0ZS0+Z2V0TG9uZyhQYWdlQWdl
bnRTdGF0ZTo6c2NyZWVuV2lkdGhPdmVycmlkZSkpOworICAgICAgICBpbnQgY3VycmVudEhlaWdo
dCA9IHN0YXRpY19jYXN0PGludD4obV9zdGF0ZS0+Z2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6c2Ny
ZWVuSGVpZ2h0T3ZlcnJpZGUpKTsKKyAgICAgICAgZG91YmxlIGN1cnJlbnRGb250U2NhbGVGYWN0
b3IgPSBtX3N0YXRlLT5nZXREb3VibGUoUGFnZUFnZW50U3RhdGU6OmZvbnRTY2FsZUZhY3Rvck92
ZXJyaWRlKTsKKyAgICAgICAgYm9vbCBjdXJyZW50Rml0V2luZG93ID0gbV9zdGF0ZS0+Z2V0Qm9v
bGVhbihQYWdlQWdlbnRTdGF0ZTo6Zml0V2luZG93KTsKICAgICAgICAgdXBkYXRlVmlld01ldHJp
Y3MoY3VycmVudFdpZHRoLCBjdXJyZW50SGVpZ2h0LCBjdXJyZW50Rm9udFNjYWxlRmFjdG9yLCBj
dXJyZW50Rml0V2luZG93KTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgICAgICB1cGRh
dGVUb3VjaEV2ZW50RW11bGF0aW9uSW5QYWdlKG1fc3RhdGUtPmdldEJvb2xlYW4oUGFnZUFnZW50
U3RhdGU6OnRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKSk7CkBAIC0zODAsMjEgKzM4MCwyMSBA
QCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzdG9yZSgpCiAKIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50Ojp3ZWJWaWV3UmVzaXplZChjb25zdCBJbnRTaXplJiBzaXplKQogewotICAgIGludCBj
dXJyZW50V2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KG1fc3RhdGUtPmdldExvbmcoUGFnZUFnZW50
U3RhdGU6OnBhZ2VBZ2VudFNjcmVlbldpZHRoT3ZlcnJpZGUpKTsKKyAgICBpbnQgY3VycmVudFdp
ZHRoID0gc3RhdGljX2Nhc3Q8aW50PihtX3N0YXRlLT5nZXRMb25nKFBhZ2VBZ2VudFN0YXRlOjpz
Y3JlZW5XaWR0aE92ZXJyaWRlKSk7CiAgICAgbV9vdmVybGF5LT5yZXNpemUoY3VycmVudFdpZHRo
ID8gc2l6ZSA6IEludFNpemUoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjplbmFi
bGUoRXJyb3JTdHJpbmcqKQogewogICAgIG1fZW5hYmxlZCA9IHRydWU7Ci0gICAgbV9zdGF0ZS0+
c2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50RW5hYmxlZCwgdHJ1ZSk7CisgICAg
bV9zdGF0ZS0+c2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6ZW5hYmxlZCwgdHJ1ZSk7CiAgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JQYWdlQWdlbnQodGhpcyk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKIHsKICAgICBt
X2VuYWJsZWQgPSBmYWxzZTsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRl
OjpwYWdlQWdlbnRFbmFibGVkLCBmYWxzZSk7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQYWdl
QWdlbnRTdGF0ZTo6ZW5hYmxlZCwgZmFsc2UpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+
c2V0SW5zcGVjdG9yUGFnZUFnZW50KDApOwogCiAgICAgc2V0U2NyaXB0RXhlY3V0aW9uRGlzYWJs
ZWQoMCwgZmFsc2UpOwpAQCAtNDAzLDIyICs0MDMsMTkgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogICAgIHNldEVtdWxhdGVkTWVkaWEoMCwgIiIpOwog
CiAgICAgLy8gV2hlbiBkaXNhYmxpbmcgdGhlIGFnZW50LCByZXNldCB0aGUgb3ZlcnJpZGUgdmFs
dWVzLgotICAgIG1fc3RhdGUtPnNldExvbmcoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmVl
bldpZHRoT3ZlcnJpZGUsIDApOwotICAgIG1fc3RhdGUtPnNldExvbmcoUGFnZUFnZW50U3RhdGU6
OnBhZ2VBZ2VudFNjcmVlbkhlaWdodE92ZXJyaWRlLCAwKTsKLSAgICBtX3N0YXRlLT5zZXREb3Vi
bGUoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudEZvbnRTY2FsZUZhY3Rvck92ZXJyaWRlLCAxKTsK
LSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRGaXRXaW5k
b3csIGZhbHNlKTsKLSAgICBtX3N0YXRlLT5yZW1vdmUoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2Vu
dFNjcmlwdHNUb0V2YWx1YXRlT25Mb2FkKTsKKyAgICBtX3N0YXRlLT5yZW1vdmUoUGFnZUFnZW50
U3RhdGU6OnNjcmVlbldpZHRoT3ZlcnJpZGUpOworICAgIG1fc3RhdGUtPnJlbW92ZShQYWdlQWdl
bnRTdGF0ZTo6c2NyZWVuSGVpZ2h0T3ZlcnJpZGUpOworICAgIG1fc3RhdGUtPnJlbW92ZShQYWdl
QWdlbnRTdGF0ZTo6Zm9udFNjYWxlRmFjdG9yT3ZlcnJpZGUpOworICAgIG1fc3RhdGUtPnJlbW92
ZShQYWdlQWdlbnRTdGF0ZTo6Zml0V2luZG93KTsKKyAgICBtX3N0YXRlLT5yZW1vdmUoUGFnZUFn
ZW50U3RhdGU6OnNjcmlwdHNUb0V2YWx1YXRlT25Mb2FkKTsKICAgICB1cGRhdGVWaWV3TWV0cmlj
cygwLCAwLCAxLCBmYWxzZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjphZGRTY3Jp
cHRUb0V2YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIFN0
cmluZyogaWRlbnRpZmllcikKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzY3JpcHRz
ID0gbV9zdGF0ZS0+Z2V0T2JqZWN0KFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTY3JpcHRzVG9F
dmFsdWF0ZU9uTG9hZCk7Ci0gICAgaWYgKCFzY3JpcHRzKSB7Ci0gICAgICAgIHNjcmlwdHMgPSBJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICBtX3N0YXRlLT5zZXRPYmplY3QoUGFn
ZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmlwdHNUb0V2YWx1YXRlT25Mb2FkLCBzY3JpcHRzKTsK
LSAgICB9Ci0gICAgLy8gQXNzdXJlIHdlIGRvbid0IG92ZXJyaWRlIGV4aXN0aW5nIGlkcyAtLSBt
X2xhc3RTY3JpcHRJZGVudGlmaWVyIGNvdWxkIGdldCBvdXQgb2Ygc3luYyBXUlQgYWN0dWFsCisg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc2NyaXB0cyA9IG1fc3RhdGUtPmdldE9iamVjdChQ
YWdlQWdlbnRTdGF0ZTo6c2NyaXB0c1RvRXZhbHVhdGVPbkxvYWQpOworCisgICAgLy8gTWFrZSBz
dXJlIHdlIGRvbid0IG92ZXJyaWRlIGV4aXN0aW5nIGlkcyAtLSBtX2xhc3RTY3JpcHRJZGVudGlm
aWVyIGNvdWxkIGdldCBvdXQgb2Ygc3luYyBXUlQgYWN0dWFsCiAgICAgLy8gc2NyaXB0cyBvbmNl
IHdlIHJlc3RvcmVkIHRoZSBzY3JpcHRzIGZyb20gdGhlIGNvb2tpZSBkdXJpbmcgbmF2aWdhdGlv
bi4KICAgICBkbyB7CiAgICAgICAgICppZGVudGlmaWVyID0gU3RyaW5nOjpudW1iZXIoKyttX2xh
c3RTY3JpcHRJZGVudGlmaWVyKTsKQEAgLTQyOCw3ICs0MjUsNyBAQCB2b2lkIEluc3BlY3RvclBh
Z2VBZ2VudDo6YWRkU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZChFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgcwogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVtb3ZlU2NyaXB0VG9FdmFsdWF0
ZU9uTG9hZChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIHsK
LSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzY3JpcHRzID0gbV9zdGF0ZS0+Z2V0T2JqZWN0
KFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZCk7CisgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc2NyaXB0cyA9IG1fc3RhdGUtPmdldE9iamVjdChQYWdl
QWdlbnRTdGF0ZTo6c2NyaXB0c1RvRXZhbHVhdGVPbkxvYWQpOwogICAgIGlmICghc2NyaXB0cyB8
fCBzY3JpcHRzLT5maW5kKGlkZW50aWZpZXIpID09IHNjcmlwdHMtPmVuZCgpKSB7CiAgICAgICAg
ICplcnJvciA9ICJTY3JpcHQgbm90IGZvdW5kIjsKICAgICAgICAgcmV0dXJuOwpAQCAtNzE2LDI1
ICs3MTMsMjUgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldERldmljZU1ldHJpY3NPdmVy
cmlkZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludAogICAgIH0KIAogICAgIC8vIFRoZXNl
IHR3byBhbHdheXMgZml0IGFuIGludC4KLSAgICBpbnQgY3VycmVudFdpZHRoID0gc3RhdGljX2Nh
c3Q8aW50PihtX3N0YXRlLT5nZXRMb25nKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTY3JlZW5X
aWR0aE92ZXJyaWRlKSk7Ci0gICAgaW50IGN1cnJlbnRIZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+
KG1fc3RhdGUtPmdldExvbmcoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmVlbkhlaWdodE92
ZXJyaWRlKSk7Ci0gICAgZG91YmxlIGN1cnJlbnRGb250U2NhbGVGYWN0b3IgPSBtX3N0YXRlLT5n
ZXREb3VibGUoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudEZvbnRTY2FsZUZhY3Rvck92ZXJyaWRl
KTsKLSAgICBib29sIGN1cnJlbnRGaXRXaW5kb3cgPSBtX3N0YXRlLT5nZXRCb29sZWFuKFBhZ2VB
Z2VudFN0YXRlOjpwYWdlQWdlbnRGaXRXaW5kb3cpOworICAgIGludCBjdXJyZW50V2lkdGggPSBz
dGF0aWNfY2FzdDxpbnQ+KG1fc3RhdGUtPmdldExvbmcoUGFnZUFnZW50U3RhdGU6OnNjcmVlbldp
ZHRoT3ZlcnJpZGUpKTsKKyAgICBpbnQgY3VycmVudEhlaWdodCA9IHN0YXRpY19jYXN0PGludD4o
bV9zdGF0ZS0+Z2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6c2NyZWVuSGVpZ2h0T3ZlcnJpZGUpKTsK
KyAgICBkb3VibGUgY3VycmVudEZvbnRTY2FsZUZhY3RvciA9IG1fc3RhdGUtPmdldERvdWJsZShQ
YWdlQWdlbnRTdGF0ZTo6Zm9udFNjYWxlRmFjdG9yT3ZlcnJpZGUpOworICAgIGJvb2wgY3VycmVu
dEZpdFdpbmRvdyA9IG1fc3RhdGUtPmdldEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6OmZpdFdpbmRv
dyk7CiAKICAgICBpZiAod2lkdGggPT0gY3VycmVudFdpZHRoICYmIGhlaWdodCA9PSBjdXJyZW50
SGVpZ2h0ICYmIGZvbnRTY2FsZUZhY3RvciA9PSBjdXJyZW50Rm9udFNjYWxlRmFjdG9yICYmIGZp
dFdpbmRvdyA9PSBjdXJyZW50Rml0V2luZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3N0
YXRlLT5zZXRMb25nKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTY3JlZW5XaWR0aE92ZXJyaWRl
LCB3aWR0aCk7Ci0gICAgbV9zdGF0ZS0+c2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50
U2NyZWVuSGVpZ2h0T3ZlcnJpZGUsIGhlaWdodCk7Ci0gICAgbV9zdGF0ZS0+c2V0RG91YmxlKFBh
Z2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRGb250U2NhbGVGYWN0b3JPdmVycmlkZSwgZm9udFNjYWxl
RmFjdG9yKTsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdl
bnRGaXRXaW5kb3csIGZpdFdpbmRvdyk7CisgICAgbV9zdGF0ZS0+c2V0TG9uZyhQYWdlQWdlbnRT
dGF0ZTo6c2NyZWVuV2lkdGhPdmVycmlkZSwgd2lkdGgpOworICAgIG1fc3RhdGUtPnNldExvbmco
UGFnZUFnZW50U3RhdGU6OnNjcmVlbkhlaWdodE92ZXJyaWRlLCBoZWlnaHQpOworICAgIG1fc3Rh
dGUtPnNldERvdWJsZShQYWdlQWdlbnRTdGF0ZTo6Zm9udFNjYWxlRmFjdG9yT3ZlcnJpZGUsIGZv
bnRTY2FsZUZhY3Rvcik7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6
Zml0V2luZG93LCBmaXRXaW5kb3cpOwogCiAgICAgdXBkYXRlVmlld01ldHJpY3Mod2lkdGgsIGhl
aWdodCwgZm9udFNjYWxlRmFjdG9yLCBmaXRXaW5kb3cpOwogfQogCiB2b2lkIEluc3BlY3RvclBh
Z2VBZ2VudDo6c2V0U2hvd1BhaW50UmVjdHMoRXJyb3JTdHJpbmcqLCBib29sIHNob3cpCiB7Ci0g
ICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2hvd1BhaW50
UmVjdHMsIHNob3cpOworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6OnNo
b3dQYWludFJlY3RzLCBzaG93KTsKICAgICBtX2NsaWVudC0+c2V0U2hvd1BhaW50UmVjdHMoc2hv
dyk7CiAKICAgICBpZiAoIXNob3cgJiYgbWFpbkZyYW1lKCkgJiYgbWFpbkZyYW1lKCktPnZpZXco
KSkKQEAgLTc0OCw3ICs3NDUsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FuU2hvd0ZQ
U0NvdW50ZXIoRXJyb3JTdHJpbmcqLCBib29sKiBvdXRQYXJhbSkKIAogdm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnNldFNob3dGUFNDb3VudGVyKEVycm9yU3RyaW5nKiwgYm9vbCBzaG93KQogewot
ICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNob3dGUFND
b3VudGVyLCBzaG93KTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpz
aG93RlBTQ291bnRlciwgc2hvdyk7CiAgICAgbV9jbGllbnQtPnNldFNob3dGUFNDb3VudGVyKHNo
b3cpOwogCiAgICAgaWYgKG1haW5GcmFtZSgpICYmIG1haW5GcmFtZSgpLT52aWV3KCkpCkBAIC03
NzksNyArNzc2LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFNjcmlwdEV4ZWN1dGlv
blN0YXR1cyhFcnJvclN0cmluZyosIFBhZ2VDb21tYW5kSGFuZGwKIAogdm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnNldFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKEVycm9yU3RyaW5nKiwgYm9vbCB2
YWx1ZSkKIHsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdl
bnRTY3JpcHRFeGVjdXRpb25EaXNhYmxlZCwgdmFsdWUpOworICAgIG1fc3RhdGUtPnNldEJvb2xl
YW4oUGFnZUFnZW50U3RhdGU6OnNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkLCB2YWx1ZSk7CiAgICAg
aWYgKCFtYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC03OTksNyArNzk2LDcgQEAg
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFt
ZSogZnJhbWUsIERPTVdyYXBwZXJXb3IKICAgICBpZiAoIW1fZnJvbnRlbmQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHNjcmlwdHMgPSBtX3N0YXRlLT5n
ZXRPYmplY3QoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmlwdHNUb0V2YWx1YXRlT25Mb2Fk
KTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzY3JpcHRzID0gbV9zdGF0ZS0+Z2V0T2Jq
ZWN0KFBhZ2VBZ2VudFN0YXRlOjpzY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZCk7CiAgICAgaWYgKHNj
cmlwdHMpIHsKICAgICAgICAgSW5zcGVjdG9yT2JqZWN0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBz
Y3JpcHRzLT5lbmQoKTsKICAgICAgICAgZm9yIChJbnNwZWN0b3JPYmplY3Q6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gc2NyaXB0cy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CkBAIC05MDgsMjEg
KzkwNSwyMSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6bG9hZGVyRGV0YWNoZWRGcm9tRnJh
bWUoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFw
cGx5U2NyZWVuV2lkdGhPdmVycmlkZShsb25nKiB3aWR0aCkKIHsKLSAgICBsb25nIHdpZHRoT3Zl
cnJpZGUgPSBtX3N0YXRlLT5nZXRMb25nKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTY3JlZW5X
aWR0aE92ZXJyaWRlKTsKKyAgICBsb25nIHdpZHRoT3ZlcnJpZGUgPSBtX3N0YXRlLT5nZXRMb25n
KFBhZ2VBZ2VudFN0YXRlOjpzY3JlZW5XaWR0aE92ZXJyaWRlKTsKICAgICBpZiAod2lkdGhPdmVy
cmlkZSkKICAgICAgICAgKndpZHRoID0gd2lkdGhPdmVycmlkZTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmFwcGx5U2NyZWVuSGVpZ2h0T3ZlcnJpZGUobG9uZyogaGVpZ2h0KQogewot
ICAgIGxvbmcgaGVpZ2h0T3ZlcnJpZGUgPSBtX3N0YXRlLT5nZXRMb25nKFBhZ2VBZ2VudFN0YXRl
OjpwYWdlQWdlbnRTY3JlZW5IZWlnaHRPdmVycmlkZSk7CisgICAgbG9uZyBoZWlnaHRPdmVycmlk
ZSA9IG1fc3RhdGUtPmdldExvbmcoUGFnZUFnZW50U3RhdGU6OnNjcmVlbkhlaWdodE92ZXJyaWRl
KTsKICAgICBpZiAoaGVpZ2h0T3ZlcnJpZGUpCiAgICAgICAgICpoZWlnaHQgPSBoZWlnaHRPdmVy
cmlkZTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZFBhaW50KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAoIW1fZW5h
YmxlZCB8fCBtX2NsaWVudC0+b3ZlcnJpZGVzU2hvd1BhaW50UmVjdHMoKSB8fCAhbV9zdGF0ZS0+
Z2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2hvd1BhaW50UmVjdHMpKQorICAg
IGlmICghbV9lbmFibGVkIHx8IG1fY2xpZW50LT5vdmVycmlkZXNTaG93UGFpbnRSZWN0cygpIHx8
ICFtX3N0YXRlLT5nZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpzaG93UGFpbnRSZWN0cykpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIHN0YXRpYyBpbnQgY29sb3JTZWxlY3RvciA9IDA7CkBAIC05
NDcsOCArOTQ0LDggQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZExheW91dCgpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChpc0ZpcnN0TGF5b3V0KSB7Ci0gICAgICAgIGludCBjdXJy
ZW50V2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KG1fc3RhdGUtPmdldExvbmcoUGFnZUFnZW50U3Rh
dGU6OnBhZ2VBZ2VudFNjcmVlbldpZHRoT3ZlcnJpZGUpKTsKLSAgICAgICAgaW50IGN1cnJlbnRI
ZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KG1fc3RhdGUtPmdldExvbmcoUGFnZUFnZW50U3RhdGU6
OnBhZ2VBZ2VudFNjcmVlbkhlaWdodE92ZXJyaWRlKSk7CisgICAgICAgIGludCBjdXJyZW50V2lk
dGggPSBzdGF0aWNfY2FzdDxpbnQ+KG1fc3RhdGUtPmdldExvbmcoUGFnZUFnZW50U3RhdGU6OnNj
cmVlbldpZHRoT3ZlcnJpZGUpKTsKKyAgICAgICAgaW50IGN1cnJlbnRIZWlnaHQgPSBzdGF0aWNf
Y2FzdDxpbnQ+KG1fc3RhdGUtPmdldExvbmcoUGFnZUFnZW50U3RhdGU6OnNjcmVlbkhlaWdodE92
ZXJyaWRlKSk7CiAKICAgICAgICAgaWYgKGN1cnJlbnRXaWR0aCAmJiBjdXJyZW50SGVpZ2h0KQog
ICAgICAgICAgICAgbV9jbGllbnQtPmF1dG9ab29tUGFnZVRvRml0V2lkdGgoKTsKQEAgLTExNTcs
MTEgKzExNTQsMTEgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFRvdWNoRW11bGF0aW9u
RW5hYmxlZChFcnJvclN0cmluZyogZXJyb3IsIGJvb2wgZW5hYmwKIAogdm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnNldEVtdWxhdGVkTWVkaWEoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG1l
ZGlhKQogewotICAgIFN0cmluZyBjdXJyZW50TWVkaWEgPSBtX3N0YXRlLT5nZXRTdHJpbmcoUGFn
ZUFnZW50U3RhdGU6OnBhZ2VBZ2VudEVtdWxhdGVkTWVkaWEpOworICAgIFN0cmluZyBjdXJyZW50
TWVkaWEgPSBtX3N0YXRlLT5nZXRTdHJpbmcoUGFnZUFnZW50U3RhdGU6OmVtdWxhdGVkTWVkaWEp
OwogICAgIGlmIChtZWRpYSA9PSBjdXJyZW50TWVkaWEpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fc3RhdGUtPnNldFN0cmluZyhQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50RW11bGF0ZWRNZWRp
YSwgbWVkaWEpOworICAgIG1fc3RhdGUtPnNldFN0cmluZyhQYWdlQWdlbnRTdGF0ZTo6ZW11bGF0
ZWRNZWRpYSwgbWVkaWEpOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IDA7CiAgICAgaWYgKG1f
cGFnZS0+bWFpbkZyYW1lKCkpCiAgICAgICAgIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUo
KS0+ZG9jdW1lbnQoKTsKQEAgLTExNzMsNyArMTE3MCw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50OjpzZXRFbXVsYXRlZE1lZGlhKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBtZWRpYSkK
IAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFwcGx5RW11bGF0ZWRNZWRpYShTdHJpbmcqIG1l
ZGlhKQogewotICAgIFN0cmluZyBlbXVsYXRlZE1lZGlhID0gbV9zdGF0ZS0+Z2V0U3RyaW5nKFBh
Z2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRFbXVsYXRlZE1lZGlhKTsKKyAgICBTdHJpbmcgZW11bGF0
ZWRNZWRpYSA9IG1fc3RhdGUtPmdldFN0cmluZyhQYWdlQWdlbnRTdGF0ZTo6ZW11bGF0ZWRNZWRp
YSk7CiAgICAgaWYgKCFlbXVsYXRlZE1lZGlhLmlzRW1wdHkoKSkKICAgICAgICAgKm1lZGlhID0g
ZW11bGF0ZWRNZWRpYTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCBhM2FlYzlhYTVmMWZlMmJhZjU4OTM4NjcwODYw
ZWQ0NDljYmU0ZjMwLi4xODEyMjIyZjU2MzViNDMyMTUwNzJmN2MxNWUzMzhhMGM1YzliMTg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuY3BwCkBAIC03OCw3ICs3OCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFj
ZSBSZXNvdXJjZUFnZW50U3RhdGUgewotc3RhdGljIGNvbnN0IGNoYXIgcmVzb3VyY2VBZ2VudEVu
YWJsZWRbXSA9ICJyZXNvdXJjZUFnZW50RW5hYmxlZCI7CitzdGF0aWMgY29uc3QgY2hhciBlbmFi
bGVkW10gPSAiZW5hYmxlZCI7CiBzdGF0aWMgY29uc3QgY2hhciBleHRyYVJlcXVlc3RIZWFkZXJz
W10gPSAiZXh0cmFSZXF1ZXN0SGVhZGVycyI7CiBzdGF0aWMgY29uc3QgY2hhciBjYWNoZURpc2Fi
bGVkW10gPSAiY2FjaGVEaXNhYmxlZCI7CiBzdGF0aWMgY29uc3QgY2hhciB1c2VyQWdlbnRPdmVy
cmlkZVtdID0gInVzZXJBZ2VudE92ZXJyaWRlIjsKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpjbGVhckZyb250ZW5kKCkKIAogdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpyZXN0b3JlKCkKIHsKLSAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihSZXNv
dXJjZUFnZW50U3RhdGU6OnJlc291cmNlQWdlbnRFbmFibGVkKSkKKyAgICBpZiAobV9zdGF0ZS0+
Z2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OmVuYWJsZWQpKQogICAgICAgICBlbmFibGUo
KTsKIH0KIApAQCAtMjAwLDcgKzIwMCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpOZXR3b3JrOjpDYWNoZWRSZXNvdXJjZT4gYnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvCiAKIElu
c3BlY3RvclJlc291cmNlQWdlbnQ6On5JbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkKIHsKLSAgICBp
ZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OnJlc291cmNlQWdlbnRF
bmFibGVkKSkgeworICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKFJlc291cmNlQWdlbnRTdGF0
ZTo6ZW5hYmxlZCkpIHsKICAgICAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgICAgIGRpc2Fi
bGUoJmVycm9yKTsKICAgICB9CkBAIC01NjEsMTQgKzU2MSwxNCBAQCB2b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmVuYWJsZSgpCiB7CiAgICAgaWYgKCFtX2Zyb250ZW5kKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OnJlc291
cmNlQWdlbnRFbmFibGVkLCB0cnVlKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFJlc291cmNl
QWdlbnRTdGF0ZTo6ZW5hYmxlZCwgdHJ1ZSk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5z
ZXRJbnNwZWN0b3JSZXNvdXJjZUFnZW50KHRoaXMpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogewotICAgIG1fc3RhdGUtPnNldEJvb2xl
YW4oUmVzb3VyY2VBZ2VudFN0YXRlOjpyZXNvdXJjZUFnZW50RW5hYmxlZCwgZmFsc2UpOwotICAg
IG1fc3RhdGUtPnNldFN0cmluZyhSZXNvdXJjZUFnZW50U3RhdGU6OnVzZXJBZ2VudE92ZXJyaWRl
LCAiIik7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OmVuYWJs
ZWQsIGZhbHNlKTsKKyAgICBtX3N0YXRlLT5yZW1vdmUoUmVzb3VyY2VBZ2VudFN0YXRlOjp1c2Vy
QWdlbnRPdmVycmlkZSk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50KDApOwogICAgIG1fcmVzb3VyY2VzRGF0YS0+Y2xlYXIoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwCmluZGV4IDY3NWQ0OTlkMWY1
ZDI2ZWQxZDI3NDc2NDcxNWZhZTNjMjY2ZmI1NjMuLjk4MzIwMzkxMWIxN2IwNDllNjE5YzdjNTFk
MWI5MTM4Y2VhMzFjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0
YXRlLmNwcApAQCAtMzYsMzcgKzM2LDIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5z
cGVjdG9yU3RhdGU6Okluc3BlY3RvclN0YXRlKEluc3BlY3RvclN0YXRlQ2xpZW50KiBjbGllbnQp
Ci0gICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3Byb3BlcnRpZXMoSW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKSkKLSAgICAsIG1faXNPbk11dGUoZmFsc2UpCitJbnNwZWN0b3JTdGF0ZTo6
SW5zcGVjdG9yU3RhdGUoSW5zcGVjdG9yU3RhdGVVcGRhdGVMaXN0ZW5lciogbGlzdGVuZXIsIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwcm9wZXJ0aWVzKQorICAgIDogbV9saXN0ZW5lcihs
aXN0ZW5lcikKKyAgICAsIG1fcHJvcGVydGllcyhwcm9wZXJ0aWVzKQogewogfQogCi12b2lkIElu
c3BlY3RvclN0YXRlOjpsb2FkRnJvbUNvb2tpZShjb25zdCBTdHJpbmcmIGluc3BlY3RvclN0YXRl
Q29va2llKQotewotICAgIG1fcHJvcGVydGllcy5jbGVhcigpOwotICAgIFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4gY29va2llID0gSW5zcGVjdG9yVmFsdWU6OnBhcnNlSlNPTihpbnNwZWN0b3JTdGF0
ZUNvb2tpZSk7Ci0gICAgaWYgKGNvb2tpZSkKLSAgICAgICAgbV9wcm9wZXJ0aWVzID0gY29va2ll
LT5hc09iamVjdCgpOwotICAgIGlmICghbV9wcm9wZXJ0aWVzKQotICAgICAgICBtX3Byb3BlcnRp
ZXMgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotfQotCi12b2lkIEluc3BlY3RvclN0YXRl
OjptdXRlKCkKK3ZvaWQgSW5zcGVjdG9yU3RhdGU6OnVwZGF0ZUNvb2tpZSgpCiB7Ci0gICAgbV9p
c09uTXV0ZSA9IHRydWU7CisgICAgaWYgKG1fbGlzdGVuZXIpCisgICAgICAgIG1fbGlzdGVuZXIt
Pmluc3BlY3RvclN0YXRlVXBkYXRlZCgpOwogfQogCi12b2lkIEluc3BlY3RvclN0YXRlOjp1bm11
dGUoKQordm9pZCBJbnNwZWN0b3JTdGF0ZTo6c2V0RnJvbUNvb2tpZShQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gcHJvcGVydGllcykKIHsKLSAgICBtX2lzT25NdXRlID0gZmFsc2U7Ci19Ci0K
LXZvaWQgSW5zcGVjdG9yU3RhdGU6OnVwZGF0ZUNvb2tpZSgpCi17Ci0gICAgaWYgKG1fY2xpZW50
ICYmICFtX2lzT25NdXRlICYmIG1fY2xpZW50LT5zdXBwb3J0c0luc3BlY3RvclN0YXRlVXBkYXRl
cygpKQotICAgICAgICBtX2NsaWVudC0+dXBkYXRlSW5zcGVjdG9yU3RhdGVDb29raWUobV9wcm9w
ZXJ0aWVzLT50b0pTT05TdHJpbmcoKSk7CisgICAgbV9wcm9wZXJ0aWVzID0gcHJvcGVydGllczsK
IH0KIAogdm9pZCBJbnNwZWN0b3JTdGF0ZTo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQpAQCAtNzgsNiArNjIsNyBA
QCB2b2lkIEluc3BlY3RvclN0YXRlOjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYQogdm9pZCBJbnNwZWN0b3JTdGF0ZTo6cmVtb3ZlKGNv
bnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogewogICAgIG1fcHJvcGVydGllcy0+cmVtb3ZlKHBy
b3BlcnR5TmFtZSk7CisgICAgdXBkYXRlQ29va2llKCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yU3Rh
dGU6OmdldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCkBAIC0xMjYsNiArMTEx
LDUyIEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JTdGF0ZTo6Z2V0T2Jq
ZWN0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lCiAgICAgcmV0dXJuIGl0LT52YWx1ZS0+YXNP
YmplY3QoKTsKIH0KIAorSW5zcGVjdG9yU3RhdGUqIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlOjpj
cmVhdGVBZ2VudFN0YXRlKCkKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzdGF0ZVBy
b3BlcnRpZXMgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgIG1fc3RhdGVBcnJheS0+
cHVzaE9iamVjdChzdGF0ZVByb3BlcnRpZXMpOworICAgIEluc3BlY3RvclN0YXRlKiByZXN1bHQg
PSBuZXcgSW5zcGVjdG9yU3RhdGUodGhpcywgc3RhdGVQcm9wZXJ0aWVzKTsKKyAgICBtX3N0YXRl
cy5hcHBlbmQoYWRvcHRQdHIocmVzdWx0KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9p
ZCBJbnNwZWN0b3JDb21wb3NpdGVTdGF0ZTo6bG9hZEZyb21Db29raWUoY29uc3QgU3RyaW5nJiBJ
bnNwZWN0b3JDb21wb3NpdGVTdGF0ZUNvb2tpZSkKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+IGNvb2tpZSA9IEluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04oSW5zcGVjdG9yQ29tcG9zaXRl
U3RhdGVDb29raWUpOworICAgIGlmIChjb29raWUpCisgICAgICAgIG1fc3RhdGVBcnJheSA9IGNv
b2tpZS0+YXNBcnJheSgpOworICAgIGlmICghbV9zdGF0ZUFycmF5KSB7CisgICAgICAgIG1fc3Rh
dGVBcnJheSA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDAsIHNpemUgPSBtX3N0YXRlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHN0YXRlT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0
OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fc3RhdGVBcnJheS0+cHVzaE9iamVjdChzdGF0ZU9i
amVjdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlQobV9zdGF0ZUFycmF5KTsKKyAg
ICBBU1NFUlQobV9zdGF0ZUFycmF5LT5sZW5ndGgoKSA9PSBtX3N0YXRlcy5zaXplKCkpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gbV9zdGF0ZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytp
KSB7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gc3RhdGVPYmplY3QgPSBtX3N0YXRl
QXJyYXktPmdldChpKTsKKyAgICAgICAgbV9zdGF0ZXMuYXQoaSktPnNldEZyb21Db29raWUoc3Rh
dGVPYmplY3QtPmFzT2JqZWN0KCkpOworICAgIH0KK30KKwordm9pZCBJbnNwZWN0b3JDb21wb3Np
dGVTdGF0ZTo6bXV0ZSgpCit7CisgICAgbV9pc011dGVkID0gdHJ1ZTsKK30KKwordm9pZCBJbnNw
ZWN0b3JDb21wb3NpdGVTdGF0ZTo6dW5tdXRlKCkKK3sKKyAgICBtX2lzTXV0ZWQgPSBmYWxzZTsK
K30KKwordm9pZCBJbnNwZWN0b3JDb21wb3NpdGVTdGF0ZTo6aW5zcGVjdG9yU3RhdGVVcGRhdGVk
KCkKK3sKKyAgICBpZiAobV9jbGllbnQgJiYgIW1faXNNdXRlZCAmJiBtX2NsaWVudC0+c3VwcG9y
dHNJbnNwZWN0b3JTdGF0ZVVwZGF0ZXMoKSkKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUluc3Bl
Y3RvclN0YXRlQ29va2llKG1fc3RhdGVBcnJheS0+dG9KU09OU3RyaW5nKCkpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuaAppbmRleCAzZGMwOTBhYmQ5NTM3Y2Zh
YjY1MDdlNTJlODJmZmUyN2FlZjQxYzc5Li41ZjYzYzJmZTBmNGQ5ZDFhNTI0Njg5MjRiOWI1MTIx
Y2FiY2U3MjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuaApA
QCAtMzYsMjMgKzM2LDI0IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnNwZWN0b3JTdGF0ZUNsaWVudDsKIAorY2xhc3MgSW5z
cGVjdG9yU3RhdGVVcGRhdGVMaXN0ZW5lciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGlu
c3BlY3RvclN0YXRlVXBkYXRlZCgpID0gMDsKK307CisKIGNsYXNzIEluc3BlY3RvclN0YXRlIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JTdGF0
ZShJbnNwZWN0b3JTdGF0ZUNsaWVudCopOworICAgIEluc3BlY3RvclN0YXRlKEluc3BlY3RvclN0
YXRlVXBkYXRlTGlzdGVuZXIqLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4pOwogICAgIHZp
cnR1YWwgfkluc3BlY3RvclN0YXRlKCkge30KIAotICAgIHZvaWQgbG9hZEZyb21Db29raWUoY29u
c3QgU3RyaW5nJiBpbnNwZWN0b3JTdGF0ZUNvb2tpZSk7Ci0KLSAgICB2b2lkIG11dGUoKTsKLSAg
ICB2b2lkIHVubXV0ZSgpOwotCiAgICAgYm9vbCBnZXRCb29sZWFuKGNvbnN0IFN0cmluZyYgcHJv
cGVydHlOYW1lKTsKICAgICBTdHJpbmcgZ2V0U3RyaW5nKGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lKTsKICAgICBsb25nIGdldExvbmcoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwpAQCAt
NjEsMTggKzYyLDQ5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Qm9vbGVhbihjb25zdCBTdHJp
bmcmIHByb3BlcnR5TmFtZSwgYm9vbCB2YWx1ZSkgeyBzZXRWYWx1ZShwcm9wZXJ0eU5hbWUsIElu
c3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOyB9CiAgICAgdm9pZCBzZXRTdHJpbmco
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgc2V0VmFs
dWUocHJvcGVydHlOYW1lLCBJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZSh2YWx1ZSkpOyB9Ci0gICAg
dm9pZCBzZXRMb25nKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBsb25nIHZhbHVlKSB7IHNl
dFZhbHVlKHByb3BlcnR5TmFtZSwgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKChkb3VibGUp
dmFsdWUpKTsgfQorICAgIHZvaWQgc2V0TG9uZyhjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwg
bG9uZyB2YWx1ZSkgeyBzZXRWYWx1ZShwcm9wZXJ0eU5hbWUsIEluc3BlY3RvckJhc2ljVmFsdWU6
OmNyZWF0ZShzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSkpOyB9CiAgICAgdm9pZCBzZXREb3Vi
bGUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSB2YWx1ZSkgeyBzZXRWYWx1ZShw
cm9wZXJ0eU5hbWUsIEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOyB9CiAgICAg
dm9pZCBzZXRPYmplY3QoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiB2YWx1ZSkgeyBzZXRWYWx1ZShwcm9wZXJ0eU5hbWUsIHZhbHVlKTsgfQog
CiAgICAgdm9pZCByZW1vdmUoY29uc3QgU3RyaW5nJik7CisKIHByaXZhdGU6CiAgICAgdm9pZCB1
cGRhdGVDb29raWUoKTsKICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPik7CiAKLSAgICBJbnNwZWN0b3JTdGF0ZUNs
aWVudCogbV9jbGllbnQ7CisgICAgLy8gVGhpcyBnZXRzIGNhbGxlZCBmcm9tIEluc3BlY3RvckNv
bXBvc2l0ZVN0YXRlOjpsb2FkRnJvbUNvb2tpZSgpLgorICAgIHZvaWQgc2V0RnJvbUNvb2tpZShQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4pOworCisgICAgZnJpZW5kIGNsYXNzIEluc3BlY3Rv
ckNvbXBvc2l0ZVN0YXRlOworCisgICAgSW5zcGVjdG9yU3RhdGVVcGRhdGVMaXN0ZW5lciogbV9s
aXN0ZW5lcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Byb3BlcnRpZXM7Ci0gICAg
Ym9vbCBtX2lzT25NdXRlOworfTsKKworY2xhc3MgSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUgOiBw
dWJsaWMgSW5zcGVjdG9yU3RhdGVVcGRhdGVMaXN0ZW5lciB7CitwdWJsaWM6CisgICAgSW5zcGVj
dG9yQ29tcG9zaXRlU3RhdGUoSW5zcGVjdG9yU3RhdGVDbGllbnQqIGluc3BlY3RvckNsaWVudCkK
KyAgICAgICAgOiBtX2NsaWVudChpbnNwZWN0b3JDbGllbnQpCisgICAgICAgICwgbV9zdGF0ZUFy
cmF5KEluc3BlY3RvckFycmF5OjpjcmVhdGUoKSkKKyAgICAgICAgLCBtX2lzTXV0ZWQoZmFsc2Up
CisgICAgeworICAgIH0KKworICAgIHZvaWQgbXV0ZSgpOworICAgIHZvaWQgdW5tdXRlKCk7CisK
KyAgICBJbnNwZWN0b3JTdGF0ZSogY3JlYXRlQWdlbnRTdGF0ZSgpOworICAgIHZvaWQgbG9hZEZy
b21Db29raWUoY29uc3QgU3RyaW5nJik7CisKK3ByaXZhdGU6CisgICAgdHlwZWRlZiBWZWN0b3I8
T3duUHRyPEluc3BlY3RvclN0YXRlPiA+IEluc3BlY3RvclN0YXRlVmVjdG9yOworCisgICAgdmly
dHVhbCB2b2lkIGluc3BlY3RvclN0YXRlVXBkYXRlZCgpOworCisgICAgSW5zcGVjdG9yU3RhdGVD
bGllbnQqIG1fY2xpZW50OworICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gbV9zdGF0ZUFycmF5
OworICAgIGJvb2wgbV9pc011dGVkOworICAgIEluc3BlY3RvclN0YXRlVmVjdG9yIG1fc3RhdGVz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IGY5ZjlkMTc1Y2ZjYmQ2
YjgyMGY0NWU2NTUyNDFjM2MxMTEyZjVjZGQuLmU2MDU0OTM4MmZmY2JkOGVjM2NhYTgyNjM1ZDVi
OTA1OTQxOTg3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogbmFtZXNwYWNlIFRpbWVsaW5lQWdlbnRTdGF0ZSB7Ci1zdGF0aWMgY29uc3QgY2hhciB0
aW1lbGluZUFnZW50RW5hYmxlZFtdID0gInRpbWVsaW5lQWdlbnRFbmFibGVkIjsKK3N0YXRpYyBj
b25zdCBjaGFyIGVuYWJsZWRbXSA9ICJlbmFibGVkIjsKIHN0YXRpYyBjb25zdCBjaGFyIHRpbWVs
aW5lTWF4Q2FsbFN0YWNrRGVwdGhbXSA9ICJ0aW1lbGluZU1heENhbGxTdGFja0RlcHRoIjsKIHN0
YXRpYyBjb25zdCBjaGFyIGluY2x1ZGVNZW1vcnlEZXRhaWxzW10gPSAiaW5jbHVkZU1lbW9yeURl
dGFpbHMiOwogfQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6Y2xlYXJGcm9udGVuZCgpCiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cmVzdG9y
ZSgpCiB7Ci0gICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oVGltZWxpbmVBZ2VudFN0YXRlOjp0
aW1lbGluZUFnZW50RW5hYmxlZCkpIHsKKyAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihUaW1l
bGluZUFnZW50U3RhdGU6OmVuYWJsZWQpKSB7CiAgICAgICAgIG1fbWF4Q2FsbFN0YWNrRGVwdGgg
PSBtX3N0YXRlLT5nZXRMb25nKFRpbWVsaW5lQWdlbnRTdGF0ZTo6dGltZWxpbmVNYXhDYWxsU3Rh
Y2tEZXB0aCk7CiAgICAgICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgICAgICBzdGFydCgmZXJy
b3IsICZtX21heENhbGxTdGFja0RlcHRoKTsKQEAgLTE3MCwxMiArMTcwLDEyIEBAIHZvaWQgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6c3RhcnQoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIG1heENh
bGxTdGFja0RlcHRoKQogCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JU
aW1lbGluZUFnZW50KHRoaXMpOwogICAgIFNjcmlwdEdDRXZlbnQ6OmFkZEV2ZW50TGlzdGVuZXIo
dGhpcyk7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihUaW1lbGluZUFnZW50U3RhdGU6OnRpbWVs
aW5lQWdlbnRFbmFibGVkLCB0cnVlKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFRpbWVsaW5l
QWdlbnRTdGF0ZTo6ZW5hYmxlZCwgdHJ1ZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6c3RvcChFcnJvclN0cmluZyopCiB7Ci0gICAgaWYgKCFtX3N0YXRlLT5nZXRCb29sZWFu
KFRpbWVsaW5lQWdlbnRTdGF0ZTo6dGltZWxpbmVBZ2VudEVuYWJsZWQpKQorICAgIGlmICghbV9z
dGF0ZS0+Z2V0Qm9vbGVhbihUaW1lbGluZUFnZW50U3RhdGU6OmVuYWJsZWQpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvclRpbWVsaW5l
QWdlbnQoMCk7CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjpzdG9wKEVycm9yU3RyaW5nKikKICAgICBjbGVhclJlY29yZFN0YWNrKCk7CiAgICAgbV9nY0V2
ZW50cy5jbGVhcigpOwogCi0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihUaW1lbGluZUFnZW50U3Rh
dGU6OnRpbWVsaW5lQWdlbnRFbmFibGVkLCBmYWxzZSk7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVh
bihUaW1lbGluZUFnZW50U3RhdGU6OmVuYWJsZWQsIGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpzZXRJbmNsdWRlTWVtb3J5RGV0YWlscyhFcnJvclN0cmluZyosIGJv
b2wgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggZDliMzkwZmY2ZjUzZmEzNDBkZTBkMTk3ZmIwMDM2
YzgyNTBiOWNhZC4uMGM5MDY5NWU4MWM1ZmJiOThlZmYxYzA5NTZhMGViZDE1NTAwZGZlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyLmNwcApAQCAtOTMsMjUgKzkzLDI1IEBAIHByaXZhdGU6CiBXb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckNvbnRleHQqIHdvcmtl
ckNvbnRleHQpCiAgICAgOiBtX3dvcmtlckNvbnRleHQod29ya2VyQ29udGV4dCkKICAgICAsIG1f
c3RhdGVDbGllbnQoYWRvcHRQdHIobmV3IFdvcmtlclN0YXRlQ2xpZW50KHdvcmtlckNvbnRleHQp
KSkKLSAgICAsIG1fc3RhdGUoYWRvcHRQdHIobmV3IEluc3BlY3RvclN0YXRlKG1fc3RhdGVDbGll
bnQuZ2V0KCkpKSkKKyAgICAsIG1fc3RhdGUoYWRvcHRQdHIobmV3IEluc3BlY3RvckNvbXBvc2l0
ZVN0YXRlKG1fc3RhdGVDbGllbnQuZ2V0KCkpKSkKICAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50
cyhhZG9wdFB0cihuZXcgSW5zdHJ1bWVudGluZ0FnZW50cygpKSkKICAgICAsIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlRm9yV29ya2VyKCkpCiAg
ICAgLCBtX3J1bnRpbWVBZ2VudCgwKQogewotICAgIE93blB0cjxJbnNwZWN0b3JSdW50aW1lQWdl
bnQ+IHJ1bnRpbWVBZ2VudCA9IFdvcmtlclJ1bnRpbWVBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIu
Z2V0KCksIHdvcmtlckNvbnRleHQpOworICAgIE93blB0cjxJbnNwZWN0b3JSdW50aW1lQWdlbnQ+
IHJ1bnRpbWVBZ2VudCA9IFdvcmtlclJ1bnRpbWVBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5nZXQoKSwgbV9zdGF0ZS0+Y3JlYXRlQWdlbnRTdGF0ZSgpLCBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci5nZXQoKSwgd29ya2VyQ29udGV4dCk7CiAgICAgbV9ydW50aW1lQWdlbnQgPSBy
dW50aW1lQWdlbnQuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKHJ1bnRpbWVBZ2VudC5yZWxl
YXNlKCkpOwogCi0gICAgT3duUHRyPEluc3BlY3RvckNvbnNvbGVBZ2VudD4gY29uc29sZUFnZW50
ID0gV29ya2VyQ29uc29sZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgp
LCBtX3N0YXRlLmdldCgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSk7CisgICAgT3du
UHRyPEluc3BlY3RvckNvbnNvbGVBZ2VudD4gY29uc29sZUFnZW50ID0gV29ya2VyQ29uc29sZUFn
ZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLT5jcmVhdGVB
Z2VudFN0YXRlKCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKTsKICNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBPd25QdHI8SW5zcGVjdG9yRGVidWdnZXJBZ2VudD4g
ZGVidWdnZXJBZ2VudCA9IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRp
bmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIHdvcmtlckNvbnRleHQsIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmdldCgpKTsKKyAgICBPd25QdHI8SW5zcGVjdG9yRGVidWdnZXJBZ2VudD4g
ZGVidWdnZXJBZ2VudCA9IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRp
bmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUtPmNyZWF0ZUFnZW50U3RhdGUoKSwgd29ya2VyQ29udGV4
dCwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCkpOwogICAgIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQqIGRlYnVnZ2VyQWdlbnRQdHIgPSBkZWJ1Z2dlckFnZW50LmdldCgpOwogICAgIG1fcnVu
dGltZUFnZW50LT5zZXRTY3JpcHREZWJ1Z1NlcnZlcigmZGVidWdnZXJBZ2VudC0+c2NyaXB0RGVi
dWdTZXJ2ZXIoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKGRlYnVnZ2VyQWdlbnQucmVsZWFzZSgp
KTsKIAotICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGUo
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBjb25zb2xlQWdlbnQuZ2V0KCksIHdvcmtlckNv
bnRleHQsIG1fc3RhdGUuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKSk7Cisg
ICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZShtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZ2V0KCksIGNvbnNvbGVBZ2VudC5nZXQoKSwgd29ya2VyQ29udGV4dCwg
bV9zdGF0ZS0+Y3JlYXRlQWdlbnRTdGF0ZSgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQo
KSkpOwogI2VuZGlmCi0gICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIDAsIG1fc3RhdGUuZ2V0KCksIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6Oldvcmtlckluc3BlY3RvciwgMCkpOworICAgIG1fYWdlbnRz
LmFwcGVuZChJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdl
bnRzLmdldCgpLCAwLCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCksIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6Oldvcmtlckluc3BlY3RvciwgMCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChjb25z
b2xlQWdlbnQucmVsZWFzZSgpKTsKIAogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmpl
Y3RlZFNjcmlwdEhvc3QoKS0+aW5pdCgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCAyMWRjNzIzZmUzYWRkMDY5MTE3
MzVmZDQyODJjZDdhNjU3MjkxZmFiLi4xODczMjhjNzIzZTdhMjNlM2VjN2FmODkyOWQ3NjRjMjc1
MmE4NDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRl
bmQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiBjbGFzcyBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb247CiBjbGFzcyBJbnNwZWN0b3JSdW50aW1lQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0
b3JTdGF0ZTsKK2NsYXNzIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlOwogY2xhc3MgSW5zcGVjdG9y
U3RhdGVDbGllbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgV29ya2VyQ29u
dGV4dDsKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKIAogICAgIFdvcmtlckNvbnRleHQqIG1f
d29ya2VyQ29udGV4dDsKICAgICBPd25QdHI8SW5zcGVjdG9yU3RhdGVDbGllbnQ+IG1fc3RhdGVD
bGllbnQ7Ci0gICAgT3duUHRyPEluc3BlY3RvclN0YXRlPiBtX3N0YXRlOworICAgIE93blB0cjxJ
bnNwZWN0b3JDb21wb3NpdGVTdGF0ZT4gbV9zdGF0ZTsKICAgICBPd25QdHI8SW5zdHJ1bWVudGlu
Z0FnZW50cz4gbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogICAgIE93blB0cjxJbmplY3RlZFNjcmlw
dE1hbmFnZXI+IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIEluc3BlY3RvclJ1bnRpbWVB
Z2VudCogbV9ydW50aW1lQWdlbnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180522</attachid>
            <date>2012-12-21 07:37:17 -0800</date>
            <delta_ts>2012-12-23 23:30:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105438-20121221193432.patch</filename>
            <type>text/plain</type>
            <size>57913</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzgzZDRkMjE2ODQ1ODU5
NDhjODU2NjdkMDEzYjY5MDJmY2RhZTg4My4uNWIxYjgzMzM3N2FlNTUwZGZjNWRlMmQ2YTIwMTJh
NmU1ZWUyOTI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEyLTIxICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogTWFrZSB1c2Ugb2YgdGhlIG5ldyBJbnNwZWN0b3JTdGF0ZTo6cmVtb3ZlKCkgaW4gaW5z
cGVjdG9yIGFnZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA1NDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBmb2xsb3dpbmcgcmVmYWN0b3JpbmdzOgor
ICAgICAgICAtIHNldHRpbmcgcHJvcGVydHkgdmFsdWVzIG9mIEluc3BlY3RvclN0YXRlIHRvICJl
bXB0eSIgb2JqZWN0cyBoYXMgYmVlbiByZXBsYWNlZCBieSByZW1vdmluZyB0aGVtIGZyb20gdGhl
IHN0YXRlOworICAgICAgICAtIEluc3BlY3RvclN0YXRlIGluc3RhbmNlIGlzIG5vIGxvbmdlciBz
aGFyZWQgYWNyb3NzIGFnZW50cywgc28gdGhhdCB0aGUgcHJvcGVydHkgbmFtZXMgY2FuIG5vIGxv
bmdlciBjbGFzaC4KKyAgICAgICAgICBJbnN0ZWFkLCBJbnNwZWN0b3JDb21wb3NpdGVTdGF0ZSBj
cmVhdGVzIGFuZCBvd25zIEluc3BlY3RvclN0YXRlIGluc3RhbmNlcyBmb3IgZXZlcnkgYWdlbnQ7
CisgICAgICAgIC0gYWdlbnQtc3BlY2lmaWMgcHJlZml4IGhhcyBiZWVuIHN0cmlwcGVkIGZyb20g
bW9zdCBwcm9wZXJ0eSBuYW1lcywgd2hlcmUgaXQgbG9va2VkIHN5bnRoZXRpYy4KKyAgICAgICAg
LSB1cGRhdGVDb29raWUoKSBpcyBjYWxsZWQgZnJvbSBJbnNwZWN0b3JTdGF0ZTo6cmVtb3ZlKCku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGVyZSBpcyBubyB2aXNpYmxlIGNoYW5nZSBp
biB0aGUgYmVoYXZpb3IuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3Bw
OiBBZ2VudC1zcGVjaWZpYyBwcm9wZXJ0eSBuYW1lIHByZWZpeCBzdHJpcHBlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDogRGl0dG8uCisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDogRGl0dG8uCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDogRGl0dG8uCisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOiBNYWtlIHVzZSBvZiBJbnNwZWN0b3JD
b21wb3NpdGVTdGF0ZSByYXRoZXIgdGhhbiBJbnNwZWN0b3JTdGF0ZS4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcDogQWdlbnQtc3BlY2lmaWMgcHJvcGVydHkgbmFt
ZSBwcmVmaXggc3RyaXBwZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
QWdlbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZGlzYWJsZSk6CisgICAgICAgIFVzZSAicmVtb3ZlIiBpbnN0ZWFkIG9mIHNldHRpbmcgYW4g
ZW1wdHkgb2JqZWN0LgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQuY3BwOiBBZ2VudC1zcGVjaWZpYyBwcm9wZXJ0eSBuYW1lIHByZWZpeCBzdHJpcHBlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOiBEaXR0by4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOiBEaXR0by4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICBVc2UgInJl
bW92ZSIgaW5zdGVhZCBvZiBzZXR0aW5nIGVtcHR5IHZhbHVlcyBmb3IgY2VydGFpbiBwcm9wZXJ0
aWVzLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjphZGRTY3JpcHRUb0V2
YWx1YXRlT25Mb2FkKToKKyAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGNvZGUgKG9iamVjdCBp
cyBjcmVhdGVkIGFuZCBwdXQgaW50byB0aGUgbWFwIGlmIG5vbmUgaXMgZm91bmQpLgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDogQWdlbnQtc3BlY2lmaWMg
cHJvcGVydHkgbmFtZSBwcmVmaXggc3RyaXBwZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgVXNlICJyZW1vdmUiIGluc3RlYWQg
b2Ygc2V0dGluZyBhbiBlbXB0eSBvYmplY3QgZm9yIHVzZXJBZ2VudE92ZXJyaWRlLgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHA6IEFkZCBJbnNwZWN0b3JDb21wb3NpdGVT
dGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0YXRlOjpzZXRGcm9tQ29va2llKTog
R2V0cyBpbnZva2VkIGZyb20gSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGU6OmxvYWRGcm9tQ29va2ll
KCkuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdGF0ZTo6dXBkYXRlQ29va2llKTogQ2Fs
bCB1cGRhdGVDb29raWUoKS4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbXBvc2l0ZVN0
YXRlOjpjcmVhdGVBZ2VudFN0YXRlKTogQ3JlYXRlcyBhbiBJbnNwZWN0b3JTdGF0ZSBpbnN0YW5j
ZSB0byBiZSBwYXNzZWQgdG8gYW4gYWdlbnQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clN0YXRlLmg6IEFkZCBJbnNwZWN0b3JDb21wb3NpdGVTdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclN0YXRlOjpzZXRMb25nKTogRml4IGNhc3QuCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOiBBZ2VudC1zcGVjaWZpYyBwcm9wZXJ0eSBuYW1l
IHByZWZpeCBzdHJpcHBlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlci5jcHA6IE1ha2UgdXNlIG9mIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlIHJhdGhlciB0
aGFuIEluc3BlY3RvclN0YXRlLgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmg6IERpdHRvLgorCiAyMDEyLTEyLTIxICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNo
aUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCB0eXBpbmcgemVybyBpbnRvIG11bHRpcGxlIGZp
ZWxkIGlucHV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcApp
bmRleCAwMWJhZWI4MDA0OTdlNWVjNDdkYmQ0M2MxYzJkMjZkNjUzMGU1ZDEyLi5hNmY4NDQ0YzNj
YjYwMzRjMDZhMjM0M2E3OWVjNzAyMjI5ODc5NzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIEluc3BlY3RvckFnZW50U3Rh
dGUgewotc3RhdGljIGNvbnN0IGNoYXIgaW5zcGVjdG9yQWdlbnRFbmFibGVkW10gPSAiaW5zcGVj
dG9yQWdlbnRFbmFibGVkIjsKK3N0YXRpYyBjb25zdCBjaGFyIGVuYWJsZWRbXSA9ICJlbmFibGVk
IjsKIH0KIAogSW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KFBhZ2UqIHBhZ2UsIEluamVj
dGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUpCkBAIC0xMTMs
NyArMTEzLDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlkQ29tbWl0TG9hZCgpCiAKIHZvaWQg
SW5zcGVjdG9yQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiB7Ci0gICAgbV9zdGF0ZS0+c2V0
Qm9vbGVhbihJbnNwZWN0b3JBZ2VudFN0YXRlOjppbnNwZWN0b3JBZ2VudEVuYWJsZWQsIHRydWUp
OworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oSW5zcGVjdG9yQWdlbnRTdGF0ZTo6ZW5hYmxlZCwg
dHJ1ZSk7CiAKICAgICBpZiAobV9wZW5kaW5nSW5zcGVjdERhdGEuZmlyc3QpCiAgICAgICAgIGlu
c3BlY3QobV9wZW5kaW5nSW5zcGVjdERhdGEuZmlyc3QsIG1fcGVuZGluZ0luc3BlY3REYXRhLnNl
Y29uZCk7CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZW5hYmxlKEVy
cm9yU3RyaW5nKikKIAogdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyop
CiB7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihJbnNwZWN0b3JBZ2VudFN0YXRlOjppbnNwZWN0
b3JBZ2VudEVuYWJsZWQsIGZhbHNlKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEluc3BlY3Rv
ckFnZW50U3RhdGU6OmVuYWJsZWQsIGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JBZ2VudDo6
ZG9tQ29udGVudExvYWRlZEV2ZW50RmlyZWQoKQpAQCAtMTQwLDcgKzE0MCw3IEBAIGJvb2wgSW5z
cGVjdG9yQWdlbnQ6OmlzTWFpblJlc291cmNlTG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IGNvbnN0IEtVUkwmIHJlCiAKIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmV2YWx1YXRlRm9yVGVzdElu
RnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgc2NyaXB0KQogewotICAgIGlmICht
X3N0YXRlLT5nZXRCb29sZWFuKEluc3BlY3RvckFnZW50U3RhdGU6Omluc3BlY3RvckFnZW50RW5h
YmxlZCkpCisgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oSW5zcGVjdG9yQWdlbnRTdGF0ZTo6
ZW5hYmxlZCkpCiAgICAgICAgIG1fZnJvbnRlbmQtPmluc3BlY3RvcigpLT5ldmFsdWF0ZUZvclRl
c3RJbkZyb250ZW5kKHN0YXRpY19jYXN0PGludD4oY2FsbElkKSwgc2NyaXB0KTsKICAgICBlbHNl
CiAgICAgICAgIG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzLmFwcGVuZChwYWlyPGxvbmcs
IFN0cmluZz4oY2FsbElkLCBzY3JpcHQpKTsKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIEluc3Bl
Y3RvckFnZW50OjpzZXRJbmplY3RlZFNjcmlwdEZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgU3RyaQogCiB2b2lkIEluc3BlY3RvckFnZW50OjppbnNwZWN0KFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGludHMpCiB7Ci0gICAgaWYgKG1fc3RhdGUtPmdldEJv
b2xlYW4oSW5zcGVjdG9yQWdlbnRTdGF0ZTo6aW5zcGVjdG9yQWdlbnRFbmFibGVkKSAmJiBtX2Zy
b250ZW5kKSB7CisgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oSW5zcGVjdG9yQWdlbnRTdGF0
ZTo6ZW5hYmxlZCkgJiYgbV9mcm9udGVuZCkgewogICAgICAgICBtX2Zyb250ZW5kLT5pbnNwZWN0
b3IoKS0+aW5zcGVjdChvYmplY3RUb0luc3BlY3QsIGhpbnRzKTsKICAgICAgICAgbV9wZW5kaW5n
SW5zcGVjdERhdGEuZmlyc3QgPSAwOwogICAgICAgICBtX3BlbmRpbmdJbnNwZWN0RGF0YS5zZWNv
bmQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCAyZTdjN2Q5Yjg3Y2U5OWE2ZTc5ZWMz
MzM0NmQ0NjAyNTQ3MzBlNDI4Li41OTBmMTYzYWZkYTg3NjM0MzdmOGNmMjlkOGRjODNjZTQ2NmUx
ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQXBwbGljYXRpb25DYWNoZUFnZW50U3RhdGUgewotc3Rh
dGljIGNvbnN0IGNoYXIgYXBwbGljYXRpb25DYWNoZUFnZW50RW5hYmxlZFtdID0gImFwcGxpY2F0
aW9uQ2FjaGVBZ2VudEVuYWJsZWQiOworc3RhdGljIGNvbnN0IGNoYXIgZW5hYmxlZFtdID0gImVu
YWJsZWQiOwogfQogCiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Okluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50
KQpAQCAtNjksNyArNjksNyBAQCB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6
Y2xlYXJGcm9udGVuZCgpCiAKIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojpy
ZXN0b3JlKCkKIHsKLSAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihBcHBsaWNhdGlvbkNhY2hl
QWdlbnRTdGF0ZTo6YXBwbGljYXRpb25DYWNoZUFnZW50RW5hYmxlZCkpIHsKKyAgICBpZiAobV9z
dGF0ZS0+Z2V0Qm9vbGVhbihBcHBsaWNhdGlvbkNhY2hlQWdlbnRTdGF0ZTo6ZW5hYmxlZCkpIHsK
ICAgICAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgICAgIGVuYWJsZSgmZXJyb3IpOwogICAg
IH0KQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6
OnJlc3RvcmUoKQogCiB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZW5hYmxl
KEVycm9yU3RyaW5nKikKIHsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudFN0YXRlOjphcHBsaWNhdGlvbkNhY2hlQWdlbnRFbmFibGVkLCB0cnVlKTsKKyAgICBt
X3N0YXRlLT5zZXRCb29sZWFuKEFwcGxpY2F0aW9uQ2FjaGVBZ2VudFN0YXRlOjplbmFibGVkLCB0
cnVlKTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudCh0aGlzKTsKIAogICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbml0aWFsIG5hdmln
YXRvci5vbk9ubGluZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwCmluZGV4IGQ1MjVlNmRmNmE1YzgyM2I4NmNhYWVkNzQ3OTliNzkwNTNlNTNjZWIu
LjYyNjQwOTFiYTc1N2MyYzcxM2IwZGFiMTczMmUzMTAxNWEzMmY4MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNjMsNyArNjMsNyBA
QAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBD
U1NBZ2VudFN0YXRlIHsKLXN0YXRpYyBjb25zdCBjaGFyIGNzc0FnZW50RW5hYmxlZFtdID0gImNz
c0FnZW50RW5hYmxlZCI7CitzdGF0aWMgY29uc3QgY2hhciBlbmFibGVkW10gPSAiZW5hYmxlZCI7
CiBzdGF0aWMgY29uc3QgY2hhciBpc1NlbGVjdG9yUHJvZmlsaW5nW10gPSAiaXNTZWxlY3RvclBy
b2ZpbGluZyI7CiB9CiAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50
OjpkaXNjYXJkQWdlbnQoKQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZXN0b3JlKCkKIHsK
LSAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihDU1NBZ2VudFN0YXRlOjpjc3NBZ2VudEVuYWJs
ZWQpKSB7CisgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oQ1NTQWdlbnRTdGF0ZTo6ZW5hYmxl
ZCkpIHsKICAgICAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgICAgIGVuYWJsZSgmZXJyb3Ip
OwogICAgIH0KQEAgLTU5MCwxNCArNTkwLDE0IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJl
c2V0Tm9uUGVyc2lzdGVudERhdGEoKQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjplbmFibGUo
RXJyb3JTdHJpbmcqKQogewotICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oQ1NTQWdlbnRTdGF0ZTo6
Y3NzQWdlbnRFbmFibGVkLCB0cnVlKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKENTU0FnZW50
U3RhdGU6OmVuYWJsZWQsIHRydWUpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5z
cGVjdG9yQ1NTQWdlbnQodGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpc2Fi
bGUoRXJyb3JTdHJpbmcqKQogewogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVj
dG9yQ1NTQWdlbnQoMCk7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihDU1NBZ2VudFN0YXRlOjpj
c3NBZ2VudEVuYWJsZWQsIGZhbHNlKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKENTU0FnZW50
U3RhdGU6OmVuYWJsZWQsIGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6bWVk
aWFRdWVyeVJlc3VsdENoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggMDRmZWIzMjQxNjBkMmJkYmU3NDVlZGZlNDZk
OGI3YWIyZDIyMTQ0Zi4uMzlkY2EyNTVkZmI1MjA4NWUxYWViZmQzMzA0YTEzMGFlZjIzYmQyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwCkBAIC00Nyw3ICs0Nyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBD
YW52YXNBZ2VudFN0YXRlIHsKLXN0YXRpYyBjb25zdCBjaGFyIGNhbnZhc0FnZW50RW5hYmxlZFtd
ID0gImNhbnZhc0FnZW50RW5hYmxlZCI7CitzdGF0aWMgY29uc3QgY2hhciBlbmFibGVkW10gPSAi
ZW5hYmxlZCI7CiB9OwogCiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6SW5zcGVjdG9yQ2FudmFzQWdl
bnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3Rh
dGUqIHN0YXRlLCBQYWdlKiBwYWdlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2Ny
aXB0TWFuYWdlcikKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6
Y2xlYXJGcm9udGVuZCgpCiAKIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlc3RvcmUoKQog
ewotICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKENhbnZhc0FnZW50U3RhdGU6OmNhbnZhc0Fn
ZW50RW5hYmxlZCkpIHsKKyAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihDYW52YXNBZ2VudFN0
YXRlOjplbmFibGVkKSkgewogICAgICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICAgICAgZW5h
YmxlKCZlcnJvcik7CiAgICAgfQpAQCAtODQsMTQgKzg0LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OnJlc3RvcmUoKQogCiB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjplbmFibGUo
RXJyb3JTdHJpbmcqKQogewotICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oQ2FudmFzQWdlbnRTdGF0
ZTo6Y2FudmFzQWdlbnRFbmFibGVkLCB0cnVlKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKENh
bnZhc0FnZW50U3RhdGU6OmVuYWJsZWQsIHRydWUpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy0+c2V0SW5zcGVjdG9yQ2FudmFzQWdlbnQodGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogewogICAgIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy0+c2V0SW5zcGVjdG9yQ2FudmFzQWdlbnQoMCk7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVh
bihDYW52YXNBZ2VudFN0YXRlOjpjYW52YXNBZ2VudEVuYWJsZWQsIGZhbHNlKTsKKyAgICBtX3N0
YXRlLT5zZXRCb29sZWFuKENhbnZhc0FnZW50U3RhdGU6OmVuYWJsZWQsIGZhbHNlKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZHJvcFRyYWNlTG9nKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiB0cmFjZUxvZ0lkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDNlNGRjOTNmNGU1NGQyMDQ5
OGYyYjk0MDc3N2U5YTkzY2ZjNjkwYjIuLmMzMjNmZTQ2MmRmODYwMGU3NDYwMTk5MTIwYWMxNDRi
NjRhMTgyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKQEAgLTgyLDgxICs4Miw4MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBJbnNw
ZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3Rv
ckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KQogICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKGFk
b3B0UHRyKG5ldyBJbnN0cnVtZW50aW5nQWdlbnRzKCkpKQogICAgICwgbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVGb3JQYWdlKCkpCi0gICAgLCBt
X3N0YXRlKGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JTdGF0ZShpbnNwZWN0b3JDbGllbnQpKSkKKyAg
ICAsIG1fc3RhdGUoYWRvcHRQdHIobmV3IEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlKGluc3BlY3Rv
ckNsaWVudCkpKQogICAgICwgbV9vdmVybGF5KEluc3BlY3Rvck92ZXJsYXk6OmNyZWF0ZShwYWdl
LCBpbnNwZWN0b3JDbGllbnQpKQogICAgICwgbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2luc3BlY3Rv
ckNsaWVudChpbnNwZWN0b3JDbGllbnQpCiB7Ci0gICAgT3duUHRyPEluc3BlY3RvckFnZW50PiBp
bnNwZWN0b3JBZ2VudFB0cihJbnNwZWN0b3JBZ2VudDo6Y3JlYXRlKHBhZ2UsIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmdldCgpLCBtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUu
Z2V0KCkpKTsKKyAgICBPd25QdHI8SW5zcGVjdG9yQWdlbnQ+IGluc3BlY3RvckFnZW50UHRyKElu
c3BlY3RvckFnZW50OjpjcmVhdGUocGFnZSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCks
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS0+Y3JlYXRlQWdlbnRTdGF0ZSgp
KSk7CiAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50UHRyLmdldCgpOwogICAg
IG1fYWdlbnRzLmFwcGVuZChpbnNwZWN0b3JBZ2VudFB0ci5yZWxlYXNlKCkpOwogCi0gICAgT3du
UHRyPEluc3BlY3RvclBhZ2VBZ2VudD4gcGFnZUFnZW50UHRyKEluc3BlY3RvclBhZ2VBZ2VudDo6
Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZSwgbV9pbnNwZWN0b3JBZ2Vu
dCwgbV9zdGF0ZS5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIGluc3BlY3Rv
ckNsaWVudCwgbV9vdmVybGF5LmdldCgpKSk7CisgICAgT3duUHRyPEluc3BlY3RvclBhZ2VBZ2Vu
dD4gcGFnZUFnZW50UHRyKEluc3BlY3RvclBhZ2VBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5nZXQoKSwgcGFnZSwgbV9pbnNwZWN0b3JBZ2VudCwgbV9zdGF0ZS0+Y3JlYXRlQWdl
bnRTdGF0ZSgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSwgaW5zcGVjdG9yQ2xpZW50
LCBtX292ZXJsYXkuZ2V0KCkpKTsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCA9
IHBhZ2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX3BhZ2VBZ2VudCA9IHBhZ2VBZ2VudFB0ci5nZXQo
KTsKICAgICBtX2FnZW50cy5hcHBlbmQocGFnZUFnZW50UHRyLnJlbGVhc2UoKSk7CiAKLSAgICBP
d25QdHI8SW5zcGVjdG9yRE9NQWdlbnQ+IGRvbUFnZW50UHRyKEluc3BlY3RvckRPTUFnZW50Ojpj
cmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlQWdlbnQsIG1fc3RhdGUuZ2V0
KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX292ZXJsYXkuZ2V0KCkpKTsKKyAg
ICBPd25QdHI8SW5zcGVjdG9yRE9NQWdlbnQ+IGRvbUFnZW50UHRyKEluc3BlY3RvckRPTUFnZW50
OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlQWdlbnQsIG1fc3RhdGUt
PmNyZWF0ZUFnZW50U3RhdGUoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIG1fb3Zl
cmxheS5nZXQoKSkpOwogICAgIG1fZG9tQWdlbnQgPSBkb21BZ2VudFB0ci5nZXQoKTsKICAgICBt
X2FnZW50cy5hcHBlbmQoZG9tQWdlbnRQdHIucmVsZWFzZSgpKTsKIAotICAgIG1fYWdlbnRzLmFw
cGVuZChJbnNwZWN0b3JDU1NBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQo
KSwgbV9zdGF0ZS5nZXQoKSwgbV9kb21BZ2VudCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChJbnNw
ZWN0b3JDU1NBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0
ZS0+Y3JlYXRlQWdlbnRTdGF0ZSgpLCBtX2RvbUFnZW50KSk7CiAKICNpZiBFTkFCTEUoU1FMX0RB
VEFCQVNFKQotICAgIE93blB0cjxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PiBkYXRhYmFzZUFnZW50
UHRyKEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMu
Z2V0KCksIG1fc3RhdGUuZ2V0KCkpKTsKKyAgICBPd25QdHI8SW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dD4gZGF0YWJhc2VBZ2VudFB0cihJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpjcmVhdGUobV9pbnN0
cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCkpKTsKICAg
ICBJbnNwZWN0b3JEYXRhYmFzZUFnZW50KiBkYXRhYmFzZUFnZW50ID0gZGF0YWJhc2VBZ2VudFB0
ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoZGF0YWJhc2VBZ2VudFB0ci5yZWxlYXNlKCkp
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBtX2FnZW50cy5h
cHBlbmQoSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBw
YWdlQWdlbnQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6
OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUtPmNyZWF0ZUFnZW50
U3RhdGUoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIHBhZ2VBZ2VudCkpOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgbV9hZ2VudHMuYXBwZW5kKEluc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwg
cGFnZUFnZW50LCBtX3N0YXRlLmdldCgpKSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFn
ZUFnZW50LCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCkpKTsKICNlbmRpZgotICAgIE93blB0
cjxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+IGRvbVN0b3JhZ2VBZ2VudFB0cihJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3Rh
dGUuZ2V0KCkpKTsKKyAgICBPd25QdHI8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PiBkb21TdG9y
YWdlQWdlbnRQdHIoSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50
aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCkpKTsKICAgICBJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQqIGRvbVN0b3JhZ2VBZ2VudCA9IGRvbVN0b3JhZ2VBZ2VudFB0
ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoZG9tU3RvcmFnZUFnZW50UHRyLnJlbGVhc2Uo
KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3Rvck1lbW9yeUFnZW50OjpjcmVhdGUobV9p
bnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBpbnNwZWN0b3JDbGllbnQsIG1fc3RhdGUuZ2V0KCks
IG1fcGFnZSkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpj
cmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlQWdlbnQsIG1fc3RhdGUuZ2V0
KCksIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OlBhZ2VJbnNwZWN0b3IsCisgICAgbV9hZ2VudHMu
YXBwZW5kKEluc3BlY3Rvck1lbW9yeUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCBpbnNwZWN0b3JDbGllbnQsIG1fc3RhdGUtPmNyZWF0ZUFnZW50U3RhdGUoKSwgbV9w
YWdlKSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmNyZWF0
ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2VBZ2VudCwgbV9zdGF0ZS0+Y3JlYXRl
QWdlbnRTdGF0ZSgpLCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpQYWdlSW5zcGVjdG9yLAogICAg
ICAgIGluc3BlY3RvckNsaWVudCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1f
c3RhdGUuZ2V0KCksIHBhZ2VBZ2VudCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCks
IG1fc3RhdGUtPmNyZWF0ZUFnZW50U3RhdGUoKSwgcGFnZUFnZW50KSk7CiAKLSAgICBPd25QdHI8
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4gcmVzb3VyY2VBZ2VudFB0cihJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlQWdlbnQsIGlu
c3BlY3RvckNsaWVudCwgbV9zdGF0ZS5nZXQoKSkpOworICAgIE93blB0cjxJbnNwZWN0b3JSZXNv
dXJjZUFnZW50PiByZXNvdXJjZUFnZW50UHRyKEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNyZWF0
ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2VBZ2VudCwgaW5zcGVjdG9yQ2xpZW50
LCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCkpKTsKICAgICBtX3Jlc291cmNlQWdlbnQgPSBy
ZXNvdXJjZUFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChyZXNvdXJjZUFnZW50
UHRyLnJlbGVhc2UoKSk7CiAKLSAgICBPd25QdHI8SW5zcGVjdG9yUnVudGltZUFnZW50PiBydW50
aW1lQWdlbnRQdHIoUGFnZVJ1bnRpbWVBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50
cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIHBh
Z2UsIHBhZ2VBZ2VudCkpOworICAgIE93blB0cjxJbnNwZWN0b3JSdW50aW1lQWdlbnQ+IHJ1bnRp
bWVBZ2VudFB0cihQYWdlUnVudGltZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCksIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmdldCgpLCBwYWdlLCBwYWdlQWdlbnQpKTsKICAgICBJbnNwZWN0b3JSdW50aW1lQWdlbnQq
IHJ1bnRpbWVBZ2VudCA9IHJ1bnRpbWVBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBl
bmQocnVudGltZUFnZW50UHRyLnJlbGVhc2UoKSk7CiAKLSAgICBPd25QdHI8SW5zcGVjdG9yQ29u
c29sZUFnZW50PiBjb25zb2xlQWdlbnRQdHIoUGFnZUNvbnNvbGVBZ2VudDo6Y3JlYXRlKG1faW5z
dHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9pbnNwZWN0b3JBZ2VudCwgbV9zdGF0ZS5nZXQoKSwg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIG1fZG9tQWdlbnQpKTsKKyAgICBPd25QdHI8
SW5zcGVjdG9yQ29uc29sZUFnZW50PiBjb25zb2xlQWdlbnRQdHIoUGFnZUNvbnNvbGVBZ2VudDo6
Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9pbnNwZWN0b3JBZ2VudCwgbV9z
dGF0ZS0+Y3JlYXRlQWdlbnRTdGF0ZSgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSwg
bV9kb21BZ2VudCkpOwogICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0g
Y29uc29sZUFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChjb25zb2xlQWdlbnRQ
dHIucmVsZWFzZSgpKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIE93
blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PiBkZWJ1Z2dlckFnZW50UHRyKFBhZ2VEZWJ1Z2dl
ckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgp
LCBwYWdlQWdlbnQsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX292ZXJsYXkuZ2V0
KCkpKTsKKyAgICBPd25QdHI8SW5zcGVjdG9yRGVidWdnZXJBZ2VudD4gZGVidWdnZXJBZ2VudFB0
cihQYWdlRGVidWdnZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwg
bV9zdGF0ZS0+Y3JlYXRlQWdlbnRTdGF0ZSgpLCBwYWdlQWdlbnQsIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmdldCgpLCBtX292ZXJsYXkuZ2V0KCkpKTsKICAgICBtX2RlYnVnZ2VyQWdlbnQgPSBk
ZWJ1Z2dlckFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChkZWJ1Z2dlckFnZW50
UHRyLnJlbGVhc2UoKSk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQo
KSwgbV9kb21BZ2VudCwgbV9kZWJ1Z2dlckFnZW50LCBtX2luc3BlY3RvckFnZW50KSk7CisgICAg
bV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUtPmNyZWF0ZUFnZW50U3RhdGUoKSwgbV9kb21B
Z2VudCwgbV9kZWJ1Z2dlckFnZW50LCBtX2luc3BlY3RvckFnZW50KSk7CiAKLSAgICBPd25QdHI8
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4gcHJvZmlsZXJBZ2VudFB0cihJbnNwZWN0b3JQcm9maWxl
ckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBjb25zb2xlQWdlbnQs
IHBhZ2UsIG1fc3RhdGUuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKSk7Cisg
ICAgT3duUHRyPEluc3BlY3RvclByb2ZpbGVyQWdlbnQ+IHByb2ZpbGVyQWdlbnRQdHIoSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgY29u
c29sZUFnZW50LCBwYWdlLCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCksIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmdldCgpKSk7CiAgICAgbV9wcm9maWxlckFnZW50ID0gcHJvZmlsZXJBZ2Vu
dFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQocHJvZmlsZXJBZ2VudFB0ci5yZWxlYXNl
KCkpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV09SS0VSUykKLSAgICBtX2FnZW50cy5hcHBlbmQo
SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCks
IG1fc3RhdGUuZ2V0KCkpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9yV29ya2VyQWdl
bnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUtPmNyZWF0ZUFn
ZW50U3RhdGUoKSkpOwogI2VuZGlmCiAKLSAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0
KCksIHBhZ2UsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKSk7CisgICAgbV9hZ2VudHMu
YXBwZW5kKEluc3BlY3RvckNhbnZhc0FnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCksIHBhZ2UsIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmdldCgpKSk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9ySW5wdXRB
Z2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwg
cGFnZSkpOworICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JJbnB1dEFnZW50OjpjcmVhdGUo
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCks
IHBhZ2UpKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBtX2FnZW50
cy5hcHBlbmQoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdB
Z2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIHBhZ2UpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQo
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0
KCksIG1fc3RhdGUtPmNyZWF0ZUFnZW50U3RhdGUoKSwgcGFnZSkpOwogI2VuZGlmCiAKICAgICBB
U1NFUlRfQVJHKGluc3BlY3RvckNsaWVudCwgaW5zcGVjdG9yQ2xpZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGU2OWZiNzVjZjYw
YjUzMjYxOTk2Njk4MGJjOWIzMzYwOTFmNGQ3OTAuLjRhMmM4OGQ3N2NkYzZlNWYwYmM4ZWRhNzY2
Y2MxZmMwNTA1NzIzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaApAQCAtNTksNyArNTksNyBAQCBjbGFzcyBJbnNwZWN0b3JPdmVybGF5Owog
Y2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDsK
IGNsYXNzIEluc3BlY3RvclJlc291cmNlQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JTdGF0ZTsKK2Ns
YXNzIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsK
IGNsYXNzIEludFNpemU7CiBjbGFzcyBQYWdlOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHByaXZhdGU6
CiAKICAgICBPd25QdHI8SW5zdHJ1bWVudGluZ0FnZW50cz4gbV9pbnN0cnVtZW50aW5nQWdlbnRz
OwogICAgIE93blB0cjxJbmplY3RlZFNjcmlwdE1hbmFnZXI+IG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOwotICAgIE93blB0cjxJbnNwZWN0b3JTdGF0ZT4gbV9zdGF0ZTsKKyAgICBPd25QdHI8SW5z
cGVjdG9yQ29tcG9zaXRlU3RhdGU+IG1fc3RhdGU7CiAgICAgT3duUHRyPEluc3BlY3Rvck92ZXJs
YXk+IG1fb3ZlcmxheTsKIAogICAgIEluc3BlY3RvckFnZW50KiBtX2luc3BlY3RvckFnZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmNwcAppbmRleCA0MTBhZGVjY2I3NmEyYzI3NTk2OTUzYzdjNjcyYzQxNjA0MjdhYTJjLi4y
M2NmNmQ0OWUyZTdiNWY2YzFjYTc3ODFmNWUxNTgyNGQ3YzFhMmQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAt
NTMsNyArNTMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgRE9NU3RvcmFn
ZUFnZW50U3RhdGUgewotc3RhdGljIGNvbnN0IGNoYXIgZG9tU3RvcmFnZUFnZW50RW5hYmxlZFtd
ID0gImRvbVN0b3JhZ2VBZ2VudEVuYWJsZWQiOworc3RhdGljIGNvbnN0IGNoYXIgZW5hYmxlZFtd
ID0gImVuYWJsZWQiOwogfTsKIAogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
SW5zcGVjdG9yU3RhdGUqIHN0YXRlKQpAQCAtODYsNyArODYsNyBAQCB2b2lkIEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCiAKIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50OjpyZXN0b3JlKCkKIHsKLSAgICBtX2VuYWJsZWQgPSAgbV9zdGF0ZS0+Z2V0Qm9vbGVh
bihET01TdG9yYWdlQWdlbnRTdGF0ZTo6ZG9tU3RvcmFnZUFnZW50RW5hYmxlZCk7CisgICAgbV9l
bmFibGVkID0gIG1fc3RhdGUtPmdldEJvb2xlYW4oRE9NU3RvcmFnZUFnZW50U3RhdGU6OmVuYWJs
ZWQpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZW5hYmxlKEVycm9yU3Ry
aW5nKikKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmVu
YWJsZShFcnJvclN0cmluZyopCiAgICAgaWYgKG1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwog
ICAgIG1fZW5hYmxlZCA9IHRydWU7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihET01TdG9yYWdl
QWdlbnRTdGF0ZTo6ZG9tU3RvcmFnZUFnZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKKyAgICBtX3N0
YXRlLT5zZXRCb29sZWFuKERPTVN0b3JhZ2VBZ2VudFN0YXRlOjplbmFibGVkLCBtX2VuYWJsZWQp
OwogCiAgICAgRE9NU3RvcmFnZVJlc291cmNlc01hcDo6aXRlcmF0b3IgcmVzb3VyY2VzRW5kID0g
bV9yZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChET01TdG9yYWdlUmVzb3VyY2VzTWFwOjppdGVy
YXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IHJlc291cmNlc0VuZDsgKytpdCkK
QEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlzYWJs
ZShFcnJvclN0cmluZyopCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX2VuYWJsZWQgPSBmYWxzZTsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKERPTVN0b3JhZ2VB
Z2VudFN0YXRlOjpkb21TdG9yYWdlQWdlbnRFbmFibGVkLCBtX2VuYWJsZWQpOworICAgIG1fc3Rh
dGUtPnNldEJvb2xlYW4oRE9NU3RvcmFnZUFnZW50U3RhdGU6OmVuYWJsZWQsIG1fZW5hYmxlZCk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlRW50cmll
cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4gPiYgZW50cmllcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcApp
bmRleCAwYzIwYTNjN2NlN2I2ZTcxMzE0NTVhNTk2NzgyYTIzZDFiYmFlNGUzLi4yZTdlOWQyOGZl
YWQ1OGUxOWFiNjhhN2I0ZTM4OGI4YjQzODllNDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBA
IHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkRhdGFiYXNlQ29t
bWFuZEhhbmRsZXI6OkV4ZWN1dGVTUUxDCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFj
ZSBEYXRhYmFzZUFnZW50U3RhdGUgewotc3RhdGljIGNvbnN0IGNoYXIgZGF0YWJhc2VBZ2VudEVu
YWJsZWRbXSA9ICJkYXRhYmFzZUFnZW50RW5hYmxlZCI7CitzdGF0aWMgY29uc3QgY2hhciBlbmFi
bGVkW10gPSAiZW5hYmxlZCI7CiB9OwogCiBuYW1lc3BhY2UgewpAQCAtMjQxLDcgKzI0MSw3IEBA
IHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKICAgICBp
ZiAobV9lbmFibGVkKQogICAgICAgICByZXR1cm47CiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKLSAg
ICBtX3N0YXRlLT5zZXRCb29sZWFuKERhdGFiYXNlQWdlbnRTdGF0ZTo6ZGF0YWJhc2VBZ2VudEVu
YWJsZWQsIG1fZW5hYmxlZCk7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihEYXRhYmFzZUFnZW50
U3RhdGU6OmVuYWJsZWQsIG1fZW5hYmxlZCk7CiAKICAgICBEYXRhYmFzZVJlc291cmNlc01hcDo6
aXRlcmF0b3IgZGF0YWJhc2VzRW5kID0gbV9yZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChEYXRh
YmFzZVJlc291cmNlc01hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5iZWdpbigpOyBpdCAh
PSBkYXRhYmFzZXNFbmQ7ICsraXQpCkBAIC0yNTMsMTIgKzI1MywxMiBAQCB2b2lkIEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogICAgIGlmICghbV9lbmFibGVk
KQogICAgICAgICByZXR1cm47CiAgICAgbV9lbmFibGVkID0gZmFsc2U7Ci0gICAgbV9zdGF0ZS0+
c2V0Qm9vbGVhbihEYXRhYmFzZUFnZW50U3RhdGU6OmRhdGFiYXNlQWdlbnRFbmFibGVkLCBtX2Vu
YWJsZWQpOworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oRGF0YWJhc2VBZ2VudFN0YXRlOjplbmFi
bGVkLCBtX2VuYWJsZWQpOwogfQogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OnJlc3Rv
cmUoKQogewotICAgIG1fZW5hYmxlZCA9IG1fc3RhdGUtPmdldEJvb2xlYW4oRGF0YWJhc2VBZ2Vu
dFN0YXRlOjpkYXRhYmFzZUFnZW50RW5hYmxlZCk7CisgICAgbV9lbmFibGVkID0gbV9zdGF0ZS0+
Z2V0Qm9vbGVhbihEYXRhYmFzZUFnZW50U3RhdGU6OmVuYWJsZWQpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ6OmdldERhdGFiYXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyogZXJy
b3IsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+ID4mIG5hbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDljZjhkMDFjYmM2ZjJiZjU4YjFmODA5ZWZhNWFm
MGMwODE5YTJhMGQuLmE2MWIyMTRhYzA1NDIyMTQ3ODU4NWIwYjQyOGJmY2ZjZGFkMjA2NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplbmFi
bGUoKQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoKQogewotICAgIG1f
c3RhdGUtPnNldE9iamVjdChEZWJ1Z2dlckFnZW50U3RhdGU6OmphdmFTY3JpcHRCcmVha3BvaW50
cywgSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgbV9zdGF0ZS0+cmVtb3ZlKERlYnVn
Z2VyQWdlbnRTdGF0ZTo6amF2YVNjcmlwdEJyZWFrcG9pbnRzKTsKICAgICBtX3N0YXRlLT5zZXRM
b25nKERlYnVnZ2VyQWdlbnRTdGF0ZTo6cGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSwgU2NyaXB0RGVi
dWdTZXJ2ZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLT5zZXRJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCmluZGV4IGMyNzIy
ZmUzYTRkN2UzYjExOWI4NWRjZDJmMjAxYzg0MTA1ODgxY2EuLmY1MzQ2Nzg0Mjg1MWYwZGE0NDRm
MTUyODg0Yjk3OTBhYzIwYTA2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHR5cGVk
ZWYgV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkZpbGVTeXN0ZW1Db21tYW5k
SGFuZGxlcjo6RGVsZXRlRW50CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBGaWxl
U3lzdGVtQWdlbnRTdGF0ZSB7Ci1zdGF0aWMgY29uc3QgY2hhciBmaWxlU3lzdGVtQWdlbnRFbmFi
bGVkW10gPSAiZmlsZVN5c3RlbUFnZW50RW5hYmxlZCI7CitzdGF0aWMgY29uc3QgY2hhciBlbmFi
bGVkW10gPSAiZW5hYmxlZCI7CiB9CiAKIG5hbWVzcGFjZSB7CkBAIC02MjAsNyArNjIwLDcgQEAg
dm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiAgICAg
aWYgKG1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fZW5hYmxlZCA9IHRydWU7Ci0g
ICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihGaWxlU3lzdGVtQWdlbnRTdGF0ZTo6ZmlsZVN5c3RlbUFn
ZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEZpbGVTeXN0
ZW1BZ2VudFN0YXRlOjplbmFibGVkLCBtX2VuYWJsZWQpOwogfQogCiB2b2lkIEluc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCkBAIC02MjgsNyArNjI4LDcgQEAg
dm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogICAg
IGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CiAgICAgbV9lbmFibGVkID0gZmFsc2U7
Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihGaWxlU3lzdGVtQWdlbnRTdGF0ZTo6ZmlsZVN5c3Rl
bUFnZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEZpbGVT
eXN0ZW1BZ2VudFN0YXRlOjplbmFibGVkLCBtX2VuYWJsZWQpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdEZpbGVTeXN0ZW1Sb290KEVycm9yU3RyaW5nKiBlcnJv
ciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxS
ZXF1ZXN0RmlsZVN5c3RlbVJvb3RDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQpAQCAtNjk4LDEy
ICs2OTgsMTIgQEAgdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmRlbGV0ZUVudHJ5KEVy
cm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiB1cmwKIHZvaWQgSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50OjpjbGVhckZyb250ZW5kKCkKIHsKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKLSAg
ICBtX3N0YXRlLT5zZXRCb29sZWFuKEZpbGVTeXN0ZW1BZ2VudFN0YXRlOjpmaWxlU3lzdGVtQWdl
bnRFbmFibGVkLCBtX2VuYWJsZWQpOworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oRmlsZVN5c3Rl
bUFnZW50U3RhdGU6OmVuYWJsZWQsIG1fZW5hYmxlZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50OjpyZXN0b3JlKCkKIHsKLSAgICBtX2VuYWJsZWQgPSBtX3N0YXRlLT5nZXRC
b29sZWFuKEZpbGVTeXN0ZW1BZ2VudFN0YXRlOjpmaWxlU3lzdGVtQWdlbnRFbmFibGVkKTsKKyAg
ICBtX2VuYWJsZWQgPSBtX3N0YXRlLT5nZXRCb29sZWFuKEZpbGVTeXN0ZW1BZ2VudFN0YXRlOjpl
bmFibGVkKTsKIH0KIAogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpJbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVj
dG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmlu
ZGV4IDRhMjgzZmEwOTU5ZWFmMGIxNDEwNDM2ZDYzYmRlNzlmODk3YjhmM2IuLjVhMTdkZjUzZDFl
M2VlMmNkOTllOGI4ZTJjZTJlNWM0YTE3Yzg1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtODUsNyArODUsNyBA
QCB0eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jh
c2UgUmVxdWVzdENhbGxiYWNrOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgSW5k
ZXhlZERCQWdlbnRTdGF0ZSB7Ci1zdGF0aWMgY29uc3QgY2hhciBpbmRleGVkREJBZ2VudEVuYWJs
ZWRbXSA9ICJpbmRleGVkREJBZ2VudEVuYWJsZWQiOworc3RhdGljIGNvbnN0IGNoYXIgZW5hYmxl
ZFtdID0gImVuYWJsZWQiOwogfTsKIAogbmFtZXNwYWNlIHsKQEAgLTU3NCw3ICs1NzQsNyBAQCB2
b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpjbGVhckZyb250ZW5kKCkKIAogdm9pZCBJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudDo6cmVzdG9yZSgpCiB7Ci0gICAgaWYgKG1fc3RhdGUtPmdldEJv
b2xlYW4oSW5kZXhlZERCQWdlbnRTdGF0ZTo6aW5kZXhlZERCQWdlbnRFbmFibGVkKSkgeworICAg
IGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKEluZGV4ZWREQkFnZW50U3RhdGU6OmVuYWJsZWQpKSB7
CiAgICAgICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgICAgICBlbmFibGUoJmVycm9yKTsKICAg
ICB9CkBAIC01ODIsMTIgKzU4MiwxMiBAQCB2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50Ojpy
ZXN0b3JlKCkKIAogdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZW5hYmxlKEVycm9yU3Ry
aW5nKikKIHsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEluZGV4ZWREQkFnZW50U3RhdGU6Omlu
ZGV4ZWREQkFnZW50RW5hYmxlZCwgdHJ1ZSk7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihJbmRl
eGVkREJBZ2VudFN0YXRlOjplbmFibGVkLCB0cnVlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiB7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9v
bGVhbihJbmRleGVkREJBZ2VudFN0YXRlOjppbmRleGVkREJBZ2VudEVuYWJsZWQsIGZhbHNlKTsK
KyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEluZGV4ZWREQkFnZW50U3RhdGU6OmVuYWJsZWQsIGZh
bHNlKTsKIH0KIAogc3RhdGljIEZyYW1lKiBhc3NlcnRGcmFtZShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdl
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmNwcAppbmRleCA2ODBlZTJmNzFkZjJkOWY3OGM2YTE0OTdmMTQ0NGEyZWY0NmQwMmE2
Li5mYWNjYTYzZjU1OGVjZjNkMDI2MmMzOWI5M2U3YWE0MWY1ZmFkNjE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIExheWVyVHJl
ZUFnZW50U3RhdGUgewotc3RhdGljIGNvbnN0IGNoYXIgbGF5ZXJUcmVlQWdlbnRFbmFibGVkW10g
PSAibGF5ZXJUcmVlQWdlbnRFbmFibGVkIjsKK3N0YXRpYyBjb25zdCBjaGFyIGVuYWJsZWRbXSA9
ICJlbmFibGVkIjsKIH07CiAKIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNw
ZWN0b3JTdGF0ZSogc3RhdGUsIFBhZ2UqIHBhZ2UpCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQogCiB2b2lkIEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpyZXN0b3JlKCkKIHsKLSAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihM
YXllclRyZWVBZ2VudFN0YXRlOjpsYXllclRyZWVBZ2VudEVuYWJsZWQpKQorICAgIGlmIChtX3N0
YXRlLT5nZXRCb29sZWFuKExheWVyVHJlZUFnZW50U3RhdGU6OmVuYWJsZWQpKQogICAgICAgICBl
bmFibGUoMCk7CiB9CiAKQEAgLTkwLDE1ICs5MCwxNSBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJl
ZUFnZW50OjpyZXNldCgpCiAKIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmVuYWJsZShF
cnJvclN0cmluZyopCiB7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihMYXllclRyZWVBZ2VudFN0
YXRlOjpsYXllclRyZWVBZ2VudEVuYWJsZWQsIHRydWUpOworICAgIG1fc3RhdGUtPnNldEJvb2xl
YW4oTGF5ZXJUcmVlQWdlbnRTdGF0ZTo6ZW5hYmxlZCwgdHJ1ZSk7CiAgICAgbV9pbnN0cnVtZW50
aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JMYXllclRyZWVBZ2VudCh0aGlzKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiB7Ci0gICAgaWYg
KCFtX3N0YXRlLT5nZXRCb29sZWFuKExheWVyVHJlZUFnZW50U3RhdGU6OmxheWVyVHJlZUFnZW50
RW5hYmxlZCkpCisgICAgaWYgKCFtX3N0YXRlLT5nZXRCb29sZWFuKExheWVyVHJlZUFnZW50U3Rh
dGU6OmVuYWJsZWQpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihM
YXllclRyZWVBZ2VudFN0YXRlOjpsYXllclRyZWVBZ2VudEVuYWJsZWQsIGZhbHNlKTsKKyAgICBt
X3N0YXRlLT5zZXRCb29sZWFuKExheWVyVHJlZUFnZW50U3RhdGU6OmVuYWJsZWQsIGZhbHNlKTsK
ICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckxheWVyVHJlZUFnZW50KDAp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCmluZGV4IGY3NTJhNTY2Mzk1NjRiZWZjNjlkZjFhODFjOTQ4ZDgwNmRhYjQ5NWQuLjY0NzUy
NjcxYjVjMjYwMWExMmNlMDdkYjQyYWYxMjUzOThlNWNiMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC04NSwxOSArODUsMTkgQEAg
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFBh
Z2VBZ2VudFN0YXRlIHsKLXN0YXRpYyBjb25zdCBjaGFyIHBhZ2VBZ2VudEVuYWJsZWRbXSA9ICJw
YWdlQWdlbnRFbmFibGVkIjsKLXN0YXRpYyBjb25zdCBjaGFyIHBhZ2VBZ2VudFNjcmlwdEV4ZWN1
dGlvbkRpc2FibGVkW10gPSAicGFnZUFnZW50U2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQiOwotc3Rh
dGljIGNvbnN0IGNoYXIgcGFnZUFnZW50U2NyaXB0c1RvRXZhbHVhdGVPbkxvYWRbXSA9ICJwYWdl
QWdlbnRTY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZCI7Ci1zdGF0aWMgY29uc3QgY2hhciBwYWdlQWdl
bnRTY3JlZW5XaWR0aE92ZXJyaWRlW10gPSAicGFnZUFnZW50U2NyZWVuV2lkdGhPdmVycmlkZSI7
Ci1zdGF0aWMgY29uc3QgY2hhciBwYWdlQWdlbnRTY3JlZW5IZWlnaHRPdmVycmlkZVtdID0gInBh
Z2VBZ2VudFNjcmVlbkhlaWdodE92ZXJyaWRlIjsKLXN0YXRpYyBjb25zdCBjaGFyIHBhZ2VBZ2Vu
dEZvbnRTY2FsZUZhY3Rvck92ZXJyaWRlW10gPSAicGFnZUFnZW50Rm9udFNjYWxlRmFjdG9yT3Zl
cnJpZGUiOwotc3RhdGljIGNvbnN0IGNoYXIgcGFnZUFnZW50Rml0V2luZG93W10gPSAicGFnZUFn
ZW50Rml0V2luZG93IjsKLXN0YXRpYyBjb25zdCBjaGFyIHBhZ2VBZ2VudFNob3dGUFNDb3VudGVy
W10gPSAicGFnZUFnZW50U2hvd0ZQU0NvdW50ZXIiOwotc3RhdGljIGNvbnN0IGNoYXIgcGFnZUFn
ZW50U2hvd1BhaW50UmVjdHNbXSA9ICJwYWdlQWdlbnRTaG93UGFpbnRSZWN0cyI7CitzdGF0aWMg
Y29uc3QgY2hhciBlbmFibGVkW10gPSAiZW5hYmxlZCI7CitzdGF0aWMgY29uc3QgY2hhciBzY3Jp
cHRFeGVjdXRpb25EaXNhYmxlZFtdID0gInNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkIjsKK3N0YXRp
YyBjb25zdCBjaGFyIHNjcmlwdHNUb0V2YWx1YXRlT25Mb2FkW10gPSAic2NyaXB0c1RvRXZhbHVh
dGVPbkxvYWQiOworc3RhdGljIGNvbnN0IGNoYXIgc2NyZWVuV2lkdGhPdmVycmlkZVtdID0gInNj
cmVlbldpZHRoT3ZlcnJpZGUiOworc3RhdGljIGNvbnN0IGNoYXIgc2NyZWVuSGVpZ2h0T3ZlcnJp
ZGVbXSA9ICJzY3JlZW5IZWlnaHRPdmVycmlkZSI7CitzdGF0aWMgY29uc3QgY2hhciBmb250U2Nh
bGVGYWN0b3JPdmVycmlkZVtdID0gImZvbnRTY2FsZUZhY3Rvck92ZXJyaWRlIjsKK3N0YXRpYyBj
b25zdCBjaGFyIGZpdFdpbmRvd1tdID0gImZpdFdpbmRvdyI7CitzdGF0aWMgY29uc3QgY2hhciBz
aG93RlBTQ291bnRlcltdID0gInNob3dGUFNDb3VudGVyIjsKK3N0YXRpYyBjb25zdCBjaGFyIHNo
b3dQYWludFJlY3RzW10gPSAic2hvd1BhaW50UmVjdHMiOwogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCiBzdGF0aWMgY29uc3QgY2hhciB0b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZFtdID0gInRv
dWNoRXZlbnRFbXVsYXRpb25FbmFibGVkIjsKICNlbmRpZgotc3RhdGljIGNvbnN0IGNoYXIgcGFn
ZUFnZW50RW11bGF0ZWRNZWRpYVtdID0gInBhZ2VBZ2VudEVtdWxhdGVkTWVkaWEiOworc3RhdGlj
IGNvbnN0IGNoYXIgZW11bGF0ZWRNZWRpYVtdID0gImVtdWxhdGVkTWVkaWEiOwogfQogCiBzdGF0
aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgY2hhciogYnVmZmVyLCB1bnNpZ25lZCBzaXplLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIFN0cmluZyogcmVzdWx0KQpAQCAtMzU1LDIy
ICszNTUsMjIgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQogCiB2
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzdG9yZSgpCiB7Ci0gICAgaWYgKG1fc3RhdGUtPmdl
dEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudEVuYWJsZWQpKSB7CisgICAgaWYgKG1f
c3RhdGUtPmdldEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6OmVuYWJsZWQpKSB7CiAgICAgICAgIEVy
cm9yU3RyaW5nIGVycm9yOwogICAgICAgICBlbmFibGUoJmVycm9yKTsKLSAgICAgICAgYm9vbCBz
Y3JpcHRFeGVjdXRpb25EaXNhYmxlZCA9IG1fc3RhdGUtPmdldEJvb2xlYW4oUGFnZUFnZW50U3Rh
dGU6OnBhZ2VBZ2VudFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKTsKKyAgICAgICAgYm9vbCBzY3Jp
cHRFeGVjdXRpb25EaXNhYmxlZCA9IG1fc3RhdGUtPmdldEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6
OnNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKTsKICAgICAgICAgc2V0U2NyaXB0RXhlY3V0aW9uRGlz
YWJsZWQoMCwgc2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQpOwotICAgICAgICBib29sIHNob3dQYWlu
dFJlY3RzID0gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2hv
d1BhaW50UmVjdHMpOworICAgICAgICBib29sIHNob3dQYWludFJlY3RzID0gbV9zdGF0ZS0+Z2V0
Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6c2hvd1BhaW50UmVjdHMpOwogICAgICAgICBzZXRTaG93
UGFpbnRSZWN0cygwLCBzaG93UGFpbnRSZWN0cyk7Ci0gICAgICAgIGJvb2wgc2hvd0ZQU0NvdW50
ZXIgPSBtX3N0YXRlLT5nZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTaG93RlBT
Q291bnRlcik7CisgICAgICAgIGJvb2wgc2hvd0ZQU0NvdW50ZXIgPSBtX3N0YXRlLT5nZXRCb29s
ZWFuKFBhZ2VBZ2VudFN0YXRlOjpzaG93RlBTQ291bnRlcik7CiAgICAgICAgIHNldFNob3dGUFND
b3VudGVyKDAsIHNob3dGUFNDb3VudGVyKTsKLSAgICAgICAgU3RyaW5nIGVtdWxhdGVkTWVkaWEg
PSBtX3N0YXRlLT5nZXRTdHJpbmcoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudEVtdWxhdGVkTWVk
aWEpOworICAgICAgICBTdHJpbmcgZW11bGF0ZWRNZWRpYSA9IG1fc3RhdGUtPmdldFN0cmluZyhQ
YWdlQWdlbnRTdGF0ZTo6ZW11bGF0ZWRNZWRpYSk7CiAgICAgICAgIHNldEVtdWxhdGVkTWVkaWEo
MCwgZW11bGF0ZWRNZWRpYSk7CiAKLSAgICAgICAgaW50IGN1cnJlbnRXaWR0aCA9IHN0YXRpY19j
YXN0PGludD4obV9zdGF0ZS0+Z2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2NyZWVu
V2lkdGhPdmVycmlkZSkpOwotICAgICAgICBpbnQgY3VycmVudEhlaWdodCA9IHN0YXRpY19jYXN0
PGludD4obV9zdGF0ZS0+Z2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2NyZWVuSGVp
Z2h0T3ZlcnJpZGUpKTsKLSAgICAgICAgZG91YmxlIGN1cnJlbnRGb250U2NhbGVGYWN0b3IgPSBt
X3N0YXRlLT5nZXREb3VibGUoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudEZvbnRTY2FsZUZhY3Rv
ck92ZXJyaWRlKTsKLSAgICAgICAgYm9vbCBjdXJyZW50Rml0V2luZG93ID0gbV9zdGF0ZS0+Z2V0
Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50Rml0V2luZG93KTsKKyAgICAgICAgaW50
IGN1cnJlbnRXaWR0aCA9IHN0YXRpY19jYXN0PGludD4obV9zdGF0ZS0+Z2V0TG9uZyhQYWdlQWdl
bnRTdGF0ZTo6c2NyZWVuV2lkdGhPdmVycmlkZSkpOworICAgICAgICBpbnQgY3VycmVudEhlaWdo
dCA9IHN0YXRpY19jYXN0PGludD4obV9zdGF0ZS0+Z2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6c2Ny
ZWVuSGVpZ2h0T3ZlcnJpZGUpKTsKKyAgICAgICAgZG91YmxlIGN1cnJlbnRGb250U2NhbGVGYWN0
b3IgPSBtX3N0YXRlLT5nZXREb3VibGUoUGFnZUFnZW50U3RhdGU6OmZvbnRTY2FsZUZhY3Rvck92
ZXJyaWRlKTsKKyAgICAgICAgYm9vbCBjdXJyZW50Rml0V2luZG93ID0gbV9zdGF0ZS0+Z2V0Qm9v
bGVhbihQYWdlQWdlbnRTdGF0ZTo6Zml0V2luZG93KTsKICAgICAgICAgdXBkYXRlVmlld01ldHJp
Y3MoY3VycmVudFdpZHRoLCBjdXJyZW50SGVpZ2h0LCBjdXJyZW50Rm9udFNjYWxlRmFjdG9yLCBj
dXJyZW50Rml0V2luZG93KTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgICAgICB1cGRh
dGVUb3VjaEV2ZW50RW11bGF0aW9uSW5QYWdlKG1fc3RhdGUtPmdldEJvb2xlYW4oUGFnZUFnZW50
U3RhdGU6OnRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKSk7CkBAIC0zODAsMjEgKzM4MCwyMSBA
QCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzdG9yZSgpCiAKIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50Ojp3ZWJWaWV3UmVzaXplZChjb25zdCBJbnRTaXplJiBzaXplKQogewotICAgIGludCBj
dXJyZW50V2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KG1fc3RhdGUtPmdldExvbmcoUGFnZUFnZW50
U3RhdGU6OnBhZ2VBZ2VudFNjcmVlbldpZHRoT3ZlcnJpZGUpKTsKKyAgICBpbnQgY3VycmVudFdp
ZHRoID0gc3RhdGljX2Nhc3Q8aW50PihtX3N0YXRlLT5nZXRMb25nKFBhZ2VBZ2VudFN0YXRlOjpz
Y3JlZW5XaWR0aE92ZXJyaWRlKSk7CiAgICAgbV9vdmVybGF5LT5yZXNpemUoY3VycmVudFdpZHRo
ID8gc2l6ZSA6IEludFNpemUoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjplbmFi
bGUoRXJyb3JTdHJpbmcqKQogewogICAgIG1fZW5hYmxlZCA9IHRydWU7Ci0gICAgbV9zdGF0ZS0+
c2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50RW5hYmxlZCwgdHJ1ZSk7CisgICAg
bV9zdGF0ZS0+c2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6ZW5hYmxlZCwgdHJ1ZSk7CiAgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JQYWdlQWdlbnQodGhpcyk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKIHsKICAgICBt
X2VuYWJsZWQgPSBmYWxzZTsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRl
OjpwYWdlQWdlbnRFbmFibGVkLCBmYWxzZSk7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQYWdl
QWdlbnRTdGF0ZTo6ZW5hYmxlZCwgZmFsc2UpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+
c2V0SW5zcGVjdG9yUGFnZUFnZW50KDApOwogCiAgICAgc2V0U2NyaXB0RXhlY3V0aW9uRGlzYWJs
ZWQoMCwgZmFsc2UpOwpAQCAtNDAzLDIyICs0MDMsMTkgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogICAgIHNldEVtdWxhdGVkTWVkaWEoMCwgIiIpOwog
CiAgICAgLy8gV2hlbiBkaXNhYmxpbmcgdGhlIGFnZW50LCByZXNldCB0aGUgb3ZlcnJpZGUgdmFs
dWVzLgotICAgIG1fc3RhdGUtPnNldExvbmcoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmVl
bldpZHRoT3ZlcnJpZGUsIDApOwotICAgIG1fc3RhdGUtPnNldExvbmcoUGFnZUFnZW50U3RhdGU6
OnBhZ2VBZ2VudFNjcmVlbkhlaWdodE92ZXJyaWRlLCAwKTsKLSAgICBtX3N0YXRlLT5zZXREb3Vi
bGUoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudEZvbnRTY2FsZUZhY3Rvck92ZXJyaWRlLCAxKTsK
LSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRGaXRXaW5k
b3csIGZhbHNlKTsKLSAgICBtX3N0YXRlLT5yZW1vdmUoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2Vu
dFNjcmlwdHNUb0V2YWx1YXRlT25Mb2FkKTsKKyAgICBtX3N0YXRlLT5yZW1vdmUoUGFnZUFnZW50
U3RhdGU6OnNjcmVlbldpZHRoT3ZlcnJpZGUpOworICAgIG1fc3RhdGUtPnJlbW92ZShQYWdlQWdl
bnRTdGF0ZTo6c2NyZWVuSGVpZ2h0T3ZlcnJpZGUpOworICAgIG1fc3RhdGUtPnJlbW92ZShQYWdl
QWdlbnRTdGF0ZTo6Zm9udFNjYWxlRmFjdG9yT3ZlcnJpZGUpOworICAgIG1fc3RhdGUtPnJlbW92
ZShQYWdlQWdlbnRTdGF0ZTo6Zml0V2luZG93KTsKKyAgICBtX3N0YXRlLT5yZW1vdmUoUGFnZUFn
ZW50U3RhdGU6OnNjcmlwdHNUb0V2YWx1YXRlT25Mb2FkKTsKICAgICB1cGRhdGVWaWV3TWV0cmlj
cygwLCAwLCAxLCBmYWxzZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjphZGRTY3Jp
cHRUb0V2YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIFN0
cmluZyogaWRlbnRpZmllcikKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzY3JpcHRz
ID0gbV9zdGF0ZS0+Z2V0T2JqZWN0KFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTY3JpcHRzVG9F
dmFsdWF0ZU9uTG9hZCk7Ci0gICAgaWYgKCFzY3JpcHRzKSB7Ci0gICAgICAgIHNjcmlwdHMgPSBJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICBtX3N0YXRlLT5zZXRPYmplY3QoUGFn
ZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmlwdHNUb0V2YWx1YXRlT25Mb2FkLCBzY3JpcHRzKTsK
LSAgICB9Ci0gICAgLy8gQXNzdXJlIHdlIGRvbid0IG92ZXJyaWRlIGV4aXN0aW5nIGlkcyAtLSBt
X2xhc3RTY3JpcHRJZGVudGlmaWVyIGNvdWxkIGdldCBvdXQgb2Ygc3luYyBXUlQgYWN0dWFsCisg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc2NyaXB0cyA9IG1fc3RhdGUtPmdldE9iamVjdChQ
YWdlQWdlbnRTdGF0ZTo6c2NyaXB0c1RvRXZhbHVhdGVPbkxvYWQpOworCisgICAgLy8gTWFrZSBz
dXJlIHdlIGRvbid0IG92ZXJyaWRlIGV4aXN0aW5nIGlkcyAtLSBtX2xhc3RTY3JpcHRJZGVudGlm
aWVyIGNvdWxkIGdldCBvdXQgb2Ygc3luYyBXUlQgYWN0dWFsCiAgICAgLy8gc2NyaXB0cyBvbmNl
IHdlIHJlc3RvcmVkIHRoZSBzY3JpcHRzIGZyb20gdGhlIGNvb2tpZSBkdXJpbmcgbmF2aWdhdGlv
bi4KICAgICBkbyB7CiAgICAgICAgICppZGVudGlmaWVyID0gU3RyaW5nOjpudW1iZXIoKyttX2xh
c3RTY3JpcHRJZGVudGlmaWVyKTsKQEAgLTQyOCw3ICs0MjUsNyBAQCB2b2lkIEluc3BlY3RvclBh
Z2VBZ2VudDo6YWRkU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZChFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgcwogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVtb3ZlU2NyaXB0VG9FdmFsdWF0
ZU9uTG9hZChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIHsK
LSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzY3JpcHRzID0gbV9zdGF0ZS0+Z2V0T2JqZWN0
KFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZCk7CisgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc2NyaXB0cyA9IG1fc3RhdGUtPmdldE9iamVjdChQYWdl
QWdlbnRTdGF0ZTo6c2NyaXB0c1RvRXZhbHVhdGVPbkxvYWQpOwogICAgIGlmICghc2NyaXB0cyB8
fCBzY3JpcHRzLT5maW5kKGlkZW50aWZpZXIpID09IHNjcmlwdHMtPmVuZCgpKSB7CiAgICAgICAg
ICplcnJvciA9ICJTY3JpcHQgbm90IGZvdW5kIjsKICAgICAgICAgcmV0dXJuOwpAQCAtNzE2LDI1
ICs3MTMsMjUgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldERldmljZU1ldHJpY3NPdmVy
cmlkZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludAogICAgIH0KIAogICAgIC8vIFRoZXNl
IHR3byBhbHdheXMgZml0IGFuIGludC4KLSAgICBpbnQgY3VycmVudFdpZHRoID0gc3RhdGljX2Nh
c3Q8aW50PihtX3N0YXRlLT5nZXRMb25nKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTY3JlZW5X
aWR0aE92ZXJyaWRlKSk7Ci0gICAgaW50IGN1cnJlbnRIZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+
KG1fc3RhdGUtPmdldExvbmcoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmVlbkhlaWdodE92
ZXJyaWRlKSk7Ci0gICAgZG91YmxlIGN1cnJlbnRGb250U2NhbGVGYWN0b3IgPSBtX3N0YXRlLT5n
ZXREb3VibGUoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudEZvbnRTY2FsZUZhY3Rvck92ZXJyaWRl
KTsKLSAgICBib29sIGN1cnJlbnRGaXRXaW5kb3cgPSBtX3N0YXRlLT5nZXRCb29sZWFuKFBhZ2VB
Z2VudFN0YXRlOjpwYWdlQWdlbnRGaXRXaW5kb3cpOworICAgIGludCBjdXJyZW50V2lkdGggPSBz
dGF0aWNfY2FzdDxpbnQ+KG1fc3RhdGUtPmdldExvbmcoUGFnZUFnZW50U3RhdGU6OnNjcmVlbldp
ZHRoT3ZlcnJpZGUpKTsKKyAgICBpbnQgY3VycmVudEhlaWdodCA9IHN0YXRpY19jYXN0PGludD4o
bV9zdGF0ZS0+Z2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6c2NyZWVuSGVpZ2h0T3ZlcnJpZGUpKTsK
KyAgICBkb3VibGUgY3VycmVudEZvbnRTY2FsZUZhY3RvciA9IG1fc3RhdGUtPmdldERvdWJsZShQ
YWdlQWdlbnRTdGF0ZTo6Zm9udFNjYWxlRmFjdG9yT3ZlcnJpZGUpOworICAgIGJvb2wgY3VycmVu
dEZpdFdpbmRvdyA9IG1fc3RhdGUtPmdldEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6OmZpdFdpbmRv
dyk7CiAKICAgICBpZiAod2lkdGggPT0gY3VycmVudFdpZHRoICYmIGhlaWdodCA9PSBjdXJyZW50
SGVpZ2h0ICYmIGZvbnRTY2FsZUZhY3RvciA9PSBjdXJyZW50Rm9udFNjYWxlRmFjdG9yICYmIGZp
dFdpbmRvdyA9PSBjdXJyZW50Rml0V2luZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3N0
YXRlLT5zZXRMb25nKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTY3JlZW5XaWR0aE92ZXJyaWRl
LCB3aWR0aCk7Ci0gICAgbV9zdGF0ZS0+c2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50
U2NyZWVuSGVpZ2h0T3ZlcnJpZGUsIGhlaWdodCk7Ci0gICAgbV9zdGF0ZS0+c2V0RG91YmxlKFBh
Z2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRGb250U2NhbGVGYWN0b3JPdmVycmlkZSwgZm9udFNjYWxl
RmFjdG9yKTsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdl
bnRGaXRXaW5kb3csIGZpdFdpbmRvdyk7CisgICAgbV9zdGF0ZS0+c2V0TG9uZyhQYWdlQWdlbnRT
dGF0ZTo6c2NyZWVuV2lkdGhPdmVycmlkZSwgd2lkdGgpOworICAgIG1fc3RhdGUtPnNldExvbmco
UGFnZUFnZW50U3RhdGU6OnNjcmVlbkhlaWdodE92ZXJyaWRlLCBoZWlnaHQpOworICAgIG1fc3Rh
dGUtPnNldERvdWJsZShQYWdlQWdlbnRTdGF0ZTo6Zm9udFNjYWxlRmFjdG9yT3ZlcnJpZGUsIGZv
bnRTY2FsZUZhY3Rvcik7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6
Zml0V2luZG93LCBmaXRXaW5kb3cpOwogCiAgICAgdXBkYXRlVmlld01ldHJpY3Mod2lkdGgsIGhl
aWdodCwgZm9udFNjYWxlRmFjdG9yLCBmaXRXaW5kb3cpOwogfQogCiB2b2lkIEluc3BlY3RvclBh
Z2VBZ2VudDo6c2V0U2hvd1BhaW50UmVjdHMoRXJyb3JTdHJpbmcqLCBib29sIHNob3cpCiB7Ci0g
ICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2hvd1BhaW50
UmVjdHMsIHNob3cpOworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6OnNo
b3dQYWludFJlY3RzLCBzaG93KTsKICAgICBtX2NsaWVudC0+c2V0U2hvd1BhaW50UmVjdHMoc2hv
dyk7CiAKICAgICBpZiAoIXNob3cgJiYgbWFpbkZyYW1lKCkgJiYgbWFpbkZyYW1lKCktPnZpZXco
KSkKQEAgLTc0OCw3ICs3NDUsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FuU2hvd0ZQ
U0NvdW50ZXIoRXJyb3JTdHJpbmcqLCBib29sKiBvdXRQYXJhbSkKIAogdm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnNldFNob3dGUFNDb3VudGVyKEVycm9yU3RyaW5nKiwgYm9vbCBzaG93KQogewot
ICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNob3dGUFND
b3VudGVyLCBzaG93KTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpz
aG93RlBTQ291bnRlciwgc2hvdyk7CiAgICAgbV9jbGllbnQtPnNldFNob3dGUFNDb3VudGVyKHNo
b3cpOwogCiAgICAgaWYgKG1haW5GcmFtZSgpICYmIG1haW5GcmFtZSgpLT52aWV3KCkpCkBAIC03
NzksNyArNzc2LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFNjcmlwdEV4ZWN1dGlv
blN0YXR1cyhFcnJvclN0cmluZyosIFBhZ2VDb21tYW5kSGFuZGwKIAogdm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnNldFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKEVycm9yU3RyaW5nKiwgYm9vbCB2
YWx1ZSkKIHsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdl
bnRTY3JpcHRFeGVjdXRpb25EaXNhYmxlZCwgdmFsdWUpOworICAgIG1fc3RhdGUtPnNldEJvb2xl
YW4oUGFnZUFnZW50U3RhdGU6OnNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkLCB2YWx1ZSk7CiAgICAg
aWYgKCFtYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC03OTksNyArNzk2LDcgQEAg
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFt
ZSogZnJhbWUsIERPTVdyYXBwZXJXb3IKICAgICBpZiAoIW1fZnJvbnRlbmQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHNjcmlwdHMgPSBtX3N0YXRlLT5n
ZXRPYmplY3QoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmlwdHNUb0V2YWx1YXRlT25Mb2Fk
KTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzY3JpcHRzID0gbV9zdGF0ZS0+Z2V0T2Jq
ZWN0KFBhZ2VBZ2VudFN0YXRlOjpzY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZCk7CiAgICAgaWYgKHNj
cmlwdHMpIHsKICAgICAgICAgSW5zcGVjdG9yT2JqZWN0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBz
Y3JpcHRzLT5lbmQoKTsKICAgICAgICAgZm9yIChJbnNwZWN0b3JPYmplY3Q6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gc2NyaXB0cy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CkBAIC05MDgsMjEg
KzkwNSwyMSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6bG9hZGVyRGV0YWNoZWRGcm9tRnJh
bWUoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFw
cGx5U2NyZWVuV2lkdGhPdmVycmlkZShsb25nKiB3aWR0aCkKIHsKLSAgICBsb25nIHdpZHRoT3Zl
cnJpZGUgPSBtX3N0YXRlLT5nZXRMb25nKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTY3JlZW5X
aWR0aE92ZXJyaWRlKTsKKyAgICBsb25nIHdpZHRoT3ZlcnJpZGUgPSBtX3N0YXRlLT5nZXRMb25n
KFBhZ2VBZ2VudFN0YXRlOjpzY3JlZW5XaWR0aE92ZXJyaWRlKTsKICAgICBpZiAod2lkdGhPdmVy
cmlkZSkKICAgICAgICAgKndpZHRoID0gd2lkdGhPdmVycmlkZTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmFwcGx5U2NyZWVuSGVpZ2h0T3ZlcnJpZGUobG9uZyogaGVpZ2h0KQogewot
ICAgIGxvbmcgaGVpZ2h0T3ZlcnJpZGUgPSBtX3N0YXRlLT5nZXRMb25nKFBhZ2VBZ2VudFN0YXRl
OjpwYWdlQWdlbnRTY3JlZW5IZWlnaHRPdmVycmlkZSk7CisgICAgbG9uZyBoZWlnaHRPdmVycmlk
ZSA9IG1fc3RhdGUtPmdldExvbmcoUGFnZUFnZW50U3RhdGU6OnNjcmVlbkhlaWdodE92ZXJyaWRl
KTsKICAgICBpZiAoaGVpZ2h0T3ZlcnJpZGUpCiAgICAgICAgICpoZWlnaHQgPSBoZWlnaHRPdmVy
cmlkZTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZFBhaW50KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAoIW1fZW5h
YmxlZCB8fCBtX2NsaWVudC0+b3ZlcnJpZGVzU2hvd1BhaW50UmVjdHMoKSB8fCAhbV9zdGF0ZS0+
Z2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2hvd1BhaW50UmVjdHMpKQorICAg
IGlmICghbV9lbmFibGVkIHx8IG1fY2xpZW50LT5vdmVycmlkZXNTaG93UGFpbnRSZWN0cygpIHx8
ICFtX3N0YXRlLT5nZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpzaG93UGFpbnRSZWN0cykpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIHN0YXRpYyBpbnQgY29sb3JTZWxlY3RvciA9IDA7CkBAIC05
NDcsOCArOTQ0LDggQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZExheW91dCgpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChpc0ZpcnN0TGF5b3V0KSB7Ci0gICAgICAgIGludCBjdXJy
ZW50V2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KG1fc3RhdGUtPmdldExvbmcoUGFnZUFnZW50U3Rh
dGU6OnBhZ2VBZ2VudFNjcmVlbldpZHRoT3ZlcnJpZGUpKTsKLSAgICAgICAgaW50IGN1cnJlbnRI
ZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KG1fc3RhdGUtPmdldExvbmcoUGFnZUFnZW50U3RhdGU6
OnBhZ2VBZ2VudFNjcmVlbkhlaWdodE92ZXJyaWRlKSk7CisgICAgICAgIGludCBjdXJyZW50V2lk
dGggPSBzdGF0aWNfY2FzdDxpbnQ+KG1fc3RhdGUtPmdldExvbmcoUGFnZUFnZW50U3RhdGU6OnNj
cmVlbldpZHRoT3ZlcnJpZGUpKTsKKyAgICAgICAgaW50IGN1cnJlbnRIZWlnaHQgPSBzdGF0aWNf
Y2FzdDxpbnQ+KG1fc3RhdGUtPmdldExvbmcoUGFnZUFnZW50U3RhdGU6OnNjcmVlbkhlaWdodE92
ZXJyaWRlKSk7CiAKICAgICAgICAgaWYgKGN1cnJlbnRXaWR0aCAmJiBjdXJyZW50SGVpZ2h0KQog
ICAgICAgICAgICAgbV9jbGllbnQtPmF1dG9ab29tUGFnZVRvRml0V2lkdGgoKTsKQEAgLTExNTcs
MTEgKzExNTQsMTEgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFRvdWNoRW11bGF0aW9u
RW5hYmxlZChFcnJvclN0cmluZyogZXJyb3IsIGJvb2wgZW5hYmwKIAogdm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnNldEVtdWxhdGVkTWVkaWEoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG1l
ZGlhKQogewotICAgIFN0cmluZyBjdXJyZW50TWVkaWEgPSBtX3N0YXRlLT5nZXRTdHJpbmcoUGFn
ZUFnZW50U3RhdGU6OnBhZ2VBZ2VudEVtdWxhdGVkTWVkaWEpOworICAgIFN0cmluZyBjdXJyZW50
TWVkaWEgPSBtX3N0YXRlLT5nZXRTdHJpbmcoUGFnZUFnZW50U3RhdGU6OmVtdWxhdGVkTWVkaWEp
OwogICAgIGlmIChtZWRpYSA9PSBjdXJyZW50TWVkaWEpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fc3RhdGUtPnNldFN0cmluZyhQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50RW11bGF0ZWRNZWRp
YSwgbWVkaWEpOworICAgIG1fc3RhdGUtPnNldFN0cmluZyhQYWdlQWdlbnRTdGF0ZTo6ZW11bGF0
ZWRNZWRpYSwgbWVkaWEpOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IDA7CiAgICAgaWYgKG1f
cGFnZS0+bWFpbkZyYW1lKCkpCiAgICAgICAgIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUo
KS0+ZG9jdW1lbnQoKTsKQEAgLTExNzMsNyArMTE3MCw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50OjpzZXRFbXVsYXRlZE1lZGlhKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBtZWRpYSkK
IAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFwcGx5RW11bGF0ZWRNZWRpYShTdHJpbmcqIG1l
ZGlhKQogewotICAgIFN0cmluZyBlbXVsYXRlZE1lZGlhID0gbV9zdGF0ZS0+Z2V0U3RyaW5nKFBh
Z2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRFbXVsYXRlZE1lZGlhKTsKKyAgICBTdHJpbmcgZW11bGF0
ZWRNZWRpYSA9IG1fc3RhdGUtPmdldFN0cmluZyhQYWdlQWdlbnRTdGF0ZTo6ZW11bGF0ZWRNZWRp
YSk7CiAgICAgaWYgKCFlbXVsYXRlZE1lZGlhLmlzRW1wdHkoKSkKICAgICAgICAgKm1lZGlhID0g
ZW11bGF0ZWRNZWRpYTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCBhM2FlYzlhYTVmMWZlMmJhZjU4OTM4NjcwODYw
ZWQ0NDljYmU0ZjMwLi4xODEyMjIyZjU2MzViNDMyMTUwNzJmN2MxNWUzMzhhMGM1YzliMTg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuY3BwCkBAIC03OCw3ICs3OCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFj
ZSBSZXNvdXJjZUFnZW50U3RhdGUgewotc3RhdGljIGNvbnN0IGNoYXIgcmVzb3VyY2VBZ2VudEVu
YWJsZWRbXSA9ICJyZXNvdXJjZUFnZW50RW5hYmxlZCI7CitzdGF0aWMgY29uc3QgY2hhciBlbmFi
bGVkW10gPSAiZW5hYmxlZCI7CiBzdGF0aWMgY29uc3QgY2hhciBleHRyYVJlcXVlc3RIZWFkZXJz
W10gPSAiZXh0cmFSZXF1ZXN0SGVhZGVycyI7CiBzdGF0aWMgY29uc3QgY2hhciBjYWNoZURpc2Fi
bGVkW10gPSAiY2FjaGVEaXNhYmxlZCI7CiBzdGF0aWMgY29uc3QgY2hhciB1c2VyQWdlbnRPdmVy
cmlkZVtdID0gInVzZXJBZ2VudE92ZXJyaWRlIjsKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpjbGVhckZyb250ZW5kKCkKIAogdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpyZXN0b3JlKCkKIHsKLSAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihSZXNv
dXJjZUFnZW50U3RhdGU6OnJlc291cmNlQWdlbnRFbmFibGVkKSkKKyAgICBpZiAobV9zdGF0ZS0+
Z2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OmVuYWJsZWQpKQogICAgICAgICBlbmFibGUo
KTsKIH0KIApAQCAtMjAwLDcgKzIwMCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpOZXR3b3JrOjpDYWNoZWRSZXNvdXJjZT4gYnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvCiAKIElu
c3BlY3RvclJlc291cmNlQWdlbnQ6On5JbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkKIHsKLSAgICBp
ZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OnJlc291cmNlQWdlbnRF
bmFibGVkKSkgeworICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKFJlc291cmNlQWdlbnRTdGF0
ZTo6ZW5hYmxlZCkpIHsKICAgICAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgICAgIGRpc2Fi
bGUoJmVycm9yKTsKICAgICB9CkBAIC01NjEsMTQgKzU2MSwxNCBAQCB2b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmVuYWJsZSgpCiB7CiAgICAgaWYgKCFtX2Zyb250ZW5kKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OnJlc291
cmNlQWdlbnRFbmFibGVkLCB0cnVlKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFJlc291cmNl
QWdlbnRTdGF0ZTo6ZW5hYmxlZCwgdHJ1ZSk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5z
ZXRJbnNwZWN0b3JSZXNvdXJjZUFnZW50KHRoaXMpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogewotICAgIG1fc3RhdGUtPnNldEJvb2xl
YW4oUmVzb3VyY2VBZ2VudFN0YXRlOjpyZXNvdXJjZUFnZW50RW5hYmxlZCwgZmFsc2UpOwotICAg
IG1fc3RhdGUtPnNldFN0cmluZyhSZXNvdXJjZUFnZW50U3RhdGU6OnVzZXJBZ2VudE92ZXJyaWRl
LCAiIik7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OmVuYWJs
ZWQsIGZhbHNlKTsKKyAgICBtX3N0YXRlLT5yZW1vdmUoUmVzb3VyY2VBZ2VudFN0YXRlOjp1c2Vy
QWdlbnRPdmVycmlkZSk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50KDApOwogICAgIG1fcmVzb3VyY2VzRGF0YS0+Y2xlYXIoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwCmluZGV4IDY3NWQ0OTlkMWY1
ZDI2ZWQxZDI3NDc2NDcxNWZhZTNjMjY2ZmI1NjMuLjk4MzIwMzkxMWIxN2IwNDllNjE5YzdjNTFk
MWI5MTM4Y2VhMzFjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0
YXRlLmNwcApAQCAtMzYsMzcgKzM2LDIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5z
cGVjdG9yU3RhdGU6Okluc3BlY3RvclN0YXRlKEluc3BlY3RvclN0YXRlQ2xpZW50KiBjbGllbnQp
Ci0gICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3Byb3BlcnRpZXMoSW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKSkKLSAgICAsIG1faXNPbk11dGUoZmFsc2UpCitJbnNwZWN0b3JTdGF0ZTo6
SW5zcGVjdG9yU3RhdGUoSW5zcGVjdG9yU3RhdGVVcGRhdGVMaXN0ZW5lciogbGlzdGVuZXIsIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwcm9wZXJ0aWVzKQorICAgIDogbV9saXN0ZW5lcihs
aXN0ZW5lcikKKyAgICAsIG1fcHJvcGVydGllcyhwcm9wZXJ0aWVzKQogewogfQogCi12b2lkIElu
c3BlY3RvclN0YXRlOjpsb2FkRnJvbUNvb2tpZShjb25zdCBTdHJpbmcmIGluc3BlY3RvclN0YXRl
Q29va2llKQotewotICAgIG1fcHJvcGVydGllcy5jbGVhcigpOwotICAgIFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4gY29va2llID0gSW5zcGVjdG9yVmFsdWU6OnBhcnNlSlNPTihpbnNwZWN0b3JTdGF0
ZUNvb2tpZSk7Ci0gICAgaWYgKGNvb2tpZSkKLSAgICAgICAgbV9wcm9wZXJ0aWVzID0gY29va2ll
LT5hc09iamVjdCgpOwotICAgIGlmICghbV9wcm9wZXJ0aWVzKQotICAgICAgICBtX3Byb3BlcnRp
ZXMgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotfQotCi12b2lkIEluc3BlY3RvclN0YXRl
OjptdXRlKCkKK3ZvaWQgSW5zcGVjdG9yU3RhdGU6OnVwZGF0ZUNvb2tpZSgpCiB7Ci0gICAgbV9p
c09uTXV0ZSA9IHRydWU7CisgICAgaWYgKG1fbGlzdGVuZXIpCisgICAgICAgIG1fbGlzdGVuZXIt
Pmluc3BlY3RvclN0YXRlVXBkYXRlZCgpOwogfQogCi12b2lkIEluc3BlY3RvclN0YXRlOjp1bm11
dGUoKQordm9pZCBJbnNwZWN0b3JTdGF0ZTo6c2V0RnJvbUNvb2tpZShQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gcHJvcGVydGllcykKIHsKLSAgICBtX2lzT25NdXRlID0gZmFsc2U7Ci19Ci0K
LXZvaWQgSW5zcGVjdG9yU3RhdGU6OnVwZGF0ZUNvb2tpZSgpCi17Ci0gICAgaWYgKG1fY2xpZW50
ICYmICFtX2lzT25NdXRlICYmIG1fY2xpZW50LT5zdXBwb3J0c0luc3BlY3RvclN0YXRlVXBkYXRl
cygpKQotICAgICAgICBtX2NsaWVudC0+dXBkYXRlSW5zcGVjdG9yU3RhdGVDb29raWUobV9wcm9w
ZXJ0aWVzLT50b0pTT05TdHJpbmcoKSk7CisgICAgbV9wcm9wZXJ0aWVzID0gcHJvcGVydGllczsK
IH0KIAogdm9pZCBJbnNwZWN0b3JTdGF0ZTo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQpAQCAtNzgsNiArNjIsNyBA
QCB2b2lkIEluc3BlY3RvclN0YXRlOjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYQogdm9pZCBJbnNwZWN0b3JTdGF0ZTo6cmVtb3ZlKGNv
bnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogewogICAgIG1fcHJvcGVydGllcy0+cmVtb3ZlKHBy
b3BlcnR5TmFtZSk7CisgICAgdXBkYXRlQ29va2llKCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yU3Rh
dGU6OmdldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCkBAIC0xMjYsNiArMTEx
LDUyIEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JTdGF0ZTo6Z2V0T2Jq
ZWN0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lCiAgICAgcmV0dXJuIGl0LT52YWx1ZS0+YXNP
YmplY3QoKTsKIH0KIAorSW5zcGVjdG9yU3RhdGUqIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlOjpj
cmVhdGVBZ2VudFN0YXRlKCkKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzdGF0ZVBy
b3BlcnRpZXMgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgIG1fc3RhdGVBcnJheS0+
cHVzaE9iamVjdChzdGF0ZVByb3BlcnRpZXMpOworICAgIEluc3BlY3RvclN0YXRlKiByZXN1bHQg
PSBuZXcgSW5zcGVjdG9yU3RhdGUodGhpcywgc3RhdGVQcm9wZXJ0aWVzKTsKKyAgICBtX3N0YXRl
cy5hcHBlbmQoYWRvcHRQdHIocmVzdWx0KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9p
ZCBJbnNwZWN0b3JDb21wb3NpdGVTdGF0ZTo6bG9hZEZyb21Db29raWUoY29uc3QgU3RyaW5nJiBJ
bnNwZWN0b3JDb21wb3NpdGVTdGF0ZUNvb2tpZSkKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+IGNvb2tpZSA9IEluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04oSW5zcGVjdG9yQ29tcG9zaXRl
U3RhdGVDb29raWUpOworICAgIGlmIChjb29raWUpCisgICAgICAgIG1fc3RhdGVBcnJheSA9IGNv
b2tpZS0+YXNBcnJheSgpOworICAgIGlmICghbV9zdGF0ZUFycmF5KSB7CisgICAgICAgIG1fc3Rh
dGVBcnJheSA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDAsIHNpemUgPSBtX3N0YXRlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHN0YXRlT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0
OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fc3RhdGVBcnJheS0+cHVzaE9iamVjdChzdGF0ZU9i
amVjdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlQobV9zdGF0ZUFycmF5KTsKKyAg
ICBBU1NFUlQobV9zdGF0ZUFycmF5LT5sZW5ndGgoKSA9PSBtX3N0YXRlcy5zaXplKCkpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gbV9zdGF0ZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytp
KSB7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gc3RhdGVPYmplY3QgPSBtX3N0YXRl
QXJyYXktPmdldChpKTsKKyAgICAgICAgbV9zdGF0ZXMuYXQoaSktPnNldEZyb21Db29raWUoc3Rh
dGVPYmplY3QtPmFzT2JqZWN0KCkpOworICAgIH0KK30KKwordm9pZCBJbnNwZWN0b3JDb21wb3Np
dGVTdGF0ZTo6bXV0ZSgpCit7CisgICAgbV9pc011dGVkID0gdHJ1ZTsKK30KKwordm9pZCBJbnNw
ZWN0b3JDb21wb3NpdGVTdGF0ZTo6dW5tdXRlKCkKK3sKKyAgICBtX2lzTXV0ZWQgPSBmYWxzZTsK
K30KKwordm9pZCBJbnNwZWN0b3JDb21wb3NpdGVTdGF0ZTo6aW5zcGVjdG9yU3RhdGVVcGRhdGVk
KCkKK3sKKyAgICBpZiAobV9jbGllbnQgJiYgIW1faXNNdXRlZCAmJiBtX2NsaWVudC0+c3VwcG9y
dHNJbnNwZWN0b3JTdGF0ZVVwZGF0ZXMoKSkKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUluc3Bl
Y3RvclN0YXRlQ29va2llKG1fc3RhdGVBcnJheS0+dG9KU09OU3RyaW5nKCkpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuaAppbmRleCAzZGMwOTBhYmQ5NTM3Y2Zh
YjY1MDdlNTJlODJmZmUyN2FlZjQxYzc5Li43ZmUzYmUxMmQzNDg4MTdlNjM1NWVmYWFlOTA4MWU1
MGUwNWJkYWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuaApA
QCAtMzYsMjMgKzM2LDI1IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnNwZWN0b3JTdGF0ZUNsaWVudDsKIAorY2xhc3MgSW5z
cGVjdG9yU3RhdGVVcGRhdGVMaXN0ZW5lciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SW5zcGVj
dG9yU3RhdGVVcGRhdGVMaXN0ZW5lcigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JT
dGF0ZVVwZGF0ZWQoKSA9IDA7Cit9OworCiBjbGFzcyBJbnNwZWN0b3JTdGF0ZSB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yU3RhdGUoSW5zcGVj
dG9yU3RhdGVDbGllbnQqKTsKKyAgICBJbnNwZWN0b3JTdGF0ZShJbnNwZWN0b3JTdGF0ZVVwZGF0
ZUxpc3RlbmVyKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KTsKICAgICB2aXJ0dWFsIH5J
bnNwZWN0b3JTdGF0ZSgpIHt9CiAKLSAgICB2b2lkIGxvYWRGcm9tQ29va2llKGNvbnN0IFN0cmlu
ZyYgaW5zcGVjdG9yU3RhdGVDb29raWUpOwotCi0gICAgdm9pZCBtdXRlKCk7Ci0gICAgdm9pZCB1
bm11dGUoKTsKLQogICAgIGJvb2wgZ2V0Qm9vbGVhbihjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSk7CiAgICAgU3RyaW5nIGdldFN0cmluZyhjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSk7CiAg
ICAgbG9uZyBnZXRMb25nKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKTsKQEAgLTYxLDE4ICs2
Myw1MCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBwcm9w
ZXJ0eU5hbWUsIGJvb2wgdmFsdWUpIHsgc2V0VmFsdWUocHJvcGVydHlOYW1lLCBJbnNwZWN0b3JC
YXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUpKTsgfQogICAgIHZvaWQgc2V0U3RyaW5nKGNvbnN0IFN0
cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKSB7IHNldFZhbHVlKHByb3Bl
cnR5TmFtZSwgSW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUodmFsdWUpKTsgfQotICAgIHZvaWQgc2V0
TG9uZyhjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgbG9uZyB2YWx1ZSkgeyBzZXRWYWx1ZShw
cm9wZXJ0eU5hbWUsIEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSgoZG91YmxlKXZhbHVlKSk7
IH0KKyAgICB2b2lkIHNldExvbmcoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGxvbmcgdmFs
dWUpIHsgc2V0VmFsdWUocHJvcGVydHlOYW1lLCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpKTsgfQogICAgIHZvaWQgc2V0RG91YmxlKGNvbnN0
IFN0cmluZyYgcHJvcGVydHlOYW1lLCBkb3VibGUgdmFsdWUpIHsgc2V0VmFsdWUocHJvcGVydHlO
YW1lLCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUpKTsgfQogICAgIHZvaWQgc2V0
T2JqZWN0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gdmFsdWUpIHsgc2V0VmFsdWUocHJvcGVydHlOYW1lLCB2YWx1ZSk7IH0KIAogICAgIHZv
aWQgcmVtb3ZlKGNvbnN0IFN0cmluZyYpOworCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQ29v
a2llKCk7CiAgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgUGFz
c1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4pOwogCi0gICAgSW5zcGVjdG9yU3RhdGVDbGllbnQqIG1f
Y2xpZW50OworICAgIC8vIFRoaXMgZ2V0cyBjYWxsZWQgZnJvbSBJbnNwZWN0b3JDb21wb3NpdGVT
dGF0ZTo6bG9hZEZyb21Db29raWUoKS4KKyAgICB2b2lkIHNldEZyb21Db29raWUoUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+KTsKKworICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JDb21wb3Np
dGVTdGF0ZTsKKworICAgIEluc3BlY3RvclN0YXRlVXBkYXRlTGlzdGVuZXIqIG1fbGlzdGVuZXI7
CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9wcm9wZXJ0aWVzOwotICAgIGJvb2wgbV9p
c09uTXV0ZTsKK307CisKK2NsYXNzIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlIDogcHVibGljIElu
c3BlY3RvclN0YXRlVXBkYXRlTGlzdGVuZXIgeworcHVibGljOgorICAgIEluc3BlY3RvckNvbXBv
c2l0ZVN0YXRlKEluc3BlY3RvclN0YXRlQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQpCisgICAgICAg
IDogbV9jbGllbnQoaW5zcGVjdG9yQ2xpZW50KQorICAgICAgICAsIG1fc3RhdGVBcnJheShJbnNw
ZWN0b3JBcnJheTo6Y3JlYXRlKCkpCisgICAgICAgICwgbV9pc011dGVkKGZhbHNlKQorICAgIHsK
KyAgICB9CisgICAgdmlydHVhbCB+SW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUoKSB7IH0KKworICAg
IHZvaWQgbXV0ZSgpOworICAgIHZvaWQgdW5tdXRlKCk7CisKKyAgICBJbnNwZWN0b3JTdGF0ZSog
Y3JlYXRlQWdlbnRTdGF0ZSgpOworICAgIHZvaWQgbG9hZEZyb21Db29raWUoY29uc3QgU3RyaW5n
Jik7CisKK3ByaXZhdGU6CisgICAgdHlwZWRlZiBWZWN0b3I8T3duUHRyPEluc3BlY3RvclN0YXRl
PiA+IEluc3BlY3RvclN0YXRlVmVjdG9yOworCisgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvclN0
YXRlVXBkYXRlZCgpOworCisgICAgSW5zcGVjdG9yU3RhdGVDbGllbnQqIG1fY2xpZW50OworICAg
IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gbV9zdGF0ZUFycmF5OworICAgIGJvb2wgbV9pc011dGVk
OworICAgIEluc3BlY3RvclN0YXRlVmVjdG9yIG1fc3RhdGVzOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuY3BwCmluZGV4IGY5ZjlkMTc1Y2ZjYmQ2YjgyMGY0NWU2NTUyNDFjM2MxMTEy
ZjVjZGQuLmU2MDU0OTM4MmZmY2JkOGVjM2NhYTgyNjM1ZDViOTA1OTQxOTg3MGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAK
QEAgLTU3LDcgKzU3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFRpbWVs
aW5lQWdlbnRTdGF0ZSB7Ci1zdGF0aWMgY29uc3QgY2hhciB0aW1lbGluZUFnZW50RW5hYmxlZFtd
ID0gInRpbWVsaW5lQWdlbnRFbmFibGVkIjsKK3N0YXRpYyBjb25zdCBjaGFyIGVuYWJsZWRbXSA9
ICJlbmFibGVkIjsKIHN0YXRpYyBjb25zdCBjaGFyIHRpbWVsaW5lTWF4Q2FsbFN0YWNrRGVwdGhb
XSA9ICJ0aW1lbGluZU1heENhbGxTdGFja0RlcHRoIjsKIHN0YXRpYyBjb25zdCBjaGFyIGluY2x1
ZGVNZW1vcnlEZXRhaWxzW10gPSAiaW5jbHVkZU1lbW9yeURldGFpbHMiOwogfQpAQCAtMTQ5LDcg
KzE0OSw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCiAK
IHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cmVzdG9yZSgpCiB7Ci0gICAgaWYgKG1fc3Rh
dGUtPmdldEJvb2xlYW4oVGltZWxpbmVBZ2VudFN0YXRlOjp0aW1lbGluZUFnZW50RW5hYmxlZCkp
IHsKKyAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihUaW1lbGluZUFnZW50U3RhdGU6OmVuYWJs
ZWQpKSB7CiAgICAgICAgIG1fbWF4Q2FsbFN0YWNrRGVwdGggPSBtX3N0YXRlLT5nZXRMb25nKFRp
bWVsaW5lQWdlbnRTdGF0ZTo6dGltZWxpbmVNYXhDYWxsU3RhY2tEZXB0aCk7CiAgICAgICAgIEVy
cm9yU3RyaW5nIGVycm9yOwogICAgICAgICBzdGFydCgmZXJyb3IsICZtX21heENhbGxTdGFja0Rl
cHRoKTsKQEAgLTE3MCwxMiArMTcwLDEyIEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
c3RhcnQoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoKQogCiAgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JUaW1lbGluZUFnZW50KHRoaXMpOwog
ICAgIFNjcmlwdEdDRXZlbnQ6OmFkZEV2ZW50TGlzdGVuZXIodGhpcyk7Ci0gICAgbV9zdGF0ZS0+
c2V0Qm9vbGVhbihUaW1lbGluZUFnZW50U3RhdGU6OnRpbWVsaW5lQWdlbnRFbmFibGVkLCB0cnVl
KTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFRpbWVsaW5lQWdlbnRTdGF0ZTo6ZW5hYmxlZCwg
dHJ1ZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RvcChFcnJvclN0cmlu
ZyopCiB7Ci0gICAgaWYgKCFtX3N0YXRlLT5nZXRCb29sZWFuKFRpbWVsaW5lQWdlbnRTdGF0ZTo6
dGltZWxpbmVBZ2VudEVuYWJsZWQpKQorICAgIGlmICghbV9zdGF0ZS0+Z2V0Qm9vbGVhbihUaW1l
bGluZUFnZW50U3RhdGU6OmVuYWJsZWQpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvclRpbWVsaW5lQWdlbnQoMCk7CkBAIC0xODQsNyAr
MTg0LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdG9wKEVycm9yU3RyaW5nKikK
ICAgICBjbGVhclJlY29yZFN0YWNrKCk7CiAgICAgbV9nY0V2ZW50cy5jbGVhcigpOwogCi0gICAg
bV9zdGF0ZS0+c2V0Qm9vbGVhbihUaW1lbGluZUFnZW50U3RhdGU6OnRpbWVsaW5lQWdlbnRFbmFi
bGVkLCBmYWxzZSk7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihUaW1lbGluZUFnZW50U3RhdGU6
OmVuYWJsZWQsIGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZXRJ
bmNsdWRlTWVtb3J5RGV0YWlscyhFcnJvclN0cmluZyosIGJvb2wgdmFsdWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
aW5kZXggZDliMzkwZmY2ZjUzZmEzNDBkZTBkMTk3ZmIwMDM2YzgyNTBiOWNhZC4uMGM5MDY5NWU4
MWM1ZmJiOThlZmYxYzA5NTZhMGViZDE1NTAwZGZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtOTMsMjUg
KzkzLDI1IEBAIHByaXZhdGU6CiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyKFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQpCiAgICAgOiBtX3dv
cmtlckNvbnRleHQod29ya2VyQ29udGV4dCkKICAgICAsIG1fc3RhdGVDbGllbnQoYWRvcHRQdHIo
bmV3IFdvcmtlclN0YXRlQ2xpZW50KHdvcmtlckNvbnRleHQpKSkKLSAgICAsIG1fc3RhdGUoYWRv
cHRQdHIobmV3IEluc3BlY3RvclN0YXRlKG1fc3RhdGVDbGllbnQuZ2V0KCkpKSkKKyAgICAsIG1f
c3RhdGUoYWRvcHRQdHIobmV3IEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlKG1fc3RhdGVDbGllbnQu
Z2V0KCkpKSkKICAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhhZG9wdFB0cihuZXcgSW5zdHJ1
bWVudGluZ0FnZW50cygpKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKEluamVjdGVk
U2NyaXB0TWFuYWdlcjo6Y3JlYXRlRm9yV29ya2VyKCkpCiAgICAgLCBtX3J1bnRpbWVBZ2VudCgw
KQogewotICAgIE93blB0cjxJbnNwZWN0b3JSdW50aW1lQWdlbnQ+IHJ1bnRpbWVBZ2VudCA9IFdv
cmtlclJ1bnRpbWVBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9z
dGF0ZS5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIHdvcmtlckNvbnRleHQp
OworICAgIE93blB0cjxJbnNwZWN0b3JSdW50aW1lQWdlbnQ+IHJ1bnRpbWVBZ2VudCA9IFdvcmtl
clJ1bnRpbWVBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0
ZS0+Y3JlYXRlQWdlbnRTdGF0ZSgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSwgd29y
a2VyQ29udGV4dCk7CiAgICAgbV9ydW50aW1lQWdlbnQgPSBydW50aW1lQWdlbnQuZ2V0KCk7CiAg
ICAgbV9hZ2VudHMuYXBwZW5kKHJ1bnRpbWVBZ2VudC5yZWxlYXNlKCkpOwogCi0gICAgT3duUHRy
PEluc3BlY3RvckNvbnNvbGVBZ2VudD4gY29uc29sZUFnZW50ID0gV29ya2VyQ29uc29sZUFnZW50
OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSk7CisgICAgT3duUHRyPEluc3BlY3RvckNvbnNvbGVB
Z2VudD4gY29uc29sZUFnZW50ID0gV29ya2VyQ29uc29sZUFnZW50OjpjcmVhdGUobV9pbnN0cnVt
ZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCksIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKTsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
LSAgICBPd25QdHI8SW5zcGVjdG9yRGVidWdnZXJBZ2VudD4gZGVidWdnZXJBZ2VudCA9IFdvcmtl
ckRlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3Rh
dGUuZ2V0KCksIHdvcmtlckNvbnRleHQsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKTsK
KyAgICBPd25QdHI8SW5zcGVjdG9yRGVidWdnZXJBZ2VudD4gZGVidWdnZXJBZ2VudCA9IFdvcmtl
ckRlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3Rh
dGUtPmNyZWF0ZUFnZW50U3RhdGUoKSwgd29ya2VyQ29udGV4dCwgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIuZ2V0KCkpOwogICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnRQ
dHIgPSBkZWJ1Z2dlckFnZW50LmdldCgpOwogICAgIG1fcnVudGltZUFnZW50LT5zZXRTY3JpcHRE
ZWJ1Z1NlcnZlcigmZGVidWdnZXJBZ2VudC0+c2NyaXB0RGVidWdTZXJ2ZXIoKSk7CiAgICAgbV9h
Z2VudHMuYXBwZW5kKGRlYnVnZ2VyQWdlbnQucmVsZWFzZSgpKTsKIAotICAgIG1fYWdlbnRzLmFw
cGVuZChJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCBjb25zb2xlQWdlbnQuZ2V0KCksIHdvcmtlckNvbnRleHQsIG1fc3RhdGUuZ2V0KCks
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKElu
c3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCks
IGNvbnNvbGVBZ2VudC5nZXQoKSwgd29ya2VyQ29udGV4dCwgbV9zdGF0ZS0+Y3JlYXRlQWdlbnRT
dGF0ZSgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSkpOwogI2VuZGlmCi0gICAgbV9h
Z2VudHMuYXBwZW5kKEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRp
bmdBZ2VudHMuZ2V0KCksIDAsIG1fc3RhdGUuZ2V0KCksIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
Oldvcmtlckluc3BlY3RvciwgMCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCAwLCBtX3N0YXRl
LT5jcmVhdGVBZ2VudFN0YXRlKCksIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Oldvcmtlckluc3Bl
Y3RvciwgMCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChjb25zb2xlQWdlbnQucmVsZWFzZSgpKTsK
IAogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEhvc3QoKS0+aW5p
dCgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIuaAppbmRleCAyMWRjNzIzZmUzYWRkMDY5MTE3MzVmZDQyODJjZDdhNjU3MjkxZmFi
Li4xODczMjhjNzIzZTdhMjNlM2VjN2FmODkyOWQ3NjRjMjc1MmE4NDIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAg
LTQ4LDcgKzQ4LDcgQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWw7CiBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247CiBjbGFzcyBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JTdGF0ZTsKK2NsYXNzIEluc3Bl
Y3RvckNvbXBvc2l0ZVN0YXRlOwogY2xhc3MgSW5zcGVjdG9yU3RhdGVDbGllbnQ7CiBjbGFzcyBJ
bnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgV29ya2VyQ29udGV4dDsKQEAgLTc0LDcgKzc0LDcg
QEAgcHJpdmF0ZToKIAogICAgIFdvcmtlckNvbnRleHQqIG1fd29ya2VyQ29udGV4dDsKICAgICBP
d25QdHI8SW5zcGVjdG9yU3RhdGVDbGllbnQ+IG1fc3RhdGVDbGllbnQ7Ci0gICAgT3duUHRyPElu
c3BlY3RvclN0YXRlPiBtX3N0YXRlOworICAgIE93blB0cjxJbnNwZWN0b3JDb21wb3NpdGVTdGF0
ZT4gbV9zdGF0ZTsKICAgICBPd25QdHI8SW5zdHJ1bWVudGluZ0FnZW50cz4gbV9pbnN0cnVtZW50
aW5nQWdlbnRzOwogICAgIE93blB0cjxJbmplY3RlZFNjcmlwdE1hbmFnZXI+IG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOwogICAgIEluc3BlY3RvclJ1bnRpbWVBZ2VudCogbV9ydW50aW1lQWdlbnQ7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180649</attachid>
            <date>2012-12-23 23:31:05 -0800</date>
            <delta_ts>2012-12-24 00:31:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105438-20121224112818.patch</filename>
            <type>text/plain</type>
            <size>57908</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGYyZjBhYTgxNjc3ZDZm
NDNmOWYyOTUwODU1MWJiNGI5YjM0YmEwNC4uODJhMjM1NzdmYzZjNzc0ZDIxNjQzZjczZDRiNTU5
MDkwYTZlYWY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEyLTIxICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogTWFrZSB1c2Ugb2YgdGhlIG5ldyBJbnNwZWN0b3JTdGF0ZTo6cmVtb3ZlKCkgaW4gaW5z
cGVjdG9yIGFnZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA1NDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBmb2xsb3dpbmcgcmVmYWN0b3JpbmdzOgor
ICAgICAgICAtIHNldHRpbmcgcHJvcGVydHkgdmFsdWVzIG9mIEluc3BlY3RvclN0YXRlIHRvICJl
bXB0eSIgb2JqZWN0cyBoYXMgYmVlbiByZXBsYWNlZCBieSByZW1vdmluZyB0aGVtIGZyb20gdGhl
IHN0YXRlOworICAgICAgICAtIEluc3BlY3RvclN0YXRlIGluc3RhbmNlIGlzIG5vIGxvbmdlciBz
aGFyZWQgYWNyb3NzIGFnZW50cywgc28gdGhhdCB0aGUgcHJvcGVydHkgbmFtZXMgY2FuIG5vIGxv
bmdlciBjbGFzaC4KKyAgICAgICAgICBJbnN0ZWFkLCBJbnNwZWN0b3JDb21wb3NpdGVTdGF0ZSBj
cmVhdGVzIGFuZCBvd25zIEluc3BlY3RvclN0YXRlIGluc3RhbmNlcyBmb3IgZXZlcnkgYWdlbnQ7
CisgICAgICAgIC0gYWdlbnQtc3BlY2lmaWMgcHJlZml4IGhhcyBiZWVuIHN0cmlwcGVkIGZyb20g
bW9zdCBwcm9wZXJ0eSBuYW1lcywgd2hlcmUgaXQgbG9va2VkIHN5bnRoZXRpYy4KKyAgICAgICAg
LSB1cGRhdGVDb29raWUoKSBpcyBjYWxsZWQgZnJvbSBJbnNwZWN0b3JTdGF0ZTo6cmVtb3ZlKCku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGVyZSBpcyBubyB2aXNpYmxlIGNoYW5nZSBp
biB0aGUgYmVoYXZpb3IuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3Bw
OiBBZ2VudC1zcGVjaWZpYyBwcm9wZXJ0eSBuYW1lIHByZWZpeCBzdHJpcHBlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDogRGl0dG8uCisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDogRGl0dG8uCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDogRGl0dG8uCisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOiBNYWtlIHVzZSBvZiBJbnNwZWN0b3JD
b21wb3NpdGVTdGF0ZSByYXRoZXIgdGhhbiBJbnNwZWN0b3JTdGF0ZS4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcDogQWdlbnQtc3BlY2lmaWMgcHJvcGVydHkgbmFt
ZSBwcmVmaXggc3RyaXBwZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
QWdlbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZGlzYWJsZSk6CisgICAgICAgIFVzZSAicmVtb3ZlIiBpbnN0ZWFkIG9mIHNldHRpbmcgYW4g
ZW1wdHkgb2JqZWN0LgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQuY3BwOiBBZ2VudC1zcGVjaWZpYyBwcm9wZXJ0eSBuYW1lIHByZWZpeCBzdHJpcHBlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOiBEaXR0by4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOiBEaXR0by4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICBVc2UgInJl
bW92ZSIgaW5zdGVhZCBvZiBzZXR0aW5nIGVtcHR5IHZhbHVlcyBmb3IgY2VydGFpbiBwcm9wZXJ0
aWVzLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjphZGRTY3JpcHRUb0V2
YWx1YXRlT25Mb2FkKToKKyAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGNvZGUgKG9iamVjdCBp
cyBjcmVhdGVkIGFuZCBwdXQgaW50byB0aGUgbWFwIGlmIG5vbmUgaXMgZm91bmQpLgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDogQWdlbnQtc3BlY2lmaWMg
cHJvcGVydHkgbmFtZSBwcmVmaXggc3RyaXBwZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgVXNlICJyZW1vdmUiIGluc3RlYWQg
b2Ygc2V0dGluZyBhbiBlbXB0eSBvYmplY3QgZm9yIHVzZXJBZ2VudE92ZXJyaWRlLgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHA6IEFkZCBJbnNwZWN0b3JDb21wb3NpdGVT
dGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0YXRlOjpzZXRGcm9tQ29va2llKTog
R2V0cyBpbnZva2VkIGZyb20gSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGU6OmxvYWRGcm9tQ29va2ll
KCkuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdGF0ZTo6dXBkYXRlQ29va2llKTogQ2Fs
bCB1cGRhdGVDb29raWUoKS4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbXBvc2l0ZVN0
YXRlOjpjcmVhdGVBZ2VudFN0YXRlKTogQ3JlYXRlcyBhbiBJbnNwZWN0b3JTdGF0ZSBpbnN0YW5j
ZSB0byBiZSBwYXNzZWQgdG8gYW4gYWdlbnQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clN0YXRlLmg6IEFkZCBJbnNwZWN0b3JDb21wb3NpdGVTdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclN0YXRlOjpzZXRMb25nKTogRml4IGNhc3QuCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOiBBZ2VudC1zcGVjaWZpYyBwcm9wZXJ0eSBuYW1l
IHByZWZpeCBzdHJpcHBlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlci5jcHA6IE1ha2UgdXNlIG9mIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlIHJhdGhlciB0
aGFuIEluc3BlY3RvclN0YXRlLgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmg6IERpdHRvLgorCiAyMDEyLTEyLTIzICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xh
emtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3BsaXQgZmFzdC1yZWplY3Rpb24gZmlsdGVy
IGxvZ2ljIG9mZiBTZWxlY3RvckNoZWNrZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50LmNwcAppbmRleCAwMWJhZWI4MDA0OTdlNWVjNDdkYmQ0M2MxYzJkMjZkNjUz
MGU1ZDEyLi5hNmY4NDQ0YzNjYjYwMzRjMDZhMjM0M2E3OWVjNzAyMjI5ODc5NzBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTYwLDcgKzYwLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNl
IEluc3BlY3RvckFnZW50U3RhdGUgewotc3RhdGljIGNvbnN0IGNoYXIgaW5zcGVjdG9yQWdlbnRF
bmFibGVkW10gPSAiaW5zcGVjdG9yQWdlbnRFbmFibGVkIjsKK3N0YXRpYyBjb25zdCBjaGFyIGVu
YWJsZWRbXSA9ICJlbmFibGVkIjsKIH0KIAogSW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50
KFBhZ2UqIHBhZ2UsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0
ZSogc3RhdGUpCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlkQ29t
bWl0TG9hZCgpCiAKIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiB7
Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihJbnNwZWN0b3JBZ2VudFN0YXRlOjppbnNwZWN0b3JB
Z2VudEVuYWJsZWQsIHRydWUpOworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oSW5zcGVjdG9yQWdl
bnRTdGF0ZTo6ZW5hYmxlZCwgdHJ1ZSk7CiAKICAgICBpZiAobV9wZW5kaW5nSW5zcGVjdERhdGEu
Zmlyc3QpCiAgICAgICAgIGluc3BlY3QobV9wZW5kaW5nSW5zcGVjdERhdGEuZmlyc3QsIG1fcGVu
ZGluZ0luc3BlY3REYXRhLnNlY29uZCk7CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBJbnNwZWN0
b3JBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKIAogdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlz
YWJsZShFcnJvclN0cmluZyopCiB7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihJbnNwZWN0b3JB
Z2VudFN0YXRlOjppbnNwZWN0b3JBZ2VudEVuYWJsZWQsIGZhbHNlKTsKKyAgICBtX3N0YXRlLT5z
ZXRCb29sZWFuKEluc3BlY3RvckFnZW50U3RhdGU6OmVuYWJsZWQsIGZhbHNlKTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JBZ2VudDo6ZG9tQ29udGVudExvYWRlZEV2ZW50RmlyZWQoKQpAQCAtMTQwLDcg
KzE0MCw3IEBAIGJvb2wgSW5zcGVjdG9yQWdlbnQ6OmlzTWFpblJlc291cmNlTG9hZGVyKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHJlCiAKIHZvaWQgSW5zcGVjdG9yQWdlbnQ6
OmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0KQogewotICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKEluc3BlY3RvckFnZW50U3RhdGU6
Omluc3BlY3RvckFnZW50RW5hYmxlZCkpCisgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oSW5z
cGVjdG9yQWdlbnRTdGF0ZTo6ZW5hYmxlZCkpCiAgICAgICAgIG1fZnJvbnRlbmQtPmluc3BlY3Rv
cigpLT5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKHN0YXRpY19jYXN0PGludD4oY2FsbElkKSwg
c2NyaXB0KTsKICAgICBlbHNlCiAgICAgICAgIG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRz
LmFwcGVuZChwYWlyPGxvbmcsIFN0cmluZz4oY2FsbElkLCBzY3JpcHQpKTsKQEAgLTE1Myw3ICsx
NTMsNyBAQCB2b2lkIEluc3BlY3RvckFnZW50OjpzZXRJbmplY3RlZFNjcmlwdEZvck9yaWdpbihj
b25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaQogCiB2b2lkIEluc3BlY3RvckFnZW50Ojpp
bnNwZWN0KFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2Jq
ZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGludHMpCiB7Ci0gICAg
aWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oSW5zcGVjdG9yQWdlbnRTdGF0ZTo6aW5zcGVjdG9yQWdl
bnRFbmFibGVkKSAmJiBtX2Zyb250ZW5kKSB7CisgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4o
SW5zcGVjdG9yQWdlbnRTdGF0ZTo6ZW5hYmxlZCkgJiYgbV9mcm9udGVuZCkgewogICAgICAgICBt
X2Zyb250ZW5kLT5pbnNwZWN0b3IoKS0+aW5zcGVjdChvYmplY3RUb0luc3BlY3QsIGhpbnRzKTsK
ICAgICAgICAgbV9wZW5kaW5nSW5zcGVjdERhdGEuZmlyc3QgPSAwOwogICAgICAgICBtX3BlbmRp
bmdJbnNwZWN0RGF0YS5zZWNvbmQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCAyZTdj
N2Q5Yjg3Y2U5OWE2ZTc5ZWMzMzM0NmQ0NjAyNTQ3MzBlNDI4Li41OTBmMTYzYWZkYTg3NjM0Mzdm
OGNmMjlkOGRjODNjZTQ2NmUxZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtNDYsNyAr
NDYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQXBwbGljYXRpb25DYWNo
ZUFnZW50U3RhdGUgewotc3RhdGljIGNvbnN0IGNoYXIgYXBwbGljYXRpb25DYWNoZUFnZW50RW5h
YmxlZFtdID0gImFwcGxpY2F0aW9uQ2FjaGVBZ2VudEVuYWJsZWQiOworc3RhdGljIGNvbnN0IGNo
YXIgZW5hYmxlZFtdID0gImVuYWJsZWQiOwogfQogCiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIEluc3BlY3RvclBh
Z2VBZ2VudCogcGFnZUFnZW50KQpAQCAtNjksNyArNjksNyBAQCB2b2lkIEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCiAKIHZvaWQgSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50OjpyZXN0b3JlKCkKIHsKLSAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVh
bihBcHBsaWNhdGlvbkNhY2hlQWdlbnRTdGF0ZTo6YXBwbGljYXRpb25DYWNoZUFnZW50RW5hYmxl
ZCkpIHsKKyAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihBcHBsaWNhdGlvbkNhY2hlQWdlbnRT
dGF0ZTo6ZW5hYmxlZCkpIHsKICAgICAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgICAgIGVu
YWJsZSgmZXJyb3IpOwogICAgIH0KQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ6OnJlc3RvcmUoKQogCiB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKIHsKLSAgICBtX3N0YXRlLT5zZXRCb29s
ZWFuKEFwcGxpY2F0aW9uQ2FjaGVBZ2VudFN0YXRlOjphcHBsaWNhdGlvbkNhY2hlQWdlbnRFbmFi
bGVkLCB0cnVlKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dFN0YXRlOjplbmFibGVkLCB0cnVlKTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCh0aGlzKTsKIAogICAgIC8vIFdlIG5lZWQgdG8g
cGFzcyBpbml0aWFsIG5hdmlnYXRvci5vbk9ubGluZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IGQ1MjVlNmRmNmE1YzgyM2I4NmNhYWVk
NzQ3OTliNzkwNTNlNTNjZWIuLjYyNjQwOTFiYTc1N2MyYzcxM2IwZGFiMTczMmUzMTAxNWEzMmY4
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNw
cApAQCAtNjMsNyArNjMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
Lmg+CiAKIG5hbWVzcGFjZSBDU1NBZ2VudFN0YXRlIHsKLXN0YXRpYyBjb25zdCBjaGFyIGNzc0Fn
ZW50RW5hYmxlZFtdID0gImNzc0FnZW50RW5hYmxlZCI7CitzdGF0aWMgY29uc3QgY2hhciBlbmFi
bGVkW10gPSAiZW5hYmxlZCI7CiBzdGF0aWMgY29uc3QgY2hhciBpc1NlbGVjdG9yUHJvZmlsaW5n
W10gPSAiaXNTZWxlY3RvclByb2ZpbGluZyI7CiB9CiAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lk
IEluc3BlY3RvckNTU0FnZW50OjpkaXNjYXJkQWdlbnQoKQogCiB2b2lkIEluc3BlY3RvckNTU0Fn
ZW50OjpyZXN0b3JlKCkKIHsKLSAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihDU1NBZ2VudFN0
YXRlOjpjc3NBZ2VudEVuYWJsZWQpKSB7CisgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oQ1NT
QWdlbnRTdGF0ZTo6ZW5hYmxlZCkpIHsKICAgICAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAg
ICAgIGVuYWJsZSgmZXJyb3IpOwogICAgIH0KQEAgLTU5MCwxNCArNTkwLDE0IEBAIHZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OnJlc2V0Tm9uUGVyc2lzdGVudERhdGEoKQogCiB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQogewotICAgIG1fc3RhdGUtPnNldEJvb2xl
YW4oQ1NTQWdlbnRTdGF0ZTo6Y3NzQWdlbnRFbmFibGVkLCB0cnVlKTsKKyAgICBtX3N0YXRlLT5z
ZXRCb29sZWFuKENTU0FnZW50U3RhdGU6OmVuYWJsZWQsIHRydWUpOwogICAgIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yQ1NTQWdlbnQodGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogewogICAgIG1faW5zdHJ1bWVudGlu
Z0FnZW50cy0+c2V0SW5zcGVjdG9yQ1NTQWdlbnQoMCk7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVh
bihDU1NBZ2VudFN0YXRlOjpjc3NBZ2VudEVuYWJsZWQsIGZhbHNlKTsKKyAgICBtX3N0YXRlLT5z
ZXRCb29sZWFuKENTU0FnZW50U3RhdGU6OmVuYWJsZWQsIGZhbHNlKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6bWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggMDRmZWIzMjQx
NjBkMmJkYmU3NDVlZGZlNDZkOGI3YWIyZDIyMTQ0Zi4uMzlkY2EyNTVkZmI1MjA4NWUxYWViZmQz
MzA0YTEzMGFlZjIzYmQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhc0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzQWdlbnQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIG5hbWVzcGFjZSBDYW52YXNBZ2VudFN0YXRlIHsKLXN0YXRpYyBjb25zdCBjaGFyIGNh
bnZhc0FnZW50RW5hYmxlZFtdID0gImNhbnZhc0FnZW50RW5hYmxlZCI7CitzdGF0aWMgY29uc3Qg
Y2hhciBlbmFibGVkW10gPSAiZW5hYmxlZCI7CiB9OwogCiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6
SW5zcGVjdG9yQ2FudmFzQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBQYWdlKiBwYWdlLCBJbmplY3RlZFNjcmlwdE1h
bmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBJbnNw
ZWN0b3JDYW52YXNBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCiAKIHZvaWQgSW5zcGVjdG9yQ2FudmFz
QWdlbnQ6OnJlc3RvcmUoKQogewotICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKENhbnZhc0Fn
ZW50U3RhdGU6OmNhbnZhc0FnZW50RW5hYmxlZCkpIHsKKyAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9v
bGVhbihDYW52YXNBZ2VudFN0YXRlOjplbmFibGVkKSkgewogICAgICAgICBFcnJvclN0cmluZyBl
cnJvcjsKICAgICAgICAgZW5hYmxlKCZlcnJvcik7CiAgICAgfQpAQCAtODQsMTQgKzg0LDE0IEBA
IHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlc3RvcmUoKQogCiB2b2lkIEluc3BlY3RvckNh
bnZhc0FnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQogewotICAgIG1fc3RhdGUtPnNldEJvb2xl
YW4oQ2FudmFzQWdlbnRTdGF0ZTo6Y2FudmFzQWdlbnRFbmFibGVkLCB0cnVlKTsKKyAgICBtX3N0
YXRlLT5zZXRCb29sZWFuKENhbnZhc0FnZW50U3RhdGU6OmVuYWJsZWQsIHRydWUpOwogICAgIG1f
aW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yQ2FudmFzQWdlbnQodGhpcyk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogewogICAg
IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yQ2FudmFzQWdlbnQoMCk7Ci0gICAg
bV9zdGF0ZS0+c2V0Qm9vbGVhbihDYW52YXNBZ2VudFN0YXRlOjpjYW52YXNBZ2VudEVuYWJsZWQs
IGZhbHNlKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKENhbnZhc0FnZW50U3RhdGU6OmVuYWJs
ZWQsIGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZHJvcFRyYWNlTG9n
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB0cmFjZUxvZ0lkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4
IDNlNGRjOTNmNGU1NGQyMDQ5OGYyYjk0MDc3N2U5YTkzY2ZjNjkwYjIuLmMzMjNmZTQ2MmRmODYw
MGU3NDYwMTk5MTIwYWMxNDRiNjRhMTgyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTgyLDgxICs4Miw4MSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBh
Z2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KQogICAgIDogbV9pbnN0
cnVtZW50aW5nQWdlbnRzKGFkb3B0UHRyKG5ldyBJbnN0cnVtZW50aW5nQWdlbnRzKCkpKQogICAg
ICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVG
b3JQYWdlKCkpCi0gICAgLCBtX3N0YXRlKGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JTdGF0ZShpbnNw
ZWN0b3JDbGllbnQpKSkKKyAgICAsIG1fc3RhdGUoYWRvcHRQdHIobmV3IEluc3BlY3RvckNvbXBv
c2l0ZVN0YXRlKGluc3BlY3RvckNsaWVudCkpKQogICAgICwgbV9vdmVybGF5KEluc3BlY3Rvck92
ZXJsYXk6OmNyZWF0ZShwYWdlLCBpbnNwZWN0b3JDbGllbnQpKQogICAgICwgbV9wYWdlKHBhZ2Up
CiAgICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNwZWN0b3JDbGllbnQpCiB7Ci0gICAgT3duUHRy
PEluc3BlY3RvckFnZW50PiBpbnNwZWN0b3JBZ2VudFB0cihJbnNwZWN0b3JBZ2VudDo6Y3JlYXRl
KHBhZ2UsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCkpKTsKKyAgICBPd25QdHI8SW5zcGVjdG9yQWdlbnQ+IGlu
c3BlY3RvckFnZW50UHRyKEluc3BlY3RvckFnZW50OjpjcmVhdGUocGFnZSwgbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXIuZ2V0KCksIG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS0+
Y3JlYXRlQWdlbnRTdGF0ZSgpKSk7CiAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFn
ZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChpbnNwZWN0b3JBZ2VudFB0ci5yZWxl
YXNlKCkpOwogCi0gICAgT3duUHRyPEluc3BlY3RvclBhZ2VBZ2VudD4gcGFnZUFnZW50UHRyKElu
c3BlY3RvclBhZ2VBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFn
ZSwgbV9pbnNwZWN0b3JBZ2VudCwgbV9zdGF0ZS5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIuZ2V0KCksIGluc3BlY3RvckNsaWVudCwgbV9vdmVybGF5LmdldCgpKSk7CisgICAgT3duUHRy
PEluc3BlY3RvclBhZ2VBZ2VudD4gcGFnZUFnZW50UHRyKEluc3BlY3RvclBhZ2VBZ2VudDo6Y3Jl
YXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZSwgbV9pbnNwZWN0b3JBZ2VudCwg
bV9zdGF0ZS0+Y3JlYXRlQWdlbnRTdGF0ZSgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQo
KSwgaW5zcGVjdG9yQ2xpZW50LCBtX292ZXJsYXkuZ2V0KCkpKTsKICAgICBJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCA9IHBhZ2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX3BhZ2VBZ2VudCA9
IHBhZ2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQocGFnZUFnZW50UHRyLnJl
bGVhc2UoKSk7CiAKLSAgICBPd25QdHI8SW5zcGVjdG9yRE9NQWdlbnQ+IGRvbUFnZW50UHRyKElu
c3BlY3RvckRPTUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdl
QWdlbnQsIG1fc3RhdGUuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX292
ZXJsYXkuZ2V0KCkpKTsKKyAgICBPd25QdHI8SW5zcGVjdG9yRE9NQWdlbnQ+IGRvbUFnZW50UHRy
KEluc3BlY3RvckRPTUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBw
YWdlQWdlbnQsIG1fc3RhdGUtPmNyZWF0ZUFnZW50U3RhdGUoKSwgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIuZ2V0KCksIG1fb3ZlcmxheS5nZXQoKSkpOwogICAgIG1fZG9tQWdlbnQgPSBkb21BZ2Vu
dFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoZG9tQWdlbnRQdHIucmVsZWFzZSgpKTsK
IAotICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JDU1NBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1
bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgbV9kb21BZ2VudCkpOworICAgIG1f
YWdlbnRzLmFwcGVuZChJbnNwZWN0b3JDU1NBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5nZXQoKSwgbV9zdGF0ZS0+Y3JlYXRlQWdlbnRTdGF0ZSgpLCBtX2RvbUFnZW50KSk7CiAK
ICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIE93blB0cjxJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50PiBkYXRhYmFzZUFnZW50UHRyKEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmNyZWF0ZShtX2lu
c3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCkpKTsKKyAgICBPd25QdHI8SW5z
cGVjdG9yRGF0YWJhc2VBZ2VudD4gZGF0YWJhc2VBZ2VudFB0cihJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLT5jcmVhdGVB
Z2VudFN0YXRlKCkpKTsKICAgICBJbnNwZWN0b3JEYXRhYmFzZUFnZW50KiBkYXRhYmFzZUFnZW50
ID0gZGF0YWJhc2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoZGF0YWJhc2VB
Z2VudFB0ci5yZWxlYXNlKCkpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKLSAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmNyZWF0ZSht
X2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmdldCgpLCBwYWdlQWdlbnQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1f
c3RhdGUtPmNyZWF0ZUFnZW50U3RhdGUoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCks
IHBhZ2VBZ2VudCkpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgbV9h
Z2VudHMuYXBwZW5kKEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5nZXQoKSwgcGFnZUFnZW50LCBtX3N0YXRlLmdldCgpKSk7CisgICAgbV9hZ2Vu
dHMuYXBwZW5kKEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5nZXQoKSwgcGFnZUFnZW50LCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCkpKTsK
ICNlbmRpZgotICAgIE93blB0cjxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+IGRvbVN0b3JhZ2VB
Z2VudFB0cihJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdB
Z2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCkpKTsKKyAgICBPd25QdHI8SW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50PiBkb21TdG9yYWdlQWdlbnRQdHIoSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojpj
cmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0
YXRlKCkpKTsKICAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQqIGRvbVN0b3JhZ2VBZ2VudCA9
IGRvbVN0b3JhZ2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoZG9tU3RvcmFn
ZUFnZW50UHRyLnJlbGVhc2UoKSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3Rvck1lbW9y
eUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBpbnNwZWN0b3JDbGll
bnQsIG1fc3RhdGUuZ2V0KCksIG1fcGFnZSkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdl
QWdlbnQsIG1fc3RhdGUuZ2V0KCksIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OlBhZ2VJbnNwZWN0
b3IsCisgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3Rvck1lbW9yeUFnZW50OjpjcmVhdGUobV9p
bnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBpbnNwZWN0b3JDbGllbnQsIG1fc3RhdGUtPmNyZWF0
ZUFnZW50U3RhdGUoKSwgbV9wYWdlKSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2VBZ2Vu
dCwgbV9zdGF0ZS0+Y3JlYXRlQWdlbnRTdGF0ZSgpLCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpQ
YWdlSW5zcGVjdG9yLAogICAgICAgIGluc3BlY3RvckNsaWVudCkpOwotICAgIG1fYWdlbnRzLmFw
cGVuZChJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRp
bmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIHBhZ2VBZ2VudCkpOworICAgIG1fYWdlbnRz
LmFwcGVuZChJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1l
bnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUtPmNyZWF0ZUFnZW50U3RhdGUoKSwgcGFnZUFnZW50
KSk7CiAKLSAgICBPd25QdHI8SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4gcmVzb3VyY2VBZ2VudFB0
cihJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdl
dCgpLCBwYWdlQWdlbnQsIGluc3BlY3RvckNsaWVudCwgbV9zdGF0ZS5nZXQoKSkpOworICAgIE93
blB0cjxJbnNwZWN0b3JSZXNvdXJjZUFnZW50PiByZXNvdXJjZUFnZW50UHRyKEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2VBZ2Vu
dCwgaW5zcGVjdG9yQ2xpZW50LCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCkpKTsKICAgICBt
X3Jlc291cmNlQWdlbnQgPSByZXNvdXJjZUFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFw
cGVuZChyZXNvdXJjZUFnZW50UHRyLnJlbGVhc2UoKSk7CiAKLSAgICBPd25QdHI8SW5zcGVjdG9y
UnVudGltZUFnZW50PiBydW50aW1lQWdlbnRQdHIoUGFnZVJ1bnRpbWVBZ2VudDo6Y3JlYXRlKG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIuZ2V0KCksIHBhZ2UsIHBhZ2VBZ2VudCkpOworICAgIE93blB0cjxJbnNwZWN0b3JS
dW50aW1lQWdlbnQ+IHJ1bnRpbWVBZ2VudFB0cihQYWdlUnVudGltZUFnZW50OjpjcmVhdGUobV9p
bnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCksIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBwYWdlLCBwYWdlQWdlbnQpKTsKICAgICBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQqIHJ1bnRpbWVBZ2VudCA9IHJ1bnRpbWVBZ2VudFB0ci5nZXQoKTsK
ICAgICBtX2FnZW50cy5hcHBlbmQocnVudGltZUFnZW50UHRyLnJlbGVhc2UoKSk7CiAKLSAgICBP
d25QdHI8SW5zcGVjdG9yQ29uc29sZUFnZW50PiBjb25zb2xlQWdlbnRQdHIoUGFnZUNvbnNvbGVB
Z2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9pbnNwZWN0b3JBZ2Vu
dCwgbV9zdGF0ZS5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIG1fZG9tQWdl
bnQpKTsKKyAgICBPd25QdHI8SW5zcGVjdG9yQ29uc29sZUFnZW50PiBjb25zb2xlQWdlbnRQdHIo
UGFnZUNvbnNvbGVBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9p
bnNwZWN0b3JBZ2VudCwgbV9zdGF0ZS0+Y3JlYXRlQWdlbnRTdGF0ZSgpLCBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci5nZXQoKSwgbV9kb21BZ2VudCkpOwogICAgIEluc3BlY3RvckNvbnNvbGVBZ2Vu
dCogY29uc29sZUFnZW50ID0gY29uc29sZUFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFw
cGVuZChjb25zb2xlQWdlbnRQdHIucmVsZWFzZSgpKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKQotICAgIE93blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PiBkZWJ1Z2dlckFn
ZW50UHRyKFBhZ2VEZWJ1Z2dlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdl
dCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlQWdlbnQsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdl
dCgpLCBtX292ZXJsYXkuZ2V0KCkpKTsKKyAgICBPd25QdHI8SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dD4gZGVidWdnZXJBZ2VudFB0cihQYWdlRGVidWdnZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS0+Y3JlYXRlQWdlbnRTdGF0ZSgpLCBwYWdlQWdlbnQs
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX292ZXJsYXkuZ2V0KCkpKTsKICAgICBt
X2RlYnVnZ2VyQWdlbnQgPSBkZWJ1Z2dlckFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFw
cGVuZChkZWJ1Z2dlckFnZW50UHRyLnJlbGVhc2UoKSk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQo
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5n
ZXQoKSwgbV9zdGF0ZS5nZXQoKSwgbV9kb21BZ2VudCwgbV9kZWJ1Z2dlckFnZW50LCBtX2luc3Bl
Y3RvckFnZW50KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUtPmNyZWF0ZUFn
ZW50U3RhdGUoKSwgbV9kb21BZ2VudCwgbV9kZWJ1Z2dlckFnZW50LCBtX2luc3BlY3RvckFnZW50
KSk7CiAKLSAgICBPd25QdHI8SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4gcHJvZmlsZXJBZ2VudFB0
cihJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdl
dCgpLCBjb25zb2xlQWdlbnQsIHBhZ2UsIG1fc3RhdGUuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmdldCgpKSk7CisgICAgT3duUHRyPEluc3BlY3RvclByb2ZpbGVyQWdlbnQ+IHByb2Zp
bGVyQWdlbnRQdHIoSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5nZXQoKSwgY29uc29sZUFnZW50LCBwYWdlLCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0
YXRlKCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKSk7CiAgICAgbV9wcm9maWxlckFn
ZW50ID0gcHJvZmlsZXJBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQocHJvZmls
ZXJBZ2VudFB0ci5yZWxlYXNlKCkpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV09SS0VSUykKLSAg
ICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1l
bnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCkpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQo
SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCks
IG1fc3RhdGUtPmNyZWF0ZUFnZW50U3RhdGUoKSkpOwogI2VuZGlmCiAKLSAgICBtX2FnZW50cy5h
cHBlbmQoSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMu
Z2V0KCksIG1fc3RhdGUuZ2V0KCksIHBhZ2UsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgp
KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckNhbnZhc0FnZW50OjpjcmVhdGUobV9p
bnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLT5jcmVhdGVBZ2VudFN0YXRlKCksIHBh
Z2UsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKSk7CiAKLSAgICBtX2FnZW50cy5hcHBl
bmQoSW5zcGVjdG9ySW5wdXRBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQo
KSwgbV9zdGF0ZS5nZXQoKSwgcGFnZSkpOworICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JJ
bnB1dEFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLT5j
cmVhdGVBZ2VudFN0YXRlKCksIHBhZ2UpKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKLSAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmNyZWF0
ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIHBhZ2UpKTsKKyAg
ICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmNyZWF0ZShtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUtPmNyZWF0ZUFnZW50U3RhdGUoKSwgcGFnZSkp
OwogI2VuZGlmCiAKICAgICBBU1NFUlRfQVJHKGluc3BlY3RvckNsaWVudCwgaW5zcGVjdG9yQ2xp
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
CmluZGV4IGU2OWZiNzVjZjYwYjUzMjYxOTk2Njk4MGJjOWIzMzYwOTFmNGQ3OTAuLjRhMmM4OGQ3
N2NkYzZlNWYwYmM4ZWRhNzY2Y2MxZmMwNTA1NzIzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNTksNyArNTksNyBAQCBjbGFzcyBJ
bnNwZWN0b3JPdmVybGF5OwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogY2xhc3MgSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudDsKIGNsYXNzIEluc3BlY3RvclJlc291cmNlQWdlbnQ7Ci1jbGFzcyBJ
bnNwZWN0b3JTdGF0ZTsKK2NsYXNzIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlOwogY2xhc3MgSW5z
dHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBQYWdlOwpAQCAtMTMwLDcg
KzEzMCw3IEBAIHByaXZhdGU6CiAKICAgICBPd25QdHI8SW5zdHJ1bWVudGluZ0FnZW50cz4gbV9p
bnN0cnVtZW50aW5nQWdlbnRzOwogICAgIE93blB0cjxJbmplY3RlZFNjcmlwdE1hbmFnZXI+IG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotICAgIE93blB0cjxJbnNwZWN0b3JTdGF0ZT4gbV9zdGF0
ZTsKKyAgICBPd25QdHI8SW5zcGVjdG9yQ29tcG9zaXRlU3RhdGU+IG1fc3RhdGU7CiAgICAgT3du
UHRyPEluc3BlY3Rvck92ZXJsYXk+IG1fb3ZlcmxheTsKIAogICAgIEluc3BlY3RvckFnZW50KiBt
X2luc3BlY3RvckFnZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCA0MTBhZGVjY2I3NmEyYzI3NTk2OTUzYzdj
NjcyYzQxNjA0MjdhYTJjLi4yM2NmNmQ0OWUyZTdiNWY2YzFjYTc3ODFmNWUxNTgyNGQ3YzFhMmQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50LmNwcApAQCAtNTMsNyArNTMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBu
YW1lc3BhY2UgRE9NU3RvcmFnZUFnZW50U3RhdGUgewotc3RhdGljIGNvbnN0IGNoYXIgZG9tU3Rv
cmFnZUFnZW50RW5hYmxlZFtdID0gImRvbVN0b3JhZ2VBZ2VudEVuYWJsZWQiOworc3RhdGljIGNv
bnN0IGNoYXIgZW5hYmxlZFtdID0gImVuYWJsZWQiOwogfTsKIAogSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlKQpAQCAtODYsNyArODYsNyBA
QCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCiAKIHZvaWQg
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpyZXN0b3JlKCkKIHsKLSAgICBtX2VuYWJsZWQgPSAg
bV9zdGF0ZS0+Z2V0Qm9vbGVhbihET01TdG9yYWdlQWdlbnRTdGF0ZTo6ZG9tU3RvcmFnZUFnZW50
RW5hYmxlZCk7CisgICAgbV9lbmFibGVkID0gIG1fc3RhdGUtPmdldEJvb2xlYW4oRE9NU3RvcmFn
ZUFnZW50U3RhdGU6OmVuYWJsZWQpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiAgICAgaWYgKG1fZW5hYmxlZCkK
ICAgICAgICAgcmV0dXJuOwogICAgIG1fZW5hYmxlZCA9IHRydWU7Ci0gICAgbV9zdGF0ZS0+c2V0
Qm9vbGVhbihET01TdG9yYWdlQWdlbnRTdGF0ZTo6ZG9tU3RvcmFnZUFnZW50RW5hYmxlZCwgbV9l
bmFibGVkKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKERPTVN0b3JhZ2VBZ2VudFN0YXRlOjpl
bmFibGVkLCBtX2VuYWJsZWQpOwogCiAgICAgRE9NU3RvcmFnZVJlc291cmNlc01hcDo6aXRlcmF0
b3IgcmVzb3VyY2VzRW5kID0gbV9yZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChET01TdG9yYWdl
UmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IHJl
c291cmNlc0VuZDsgKytpdCkKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAg
ICAgICAgIHJldHVybjsKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKLSAgICBtX3N0YXRlLT5zZXRC
b29sZWFuKERPTVN0b3JhZ2VBZ2VudFN0YXRlOjpkb21TdG9yYWdlQWdlbnRFbmFibGVkLCBtX2Vu
YWJsZWQpOworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oRE9NU3RvcmFnZUFnZW50U3RhdGU6OmVu
YWJsZWQsIG1fZW5hYmxlZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojpn
ZXRET01TdG9yYWdlRW50cmllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlk
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4g
PiYgZW50cmllcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
YXRhYmFzZUFnZW50LmNwcAppbmRleCAwYzIwYTNjN2NlN2I2ZTcxMzE0NTVhNTk2NzgyYTIzZDFi
YmFlNGUzLi4yZTdlOWQyOGZlYWQ1OGUxOWFiNjhhN2I0ZTM4OGI4YjQzODllNDVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3Bw
CkBAIC01Niw3ICs1Niw3IEBAIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OkRhdGFiYXNlQ29tbWFuZEhhbmRsZXI6OkV4ZWN1dGVTUUxDCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIG5hbWVzcGFjZSBEYXRhYmFzZUFnZW50U3RhdGUgewotc3RhdGljIGNvbnN0IGNo
YXIgZGF0YWJhc2VBZ2VudEVuYWJsZWRbXSA9ICJkYXRhYmFzZUFnZW50RW5hYmxlZCI7CitzdGF0
aWMgY29uc3QgY2hhciBlbmFibGVkW10gPSAiZW5hYmxlZCI7CiB9OwogCiBuYW1lc3BhY2UgewpA
QCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZW5hYmxlKEVy
cm9yU3RyaW5nKikKICAgICBpZiAobV9lbmFibGVkKQogICAgICAgICByZXR1cm47CiAgICAgbV9l
bmFibGVkID0gdHJ1ZTsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKERhdGFiYXNlQWdlbnRTdGF0
ZTo6ZGF0YWJhc2VBZ2VudEVuYWJsZWQsIG1fZW5hYmxlZCk7CisgICAgbV9zdGF0ZS0+c2V0Qm9v
bGVhbihEYXRhYmFzZUFnZW50U3RhdGU6OmVuYWJsZWQsIG1fZW5hYmxlZCk7CiAKICAgICBEYXRh
YmFzZVJlc291cmNlc01hcDo6aXRlcmF0b3IgZGF0YWJhc2VzRW5kID0gbV9yZXNvdXJjZXMuZW5k
KCk7CiAgICAgZm9yIChEYXRhYmFzZVJlc291cmNlc01hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291
cmNlcy5iZWdpbigpOyBpdCAhPSBkYXRhYmFzZXNFbmQ7ICsraXQpCkBAIC0yNTMsMTIgKzI1Mywx
MiBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQog
ICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CiAgICAgbV9lbmFibGVkID0gZmFs
c2U7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihEYXRhYmFzZUFnZW50U3RhdGU6OmRhdGFiYXNl
QWdlbnRFbmFibGVkLCBtX2VuYWJsZWQpOworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oRGF0YWJh
c2VBZ2VudFN0YXRlOjplbmFibGVkLCBtX2VuYWJsZWQpOwogfQogCiB2b2lkIEluc3BlY3RvckRh
dGFiYXNlQWdlbnQ6OnJlc3RvcmUoKQogewotICAgIG1fZW5hYmxlZCA9IG1fc3RhdGUtPmdldEJv
b2xlYW4oRGF0YWJhc2VBZ2VudFN0YXRlOjpkYXRhYmFzZUFnZW50RW5hYmxlZCk7CisgICAgbV9l
bmFibGVkID0gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihEYXRhYmFzZUFnZW50U3RhdGU6OmVuYWJsZWQp
OwogfQogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmdldERhdGFiYXNlVGFibGVOYW1l
cyhFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4mIG5hbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDljZjhkMDFjYmM2
ZjJiZjU4YjFmODA5ZWZhNWFmMGMwODE5YTJhMGQuLmE2MWIyMTRhYzA1NDIyMTQ3ODU4NWIwYjQy
OGJmY2ZjZGFkMjA2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjplbmFibGUoKQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRp
c2FibGUoKQogewotICAgIG1fc3RhdGUtPnNldE9iamVjdChEZWJ1Z2dlckFnZW50U3RhdGU6Omph
dmFTY3JpcHRCcmVha3BvaW50cywgSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgbV9z
dGF0ZS0+cmVtb3ZlKERlYnVnZ2VyQWdlbnRTdGF0ZTo6amF2YVNjcmlwdEJyZWFrcG9pbnRzKTsK
ICAgICBtX3N0YXRlLT5zZXRMb25nKERlYnVnZ2VyQWdlbnRTdGF0ZTo6cGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZSwgU2NyaXB0RGVidWdTZXJ2ZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CiAgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KDApOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQuY3BwCmluZGV4IGMyNzIyZmUzYTRkN2UzYjExOWI4NWRjZDJmMjAxYzg0MTA1ODgxY2EuLmY1
MzQ2Nzg0Mjg1MWYwZGE0NDRmMTUyODg0Yjk3OTBhYzIwYTA2OTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCkBAIC03
Nyw3ICs3Nyw3IEBAIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OkZpbGVTeXN0ZW1Db21tYW5kSGFuZGxlcjo6RGVsZXRlRW50CiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIG5hbWVzcGFjZSBGaWxlU3lzdGVtQWdlbnRTdGF0ZSB7Ci1zdGF0aWMgY29uc3QgY2hhciBm
aWxlU3lzdGVtQWdlbnRFbmFibGVkW10gPSAiZmlsZVN5c3RlbUFnZW50RW5hYmxlZCI7CitzdGF0
aWMgY29uc3QgY2hhciBlbmFibGVkW10gPSAiZW5hYmxlZCI7CiB9CiAKIG5hbWVzcGFjZSB7CkBA
IC02MjAsNyArNjIwLDcgQEAgdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmVuYWJsZShF
cnJvclN0cmluZyopCiAgICAgaWYgKG1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogICAgIG1f
ZW5hYmxlZCA9IHRydWU7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihGaWxlU3lzdGVtQWdlbnRT
dGF0ZTo6ZmlsZVN5c3RlbUFnZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKKyAgICBtX3N0YXRlLT5z
ZXRCb29sZWFuKEZpbGVTeXN0ZW1BZ2VudFN0YXRlOjplbmFibGVkLCBtX2VuYWJsZWQpOwogfQog
CiB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCkBA
IC02MjgsNyArNjI4LDcgQEAgdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmRpc2FibGUo
RXJyb3JTdHJpbmcqKQogICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CiAgICAg
bV9lbmFibGVkID0gZmFsc2U7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihGaWxlU3lzdGVtQWdl
bnRTdGF0ZTo6ZmlsZVN5c3RlbUFnZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKKyAgICBtX3N0YXRl
LT5zZXRCb29sZWFuKEZpbGVTeXN0ZW1BZ2VudFN0YXRlOjplbmFibGVkLCBtX2VuYWJsZWQpOwog
fQogCiB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdEZpbGVTeXN0ZW1Sb290
KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYg
dHlwZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RmlsZVN5c3RlbVJvb3RDYWxsYmFjaz4gcmVxdWVzdENh
bGxiYWNrKQpAQCAtNjk4LDEyICs2OTgsMTIgQEAgdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQ6OmRlbGV0ZUVudHJ5KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiB1cmwKIHZv
aWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpjbGVhckZyb250ZW5kKCkKIHsKICAgICBtX2Vu
YWJsZWQgPSBmYWxzZTsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEZpbGVTeXN0ZW1BZ2VudFN0
YXRlOjpmaWxlU3lzdGVtQWdlbnRFbmFibGVkLCBtX2VuYWJsZWQpOworICAgIG1fc3RhdGUtPnNl
dEJvb2xlYW4oRmlsZVN5c3RlbUFnZW50U3RhdGU6OmVuYWJsZWQsIG1fZW5hYmxlZCk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXN0b3JlKCkKIHsKLSAgICBtX2VuYWJs
ZWQgPSBtX3N0YXRlLT5nZXRCb29sZWFuKEZpbGVTeXN0ZW1BZ2VudFN0YXRlOjpmaWxlU3lzdGVt
QWdlbnRFbmFibGVkKTsKKyAgICBtX2VuYWJsZWQgPSBtX3N0YXRlLT5nZXRCb29sZWFuKEZpbGVT
eXN0ZW1BZ2VudFN0YXRlOjplbmFibGVkKTsKIH0KIAogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
OjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3RvclN0YXRl
KiBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwCmluZGV4IDRhMjgzZmEwOTU5ZWFmMGIxNDEwNDM2ZDYzYmRlNzlmODk3
YjhmM2IuLjVhMTdkZjUzZDFlM2VlMmNkOTllOGI4ZTJjZTJlNWM0YTE3Yzg1YmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cApAQCAtODUsNyArODUsNyBAQCB0eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2UgUmVxdWVzdENhbGxiYWNrOwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBuYW1lc3BhY2UgSW5kZXhlZERCQWdlbnRTdGF0ZSB7Ci1zdGF0aWMgY29uc3QgY2hhciBp
bmRleGVkREJBZ2VudEVuYWJsZWRbXSA9ICJpbmRleGVkREJBZ2VudEVuYWJsZWQiOworc3RhdGlj
IGNvbnN0IGNoYXIgZW5hYmxlZFtdID0gImVuYWJsZWQiOwogfTsKIAogbmFtZXNwYWNlIHsKQEAg
LTU3NCw3ICs1NzQsNyBAQCB2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpjbGVhckZyb250
ZW5kKCkKIAogdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVzdG9yZSgpCiB7Ci0gICAg
aWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oSW5kZXhlZERCQWdlbnRTdGF0ZTo6aW5kZXhlZERCQWdl
bnRFbmFibGVkKSkgeworICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKEluZGV4ZWREQkFnZW50
U3RhdGU6OmVuYWJsZWQpKSB7CiAgICAgICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgICAgICBl
bmFibGUoJmVycm9yKTsKICAgICB9CkBAIC01ODIsMTIgKzU4MiwxMiBAQCB2b2lkIEluc3BlY3Rv
ckluZGV4ZWREQkFnZW50OjpyZXN0b3JlKCkKIAogdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKIHsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEluZGV4
ZWREQkFnZW50U3RhdGU6OmluZGV4ZWREQkFnZW50RW5hYmxlZCwgdHJ1ZSk7CisgICAgbV9zdGF0
ZS0+c2V0Qm9vbGVhbihJbmRleGVkREJBZ2VudFN0YXRlOjplbmFibGVkLCB0cnVlKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiB7Ci0g
ICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihJbmRleGVkREJBZ2VudFN0YXRlOjppbmRleGVkREJBZ2Vu
dEVuYWJsZWQsIGZhbHNlKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEluZGV4ZWREQkFnZW50
U3RhdGU6OmVuYWJsZWQsIGZhbHNlKTsKIH0KIAogc3RhdGljIEZyYW1lKiBhc3NlcnRGcmFtZShF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgSW5zcGVjdG9y
UGFnZUFnZW50KiBwYWdlQWdlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAppbmRleCA2ODBlZTJmNzFkZjJkOWY3OGM2YTE0
OTdmMTQ0NGEyZWY0NmQwMmE2Li5mYWNjYTYzZjU1OGVjZjNkMDI2MmMzOWI5M2U3YWE0MWY1ZmFk
NjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXll
clRyZWVBZ2VudC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
bmFtZXNwYWNlIExheWVyVHJlZUFnZW50U3RhdGUgewotc3RhdGljIGNvbnN0IGNoYXIgbGF5ZXJU
cmVlQWdlbnRFbmFibGVkW10gPSAibGF5ZXJUcmVlQWdlbnRFbmFibGVkIjsKK3N0YXRpYyBjb25z
dCBjaGFyIGVuYWJsZWRbXSA9ICJlbmFibGVkIjsKIH07CiAKIEluc3BlY3RvckxheWVyVHJlZUFn
ZW50OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIFBhZ2UqIHBhZ2UpCkBAIC03OCw3
ICs3OCw3IEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQog
CiB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZXN0b3JlKCkKIHsKLSAgICBpZiAobV9z
dGF0ZS0+Z2V0Qm9vbGVhbihMYXllclRyZWVBZ2VudFN0YXRlOjpsYXllclRyZWVBZ2VudEVuYWJs
ZWQpKQorICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKExheWVyVHJlZUFnZW50U3RhdGU6OmVu
YWJsZWQpKQogICAgICAgICBlbmFibGUoMCk7CiB9CiAKQEAgLTkwLDE1ICs5MCwxNSBAQCB2b2lk
IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZXNldCgpCiAKIHZvaWQgSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiB7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVh
bihMYXllclRyZWVBZ2VudFN0YXRlOjpsYXllclRyZWVBZ2VudEVuYWJsZWQsIHRydWUpOworICAg
IG1fc3RhdGUtPnNldEJvb2xlYW4oTGF5ZXJUcmVlQWdlbnRTdGF0ZTo6ZW5hYmxlZCwgdHJ1ZSk7
CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JMYXllclRyZWVBZ2VudCh0
aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlzYWJsZShFcnJvclN0
cmluZyopCiB7Ci0gICAgaWYgKCFtX3N0YXRlLT5nZXRCb29sZWFuKExheWVyVHJlZUFnZW50U3Rh
dGU6OmxheWVyVHJlZUFnZW50RW5hYmxlZCkpCisgICAgaWYgKCFtX3N0YXRlLT5nZXRCb29sZWFu
KExheWVyVHJlZUFnZW50U3RhdGU6OmVuYWJsZWQpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9z
dGF0ZS0+c2V0Qm9vbGVhbihMYXllclRyZWVBZ2VudFN0YXRlOjpsYXllclRyZWVBZ2VudEVuYWJs
ZWQsIGZhbHNlKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKExheWVyVHJlZUFnZW50U3RhdGU6
OmVuYWJsZWQsIGZhbHNlKTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50KDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGY3NTJhNTY2Mzk1NjRiZWZjNjlkZjFhODFjOTQ4
ZDgwNmRhYjQ5NWQuLjY0NzUyNjcxYjVjMjYwMWExMmNlMDdkYjQyYWYxMjUzOThlNWNiMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBA
IC04NSwxOSArODUsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogbmFtZXNwYWNlIFBhZ2VBZ2VudFN0YXRlIHsKLXN0YXRpYyBjb25zdCBjaGFyIHBhZ2VB
Z2VudEVuYWJsZWRbXSA9ICJwYWdlQWdlbnRFbmFibGVkIjsKLXN0YXRpYyBjb25zdCBjaGFyIHBh
Z2VBZ2VudFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkW10gPSAicGFnZUFnZW50U2NyaXB0RXhlY3V0
aW9uRGlzYWJsZWQiOwotc3RhdGljIGNvbnN0IGNoYXIgcGFnZUFnZW50U2NyaXB0c1RvRXZhbHVh
dGVPbkxvYWRbXSA9ICJwYWdlQWdlbnRTY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZCI7Ci1zdGF0aWMg
Y29uc3QgY2hhciBwYWdlQWdlbnRTY3JlZW5XaWR0aE92ZXJyaWRlW10gPSAicGFnZUFnZW50U2Ny
ZWVuV2lkdGhPdmVycmlkZSI7Ci1zdGF0aWMgY29uc3QgY2hhciBwYWdlQWdlbnRTY3JlZW5IZWln
aHRPdmVycmlkZVtdID0gInBhZ2VBZ2VudFNjcmVlbkhlaWdodE92ZXJyaWRlIjsKLXN0YXRpYyBj
b25zdCBjaGFyIHBhZ2VBZ2VudEZvbnRTY2FsZUZhY3Rvck92ZXJyaWRlW10gPSAicGFnZUFnZW50
Rm9udFNjYWxlRmFjdG9yT3ZlcnJpZGUiOwotc3RhdGljIGNvbnN0IGNoYXIgcGFnZUFnZW50Rml0
V2luZG93W10gPSAicGFnZUFnZW50Rml0V2luZG93IjsKLXN0YXRpYyBjb25zdCBjaGFyIHBhZ2VB
Z2VudFNob3dGUFNDb3VudGVyW10gPSAicGFnZUFnZW50U2hvd0ZQU0NvdW50ZXIiOwotc3RhdGlj
IGNvbnN0IGNoYXIgcGFnZUFnZW50U2hvd1BhaW50UmVjdHNbXSA9ICJwYWdlQWdlbnRTaG93UGFp
bnRSZWN0cyI7CitzdGF0aWMgY29uc3QgY2hhciBlbmFibGVkW10gPSAiZW5hYmxlZCI7CitzdGF0
aWMgY29uc3QgY2hhciBzY3JpcHRFeGVjdXRpb25EaXNhYmxlZFtdID0gInNjcmlwdEV4ZWN1dGlv
bkRpc2FibGVkIjsKK3N0YXRpYyBjb25zdCBjaGFyIHNjcmlwdHNUb0V2YWx1YXRlT25Mb2FkW10g
PSAic2NyaXB0c1RvRXZhbHVhdGVPbkxvYWQiOworc3RhdGljIGNvbnN0IGNoYXIgc2NyZWVuV2lk
dGhPdmVycmlkZVtdID0gInNjcmVlbldpZHRoT3ZlcnJpZGUiOworc3RhdGljIGNvbnN0IGNoYXIg
c2NyZWVuSGVpZ2h0T3ZlcnJpZGVbXSA9ICJzY3JlZW5IZWlnaHRPdmVycmlkZSI7CitzdGF0aWMg
Y29uc3QgY2hhciBmb250U2NhbGVGYWN0b3JPdmVycmlkZVtdID0gImZvbnRTY2FsZUZhY3Rvck92
ZXJyaWRlIjsKK3N0YXRpYyBjb25zdCBjaGFyIGZpdFdpbmRvd1tdID0gImZpdFdpbmRvdyI7Citz
dGF0aWMgY29uc3QgY2hhciBzaG93RlBTQ291bnRlcltdID0gInNob3dGUFNDb3VudGVyIjsKK3N0
YXRpYyBjb25zdCBjaGFyIHNob3dQYWludFJlY3RzW10gPSAic2hvd1BhaW50UmVjdHMiOwogI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCiBzdGF0aWMgY29uc3QgY2hhciB0b3VjaEV2ZW50RW11bGF0
aW9uRW5hYmxlZFtdID0gInRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkIjsKICNlbmRpZgotc3Rh
dGljIGNvbnN0IGNoYXIgcGFnZUFnZW50RW11bGF0ZWRNZWRpYVtdID0gInBhZ2VBZ2VudEVtdWxh
dGVkTWVkaWEiOworc3RhdGljIGNvbnN0IGNoYXIgZW11bGF0ZWRNZWRpYVtdID0gImVtdWxhdGVk
TWVkaWEiOwogfQogCiBzdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgY2hhciogYnVmZmVy
LCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIFN0cmluZyog
cmVzdWx0KQpAQCAtMzU1LDIyICszNTUsMjIgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNs
ZWFyRnJvbnRlbmQoKQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzdG9yZSgpCiB7Ci0g
ICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudEVuYWJs
ZWQpKSB7CisgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6OmVuYWJs
ZWQpKSB7CiAgICAgICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgICAgICBlbmFibGUoJmVycm9y
KTsKLSAgICAgICAgYm9vbCBzY3JpcHRFeGVjdXRpb25EaXNhYmxlZCA9IG1fc3RhdGUtPmdldEJv
b2xlYW4oUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKTsK
KyAgICAgICAgYm9vbCBzY3JpcHRFeGVjdXRpb25EaXNhYmxlZCA9IG1fc3RhdGUtPmdldEJvb2xl
YW4oUGFnZUFnZW50U3RhdGU6OnNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKTsKICAgICAgICAgc2V0
U2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQoMCwgc2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQpOwotICAg
ICAgICBib29sIHNob3dQYWludFJlY3RzID0gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihQYWdlQWdlbnRT
dGF0ZTo6cGFnZUFnZW50U2hvd1BhaW50UmVjdHMpOworICAgICAgICBib29sIHNob3dQYWludFJl
Y3RzID0gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6c2hvd1BhaW50UmVjdHMp
OwogICAgICAgICBzZXRTaG93UGFpbnRSZWN0cygwLCBzaG93UGFpbnRSZWN0cyk7Ci0gICAgICAg
IGJvb2wgc2hvd0ZQU0NvdW50ZXIgPSBtX3N0YXRlLT5nZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRl
OjpwYWdlQWdlbnRTaG93RlBTQ291bnRlcik7CisgICAgICAgIGJvb2wgc2hvd0ZQU0NvdW50ZXIg
PSBtX3N0YXRlLT5nZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpzaG93RlBTQ291bnRlcik7CiAg
ICAgICAgIHNldFNob3dGUFNDb3VudGVyKDAsIHNob3dGUFNDb3VudGVyKTsKLSAgICAgICAgU3Ry
aW5nIGVtdWxhdGVkTWVkaWEgPSBtX3N0YXRlLT5nZXRTdHJpbmcoUGFnZUFnZW50U3RhdGU6OnBh
Z2VBZ2VudEVtdWxhdGVkTWVkaWEpOworICAgICAgICBTdHJpbmcgZW11bGF0ZWRNZWRpYSA9IG1f
c3RhdGUtPmdldFN0cmluZyhQYWdlQWdlbnRTdGF0ZTo6ZW11bGF0ZWRNZWRpYSk7CiAgICAgICAg
IHNldEVtdWxhdGVkTWVkaWEoMCwgZW11bGF0ZWRNZWRpYSk7CiAKLSAgICAgICAgaW50IGN1cnJl
bnRXaWR0aCA9IHN0YXRpY19jYXN0PGludD4obV9zdGF0ZS0+Z2V0TG9uZyhQYWdlQWdlbnRTdGF0
ZTo6cGFnZUFnZW50U2NyZWVuV2lkdGhPdmVycmlkZSkpOwotICAgICAgICBpbnQgY3VycmVudEhl
aWdodCA9IHN0YXRpY19jYXN0PGludD4obV9zdGF0ZS0+Z2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6
cGFnZUFnZW50U2NyZWVuSGVpZ2h0T3ZlcnJpZGUpKTsKLSAgICAgICAgZG91YmxlIGN1cnJlbnRG
b250U2NhbGVGYWN0b3IgPSBtX3N0YXRlLT5nZXREb3VibGUoUGFnZUFnZW50U3RhdGU6OnBhZ2VB
Z2VudEZvbnRTY2FsZUZhY3Rvck92ZXJyaWRlKTsKLSAgICAgICAgYm9vbCBjdXJyZW50Rml0V2lu
ZG93ID0gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50Rml0V2lu
ZG93KTsKKyAgICAgICAgaW50IGN1cnJlbnRXaWR0aCA9IHN0YXRpY19jYXN0PGludD4obV9zdGF0
ZS0+Z2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6c2NyZWVuV2lkdGhPdmVycmlkZSkpOworICAgICAg
ICBpbnQgY3VycmVudEhlaWdodCA9IHN0YXRpY19jYXN0PGludD4obV9zdGF0ZS0+Z2V0TG9uZyhQ
YWdlQWdlbnRTdGF0ZTo6c2NyZWVuSGVpZ2h0T3ZlcnJpZGUpKTsKKyAgICAgICAgZG91YmxlIGN1
cnJlbnRGb250U2NhbGVGYWN0b3IgPSBtX3N0YXRlLT5nZXREb3VibGUoUGFnZUFnZW50U3RhdGU6
OmZvbnRTY2FsZUZhY3Rvck92ZXJyaWRlKTsKKyAgICAgICAgYm9vbCBjdXJyZW50Rml0V2luZG93
ID0gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6Zml0V2luZG93KTsKICAgICAg
ICAgdXBkYXRlVmlld01ldHJpY3MoY3VycmVudFdpZHRoLCBjdXJyZW50SGVpZ2h0LCBjdXJyZW50
Rm9udFNjYWxlRmFjdG9yLCBjdXJyZW50Rml0V2luZG93KTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQogICAgICAgICB1cGRhdGVUb3VjaEV2ZW50RW11bGF0aW9uSW5QYWdlKG1fc3RhdGUtPmdl
dEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6OnRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKSk7CkBA
IC0zODAsMjEgKzM4MCwyMSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzdG9yZSgpCiAK
IHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojp3ZWJWaWV3UmVzaXplZChjb25zdCBJbnRTaXplJiBz
aXplKQogewotICAgIGludCBjdXJyZW50V2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KG1fc3RhdGUt
PmdldExvbmcoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmVlbldpZHRoT3ZlcnJpZGUpKTsK
KyAgICBpbnQgY3VycmVudFdpZHRoID0gc3RhdGljX2Nhc3Q8aW50PihtX3N0YXRlLT5nZXRMb25n
KFBhZ2VBZ2VudFN0YXRlOjpzY3JlZW5XaWR0aE92ZXJyaWRlKSk7CiAgICAgbV9vdmVybGF5LT5y
ZXNpemUoY3VycmVudFdpZHRoID8gc2l6ZSA6IEludFNpemUoKSk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yUGFnZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQogewogICAgIG1fZW5hYmxlZCA9IHRy
dWU7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50RW5h
YmxlZCwgdHJ1ZSk7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6ZW5h
YmxlZCwgdHJ1ZSk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JQYWdl
QWdlbnQodGhpcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaXNhYmxlKEVycm9y
U3RyaW5nKikKIHsKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKLSAgICBtX3N0YXRlLT5zZXRCb29s
ZWFuKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRFbmFibGVkLCBmYWxzZSk7CisgICAgbV9zdGF0
ZS0+c2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6ZW5hYmxlZCwgZmFsc2UpOwogICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yUGFnZUFnZW50KDApOwogCiAgICAgc2V0U2Ny
aXB0RXhlY3V0aW9uRGlzYWJsZWQoMCwgZmFsc2UpOwpAQCAtNDAzLDIyICs0MDMsMTkgQEAgdm9p
ZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogICAgIHNldEVtdWxh
dGVkTWVkaWEoMCwgIiIpOwogCiAgICAgLy8gV2hlbiBkaXNhYmxpbmcgdGhlIGFnZW50LCByZXNl
dCB0aGUgb3ZlcnJpZGUgdmFsdWVzLgotICAgIG1fc3RhdGUtPnNldExvbmcoUGFnZUFnZW50U3Rh
dGU6OnBhZ2VBZ2VudFNjcmVlbldpZHRoT3ZlcnJpZGUsIDApOwotICAgIG1fc3RhdGUtPnNldExv
bmcoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmVlbkhlaWdodE92ZXJyaWRlLCAwKTsKLSAg
ICBtX3N0YXRlLT5zZXREb3VibGUoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudEZvbnRTY2FsZUZh
Y3Rvck92ZXJyaWRlLCAxKTsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRl
OjpwYWdlQWdlbnRGaXRXaW5kb3csIGZhbHNlKTsKLSAgICBtX3N0YXRlLT5yZW1vdmUoUGFnZUFn
ZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmlwdHNUb0V2YWx1YXRlT25Mb2FkKTsKKyAgICBtX3N0YXRl
LT5yZW1vdmUoUGFnZUFnZW50U3RhdGU6OnNjcmVlbldpZHRoT3ZlcnJpZGUpOworICAgIG1fc3Rh
dGUtPnJlbW92ZShQYWdlQWdlbnRTdGF0ZTo6c2NyZWVuSGVpZ2h0T3ZlcnJpZGUpOworICAgIG1f
c3RhdGUtPnJlbW92ZShQYWdlQWdlbnRTdGF0ZTo6Zm9udFNjYWxlRmFjdG9yT3ZlcnJpZGUpOwor
ICAgIG1fc3RhdGUtPnJlbW92ZShQYWdlQWdlbnRTdGF0ZTo6Zml0V2luZG93KTsKKyAgICBtX3N0
YXRlLT5yZW1vdmUoUGFnZUFnZW50U3RhdGU6OnNjcmlwdHNUb0V2YWx1YXRlT25Mb2FkKTsKICAg
ICB1cGRhdGVWaWV3TWV0cmljcygwLCAwLCAxLCBmYWxzZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjphZGRTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIFN0cmluZyogaWRlbnRpZmllcikKIHsKLSAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBzY3JpcHRzID0gbV9zdGF0ZS0+Z2V0T2JqZWN0KFBhZ2VBZ2VudFN0YXRlOjpw
YWdlQWdlbnRTY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZCk7Ci0gICAgaWYgKCFzY3JpcHRzKSB7Ci0g
ICAgICAgIHNjcmlwdHMgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICBtX3N0
YXRlLT5zZXRPYmplY3QoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmlwdHNUb0V2YWx1YXRl
T25Mb2FkLCBzY3JpcHRzKTsKLSAgICB9Ci0gICAgLy8gQXNzdXJlIHdlIGRvbid0IG92ZXJyaWRl
IGV4aXN0aW5nIGlkcyAtLSBtX2xhc3RTY3JpcHRJZGVudGlmaWVyIGNvdWxkIGdldCBvdXQgb2Yg
c3luYyBXUlQgYWN0dWFsCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc2NyaXB0cyA9IG1f
c3RhdGUtPmdldE9iamVjdChQYWdlQWdlbnRTdGF0ZTo6c2NyaXB0c1RvRXZhbHVhdGVPbkxvYWQp
OworCisgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IG92ZXJyaWRlIGV4aXN0aW5nIGlkcyAtLSBt
X2xhc3RTY3JpcHRJZGVudGlmaWVyIGNvdWxkIGdldCBvdXQgb2Ygc3luYyBXUlQgYWN0dWFsCiAg
ICAgLy8gc2NyaXB0cyBvbmNlIHdlIHJlc3RvcmVkIHRoZSBzY3JpcHRzIGZyb20gdGhlIGNvb2tp
ZSBkdXJpbmcgbmF2aWdhdGlvbi4KICAgICBkbyB7CiAgICAgICAgICppZGVudGlmaWVyID0gU3Ry
aW5nOjpudW1iZXIoKyttX2xhc3RTY3JpcHRJZGVudGlmaWVyKTsKQEAgLTQyOCw3ICs0MjUsNyBA
QCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6YWRkU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgcwogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVt
b3ZlU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllcikKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzY3JpcHRzID0g
bV9zdGF0ZS0+Z2V0T2JqZWN0KFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTY3JpcHRzVG9FdmFs
dWF0ZU9uTG9hZCk7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc2NyaXB0cyA9IG1fc3Rh
dGUtPmdldE9iamVjdChQYWdlQWdlbnRTdGF0ZTo6c2NyaXB0c1RvRXZhbHVhdGVPbkxvYWQpOwog
ICAgIGlmICghc2NyaXB0cyB8fCBzY3JpcHRzLT5maW5kKGlkZW50aWZpZXIpID09IHNjcmlwdHMt
PmVuZCgpKSB7CiAgICAgICAgICplcnJvciA9ICJTY3JpcHQgbm90IGZvdW5kIjsKICAgICAgICAg
cmV0dXJuOwpAQCAtNzE2LDI1ICs3MTMsMjUgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNl
dERldmljZU1ldHJpY3NPdmVycmlkZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludAogICAg
IH0KIAogICAgIC8vIFRoZXNlIHR3byBhbHdheXMgZml0IGFuIGludC4KLSAgICBpbnQgY3VycmVu
dFdpZHRoID0gc3RhdGljX2Nhc3Q8aW50PihtX3N0YXRlLT5nZXRMb25nKFBhZ2VBZ2VudFN0YXRl
OjpwYWdlQWdlbnRTY3JlZW5XaWR0aE92ZXJyaWRlKSk7Ci0gICAgaW50IGN1cnJlbnRIZWlnaHQg
PSBzdGF0aWNfY2FzdDxpbnQ+KG1fc3RhdGUtPmdldExvbmcoUGFnZUFnZW50U3RhdGU6OnBhZ2VB
Z2VudFNjcmVlbkhlaWdodE92ZXJyaWRlKSk7Ci0gICAgZG91YmxlIGN1cnJlbnRGb250U2NhbGVG
YWN0b3IgPSBtX3N0YXRlLT5nZXREb3VibGUoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudEZvbnRT
Y2FsZUZhY3Rvck92ZXJyaWRlKTsKLSAgICBib29sIGN1cnJlbnRGaXRXaW5kb3cgPSBtX3N0YXRl
LT5nZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRGaXRXaW5kb3cpOworICAgIGlu
dCBjdXJyZW50V2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KG1fc3RhdGUtPmdldExvbmcoUGFnZUFn
ZW50U3RhdGU6OnNjcmVlbldpZHRoT3ZlcnJpZGUpKTsKKyAgICBpbnQgY3VycmVudEhlaWdodCA9
IHN0YXRpY19jYXN0PGludD4obV9zdGF0ZS0+Z2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6c2NyZWVu
SGVpZ2h0T3ZlcnJpZGUpKTsKKyAgICBkb3VibGUgY3VycmVudEZvbnRTY2FsZUZhY3RvciA9IG1f
c3RhdGUtPmdldERvdWJsZShQYWdlQWdlbnRTdGF0ZTo6Zm9udFNjYWxlRmFjdG9yT3ZlcnJpZGUp
OworICAgIGJvb2wgY3VycmVudEZpdFdpbmRvdyA9IG1fc3RhdGUtPmdldEJvb2xlYW4oUGFnZUFn
ZW50U3RhdGU6OmZpdFdpbmRvdyk7CiAKICAgICBpZiAod2lkdGggPT0gY3VycmVudFdpZHRoICYm
IGhlaWdodCA9PSBjdXJyZW50SGVpZ2h0ICYmIGZvbnRTY2FsZUZhY3RvciA9PSBjdXJyZW50Rm9u
dFNjYWxlRmFjdG9yICYmIGZpdFdpbmRvdyA9PSBjdXJyZW50Rml0V2luZG93KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3N0YXRlLT5zZXRMb25nKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRT
Y3JlZW5XaWR0aE92ZXJyaWRlLCB3aWR0aCk7Ci0gICAgbV9zdGF0ZS0+c2V0TG9uZyhQYWdlQWdl
bnRTdGF0ZTo6cGFnZUFnZW50U2NyZWVuSGVpZ2h0T3ZlcnJpZGUsIGhlaWdodCk7Ci0gICAgbV9z
dGF0ZS0+c2V0RG91YmxlKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRGb250U2NhbGVGYWN0b3JP
dmVycmlkZSwgZm9udFNjYWxlRmFjdG9yKTsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VB
Z2VudFN0YXRlOjpwYWdlQWdlbnRGaXRXaW5kb3csIGZpdFdpbmRvdyk7CisgICAgbV9zdGF0ZS0+
c2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6c2NyZWVuV2lkdGhPdmVycmlkZSwgd2lkdGgpOworICAg
IG1fc3RhdGUtPnNldExvbmcoUGFnZUFnZW50U3RhdGU6OnNjcmVlbkhlaWdodE92ZXJyaWRlLCBo
ZWlnaHQpOworICAgIG1fc3RhdGUtPnNldERvdWJsZShQYWdlQWdlbnRTdGF0ZTo6Zm9udFNjYWxl
RmFjdG9yT3ZlcnJpZGUsIGZvbnRTY2FsZUZhY3Rvcik7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVh
bihQYWdlQWdlbnRTdGF0ZTo6Zml0V2luZG93LCBmaXRXaW5kb3cpOwogCiAgICAgdXBkYXRlVmll
d01ldHJpY3Mod2lkdGgsIGhlaWdodCwgZm9udFNjYWxlRmFjdG9yLCBmaXRXaW5kb3cpOwogfQog
CiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hvd1BhaW50UmVjdHMoRXJyb3JTdHJpbmcq
LCBib29sIHNob3cpCiB7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6
cGFnZUFnZW50U2hvd1BhaW50UmVjdHMsIHNob3cpOworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4o
UGFnZUFnZW50U3RhdGU6OnNob3dQYWludFJlY3RzLCBzaG93KTsKICAgICBtX2NsaWVudC0+c2V0
U2hvd1BhaW50UmVjdHMoc2hvdyk7CiAKICAgICBpZiAoIXNob3cgJiYgbWFpbkZyYW1lKCkgJiYg
bWFpbkZyYW1lKCktPnZpZXcoKSkKQEAgLTc0OCw3ICs3NDUsNyBAQCB2b2lkIEluc3BlY3RvclBh
Z2VBZ2VudDo6Y2FuU2hvd0ZQU0NvdW50ZXIoRXJyb3JTdHJpbmcqLCBib29sKiBvdXRQYXJhbSkK
IAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFNob3dGUFNDb3VudGVyKEVycm9yU3RyaW5n
KiwgYm9vbCBzaG93KQogewotICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6
OnBhZ2VBZ2VudFNob3dGUFNDb3VudGVyLCBzaG93KTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFu
KFBhZ2VBZ2VudFN0YXRlOjpzaG93RlBTQ291bnRlciwgc2hvdyk7CiAgICAgbV9jbGllbnQtPnNl
dFNob3dGUFNDb3VudGVyKHNob3cpOwogCiAgICAgaWYgKG1haW5GcmFtZSgpICYmIG1haW5GcmFt
ZSgpLT52aWV3KCkpCkBAIC03NzksNyArNzc2LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmdldFNjcmlwdEV4ZWN1dGlvblN0YXR1cyhFcnJvclN0cmluZyosIFBhZ2VDb21tYW5kSGFuZGwK
IAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKEVy
cm9yU3RyaW5nKiwgYm9vbCB2YWx1ZSkKIHsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VB
Z2VudFN0YXRlOjpwYWdlQWdlbnRTY3JpcHRFeGVjdXRpb25EaXNhYmxlZCwgdmFsdWUpOworICAg
IG1fc3RhdGUtPnNldEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6OnNjcmlwdEV4ZWN1dGlvbkRpc2Fi
bGVkLCB2YWx1ZSk7CiAgICAgaWYgKCFtYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC03OTksNyArNzk2LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93
T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3IKICAgICBpZiAoIW1fZnJv
bnRlbmQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHNj
cmlwdHMgPSBtX3N0YXRlLT5nZXRPYmplY3QoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmlw
dHNUb0V2YWx1YXRlT25Mb2FkKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzY3JpcHRz
ID0gbV9zdGF0ZS0+Z2V0T2JqZWN0KFBhZ2VBZ2VudFN0YXRlOjpzY3JpcHRzVG9FdmFsdWF0ZU9u
TG9hZCk7CiAgICAgaWYgKHNjcmlwdHMpIHsKICAgICAgICAgSW5zcGVjdG9yT2JqZWN0Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBzY3JpcHRzLT5lbmQoKTsKICAgICAgICAgZm9yIChJbnNwZWN0b3JP
YmplY3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2NyaXB0cy0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CkBAIC05MDgsMjEgKzkwNSwyMSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6bG9h
ZGVyRGV0YWNoZWRGcm9tRnJhbWUoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogdm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmFwcGx5U2NyZWVuV2lkdGhPdmVycmlkZShsb25nKiB3aWR0aCkKIHsK
LSAgICBsb25nIHdpZHRoT3ZlcnJpZGUgPSBtX3N0YXRlLT5nZXRMb25nKFBhZ2VBZ2VudFN0YXRl
OjpwYWdlQWdlbnRTY3JlZW5XaWR0aE92ZXJyaWRlKTsKKyAgICBsb25nIHdpZHRoT3ZlcnJpZGUg
PSBtX3N0YXRlLT5nZXRMb25nKFBhZ2VBZ2VudFN0YXRlOjpzY3JlZW5XaWR0aE92ZXJyaWRlKTsK
ICAgICBpZiAod2lkdGhPdmVycmlkZSkKICAgICAgICAgKndpZHRoID0gd2lkdGhPdmVycmlkZTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFwcGx5U2NyZWVuSGVpZ2h0T3ZlcnJpZGUo
bG9uZyogaGVpZ2h0KQogewotICAgIGxvbmcgaGVpZ2h0T3ZlcnJpZGUgPSBtX3N0YXRlLT5nZXRM
b25nKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTY3JlZW5IZWlnaHRPdmVycmlkZSk7CisgICAg
bG9uZyBoZWlnaHRPdmVycmlkZSA9IG1fc3RhdGUtPmdldExvbmcoUGFnZUFnZW50U3RhdGU6OnNj
cmVlbkhlaWdodE92ZXJyaWRlKTsKICAgICBpZiAoaGVpZ2h0T3ZlcnJpZGUpCiAgICAgICAgICpo
ZWlnaHQgPSBoZWlnaHRPdmVycmlkZTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRp
ZFBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkK
IHsKLSAgICBpZiAoIW1fZW5hYmxlZCB8fCBtX2NsaWVudC0+b3ZlcnJpZGVzU2hvd1BhaW50UmVj
dHMoKSB8fCAhbV9zdGF0ZS0+Z2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2hv
d1BhaW50UmVjdHMpKQorICAgIGlmICghbV9lbmFibGVkIHx8IG1fY2xpZW50LT5vdmVycmlkZXNT
aG93UGFpbnRSZWN0cygpIHx8ICFtX3N0YXRlLT5nZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpz
aG93UGFpbnRSZWN0cykpCiAgICAgICAgIHJldHVybjsKIAogICAgIHN0YXRpYyBpbnQgY29sb3JT
ZWxlY3RvciA9IDA7CkBAIC05NDcsOCArOTQ0LDggQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmRpZExheW91dCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChpc0ZpcnN0TGF5b3V0KSB7
Ci0gICAgICAgIGludCBjdXJyZW50V2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KG1fc3RhdGUtPmdl
dExvbmcoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmVlbldpZHRoT3ZlcnJpZGUpKTsKLSAg
ICAgICAgaW50IGN1cnJlbnRIZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KG1fc3RhdGUtPmdldExv
bmcoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmVlbkhlaWdodE92ZXJyaWRlKSk7CisgICAg
ICAgIGludCBjdXJyZW50V2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KG1fc3RhdGUtPmdldExvbmco
UGFnZUFnZW50U3RhdGU6OnNjcmVlbldpZHRoT3ZlcnJpZGUpKTsKKyAgICAgICAgaW50IGN1cnJl
bnRIZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KG1fc3RhdGUtPmdldExvbmcoUGFnZUFnZW50U3Rh
dGU6OnNjcmVlbkhlaWdodE92ZXJyaWRlKSk7CiAKICAgICAgICAgaWYgKGN1cnJlbnRXaWR0aCAm
JiBjdXJyZW50SGVpZ2h0KQogICAgICAgICAgICAgbV9jbGllbnQtPmF1dG9ab29tUGFnZVRvRml0
V2lkdGgoKTsKQEAgLTExNTcsMTEgKzExNTQsMTEgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OnNldFRvdWNoRW11bGF0aW9uRW5hYmxlZChFcnJvclN0cmluZyogZXJyb3IsIGJvb2wgZW5hYmwK
IAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldEVtdWxhdGVkTWVkaWEoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIG1lZGlhKQogewotICAgIFN0cmluZyBjdXJyZW50TWVkaWEgPSBtX3N0
YXRlLT5nZXRTdHJpbmcoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudEVtdWxhdGVkTWVkaWEpOwor
ICAgIFN0cmluZyBjdXJyZW50TWVkaWEgPSBtX3N0YXRlLT5nZXRTdHJpbmcoUGFnZUFnZW50U3Rh
dGU6OmVtdWxhdGVkTWVkaWEpOwogICAgIGlmIChtZWRpYSA9PSBjdXJyZW50TWVkaWEpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fc3RhdGUtPnNldFN0cmluZyhQYWdlQWdlbnRTdGF0ZTo6cGFn
ZUFnZW50RW11bGF0ZWRNZWRpYSwgbWVkaWEpOworICAgIG1fc3RhdGUtPnNldFN0cmluZyhQYWdl
QWdlbnRTdGF0ZTo6ZW11bGF0ZWRNZWRpYSwgbWVkaWEpOwogICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IDA7CiAgICAgaWYgKG1fcGFnZS0+bWFpbkZyYW1lKCkpCiAgICAgICAgIGRvY3VtZW50ID0g
bV9wYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKTsKQEAgLTExNzMsNyArMTE3MCw3IEBAIHZv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRFbXVsYXRlZE1lZGlhKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBtZWRpYSkKIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFwcGx5RW11bGF0
ZWRNZWRpYShTdHJpbmcqIG1lZGlhKQogewotICAgIFN0cmluZyBlbXVsYXRlZE1lZGlhID0gbV9z
dGF0ZS0+Z2V0U3RyaW5nKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRFbXVsYXRlZE1lZGlhKTsK
KyAgICBTdHJpbmcgZW11bGF0ZWRNZWRpYSA9IG1fc3RhdGUtPmdldFN0cmluZyhQYWdlQWdlbnRT
dGF0ZTo6ZW11bGF0ZWRNZWRpYSk7CiAgICAgaWYgKCFlbXVsYXRlZE1lZGlhLmlzRW1wdHkoKSkK
ICAgICAgICAgKm1lZGlhID0gZW11bGF0ZWRNZWRpYTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCBhM2FlYzlhYTVm
MWZlMmJhZjU4OTM4NjcwODYwZWQ0NDljYmU0ZjMwLi4xODEyMjIyZjU2MzViNDMyMTUwNzJmN2Mx
NWUzMzhhMGM1YzliMTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC03OCw3ICs3OCw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIG5hbWVzcGFjZSBSZXNvdXJjZUFnZW50U3RhdGUgewotc3RhdGljIGNvbnN0IGNo
YXIgcmVzb3VyY2VBZ2VudEVuYWJsZWRbXSA9ICJyZXNvdXJjZUFnZW50RW5hYmxlZCI7CitzdGF0
aWMgY29uc3QgY2hhciBlbmFibGVkW10gPSAiZW5hYmxlZCI7CiBzdGF0aWMgY29uc3QgY2hhciBl
eHRyYVJlcXVlc3RIZWFkZXJzW10gPSAiZXh0cmFSZXF1ZXN0SGVhZGVycyI7CiBzdGF0aWMgY29u
c3QgY2hhciBjYWNoZURpc2FibGVkW10gPSAiY2FjaGVEaXNhYmxlZCI7CiBzdGF0aWMgY29uc3Qg
Y2hhciB1c2VyQWdlbnRPdmVycmlkZVtdID0gInVzZXJBZ2VudE92ZXJyaWRlIjsKQEAgLTk4LDcg
Kzk4LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpjbGVhckZyb250ZW5kKCkKIAog
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXN0b3JlKCkKIHsKLSAgICBpZiAobV9zdGF0
ZS0+Z2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OnJlc291cmNlQWdlbnRFbmFibGVkKSkK
KyAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3RhdGU6OmVuYWJsZWQp
KQogICAgICAgICBlbmFibGUoKTsKIH0KIApAQCAtMjAwLDcgKzIwMCw3IEBAIHN0YXRpYyBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpDYWNoZWRSZXNvdXJjZT4gYnVpbGRPYmplY3RG
b3JDYWNoZWRSZXNvCiAKIEluc3BlY3RvclJlc291cmNlQWdlbnQ6On5JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50KCkKIHsKLSAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihSZXNvdXJjZUFnZW50U3Rh
dGU6OnJlc291cmNlQWdlbnRFbmFibGVkKSkgeworICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFu
KFJlc291cmNlQWdlbnRTdGF0ZTo6ZW5hYmxlZCkpIHsKICAgICAgICAgRXJyb3JTdHJpbmcgZXJy
b3I7CiAgICAgICAgIGRpc2FibGUoJmVycm9yKTsKICAgICB9CkBAIC01NjEsMTQgKzU2MSwxNCBA
QCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmVuYWJsZSgpCiB7CiAgICAgaWYgKCFtX2Zy
b250ZW5kKQogICAgICAgICByZXR1cm47Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihSZXNvdXJj
ZUFnZW50U3RhdGU6OnJlc291cmNlQWdlbnRFbmFibGVkLCB0cnVlKTsKKyAgICBtX3N0YXRlLT5z
ZXRCb29sZWFuKFJlc291cmNlQWdlbnRTdGF0ZTo6ZW5hYmxlZCwgdHJ1ZSk7CiAgICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JSZXNvdXJjZUFnZW50KHRoaXMpOwogfQogCiB2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogewotICAg
IG1fc3RhdGUtPnNldEJvb2xlYW4oUmVzb3VyY2VBZ2VudFN0YXRlOjpyZXNvdXJjZUFnZW50RW5h
YmxlZCwgZmFsc2UpOwotICAgIG1fc3RhdGUtPnNldFN0cmluZyhSZXNvdXJjZUFnZW50U3RhdGU6
OnVzZXJBZ2VudE92ZXJyaWRlLCAiIik7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihSZXNvdXJj
ZUFnZW50U3RhdGU6OmVuYWJsZWQsIGZhbHNlKTsKKyAgICBtX3N0YXRlLT5yZW1vdmUoUmVzb3Vy
Y2VBZ2VudFN0YXRlOjp1c2VyQWdlbnRPdmVycmlkZSk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLT5zZXRJbnNwZWN0b3JSZXNvdXJjZUFnZW50KDApOwogICAgIG1fcmVzb3VyY2VzRGF0YS0+
Y2xlYXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3Bw
CmluZGV4IDY3NWQ0OTlkMWY1ZDI2ZWQxZDI3NDc2NDcxNWZhZTNjMjY2ZmI1NjMuLmI5OGRlNTdi
ZGY0MDk4ZDU1MjZkNDMzYzAzNmI5M2MzNjg2NTU1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0YXRlLmNwcApAQCAtMzYsMzcgKzM2LDIxIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotSW5zcGVjdG9yU3RhdGU6Okluc3BlY3RvclN0YXRlKEluc3BlY3RvclN0
YXRlQ2xpZW50KiBjbGllbnQpCi0gICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3Byb3Bl
cnRpZXMoSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSkKLSAgICAsIG1faXNPbk11dGUoZmFsc2Up
CitJbnNwZWN0b3JTdGF0ZTo6SW5zcGVjdG9yU3RhdGUoSW5zcGVjdG9yU3RhdGVVcGRhdGVMaXN0
ZW5lciogbGlzdGVuZXIsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwcm9wZXJ0aWVzKQor
ICAgIDogbV9saXN0ZW5lcihsaXN0ZW5lcikKKyAgICAsIG1fcHJvcGVydGllcyhwcm9wZXJ0aWVz
KQogewogfQogCi12b2lkIEluc3BlY3RvclN0YXRlOjpsb2FkRnJvbUNvb2tpZShjb25zdCBTdHJp
bmcmIGluc3BlY3RvclN0YXRlQ29va2llKQotewotICAgIG1fcHJvcGVydGllcy5jbGVhcigpOwot
ICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gY29va2llID0gSW5zcGVjdG9yVmFsdWU6OnBhcnNl
SlNPTihpbnNwZWN0b3JTdGF0ZUNvb2tpZSk7Ci0gICAgaWYgKGNvb2tpZSkKLSAgICAgICAgbV9w
cm9wZXJ0aWVzID0gY29va2llLT5hc09iamVjdCgpOwotICAgIGlmICghbV9wcm9wZXJ0aWVzKQot
ICAgICAgICBtX3Byb3BlcnRpZXMgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotfQotCi12
b2lkIEluc3BlY3RvclN0YXRlOjptdXRlKCkKK3ZvaWQgSW5zcGVjdG9yU3RhdGU6OnVwZGF0ZUNv
b2tpZSgpCiB7Ci0gICAgbV9pc09uTXV0ZSA9IHRydWU7CisgICAgaWYgKG1fbGlzdGVuZXIpCisg
ICAgICAgIG1fbGlzdGVuZXItPmluc3BlY3RvclN0YXRlVXBkYXRlZCgpOwogfQogCi12b2lkIElu
c3BlY3RvclN0YXRlOjp1bm11dGUoKQordm9pZCBJbnNwZWN0b3JTdGF0ZTo6c2V0RnJvbUNvb2tp
ZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcHJvcGVydGllcykKIHsKLSAgICBtX2lzT25N
dXRlID0gZmFsc2U7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yU3RhdGU6OnVwZGF0ZUNvb2tpZSgpCi17
Ci0gICAgaWYgKG1fY2xpZW50ICYmICFtX2lzT25NdXRlICYmIG1fY2xpZW50LT5zdXBwb3J0c0lu
c3BlY3RvclN0YXRlVXBkYXRlcygpKQotICAgICAgICBtX2NsaWVudC0+dXBkYXRlSW5zcGVjdG9y
U3RhdGVDb29raWUobV9wcm9wZXJ0aWVzLT50b0pTT05TdHJpbmcoKSk7CisgICAgbV9wcm9wZXJ0
aWVzID0gcHJvcGVydGllczsKIH0KIAogdm9pZCBJbnNwZWN0b3JTdGF0ZTo6c2V0VmFsdWUoY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVl
KQpAQCAtNzgsNiArNjIsNyBAQCB2b2lkIEluc3BlY3RvclN0YXRlOjpzZXRWYWx1ZShjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYQogdm9pZCBJbnNwZWN0
b3JTdGF0ZTo6cmVtb3ZlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogewogICAgIG1fcHJv
cGVydGllcy0+cmVtb3ZlKHByb3BlcnR5TmFtZSk7CisgICAgdXBkYXRlQ29va2llKCk7CiB9CiAK
IGJvb2wgSW5zcGVjdG9yU3RhdGU6OmdldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5h
bWUpCkBAIC0xMjYsNiArMTExLDUxIEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNw
ZWN0b3JTdGF0ZTo6Z2V0T2JqZWN0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lCiAgICAgcmV0
dXJuIGl0LT52YWx1ZS0+YXNPYmplY3QoKTsKIH0KIAorSW5zcGVjdG9yU3RhdGUqIEluc3BlY3Rv
ckNvbXBvc2l0ZVN0YXRlOjpjcmVhdGVBZ2VudFN0YXRlKCkKK3sKKyAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBzdGF0ZVByb3BlcnRpZXMgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwor
ICAgIG1fc3RhdGVBcnJheS0+cHVzaE9iamVjdChzdGF0ZVByb3BlcnRpZXMpOworICAgIG1fc3Rh
dGVzLmFwcGVuZChhZG9wdFB0cihuZXcgSW5zcGVjdG9yU3RhdGUodGhpcywgc3RhdGVQcm9wZXJ0
aWVzKSkpOworICAgIHJldHVybiBtX3N0YXRlcy5sYXN0KCkuZ2V0KCk7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yQ29tcG9zaXRlU3RhdGU6OmxvYWRGcm9tQ29va2llKGNvbnN0IFN0cmluZyYgaW5zcGVj
dG9yQ29tcG9zaXRlU3RhdGVDb29raWUpCit7CisgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBj
b29raWUgPSBJbnNwZWN0b3JWYWx1ZTo6cGFyc2VKU09OKGluc3BlY3RvckNvbXBvc2l0ZVN0YXRl
Q29va2llKTsKKyAgICBpZiAoY29va2llKQorICAgICAgICBtX3N0YXRlQXJyYXkgPSBjb29raWUt
PmFzQXJyYXkoKTsKKyAgICBpZiAoIW1fc3RhdGVBcnJheSkgeworICAgICAgICBtX3N0YXRlQXJy
YXkgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
LCBzaXplID0gbV9zdGF0ZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzdGF0ZU9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCk7CisgICAgICAgICAgICBtX3N0YXRlQXJyYXktPnB1c2hPYmplY3Qoc3RhdGVPYmplY3Qp
OworICAgICAgICB9CisgICAgfQorCisgICAgQVNTRVJUKG1fc3RhdGVBcnJheSk7CisgICAgQVNT
RVJUKG1fc3RhdGVBcnJheS0+bGVuZ3RoKCkgPT0gbV9zdGF0ZXMuc2l6ZSgpKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMCwgc2l6ZSA9IG1fc3RhdGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkgewor
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHN0YXRlT2JqZWN0ID0gbV9zdGF0ZUFycmF5
LT5nZXQoaSk7CisgICAgICAgIG1fc3RhdGVzLmF0KGkpLT5zZXRGcm9tQ29va2llKHN0YXRlT2Jq
ZWN0LT5hc09iamVjdCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29tcG9zaXRlU3Rh
dGU6Om11dGUoKQoreworICAgIG1faXNNdXRlZCA9IHRydWU7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
Q29tcG9zaXRlU3RhdGU6OnVubXV0ZSgpCit7CisgICAgbV9pc011dGVkID0gZmFsc2U7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGU6Omluc3BlY3RvclN0YXRlVXBkYXRlZCgpCit7
CisgICAgaWYgKG1fY2xpZW50ICYmICFtX2lzTXV0ZWQgJiYgbV9jbGllbnQtPnN1cHBvcnRzSW5z
cGVjdG9yU3RhdGVVcGRhdGVzKCkpCisgICAgICAgIG1fY2xpZW50LT51cGRhdGVJbnNwZWN0b3JT
dGF0ZUNvb2tpZShtX3N0YXRlQXJyYXktPnRvSlNPTlN0cmluZygpKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmgKaW5kZXggM2RjMDkwYWJkOTUzN2NmYWI2NTA3
ZTUyZTgyZmZlMjdhZWY0MWM3OS4uN2ZlM2JlMTJkMzQ4ODE3ZTYzNTVlZmFhZTkwODFlNTBlMDVi
ZGFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmgKQEAgLTM2
LDIzICszNiwyNSBAQAogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgSW5zcGVjdG9yU3RhdGVDbGllbnQ7CiAKK2NsYXNzIEluc3BlY3Rv
clN0YXRlVXBkYXRlTGlzdGVuZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkluc3BlY3RvclN0
YXRlVXBkYXRlTGlzdGVuZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yU3RhdGVV
cGRhdGVkKCkgPSAwOworfTsKKwogY2xhc3MgSW5zcGVjdG9yU3RhdGUgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEluc3BlY3RvclN0YXRlKEluc3BlY3RvclN0
YXRlQ2xpZW50Kik7CisgICAgSW5zcGVjdG9yU3RhdGUoSW5zcGVjdG9yU3RhdGVVcGRhdGVMaXN0
ZW5lciosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pik7CiAgICAgdmlydHVhbCB+SW5zcGVj
dG9yU3RhdGUoKSB7fQogCi0gICAgdm9pZCBsb2FkRnJvbUNvb2tpZShjb25zdCBTdHJpbmcmIGlu
c3BlY3RvclN0YXRlQ29va2llKTsKLQotICAgIHZvaWQgbXV0ZSgpOwotICAgIHZvaWQgdW5tdXRl
KCk7Ci0KICAgICBib29sIGdldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwog
ICAgIFN0cmluZyBnZXRTdHJpbmcoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwogICAgIGxv
bmcgZ2V0TG9uZyhjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSk7CkBAIC02MSwxOCArNjMsNTAg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRCb29sZWFuKGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lLCBib29sIHZhbHVlKSB7IHNldFZhbHVlKHByb3BlcnR5TmFtZSwgSW5zcGVjdG9yQmFzaWNW
YWx1ZTo6Y3JlYXRlKHZhbHVlKSk7IH0KICAgICB2b2lkIHNldFN0cmluZyhjb25zdCBTdHJpbmcm
IHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgeyBzZXRWYWx1ZShwcm9wZXJ0eU5h
bWUsIEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKHZhbHVlKSk7IH0KLSAgICB2b2lkIHNldExvbmco
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGxvbmcgdmFsdWUpIHsgc2V0VmFsdWUocHJvcGVy
dHlOYW1lLCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUoKGRvdWJsZSl2YWx1ZSkpOyB9Cisg
ICAgdm9pZCBzZXRMb25nKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBsb25nIHZhbHVlKSB7
IHNldFZhbHVlKHByb3BlcnR5TmFtZSwgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGRvdWJsZT4odmFsdWUpKSk7IH0KICAgICB2b2lkIHNldERvdWJsZShjb25zdCBTdHJp
bmcmIHByb3BlcnR5TmFtZSwgZG91YmxlIHZhbHVlKSB7IHNldFZhbHVlKHByb3BlcnR5TmFtZSwg
SW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7IH0KICAgICB2b2lkIHNldE9iamVj
dChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IHZhbHVlKSB7IHNldFZhbHVlKHByb3BlcnR5TmFtZSwgdmFsdWUpOyB9CiAKICAgICB2b2lkIHJl
bW92ZShjb25zdCBTdHJpbmcmKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUNvb2tpZSgp
OwogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+KTsKIAotICAgIEluc3BlY3RvclN0YXRlQ2xpZW50KiBtX2NsaWVu
dDsKKyAgICAvLyBUaGlzIGdldHMgY2FsbGVkIGZyb20gSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGU6
OmxvYWRGcm9tQ29va2llKCkuCisgICAgdm9pZCBzZXRGcm9tQ29va2llKFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0Pik7CisKKyAgICBmcmllbmQgY2xhc3MgSW5zcGVjdG9yQ29tcG9zaXRlU3Rh
dGU7CisKKyAgICBJbnNwZWN0b3JTdGF0ZVVwZGF0ZUxpc3RlbmVyKiBtX2xpc3RlbmVyOwogICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcHJvcGVydGllczsKLSAgICBib29sIG1faXNPbk11
dGU7Cit9OworCitjbGFzcyBJbnNwZWN0b3JDb21wb3NpdGVTdGF0ZSA6IHB1YmxpYyBJbnNwZWN0
b3JTdGF0ZVVwZGF0ZUxpc3RlbmVyIHsKK3B1YmxpYzoKKyAgICBJbnNwZWN0b3JDb21wb3NpdGVT
dGF0ZShJbnNwZWN0b3JTdGF0ZUNsaWVudCogaW5zcGVjdG9yQ2xpZW50KQorICAgICAgICA6IG1f
Y2xpZW50KGluc3BlY3RvckNsaWVudCkKKyAgICAgICAgLCBtX3N0YXRlQXJyYXkoSW5zcGVjdG9y
QXJyYXk6OmNyZWF0ZSgpKQorICAgICAgICAsIG1faXNNdXRlZChmYWxzZSkKKyAgICB7CisgICAg
fQorICAgIHZpcnR1YWwgfkluc3BlY3RvckNvbXBvc2l0ZVN0YXRlKCkgeyB9CisKKyAgICB2b2lk
IG11dGUoKTsKKyAgICB2b2lkIHVubXV0ZSgpOworCisgICAgSW5zcGVjdG9yU3RhdGUqIGNyZWF0
ZUFnZW50U3RhdGUoKTsKKyAgICB2b2lkIGxvYWRGcm9tQ29va2llKGNvbnN0IFN0cmluZyYpOwor
Citwcml2YXRlOgorICAgIHR5cGVkZWYgVmVjdG9yPE93blB0cjxJbnNwZWN0b3JTdGF0ZT4gPiBJ
bnNwZWN0b3JTdGF0ZVZlY3RvcjsKKworICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JTdGF0ZVVw
ZGF0ZWQoKTsKKworICAgIEluc3BlY3RvclN0YXRlQ2xpZW50KiBtX2NsaWVudDsKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+IG1fc3RhdGVBcnJheTsKKyAgICBib29sIG1faXNNdXRlZDsKKyAg
ICBJbnNwZWN0b3JTdGF0ZVZlY3RvciBtX3N0YXRlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmNwcAppbmRleCBmOWY5ZDE3NWNmY2JkNmI4MjBmNDVlNjU1MjQxYzNjMTExMmY1Y2Rk
Li5lNjA1NDkzODJmZmNiZDhlYzNjYWE4MjYzNWQ1YjkwNTk0MTk4NzBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC01
Nyw3ICs1Nyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBUaW1lbGluZUFn
ZW50U3RhdGUgewotc3RhdGljIGNvbnN0IGNoYXIgdGltZWxpbmVBZ2VudEVuYWJsZWRbXSA9ICJ0
aW1lbGluZUFnZW50RW5hYmxlZCI7CitzdGF0aWMgY29uc3QgY2hhciBlbmFibGVkW10gPSAiZW5h
YmxlZCI7CiBzdGF0aWMgY29uc3QgY2hhciB0aW1lbGluZU1heENhbGxTdGFja0RlcHRoW10gPSAi
dGltZWxpbmVNYXhDYWxsU3RhY2tEZXB0aCI7CiBzdGF0aWMgY29uc3QgY2hhciBpbmNsdWRlTWVt
b3J5RGV0YWlsc1tdID0gImluY2x1ZGVNZW1vcnlEZXRhaWxzIjsKIH0KQEAgLTE0OSw3ICsxNDks
NyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQogCiB2b2lk
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnJlc3RvcmUoKQogewotICAgIGlmIChtX3N0YXRlLT5n
ZXRCb29sZWFuKFRpbWVsaW5lQWdlbnRTdGF0ZTo6dGltZWxpbmVBZ2VudEVuYWJsZWQpKSB7Cisg
ICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oVGltZWxpbmVBZ2VudFN0YXRlOjplbmFibGVkKSkg
ewogICAgICAgICBtX21heENhbGxTdGFja0RlcHRoID0gbV9zdGF0ZS0+Z2V0TG9uZyhUaW1lbGlu
ZUFnZW50U3RhdGU6OnRpbWVsaW5lTWF4Q2FsbFN0YWNrRGVwdGgpOwogICAgICAgICBFcnJvclN0
cmluZyBlcnJvcjsKICAgICAgICAgc3RhcnQoJmVycm9yLCAmbV9tYXhDYWxsU3RhY2tEZXB0aCk7
CkBAIC0xNzAsMTIgKzE3MCwxMiBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0
KEVycm9yU3RyaW5nKiwgY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCkKIAogICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yVGltZWxpbmVBZ2VudCh0aGlzKTsKICAgICBT
Y3JpcHRHQ0V2ZW50OjphZGRFdmVudExpc3RlbmVyKHRoaXMpOwotICAgIG1fc3RhdGUtPnNldEJv
b2xlYW4oVGltZWxpbmVBZ2VudFN0YXRlOjp0aW1lbGluZUFnZW50RW5hYmxlZCwgdHJ1ZSk7Cisg
ICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihUaW1lbGluZUFnZW50U3RhdGU6OmVuYWJsZWQsIHRydWUp
OwogfQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0b3AoRXJyb3JTdHJpbmcqKQog
ewotICAgIGlmICghbV9zdGF0ZS0+Z2V0Qm9vbGVhbihUaW1lbGluZUFnZW50U3RhdGU6OnRpbWVs
aW5lQWdlbnRFbmFibGVkKSkKKyAgICBpZiAoIW1fc3RhdGUtPmdldEJvb2xlYW4oVGltZWxpbmVB
Z2VudFN0YXRlOjplbmFibGVkKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pbnN0cnVtZW50
aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JUaW1lbGluZUFnZW50KDApOwpAQCAtMTg0LDcgKzE4NCw3
IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RvcChFcnJvclN0cmluZyopCiAgICAg
Y2xlYXJSZWNvcmRTdGFjaygpOwogICAgIG1fZ2NFdmVudHMuY2xlYXIoKTsKIAotICAgIG1fc3Rh
dGUtPnNldEJvb2xlYW4oVGltZWxpbmVBZ2VudFN0YXRlOjp0aW1lbGluZUFnZW50RW5hYmxlZCwg
ZmFsc2UpOworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oVGltZWxpbmVBZ2VudFN0YXRlOjplbmFi
bGVkLCBmYWxzZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0SW5jbHVk
ZU1lbW9yeURldGFpbHMoRXJyb3JTdHJpbmcqLCBib29sIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4
IGQ5YjM5MGZmNmY1M2ZhMzQwZGUwZDE5N2ZiMDAzNmM4MjUwYjljYWQuLjBjOTA2OTVlODFjNWZi
Yjk4ZWZmMWMwOTU2YTBlYmQxNTUwMGRmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTkzLDI1ICs5Mywy
NSBAQCBwcml2YXRlOgogV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcihXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0KQogICAgIDogbV93b3JrZXJD
b250ZXh0KHdvcmtlckNvbnRleHQpCiAgICAgLCBtX3N0YXRlQ2xpZW50KGFkb3B0UHRyKG5ldyBX
b3JrZXJTdGF0ZUNsaWVudCh3b3JrZXJDb250ZXh0KSkpCi0gICAgLCBtX3N0YXRlKGFkb3B0UHRy
KG5ldyBJbnNwZWN0b3JTdGF0ZShtX3N0YXRlQ2xpZW50LmdldCgpKSkpCisgICAgLCBtX3N0YXRl
KGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JDb21wb3NpdGVTdGF0ZShtX3N0YXRlQ2xpZW50LmdldCgp
KSkpCiAgICAgLCBtX2luc3RydW1lbnRpbmdBZ2VudHMoYWRvcHRQdHIobmV3IEluc3RydW1lbnRp
bmdBZ2VudHMoKSkpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihJbmplY3RlZFNjcmlw
dE1hbmFnZXI6OmNyZWF0ZUZvcldvcmtlcigpKQogICAgICwgbV9ydW50aW1lQWdlbnQoMCkKIHsK
LSAgICBPd25QdHI8SW5zcGVjdG9yUnVudGltZUFnZW50PiBydW50aW1lQWdlbnQgPSBXb3JrZXJS
dW50aW1lQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUu
Z2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCB3b3JrZXJDb250ZXh0KTsKKyAg
ICBPd25QdHI8SW5zcGVjdG9yUnVudGltZUFnZW50PiBydW50aW1lQWdlbnQgPSBXb3JrZXJSdW50
aW1lQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUtPmNy
ZWF0ZUFnZW50U3RhdGUoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIHdvcmtlckNv
bnRleHQpOwogICAgIG1fcnVudGltZUFnZW50ID0gcnVudGltZUFnZW50LmdldCgpOwogICAgIG1f
YWdlbnRzLmFwcGVuZChydW50aW1lQWdlbnQucmVsZWFzZSgpKTsKIAotICAgIE93blB0cjxJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ+IGNvbnNvbGVBZ2VudCA9IFdvcmtlckNvbnNvbGVBZ2VudDo6Y3Jl
YXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuZ2V0KCkpOworICAgIE93blB0cjxJbnNwZWN0b3JDb25zb2xlQWdlbnQ+
IGNvbnNvbGVBZ2VudCA9IFdvcmtlckNvbnNvbGVBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5nZXQoKSwgbV9zdGF0ZS0+Y3JlYXRlQWdlbnRTdGF0ZSgpLCBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci5nZXQoKSk7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAg
T3duUHRyPEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ+IGRlYnVnZ2VyQWdlbnQgPSBXb3JrZXJEZWJ1
Z2dlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdl
dCgpLCB3b3JrZXJDb250ZXh0LCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSk7CisgICAg
T3duUHRyPEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ+IGRlYnVnZ2VyQWdlbnQgPSBXb3JrZXJEZWJ1
Z2dlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLT5j
cmVhdGVBZ2VudFN0YXRlKCksIHdvcmtlckNvbnRleHQsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmdldCgpKTsKICAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50UHRyID0g
ZGVidWdnZXJBZ2VudC5nZXQoKTsKICAgICBtX3J1bnRpbWVBZ2VudC0+c2V0U2NyaXB0RGVidWdT
ZXJ2ZXIoJmRlYnVnZ2VyQWdlbnQtPnNjcmlwdERlYnVnU2VydmVyKCkpOwogICAgIG1fYWdlbnRz
LmFwcGVuZChkZWJ1Z2dlckFnZW50LnJlbGVhc2UoKSk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQo
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQo
KSwgY29uc29sZUFnZW50LmdldCgpLCB3b3JrZXJDb250ZXh0LCBtX3N0YXRlLmdldCgpLCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSkpOworICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0
b3JQcm9maWxlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBjb25z
b2xlQWdlbnQuZ2V0KCksIHdvcmtlckNvbnRleHQsIG1fc3RhdGUtPmNyZWF0ZUFnZW50U3RhdGUo
KSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCkpKTsKICNlbmRpZgotICAgIG1fYWdlbnRz
LmFwcGVuZChJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdl
bnRzLmdldCgpLCAwLCBtX3N0YXRlLmdldCgpLCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpXb3Jr
ZXJJbnNwZWN0b3IsIDApKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgMCwgbV9zdGF0ZS0+Y3Jl
YXRlQWdlbnRTdGF0ZSgpLCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpXb3JrZXJJbnNwZWN0b3Is
IDApKTsKICAgICBtX2FnZW50cy5hcHBlbmQoY29uc29sZUFnZW50LnJlbGVhc2UoKSk7CiAKICAg
ICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPmluaXQoMApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmgKaW5kZXggMjFkYzcyM2ZlM2FkZDA2OTExNzM1ZmQ0MjgyY2Q3YTY1NzI5MWZhYi4uMTg3
MzI4YzcyM2U3YTIzZTNlYzdhZjg5MjlkNzY0YzI3NTJhODQyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC00OCw3
ICs0OCw3IEBAIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsOwogY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOwogY2xhc3MgSW5zcGVj
dG9yUnVudGltZUFnZW50OwotY2xhc3MgSW5zcGVjdG9yU3RhdGU7CitjbGFzcyBJbnNwZWN0b3JD
b21wb3NpdGVTdGF0ZTsKIGNsYXNzIEluc3BlY3RvclN0YXRlQ2xpZW50OwogY2xhc3MgSW5zdHJ1
bWVudGluZ0FnZW50czsKIGNsYXNzIFdvcmtlckNvbnRleHQ7CkBAIC03NCw3ICs3NCw3IEBAIHBy
aXZhdGU6CiAKICAgICBXb3JrZXJDb250ZXh0KiBtX3dvcmtlckNvbnRleHQ7CiAgICAgT3duUHRy
PEluc3BlY3RvclN0YXRlQ2xpZW50PiBtX3N0YXRlQ2xpZW50OwotICAgIE93blB0cjxJbnNwZWN0
b3JTdGF0ZT4gbV9zdGF0ZTsKKyAgICBPd25QdHI8SW5zcGVjdG9yQ29tcG9zaXRlU3RhdGU+IG1f
c3RhdGU7CiAgICAgT3duUHRyPEluc3RydW1lbnRpbmdBZ2VudHM+IG1faW5zdHJ1bWVudGluZ0Fn
ZW50czsKICAgICBPd25QdHI8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPiBtX2luamVjdGVkU2NyaXB0
TWFuYWdlcjsKICAgICBJbnNwZWN0b3JSdW50aW1lQWdlbnQqIG1fcnVudGltZUFnZW50Owo=
</data>
<flag name="review"
          id="197984"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>