<?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>193546</bug_id>
          
          <creation_ts>2019-01-17 11:55:17 -0800</creation_ts>
          <short_desc>[JSC] Reduce size of memory used for ShadowChicken</short_desc>
          <delta_ts>2019-02-08 10:48:15 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>193606</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1495581</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-17 11:55:17 -0800</bug_when>
    <thetext>ShadowChicken&apos;s packet is large. It is 56 bytes. And we allocate 1000 packet storage for ShadowChicken. So ShadowChicken consumes 55K memory while VM is in action.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496213</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-19 01:27:28 -0800</bug_when>
    <thetext>1. Lazily allocate shadow chicken buffer
2. Reduce the size of packet anyway to reduce the buffer size even if it is allocated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499361</commentid>
    <comment_count>2</comment_count>
      <attachid>360424</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-28 19:35:12 -0800</bug_when>
    <thetext>Created attachment 360424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499381</commentid>
    <comment_count>3</comment_count>
      <attachid>360424</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-01-28 20:18:11 -0800</bug_when>
    <thetext>Comment on attachment 360424
Patch

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

r=me with suggestions.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:13472
&gt; +        RELEASE_ASSERT(vm().shadowChicken());

nit: I know this is not a perf critical function, but can we pre-compute and cache vm().shadowChicken() in a local variable above and use the local shadowChicken variable in the 3 places in this function.  This more clearly communicates to the compiler that we&apos;re expecting the same shadowChicken value.  It also matches the idiom in the rest of this patch of fetching shadowChicken first (for the null check cases).

&gt; Source/JavaScriptCore/jit/CCallHelpers.cpp:57
&gt; +    RELEASE_ASSERT(vm.shadowChicken());

Ditto, precache shadowChicken?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2885
&gt; +    RELEASE_ASSERT(vm.shadowChicken());

Ditto.  Precache shadowChicken?

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1894
&gt; +    RELEASE_ASSERT(vm.shadowChicken());

Ditto.  Precache shadowChicken?

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1913
&gt; +    RELEASE_ASSERT(vm.shadowChicken());

Ditto.  Precache shadowChicken?

&gt; Source/JavaScriptCore/tools/JSDollarVM.cpp:2065
&gt; +        vm-&gt;ensureShadowChicken();

Not that it matters that much because $vm is a debugging tool, but to be completely correct, I think this should be conditional on if (newDebuggerMode == DebuggerOn).  In fact, we can even releaseShadowChicken if newDebuggerMode == DebuggerOff (though we&apos;ve never done that before).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499386</commentid>
    <comment_count>4</comment_count>
      <attachid>360424</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-28 20:29:05 -0800</bug_when>
    <thetext>Comment on attachment 360424
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:13472
&gt;&gt; +        RELEASE_ASSERT(vm().shadowChicken());
&gt; 
&gt; nit: I know this is not a perf critical function, but can we pre-compute and cache vm().shadowChicken() in a local variable above and use the local shadowChicken variable in the 3 places in this function.  This more clearly communicates to the compiler that we&apos;re expecting the same shadowChicken value.  It also matches the idiom in the rest of this patch of fetching shadowChicken first (for the null check cases).

Make sense. Fixed.

&gt;&gt; Source/JavaScriptCore/jit/CCallHelpers.cpp:57
&gt;&gt; +    RELEASE_ASSERT(vm.shadowChicken());
&gt; 
&gt; Ditto, precache shadowChicken?

Fixed.

&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2885
&gt;&gt; +    RELEASE_ASSERT(vm.shadowChicken());
&gt; 
&gt; Ditto.  Precache shadowChicken?

Fixed.

&gt;&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1894
&gt;&gt; +    RELEASE_ASSERT(vm.shadowChicken());
&gt; 
&gt; Ditto.  Precache shadowChicken?

Fixed.

&gt;&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1913
&gt;&gt; +    RELEASE_ASSERT(vm.shadowChicken());
&gt; 
&gt; Ditto.  Precache shadowChicken?

Fixed.

&gt;&gt; Source/JavaScriptCore/tools/JSDollarVM.cpp:2065
&gt;&gt; +        vm-&gt;ensureShadowChicken();
&gt; 
&gt; Not that it matters that much because $vm is a debugging tool, but to be completely correct, I think this should be conditional on if (newDebuggerMode == DebuggerOn).  In fact, we can even releaseShadowChicken if newDebuggerMode == DebuggerOff (though we&apos;ve never done that before).

Nice, yeah. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499387</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-28 20:33:39 -0800</bug_when>
    <thetext>Committed r240637: &lt;https://trac.webkit.org/changeset/240637&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499388</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-28 20:34:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/47621712&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500479</commentid>
    <comment_count>7</comment_count>
      <attachid>360424</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-31 00:00:33 -0800</bug_when>
    <thetext>Comment on attachment 360424
Patch

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

&gt; Source/JavaScriptCore/jit/JITExceptions.cpp:56
&gt; +    if (auto* shadowChicken = vm-&gt;shadowChicken())

Do we ever call setDebugger with JS frames on the stack?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500510</commentid>
    <comment_count>8</comment_count>
      <attachid>360424</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-31 01:53:26 -0800</bug_when>
    <thetext>Comment on attachment 360424
Patch

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

&gt;&gt; Source/JavaScriptCore/jit/JITExceptions.cpp:56
&gt;&gt; +    if (auto* shadowChicken = vm-&gt;shadowChicken())
&gt; 
&gt; Do we ever call setDebugger with JS frames on the stack?

I don&apos;t think so, but either is fine anyway since if there is no shadowChicken, tail-call log is not recorded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504128</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-08 00:29:01 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504129</commentid>
    <comment_count>10</comment_count>
      <attachid>361495</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-08 00:29:02 -0800</bug_when>
    <thetext>Created attachment 361495
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504140</commentid>
    <comment_count>11</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-02-08 01:18:42 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #10)
&gt; Created attachment 361495 [details]
&gt; WIP

What does this have to do with ShadowChicken?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504142</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-08 01:26:19 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #11)
&gt; (In reply to Yusuke Suzuki from comment #10)
&gt; &gt; Created attachment 361495 [details]
&gt; &gt; WIP
&gt; 
&gt; What does this have to do with ShadowChicken?

Oooooooops, I uploaded the patch to the wrong issue. The correct issue is https://bugs.webkit.org/show_bug.cgi?id=194375. Thank you for letting me know!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504217</commentid>
    <comment_count>13</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-02-08 10:48:15 -0800</bug_when>
    <thetext>*** Bug 194431 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360424</attachid>
            <date>2019-01-28 19:35:12 -0800</date>
            <delta_ts>2019-02-08 00:29:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193546-20190128193511.patch</filename>
            <type>text/plain</type>
            <size>17033</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwNjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MmE3MGY1ZTE5NjQ0MDg5NDdkNGZlMDBiMmU3YTgzMDEwNjkwNzU2Li45M2JlZTkxZmQ2MzQ1YmVm
OWMzZjFhZWQ1MGZiNDY1NDFiMzNjYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxOS0wMS0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlZHVjZSBzaXplIG9mIG1lbW9yeSB1c2VkIGZvciBTaGFkb3dD
aGlja2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTM1NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGxhemlseSBpbnN0YW50aWF0ZSBTaGFkb3dDaGlja2VuLiBXZSBkbyBub3QgbmVl
ZCB0aGlzIHVudGlsIHdlIHN0YXJ0IGxvZ2dpbmcgU2hhZG93Q2hpY2tlbiBwYWNrZXRzLgorICAg
ICAgICBUaGUgcmVtb3ZhbCBvZiBTaGFkb3dDaGlja2VuIHNhdmVzIDU1S0IgbWVtb3J5LgorCisg
ICAgICAgICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpE
ZWJ1Z2dlckNhbGxGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW5zdXJlU2hhZG93
Q2hpY2tlblBhY2tldCk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6c3RvcFRoZVBlcmlwaGVyeSk6CisgICAgICAgIChKU0M6OkhlYXA6OmFkZENvcmVDb25z
dHJhaW50cyk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6
OkNDYWxsSGVscGVyczo6ZW5zdXJlU2hhZG93Q2hpY2tlblBhY2tldCk6CisgICAgICAgICogaml0
L0pJVEV4Y2VwdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmljVW53aW5kKToKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9sb2df
c2hhZG93X2NoaWNrZW5fcHJvbG9ndWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbG9n
X3NoYWRvd19jaGlja2VuX3RhaWwpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3Vl
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKToK
KyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6c2V0RGVidWdnZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNldERlYnVnZ2VyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToK
KyAgICAgICAgKEpTQzo6Vk06OmVuc3VyZVNoYWRvd0NoaWNrZW4pOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OnNoYWRvd0NoaWNrZW4pOgorICAgICAgICAqIHRv
b2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvblNoYWRvd0NoaWNrZW5G
dW5jdGlvbnNPblN0YWNrKToKKyAgICAgICAgKEpTQzo6Y2hhbmdlRGVidWdnZXJNb2RlV2hlbklk
bGUpOgorCiAyMDE5LTAxLTI4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBUb1N0cmluZyBub2RlIGFjdHVhbGx5IGRvZXMgR0MuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRleCA2MzBmOGYw
ZGVhYzA0MmY0NzFkZTk1NmJjNzQ4YzBhMTliY2VmNjdjLi5iMzBhODYyNWQyM2VlMDY5YzY3NDcw
NzI1NzNjNzI3ZjVlYjJkMjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTcwLDcgKzcwLDggQEAgUmVmPERlYnVn
Z2VyQ2FsbEZyYW1lPiBEZWJ1Z2dlckNhbGxGcmFtZTo6Y3JlYXRlKFZNJiB2bSwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiAgICAgfQogCiAgICAgVmVjdG9yPFNoYWRvd0NoaWNrZW46OkZyYW1lPiBm
cmFtZXM7Ci0gICAgdm0uc2hhZG93Q2hpY2tlbigpLml0ZXJhdGUodm0sIGNhbGxGcmFtZSwgWyZd
IChjb25zdCBTaGFkb3dDaGlja2VuOjpGcmFtZSYgZnJhbWUpIC0+IGJvb2wgeworICAgIHZtLmVu
c3VyZVNoYWRvd0NoaWNrZW4oKTsKKyAgICB2bS5zaGFkb3dDaGlja2VuKCktPml0ZXJhdGUodm0s
IGNhbGxGcmFtZSwgWyZdIChjb25zdCBTaGFkb3dDaGlja2VuOjpGcmFtZSYgZnJhbWUpIC0+IGJv
b2wgewogICAgICAgICBmcmFtZXMuYXBwZW5kKGZyYW1lKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggZDc2MThkZGMwNWM4MzEyMWQyNjJmOGMyZWJmYzEwOWM5NGFlYjVlNi4uNGY2MjVm
ZTAyYTMyNmI1NGY1MmY3MDMxOTNkMTkzNmEzMjcwOTY4MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTM0NjksMTYgKzEzNDY5LDE3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgCiAgICAgTFZhbHVlIGVuc3VyZVNoYWRvd0NoaWNr
ZW5QYWNrZXQoKQogICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS5zaGFkb3dDaGlj
a2VuKCkpOwogICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAg
ICAgICAgIAotICAgICAgICBUeXBlZFBvaW50ZXIgYWRkcmVzc09mTG9nQ3Vyc29yID0gbV9vdXQu
YWJzb2x1dGUodm0oKS5zaGFkb3dDaGlja2VuKCkuYWRkcmVzc09mTG9nQ3Vyc29yKCkpOworICAg
ICAgICBUeXBlZFBvaW50ZXIgYWRkcmVzc09mTG9nQ3Vyc29yID0gbV9vdXQuYWJzb2x1dGUodm0o
KS5zaGFkb3dDaGlja2VuKCktPmFkZHJlc3NPZkxvZ0N1cnNvcigpKTsKICAgICAgICAgTFZhbHVl
IGxvZ0N1cnNvciA9IG1fb3V0LmxvYWRQdHIoYWRkcmVzc09mTG9nQ3Vyc29yKTsKICAgICAgICAg
CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IobG9nQ3Vy
c29yKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgIG1fb3V0
LmJlbG93KGxvZ0N1cnNvciwgbV9vdXQuY29uc3RJbnRQdHIodm0oKS5zaGFkb3dDaGlja2VuKCku
bG9nRW5kKCkpKSwKKyAgICAgICAgICAgIG1fb3V0LmJlbG93KGxvZ0N1cnNvciwgbV9vdXQuY29u
c3RJbnRQdHIodm0oKS5zaGFkb3dDaGlja2VuKCktPmxvZ0VuZCgpKSksCiAgICAgICAgICAgICB1
c3VhbGx5KGNvbnRpbnVhdGlvbiksIHJhcmVseShzbG93Q2FzZSkpOwogICAgICAgICAKICAgICAg
ICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGlu
dWF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggOGRhNzBkZDA0NDEx
YTM2MjQyMzg5YjNmMmE4M2E4N2JkOTQ2OTRkZS4uMDZlYTNiNjJlNjQzNjQ0MDMyM2IzYTlkZDNj
MmRlYmU4YjAwMmU3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTE1ODgs
NyArMTU4OCw4IEBAIHZvaWQgSGVhcDo6c3RvcFRoZVBlcmlwaGVyeShHQ0NvbmR1Y3RvciBjb25u
KQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGNvbm4pOwogICAgIAot
ICAgIHZtKCktPnNoYWRvd0NoaWNrZW4oKS51cGRhdGUoKnZtKCksIHZtKCktPnRvcENhbGxGcmFt
ZSk7CisgICAgaWYgKGF1dG8qIHNoYWRvd0NoaWNrZW4gPSB2bSgpLT5zaGFkb3dDaGlja2VuKCkp
CisgICAgICAgIHNoYWRvd0NoaWNrZW4tPnVwZGF0ZSgqdm0oKSwgdm0oKS0+dG9wQ2FsbEZyYW1l
KTsKICAgICAKICAgICBtX3N0cnVjdHVyZUlEVGFibGUuZmx1c2hPbGRUYWJsZXMoKTsKICAgICBt
X29iamVjdFNwYWNlLnN0b3BBbGxvY2F0aW5nKCk7CkBAIC0yNjk5LDcgKzI3MDAsOCBAQCB2b2lk
IEhlYXA6OmFkZENvcmVDb25zdHJhaW50cygpCiAgICAgICAgICAgICBpZiAobV92bS0+dHlwZVBy
b2ZpbGVyKCkpCiAgICAgICAgICAgICAgICAgbV92bS0+dHlwZVByb2ZpbGVyTG9nKCktPnZpc2l0
KHNsb3RWaXNpdG9yKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgbV92bS0+c2hhZG93Q2hp
Y2tlbigpLnZpc2l0Q2hpbGRyZW4oc2xvdFZpc2l0b3IpOworICAgICAgICAgICAgaWYgKGF1dG8q
IHNoYWRvd0NoaWNrZW4gPSBtX3ZtLT5zaGFkb3dDaGlja2VuKCkpCisgICAgICAgICAgICAgICAg
c2hhZG93Q2hpY2tlbi0+dmlzaXRDaGlsZHJlbihzbG90VmlzaXRvcik7CiAgICAgICAgIH0sCiAg
ICAgICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5OjpHcmV5ZWRCeUV4ZWN1dGlvbik7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKaW5kZXggNzRkNzQwZjYy
ZGQxZDMxM2ZkMzJkNzZkOGE0ZDAxOWZjYWRhMDc5Ny4uMDYyMTcxOTk2YjczYmM5MmI3NzUyMjM2
YTdmYTA5YjhjYjZkYjY0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
Q2FsbEhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxw
ZXJzLmNwcApAQCAtNTQsMTQgKzU0LDE1IEBAIHZvaWQgQ0NhbGxIZWxwZXJzOjpsb2dTaGFkb3dD
aGlja2VuVGFpbFBhY2tldChHUFJSZWcgc2hhZG93UGFja2V0LCBKU1ZhbHVlUmVncyB0CiAKIHZv
aWQgQ0NhbGxIZWxwZXJzOjplbnN1cmVTaGFkb3dDaGlja2VuUGFja2V0KFZNJiB2bSwgR1BSUmVn
IHNoYWRvd1BhY2tldCwgR1BSUmVnIHNjcmF0Y2gxTm9uQXJnR1BSLCBHUFJSZWcgc2NyYXRjaDIp
CiB7CisgICAgUkVMRUFTRV9BU1NFUlQodm0uc2hhZG93Q2hpY2tlbigpKTsKICAgICBBU1NFUlQo
IVJlZ2lzdGVyU2V0Ojphcmd1bWVudEdQUlMoKS5nZXQoc2NyYXRjaDFOb25BcmdHUFIpKTsKLSAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIodm0uc2hhZG93Q2hpY2tlbigpLmFkZHJlc3NPZkxvZ0N1cnNv
cigpKSwgc2NyYXRjaDFOb25BcmdHUFIpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cih2bS5zaGFk
b3dDaGlja2VuKCktPmFkZHJlc3NPZkxvZ0N1cnNvcigpKSwgc2NyYXRjaDFOb25BcmdHUFIpOwog
ICAgIGxvYWRQdHIoQWRkcmVzcyhzY3JhdGNoMU5vbkFyZ0dQUiksIHNoYWRvd1BhY2tldCk7Ci0g
ICAgSnVtcCBvayA9IGJyYW5jaFB0cihCZWxvdywgc2hhZG93UGFja2V0LCBUcnVzdGVkSW1tUHRy
KHZtLnNoYWRvd0NoaWNrZW4oKS5sb2dFbmQoKSkpOworICAgIEp1bXAgb2sgPSBicmFuY2hQdHIo
QmVsb3csIHNoYWRvd1BhY2tldCwgVHJ1c3RlZEltbVB0cih2bS5zaGFkb3dDaGlja2VuKCktPmxv
Z0VuZCgpKSk7CiAgICAgc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHJvY2Vzc1No
YWRvd0NoaWNrZW5Mb2cpPigpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Qcm9jZXNzU2hhZG93Q2hpY2tlbkxvZykpLCBz
Y3JhdGNoMU5vbkFyZ0dQUik7CiAgICAgY2FsbChzY3JhdGNoMU5vbkFyZ0dQUiwgT3BlcmF0aW9u
UHRyVGFnKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIodm0uc2hhZG93Q2hpY2tlbigpLmFkZHJl
c3NPZkxvZ0N1cnNvcigpKSwgc2NyYXRjaDFOb25BcmdHUFIpOworICAgIG1vdmUoVHJ1c3RlZElt
bVB0cih2bS5zaGFkb3dDaGlja2VuKCktPmFkZHJlc3NPZkxvZ0N1cnNvcigpKSwgc2NyYXRjaDFO
b25BcmdHUFIpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhzY3JhdGNoMU5vbkFyZ0dQUiksIHNoYWRv
d1BhY2tldCk7CiAgICAgb2subGluayh0aGlzKTsKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNp
emVvZihTaGFkb3dDaGlja2VuOjpQYWNrZXQpKSwgc2hhZG93UGFja2V0LCBzY3JhdGNoMik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAppbmRleCAzYWFhODdm
YzFhNzU2ZGE2YmY4NjI5NmZjOGMyZDNiM2FlMzExM2VlLi43ZmIyMjViMTcxOTlkMzdiMzU5OTFh
N2FmZmI5ZTkyY2IyZTkxZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVEV4Y2VwdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhj
ZXB0aW9ucy5jcHAKQEAgLTUzLDcgKzUzLDggQEAgdm9pZCBnZW5lcmljVW53aW5kKFZNKiB2bSwg
RXhlY1N0YXRlKiBjYWxsRnJhbWUpCiAgICAgICAgIENSQVNIKCk7CiAgICAgfQogICAgIAotICAg
IHZtLT5zaGFkb3dDaGlja2VuKCkubG9nKCp2bSwgdG9wSlNDYWxsRnJhbWUsIFNoYWRvd0NoaWNr
ZW46OlBhY2tldDo6dGhyb3dQYWNrZXQoKSk7CisgICAgaWYgKGF1dG8qIHNoYWRvd0NoaWNrZW4g
PSB2bS0+c2hhZG93Q2hpY2tlbigpKQorICAgICAgICBzaGFkb3dDaGlja2VuLT5sb2coKnZtLCB0
b3BKU0NhbGxGcmFtZSwgU2hhZG93Q2hpY2tlbjo6UGFja2V0Ojp0aHJvd1BhY2tldCgpKTsKIAog
ICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uID0gc2NvcGUuZXhjZXB0aW9uKCk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoZXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCmluZGV4IGM0ZGNlZDkyMWRjMDk4NmRhMjAwYTIxNmEwODFhZDc0YWI4YmMzMmEuLjM3OGRj
NTA1ZjcwMDdiNTIwN2EyMTE1YTg1NjAwMmQ1NGNmMTFjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTQ2MCw2ICsxNDYwLDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfcHJvZmlsZV90eXBlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAKIHZvaWQgSklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogeworICAgIFJFTEVBU0VfQVNTRVJUKHZt
KCktPnNoYWRvd0NoaWNrZW4oKSk7CiAgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CiAgICAgc3Rh
dGljX2Fzc2VydChub25BcmdHUFIwICE9IHJlZ1QwICYmIG5vbkFyZ0dQUjAgIT0gcmVnVDIsICJ3
ZSB3aWxsIGhhdmUgcHJvYmxlbXMgaWYgdGhpcyBpcyB0cnVlLiIpOwogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTG9nU2hhZG93Q2hpY2tlblByb2xvZ3VlPigp
OwpAQCAtMTQ3Myw2ICsxNDc0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlj
a2VuX3Byb2xvZ3VlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3QKIAogdm9pZCBK
SVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5zaGFkb3dDaGlj
a2VuKCkpOwogICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOwogICAgIHN0YXRpY19hc3NlcnQobm9u
QXJnR1BSMCAhPSByZWdUMCAmJiBub25BcmdHUFIwICE9IHJlZ1QyLCAid2Ugd2lsbCBoYXZlIHBy
b2JsZW1zIGlmIHRoaXMgaXMgdHJ1ZS4iKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcExvZ1NoYWRvd0NoaWNrZW5UYWlsPigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDY0NjJmNmQ5MjhhYzVjNDFh
YTk3MGQ5NzRiYzQ5MTQ1NmViMmE4ZDUuLmYzNmNkNDMzOWRlZTAzZjc1ZWQxMGRmMTk2OTQ4ZTIz
MTc1NzBmNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82
NC5jcHAKQEAgLTEzMzUsNiArMTMzNSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfdHlw
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1p
dF9vcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5zaGFkb3dDaGlja2Vu
KCkpOwogICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOwogICAgIHN0YXRpY19hc3NlcnQobm9uQXJn
R1BSMCAhPSByZWdUMCAmJiBub25BcmdHUFIwICE9IHJlZ1QyLCAid2Ugd2lsbCBoYXZlIHByb2Js
ZW1zIGlmIHRoaXMgaXMgdHJ1ZS4iKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcExvZ1NoYWRvd0NoaWNrZW5Qcm9sb2d1ZT4oKTsKQEAgLTEzNTAsNiArMTM1
MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0CiAKIHZvaWQgSklUOjplbWl0X29wX2xvZ19z
aGFkb3dfY2hpY2tlbl90YWlsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CisgICAgUkVMRUFTRV9BU1NFUlQodm0oKS0+c2hhZG93Q2hpY2tlbigpKTsKICAgICB1cGRh
dGVUb3BDYWxsRnJhbWUoKTsKICAgICBzdGF0aWNfYXNzZXJ0KG5vbkFyZ0dQUjAgIT0gcmVnVDAg
JiYgbm9uQXJnR1BSMCAhPSByZWdUMiwgIndlIHdpbGwgaGF2ZSBwcm9ibGVtcyBpZiB0aGlzIGlz
IHRydWUuIik7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BM
b2dTaGFkb3dDaGlja2VuVGFpbD4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCmluZGV4IDk1YmZiODFjNjU4NGIxNzkyNzY3NWM0NzI0NDU3MjdmNzYwMjAw
ZGIuLjYyOTJkYjIwYzczYjQyMGJiMmI2YmViZmE2YjA4MmFiMGIzNDQ1NGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjg4Miw3ICsyODgyLDgg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2Nlc3NTaGFkb3dDaGlja2VuTG9nKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICB2bS5zaGFkb3dDaGlja2VuKCku
dXBkYXRlKHZtLCBleGVjKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5zaGFkb3dDaGlja2VuKCkp
OworICAgIHZtLnNoYWRvd0NoaWNrZW4oKS0+dXBkYXRlKHZtLCBleGVjKTsKIH0KIAogaW50MzJf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNoZWNrSWZFeGNlcHRpb25Jc1VuY2F0Y2hhYmxlQW5k
Tm90aWZ5UHJvZmlsZXIoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggMGZhY2VlNmNmMTYzMjQwYzA5ZmI0MWM0
M2Q1NGQyZTNkMTIzYTA1MC4uNWM3ZGUxZDVlNDY2YWZlYTNjZWM1NzhkN2MyOGQwNGJkMjUxYmQ3
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CkBAIC0xODkxLDcgKzE4OTEsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbG9n
X3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKQogICAgIAogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+
YXM8T3BMb2dTaGFkb3dDaGlja2VuUHJvbG9ndWU+KCk7CiAgICAgSlNTY29wZSogc2NvcGUgPSBl
eGVjLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fc2NvcGUpLlJlZ2lzdGVyOjpzY29wZSgpOwotICAg
IHZtLnNoYWRvd0NoaWNrZW4oKS5sb2codm0sIGV4ZWMsIFNoYWRvd0NoaWNrZW46OlBhY2tldDo6
cHJvbG9ndWUoZXhlYy0+anNDYWxsZWUoKSwgZXhlYywgZXhlYy0+Y2FsbGVyRnJhbWUoKSwgc2Nv
cGUpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5zaGFkb3dDaGlja2VuKCkpOworICAgIHZtLnNo
YWRvd0NoaWNrZW4oKS0+bG9nKHZtLCBleGVjLCBTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OnByb2xv
Z3VlKGV4ZWMtPmpzQ2FsbGVlKCksIGV4ZWMsIGV4ZWMtPmNhbGxlckZyYW1lKCksIHNjb3BlKSk7
CiAgICAgCiAgICAgTExJTlRfRU5EKCk7CiB9CkBAIC0xOTA5LDcgKzE5MTAsOCBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwpCiAjZWxzZQog
ICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleChwYyk7CiAjZW5kaWYKLSAgICB2bS5zaGFk
b3dDaGlja2VuKCkubG9nKHZtLCBleGVjLCBTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OnRhaWwoZXhl
YywgdGhpc1ZhbHVlLCBzY29wZSwgZXhlYy0+Y29kZUJsb2NrKCksIGNhbGxTaXRlSW5kZXgpKTsK
KyAgICBSRUxFQVNFX0FTU0VSVCh2bS5zaGFkb3dDaGlja2VuKCkpOworICAgIHZtLnNoYWRvd0No
aWNrZW4oKS0+bG9nKHZtLCBleGVjLCBTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OnRhaWwoZXhlYywg
dGhpc1ZhbHVlLCBzY29wZSwgZXhlYy0+Y29kZUJsb2NrKCksIGNhbGxTaXRlSW5kZXgpKTsKICAg
ICAKICAgICBMTElOVF9FTkQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA2NzZlYzBlZTRhMzE5OWRkOWI2NzExZWI5YWJj
NWRiZmVhYjIyODA4Li4wMTliZjliMDEyODI4MWNkMWE1YTQyY2UwNzI2MzdhZWYyNDI4MDdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC0xODk3LDYgKzE4OTcsMTMgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cXVldWVNaWNyb3Rh
c2soUmVmPE1pY3JvdGFzaz4mJiB0YXNrKQogICAgIHZtKCkucXVldWVNaWNyb3Rhc2soKnRoaXMs
IFdURk1vdmUodGFzaykpOwogfQogCit2b2lkIEpTR2xvYmFsT2JqZWN0OjpzZXREZWJ1Z2dlcihE
ZWJ1Z2dlciogZGVidWdnZXIpCit7CisgICAgbV9kZWJ1Z2dlciA9IGRlYnVnZ2VyOworICAgIGlm
IChkZWJ1Z2dlcikKKyAgICAgICAgdm0oKS5lbnN1cmVTaGFkb3dDaGlja2VuKCk7Cit9CisKIGJv
b2wgSlNHbG9iYWxPYmplY3Q6Omhhc0RlYnVnZ2VyKCkgY29uc3QKIHsgCiAgICAgcmV0dXJuIG1f
ZGVidWdnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAppbmRleCA2MGMyNDI2MmQxODEwOTFmNWRlMjQ5NTc4MDRjN2YxMzhlZjJjOWE3Li5jM2Fi
MTUxZmM3MDFlMjdiY2VjNWRlODcyYzFhMmJmNTJhNTFmMTY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTkxNCw3ICs5MTQsNyBAQCBj
bGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsK
ICAgICB9CiAKICAgICBEZWJ1Z2dlciogZGVidWdnZXIoKSBjb25zdCB7IHJldHVybiBtX2RlYnVn
Z2VyOyB9Ci0gICAgdm9pZCBzZXREZWJ1Z2dlcihEZWJ1Z2dlciogZGVidWdnZXIpIHsgbV9kZWJ1
Z2dlciA9IGRlYnVnZ2VyOyB9CisgICAgdm9pZCBzZXREZWJ1Z2dlcihEZWJ1Z2dlciopOwogCiAg
ICAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIGdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3RNZXRob2RUYWJsZTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMGE2NDBiMmVmNDFkODU1ZWI3Mjc3YjE4ZTRm
Y2E4NTQxNTBmYWNlNi4uNWY0YWE3OGM2NzIxMjczN2FkY2ExMmFjMGIwZDIxZGVkOGNlMzdlMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzYwLDcgKzM2MCw2IEBAIFZN
OjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fdHlwZVByb2Zp
bGVyRW5hYmxlZENvdW50KDApCiAgICAgLCBtX3ByaW1pdGl2ZUdpZ2FjYWdlRW5hYmxlZChJc1dh
dGNoZWQpCiAgICAgLCBtX2NvbnRyb2xGbG93UHJvZmlsZXJFbmFibGVkQ291bnQoMCkKLSAgICAs
IG1fc2hhZG93Q2hpY2tlbihzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0NoaWNrZW4+KCkpCiB7CiAg
ICAgaW50ZXJwcmV0ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRoaXMpOwogICAgIFN0YWNrQm91bmRz
IHN0YWNrID0gVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKTsKQEAgLTUwOSw2ICs1MDgsOSBAQCBW
TTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgaWYgKCFjYW5Vc2VK
SVQoKSkKICAgICAgICAgbm9KSVRWYWx1ZVByb2ZpbGVTaW5nbGV0b24gPSBzdGQ6Om1ha2VfdW5p
cXVlPFZhbHVlUHJvZmlsZT4oMCk7CiAKKyAgICBpZiAoT3B0aW9uczo6Zm9yY2VEZWJ1Z2dlckJ5
dGVjb2RlR2VuZXJhdGlvbigpIHx8IE9wdGlvbnM6OmFsd2F5c1VzZVNoYWRvd0NoaWNrZW4oKSkK
KyAgICAgICAgZW5zdXJlU2hhZG93Q2hpY2tlbigpOworCiAgICAgVk1JbnNwZWN0b3I6Omluc3Rh
bmNlKCkuYWRkKHRoaXMpOwogfQogCkBAIC0xMjM5LDYgKzEyNDEsMTMgQEAgdm9pZCBWTTo6Y2xl
YXJTY3JhdGNoQnVmZmVycygpCiAgICAgICAgIHNjcmF0Y2hCdWZmZXItPnNldEFjdGl2ZUxlbmd0
aCgwKTsKIH0KIAordm9pZCBWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbigpCit7CisgICAgaWYgKG1f
c2hhZG93Q2hpY2tlbikKKyAgICAgICAgcmV0dXJuOworICAgIG1fc2hhZG93Q2hpY2tlbiA9IHN0
ZDo6bWFrZV91bmlxdWU8U2hhZG93Q2hpY2tlbj4oKTsKK30KKwogSlNHbG9iYWxPYmplY3QqIFZN
Ojp2bUVudHJ5R2xvYmFsT2JqZWN0KGNvbnN0IENhbGxGcmFtZSogY2FsbEZyYW1lKSBjb25zdAog
ewogICAgIGlmIChjYWxsRnJhbWUgJiYgY2FsbEZyYW1lLT5pc0dsb2JhbEV4ZWMoKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggZGY1ODg2ZDcyNDAxOTY0MjExNzQzNDlhZWYw
YTNkOTg3NzQ5MmZjZC4uNTgzOWUyMDdmZTM3NWQyNGQ5YzUyNjA5MGRjM2JkNmJhMjA1NWM5MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC04NTcsNyArODU3LDggQEAgY2xhc3Mg
Vk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2Vk
TGlzdE5vZGU8Vk0+IHsKIAogICAgIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkmIGJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkoKSB7IHJldHVybiAqbV9ieXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
OyB9CiAgICAgCi0gICAgU2hhZG93Q2hpY2tlbiYgc2hhZG93Q2hpY2tlbigpIHsgcmV0dXJuICpt
X3NoYWRvd0NoaWNrZW47IH0KKyAgICBTaGFkb3dDaGlja2VuKiBzaGFkb3dDaGlja2VuKCkgeyBy
ZXR1cm4gbV9zaGFkb3dDaGlja2VuLmdldCgpOyB9CisgICAgdm9pZCBlbnN1cmVTaGFkb3dDaGlj
a2VuKCk7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGxvZ0V2
ZW50KENvZGVCbG9jayosIGNvbnN0IGNoYXIqIHN1bW1hcnksIGNvbnN0IEZ1bmMmIGZ1bmMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IDUzYzVjNDZm
ZWUwZjQ3ZmFiZWFkZDg1OWVlZDJkMTMxY2EzMWZkNWUuLjY3NzgyZWIyNTc3ODE2ZGQ1NGQzZGJk
NDUyODk0OGI3YWIyYmJhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xs
YXJWTS5jcHAKQEAgLTE5MzIsNyArMTkzMiwyMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblNldEhpZGRlblZhbHVlKEV4ZWNTdGF0ZSogZXhlYykKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2hhZG93Q2hpY2tlbkZ1bmN0
aW9uc09uU3RhY2soRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2bS5zaGFkb3dDaGlja2VuKCkuZnVuY3Rpb25z
T25TdGFjayhleGVjKSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIGlmIChhdXRvKiBzaGFkb3dDaGlja2VuID0gdm0uc2hhZG93Q2hpY2tlbigpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNoYWRvd0NoaWNrZW4tPmZ1bmN0aW9uc09uU3Rh
Y2soZXhlYykpOworCisgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShl
eGVjLCAwKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIFN0YWNr
VmlzaXRvcjo6dmlzaXQoZXhlYywgJnZtLCBbJl0gKFN0YWNrVmlzaXRvciYgdmlzaXRvcikgLT4g
U3RhY2tWaXNpdG9yOjpTdGF0dXMgeworICAgICAgICBpZiAodmlzaXRvci0+aXNJbmxpbmVkRnJh
bWUoKSkKKyAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworICAgICAg
ICBpZiAodmlzaXRvci0+aXNXYXNtRnJhbWUoKSkKKyAgICAgICAgICAgIHJldHVybiBTdGFja1Zp
c2l0b3I6OkNvbnRpbnVlOworICAgICAgICByZXN1bHQtPnB1c2goZXhlYywganNDYXN0PEpTT2Jq
ZWN0Kj4odmlzaXRvci0+Y2FsbGVlKCkuYXNDZWxsKCkpKTsKKyAgICAgICAgc2NvcGUucmVsZWFz
ZUFzc2VydE5vRXhjZXB0aW9uKCk7IC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgZnJv
bSB0ZXN0cy4KKyAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CisgICAgfSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldEdsb2JhbENvbnN0UmVkZWNsYXJhdGlv
blNob3VsZE5vdFRocm93KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTIwNDcsNiArMjA2Miw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBjaGFuZ2VEZWJ1Z2dlck1vZGVXaGVuSWRsZShFeGVjU3RhdGUq
IGV4ZWMsIERlYnVnZ2VyTW9kZSBtCiAgICAgdm0tPndoZW5JZGxlKFs9XSAoKSB7CiAgICAgICAg
IE9wdGlvbnM6OmZvcmNlRGVidWdnZXJCeXRlY29kZUdlbmVyYXRpb24oKSA9IG5ld0RlYnVnZ2Vy
TW9kZTsKICAgICAgICAgdm0tPmRlbGV0ZUFsbENvZGUoUHJldmVudENvbGxlY3Rpb25BbmREZWxl
dGVBbGxDb2RlKTsKKyAgICAgICAgdm0tPmVuc3VyZVNoYWRvd0NoaWNrZW4oKTsKICAgICB9KTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361495</attachid>
            <date>2019-02-08 00:29:02 -0800</date>
            <delta_ts>2019-02-08 00:29:02 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-193546-20190208002901.patch</filename>
            <type>text/plain</type>
            <size>84178</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YTA4ZmVhN2M1NzhhODIyYTdlODE5NGEyYjYyMjA1NTU1NDhhODM2Li40ZDhiYTY1NTA1MGU3NmIy
ZjM1ZWJiYWRlMjg2NGE1NjAzYzY2ZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NCBAQAorMjAxOS0wMi0wOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlZHVjZSBzaXplIG9mIG1lbW9yeSB1c2VkIGZvciBTaGFkb3dD
aGlja2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTM1NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5l
cmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHA6CisgICAgICAg
IChKU0M6OklubGluZUFjY2Vzczo6ZHVtcENhY2hlU2l6ZXNBbmRDcmFzaCk6CisgICAgICAgIChK
U0M6OklubGluZUFjY2Vzczo6Z2VuZXJhdGVTdHJpbmdMZW5ndGgpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTdHJpbmdTbGljZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVUb0xvd2VyQ2FzZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRDaGFyQ29kZUF0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlTWFrZVJvcGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlU3RyaW5nRXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlU3RyaW5nWmVyb0xlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90U3RyaW5nT3JPdGhlcik6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTdHJpbmdCcmFuY2gpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3RyaW5nT3JPdGhlckJyYW5jaCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9y
YWdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEFycmF5
TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3Ry
aW5nSWRlbnRBbmRMb2FkU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmVtaXRTd2l0Y2hDaGFyU3RyaW5nSnVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmdPblN0cmluZyk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9G
VExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KToKKyAgICAgICAgKiBmdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1Rv
QjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0
SW5kZXhlZFByb3BlcnR5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVNYWtlUm9wZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdDaGFyQXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlU3RyaW5nQ2hhckNvZGVBdCk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTd2l0Y2gpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjptYXBIYXNoU3RyaW5nKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU1hcEhhc2gpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSGFzT3duUHJvcGVydHkpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU3RyaW5nU2xpY2UpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9Mb3dlckNhc2UpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzdHJpbmdzRXF1YWwpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpib29saWZ5KToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6c3dpdGNoU3RyaW5nKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6aXNSb3BlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6aXNOb3RSb3BlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6c3BlY3VsYXRlU3RyaW5nSWRlbnQpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jv
b2xlYW4pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUpOgor
ICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjpicmFuY2hJZlJvcGUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJy
YW5jaElmTm90Um9wZSk6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0TG9hZENoYXJhY3RlclN0cmluZyk6CisgICAgICAgICogaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnN0cmluZ0dldEJ5VmFsR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6c3RyaW5nQ2hhckxvYWQpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAg
KiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjpyZXNv
bHZlUm9wZVRvQXRvbWljU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5n
OjpyZXNvbHZlUm9wZVRvRXhpc3RpbmdBdG9taWNTdHJpbmcgY29uc3QpOgorICAgICAgICAoSlND
OjpKU1JvcGVTdHJpbmc6OnJlc29sdmVSb3BlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pT
U3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgIChKU0M6OkpTU3RyaW5nOjppc1JvcGUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1N0cmlu
Zzo6aXM4Qml0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6Omxlbmd0aCBjb25zdCk6
CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpTU3RyaW5nOjpvZmZzZXRPZkZsYWdzKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6SlNTdHJpbmc6OnNldElzOEJpdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpT
U3RyaW5nOjpzZXRMZW5ndGgpOiBEZWxldGVkLgorCiAyMDE5LTAyLTA3ICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbW9yZSBkb2VzR0MoKSBmb3IgQ2hlY2tU
cmFwcywgR2V0TWFwQnVja2V0LCBhbmQgU3dpdGNoIG5vZGVzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA5MGYzNTE5OTQ5MzM0
MzdmOWZlY2QxMGVhOGI4NjM4ZTUwNDYwYmM1Li43MjQxZGU3YmM4ZWEwNzNkMTRlNjU1ZDRmMjcy
ZGVkMWQ4MzEyYzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTAyLTA4ICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gUmVkdWNlIHNpemUgb2Yg
bWVtb3J5IHVzZWQgZm9yIFNoYWRvd0NoaWNrZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzU0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAo
V1RGOjpTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
ZmxhZ0lzQXRvbWljKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZmxhZ0lzU3ltYm9sKToK
KyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6bWFza1N0cmluZ0tpbmQpOgorCiAyMDE5LTAyLTA3
ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1Nd
IEJsb2NrIGNvcmVzZXJ2aWNlc2QgaW4gc2FuZGJveC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCA5ZTZlYzdiMDYzY2VhYTI2YjJiMjc4ZGMx
N2E4ZjIxYmI4Y2QzYzVmLi5iN2VlOGM1YmQ0ZDZmZjhhZTllOGE4N2E3NjM5ODk1ZmEyYjRiYzBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBA
IC0xMjE0LDcgKzEyMTQsMTUgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNz
R2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgU3RyaW5n
TGVuZ3RoOiB7Ci0gICAgICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VH
UFIsIEpTU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7
CisgICAgICAgIGF1dG8gaXNSb3BlID0gaml0LmJyYW5jaElmUm9wZShiYXNlR1BSKTsKKyAgICAg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTU3RyaW5nOjpv
ZmZzZXRPZlZhbHVlKCkpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgaml0Lmxv
YWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgU3RyaW5n
SW1wbDo6bGVuZ3RoTWVtb3J5T2Zmc2V0KCkpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAg
ICAgICAgYXV0byBkb25lID0gaml0Lmp1bXAoKTsKKworICAgICAgICBpc1JvcGUubGluaygmaml0
KTsKKyAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNS
b3BlU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7CisK
KyAgICAgICAgZG9uZS5saW5rKCZqaXQpOwogICAgICAgICBqaXQuYm94SW50MzIodmFsdWVSZWdz
LnBheWxvYWRHUFIoKSwgdmFsdWVSZWdzKTsKICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5saW5lQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVB
Y2Nlc3MuY3BwCmluZGV4IGI3ZWZjMzc1YzUyNDU4Zjc3MzU3ZDllMTY2N2QxZmJjNTZlYjY1Yjgu
LmJkZTM4NDM0ZWI1YWFhYTAxMTZjYmJkN2EwNzI5MzJiYThlNDdlYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCkBAIC01NCw3ICs1NCwx
NiBAQCB2b2lkIElubGluZUFjY2Vzczo6ZHVtcENhY2hlU2l6ZXNBbmRDcmFzaCgpCiAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAogICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOwotICAgICAgICBqaXQubG9h
ZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHJlZ3MucGF5bG9hZEdQUigpKTsKKworICAgICAgICBhdXRvIGlzUm9wZSA9IGppdC5icmFu
Y2hJZlJvcGUoYmFzZSk7CisgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhiYXNlLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgcmVncy5wYXlsb2FkR1BSKCkpOwor
ICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhyZWdzLnBheWxvYWRHUFIo
KSwgU3RyaW5nSW1wbDo6bGVuZ3RoTWVtb3J5T2Zmc2V0KCkpLCByZWdzLnBheWxvYWRHUFIoKSk7
CisgICAgICAgIGF1dG8gZG9uZSA9IGppdC5qdW1wKCk7CisKKyAgICAgICAgaXNSb3BlLmxpbmso
JmppdCk7CisgICAgICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2UsIEpT
Um9wZVN0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlZ3MucGF5bG9hZEdQUigpKTsKKworICAg
ICAgICBkb25lLmxpbmsoJmppdCk7CiAgICAgICAgIGppdC5ib3hJbnQzMihyZWdzLnBheWxvYWRH
UFIoKSwgcmVncyk7CiAKICAgICAgICAgZGF0YUxvZygic3RyaW5nIGxlbmd0aCBzaXplOiAiLCBq
aXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSwgIlxuIik7CkBAIC0yOTksNyArMzA4
LDE2IEBAIGJvb2wgSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVN0cmluZ0xlbmd0aChTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8pCiAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsCiAgICAg
ICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOwot
ICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2UsIEpTU3RyaW5nOjpvZmZz
ZXRPZkxlbmd0aCgpKSwgdmFsdWUucGF5bG9hZEdQUigpKTsKKworICAgIGF1dG8gaXNSb3BlID0g
aml0LmJyYW5jaElmUm9wZShiYXNlKTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoYmFzZSwgSlNTdHJpbmc6Om9mZnNldE9mVmFsdWUoKSksIHZhbHVlLnBheWxvYWRHUFIo
KSk7CisgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQ
UigpLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSksIHZhbHVlLnBheWxvYWRHUFIo
KSk7CisgICAgYXV0byBkb25lID0gaml0Lmp1bXAoKTsKKworICAgIGlzUm9wZS5saW5rKCZqaXQp
OworICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2UsIEpTUm9wZVN0cmlu
Zzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZhbHVlLnBheWxvYWRHUFIoKSk7CisKKyAgICBkb25lLmxp
bmsoJmppdCk7CiAgICAgaml0LmJveEludDMyKHZhbHVlLnBheWxvYWRHUFIoKSwgdmFsdWUpOwog
CiAgICAgYm9vbCBsaW5rZWRDb2RlSW5saW5lID0gbGlua0NvZGVJbmxpbmUoInN0cmluZyBsZW5n
dGgiLCBqaXQsIHN0dWJJbmZvLCBbJl0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNTFh
ODdhZmQyYmUzNzQ0NTE0MDY0N2Y5YTIxYjNmNGE2OWYwZWU2MS4uYTVjYjFiZTRkNzdjYjkwNTZm
YmNjOWUwNjMxM2FlMmE2YzgyNjg0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTE1MjksNiArMTUyOSw4IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJvb2xlYW5CcmFuY2goTm9kZSogbm9kZSwgTm9kZSog
YnJhbmNoTm9kZSwKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ1NsaWNlKE5v
ZGUqIG5vZGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKG5vZGUpOworI2lmIDAKICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBzdHJpbmcodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEdQUlRlbXBv
cmFyeSBzdGFydEluZGV4KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwpAQCAt
MTU0MSw2ICsxNTQzLDQ3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdTbGlj
ZShOb2RlKiBub2RlKQogCiAgICAgc3BlY3VsYXRlU3RyaW5nKG5vZGUtPmNoaWxkMSgpLCBzdHJp
bmdHUFIpOwogCisgICAgYXV0byBlbWl0UG9wdWxhdGVTbGljZUluZGV4ID0gWyZdIChFZGdlJiB0
YXJnZXQsIEdQUlJlZyBsZW5ndGgsIEdQUlJlZyByZXN1bHQpIHsKKyAgICAgICAgaWYgKHRhcmdl
dC0+aXNJbnQzMkNvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIGludDMyX3QgdmFsdWUgPSB0YXJn
ZXQtPmFzSW50MzIoKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAwKSB7CisgICAgICAgICAg
ICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcExpc3QgZG9uZTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA+IDApIHsKKyAgICAgICAgICAg
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMih2YWx1ZSksIHJlc3VsdCk7CisgICAgICAgICAg
ICAgICAgZG9uZS5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93T3JF
cXVhbCwgcmVzdWx0LCBsZW5ndGgpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKGxlbmd0
aCwgcmVzdWx0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJU
KHZhbHVlICE9IDApOworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUobGVuZ3RoLCByZXN1bHQp
OworICAgICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0LmJyYW5jaEFkZDMyKE1hY3JvQXNz
ZW1ibGVyOjpQb3NpdGl2ZU9yWmVybywgVHJ1c3RlZEltbTMyKHZhbHVlKSwgcmVzdWx0KSk7Cisg
ICAgICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBpbmRleCh0
aGlzLCB0YXJnZXQpOworICAgICAgICBHUFJSZWcgaW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGRvbmU7CisKKyAgICAgICAgYXV0byBpc1Bv
c2l0aXZlID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkdyZWF0ZXJUaGFuT3JFcXVh
bCwgaW5kZXhHUFIsIFRydXN0ZWRJbW0zMigwKSk7CisgICAgICAgIG1faml0Lm1vdmUobGVuZ3Ro
LCByZXN1bHQpOworICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2hBZGQzMihNYWNyb0Fz
c2VtYmxlcjo6UG9zaXRpdmVPclplcm8sIGluZGV4R1BSLCByZXN1bHQpKTsKKyAgICAgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdCk7CisgICAgICAgIGRvbmUuYXBwZW5kKG1f
aml0Lmp1bXAoKSk7CisKKyAgICAgICAgaXNQb3NpdGl2ZS5saW5rKCZtX2ppdCk7CisgICAgICAg
IG1faml0Lm1vdmUoaW5kZXhHUFIsIHJlc3VsdCk7CisgICAgICAgIGRvbmUuYXBwZW5kKG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvd09yRXF1YWwsIHJlc3VsdCwgbGVuZ3RoKSk7
CisgICAgICAgIG1faml0Lm1vdmUobGVuZ3RoLCByZXN1bHQpOworCisgICAgICAgIGRvbmUubGlu
aygmbV9qaXQpOworICAgIH07CisKICAgICB7CiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21w
aWxlcjo6QWRkcmVzcyhzdHJpbmdHUFIsIEpTU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSwgdGVt
cDJHUFIpOwogCkBAIC0xNTk2LDYgKzE2MzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlU3RyaW5nU2xpY2UoTm9kZSogbm9kZSkKIAogICAgIGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7
CiAgICAgY2VsbFJlc3VsdCh0ZW1wR1BSLCBub2RlKTsKKyNlbmRpZgogfQogCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlVG9Mb3dlckNhc2UoTm9kZSogbm9kZSkKQEAgLTE2MTksOCArMTY2
Myw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb0xvd2VyQ2FzZShOb2RlKiBub2Rl
KQogCiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBpbmRleEdQUik7CiAK
KyAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoSWZSb3BlKHN0cmluZ0dQUikpOwogICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RyaW5nR1BSLCBKU1N0cmlu
Zzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgdGVtcEdQUik7Ci0gICAgc2xvd1BhdGguYXBwZW5kKG1faml0
LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHRlbXBHUFIpKTsKIAogICAgIHNs
b3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJpbmdJbXBsOjpmbGFn
c09mZnNldCgpKSwKQEAgLTIxMjgsMTMgKzIxNzIsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldENoYXJDb2RlQXQoTm9kZSogbm9kZSkKICAgICAKICAgICBBU1NFUlQoc3BlY3Vs
YXRpb25DaGVja2VkKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlLCBTcGVj
U3RyaW5nKSk7CiAKLSAgICAvLyB1bnNpZ25lZCBjb21wYXJpc29uIHNvIHdlIGNhbiBmaWx0ZXIg
b3V0IG5lZ2F0aXZlIGluZGljZXMgYW5kIGluZGljZXMgdGhhdCBhcmUgdG9vIGxhcmdlCi0gICAg
c3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJh
bmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhSZWcsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0cmluZ1JlZywgSlNTdHJpbmc6Om9mZnNldE9mTGVuZ3RoKCkpKSk7Ci0K
ICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9
IHNjcmF0Y2guZ3ByKCk7CiAKKyAgICAvLyB1bnNpZ25lZCBjb21wYXJpc29uIHNvIHdlIGNhbiBm
aWx0ZXIgb3V0IG5lZ2F0aXZlIGluZGljZXMgYW5kIGluZGljZXMgdGhhdCBhcmUgdG9vIGxhcmdl
CiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJpbmdSZWcsIEpT
U3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBzY3JhdGNoUmVnKTsKKyAgICAKKyAgICBzcGVjdWxh
dGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBpbmRleFJlZywgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHNjcmF0Y2hSZWcsIFN0cmluZ0ltcGw6Omxlbmd0aE1lbW9yeU9mZnNldCgpKSkpOwogCiAg
ICAgLy8gTG9hZCB0aGUgY2hhcmFjdGVyIGludG8gc2NyYXRjaFJlZwogICAgIEpJVENvbXBpbGVy
OjpKdW1wIGlzMTZCaXQgPSBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8s
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hSZWcsIFN0cmluZ0ltcGw6OmZsYWdzT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nSW1wbDo6ZmxhZ0lzOEJpdCgpKSk7CkBAIC0yMTc1
LDE0ICsyMjE5LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uU3Ry
aW5nKE5vZGUqIG5vZGUpCiAgICAgQVNTRVJUKEFycmF5TW9kZShBcnJheTo6U3RyaW5nLCBBcnJh
eTo6UmVhZCkuYWxyZWFkeUNoZWNrZWQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbV9zdGF0ZS5mb3JO
b2RlKG1fZ3JhcGguY2hpbGQobm9kZSwgMCkpKSk7CiAKICAgICAvLyB1bnNpZ25lZCBjb21wYXJp
c29uIHNvIHdlIGNhbiBmaWx0ZXIgb3V0IG5lZ2F0aXZlIGluZGljZXMgYW5kIGluZGljZXMgdGhh
dCBhcmUgdG9vIGxhcmdlCisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlUmVnLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgc2NyYXRjaFJlZyk7CiAgICAg
SklUQ29tcGlsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBtX2ppdC5icmFuY2gzMigKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsCi0gICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSk7
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hSZWcsIFN0cmluZ0ltcGw6
Omxlbmd0aE1lbW9yeU9mZnNldCgpKSk7CiAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzSW5C
b3VuZHMoKSkKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJl
Z3MoKSwgMCwgb3V0T2ZCb3VuZHMpOwogCi0gICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlUmVnLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgc2NyYXRjaFJl
Zyk7Ci0KICAgICAvLyBMb2FkIHRoZSBjaGFyYWN0ZXIgaW50byBzY3JhdGNoUmVnCiAgICAgSklU
Q29tcGlsZXI6Okp1bXAgaXMxNkJpdCA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxl
cjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgU3RyaW5nSW1wbDo6
ZmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKTsK
IApAQCAtNDM0Miw2ICs0Mzg1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1ha2VS
b3BlKE5vZGUqIG5vZGUpCiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJU
ZW1wb3JhcnkgYWxsb2NhdG9yKHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMp
OworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKICAgICAKICAgICBHUFJSZWcgb3BH
UFJzWzNdOwogICAgIHVuc2lnbmVkIG51bU9wR1BSczsKQEAgLTQzNTcsNDEgKzQ0MDEsNzAgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1ha2VSb3BlKE5vZGUqIG5vZGUpCiAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJSZWcgYWxsb2NhdG9yR1BSID0g
YWxsb2NhdG9yLmdwcigpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsK
KyAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKICAgICAKICAgICBKSVRD
b21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CiAgICAgQWxsb2NhdG9yIGFsbG9jYXRvclZhbHVl
ID0gYWxsb2NhdG9yRm9yTm9uVmlydHVhbENvbmN1cnJlbnRseTxKU1JvcGVTdHJpbmc+KCptX2pp
dC52bSgpLCBzaXplb2YoSlNSb3BlU3RyaW5nKSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9y
SWZFeGlzdHMpOwogICAgIGVtaXRBbGxvY2F0ZUpTQ2VsbChyZXN1bHRHUFIsIEpJVEFsbG9jYXRv
cjo6Y29uc3RhbnQoYWxsb2NhdG9yVmFsdWUpLCBhbGxvY2F0b3JHUFIsIFRydXN0ZWRJbW1QdHIo
bV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKSwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOwotICAgICAgICAKKworICAgIFN0cnVj
dHVyZUlEQmxvYiByb3BlQmxvYihtX2dyYXBoLnN0cmluZ1N0cnVjdHVyZS0+aWQoKSwgbV9ncmFw
aC5zdHJpbmdTdHJ1Y3R1cmUtPmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkoKSwgVHlwZUlu
Zm8oU3RyaW5nVHlwZSwgSlNSb3BlU3RyaW5nOjpTdHJ1Y3R1cmVGbGFncyB8IFR5cGVJbmZvUGVy
Q2VsbEJpdCkpOworICAgIG1faml0LnN0b3JlNjQoVHJ1c3RlZEltbTY0KHJvcGVCbG9iLmJsb2Io
KSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSk7CiAgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihudWxscHRyKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgp
KSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bU9wR1BSczsgKytpKQogICAgICAg
ICBtX2ppdC5zdG9yZVB0cihvcEdQUnNbaV0sIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZpYmVycygpICsgc2l6ZW9mKFdyaXRlQmFycmllcjxK
U1N0cmluZz4pICogaSkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG51bU9wR1BSczsgaSA8IEpT
Um9wZVN0cmluZzo6c19tYXhJbnRlcm5hbFJvcGVMZW5ndGg7ICsraSkKICAgICAgICAgbV9qaXQu
c3RvcmVQdHIoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVz
dWx0R1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXJzKCkgKyBzaXplb2YoV3JpdGVCYXJy
aWVyPEpTU3RyaW5nPikgKiBpKSk7Ci0gICAgbV9qaXQubG9hZDE2KEpJVENvbXBpbGVyOjpBZGRy
ZXNzKG9wR1BSc1swXSwgSlNTdHJpbmc6Om9mZnNldE9mRmxhZ3MoKSksIHNjcmF0Y2hHUFIpOwot
ICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhvcEdQUnNbMF0sIEpTU3RyaW5n
OjpvZmZzZXRPZkxlbmd0aCgpKSwgYWxsb2NhdG9yR1BSKTsKLSAgICBpZiAoIUFTU0VSVF9ESVNB
QkxFRCkgewotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBvayA9IG1faml0LmJyYW5jaDMyKAot
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgYWxsb2NhdG9yR1BS
LCBUcnVzdGVkSW1tMzIoMCkpOwotICAgICAgICBtX2ppdC5hYm9ydFdpdGhSZWFzb24oREZHTmVn
YXRpdmVTdHJpbmdMZW5ndGgpOwotICAgICAgICBvay5saW5rKCZtX2ppdCk7CisKKyAgICB7Cisg
ICAgICAgIGF1dG8gaXNSb3BlID0gbV9qaXQuYnJhbmNoSWZSb3BlKG9wR1BSc1swXSk7CisgICAg
ICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mob3BHUFJzWzBdLCBKU1N0cmlu
Zzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgc2NyYXRjaDJHUFIpOworICAgICAgICBtX2ppdC5sb2FkMzIo
SklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaDJHUFIsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0
KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHNjcmF0Y2gyR1BSLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSksIGFsbG9j
YXRvckdQUik7CisgICAgICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1bXAoKTsKKworICAgICAgICBp
c1JvcGUubGluaygmbV9qaXQpOworICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFk
ZHJlc3Mob3BHUFJzWzBdLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmxhZ3MoKSksIHNjcmF0Y2hH
UFIpOworICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJlc3Mob3BHUFJzWzBd
LCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mTGVuZ3RoKCkpLCBhbGxvY2F0b3JHUFIpOworCisgICAg
ICAgIGRvbmUubGluaygmbV9qaXQpOworCisgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBvayA9IG1faml0LmJyYW5jaDMyKAorICAg
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpHcmVhdGVyVGhhbk9yRXF1YWwsIGFsbG9jYXRvckdQ
UiwgVHJ1c3RlZEltbTMyKDApKTsKKyAgICAgICAgICAgIG1faml0LmFib3J0V2l0aFJlYXNvbihE
RkdOZWdhdGl2ZVN0cmluZ0xlbmd0aCk7CisgICAgICAgICAgICBvay5saW5rKCZtX2ppdCk7Cisg
ICAgICAgIH0KICAgICB9CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgbnVtT3BHUFJz
OyArK2kpIHsKLSAgICAgICAgbV9qaXQuYW5kMTYoSklUQ29tcGlsZXI6OkFkZHJlc3Mob3BHUFJz
W2ldLCBKU1N0cmluZzo6b2Zmc2V0T2ZGbGFncygpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIGF1
dG8gaXNSb3BlID0gbV9qaXQuYnJhbmNoSWZSb3BlKG9wR1BSc1tpXSk7CisgICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mob3BHUFJzW2ldLCBKU1N0cmluZzo6b2Zmc2V0
T2ZWYWx1ZSgpKSwgc2NyYXRjaDJHUFIpOworICAgICAgICBtX2ppdC5hbmQzMihKSVRDb21waWxl
cjo6QWRkcmVzcyhzY3JhdGNoMkdQUiwgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIHNjcmF0
Y2hHUFIpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgVW5jb3VudGFi
bGUsIEpTVmFsdWVTb3VyY2UoKSwgbnVsbHB0ciwKICAgICAgICAgICAgIG1faml0LmJyYW5jaEFk
ZDMyKAogICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpPdmVyZmxvdywKLSAgICAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhvcEdQUnNbaV0sIEpTU3RyaW5nOjpvZmZzZXRPZkxl
bmd0aCgpKSwgYWxsb2NhdG9yR1BSKSk7CisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3Moc2NyYXRjaDJHUFIsIFN0cmluZ0ltcGw6Omxlbmd0aE1lbW9yeU9mZnNldCgpKSwgYWxs
b2NhdG9yR1BSKSk7CisgICAgICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1bXAoKTsKKworICAgICAg
ICBpc1JvcGUubGluaygmbV9qaXQpOworICAgICAgICBtX2ppdC5hbmQzMihKSVRDb21waWxlcjo6
QWRkcmVzcyhvcEdQUnNbaV0sIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGbGFncygpKSwgc2NyYXRj
aEdQUik7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBVbmNvdW50YWJs
ZSwgSlNWYWx1ZVNvdXJjZSgpLCBudWxscHRyLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoQWRk
MzIoCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok92ZXJmbG93LAorICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wR1BSc1tpXSwgSlNSb3BlU3RyaW5nOjpvZmZzZXRP
Zkxlbmd0aCgpKSwgYWxsb2NhdG9yR1BSKSk7CisgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwog
ICAgIH0KLSAgICBtX2ppdC5hbmQzMihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKEpTU3RyaW5n
OjpJczhCaXQpLCBzY3JhdGNoR1BSKTsKLSAgICBtX2ppdC5zdG9yZTE2KHNjcmF0Y2hHUFIsIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNTdHJpbmc6Om9mZnNldE9mRmxhZ3MoKSkp
OworICAgIG1faml0LmFuZDMyKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoSlNSb3BlU3RyaW5n
OjpJczhCaXQpLCBzY3JhdGNoR1BSKTsKKyAgICBtX2ppdC5zdG9yZTMyKHNjcmF0Y2hHUFIsIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZsYWdz
KCkpKTsKICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewogICAgICAgICBKSVRDb21waWxlcjo6
SnVtcCBvayA9IG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkdyZWF0
ZXJUaGFuT3JFcXVhbCwgYWxsb2NhdG9yR1BSLCBUcnVzdGVkSW1tMzIoMCkpOwogICAgICAgICBt
X2ppdC5hYm9ydFdpdGhSZWFzb24oREZHTmVnYXRpdmVTdHJpbmdMZW5ndGgpOwogICAgICAgICBv
ay5saW5rKCZtX2ppdCk7CiAgICAgfQotICAgIG1faml0LnN0b3JlMzIoYWxsb2NhdG9yR1BSLCBK
SVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgp
KSk7CisgICAgbV9qaXQuc3RvcmUzMihhbGxvY2F0b3JHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNz
KHJlc3VsdEdQUiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSk7CiAgICAgCiAgICAg
bV9qaXQubXV0YXRvckZlbmNlKCptX2ppdC52bSgpKTsKICAgICAKQEAgLTYzMjAsMjEgKzYzOTMs
MjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ0VxdWFsaXR5KAogICAgIHRy
dWVDYXNlLmFwcGVuZChmYXN0VHJ1ZSk7CiAgICAgZmFsc2VDYXNlLmFwcGVuZChmYXN0RmFsc2Up
OwogCi0gICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGxlZnRHUFIsIEpT
U3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSwgbGVuZ3RoR1BSKTsKKyAgICBzbG93Q2FzZS5hcHBl
bmQobV9qaXQuYnJhbmNoSWZSb3BlKGxlZnRHUFIpKTsKKyAgICBzbG93Q2FzZS5hcHBlbmQobV9q
aXQuYnJhbmNoSWZSb3BlKHJpZ2h0R1BSKSk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGxlZnRHUFIsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBsZWZ0
VGVtcEdQUik7CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyaWdo
dEdQUiwgSlNTdHJpbmc6Om9mZnNldE9mVmFsdWUoKSksIHJpZ2h0VGVtcEdQUik7CisKKyAgICBt
X2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobGVmdFRlbXBHUFIsIFN0cmluZ0lt
cGw6Omxlbmd0aE1lbW9yeU9mZnNldCgpKSwgbGVuZ3RoR1BSKTsKICAgICAKICAgICBmYWxzZUNh
c2UuYXBwZW5kKG1faml0LmJyYW5jaDMyKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJpZ2h0R1BSLCBKU1N0cmluZzo6
b2Zmc2V0T2ZMZW5ndGgoKSksCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJpZ2h0
VGVtcEdQUiwgU3RyaW5nSW1wbDo6bGVuZ3RoTWVtb3J5T2Zmc2V0KCkpLAogICAgICAgICBsZW5n
dGhHUFIpKTsKICAgICAKICAgICB0cnVlQ2FzZS5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDMyKE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCBsZW5ndGhHUFIpKTsKICAgICAKLSAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGxlZnRHUFIsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVl
KCkpLCBsZWZ0VGVtcEdQUik7Ci0gICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyaWdodEdQUiwgSlNTdHJpbmc6Om9mZnNldE9mVmFsdWUoKSksIHJpZ2h0VGVtcEdQUik7
Ci0gICAgCi0gICAgc2xvd0Nhc2UuYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3Nl
bWJsZXI6Olplcm8sIGxlZnRUZW1wR1BSKSk7Ci0gICAgc2xvd0Nhc2UuYXBwZW5kKG1faml0LmJy
YW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJpZ2h0VGVtcEdQUikpOwotICAgIAog
ICAgIHNsb3dDYXNlLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIoCiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpaZXJvLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhsZWZ0VGVtcEdQ
UiwgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksCkBAIC02NjM4LDkgKzY3MTEsMTUgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ1plcm9MZW5ndGgoTm9kZSogbm9kZSkKICAg
ICBHUFJUZW1wb3JhcnkgZXEodGhpcyk7CiAgICAgR1BSUmVnIGVxR1BSID0gZXEuZ3ByKCk7CiAK
LSAgICAvLyBGZXRjaCB0aGUgbGVuZ3RoIGZpZWxkIGZyb20gdGhlIHN0cmluZyBvYmplY3QuCi0g
ICAgbV9qaXQudGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzdHJHUFIsIEpTU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMigtMSksIGVxR1BSKTsKKyAgICBhdXRvIGlzUm9wZSA9IG1faml0LmJyYW5j
aElmUm9wZShzdHJHUFIpOworICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
c3RyR1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgZXFHUFIpOworICAgIG1faml0LnRl
c3QzMihKSVRDb21waWxlcjo6WmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3MoZXFHUFIsIFN0cmlu
Z0ltcGw6Omxlbmd0aE1lbW9yeU9mZnNldCgpKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMigt
MSksIGVxR1BSKTsKKyAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisKKyAgICBpc1JvcGUu
bGluaygmbV9qaXQpOworICAgIG1faml0LnRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RyR1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mTGVuZ3Ro
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKC0xKSwgZXFHUFIpOwogCisgICAgZG9u
ZS5saW5rKCZtX2ppdCk7CiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChlcUdQUiwgbm9kZSk7
CiB9CiAKQEAgLTY2NTUsMTUgKzY3MzQsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUxvZ2ljYWxOb3RTdHJpbmdPck90aGVyKE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIGNlbGxHUFIg
PSB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpOwogICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICB2
YWx1ZVJlZ3MsIG5vZGUtPmNoaWxkMSgpLCAoflNwZWNDZWxsQ2hlY2spIHwgU3BlY1N0cmluZywg
bV9qaXQuYnJhbmNoSWZOb3RTdHJpbmcoY2VsbEdQUikpOworCisgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCBkb25lQ2FzZXM7CisgICAgYXV0byBpc1JvcGUgPSBtX2ppdC5icmFuY2hJZlJvcGUo
Y2VsbEdQUik7CisgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhjZWxsR1BS
LCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgdGVtcEdQUik7CisgICAgbV9qaXQudGVzdDMy
KEpJVENvbXBpbGVyOjpaZXJvLCBKSVRDb21waWxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJpbmdJ
bXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoLTEp
LCB0ZW1wR1BSKTsKKyAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisKKyAgICBp
c1JvcGUubGluaygmbV9qaXQpOwogICAgIG1faml0LnRlc3QzMigKLSAgICAgICAgSklUQ29tcGls
ZXI6Olplcm8sIEpJVENvbXBpbGVyOjpBZGRyZXNzKGNlbGxHUFIsIEpTU3RyaW5nOjpvZmZzZXRP
Zkxlbmd0aCgpKSwKKyAgICAgICAgSklUQ29tcGlsZXI6Olplcm8sIEpJVENvbXBpbGVyOjpBZGRy
ZXNzKGNlbGxHUFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSksCiAgICAgICAgIEpJ
VENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoLTEpLCB0ZW1wR1BSKTsKLSAgICBKSVRDb21waWxlcjo6
SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOworICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVt
cCgpKTsKKwogICAgIG5vdENlbGwubGluaygmbV9qaXQpOwogICAgIERGR19UWVBFX0NIRUNLKAog
ICAgICAgICB2YWx1ZVJlZ3MsIG5vZGUtPmNoaWxkMSgpLCBTcGVjQ2VsbENoZWNrIHwgU3BlY090
aGVyLCBtX2ppdC5icmFuY2hJZk5vdE90aGVyKHZhbHVlUmVncywgdGVtcEdQUikpOwogICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbTMyKDEpLCB0ZW1wR1BSKTsKLSAgICBkb25lLmxpbmsoJm1faml0
KTsKKyAgICBkb25lQ2FzZXMubGluaygmbV9qaXQpOwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJl
c3VsdCh0ZW1wR1BSLCBub2RlKTsKIApAQCAtNjY3Miw5ICs2NzYwLDI0IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90U3RyaW5nT3JPdGhlcihOb2RlKiBub2RlKQogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN0cmluZ0JyYW5jaChFZGdlIG5vZGVVc2UsIEJhc2ljQmxv
Y2sqIHRha2VuLCBCYXNpY0Jsb2NrKiBub3RUYWtlbikKIHsKICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBzdHIodGhpcywgbm9kZVVzZSk7Ci0gICAgc3BlY3VsYXRlU3RyaW5nKG5vZGVVc2UsIHN0
ci5ncHIoKSk7Ci0gICAgYnJhbmNoVGVzdDMyKEpJVENvbXBpbGVyOjpOb25aZXJvLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzdHIuZ3ByKCksIEpTU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSwg
dGFrZW4pOworICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworCisgICAgR1BSUmVnIHN0ckdQ
UiA9IHN0ci5ncHIoKTsKKyAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisKKyAgICBz
cGVjdWxhdGVTdHJpbmcobm9kZVVzZSwgc3RyR1BSKTsKKworICAgIGF1dG8gaXNSb3BlID0gbV9q
aXQuYnJhbmNoSWZSb3BlKHN0ckdQUik7CisgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
QWRkcmVzcyhzdHJHUFIsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCB0ZW1wR1BSKTsKKyAg
ICBicmFuY2hUZXN0MzIoCisgICAgICAgIEpJVENvbXBpbGVyOjpaZXJvLCBKSVRDb21waWxlcjo6
QWRkcmVzcyh0ZW1wR1BSLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSksCisgICAg
ICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoLTEpLCBub3RUYWtlbik7CisgICAganVtcCh0
YWtlbiwgRm9yY2VKdW1wKTsKKworICAgIGlzUm9wZS5saW5rKCZtX2ppdCk7CisgICAgYnJhbmNo
VGVzdDMyKEpJVENvbXBpbGVyOjpOb25aZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJH
UFIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHRha2VuKTsKICAgICBqdW1wKG5v
dFRha2VuKTsKKwogICAgIG5vUmVzdWx0KG1fY3VycmVudE5vZGUpOwogfQogCkBAIC02Njg4LDEw
ICs2NzkxLDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTdHJpbmdPck90aGVyQnJhbmNo
KEVkZ2Ugbm9kZVVzZSwgQmFzaWNCbG9jayogdGFrZW4sIEJhCiAgICAgSklUQ29tcGlsZXI6Okp1
bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbCh2YWx1ZVJlZ3MpOwogICAgIEdQUlJl
ZyBjZWxsR1BSID0gdmFsdWVSZWdzLnBheWxvYWRHUFIoKTsKICAgICBERkdfVFlQRV9DSEVDSyh2
YWx1ZVJlZ3MsIG5vZGVVc2UsICh+U3BlY0NlbGxDaGVjaykgfCBTcGVjU3RyaW5nLCBtX2ppdC5i
cmFuY2hJZk5vdFN0cmluZyhjZWxsR1BSKSk7CisKKyAgICBhdXRvIGlzUm9wZSA9IG1faml0LmJy
YW5jaElmUm9wZShjZWxsR1BSKTsKKyAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKGNlbGxHUFIsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCB0ZW1wR1BSKTsKICAgICBi
cmFuY2hUZXN0MzIoCi0gICAgICAgIEpJVENvbXBpbGVyOjpaZXJvLCBKSVRDb21waWxlcjo6QWRk
cmVzcyhjZWxsR1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSksCisgICAgICAgIEpJVENv
bXBpbGVyOjpaZXJvLCBKSVRDb21waWxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJpbmdJbXBsOjps
ZW5ndGhNZW1vcnlPZmZzZXQoKSksCiAgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIo
LTEpLCBub3RUYWtlbik7CiAgICAganVtcCh0YWtlbiwgRm9yY2VKdW1wKTsKKworICAgIGlzUm9w
ZS5saW5rKCZtX2ppdCk7CisgICAgYnJhbmNoVGVzdDMyKAorICAgICAgICBKSVRDb21waWxlcjo6
WmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3MoY2VsbEdQUiwgSlNSb3BlU3RyaW5nOjpvZmZzZXRP
Zkxlbmd0aCgpKSwKKyAgICAgICAgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMigtMSksIG5vdFRh
a2VuKTsKKyAgICBqdW1wKHRha2VuLCBGb3JjZUp1bXApOworCisgICAganVtcCh0YWtlbiwgRm9y
Y2VKdW1wKTsKICAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKICAgICBERkdfVFlQRV9DSEVDSygK
ICAgICAgICAgdmFsdWVSZWdzLCBub2RlVXNlLCBTcGVjQ2VsbENoZWNrIHwgU3BlY090aGVyLCBt
X2ppdC5icmFuY2hJZk5vdE90aGVyKHZhbHVlUmVncywgdGVtcEdQUikpOwpAQCAtNjczNiwxMyAr
Njg1MCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0SW5kZXhlZFByb3BlcnR5
U3RvcmFnZShOb2RlKiBub2RlKQogICAgIAogICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCku
dHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheTo6U3RyaW5nOgotICAgICAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVl
KCkpLCBzdG9yYWdlUmVnKTsKLSAgICAgICAgCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAgIG1faml0LmJyYW5j
aFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgc3RvcmFnZVJlZyksCisgICAgICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoSWZSb3BlKGJhc2VSZWcpLAogICAgICAgICAgICAgICAgIHRoaXMsIG9w
ZXJhdGlvblJlc29sdmVSb3BlLCBzdG9yYWdlUmVnLCBiYXNlUmVnKSk7CiAKKyAgICAgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU1N0cmluZzo6b2Zm
c2V0T2ZWYWx1ZSgpKSwgc3RvcmFnZVJlZyk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgU3RyaW5nSW1wbDo6ZGF0YU9mZnNldCgpKSwg
c3RvcmFnZVJlZyk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKQEAgLTY5OTgsNyArNzExMSwx
NSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9k
ZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAgICAg
ICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsK
KyAgICAgICAgYXV0byBpc1JvcGUgPSBtX2ppdC5icmFuY2hJZlJvcGUoYmFzZUdQUik7CisgICAg
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNTdHJp
bmc6Om9mZnNldE9mVmFsdWUoKSksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cmluZ0ltcGw6Omxlbmd0aE1lbW9y
eU9mZnNldCgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgYXV0byBkb25lID0gbV9qaXQuanVtcCgp
OworCisgICAgICAgIGlzUm9wZS5saW5rKCZtX2ppdCk7CisgICAgICAgIG1faml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mTGVu
Z3RoKCkpLCByZXN1bHRHUFIpOworCisgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAg
ICBpbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkBA
IC0xMDE0MCwxMyArMTAyNjEsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3Ry
aW5nT3JPdGhlcihFZGdlIGVkZ2UpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJp
bmdJZGVudEFuZExvYWRTdG9yYWdlKEVkZ2UgZWRnZSwgR1BSUmVnIHN0cmluZywgR1BSUmVnIHN0
b3JhZ2UpCiB7CiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJp
bmcsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBzdG9yYWdlKTsKLSAgICAKKwogICAgIGlm
ICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY1N0cmluZ0lkZW50IHwgflNwZWNTdHJpbmcpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICBCYWRUeXBl
LCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChzdHJpbmcpLCBlZGdlLAotICAgICAgICBtX2pp
dC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzdG9yYWdlKSk7CisgICAgICAg
IG1faml0LmJyYW5jaElmUm9wZShzdHJpbmcpKTsKICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAg
ICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChzdHJpbmcpLCBlZGdlLCBt
X2ppdC5icmFuY2hUZXN0MzIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywKQEAg
LTEwNTQ3LDE5ICsxMDY2OCwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW1t
KE5vZGUqIG5vZGUsIFN3aXRjaERhdGEqIGRhdGEpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
U3dpdGNoQ2hhclN0cmluZ0p1bXAoCiAgICAgU3dpdGNoRGF0YSogZGF0YSwgR1BSUmVnIHZhbHVl
LCBHUFJSZWcgc2NyYXRjaCwgR1BSUmVnIHNjcmF0Y2gyKQogeworICAgIGF1dG8gaXNSb3BlID0g
bV9qaXQuYnJhbmNoSWZSb3BlKHZhbHVlKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModmFsdWUsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBzY3JhdGNo
KTsKKwogICAgIGFkZEJyYW5jaCgKICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyh2YWx1ZSwgSlNTdHJpbmc6Om9mZnNldE9mTGVuZ3RoKCkpLAorICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaCwgU3RyaW5nSW1wbDo6bGVuZ3RoTWVtb3J5
T2Zmc2V0KCkpLAogICAgICAgICAgICAgVHJ1c3RlZEltbTMyKDEpKSwKICAgICAgICAgZGF0YS0+
ZmFsbFRocm91Z2guYmxvY2spOwogICAgIAotICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3ModmFsdWUsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBzY3JhdGNoKTsK
LSAgICAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgc2xvd1BhdGhDYWxsKAot
ICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2Ny
YXRjaCksCi0gICAgICAgICAgICB0aGlzLCBvcGVyYXRpb25SZXNvbHZlUm9wZSwgc2NyYXRjaCwg
dmFsdWUpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoaXNSb3BlLCB0
aGlzLCBvcGVyYXRpb25SZXNvbHZlUm9wZSwgc2NyYXRjaCwgdmFsdWUpKTsKICAgICAKICAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2gsIFN0cmluZ0ltcGw6
OmRhdGFPZmZzZXQoKSksIHZhbHVlKTsKICAgICAKQEAgLTEwODA2LDExICsxMDkyNiwxMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoU3RyaW5nT25TdHJpbmcoU3dpdGNoRGF0YSog
ZGF0YSwgR1BSUmVnIHN0cmluZykKICAgICBHUFJSZWcgbGVuZ3RoR1BSID0gbGVuZ3RoLmdwcigp
OwogICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKICAgICAKLSAgICBtX2ppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RyaW5nLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5n
dGgoKSksIGxlbmd0aEdQUik7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNl
czsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmUm9wZShzdHJpbmcpKTsKICAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cmluZywgSlNTdHJpbmc6
Om9mZnNldE9mVmFsdWUoKSksIHRlbXBHUFIpOworICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSks
IGxlbmd0aEdQUik7CiAgICAgCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNl
czsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJs
ZXI6Olplcm8sIHRlbXBHUFIpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRl
c3QzMigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
aW5kZXggNGRmZTljOTIzMjFkNzUzZDE3ODE0OGY0ZWQzNWY4OTczZjNlNmY1Mi4uZmY4ZTliN2Qx
NWI3ZjZhMjNkMGQ1ZDczYjgzNDM4ZTBjMGViM2VjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0zODc5LDggKzM4
NzksOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBTdHJpbmdVc2U6IHsKICAgICAgICAgICAgIHNwZWN1bGF0ZVN0cmlu
Zyhub2RlLT5jaGlsZDIoKSwga2V5UmVncy5wYXlsb2FkR1BSKCkpOworICAgICAgICAgICAgc2xv
d1BhdGguYXBwZW5kKG1faml0LmJyYW5jaElmUm9wZShrZXlSZWdzLnBheWxvYWRHUFIoKSkpOwog
ICAgICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhrZXlSZWdz
LnBheWxvYWRHUFIoKSwgSlNTdHJpbmc6Om9mZnNldE9mVmFsdWUoKSksIGltcGxHUFIpOwotICAg
ICAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJs
ZXI6Olplcm8sIGltcGxHUFIpKTsKICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5i
cmFuY2hUZXN0MzIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGltcGxHUFIsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLAog
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoU3RyaW5nSW1wbDo6
ZmxhZ0lzQXRvbWljKCkpKSk7CkBAIC0zODg5LDggKzM4ODksOCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNhc2UgVW50eXBlZFVzZTogewogICAg
ICAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChrZXlSZWdzKSk7
CiAgICAgICAgICAgICBhdXRvIGlzTm90U3RyaW5nID0gbV9qaXQuYnJhbmNoSWZOb3RTdHJpbmco
a2V5UmVncy5wYXlsb2FkR1BSKCkpOworICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0
LmJyYW5jaElmUm9wZShrZXlSZWdzLnBheWxvYWRHUFIoKSkpOwogICAgICAgICAgICAgbV9qaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhrZXlSZWdzLnBheWxvYWRHUFIoKSwgSlNT
dHJpbmc6Om9mZnNldE9mVmFsdWUoKSksIGltcGxHUFIpOwotICAgICAgICAgICAgc2xvd1BhdGgu
YXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGltcGxHUFIp
KTsKICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIoCiAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGltcGxHUFIsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLAogICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoU3RyaW5nSW1wbDo6ZmxhZ0lzQXRvbWljKCkpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAppbmRleCA3ZjllMzgxYjc1NWQyNjRjYTc1ZTNlN2RjYWNhODBjODc0MWRkZTY2Li41MzdhM2Y0
OWU4NzE1OTBhNjM5ZGEwM2E3MzgxN2YwZWIwYjg1ZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTM5OTksOCArMzk5OSw4
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
ICAgICBpc1N0cmluZy5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAg
IHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hJZlJvcGUoaW5wdXRHUFIpKTsKICAgICAgICAg
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoaW5wdXRHUFIsIEpTU3Ry
aW5nOjpvZmZzZXRPZlZhbHVlKCkpLCByZXN1bHRHUFIpOwotICAgICAgICAgICAgc2xvd1BhdGgu
YXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJlc3VsdEdQ
UikpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiwgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIHJlc3VsdEdQUik7CiAgICAgICAg
ICAgICBtX2ppdC51cnNoaWZ0MzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihTdHJpbmdJ
bXBsOjpzX2ZsYWdDb3VudCksIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBzbG93UGF0aC5hcHBl
bmQobV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHRHUFIpKTsK
QEAgLTQwMzcsOCArNDAzNyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgc3RyYWlnaHRIYXNoLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwo
aW5wdXRHUFIpKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwog
ICAgICAgICBzdHJhaWdodEhhc2guYXBwZW5kKG1faml0LmJyYW5jaElmTm90U3RyaW5nKGlucHV0
R1BSKSk7CisgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hJZlJvcGUoaW5wdXRH
UFIpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhpbnB1
dEdQUiwgSlNTdHJpbmc6Om9mZnNldE9mVmFsdWUoKSksIHJlc3VsdEdQUik7Ci0gICAgICAgIHNs
b3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBy
ZXN1bHRHUFIpKTsKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHJlc3VsdEdQUiwgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIHJlc3VsdEdQUik7CiAgICAg
ICAgIG1faml0LnVyc2hpZnQzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFN0cmluZ0lt
cGw6OnNfZmxhZ0NvdW50KSwgcmVzdWx0R1BSKTsKICAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1f
aml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0R1BSKSk7CkBAIC00
NDExLDggKzQ0MTEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBTdHJpbmdVc2U6IHsKICAgICAgICAgICAgIHNwZWN1
bGF0ZVN0cmluZyhub2RlLT5jaGlsZDIoKSwga2V5R1BSKTsKKyAgICAgICAgICAgIHNsb3dQYXRo
LmFwcGVuZChtX2ppdC5icmFuY2hJZlJvcGUoa2V5R1BSKSk7CiAgICAgICAgICAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGtleUdQUiwgSlNTdHJpbmc6Om9mZnNldE9m
VmFsdWUoKSksIGltcGxHUFIpOwotICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJy
YW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGltcGxHUFIpKTsKICAgICAgICAgICAg
IHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIoCiAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGltcGxHUFIsIFN0cmlu
Z0ltcGw6OmZsYWdzT2Zmc2V0KCkpLAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoU3RyaW5nSW1wbDo6ZmxhZ0lzQXRvbWljKCkpKSk7CkBAIC00NDIxLDggKzQ0
MjEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IGNhc2UgVW50eXBlZFVzZTogewogICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJy
YW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhrZXlHUFIpKSk7CiAgICAgICAgICAgICBhdXRvIGlz
Tm90U3RyaW5nID0gbV9qaXQuYnJhbmNoSWZOb3RTdHJpbmcoa2V5R1BSKTsKKyAgICAgICAgICAg
IHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hJZlJvcGUoa2V5R1BSKSk7CiAgICAgICAgICAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGtleUdQUiwgSlNTdHJpbmc6
Om9mZnNldE9mVmFsdWUoKSksIGltcGxHUFIpOwotICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5k
KG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGltcGxHUFIpKTsKICAg
ICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIoCiAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGltcGxH
UFIsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLAogICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoU3RyaW5nSW1wbDo6ZmxhZ0lzQXRvbWljKCkpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmNwcAppbmRleCBjMDM1MTEyNTgwYzZiOGEyOTU4OTY1NjU0YmMxYzgxZWQ3YWU5N2Q1Li5l
YmE2YmY5YmUxOTNhMWQ5MTE2MjY5ODAzOGVlYjU5NWU1ZDk2MGU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAK
QEAgLTYwLDggKzYwLDYgQEAgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6QWJzdHJhY3RIZWFwUmVw
b3NpdG9yeSgpCiAgICAgLCBKU0NlbGxfZnJlZUxpc3ROZXh0KEpTQ2VsbF9oZWFkZXIpCiAgICAg
LCBBcnJheVN0b3JhZ2VfcHVibGljTGVuZ3RoKEJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpCiAgICAg
LCBBcnJheVN0b3JhZ2VfdmVjdG9yTGVuZ3RoKEJ1dHRlcmZseV92ZWN0b3JMZW5ndGgpCi0gICAg
LCBKU0JpZ0ludF9sZW5ndGgoSlNCaWdJbnRPclN0cmluZ19sZW5ndGgpCi0gICAgLCBKU1N0cmlu
Z19sZW5ndGgoSlNCaWdJbnRPclN0cmluZ19sZW5ndGgpCiAgICAgCiAjZGVmaW5lIElOREVYRURf
QUJTVFJBQ1RfSEVBUF9JTklUSUFMSVpBVElPTihuYW1lLCBvZmZzZXQsIHNpemUpICwgbmFtZSgm
cm9vdCwgI25hbWUsIG9mZnNldCwgc2l6ZSkKICAgICBGT1JfRUFDSF9JTkRFWEVEX0FCU1RSQUNU
X0hFQVAoSU5ERVhFRF9BQlNUUkFDVF9IRUFQX0lOSVRJQUxJWkFUSU9OKQpAQCAtNzksOCArNzcs
NiBAQCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCkKICAg
ICBSRUxFQVNFX0FTU0VSVChKU0NlbGxfaW5kZXhpbmdUeXBlQW5kTWlzYy5vZmZzZXQoKSArIDIg
PT0gSlNDZWxsX3R5cGVJbmZvRmxhZ3Mub2Zmc2V0KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKEpT
Q2VsbF9pbmRleGluZ1R5cGVBbmRNaXNjLm9mZnNldCgpICsgMyA9PSBKU0NlbGxfY2VsbFN0YXRl
Lm9mZnNldCgpKTsKIAotICAgIFJFTEVBU0VfQVNTRVJUKEpTQmlnSW50OjpvZmZzZXRPZkxlbmd0
aCgpID09IEpTU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKTsKLQogICAgIEpTQ2VsbF9zdHJ1Y3R1
cmVJRC5jaGFuZ2VQYXJlbnQoJkpTQ2VsbF9oZWFkZXIpOwogICAgIEpTQ2VsbF91c2VmdWxCeXRl
cy5jaGFuZ2VQYXJlbnQoJkpTQ2VsbF9oZWFkZXIpOwogICAgIEpTQ2VsbF9pbmRleGluZ1R5cGVB
bmRNaXNjLmNoYW5nZVBhcmVudCgmSlNDZWxsX3VzZWZ1bEJ5dGVzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKaW5kZXgg
ZTUwNTQxYmE1MjZiMDY2ODJkMDA1M2Y1NDZiZWEyZGUyYWJkNTMyYS4uMjY2ZjY3YjMwYjEwNTBh
OThiZTMxYTQ1ZWQ4MmIzZjg0OGRhNzJjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKQEAgLTY0LDcgKzY0LDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJW
aWV3X2xlbmd0aCwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpIFwKICAgICBt
YWNybyhKU0FycmF5QnVmZmVyVmlld19tb2RlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZN
b2RlKCkpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld192ZWN0b3IsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSBcCi0gICAgbWFjcm8oSlNCaWdJbnRPclN0cmluZ19s
ZW5ndGgsIEpTQmlnSW50OjpvZmZzZXRPZkxlbmd0aCgpKSBcCisgICAgbWFjcm8oSlNCaWdJbnRf
bGVuZ3RoLCBKU0JpZ0ludDo6b2Zmc2V0T2ZMZW5ndGgoKSkgXAogICAgIG1hY3JvKEpTQ2VsbF9j
ZWxsU3RhdGUsIEpTQ2VsbDo6Y2VsbFN0YXRlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhKU0NlbGxf
aGVhZGVyLCAwKSBcCiAgICAgbWFjcm8oSlNDZWxsX2luZGV4aW5nVHlwZUFuZE1pc2MsIEpTQ2Vs
bDo6aW5kZXhpbmdUeXBlQW5kTWlzY09mZnNldCgpKSBcCkBAIC04OCw4ICs4OCw5IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3JfZW5kR2VuZXJpY1Byb3BlcnR5SW5kZXgsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6
ZW5kR2VuZXJpY1Byb3BlcnR5SW5kZXhPZmZzZXQoKSkgXAogICAgIG1hY3JvKEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvcl9lbmRTdHJ1Y3R1cmVQcm9wZXJ0eUluZGV4LCBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3I6OmVuZFN0cnVjdHVyZVByb3BlcnR5SW5kZXhPZmZzZXQoKSkgXAogICAgIG1hY3Jv
KEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcl9pbmRleExlbmd0aCwgSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yOjppbmRleGVkTGVuZ3RoT2Zmc2V0KCkpIFwKKyAgICBtYWNybyhKU1JvcGVTdHJpbmdf
ZmxhZ3MsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGbGFncygpKSBcCisgICAgbWFjcm8oSlNSb3Bl
U3RyaW5nX2xlbmd0aCwgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSBcCiAgICAgbWFj
cm8oSlNTY29wZV9uZXh0LCBKU1Njb3BlOjpvZmZzZXRPZk5leHQoKSkgXAotICAgIG1hY3JvKEpT
U3RyaW5nX2ZsYWdzLCBKU1N0cmluZzo6b2Zmc2V0T2ZGbGFncygpKSBcCiAgICAgbWFjcm8oSlNT
dHJpbmdfdmFsdWUsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpIFwKICAgICBtYWNybyhKU1N5
bWJvbFRhYmxlT2JqZWN0X3N5bWJvbFRhYmxlLCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpvZmZzZXRP
ZlN5bWJvbFRhYmxlKCkpIFwKICAgICBtYWNybyhKU1dyYXBwZXJPYmplY3RfaW50ZXJuYWxWYWx1
ZSwgSlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlT2Zmc2V0KCkpIFwKQEAgLTE4MCw4ICsx
ODEsNiBAQCBjbGFzcyBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5IHsKICAgICBBYnN0cmFjdEhlYXAm
IEpTQ2VsbF9mcmVlTGlzdE5leHQ7CiAgICAgQWJzdHJhY3RIZWFwJiBBcnJheVN0b3JhZ2VfcHVi
bGljTGVuZ3RoOwogICAgIEFic3RyYWN0SGVhcCYgQXJyYXlTdG9yYWdlX3ZlY3Rvckxlbmd0aDsK
LSAgICBBYnN0cmFjdEhlYXAmIEpTQmlnSW50X2xlbmd0aDsKLSAgICBBYnN0cmFjdEhlYXAmIEpT
U3RyaW5nX2xlbmd0aDsKICAgICAKICNkZWZpbmUgSU5ERVhFRF9BQlNUUkFDVF9IRUFQX0RFQ0xB
UkFUSU9OKG5hbWUsIG9mZnNldCwgc2l6ZSkgSW5kZXhlZEFic3RyYWN0SGVhcCBuYW1lOwogICAg
IEZPUl9FQUNIX0lOREVYRURfQUJTVFJBQ1RfSEVBUChJTkRFWEVEX0FCU1RSQUNUX0hFQVBfREVD
TEFSQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggYzEwZWY2ZDNlODIzZmYzYzljNDU4NWEyNGRmNTFmMTc4MGNjZmNhYS4uZDA1MDhh
ZmEzMjFhOTVkYTY0YjhjNmI3YWVjMDZhZGYwZTY0Njc0MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMzY0OSw4ICszNjQ5LDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIExWYWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBt
X291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNTdHJpbmdfdmFsdWUpOwogICAgICAgICAgICAg
VmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUp
OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAg
ICAgbV9vdXQubm90TnVsbChmYXN0UmVzdWx0VmFsdWUpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbiks
IHJhcmVseShzbG93UGF0aCkpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzUm9wZShjZWxs
LCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgcmFyZWx5KHNsb3dQYXRoKSwgdXN1YWxs
eShjb250aW51YXRpb24pKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sg
bGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsKICAgICAg
ICAgICAgIApAQCAtMzgyMiw3ICszODIxLDIzIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBBcnJheTo6U3RyaW5nOiB7CiAgICAgICAgICAgICBMVmFs
dWUgc3RyaW5nID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIHNldElu
dDMyKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHN0cmluZywgbV9oZWFwcy5KU1N0cmluZ19sZW5n
dGgpKTsKKworICAgICAgICAgICAgTEJhc2ljQmxvY2sgcm9wZVBhdGggPSBtX291dC5uZXdCbG9j
aygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm9uUm9wZVBhdGggPSBtX291dC5uZXdCbG9j
aygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3Qmxv
Y2soKTsKKworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzUm9wZShzdHJpbmcsIHByb3ZlblR5
cGUobV9ub2RlLT5jaGlsZDEoKSkpLCByYXJlbHkocm9wZVBhdGgpLCB1c3VhbGx5KG5vblJvcGVQ
YXRoKSk7CisKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5k
VG8ocm9wZVBhdGgsIG5vblJvcGVQYXRoKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJv
cGVMZW5ndGggPSBtX291dC5hbmNob3IobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoc3RyaW5nLCBt
X2hlYXBzLkpTUm9wZVN0cmluZ19sZW5ndGgpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm9uUm9wZVBhdGgsIGNv
bnRpbnVhdGlvbik7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBub25Sb3BlTGVuZ3RoID0g
bV9vdXQuYW5jaG9yKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKG1fb3V0LmxvYWRQdHIoc3RyaW5n
LCBtX2hlYXBzLkpTU3RyaW5nX3ZhbHVlKSwgbV9oZWFwcy5TdHJpbmdJbXBsX2xlbmd0aCkpOwor
ICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgIHNldEludDMy
KG1fb3V0LnBoaShJbnQzMiwgcm9wZUxlbmd0aCwgbm9uUm9wZUxlbmd0aCkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTY0NTUsMTcgKzY0NzAsMzIg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAKICAgICB2b2lkIGNvbXBpbGVNYWtlUm9wZSgp
CiAgICAgeworICAgICAgICBFZGdlIGVkZ2VzWzNdID0geworICAgICAgICAgICAgbV9ub2RlLT5j
aGlsZDEoKSwKKyAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGQyKCksCisgICAgICAgICAgICBtX25v
ZGUtPmNoaWxkMygpLAorICAgICAgICB9OwogICAgICAgICBMVmFsdWUga2lkc1szXTsKKyAgICAg
ICAgTEJhc2ljQmxvY2sgcm9wZUNhc2VbM10gPSB7IH07CisgICAgICAgIExCYXNpY0Jsb2NrIG5v
dFJvcGVDYXNlWzNdID0geyB9OworICAgICAgICBMQmFzaWNCbG9jayBtZXJnZUNhc2VbM10gPSB7
IH07CisKICAgICAgICAgdW5zaWduZWQgbnVtS2lkczsKLSAgICAgICAga2lkc1swXSA9IGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIGtpZHNbMV0gPSBsb3dDZWxsKG1fbm9kZS0+
Y2hpbGQyKCkpOwotICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDMoKSkgewotICAgICAgICAgICAg
a2lkc1syXSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDMoKSk7CisgICAgICAgIGtpZHNbMF0gPSBs
b3dDZWxsKGVkZ2VzWzBdKTsKKyAgICAgICAga2lkc1sxXSA9IGxvd0NlbGwoZWRnZXNbMV0pOwor
ICAgICAgICBpZiAoZWRnZXNbMl0pIHsKKyAgICAgICAgICAgIGtpZHNbMl0gPSBsb3dDZWxsKGVk
Z2VzWzJdKTsKICAgICAgICAgICAgIG51bUtpZHMgPSAzOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAga2lkc1syXSA9IDA7CiAgICAgICAgICAgICBudW1LaWRzID0gMjsKICAgICAgICAg
fQorCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1LaWRzOyArK2kpIHsKKyAg
ICAgICAgICAgIHJvcGVDYXNlW2ldID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIG5v
dFJvcGVDYXNlW2ldID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIG1lcmdlQ2FzZVtp
XSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIExCYXNp
Y0Jsb2NrIHNsb3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sg
Y29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTY0NzcsMjQgKzY1MDcsNTUgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGFsbG9jYXRlQ2Vs
bCgKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvci5sb2NhbEFsbG9jYXRv
cigpKSwgdm0oKS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCksIHNsb3dQYXRoKTsKICAgICAgICAgCisg
ICAgICAgIFN0cnVjdHVyZUlEQmxvYiByb3BlQmxvYihtX2dyYXBoLnN0cmluZ1N0cnVjdHVyZS0+
aWQoKSwgbV9ncmFwaC5zdHJpbmdTdHJ1Y3R1cmUtPmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3Rv
cnkoKSwgVHlwZUluZm8oU3RyaW5nVHlwZSwgSlNSb3BlU3RyaW5nOjpTdHJ1Y3R1cmVGbGFncyB8
IFR5cGVJbmZvUGVyQ2VsbEJpdCkpOworICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0
SW50MzIocm9wZUJsb2IuYmxvYkV4Y2x1ZGluZ1N0cnVjdHVyZUlEKCkpLCByZXN1bHQsIG1faGVh
cHMuSlNDZWxsX3VzZWZ1bEJ5dGVzKTsKICAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuaW50
UHRyWmVybywgcmVzdWx0LCBtX2hlYXBzLkpTU3RyaW5nX3ZhbHVlKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bUtpZHM7ICsraSkKICAgICAgICAgICAgIG1fb3V0LnN0b3Jl
UHRyKGtpZHNbaV0sIHJlc3VsdCwgbV9oZWFwcy5KU1JvcGVTdHJpbmdfZmliZXJzW2ldKTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtS2lkczsgaSA8IEpTUm9wZVN0cmluZzo6c19tYXhJ
bnRlcm5hbFJvcGVMZW5ndGg7ICsraSkKICAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0
LmludFB0clplcm8sIHJlc3VsdCwgbV9oZWFwcy5KU1JvcGVTdHJpbmdfZmliZXJzW2ldKTsKLSAg
ICAgICAgTFZhbHVlIGZsYWdzID0gbV9vdXQubG9hZDE2WmVyb0V4dDMyKGtpZHNbMF0sIG1faGVh
cHMuSlNTdHJpbmdfZmxhZ3MpOwotICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDMy
KGtpZHNbMF0sIG1faGVhcHMuSlNTdHJpbmdfbGVuZ3RoKTsKKworICAgICAgICBtX291dC5icmFu
Y2goaXNSb3BlKGtpZHNbMF0sIHByb3ZlblR5cGUoZWRnZXNbMF0pKSwgdW5zdXJlKHJvcGVDYXNl
WzBdKSwgdW5zdXJlKG5vdFJvcGVDYXNlWzBdKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
cm9wZUNhc2VbMF0sIG5vdFJvcGVDYXNlWzBdKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmxh
Z3NGb3JSb3BlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmxvYWQzMihraWRzWzBdLCBtX2hlYXBzLkpT
Um9wZVN0cmluZ19mbGFncykpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBsZW5ndGhGb3JSb3Bl
ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmxvYWQzMihraWRzWzBdLCBtX2hlYXBzLkpTUm9wZVN0cmlu
Z19sZW5ndGgpKTsKKyAgICAgICAgbV9vdXQuanVtcChtZXJnZUNhc2VbMF0pOworCisgICAgICAg
IG1fb3V0LmFwcGVuZFRvKG5vdFJvcGVDYXNlWzBdLCBtZXJnZUNhc2VbMF0pOworICAgICAgICBM
VmFsdWUgc3RyaW5nSW1wbCA9IG1fb3V0LmxvYWRQdHIoa2lkc1swXSwgbV9oZWFwcy5KU1N0cmlu
Z192YWx1ZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZsYWdzRm9yTm9uUm9wZSA9IG1fb3V0
LmFuY2hvcihtX291dC5sb2FkMzIoc3RyaW5nSW1wbCwgbV9oZWFwcy5TdHJpbmdJbXBsX2hhc2hB
bmRGbGFncykpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBsZW5ndGhGb3JOb25Sb3BlID0gbV9v
dXQuYW5jaG9yKG1fb3V0LmxvYWQzMihzdHJpbmdJbXBsLCBtX2hlYXBzLlN0cmluZ0ltcGxfaGFz
aEFuZEZsYWdzKSk7CisgICAgICAgIG1fb3V0Lmp1bXAobWVyZ2VDYXNlWzBdKTsKKworICAgICAg
ICBtX291dC5hcHBlbmRUbyhtZXJnZUNhc2VbMF0sIHJvcGVDYXNlWzFdKTsKKyAgICAgICAgTFZh
bHVlIGZsYWdzID0gbV9vdXQucGhpKEludDMyLCBmbGFnc0ZvclJvcGUsIGZsYWdzRm9yTm9uUm9w
ZSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5waGkoSW50MzIsIGxlbmd0aEZvclJv
cGUsIGxlbmd0aEZvck5vblJvcGUpOworCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkg
PCBudW1LaWRzOyArK2kpIHsKLSAgICAgICAgICAgIGZsYWdzID0gbV9vdXQuYml0QW5kKGZsYWdz
LCBtX291dC5sb2FkMTZaZXJvRXh0MzIoa2lkc1tpXSwgbV9oZWFwcy5KU1N0cmluZ19mbGFncykp
OwotICAgICAgICAgICAgQ2hlY2tWYWx1ZSogbGVuZ3RoQ2hlY2sgPSBtX291dC5zcGVjdWxhdGVB
ZGQoCi0gICAgICAgICAgICAgICAgbGVuZ3RoLCBtX291dC5sb2FkMzIoa2lkc1tpXSwgbV9oZWFw
cy5KU1N0cmluZ19sZW5ndGgpKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc1JvcGUoa2lk
c1tpXSwgcHJvdmVuVHlwZShlZGdlc1tpXSkpLCB1bnN1cmUocm9wZUNhc2VbaV0pLCB1bnN1cmUo
bm90Um9wZUNhc2VbaV0pKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8ocm9wZUNhc2Vb
aV0sIG5vdFJvcGVDYXNlW2ldKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZsYWdzRm9y
Um9wZSA9IG1fb3V0LmFuY2hvcihtX291dC5sb2FkMzIoa2lkc1tpXSwgbV9oZWFwcy5KU1JvcGVT
dHJpbmdfZmxhZ3MpKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGxlbmd0aEZvclJvcGUg
PSBtX291dC5hbmNob3IobV9vdXQubG9hZDMyKGtpZHNbaV0sIG1faGVhcHMuSlNSb3BlU3RyaW5n
X2xlbmd0aCkpOworICAgICAgICAgICAgbV9vdXQuanVtcChtZXJnZUNhc2VbaV0pOworCisgICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhub3RSb3BlQ2FzZVtpXSwgbWVyZ2VDYXNlW2ldKTsKKyAg
ICAgICAgICAgIExWYWx1ZSBzdHJpbmdJbXBsID0gbV9vdXQubG9hZFB0cihraWRzW2ldLCBtX2hl
YXBzLkpTU3RyaW5nX3ZhbHVlKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZsYWdzRm9y
Tm9uUm9wZSA9IG1fb3V0LmFuY2hvcihtX291dC5sb2FkMzIoc3RyaW5nSW1wbCwgbV9oZWFwcy5T
dHJpbmdJbXBsX2hhc2hBbmRGbGFncykpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbGVu
Z3RoRm9yTm9uUm9wZSA9IG1fb3V0LmFuY2hvcihtX291dC5sb2FkMzIoc3RyaW5nSW1wbCwgbV9o
ZWFwcy5TdHJpbmdJbXBsX2hhc2hBbmRGbGFncykpOworICAgICAgICAgICAgbV9vdXQuanVtcCht
ZXJnZUNhc2VbaV0pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhtZXJnZUNhc2VbaV0s
IChpICsgMSAhPSBudW1LaWRzKSA/IHJvcGVDYXNlW2kgKyAxXSA6IHNsb3dQYXRoKTsKKyAgICAg
ICAgICAgIGZsYWdzID0gbV9vdXQuYml0QW5kKGZsYWdzLCBtX291dC5waGkoSW50MzIsIGZsYWdz
Rm9yUm9wZSwgZmxhZ3NGb3JOb25Sb3BlKSk7CisgICAgICAgICAgICBDaGVja1ZhbHVlKiBsZW5n
dGhDaGVjayA9IG1fb3V0LnNwZWN1bGF0ZUFkZChsZW5ndGgsIG1fb3V0LnBoaShJbnQzMiwgbGVu
Z3RoRm9yUm9wZSwgbGVuZ3RoRm9yTm9uUm9wZSkpOwogICAgICAgICAgICAgYmxlc3NTcGVjdWxh
dGlvbihsZW5ndGhDaGVjaywgVW5jb3VudGFibGUsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vcmln
aW4pOwogICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoQ2hlY2s7CiAgICAgICAgIH0KLSAgICAg
ICAgbV9vdXQuc3RvcmUzMkFzMTYoCi0gICAgICAgICAgICBtX291dC5iaXRBbmQobV9vdXQuY29u
c3RJbnQzMihKU1N0cmluZzo6SXM4Qml0KSwgZmxhZ3MpLAotICAgICAgICAgICAgcmVzdWx0LCBt
X2hlYXBzLkpTU3RyaW5nX2ZsYWdzKTsKLSAgICAgICAgbV9vdXQuc3RvcmUzMihsZW5ndGgsIHJl
c3VsdCwgbV9oZWFwcy5KU1N0cmluZ19sZW5ndGgpOworICAgICAgICBtX291dC5zdG9yZTMyKAor
ICAgICAgICAgICAgbV9vdXQuYml0QW5kKG1fb3V0LmNvbnN0SW50MzIoSlNSb3BlU3RyaW5nOjpJ
czhCaXQpLCBmbGFncyksCisgICAgICAgICAgICByZXN1bHQsIG1faGVhcHMuSlNSb3BlU3RyaW5n
X2ZsYWdzKTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihsZW5ndGgsIHJlc3VsdCwgbV9oZWFwcy5K
U1JvcGVTdHJpbmdfbGVuZ3RoKTsKICAgICAgICAgCiAgICAgICAgIG11dGF0b3JGZW5jZSgpOwog
ICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHJlc3VsdCk7
CkBAIC02NTQxLDE1ICs2NjAyLDE0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIExC
YXNpY0Jsb2NrIHNsb3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxv
Y2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIAorICAgICAg
ICBMVmFsdWUgc3RyaW5nSW1wbCA9IG1fb3V0LmxvYWRQdHIoYmFzZSwgbV9oZWFwcy5KU1N0cmlu
Z192YWx1ZSk7CiAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgIG1fb3V0LmFib3Zl
T3JFcXVhbCgKLSAgICAgICAgICAgICAgICBpbmRleCwgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUo
YmFzZSwgbV9oZWFwcy5KU1N0cmluZ19sZW5ndGgpKSwKKyAgICAgICAgICAgICAgICBpbmRleCwg
bV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoc3RyaW5nSW1wbCwgbV9oZWFwcy5TdHJpbmdJbXBsX2xl
bmd0aCkpLAogICAgICAgICAgICAgcmFyZWx5KHNsb3dQYXRoKSwgdXN1YWxseShmYXN0UGF0aCkp
OwogICAgICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBw
ZW5kVG8oZmFzdFBhdGgsIHNsb3dQYXRoKTsKICAgICAgICAgICAgIAotICAgICAgICBMVmFsdWUg
c3RyaW5nSW1wbCA9IG1fb3V0LmxvYWRQdHIoYmFzZSwgbV9oZWFwcy5KU1N0cmluZ192YWx1ZSk7
Ci0gICAgICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgaXM4Qml0ID0gbV9vdXQubmV3Qmxv
Y2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgaXMxNkJpdCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAg
ICAgICAgIExCYXNpY0Jsb2NrIGJpdHNDb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwpA
QCAtNjY1MSwxMiArNjcxMSwxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBMVmFs
dWUgaW5kZXggPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgTFZhbHVlIHN0
b3JhZ2UgPSBsb3dTdG9yYWdlKG1fbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAKKyAgICAgICAg
TFZhbHVlIHN0cmluZ0ltcGwgPSBtX291dC5sb2FkUHRyKGJhc2UsIG1faGVhcHMuSlNTdHJpbmdf
dmFsdWUpOworCiAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgIFVuY291bnRhYmxlLCBu
b1ZhbHVlKCksIDAsCiAgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwoCi0gICAgICAgICAg
ICAgICAgaW5kZXgsIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGJhc2UsIG1faGVhcHMuSlNTdHJp
bmdfbGVuZ3RoKSkpOwotICAgICAgICAKLSAgICAgICAgTFZhbHVlIHN0cmluZ0ltcGwgPSBtX291
dC5sb2FkUHRyKGJhc2UsIG1faGVhcHMuSlNTdHJpbmdfdmFsdWUpOworICAgICAgICAgICAgICAg
IGluZGV4LCBtX291dC5sb2FkMzJOb25OZWdhdGl2ZShzdHJpbmdJbXBsLCBtX2hlYXBzLlN0cmlu
Z0ltcGxfbGVuZ3RoKSkpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAg
ICAgICAgbV9vdXQudGVzdElzWmVybzMyKApAQCAtODk1NSw5ICs5MDE1LDExIEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgICAgICAvLyBhbW9uZyB0aGUgZGlmZmVyZW50IGxvd2VyZWQg
YnJhbmNoZXMuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI5MDgyCiAgICAgICAgICAgICAKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBl
IHByb3ZlblR5cGVGb3JTdHJpbmcgPSBTcGVjTm9uZTsKICAgICAgICAgICAgIHN3aXRjaCAobV9u
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7
CiAgICAgICAgICAgICAgICAgc3RyaW5nVmFsdWUgPSBsb3dTdHJpbmcobV9ub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICAgICAgcHJvdmVuVHlwZUZvclN0cmluZyA9IHByb3ZlblR5cGUobV9u
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgCkBAIC04OTc5LDYgKzkwNDEsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzU3Ry
aW5nQ2FzZSwgbGFzdE5leHQpOwogICAgICAgICAgICAgICAgIHN0cmluZ1ZhbHVlID0gY2VsbFZh
bHVlOworICAgICAgICAgICAgICAgIHByb3ZlblR5cGVGb3JTdHJpbmcgPSBwcm92ZW5UeXBlKG1f
bm9kZS0+Y2hpbGQxKCkpICYgU3BlY1N0cmluZzsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKQEAgLTg5OTQsMjUgKzkwNTcsMjUgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGlzMTZCaXQgPSBtX291
dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9v
dXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sg
ZmFzdFZhbHVlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmxvYWRQdHIoc3RyaW5nVmFsdWUsIG1faGVh
cHMuSlNTdHJpbmdfdmFsdWUpKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAg
ICAgICAgICBpc1JvcGUoc3RyaW5nVmFsdWUsIHByb3ZlblR5cGVGb3JTdHJpbmcpLAorICAgICAg
ICAgICAgICAgIHJhcmVseShuZWVkUmVzb2x1dGlvbiksIHVzdWFsbHkocmVzb2x2ZWQpKTsKKwor
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhuZWVkUmVz
b2x1dGlvbiwgcmVzb2x2ZWQpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1ZhbHVl
ID0gbV9vdXQuYW5jaG9yKAorICAgICAgICAgICAgICAgIHZtQ2FsbChwb2ludGVyVHlwZSgpLCBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVzb2x2ZVJvcGUpLCBtX2NhbGxGcmFtZSwgc3RyaW5n
VmFsdWUpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAocmVzb2x2ZWQpOworCisgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhyZXNvbHZlZCwgbGVuZ3RoSXMxKTsKKyAgICAgICAgICAgIExWYWx1
ZSB2YWx1ZSA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0VmFsdWUsIHNsb3dWYWx1ZSk7
CiAgICAgICAgICAgICBtX291dC5icmFuY2goCiAgICAgICAgICAgICAgICAgbV9vdXQubm90RXF1
YWwoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHN0cmluZ1Zh
bHVlLCBtX2hlYXBzLkpTU3RyaW5nX2xlbmd0aCksCisgICAgICAgICAgICAgICAgICAgIG1fb3V0
LmxvYWQzMk5vbk5lZ2F0aXZlKHZhbHVlLCBtX2hlYXBzLlN0cmluZ0ltcGxfbGVuZ3RoKSwKICAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuaW50MzJPbmUpLAogICAgICAgICAgICAgICAgIHVuc3Vy
ZShsb3dCbG9jayhkYXRhLT5mYWxsVGhyb3VnaC5ibG9jaykpLCB1bnN1cmUobGVuZ3RoSXMxKSk7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQu
YXBwZW5kVG8obGVuZ3RoSXMxLCBuZWVkUmVzb2x1dGlvbik7Ci0gICAgICAgICAgICBWZWN0b3I8
VmFsdWVGcm9tQmxvY2ssIDI+IHZhbHVlczsKLSAgICAgICAgICAgIExWYWx1ZSBmYXN0VmFsdWUg
PSBtX291dC5sb2FkUHRyKHN0cmluZ1ZhbHVlLCBtX2hlYXBzLkpTU3RyaW5nX3ZhbHVlKTsKLSAg
ICAgICAgICAgIHZhbHVlcy5hcHBlbmQobV9vdXQuYW5jaG9yKGZhc3RWYWx1ZSkpOwotICAgICAg
ICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmlzTnVsbChmYXN0VmFsdWUpLCByYXJlbHkobmVlZFJl
c29sdXRpb24pLCB1c3VhbGx5KHJlc29sdmVkKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKG5lZWRSZXNvbHV0aW9uLCByZXNvbHZlZCk7Ci0gICAgICAgICAgICB2
YWx1ZXMuYXBwZW5kKG1fb3V0LmFuY2hvcigKLSAgICAgICAgICAgICAgICB2bUNhbGwocG9pbnRl
clR5cGUoKSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblJlc29sdmVSb3BlKSwgbV9jYWxsRnJh
bWUsIHN0cmluZ1ZhbHVlKSkpOwotICAgICAgICAgICAgbV9vdXQuanVtcChyZXNvbHZlZCk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHJlc29sdmVkLCBpczhCaXQp
OwotICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIHZh
bHVlcyk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlbmd0aElzMSwgaXM4Qml0KTsK
ICAgICAgICAgICAgIExWYWx1ZSBjaGFyYWN0ZXJEYXRhID0gbV9vdXQubG9hZFB0cih2YWx1ZSwg
bV9oZWFwcy5TdHJpbmdJbXBsX2RhdGEpOwogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAg
ICAgICAgICAgICAgIG1fb3V0LnRlc3ROb25aZXJvMzIoCkBAIC05NDE0LDE3ICs5NDc3LDE2IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHJldHVybiBrZXk7CiAgICAgfQogCi0gICAg
TFZhbHVlIG1hcEhhc2hTdHJpbmcoTFZhbHVlIHN0cmluZykKKyAgICBMVmFsdWUgbWFwSGFzaFN0
cmluZyhMVmFsdWUgc3RyaW5nLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAg
ICAgewogICAgICAgICBMQmFzaWNCbG9jayBub25FbXB0eVN0cmluZ0Nhc2UgPSBtX291dC5uZXdC
bG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAK
LSAgICAgICAgTFZhbHVlIHN0cmluZ0ltcGwgPSBtX291dC5sb2FkUHRyKHN0cmluZywgbV9oZWFw
cy5KU1N0cmluZ192YWx1ZSk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgIG1f
b3V0LmVxdWFsKHN0cmluZ0ltcGwsIG1fb3V0LmNvbnN0SW50UHRyKDApKSwgdW5zdXJlKHNsb3dD
YXNlKSwgdW5zdXJlKG5vbkVtcHR5U3RyaW5nQ2FzZSkpOworICAgICAgICBtX291dC5icmFuY2go
aXNSb3BlKHN0cmluZywgdHlwZSksIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkobm9uRW1wdHlT
dHJpbmdDYXNlKSk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBl
bmRUbyhub25FbXB0eVN0cmluZ0Nhc2UsIHNsb3dDYXNlKTsKKyAgICAgICAgTFZhbHVlIHN0cmlu
Z0ltcGwgPSBtX291dC5sb2FkUHRyKHN0cmluZywgbV9oZWFwcy5KU1N0cmluZ192YWx1ZSk7CiAg
ICAgICAgIExWYWx1ZSBoYXNoID0gbV9vdXQubFNocihtX291dC5sb2FkMzIoc3RyaW5nSW1wbCwg
bV9oZWFwcy5TdHJpbmdJbXBsX2hhc2hBbmRGbGFncyksIG1fb3V0LmNvbnN0SW50MzIoU3RyaW5n
SW1wbDo6c19mbGFnQ291bnQpKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9uRW1wdHlTdHJp
bmdIYXNoUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGhhc2gpOwogICAgICAgICBtX291dC5icmFuY2go
bV9vdXQuZXF1YWwoaGFzaCwgbV9vdXQuY29uc3RJbnQzMigwKSksCkBAIC05NDYzLDcgKzk1MjUs
NyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIGlzU3RyaW5nVmFsdWUs
IHVuc3VyZShpc1N0cmluZyksIHVuc3VyZShub3RTdHJpbmcpKTsKIAogICAgICAgICAgICAgTEJh
c2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc1N0cmluZywgbm90U3RyaW5nKTsK
LSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHN0cmluZ1Jlc3VsdCA9IG1fb3V0LmFuY2hvciht
YXBIYXNoU3RyaW5nKHZhbHVlKSk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzdHJpbmdS
ZXN1bHQgPSBtX291dC5hbmNob3IobWFwSGFzaFN0cmluZyh2YWx1ZSwgcHJvdmVuVHlwZShtX25v
ZGUtPmNoaWxkMSgpKSAmIFNwZWNTdHJpbmcpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90U3RyaW5nLCBjb250
aW51YXRpb24pOwpAQCAtOTQ3Nyw3ICs5NTM5LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAog
ICAgICAgICBjYXNlIFN0cmluZ1VzZTogewogICAgICAgICAgICAgTFZhbHVlIHN0cmluZyA9IGxv
d1N0cmluZyhtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIHNldEludDMyKG1hcEhhc2hT
dHJpbmcoc3RyaW5nKSk7CisgICAgICAgICAgICBzZXRJbnQzMihtYXBIYXNoU3RyaW5nKHN0cmlu
ZywgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTk1MDQsMTEgKzk1NjYsMTAgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgICAgIGlzU3RyaW5nLCB1bnN1cmUoaXNTdHJpbmdDYXNlKSwgdW5zdXJlKHN0cmFp
Z2h0SGFzaCkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzU3RyaW5nQ2FzZSwgbm9uRW1w
dHlTdHJpbmdDYXNlKTsKLSAgICAgICAgTFZhbHVlIHN0cmluZ0ltcGwgPSBtX291dC5sb2FkUHRy
KHZhbHVlLCBtX2hlYXBzLkpTU3RyaW5nX3ZhbHVlKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKAot
ICAgICAgICAgICAgbV9vdXQuZXF1YWwoc3RyaW5nSW1wbCwgbV9vdXQuY29uc3RJbnRQdHIoMCkp
LCByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KG5vbkVtcHR5U3RyaW5nQ2FzZSkpOworICAgICAg
ICBtX291dC5icmFuY2goaXNSb3BlKHZhbHVlKSwgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxseShu
b25FbXB0eVN0cmluZ0Nhc2UpKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhub25FbXB0eVN0
cmluZ0Nhc2UsIHN0cmFpZ2h0SGFzaCk7CisgICAgICAgIExWYWx1ZSBzdHJpbmdJbXBsID0gbV9v
dXQubG9hZFB0cih2YWx1ZSwgbV9oZWFwcy5KU1N0cmluZ192YWx1ZSk7CiAgICAgICAgIExWYWx1
ZSBoYXNoID0gbV9vdXQubFNocihtX291dC5sb2FkMzIoc3RyaW5nSW1wbCwgbV9oZWFwcy5TdHJp
bmdJbXBsX2hhc2hBbmRGbGFncyksIG1fb3V0LmNvbnN0SW50MzIoU3RyaW5nSW1wbDo6c19mbGFn
Q291bnQpKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9uRW1wdHlTdHJpbmdIYXNoUmVzdWx0
ID0gbV9vdXQuYW5jaG9yKGhhc2gpOwogICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwo
aGFzaCwgbV9vdXQuY29uc3RJbnQzMigwKSksCkBAIC0xMDEwNiwxMCArMTAxNjcsMTAgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGlzQXRvbWljU3RyaW5n
ID0gbV9vdXQubmV3QmxvY2soKTsKIAogICAgICAgICAgICAga2V5QXNWYWx1ZSA9IGxvd1N0cmlu
ZyhtX25vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgIHVuaXF1ZWRTdHJpbmdJbXBsID0gbV9v
dXQubG9hZFB0cihrZXlBc1ZhbHVlLCBtX2hlYXBzLkpTU3RyaW5nX3ZhbHVlKTsKLSAgICAgICAg
ICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3ROdWxsKHVuaXF1ZWRTdHJpbmdJbXBsKSwgdXN1YWxs
eShpc05vbkVtcHR5U3RyaW5nKSwgcmFyZWx5KHNsb3dDYXNlKSk7CisgICAgICAgICAgICBtX291
dC5icmFuY2goaXNOb3RSb3BlKGtleUFzVmFsdWUpLCB1c3VhbGx5KGlzTm9uRW1wdHlTdHJpbmcp
LCByYXJlbHkoc2xvd0Nhc2UpKTsKIAogICAgICAgICAgICAgbGFzdE5leHQgPSBtX291dC5hcHBl
bmRUbyhpc05vbkVtcHR5U3RyaW5nLCBpc0F0b21pY1N0cmluZyk7CisgICAgICAgICAgICB1bmlx
dWVkU3RyaW5nSW1wbCA9IG1fb3V0LmxvYWRQdHIoa2V5QXNWYWx1ZSwgbV9oZWFwcy5KU1N0cmlu
Z192YWx1ZSk7CiAgICAgICAgICAgICBMVmFsdWUgaXNOb3RBdG9taWMgPSBtX291dC50ZXN0SXNa
ZXJvMzIobV9vdXQubG9hZDMyKHVuaXF1ZWRTdHJpbmdJbXBsLCBtX2hlYXBzLlN0cmluZ0ltcGxf
aGFzaEFuZEZsYWdzKSwgbV9vdXQuY29uc3RJbnQzMihTdHJpbmdJbXBsOjpmbGFnSXNBdG9taWMo
KSkpOwogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90QXRvbWljLCByYXJlbHkoc2xvd0Nh
c2UpLCB1c3VhbGx5KGlzQXRvbWljU3RyaW5nKSk7CiAKQEAgLTEwMTM3LDExICsxMDE5OCwxMSBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzU3RyaW5n
KGtleUFzVmFsdWUpLCB1bnN1cmUoaXNTdHJpbmdDYXNlKSwgdW5zdXJlKG5vdFN0cmluZ0Nhc2Up
KTsKIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNTdHJpbmdDYXNlLCBpc05vbkVtcHR5
U3RyaW5nKTsKLSAgICAgICAgICAgIExWYWx1ZSBpbXBsRnJvbVN0cmluZyA9IG1fb3V0LmxvYWRQ
dHIoa2V5QXNWYWx1ZSwgbV9oZWFwcy5KU1N0cmluZ192YWx1ZSk7Ci0gICAgICAgICAgICBWYWx1
ZUZyb21CbG9jayBzdHJpbmdSZXN1bHQgPSBtX291dC5hbmNob3IoaW1wbEZyb21TdHJpbmcpOwot
ICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdE51bGwoaW1wbEZyb21TdHJpbmcpLCB1
c3VhbGx5KGlzTm9uRW1wdHlTdHJpbmcpLCByYXJlbHkoc2xvd0Nhc2UpKTsKKyAgICAgICAgICAg
IG1fb3V0LmJyYW5jaChpc05vdFJvcGUoa2V5QXNWYWx1ZSksIHVzdWFsbHkoaXNOb25FbXB0eVN0
cmluZyksIHJhcmVseShzbG93Q2FzZSkpOwogCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhp
c05vbkVtcHR5U3RyaW5nLCBub3RTdHJpbmdDYXNlKTsKKyAgICAgICAgICAgIExWYWx1ZSBpbXBs
RnJvbVN0cmluZyA9IG1fb3V0LmxvYWRQdHIoa2V5QXNWYWx1ZSwgbV9oZWFwcy5KU1N0cmluZ192
YWx1ZSk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzdHJpbmdSZXN1bHQgPSBtX291dC5h
bmNob3IoaW1wbEZyb21TdHJpbmcpOwogICAgICAgICAgICAgTFZhbHVlIGlzTm90QXRvbWljID0g
bV9vdXQudGVzdElzWmVybzMyKG1fb3V0LmxvYWQzMihpbXBsRnJvbVN0cmluZywgbV9oZWFwcy5T
dHJpbmdJbXBsX2hhc2hBbmRGbGFncyksIG1fb3V0LmNvbnN0SW50MzIoU3RyaW5nSW1wbDo6Zmxh
Z0lzQXRvbWljKCkpKTsKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc05vdEF0b21pYywgcmFy
ZWx5KHNsb3dDYXNlKSwgdXN1YWxseShoYXNVbmlxdWVkU3RyaW5nSW1wbCkpOwogCkBAIC0xMTg4
NCw2ICsxMTk0NSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVT
dHJpbmdTbGljZSgpCiAgICAgeworI2lmIDAKICAgICAgICAgTEJhc2ljQmxvY2sgZW1wdHlDYXNl
ID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90RW1wdHlDYXNlID0g
bV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgb25lQ2hhckNhc2UgPSBtX291
dC5uZXdCbG9jaygpOwpAQCAtMTE5NjIsNiArMTIwMjQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAg
ICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCByZXN1bHRzKSk7CisjZW5k
aWYKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVUb0xvd2VyQ2FzZSgpCkBAIC0xMTk3NiwxMiAr
MTIwMzksMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgTFZhbHVlIHN0cmluZyA9
IGxvd1N0cmluZyhtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc3Rh
cnRJbmRleCA9IG1fb3V0LmFuY2hvcihtX291dC5jb25zdEludDMyKDApKTsKICAgICAgICAgVmFs
dWVGcm9tQmxvY2sgc3RhcnRJbmRleEZvckNhbGwgPSBtX291dC5hbmNob3IobV9vdXQuY29uc3RJ
bnQzMigwKSk7Ci0gICAgICAgIExWYWx1ZSBpbXBsID0gbV9vdXQubG9hZFB0cihzdHJpbmcsIG1f
aGVhcHMuSlNTdHJpbmdfdmFsdWUpOwotICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJv
NjQoaW1wbCksCisgICAgICAgIG1fb3V0LmJyYW5jaChpc1JvcGUoc3RyaW5nKSwKICAgICAgICAg
ICAgIHVuc3VyZShzbG93UGF0aCksIHVuc3VyZShub3RSb3BlKSk7CiAKICAgICAgICAgTEJhc2lj
QmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhub3RSb3BlLCBpczhCaXQpOwotCisgICAg
ICAgIExWYWx1ZSBpbXBsID0gbV9vdXQubG9hZFB0cihzdHJpbmcsIG1faGVhcHMuSlNTdHJpbmdf
dmFsdWUpOwogICAgICAgICBtX291dC5icmFuY2goCiAgICAgICAgICAgICBtX291dC50ZXN0SXNa
ZXJvMzIoCiAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyKGltcGwsIG1faGVhcHMuU3RyaW5n
SW1wbF9oYXNoQW5kRmxhZ3MpLApAQCAtMTI3NjgsMjkgKzEyODMwLDIzIEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsK
IAotICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDMyKGxlZnRKU1N0cmluZywgbV9o
ZWFwcy5KU1N0cmluZ19sZW5ndGgpOworICAgICAgICBtX291dC5icmFuY2goaXNSb3BlKGxlZnRK
U1N0cmluZyksIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkobGVmdFJlYWR5Q2FzZSkpOwogCi0g
ICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKGxlbmd0aCwg
bV9vdXQubG9hZDMyKHJpZ2h0SlNTdHJpbmcsIG1faGVhcHMuSlNTdHJpbmdfbGVuZ3RoKSksCi0g
ICAgICAgICAgICB1bnN1cmUoZmFsc2VDYXNlKSwgdW5zdXJlKG5vdFRyaXZpYWxseVVuZXF1YWxD
YXNlKSk7Ci0KLSAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhu
b3RUcml2aWFsbHlVbmVxdWFsQ2FzZSwgbm90RW1wdHlDYXNlKTsKLQotICAgICAgICBtX291dC5i
cmFuY2gobV9vdXQuaXNaZXJvMzIobGVuZ3RoKSwgdW5zdXJlKHRydWVDYXNlKSwgdW5zdXJlKG5v
dEVtcHR5Q2FzZSkpOwotCi0gICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEVtcHR5Q2FzZSwgbGVm
dFJlYWR5Q2FzZSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5k
VG8obGVmdFJlYWR5Q2FzZSwgcmlnaHRSZWFkeUNhc2UpOworICAgICAgICBtX291dC5icmFuY2go
aXNSb3BlKHJpZ2h0SlNTdHJpbmcpLCByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KHJpZ2h0UmVh
ZHlDYXNlKSk7CiAKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8ocmlnaHRSZWFkeUNhc2UsIG5vdFRy
aXZpYWxseVVuZXF1YWxDYXNlKTsKICAgICAgICAgTFZhbHVlIGxlZnQgPSBtX291dC5sb2FkUHRy
KGxlZnRKU1N0cmluZywgbV9oZWFwcy5KU1N0cmluZ192YWx1ZSk7CiAgICAgICAgIExWYWx1ZSBy
aWdodCA9IG1fb3V0LmxvYWRQdHIocmlnaHRKU1N0cmluZywgbV9oZWFwcy5KU1N0cmluZ192YWx1
ZSk7CisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC5sb2FkMzIobGVmdCwgbV9oZWFwcy5T
dHJpbmdJbXBsX2xlbmd0aCk7CisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1f
b3V0Lm5vdEVxdWFsKGxlbmd0aCwgbV9vdXQubG9hZDMyKHJpZ2h0LCBtX2hlYXBzLlN0cmluZ0lt
cGxfbGVuZ3RoKSksCisgICAgICAgICAgICB1bnN1cmUoZmFsc2VDYXNlKSwgdW5zdXJlKG5vdFRy
aXZpYWxseVVuZXF1YWxDYXNlKSk7CiAKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdE51
bGwobGVmdCksIHVzdWFsbHkobGVmdFJlYWR5Q2FzZSksIHJhcmVseShzbG93Q2FzZSkpOwotCi0g
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRSZWFkeUNhc2UsIHJpZ2h0UmVhZHlDYXNlKTsKLSAg
ICAgICAgCi0gICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3ROdWxsKHJpZ2h0KSwgdXN1YWxs
eShyaWdodFJlYWR5Q2FzZSksIHJhcmVseShzbG93Q2FzZSkpOwotCi0gICAgICAgIG1fb3V0LmFw
cGVuZFRvKHJpZ2h0UmVhZHlDYXNlLCBsZWZ0OEJpdENhc2UpOworICAgICAgICBtX291dC5hcHBl
bmRUbyhub3RUcml2aWFsbHlVbmVxdWFsQ2FzZSwgbm90RW1wdHlDYXNlKTsKKyAgICAgICAgbV9v
dXQuYnJhbmNoKG1fb3V0LmlzWmVybzMyKGxlbmd0aCksIHVuc3VyZSh0cnVlQ2FzZSksIHVuc3Vy
ZShub3RFbXB0eUNhc2UpKTsKIAorICAgICAgICBtX291dC5hcHBlbmRUbyhub3RFbXB0eUNhc2Us
IGxlZnQ4Qml0Q2FzZSk7CiAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgIG1fb3V0
LnRlc3RJc1plcm8zMigKICAgICAgICAgICAgICAgICBtX291dC5sb2FkMzIobGVmdCwgbV9oZWFw
cy5TdHJpbmdJbXBsX2hhc2hBbmRGbGFncyksCkBAIC0xMjc5OCw3ICsxMjg1NCw2IEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICB1bnN1cmUoc2xvd0Nhc2UpLCB1bnN1cmUobGVm
dDhCaXRDYXNlKSk7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obGVmdDhCaXRDYXNlLCByaWdo
dDhCaXRDYXNlKTsKLQogICAgICAgICBtX291dC5icmFuY2goCiAgICAgICAgICAgICBtX291dC50
ZXN0SXNaZXJvMzIoCiAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyKHJpZ2h0LCBtX2hlYXBz
LlN0cmluZ0ltcGxfaGFzaEFuZEZsYWdzKSwKQEAgLTEzNTIxLDI0ICsxMzU3Niw0NyBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICBlZGdlLCBDZWxsQ2FzZVNwZWN1
bGF0ZXNPYmplY3QsIFNwZWN1bGF0ZU51bGxPclVuZGVmaW5lZCwKICAgICAgICAgICAgICAgICAg
ICAgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKSk7CiAgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7
CisgICAgICAgICAgICBMQmFzaWNCbG9jayByb3BlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgICAgICBMQmFzaWNCbG9jayBub3RSb3BlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwor
CiAgICAgICAgICAgICBMVmFsdWUgc3RyaW5nVmFsdWUgPSBsb3dTdHJpbmcoZWRnZSk7Ci0gICAg
ICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoc3RyaW5nVmFs
dWUsIG1faGVhcHMuSlNTdHJpbmdfbGVuZ3RoKTsKLSAgICAgICAgICAgIHJldHVybiBtX291dC5u
b3RFcXVhbChsZW5ndGgsIG1fb3V0LmludDMyWmVybyk7CisKKyAgICAgICAgICAgIG1fb3V0LmJy
YW5jaChpc1JvcGUoc3RyaW5nVmFsdWUsIHByb3ZlblR5cGUoZWRnZSkpLCByYXJlbHkocm9wZUNh
c2UpLCB1c3VhbGx5KG5vdFJvcGVDYXNlKSk7CisKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxh
c3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8ocm9wZUNhc2UsIG5vdFJvcGVDYXNlKTsKKyAgICAgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIHJvcGVMZW5ndGggPSBtX291dC5hbmNob3IobV9vdXQubG9hZDMy
Tm9uTmVnYXRpdmUoc3RyaW5nVmFsdWUsIG1faGVhcHMuSlNSb3BlU3RyaW5nX2xlbmd0aCkpOwor
ICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhub3RSb3BlQ2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIG5vblJvcGVMZW5ndGggPSBtX291dC5hbmNob3IobV9vdXQubG9hZDMyTm9uTmVn
YXRpdmUobV9vdXQubG9hZFB0cihzdHJpbmdWYWx1ZSwgbV9oZWFwcy5KU1N0cmluZ192YWx1ZSks
IG1faGVhcHMuU3RyaW5nSW1wbF9sZW5ndGgpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBs
YXN0TmV4dCk7CisgICAgICAgICAgICByZXR1cm4gbV9vdXQubm90RXF1YWwobV9vdXQucGhpKElu
dDMyLCByb3BlTGVuZ3RoLCBub25Sb3BlTGVuZ3RoKSwgbV9vdXQuaW50MzJaZXJvKTsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIFN0cmluZ09yT3RoZXJVc2U6IHsKICAgICAgICAgICAgIExWYWx1
ZSB2YWx1ZSA9IGxvd0pTVmFsdWUoZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKIAog
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgY2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgbm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgcm9wZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgbm90Um9wZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKIAogICAg
ICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShlZGdlKSksIHVu
c3VyZShjZWxsQ2FzZSksIHVuc3VyZShub3RDZWxsQ2FzZSkpOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGNlbGxDYXNlLCBu
b3RDZWxsQ2FzZSk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFw
cGVuZFRvKGNlbGxDYXNlLCByb3BlQ2FzZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEZU
TF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2UsICh+U3BlY0NlbGxDaGVjaykg
fCBTcGVjU3RyaW5nLCBpc05vdFN0cmluZyh2YWx1ZSkpOwotICAgICAgICAgICAgTFZhbHVlIGxl
bmd0aCA9IG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHZhbHVlLCBtX2hlYXBzLkpTU3RyaW5nX2xl
bmd0aCk7Ci0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBjZWxsUmVzdWx0ID0gbV9vdXQuYW5j
aG9yKG1fb3V0Lm5vdEVxdWFsKGxlbmd0aCwgbV9vdXQuaW50MzJaZXJvKSk7CisgICAgICAgICAg
ICBtX291dC5icmFuY2goaXNSb3BlKHZhbHVlLCBwcm92ZW5UeXBlKGVkZ2UpKSwgcmFyZWx5KHJv
cGVDYXNlKSwgdXN1YWxseShub3RSb3BlQ2FzZSkpOworCisgICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhyb3BlQ2FzZSwgbm90Um9wZUNhc2UpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sg
cm9wZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5sb2FkMzJOb25OZWdhdGl2ZSh2YWx1ZSwg
bV9oZWFwcy5KU1JvcGVTdHJpbmdfbGVuZ3RoKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdFJvcGVDYXNlLCBu
b3RDZWxsQ2FzZSk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBub3RSb3BlUmVzdWx0ID0g
bV9vdXQuYW5jaG9yKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKG1fb3V0LmxvYWRQdHIodmFsdWUs
IG1faGVhcHMuSlNTdHJpbmdfdmFsdWUpLCBtX2hlYXBzLlN0cmluZ0ltcGxfbGVuZ3RoKSk7CiAg
ICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdENlbGxDYXNlLCBjb250aW51YXRpb24pOwpAQCAtMTM1
NDgsNyArMTM2MjYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0
aW9uLCBsYXN0TmV4dCk7CiAKLSAgICAgICAgICAgIHJldHVybiBtX291dC5waGkoSW50MzIsIGNl
bGxSZXN1bHQsIG5vdENlbGxSZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShJ
bnQzMiwgcm9wZVJlc3VsdCwgbm90Um9wZVJlc3VsdCwgbm90Q2VsbFJlc3VsdCk7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CiAgICAgICAgICAgICBMVmFsdWUgdmFsdWUg
PSBsb3dKU1ZhbHVlKGVkZ2UpOwpAQCAtMTM1NzEsNyArMTM2NDksMTAgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY2VsbENhc2Ug
PSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90U3RyaW5nQ2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBzdHJpbmdPckJp
Z0ludENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgc3Ry
aW5nQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayByb3Bl
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RSb3Bl
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBiaWdJbnRD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdFN0cmlu
Z09yQmlnSW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBub3RDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBpbnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygpOwpAQCAtMTM1ODcsMTcgKzEzNjY4LDMyIEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9
IG1fb3V0LmFwcGVuZFRvKGNlbGxDYXNlLCBub3RTdHJpbmdDYXNlKTsKICAgICAgICAgICAgIG1f
b3V0LmJyYW5jaCgKICAgICAgICAgICAgICAgICBpc1N0cmluZyh2YWx1ZSwgcHJvdmVuVHlwZShl
ZGdlKSAmIFNwZWNDZWxsKSwKLSAgICAgICAgICAgICAgICB1bnN1cmUoc3RyaW5nT3JCaWdJbnRD
YXNlKSwgdW5zdXJlKG5vdFN0cmluZ0Nhc2UpKTsKKyAgICAgICAgICAgICAgICB1bnN1cmUoc3Ry
aW5nQ2FzZSksIHVuc3VyZShub3RTdHJpbmdDYXNlKSk7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKG5vdFN0cmluZ0Nhc2UsIHN0cmluZ09yQmlnSW50Q2FzZSk7Cisg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdDYXNlLCBzdHJpbmdDYXNlKTsKICAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgICAgICBpc0JpZ0ludCh2YWx1ZSwg
cHJvdmVuVHlwZShlZGdlKSAmIChTcGVjQ2VsbCAtIFNwZWNTdHJpbmcpKSwKLSAgICAgICAgICAg
ICAgICB1bnN1cmUoc3RyaW5nT3JCaWdJbnRDYXNlKSwgdW5zdXJlKG5vdFN0cmluZ09yQmlnSW50
Q2FzZSkpOworICAgICAgICAgICAgICAgIHVuc3VyZShiaWdJbnRDYXNlKSwgdW5zdXJlKG5vdFN0
cmluZ09yQmlnSW50Q2FzZSkpOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzdHJpbmdD
YXNlLCByb3BlQ2FzZSk7CisgICAgICAgICAgICBtX291dC5icmFuY2goaXNSb3BlKHZhbHVlLCBw
cm92ZW5UeXBlKGVkZ2UpICYgU3BlY1N0cmluZyksIHJhcmVseShyb3BlQ2FzZSksIHVzdWFsbHko
bm90Um9wZUNhc2UpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8ocm9wZUNhc2UsIG5v
dFJvcGVDYXNlKTsKKyAgICAgICAgICAgIExWYWx1ZSBub25aZXJvUm9wZSA9IG1fb3V0Lm5vdFpl
cm8zMigKKyAgICAgICAgICAgICAgICBtX291dC5sb2FkMzJOb25OZWdhdGl2ZSh2YWx1ZSwgbV9o
ZWFwcy5KU1JvcGVTdHJpbmdfbGVuZ3RoKSk7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZCht
X291dC5hbmNob3Iobm9uWmVyb1JvcGUpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90Um9wZUNhc2UsIGJpZ0lu
dENhc2UpOworICAgICAgICAgICAgTFZhbHVlIG5vblplcm9Ob25Sb3BlID0gbV9vdXQubm90WmVy
bzMyKAorICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKG1fb3V0LmxvYWRQ
dHIodmFsdWUsIG1faGVhcHMuSlNTdHJpbmdfdmFsdWUpLCBtX2hlYXBzLlN0cmluZ0ltcGxfbGVu
Z3RoKSk7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3Iobm9uWmVyb05v
blJvcGUpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAotICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oc3RyaW5nT3JCaWdJbnRDYXNlLCBub3RTdHJpbmdPckJpZ0lu
dENhc2UpOwotICAgICAgICAgICAgTFZhbHVlIG5vblplcm9DZWxsID0gbV9vdXQubm90WmVybzMy
KAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHZhbHVlLCBtX2hlYXBz
LkpTQmlnSW50T3JTdHJpbmdfbGVuZ3RoKSk7Ci0gICAgICAgICAgICByZXN1bHRzLmFwcGVuZCht
X291dC5hbmNob3Iobm9uWmVyb0NlbGwpKTsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJp
Z0ludENhc2UsIG5vdFN0cmluZ09yQmlnSW50Q2FzZSk7CisgICAgICAgICAgICBMVmFsdWUgbm9u
WmVyb0JpZ0ludCA9IG1fb3V0Lm5vdFplcm8zMigKKyAgICAgICAgICAgICAgICBtX291dC5sb2Fk
MzJOb25OZWdhdGl2ZSh2YWx1ZSwgbV9oZWFwcy5KU0JpZ0ludF9sZW5ndGgpKTsKKyAgICAgICAg
ICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihub25aZXJvQmlnSW50KSk7CiAgICAgICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKG5vdFN0cmluZ09yQmlnSW50Q2FzZSwgbm90Q2VsbENhc2UpOwpAQCAt
MTM4ODQsMTYgKzEzOTgwLDE2IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIExWYWx1ZSBzdHJpbmdJbXBsID0g
bV9vdXQubG9hZFB0cihzdHJpbmcsIG1faGVhcHMuSlNTdHJpbmdfdmFsdWUpOwotICAgICAgICBM
VmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDMyKHN0cmluZywgbV9oZWFwcy5KU1N0cmluZ19sZW5n
dGgpOwotICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgaGFzSW1wbEJsb2NrID0gbV9vdXQu
bmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgaXM4Qml0QmxvY2sgPSBtX291dC5uZXdC
bG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBzbG93QmxvY2sgPSBtX291dC5uZXdCbG9jaygp
OwogICAgICAgICAKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmlzTnVsbChzdHJpbmdJbXBs
KSwgdW5zdXJlKHNsb3dCbG9jayksIHVuc3VyZShoYXNJbXBsQmxvY2spKTsKKyAgICAgICAgbV9v
dXQuYnJhbmNoKGlzUm9wZShzdHJpbmcpLCB1bnN1cmUoc2xvd0Jsb2NrKSwgdW5zdXJlKGhhc0lt
cGxCbG9jaykpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291
dC5hcHBlbmRUbyhoYXNJbXBsQmxvY2ssIGlzOEJpdEJsb2NrKTsKKworICAgICAgICBMVmFsdWUg
c3RyaW5nSW1wbCA9IG1fb3V0LmxvYWRQdHIoc3RyaW5nLCBtX2hlYXBzLkpTU3RyaW5nX3ZhbHVl
KTsKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQzMihzdHJpbmdJbXBsLCBtX2hl
YXBzLlN0cmluZ0ltcGxfbGVuZ3RoKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmJyYW5jaCgK
ICAgICAgICAgICAgIG1fb3V0LnRlc3RJc1plcm8zMigKQEAgLTE1NTg4LDYgKzE1Njg0LDI2IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKHZtKCku
c3RyaW5nU3RydWN0dXJlLT5pZCgpKSk7CiAgICAgfQogCisgICAgTFZhbHVlIGlzUm9wZShMVmFs
dWUgc3RyaW5nLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAg
ICAgICBpZiAoISgodHlwZSAmIFNwZWNTdHJpbmcpICYgflNwZWNTdHJpbmdJZGVudCkpCisgICAg
ICAgICAgICByZXR1cm4gbV9vdXQuYm9vbGVhblRydWU7CisKKyAgICAgICAgcmV0dXJuIG1fb3V0
LnRlc3ROb25aZXJvMzIoCisgICAgICAgICAgICBtX291dC5sb2FkOFplcm9FeHQzMihzdHJpbmcs
IG1faGVhcHMuSlNDZWxsX3R5cGVJbmZvRmxhZ3MpLAorICAgICAgICAgICAgbV9vdXQuY29uc3RJ
bnQzMihUeXBlSW5mb1BlckNlbGxCaXQpKTsKKyAgICB9CisKKyAgICBMVmFsdWUgaXNOb3RSb3Bl
KExWYWx1ZSBzdHJpbmcsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKKyAgICB7
CisgICAgICAgIGlmICghKCh0eXBlICYgU3BlY1N0cmluZykgJiB+U3BlY1N0cmluZ0lkZW50KSkK
KyAgICAgICAgICAgIHJldHVybiBtX291dC5ib29sZWFuRmFsc2U7CisKKyAgICAgICAgcmV0dXJu
IG1fb3V0LnRlc3RJc1plcm8zMigKKyAgICAgICAgICAgIG1fb3V0LmxvYWQ4WmVyb0V4dDMyKHN0
cmluZywgbV9oZWFwcy5KU0NlbGxfdHlwZUluZm9GbGFncyksCisgICAgICAgICAgICBtX291dC5j
b25zdEludDMyKFR5cGVJbmZvUGVyQ2VsbEJpdCkpOworICAgIH0KKwogICAgIExWYWx1ZSBpc05v
dFN5bWJvbChMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQog
ICAgIHsKICAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBT
cGVjQ2VsbCwgflNwZWNTeW1ib2wpKQpAQCAtMTU5ODUsNyArMTYxMDEsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICBpZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRn
ZSwgU3BlY1N0cmluZ0lkZW50IHwgflNwZWNTdHJpbmcpKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAKLSAgICAgICAgc3BlY3VsYXRlKEJhZFR5cGUsIGpzVmFsdWVWYWx1ZShzdHJpbmcp
LCBlZGdlLm5vZGUoKSwgbV9vdXQuaXNOdWxsKHN0cmluZ0ltcGwpKTsKKyAgICAgICAgc3BlY3Vs
YXRlKEJhZFR5cGUsIGpzVmFsdWVWYWx1ZShzdHJpbmcpLCBlZGdlLm5vZGUoKSwgaXNSb3BlKHN0
cmluZykpOwogICAgICAgICBzcGVjdWxhdGUoCiAgICAgICAgICAgICBCYWRUeXBlLCBqc1ZhbHVl
VmFsdWUoc3RyaW5nKSwgZWRnZS5ub2RlKCksCiAgICAgICAgICAgICBtX291dC50ZXN0SXNaZXJv
MzIoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5k
ZXggOTczZmQzY2UzODFiNWVjYWZlMzdjOGZlMzcyN2ZmYzVhZDkwNTA3Zi4uN2YxNDJmMGRiZmYw
ZWU3OTE0OGRiZTA2NzlkNWRlYWE2M2MzZTNhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtNzEzLDggKzcxMywxOCBAQCB2b2lkIEFzc2Vt
Ymx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdz
IHZhbHVlLCBHUFJSZQogICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CiAKICAgICBpc1N0cmluZy5s
aW5rKHRoaXMpOworICAgIGF1dG8gaXNSb3BlID0gYnJhbmNoSWZSb3BlKHZhbHVlLnBheWxvYWRH
UFIoKSk7CisgICAgbG9hZFB0cihBZGRyZXNzKHZhbHVlLnBheWxvYWRHUFIoKSwgSlNTdHJpbmc6
Om9mZnNldE9mVmFsdWUoKSksIHJlc3VsdCk7CisgICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0LCBT
dHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSksIHJlc3VsdCk7CisgICAgY29tcGFyZTMy
KGludmVydCA/IEVxdWFsIDogTm90RXF1YWwsIHJlc3VsdCwgVHJ1c3RlZEltbTMyKDApLCByZXN1
bHQpOworICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CisKKyAgICBpc1JvcGUubGluayh0aGlzKTsK
KyAgICBsb2FkMzIoQWRkcmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTUm9wZVN0cmluZzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHJlc3VsdCk7CisgICAgY29tcGFyZTMyKGludmVydCA/IEVxdWFsIDog
Tm90RXF1YWwsIHJlc3VsdCwgVHJ1c3RlZEltbTMyKDApLCByZXN1bHQpOworICAgIGRvbmUuYXBw
ZW5kKGp1bXAoKSk7CisKICAgICBpc0JpZ0ludC5saW5rKHRoaXMpOwotICAgIFJFTEVBU0VfQVNT
RVJUKEpTU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpID09IEpTQmlnSW50OjpvZmZzZXRPZkxlbmd0
aCgpKTsKICAgICBsb2FkMzIoQWRkcmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQmlnSW50Ojpv
ZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0KTsKICAgICBjb21wYXJlMzIoaW52ZXJ0ID8gRXF1YWwg
OiBOb3RFcXVhbCwgcmVzdWx0LCBUcnVzdGVkSW1tMzIoMCksIHJlc3VsdCk7CiAgICAgZG9uZS5h
cHBlbmQoanVtcCgpKTsKQEAgLTgwMCw4ICs4MTAsMTYgQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1w
TGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2
YWwKICAgICB9CiAKICAgICBpc1N0cmluZy5saW5rKHRoaXMpOworICAgIGF1dG8gaXNSb3BlID0g
YnJhbmNoSWZSb3BlKHZhbHVlLnBheWxvYWRHUFIoKSk7CisgICAgbG9hZFB0cihBZGRyZXNzKHZh
bHVlLnBheWxvYWRHUFIoKSwgSlNTdHJpbmc6Om9mZnNldE9mVmFsdWUoKSksIHNjcmF0Y2gpOwor
ICAgIHRydXRoeS5hcHBlbmQoYnJhbmNoVGVzdDMyKGludmVydCA/IFplcm8gOiBOb25aZXJvLCBB
ZGRyZXNzKHNjcmF0Y2gsIFN0cmluZ0ltcGw6Omxlbmd0aE1lbW9yeU9mZnNldCgpKSkpOworICAg
IGRvbmUuYXBwZW5kKGp1bXAoKSk7CisKKyAgICBpc1JvcGUubGluayh0aGlzKTsKKyAgICB0cnV0
aHkuYXBwZW5kKGJyYW5jaFRlc3QzMihpbnZlcnQgPyBaZXJvIDogTm9uWmVybywgQWRkcmVzcyh2
YWx1ZS5wYXlsb2FkR1BSKCksIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKKyAg
ICBkb25lLmFwcGVuZChqdW1wKCkpOworCiAgICAgaXNCaWdJbnQubGluayh0aGlzKTsKLSAgICBS
RUxFQVNFX0FTU0VSVChKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSA9PSBKU0JpZ0ludDo6b2Zm
c2V0T2ZMZW5ndGgoKSk7CiAgICAgdHJ1dGh5LmFwcGVuZChicmFuY2hUZXN0MzIoaW52ZXJ0ID8g
WmVybyA6IE5vblplcm8sIEFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0JpZ0ludDo6b2Zm
c2V0T2ZMZW5ndGgoKSkpKTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA0YjkwZjNhYWNiZDIyMTk4
Y2YzM2JkNjRkN2U4YWM4MjMyMmU1NDIzLi4xZWQwNTAzYzE2MmE2NWQxNmExMDgzNzkxNjVkZDQ3
ODJkZjEyNTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmgKQEAgLTEwNzUsNiArMTA3NSwxNiBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMg
TWFjcm9Bc3NlbWJsZXIgewogICAgICAgICByZXR1cm4gYnJhbmNoRG91YmxlKERvdWJsZUVxdWFs
LCBmcHIsIGZwcik7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hJZlJvcGUoR1BSUmVnIHN0cmlu
Z0dQUikKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNz
KHN0cmluZ0dQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIo
VHlwZUluZm9QZXJDZWxsQml0KSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hJZk5vdFJvcGUo
R1BSUmVnIHN0cmluZ0dQUikKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hUZXN0OChaZXJv
LCBBZGRyZXNzKHN0cmluZ0dQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoVHlwZUluZm9QZXJDZWxsQml0KSk7CisgICAgfQorCiAgICAgc3RhdGljIEFkZHJl
c3MgYWRkcmVzc0ZvckJ5dGVPZmZzZXQocHRyZGlmZl90IGJ5dGVPZmZzZXQpCiAgICAgewogICAg
ICAgICByZXR1cm4gQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgYnl0ZU9mZnNl
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IGUyNjBjMTFmZWNm
M2ViNDcxNWQwZGNjNTQxYjZhYjBiZDQ3NzRkY2QuLjBlOWIyOWE2M2U2ZjMzNzVkYWQxNzJjOWU2
MzE1ZGYwNzgyNTM0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBA
IC05NCw5ICs5NCw5IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRQdXRJbnRUb0NhbGxG
cmFtZUhlYWRlcihSZWdpc3RlcklEIGZyb20sIGludCBlbnRyeSkKIEFMV0FZU19JTkxJTkUgdm9p
ZCBKSVQ6OmVtaXRMb2FkQ2hhcmFjdGVyU3RyaW5nKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRzdCwgSnVtcExpc3QmIGZhaWx1cmVzKQogewogICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2hJ
Zk5vdFN0cmluZyhzcmMpKTsKLSAgICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNyYywgSlNTdHJpbmc6Om9mZnNldE9mTGVuZ3RoKCkp
LCBUcnVzdGVkSW1tMzIoMSkpKTsKKyAgICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoSWZSb3BlKHNy
YykpOwogICAgIGxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3JjLCBKU1N0cmluZzo6
b2Zmc2V0T2ZWYWx1ZSgpKSwgZHN0KTsKLSAgICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoVGVzdDMy
KFplcm8sIGRzdCkpOworICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoZHN0LCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQo
KSksIFRydXN0ZWRJbW0zMigxKSkpOwogICAgIGxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoZHN0LCBTdHJpbmdJbXBsOjpmbGFnc09mZnNldCgpKSwgcmVnVDEpOwogICAgIGxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZHN0LCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkpLCBk
c3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAK
aW5kZXggODYzMGNkNjYyZWEzMDIzY2E1NGMxNWJmOGZiNTUwZTJhMThiMzcxMi4uNTIyZTNiNWZi
YjMxMWZmZDNjNDg3OGYwNmEyNDNmNjY0OGIzNzY2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtNjM2LDkgKzYzNiw5IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc3RyaW5nR2V0QnlWYWxHZW5lcmF0b3IoVk0q
IHZtKQogICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICAvLyBMb2FkIHN0cmluZyBs
ZW5ndGggdG8gcmVnVDIsIGFuZCBzdGFydCB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nIHRoZSBkYXRh
IHBvaW50ZXIgaW50byByZWdUMAotICAgIGppdC5sb2FkMzIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJl
c3Moc3RyaW5nR1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHNjcmF0Y2hHUFIpOwor
ICAgIGZhaWx1cmVzLmFwcGVuZChqaXQuYnJhbmNoSWZSb3BlKHN0cmluZ0dQUikpOwogICAgIGpp
dC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKHN0cmluZ0dQUiwgSlNTdHJpbmc6Om9m
ZnNldE9mVmFsdWUoKSksIHN0cmluZ0dQUik7Ci0gICAgZmFpbHVyZXMuYXBwZW5kKGppdC5icmFu
Y2hUZXN0UHRyKEpTSW50ZXJmYWNlSklUOjpaZXJvLCBzdHJpbmdHUFIpKTsKKyAgICBqaXQubG9h
ZDMyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKHN0cmluZ0dQUiwgU3RyaW5nSW1wbDo6bGVuZ3Ro
TWVtb3J5T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKIAogICAgIC8vIERvIGFuIHVuc2lnbmVkIGNv
bXBhcmUgdG8gc2ltdWx0YW5lb3VzbHkgZmlsdGVyIG5lZ2F0aXZlIGluZGljZXMgYXMgd2VsbCBh
cyBpbmRpY2VzIHRoYXQgYXJlIHRvbyBsYXJnZQogICAgIGZhaWx1cmVzLmFwcGVuZChqaXQuYnJh
bmNoMzIoSlNJbnRlcmZhY2VKSVQ6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsIHNjcmF0Y2hHUFIp
KTsKQEAgLTY3NSw5ICs2NzUsOSBAQCBzdGF0aWMgdm9pZCBzdHJpbmdDaGFyTG9hZChTcGVjaWFs
aXplZFRodW5rSklUJiBqaXQpCiAgICAgaml0LmxvYWRKU1N0cmluZ0FyZ3VtZW50KFNwZWNpYWxp
emVkVGh1bmtKSVQ6OlRoaXNBcmd1bWVudCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwog
CiAgICAgLy8gTG9hZCBzdHJpbmcgbGVuZ3RoIHRvIHJlZ1QyLCBhbmQgc3RhcnQgdGhlIHByb2Nl
c3Mgb2YgbG9hZGluZyB0aGUgZGF0YSBwb2ludGVyIGludG8gcmVnVDAKLSAgICBqaXQubG9hZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBKU1N0
cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyKTsKKyAg
ICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuYnJhbmNoSWZSb3BlKFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QwKSk7CiAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoU3BlY2lh
bGl6ZWRUaHVua0pJVDo6cmVnVDAsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBTcGVjaWFs
aXplZFRodW5rSklUOjpyZWdUMCk7Ci0gICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmJyYW5jaFRl
c3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApKTsK
KyAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJlZ1QwLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSksIFNwZWNpYWxpemVk
VGh1bmtKSVQ6OnJlZ1QyKTsKIAogICAgIC8vIGxvYWQgaW5kZXgKICAgICBqaXQubG9hZEludDMy
QXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEpOyAvLyByZWdUMSBjb250YWlu
cyB0aGUgaW5kZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQppbmRleCBkODY4NTdkY2Y2NTQ1NWYwNmFjNDIwMTk2NzMwNjAwZjBk
OTkyNmFkLi41YTFhNDJiOThjZGZlNDcyYTMzMGExNGMxMzYzYzBhNTU2ZDBkYjY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CkBAIC00NjIsNiArNDYyLDcgQEAgY29uc3QgTnVtYmVyT2ZUeXBlZEFycmF5VHlwZXNFeGNsdWRp
bmdEYXRhVmlldyA9IGNvbnN0ZXhwciBOdW1iZXJPZlR5cGVkQXJyYXlUeXAKICMgVHlwZSBmbGFn
cyBjb25zdGFudHMuCiBjb25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gY29uc3RleHByIE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQKIGNvbnN0IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2Ug
PSBjb25zdGV4cHIgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZQorY29uc3QgVHlwZUluZm9Q
ZXJDZWxsQml0ID0gY29uc3RleHByIFR5cGVJbmZvUGVyQ2VsbEJpdAogCiAjIEJ5dGVjb2RlIG9w
ZXJhbmQgY29uc3RhbnRzLgogY29uc3QgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhOYXJyb3cg
PSAxNgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBmZjFjZTU4NjllMzY5MWY0NDQ5OTg2MTcxMmRkZGI3
ZTZkY2ZiN2YzLi45YmNlNWZiZmVmNjcyYWJiYTQzMTg3ZmY0ZGQwOTg4MTk3NzE4M2VkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbQpAQCAtMTc4OCw5ICsxNzg4LDkgQEAgbGxpbnRPcFdpdGhKdW1wKG9wX3N3
aXRjaF9jaGFyLCBPcFN3aXRjaENoYXIsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNo
KQogICAgIGFkZHAgdDMsIHQyCiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFN3aXRjaENoYXJG
YWxsVGhyb3VnaAogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgU3RyaW5nVHlwZSwgLm9w
U3dpdGNoQ2hhckZhbGxUaHJvdWdoCi0gICAgYmluZXEgSlNTdHJpbmc6Om1fbGVuZ3RoW3QwXSwg
MSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgYnRibnogSlNDZWxsOjptX2ZsYWdzW3Qw
XSwgVHlwZUluZm9QZXJDZWxsQml0LCAub3BTd2l0Y2hPblJvcGUKICAgICBsb2FkcCBKU1N0cmlu
Zzo6bV92YWx1ZVt0MF0sIHQwCi0gICAgYnRweiAgdDAsIC5vcFN3aXRjaE9uUm9wZQorICAgIGJp
bmVxIFN0cmluZ0ltcGw6Om1fbGVuZ3RoW3QwXSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdo
CiAgICAgbG9hZHAgU3RyaW5nSW1wbDo6bV9kYXRhOFt0MF0sIHQxCiAgICAgYnRpbnogU3RyaW5n
SW1wbDo6bV9oYXNoQW5kRmxhZ3NbdDBdLCBIYXNoRmxhZ3M4Qml0QnVmZmVyLCAub3BTd2l0Y2hD
aGFyOEJpdAogICAgIGxvYWRoIFt0MV0sIHQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDQ1ODI1NDAxYTc4YjY4
MGZhZTBhOGYwOTYyY2RjMzUwMTU5OWFhMWYuLjliNjFhYWFhMzFjN2EwZTU1Mzk2MmZiN2YyYmJm
ZDUyMjFkN2E4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xODczLDkgKzE4NzMsOSBAQCBsbGludE9wV2l0
aEp1bXAob3Bfc3dpdGNoX2NoYXIsIE9wU3dpdGNoQ2hhciwgbWFjcm8gKHNpemUsIGdldCwganVt
cCwgZGlzcGF0Y2gpCiAgICAgYWRkcCB0MywgdDIKICAgICBidHFueiB0MSwgdGFnTWFzaywgLm9w
U3dpdGNoQ2hhckZhbGxUaHJvdWdoCiAgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDFdLCBTdHJp
bmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKLSAgICBiaW5lcSBKU1N0cmluZzo6bV9s
ZW5ndGhbdDFdLCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBidGJueiBKU0NlbGw6
Om1fZmxhZ3NbdDFdLCBUeXBlSW5mb1BlckNlbGxCaXQsIC5vcFN3aXRjaE9uUm9wZQogICAgIGxv
YWRwIEpTU3RyaW5nOjptX3ZhbHVlW3QxXSwgdDAKLSAgICBidHB6ICB0MCwgLm9wU3dpdGNoT25S
b3BlCisgICAgYmluZXEgU3RyaW5nSW1wbDo6bV9sZW5ndGhbdDBdLCAxLCAub3BTd2l0Y2hDaGFy
RmFsbFRocm91Z2gKICAgICBsb2FkcCBTdHJpbmdJbXBsOjptX2RhdGE4W3QwXSwgdDEKICAgICBi
dGlueiBTdHJpbmdJbXBsOjptX2hhc2hBbmRGbGFnc1t0MF0sIEhhc2hGbGFnczhCaXRCdWZmZXIs
IC5vcFN3aXRjaENoYXI4Qml0CiAgICAgbG9hZGggW3QxXSwgdDAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCBkOTVlMjVjZDAyYzdkNWQzMmZhMzEyNDEw
ZTk3ZTZjNTEyOTQxMjk4Li4yZDVkMTJiNmUxYTBiNWJmNzM1ZGNlZjFjYTI1NjAxMzUyZGQyMDc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC0xODUs
NyArMTg1LDcgQEAgdm9pZCBKU1JvcGVTdHJpbmc6OnJlc29sdmVSb3BlVG9BdG9taWNTdHJpbmco
RXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgICAgICByZXNvbHZlUm9wZShleGVjKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICAgICAgbV92YWx1ZSA9
IEF0b21pY1N0cmluZyhtX3ZhbHVlKTsKLSAgICAgICAgc2V0SXM4Qml0KG1fdmFsdWUuaW1wbCgp
LT5pczhCaXQoKSk7CisgICAgICAgIGNvbnZlcnRUb05vblJvcGUoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTkzLDE0ICsxOTMsMTMgQEAgdm9pZCBKU1JvcGVTdHJpbmc6OnJlc29s
dmVSb3BlVG9BdG9taWNTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgICAgICBMQ2hh
ciBidWZmZXJbbWF4TGVuZ3RoRm9yT25TdGFja1Jlc29sdmVdOwogICAgICAgICByZXNvbHZlUm9w
ZUludGVybmFsOChidWZmZXIpOwogICAgICAgICBtX3ZhbHVlID0gQXRvbWljU3RyaW5nKGJ1ZmZl
ciwgbGVuZ3RoKCkpOwotICAgICAgICBzZXRJczhCaXQobV92YWx1ZS5pbXBsKCktPmlzOEJpdCgp
KTsKICAgICB9IGVsc2UgewogICAgICAgICBVQ2hhciBidWZmZXJbbWF4TGVuZ3RoRm9yT25TdGFj
a1Jlc29sdmVdOwogICAgICAgICByZXNvbHZlUm9wZUludGVybmFsMTYoYnVmZmVyKTsKICAgICAg
ICAgbV92YWx1ZSA9IEF0b21pY1N0cmluZyhidWZmZXIsIGxlbmd0aCgpKTsKLSAgICAgICAgc2V0
SXM4Qml0KG1fdmFsdWUuaW1wbCgpLT5pczhCaXQoKSk7CiAgICAgfQogCisgICAgY29udmVydFRv
Tm9uUm9wZSgpOwogICAgIGNsZWFyRmliZXJzKCk7CiAKICAgICAvLyBJZiB3ZSByZXNvbHZlZCBh
IHN0cmluZyB0aGF0IGRpZG4ndCBwcmV2aW91c2x5IGV4aXN0LCBub3RpZnkgdGhlIGhlYXAgdGhh
dCB3ZSd2ZSBncm93bi4KQEAgLTIyMCw3ICsyMTksNyBAQCBSZWZQdHI8QXRvbWljU3RyaW5nSW1w
bD4gSlNSb3BlU3RyaW5nOjpyZXNvbHZlUm9wZVRvRXhpc3RpbmdBdG9taWNTdHJpbmcoRXhlY1N0
YQogICAgICAgICByZXNvbHZlUm9wZShleGVjKTsKICAgICAgICAgaWYgKFJlZlB0cjxBdG9taWNT
dHJpbmdJbXBsPiBleGlzdGluZ0F0b21pY1N0cmluZyA9IEF0b21pY1N0cmluZ0ltcGw6Omxvb2tV
cChtX3ZhbHVlLmltcGwoKSkpIHsKICAgICAgICAgICAgIG1fdmFsdWUgPSAqZXhpc3RpbmdBdG9t
aWNTdHJpbmc7Ci0gICAgICAgICAgICBzZXRJczhCaXQobV92YWx1ZS5pbXBsKCktPmlzOEJpdCgp
KTsKKyAgICAgICAgICAgIGNvbnZlcnRUb05vblJvcGUoKTsKICAgICAgICAgICAgIGNsZWFyRmli
ZXJzKCk7CiAgICAgICAgICAgICByZXR1cm4gZXhpc3RpbmdBdG9taWNTdHJpbmc7CiAgICAgICAg
IH0KQEAgLTIzMiw3ICsyMzEsNyBAQCBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gSlNSb3BlU3Ry
aW5nOjpyZXNvbHZlUm9wZVRvRXhpc3RpbmdBdG9taWNTdHJpbmcoRXhlY1N0YQogICAgICAgICBy
ZXNvbHZlUm9wZUludGVybmFsOChidWZmZXIpOwogICAgICAgICBpZiAoUmVmUHRyPEF0b21pY1N0
cmluZ0ltcGw+IGV4aXN0aW5nQXRvbWljU3RyaW5nID0gQXRvbWljU3RyaW5nSW1wbDo6bG9va1Vw
KGJ1ZmZlciwgbGVuZ3RoKCkpKSB7CiAgICAgICAgICAgICBtX3ZhbHVlID0gKmV4aXN0aW5nQXRv
bWljU3RyaW5nOwotICAgICAgICAgICAgc2V0SXM4Qml0KG1fdmFsdWUuaW1wbCgpLT5pczhCaXQo
KSk7CisgICAgICAgICAgICBjb252ZXJ0VG9Ob25Sb3BlKCk7CiAgICAgICAgICAgICBjbGVhckZp
YmVycygpOwogICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nQXRvbWljU3RyaW5nOwogICAgICAg
ICB9CkBAIC0yNDEsNyArMjQwLDcgQEAgUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IEpTUm9wZVN0
cmluZzo6cmVzb2x2ZVJvcGVUb0V4aXN0aW5nQXRvbWljU3RyaW5nKEV4ZWNTdGEKICAgICAgICAg
cmVzb2x2ZVJvcGVJbnRlcm5hbDE2KGJ1ZmZlcik7CiAgICAgICAgIGlmIChSZWZQdHI8QXRvbWlj
U3RyaW5nSW1wbD4gZXhpc3RpbmdBdG9taWNTdHJpbmcgPSBBdG9taWNTdHJpbmdJbXBsOjpsb29r
VXAoYnVmZmVyLCBsZW5ndGgoKSkpIHsKICAgICAgICAgICAgIG1fdmFsdWUgPSAqZXhpc3RpbmdB
dG9taWNTdHJpbmc7Ci0gICAgICAgICAgICBzZXRJczhCaXQobV92YWx1ZS5pbXBsKCktPmlzOEJp
dCgpKTsKKyAgICAgICAgICAgIGNvbnZlcnRUb05vblJvcGUoKTsKICAgICAgICAgICAgIGNsZWFy
RmliZXJzKCk7CiAgICAgICAgICAgICByZXR1cm4gZXhpc3RpbmdBdG9taWNTdHJpbmc7CiAgICAg
ICAgIH0KQEAgLTI1Nyw2ICsyNTYsNyBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGUo
RXhlY1N0YXRlKiBudWxsT3JFeGVjRm9yT09NKSBjb25zdAogICAgIGlmIChpc1N1YnN0cmluZygp
KSB7CiAgICAgICAgIEFTU0VSVCghc3Vic3RyaW5nQmFzZSgpLT5pc1JvcGUoKSk7CiAgICAgICAg
IG1fdmFsdWUgPSBzdWJzdHJpbmdCYXNlKCktPm1fdmFsdWUuc3Vic3RyaW5nU2hhcmluZ0ltcGwo
c3Vic3RyaW5nT2Zmc2V0KCksIGxlbmd0aCgpKTsKKyAgICAgICAgY29udmVydFRvTm9uUm9wZSgp
OwogICAgICAgICBzdWJzdHJpbmdCYXNlKCkuY2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTI3MSw2ICsyNzEsNyBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGUoRXhl
Y1N0YXRlKiBudWxsT3JFeGVjRm9yT09NKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIHJlc29sdmVSb3BlSW50ZXJuYWw4Tm9TdWJzdHJpbmcoYnVmZmVyKTsK
KyAgICAgICAgY29udmVydFRvTm9uUm9wZSgpOwogICAgICAgICBjbGVhckZpYmVycygpOwogICAg
ICAgICBBU1NFUlQoIWlzUm9wZSgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg2LDYgKzI4Nyw3
IEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpyZXNvbHZlUm9wZShFeGVjU3RhdGUqIG51bGxPckV4ZWNG
b3JPT00pIGNvbnN0CiAgICAgfQogICAgIAogICAgIHJlc29sdmVSb3BlSW50ZXJuYWwxNk5vU3Vi
c3RyaW5nKGJ1ZmZlcik7CisgICAgY29udmVydFRvTm9uUm9wZSgpOwogICAgIGNsZWFyRmliZXJz
KCk7CiAgICAgQVNTRVJUKCFpc1JvcGUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuaAppbmRleCA4YjRkMjA5MTM2NDIzNjQ4MGVlNjI3NDhiMjcwNmYxZDMyMzli
MTFkLi42NzgyZWE2YjJjZTYzNmJhOGM5NjQ1MGRjZDFkZWM4ZmJjN2Q0NjRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTExNSwxOCArMTE1LDE2IEBAIGNs
YXNzIEpTU3RyaW5nIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIHsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGxl
bmd0aCk7CiAgICAgICAgIEFTU0VSVCghbV92YWx1ZS5pc051bGwoKSk7CiAgICAgICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAgc2V0TGVuZ3RoKGxlbmd0aCk7Ci0gICAgICAg
IHNldElzOEJpdChtX3ZhbHVlLmltcGwoKS0+aXM4Qml0KCkpOwogICAgIH0KIAogICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgsIHNpemVfdCBjb3N0KQogICAg
IHsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7CiAgICAgICAgIEFTU0VSVCghbV92YWx1
ZS5pc051bGwoKSk7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAg
c2V0TGVuZ3RoKGxlbmd0aCk7Ci0gICAgICAgIHNldElzOEJpdChtX3ZhbHVlLmltcGwoKS0+aXM4
Qml0KCkpOwogICAgICAgICB2bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKGNvc3Qp
OwogICAgIH0KIApAQCAtMTM0LDggKzEzMiw2IEBAIGNsYXNzIEpTU3RyaW5nIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgewogICAgICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgICAgIHNldExlbmd0aCgwKTsKLSAgICAgICAg
c2V0SXM4Qml0KHRydWUpOwogICAgIH0KIAogcHVibGljOgpAQCAtMTY1LDcgKzE2MSw3IEBAIGNs
YXNzIEpTU3RyaW5nIDogcHVibGljIEpTQ2VsbCB7CiAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZShF
eGVjU3RhdGUqKSBjb25zdDsKICAgICBpbmxpbmUgY29uc3QgU3RyaW5nJiB0cnlHZXRWYWx1ZSgp
IGNvbnN0OwogICAgIGNvbnN0IFN0cmluZ0ltcGwqIHRyeUdldFZhbHVlSW1wbCgpIGNvbnN0Owot
ICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5n
dGg7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogCiAgICAg
SlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBj
b25zdDsKICAgICBib29sIHRvQm9vbGVhbigpIGNvbnN0IHsgcmV0dXJuICEhbGVuZ3RoKCk7IH0K
QEAgLTE4Miw4ICsxNzgsNiBAQCBjbGFzcyBKU1N0cmluZyA6IHB1YmxpYyBKU0NlbGwgewogCiAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKIAotICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZMZW5ndGgoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoSlNTdHJpbmcsIG1fbGVuZ3RoKTsgfQotICAgIHN0YXRpYyBzaXpl
X3Qgb2Zmc2V0T2ZGbGFncygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1N0cmluZywgbV9m
bGFncyk7IH0KICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mVmFsdWUoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoSlNTdHJpbmcsIG1fdmFsdWUpOyB9CiAKICAgICBERUNMQVJFX0VYUE9SVF9J
TkZPOwpAQCAtMTkyLDM3ICsxODYsMTUgQEAgY2xhc3MgSlNTdHJpbmcgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKiwgVk0mKTsKICAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAgICBl
bnVtIHsKLSAgICAgICAgSXM4Qml0ID0gMXUKLSAgICB9OwotCiBwcm90ZWN0ZWQ6CiAgICAgZnJp
ZW5kIGNsYXNzIEpTVmFsdWU7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsU2xv
d0Nhc2UoRXhlY1N0YXRlKiwgSlNTdHJpbmcqIG90aGVyKSBjb25zdDsKLSAgICBib29sIGlzUm9w
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuaXNOdWxsKCk7IH0KKyAgICBib29sIGlzUm9wZSgp
IGNvbnN0IHsgcmV0dXJuIHBlckNlbGxCaXQoKTsgfQogICAgIGJvb2wgaXNTdWJzdHJpbmcoKSBj
b25zdDsKLSAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBJczhCaXQ7
IH0KLSAgICB2b2lkIHNldElzOEJpdChib29sIGZsYWcpIGNvbnN0Ci0gICAgewotICAgICAgICBp
ZiAoZmxhZykKLSAgICAgICAgICAgIG1fZmxhZ3MgfD0gSXM4Qml0OwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX2ZsYWdzICY9IH5JczhCaXQ7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldExlbmd0aCh1bnNpZ25lZCBsZW5ndGgpCi0gICAgewotICAgICAgICBBU1NFUlQo
bGVuZ3RoIDw9IE1heExlbmd0aCk7Ci0gICAgICAgIG1fbGVuZ3RoID0gbGVuZ3RoOwotICAgIH0K
KyAgICBib29sIGlzOEJpdCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIC8vIEEgc3RyaW5nIGlz
IHJlcHJlc2VudGVkIGVpdGhlciBieSBhIFN0cmluZyBvciBhIHJvcGUgb2YgZmliZXJzLgotICAg
IHVuc2lnbmVkIG1fbGVuZ3RoIHsgMCB9OwotICAgIG11dGFibGUgdWludDE2X3QgbV9mbGFncyB7
IDAgfTsKLSAgICAvLyBUaGUgcG9pc29uIGlzIHN0cmF0ZWdpY2FsbHkgcGxhY2VkIGFuZCBob2xk
cyBhIHZhbHVlIHN1Y2ggdGhhdCB0aGUgZmlyc3QKLSAgICAvLyA2NCBiaXRzIG9mIEpTU3RyaW5n
IGxvb2sgbGlrZSBhIGRvdWJsZSBKU1ZhbHVlLgogICAgIG11dGFibGUgU3RyaW5nIG1fdmFsdWU7
CiAKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAtMjk0LDEwICsy
NjYsMzUgQEAgY2xhc3MgSlNSb3BlU3RyaW5nIGZpbmFsIDogcHVibGljIEpTU3RyaW5nIHsKICAg
ICAgICAgc2l6ZV90IG1faW5kZXg7CiAgICAgfTsKIAorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgSXM4Qml0ID0gU3RyaW5nSW1wbDo6ZmxhZ0lzOEJpdCgpOworCisgICAgaW5saW5lIGJv
b2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIElzOEJpdDsgfQorICAgIGlubGlu
ZSB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorCiBwcml2YXRl
OgorICAgIHZvaWQgY29udmVydFRvTm9uUm9wZSgpIGNvbnN0CisgICAgeworICAgICAgICBjb25z
dF9jYXN0PEpTUm9wZVN0cmluZyo+KHRoaXMpLT5zZXRQZXJDZWxsQml0KGZhbHNlKTsKKyAgICB9
CisKKyAgICB2b2lkIHNldElzOEJpdChib29sIGZsYWcpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAoZmxhZykKKyAgICAgICAgICAgIG1fZmxhZ3MgfD0gSXM4Qml0OworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX2ZsYWdzICY9IH5JczhCaXQ7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldExlbmd0aCh1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAgICBBU1NFUlQo
bGVuZ3RoIDw9IE1heExlbmd0aCk7CisgICAgICAgIG1fbGVuZ3RoID0gbGVuZ3RoOworICAgIH0K
KwogICAgIEFMV0FZU19JTkxJTkUgSlNSb3BlU3RyaW5nKFZNJiB2bSkKICAgICAgICAgOiBKU1N0
cmluZyh2bSkKICAgICB7CisgICAgICAgIHNldFBlckNlbGxCaXQodHJ1ZSk7CiAgICAgfQogCiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTU3RyaW5nKiBzMSwgSlNTdHJpbmcqIHMy
KQpAQCAtNDAzLDYgKzQwMCw5IEBAIGNsYXNzIEpTUm9wZVN0cmluZyBmaW5hbCA6IHB1YmxpYyBK
U1N0cmluZyB7CiAgICAgICAgIHJldHVybiBjcmVhdGVTdWJzdHJpbmdPZlJlc29sdmVkKHZtLCBu
dWxscHRyLCBiYXNlLCBvZmZzZXQsIGxlbmd0aCk7CiAgICAgfQogCisgICAgc3RhdGljIHNpemVf
dCBvZmZzZXRPZkxlbmd0aCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1JvcGVTdHJpbmcs
IG1fbGVuZ3RoKTsgfQorICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZGbGFncygpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihKU1JvcGVTdHJpbmcsIG1fZmxhZ3MpOyB9CisKICAgICB2b2lkIHZp
c2l0RmliZXJzKFNsb3RWaXNpdG9yJik7CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
RmliZXJzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTUm9wZVN0cmluZywgdSk7IH0KQEAg
LTQ3OSw2ICs0NzksOSBAQCBjbGFzcyBKU1JvcGVTdHJpbmcgZmluYWwgOiBwdWJsaWMgSlNTdHJp
bmcgewogICAgICAgICB1WzBdLm51bWJlciA9IGlzU3Vic3RyaW5nID8gc3Vic3RyaW5nU2VudGlu
ZWwoKSA6IG5vdFN1YnN0cmluZ1NlbnRpbmVsKCk7CiAgICAgfQogCisgICAgdW5zaWduZWQgbV9s
ZW5ndGggeyAwIH07CisgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2ZsYWdzIHsgSXM4Qml0IH07CisK
ICAgICBtdXRhYmxlIHVuaW9uIHsKICAgICAgICAgdWludHB0cl90IG51bWJlcjsKICAgICAgICAg
V3JpdGVCYXJyaWVyQmFzZTxKU1N0cmluZz4gc3RyaW5nOwpAQCAtNDkyLDYgKzQ5NSwxNiBAQCBj
bGFzcyBKU1JvcGVTdHJpbmcgZmluYWwgOiBwdWJsaWMgSlNTdHJpbmcgewogCiBKU19FWFBPUlRf
UFJJVkFURSBKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGVTbG93Q2FzZShWTSYsIFN0cmluZ0lt
cGwmKTsKIAoraW5saW5lIGJvb2wgSlNTdHJpbmc6OmlzOEJpdCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGlzUm9wZSgpID8gc3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4odGhpcyktPmlz
OEJpdCgpIDogbV92YWx1ZS5pczhCaXQoKTsKK30KKworQUxXQVlTX0lOTElORSB1bnNpZ25lZCBK
U1N0cmluZzo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNSb3BlKCkgPyBzdGF0aWNf
Y2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+bGVuZ3RoKCkgOiBtX3ZhbHVlLmxlbmd0
aCgpOworfQorCiBpbmxpbmUgY29uc3QgU3RyaW5nSW1wbCogSlNTdHJpbmc6OnRyeUdldFZhbHVl
SW1wbCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdmFsdWUuaW1wbCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaAppbmRleCBiZDAxZjJjMjY4NTk5ZGQxMTAwZmYxNTcyYzUxYWFhZDYwNmYzZDlj
Li44YjExMzRkN2Y0YmE2Y2NhMGU1OTA5ZTkzNDkxNTA5MWMxODlhY2IzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuaApAQCAtMjU4LDEwICsyNTgsMTAgQEAgY2xhc3MgU3RyaW5nSW1wbCA6IHBy
aXZhdGUgU3RyaW5nSW1wbFNoYXBlIHsKICAgICBzdGF0aWMgRXhwZWN0ZWQ8UmVmPFN0cmluZ0lt
cGw+LCBVVEY4Q29udmVyc2lvbkVycm9yPiB0cnlSZWFsbG9jYXRlKFJlZjxTdHJpbmdJbXBsPiYm
IG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSk7CiAKICAgICBz
dGF0aWMgdW5zaWduZWQgZmxhZ3NPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3Ry
aW5nSW1wbCwgbV9oYXNoQW5kRmxhZ3MpOyB9Ci0gICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJczhC
aXQoKSB7IHJldHVybiBzX2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQotICAgIHN0YXRpYyB1bnNpZ25l
ZCBmbGFnSXNBdG9taWMoKSB7IHJldHVybiBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljOyB9
Ci0gICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJc1N5bWJvbCgpIHsgcmV0dXJuIHNfaGFzaEZsYWdT
dHJpbmdLaW5kSXNTeW1ib2w7IH0KLSAgICBzdGF0aWMgdW5zaWduZWQgbWFza1N0cmluZ0tpbmQo
KSB7IHJldHVybiBzX2hhc2hNYXNrU3RyaW5nS2luZDsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgZmxhZ0lzOEJpdCgpIHsgcmV0dXJuIHNfaGFzaEZsYWc4Qml0QnVmZmVyOyB9Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBmbGFnSXNBdG9taWMoKSB7IHJldHVybiBzX2hh
c2hGbGFnU3RyaW5nS2luZElzQXRvbWljOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBmbGFnSXNTeW1ib2woKSB7IHJldHVybiBzX2hhc2hGbGFnU3RyaW5nS2luZElzU3ltYm9sOyB9
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXNrU3RyaW5nS2luZCgpIHsgcmV0dXJu
IHNfaGFzaE1hc2tTdHJpbmdLaW5kOyB9CiAgICAgc3RhdGljIHVuc2lnbmVkIGRhdGFPZmZzZXQo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RyaW5nSW1wbCwgbV9kYXRhOCk7IH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwg
dHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>