<?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>190429</bug_id>
          
          <creation_ts>2018-10-10 07:50:04 -0700</creation_ts>
          <short_desc>[JSC] Rename createXXX to tryCreateXXX if it can return RefPtr</short_desc>
          <delta_ts>2018-10-10 14:23:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>realdawei</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1467714</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-10 07:50:04 -0700</bug_when>
    <thetext>[JSC] Rename createXXX to tryCreateXXX if it can return RefPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467716</commentid>
    <comment_count>1</comment_count>
      <attachid>351960</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-10 08:15:58 -0700</bug_when>
    <thetext>Created attachment 351960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467717</commentid>
    <comment_count>2</comment_count>
      <attachid>351961</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-10 08:17:24 -0700</bug_when>
    <thetext>Created attachment 351961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467719</commentid>
    <comment_count>3</comment_count>
      <attachid>351962</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-10 08:21:32 -0700</bug_when>
    <thetext>Created attachment 351962
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467723</commentid>
    <comment_count>4</comment_count>
      <attachid>351965</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-10 08:44:47 -0700</bug_when>
    <thetext>Created attachment 351965
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467726</commentid>
    <comment_count>5</comment_count>
      <attachid>351965</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-10-10 08:50:36 -0700</bug_when>
    <thetext>Comment on attachment 351965
Patch

r=me if it builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467732</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-10 09:24:25 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #5)
&gt; Comment on attachment 351965 [details]
&gt; Patch
&gt; 
&gt; r=me if it builds

Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467733</commentid>
    <comment_count>7</comment_count>
      <attachid>351967</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-10 09:25:12 -0700</bug_when>
    <thetext>Created attachment 351967
Patch

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467736</commentid>
    <comment_count>8</comment_count>
      <attachid>351968</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-10 09:38:47 -0700</bug_when>
    <thetext>Created attachment 351968
Patch

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467738</commentid>
    <comment_count>9</comment_count>
      <attachid>351969</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-10 09:58:49 -0700</bug_when>
    <thetext>Created attachment 351969
Patch

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467774</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-10 11:29:50 -0700</bug_when>
    <thetext>Committed r237009: &lt;https://trac.webkit.org/changeset/237009&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467775</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-10 11:30:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/45167096&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467813</commentid>
    <comment_count>12</comment_count>
    <who name="Dawei Fenton (:realdawei)">realdawei</who>
    <bug_when>2018-10-10 13:35:07 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #10)
&gt; Committed r237009: &lt;https://trac.webkit.org/changeset/237009&gt;

Windows build appears to have been broken by this revision:

sample output:
https://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29/builds/12371/steps/compile-webkit/logs/stdio

  WebCoreTestSupport.vcxproj -&gt; C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\lib32\WebCoreTestSupport.lib
WebKitSystemInterface.lib(MediaUI.obj) : warning LNK4099: PDB &apos;WebKitSystemInterface.pdb&apos; was not found with &apos;WebKitSystemInterface.lib(MediaUI.obj)&apos; or at &apos;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\bin32\WebKitSystemInterface.pdb&apos;; linking object as if no debug info [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Tools\TestWebKitAPI\TestWebCoreLib.vcxproj]
WebKitSystemInterface.lib(WebKitSystemInterface.obj) : warning LNK4099: PDB &apos;WebKitSystemInterface.pdb&apos; was not found with &apos;WebKitSystemInterface.lib(WebKitSystemInterface.obj)&apos; or at &apos;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\bin32\WebKitSystemInterface.pdb&apos;; linking object as if no debug info [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Tools\TestWebKitAPI\TestWebCoreLib.vcxproj]
WebKitSystemInterface.lib(WebKitSystemInterfacePrefix.obj) : warning LNK4099: PDB &apos;WebKitSystemInterface.pdb&apos; was not found with &apos;WebKitSystemInterface.lib(WebKitSystemInterfacePrefix.obj)&apos; or at &apos;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\bin32\WebKitSystemInterface.pdb&apos;; linking object as if no debug info [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Tools\TestWebKitAPI\TestWebCoreLib.vcxproj]
WebKitSystemInterface.lib(SharedMediaUI.obj) : warning LNK4099: PDB &apos;WebKitSystemInterface.pdb&apos; was not found with &apos;WebKitSystemInterface.lib(SharedMediaUI.obj)&apos; or at &apos;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\bin32\WebKitSystemInterface.pdb&apos;; linking object as if no debug info [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Tools\TestWebKitAPI\TestWebCoreLib.vcxproj]
  WebDatabaseProvider.cpp
     Creating library C:/cygwin/home/buildbot/slave/win-release/build/WebKitBuild/Release/lib32/TestWebCoreLib.lib and object C:/cygwin/home/buildbot/slave/win-release/build/WebKitBuild/Release/lib32/TestWebCoreLib.exp
WebCore.lib(MediaPlayerPrivateAVFoundationCF.obj) : error LNK2019: unresolved external symbol &quot;public: class JSC::MarkedBlock &amp; __thiscall JSC::HeapCell::markedBlock(void)const &quot; (?markedBlock@HeapCell@JSC@@QBEAAVMarkedBlock@2@XZ) referenced in function &quot;public: virtual class JSC::JSArrayBufferView * __thiscall JSC::GenericTypedArrayView&lt;struct JSC::Uint16Adaptor&gt;::wrap(class JSC::ExecState *,class JSC::JSGlobalObject *)&quot; (?wrap@?$GenericTypedArrayView@UUint16Adaptor@JSC@@@JSC@@UAEPAVJSArrayBufferView@2@PAVExecState@2@PAVJSGlobalObject@2@@Z) [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Tools\TestWebKitAPI\TestWebCoreLib.vcxproj]
WebCore.lib(MediaPlayerPrivateAVFoundationCF.obj) : error LNK2019: unresolved external symbol &quot;public: static class JSC::Heap * __cdecl JSC::Heap::heap(class JSC::HeapCell const *)&quot; (?heap@Heap@JSC@@SAPAV12@PBVHeapCell@2@@Z) referenced in function &quot;public: virtual class JSC::JSArrayBufferView * __thiscall JSC::GenericTypedArrayView&lt;struct JSC::Uint16Adaptor&gt;::wrap(class JSC::ExecState *,class JSC::JSGlobalObject *)&quot; (?wrap@?$GenericTypedArrayView@UUint16Adaptor@JSC@@@JSC@@UAEPAVJSArrayBufferView@2@PAVExecState@2@PAVJSGlobalObject@2@@Z) [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Tools\TestWebKitAPI\TestWebCoreLib.vcxproj]
WebCore.lib(MediaPlayerPrivateAVFoundationCF.obj) : error LNK2019: unresolved external symbol &quot;public: class JSC::VM * __thiscall JSC::Heap::vm(void)const &quot; (?vm@Heap@JSC@@QBEPAVVM@2@XZ) referenced in function &quot;void * __cdecl JSC::allocateCell&lt;class JSC::JSGenericTypedArrayView&lt;struct JSC::Uint16Adaptor&gt; &gt;(class JSC::Heap &amp;,unsigned int)&quot; (??$allocateCell@V?$JSGenericTypedArrayView@UUint16Adaptor@JSC@@@JSC@@@JSC@@YAPAXAAVHeap@0@I@Z) [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Tools\TestWebKitAPI\TestWebCoreLib.vcxproj]
C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\bin32\TestWebCoreLib.dll : fatal error LNK1120: 3 unresolved externals [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Tools\TestWebKitAPI\TestWebCoreLib.vcxproj]
  WebDatabaseProvider.cpp
WebKitSystemInterface.lib(WebKitSystemInterface.obj) : warning LNK4099: PDB &apos;WebKitSystemInterface.pdb&apos; was not found with &apos;WebKitSystemInterface.lib(WebKitSystemInterface.obj)&apos; or at &apos;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\bin32\WebKitSystemInterface.pdb&apos;; linking object as if no debug info [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Source\WebKitLegacy\WebKitLegacy.vcxproj]
WebKitSystemInterface.lib(MediaUI.obj) : warning LNK4099: PDB &apos;WebKitSystemInterface.pdb&apos; was not found with &apos;WebKitSystemInterface.lib(MediaUI.obj)&apos; or at &apos;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\bin32\WebKitSystemInterface.pdb&apos;; linking object as if no debug info [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Source\WebKitLegacy\WebKitLegacy.vcxproj]
WebKitSystemInterface.lib(WebKitSystemInterfacePrefix.obj) : warning LNK4099: PDB &apos;WebKitSystemInterface.pdb&apos; was not found with &apos;WebKitSystemInterface.lib(WebKitSystemInterfacePrefix.obj)&apos; or at &apos;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\bin32\WebKitSystemInterface.pdb&apos;; linking object as if no debug info [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Source\WebKitLegacy\WebKitLegacy.vcxproj]
WebKitSystemInterface.lib(SharedMediaUI.obj) : warning LNK4099: PDB &apos;WebKitSystemInterface.pdb&apos; was not found with &apos;WebKitSystemInterface.lib(SharedMediaUI.obj)&apos; or at &apos;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\bin32\WebKitSystemInterface.pdb&apos;; linking object as if no debug info [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Source\WebKitLegacy\WebKitLegacy.vcxproj]
     Creating library C:/cygwin/home/buildbot/slave/win-release/build/WebKitBuild/Release/lib32/WebKit.lib and object C:/cygwin/home/buildbot/slave/win-release/build/WebKitBuild/Release/lib32/WebKit.exp
WebCore.lib(MediaPlayerPrivateAVFoundationCF.obj) : error LNK2019: unresolved external symbol &quot;public: class JSC::MarkedBlock &amp; __thiscall JSC::HeapCell::markedBlock(void)const &quot; (?markedBlock@HeapCell@JSC@@QBEAAVMarkedBlock@2@XZ) referenced in function &quot;public: virtual class JSC::JSArrayBufferView * __thiscall JSC::GenericTypedArrayView&lt;struct JSC::Uint16Adaptor&gt;::wrap(class JSC::ExecState *,class JSC::JSGlobalObject *)&quot; (?wrap@?$GenericTypedArrayView@UUint16Adaptor@JSC@@@JSC@@UAEPAVJSArrayBufferView@2@PAVExecState@2@PAVJSGlobalObject@2@@Z) [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Source\WebKitLegacy\WebKitLegacy.vcxproj]
WebCore.lib(MediaPlayerPrivateAVFoundationCF.obj) : error LNK2019: unresolved external symbol &quot;public: static class JSC::Heap * __cdecl JSC::Heap::heap(class JSC::HeapCell const *)&quot; (?heap@Heap@JSC@@SAPAV12@PBVHeapCell@2@@Z) referenced in function &quot;public: virtual class JSC::JSArrayBufferView * __thiscall JSC::GenericTypedArrayView&lt;struct JSC::Uint16Adaptor&gt;::wrap(class JSC::ExecState *,class JSC::JSGlobalObject *)&quot; (?wrap@?$GenericTypedArrayView@UUint16Adaptor@JSC@@@JSC@@UAEPAVJSArrayBufferView@2@PAVExecState@2@PAVJSGlobalObject@2@@Z) [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Source\WebKitLegacy\WebKitLegacy.vcxproj]
WebCore.lib(MediaPlayerPrivateAVFoundationCF.obj) : error LNK2019: unresolved external symbol &quot;public: class JSC::VM * __thiscall JSC::Heap::vm(void)const &quot; (?vm@Heap@JSC@@QBEPAVVM@2@XZ) referenced in function &quot;void * __cdecl JSC::allocateCell&lt;class JSC::JSGenericTypedArrayView&lt;struct JSC::Uint16Adaptor&gt; &gt;(class JSC::Heap &amp;,unsigned int)&quot; (??$allocateCell@V?$JSGenericTypedArrayView@UUint16Adaptor@JSC@@@JSC@@@JSC@@YAPAXAAVHeap@0@I@Z) [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Source\WebKitLegacy\WebKitLegacy.vcxproj]
C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\bin32\WebKit.dll : fatal error LNK1120: 3 unresolved externals [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Source\WebKitLegacy\WebKitLegacy.vcxproj]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467829</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-10 14:23:48 -0700</bug_when>
    <thetext>Committed r237017: &lt;https://trac.webkit.org/changeset/237017&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351960</attachid>
            <date>2018-10-10 08:15:58 -0700</date>
            <delta_ts>2018-10-10 08:17:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190429-20181011001557.patch</filename>
            <type>text/plain</type>
            <size>131258</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NWRkYTc3YTg1YTkxNzUyZTZkNjZjM2U4MGI2NGEwZjE4YzRhNzIyLi44ZWU5ODNjZTJmNDUzNmRj
NWMxOGZhZmQ4NWY2ODAxMGZmMmFkYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjQgQEAKKzIwMTgtMTAtMTAgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xv
d3N0YXJ0Lm9yZz4KKworICAgICAgICBbSlNDXSBSZW5hbWUgY3JlYXRlWFhYIHRvIHRyeUNyZWF0
ZVhYWCBpZiBpdCBjYW4gcmV0dXJuIFJlZlB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU29tZSBjcmVhdGVYWFggZnVuY3Rpb25zIGNhbiBmYWlsLiBC
dXQgc29tZXRpbWVzIHRoZSBjYWxsZXIgZG9lcyBub3QgcGVyZm9ybSBlcnJvciBjaGVja2luZy4K
KyAgICAgICAgVG8gbWFrZSBpdCBleHBsaWNpdCB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBjYW4gZmFp
bCwgd2UgcmVuYW1lIHRoZXNlIGZ1bmN0aW9ucyBmcm9tIGNyZWF0ZVhYWAorICAgICAgICB0byB0
cnlDcmVhdGVYWFguIEluIHRoaXMgcGF0Y2gsIHdlIGZvY3VzIG9uIG5vbi1KUy1tYW5hZ2VkIGZh
Y3RvcnkgZnVuY3Rpb25zLiBJZiB0aGUgZmFjdG9yeQorICAgICAgICBmdW5jdGlvbiBkb2VzIG5v
dCBmYWlsLCBpdCBzaG91bGQgcmV0dXJuIFJlZjw+LiBPdGhlcndpc2UsIGl0IHNob3VsZCBiZSBu
YW1lZCBhcyB0cnlDcmVhdGVYWFgKKyAgICAgICAgYW5kIGl0IHNob3VsZCByZXR1cm4gUmVmUHRy
PD4uCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWlubHkgZm9jdXNlcyBvbiBUeXBlZEFycmF5IGZh
Y3RvcnkgZnVuY3Rpb25zLiBQcmV2aW91c2x5LCB0aGVzZSBmdW5jdGlvbnMgYXJlCisgICAgICAg
IGBSZWZQdHI8WFhYQXJyYXk+IGNyZWF0ZSguLi4pYC4gVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZW0g
dG8gYFJlZlB0cjxYWFhBcnJheT4gdHJ5Q3JlYXRlKC4uLilgLgorICAgICAgICBBbmQgd2UgYWxz
byBpbnRyb2R1Y2UgYFJlZjxYWFhBcnJheT4gY3JlYXRlKC4uLilgIGZ1bmN0aW9uIHdoaWNoIGlu
dGVybmFsbHkgcGVyZm9ybXMKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQgb24gdGhlIHJlc3VsdCBv
ZiBgdHJ5Q3JlYXRlKC4uLilgLgorCisgICAgICAgIEFuZCB3ZSBhbHNvIGNvbnZlcnQgT3BhcXVl
SlNTdHJpbmc6OmNyZWF0ZSB0byBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlIHNpbmNlIGl0IGNh
biBmYWlsLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFjdHVhbGx5IGZpbmRzIG9uZSBwbGFjZSB3
aGljaCBkb2VzIG5vdCBwZXJmb3JtIGFueSBudWxsIGNoZWNraW5ncyB3aGlsZSBpdCB1c2VzCisg
ICAgICAgIGBSZWZQdHI8PiBjcmVhdGUoLi4uKWAgZnVuY3Rpb24uCisKKyAgICAgICAgKiBBUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpwdXRCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Y2FsbGJhY2tHZXR0ZXIpOgorICAgICAgICAqIEFQSS9KU0NsYXNzUmVmLmg6CisgICAg
ICAgIChTdGF0aWNWYWx1ZUVudHJ5OjpTdGF0aWNWYWx1ZUVudHJ5KToKKyAgICAgICAgKiBBUEkv
SlNDb250ZXh0Lm1tOgorICAgICAgICAoLVtKU0NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6d2l0aFNv
dXJjZVVSTDpdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IHNldE5hbWU6XSk6CisgICAgICAgICog
QVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRDb3B5TmFtZSk6
CisgICAgICAgIChKU0NvbnRleHRDcmVhdGVCYWNrdHJhY2UpOgorICAgICAgICAqIEFQSS9KU09i
amVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAqIEFQSS9KU1N0cmluZ1JlZi5jcHA6
CisgICAgICAgIChKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KToKKyAgICAgICAg
KiBBUEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdSZWd1bGFy
RXhwcmVzc2lvbkZyb21QYXR0ZXJuOmZsYWdzOmluQ29udGV4dDpdKToKKyAgICAgICAgKCtbSlNW
YWx1ZSB2YWx1ZVdpdGhOZXdFcnJvckZyb21NZXNzYWdlOmluQ29udGV4dDpdKToKKyAgICAgICAg
KCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246aW5Db250ZXh0Ol0p
OgorICAgICAgICAocGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uKToKKyAgICAgICAgKC1bSlNWYWx1
ZSBpbnZva2VNZXRob2Q6d2l0aEFyZ3VtZW50czpdKToKKyAgICAgICAgKGNvbnRhaW5lclZhbHVl
VG9PYmplY3QpOgorICAgICAgICAob2JqZWN0VG9WYWx1ZVdpdGhvdXRDb3B5KToKKyAgICAgICAg
KG9iamVjdFRvVmFsdWUpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmNwcDoKKyAgICAgICAg
KEpTVmFsdWVDcmVhdGVKU09OU3RyaW5nKToKKyAgICAgICAgKEpTVmFsdWVUb1N0cmluZ0NvcHkp
OgorICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmluZy5jcHA6CisgICAgICAgIChPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUpOiBEZWxl
dGVkLgorICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmluZy5oOgorICAgICAgICAqIEFQSS9nbGli
L0pTQ0NvbnRleHQuY3BwOgorICAgICAgICAoZXZhbHVhdGVTY3JpcHRJbkNvbnRleHQpOgorICAg
ICAgICAqIEFQSS9nbGliL0pTQ1ZhbHVlLmNwcDoKKyAgICAgICAgKGpzY192YWx1ZV9uZXdfc3Ry
aW5nX2Zyb21fYnl0ZXMpOgorICAgICAgICAqIGZ0bC9GVExMYXp5U2xvd1BhdGguaDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpMYXp5U2xvd1BhdGg6OmNyZWF0ZUdlbmVyYXRvcik6CisgICAgICAgICog
ZnRsL0ZUTExhenlTbG93UGF0aENhbGwuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpjcmVhdGVMYXp5
Q2FsbEdlbmVyYXRvcik6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXQuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6Ok9TUkV4aXREZXNjcmlwdG9yOjplbWl0T1NSRXhpdCk6CisgICAgICAgIChKU0M6
OkZUTDo6T1NSRXhpdERlc2NyaXB0b3I6OmVtaXRPU1JFeGl0TGF0ZXIpOgorICAgICAgICAoSlND
OjpGVEw6Ok9TUkV4aXREZXNjcmlwdG9yOjpwcmVwYXJlT1NSRXhpdEhhbmRsZSk6CisgICAgICAg
ICogZnRsL0ZUTE9TUkV4aXQuaDoKKyAgICAgICAgKiBmdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlv
bkhhbmRsZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxl
OjpjcmVhdGVIYW5kbGUpOgorICAgICAgICAqIGZ0bC9GVExQYXRjaHBvaW50RXhjZXB0aW9uSGFu
ZGxlLmg6CisgICAgICAgICogaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg6CisgICAgICAg
IChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRWRlblRpbWVyKToKKyAgICAgICAg
KEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIGhlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oOgorICAgICAgICAoSlNDOjpHQ0Fj
dGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUZ1bGxUaW1lcik6CisgICAgICAgIChKU0M6OkdDQWN0
aXZpdHlDYWxsYmFjazo6Y3JlYXRlRnVsbFRpbWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFw
L0dDQWN0aXZpdHlDYWxsYmFjay5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAg
IChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAqIGluc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2Uu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpBc3luY1N0YWNrVHJhY2U6OmNyZWF0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5oOgorICAgICAgICAqIGpzYy5jcHA6Cisg
ICAgICAgIChmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKiBydW50aW1l
L0FycmF5QnVmZmVyLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcu
aDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0
aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2li
bHlTaGFyZWRJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6cG9zc2libHlTaGFyZWRUeXBlZEltcGwpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBlZEltcGwpOgorICAgICAgICAqIHdhc20v
V2FzbU1lbW9yeS5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAqIHdhc20vV2Fz
bU1lbW9yeS5oOgorICAgICAgICAqIHdhc20vV2FzbVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6VGFibGU6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6Oldhc206OlRhYmxlOjpjcmVh
dGUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbVRhYmxlLmg6CisgICAgICAgICogd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVt
b3J5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6SlNXZWJBc3NlbWJs
eU1lbW9yeSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeSk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6
OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2Vi
QXNzZW1ibHlUYWJsZSk6CisKIDIwMTgtMTAtMDkgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNob3cgcmVkaXJlY3QgcmVxdWVzdHMg
aW4gTmV0d29yayBhbmQgVGltZWxpbmVzIHRhYnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NjMzYTRjNTQ3MGM0
YWVhY2NkMTRlOWJiODQ2NjM1OTZkMGZiMTliLi4wM2RjZGVmMzM5OTQ0NjU3N2UxOWEzNjMzY2Ez
ZDJkNGJjNGZmNjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjE0IEBACisyMDE4LTEwLTEwICBZ
dXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgW0pT
Q10gUmVuYW1lIGNyZWF0ZVhYWCB0byB0cnlDcmVhdGVYWFggaWYgaXQgY2FuIHJldHVybiBSZWZQ
dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDQy
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBg
dHJ5Q3JlYXRlYCBvciBuZXcgYGNyZWF0ZWAuIElmIHdlIHVzZSBuZXcgYGNyZWF0ZWAsIHdlIGNh
biB1c2UgUmVmPD4gYW5kIHJlbW92ZSBudWxsIGNoZWNrLgorCisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVNlc3Npb25DbGVhcktleTo6Y2FjaGVkS2V5Rm9yS2V5SUQgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0J1ZmZlcjo6QXVkaW9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9C
dWZmZXI6OmdldENoYW5uZWxEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSRXllUGFy
YW1ldGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWUkV5ZVBhcmFtZXRlcnM6Om9mZnNldCBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjptYXRyaXhUb0FycmF5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSUG9z
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcHRpb25hbEZsb2F0M1RvSlNDQXJyYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6VlJQb3NlOjpwb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWUlBvc2U6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZS
U3RhZ2VQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZSU3RhZ2VQYXJhbWV0ZXJz
OjpzaXR0aW5nVG9TdGFuZGluZ1RyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6ZW5xdWV1ZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNs
b25lRGVzZXJpYWxpemVyOjpyZWFkQXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBjcnlwdG8v
Z2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9L
ZXlSU0E6OmFsZ29yaXRobSBjb25zdCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9LZXlS
U0FNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjphbGdvcml0aG0gY29u
c3QpOgorICAgICAgICAqIGNzcy9ET01NYXRyaXhSZWFkT25seS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01NYXRyaXhSZWFkT25seTo6dG9GbG9hdDMyQXJyYXkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NTWF0cml4UmVhZE9ubHk6OnRvRmxvYXQ2NEFycmF5IGNvbnN0KToKKyAgICAg
ICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmNyZWF0
ZSk6CisgICAgICAgICogZG9tL1RleHRFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRFbmNvZGVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6SW1hZ2VEYXRhKToKKyAgICAgICAgKiBodG1s
L0ltYWdlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRWZXJ0ZXhBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFdlYkdMSW50QXJyYXlQ
YXJhbWV0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0
ZUZyb21Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JM
b2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAgICAgIChXZWJD
b3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpyZWxlYXNl
S2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6
dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
OjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpnZW5lcmF0ZUtleVJlcXVl
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVlN0cmVhbVNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZT
dHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
U2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1w
bGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpnZXRS
R0JBSW1hZ2VEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldElt
YWdlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRh
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRSZXN1bHQpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdl
UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlw
bGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEYXRhRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRh
OjpnZXREYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpqc1ZhbHVlV2l0aERp
Y3Rpb25hcnlJbkNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tUcmFja0JveDo6TW9ja1RyYWNrQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJbml0aWFs
aXphdGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9uQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tTYW1wbGVCb3g6Ok1vY2tTYW1wbGVCb3gpOgorICAgICAgICAqIHRlc3RpbmcvTGVnYWN5TW9j
a0NETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0RGF0YVByZWZpeCk6CisgICAgICAgIChX
ZWJDb3JlOjprZXlQcmVmaXgpOgorICAgICAgICAoV2ViQ29yZTo6a2V5UmVxdWVzdCk6CisKKyAg
ICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xl
YXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkNsZWFyS2V5OjpjYWNoZWRL
ZXlGb3JLZXlJRCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50Lm1tOgorICAgICAgICAoV2ViQ29yZTo6anNWYWx1ZVdpdGhEaWN0aW9u
YXJ5SW5Db250ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpBdWRpb0J1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0J1ZmZlcjo6Z2V0Q2hhbm5lbERhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvd2VidnIvVlJFeWVQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZSRXllUGFy
YW1ldGVyczo6b2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSRnJhbWVE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hdHJpeFRvQXJyYXkpOgorICAgICAgICAqIE1v
ZHVsZXMvd2VidnIvVlJQb3NlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wdGlvbmFsRmxvYXQz
VG9KU0NBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpWUlBvc2U6OnBvc2l0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlZSUG9zZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvd2VidnIvVlJTdGFnZVBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VlJTdGFnZVBhcmFtZXRlcnM6OnNpdHRpbmdUb1N0YW5kaW5nVHJhbnNmb3JtIGNvbnN0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyOjplbnF1ZXVl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlclZpZXcpOgor
ICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6YWxnb3JpdGhtIGNvbnN0KToKKyAgICAgICAgKiBjcnlw
dG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlS
U0E6OmFsZ29yaXRobSBjb25zdCk6CisgICAgICAgICogY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU1hdHJpeFJlYWRPbmx5Ojp0b0Zsb2F0MzJBcnJheSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpET01NYXRyaXhSZWFkT25seTo6dG9GbG9hdDY0QXJy
YXkgY29uc3QpOgorICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb250RmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBkb20vVGV4dEVuY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dEVuY29kZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogaHRt
bC9JbWFnZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpJbWFnZURhdGEp
OgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURh
dGE6OmRhdGEgY29uc3QpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbnRlcm5hbGZvcm1hdFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcik6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFZlcnRleEF0dHJpYik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRXZWJHTEZsb2F0QXJyYXlQ
YXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0V2ViR0xJbnRBcnJheVBhcmFtZXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmV4dHJhY3RLZXlVUklL
ZXlJREFuZENlcnRpZmljYXRlRnJvbUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6Z2VuZXJhdGVLZXlSZXF1ZXN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBl
cjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpnZW5l
cmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWQ29udGVudEtl
eVNlc3Npb246OnJlbGVhc2VLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNv
bnRlbnRLZXlTZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFW
Q29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRp
b25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6
OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpyZWxlYXNlS2V5cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJl
bGVhc2VNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxv
YWRpbmdPZlJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNh
bXBsZUFWRk9iakM6OmdldFJHQkFJbWFnZURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRh
dGE6OmdldERhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVHYXVzc2lhbkJsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp1bm11
bHRpcGxpZWRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpwcmVtdWx0
aXBsaWVkUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weVVubXVs
dGlwbGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVt
dWx0aXBsaWVkUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRl
VW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0
OjpjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0v
bW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tCb3g6
OnBlZWtUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tCb3g6OnBlZWtMZW5ndGgpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1RyYWNrQm94OjpNb2NrVHJhY2tCb3gpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2NrSW5pdGlhbGl6YXRpb25Cb3gpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1NhbXBsZUJveDo6TW9ja1NhbXBsZUJveCk6CisgICAgICAgICog
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3Jl
YXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHRlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjppbml0RGF0YVByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjprZXlQ
cmVmaXgpOgorICAgICAgICAoV2ViQ29yZTo6a2V5UmVxdWVzdCk6CisKIDIwMTgtMTAtMTAgIFl1
c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KIAogICAgICAgICBYTUxI
dHRwUmVxdWVzdCBzaG91bGQgdXNlIHJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkL3JlcG9ydEV4
dHJhTWVtb3J5VmlzaXRlZCBpbnN0ZWFkIG9mIGRlcHJlY2F0ZWRSZXBvcnRFeHRyYU1lbW9yeQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA2ZWYwNTBhMDg0YWQ4NWRiYWMwODc3YzAxZWE1OTMyOTU0ODQwZDU5Li4wYTNj
ODRmYzAzMDcwY2UzZmMxOWMzN2RmOTdiOTczYmRlN2I3ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIyIEBACisyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFy
dC5vcmc+CisKKyAgICAgICAgW0pTQ10gUmVuYW1lIGNyZWF0ZVhYWCB0byB0cnlDcmVhdGVYWFgg
aWYgaXQgY2FuIHJldHVybiBSZWZQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MDQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSBgdHJ5Q3JlYXRlYCBvciBuZXcgYGNyZWF0ZWAuIElmIHdlIHVz
ZSBuZXcgYGNyZWF0ZWAsIHdlIGNhbiB1c2UgUmVmPD4gYW5kIHJlbW92ZSBudWxsIGNoZWNrLgor
CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcDoKKyAgICAgICAgKFdLU3RyaW5n
Q29weUpTU3RyaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRvSlNWYWx1ZSk6CisgICAg
ICAgIChXZWJLaXQ6OmNhbGxQcm9wZXJ0eUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2NyaXB0T2JqZWN0Rm9yRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5j
dGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06Cisg
ICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6cnVuU2NyaXB0c0luUERGRG9jdW1lbnQpOgorCiAy
MDE4LTEwLTA5ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHRoZSBmcmFtZXMoKSB0aW1pbmcgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5n
ZUxvZwppbmRleCA4YWYzYzNjZDU1Y2VhNmY1MGQzNzU4MDFkYjdmYjkxZGZlOWM2N2Q1Li42ZTZh
M2UzMzcwMzkyN2ZkNGYwZjkyODA2YTA4NzVkNDgzNDgyMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgtMTAtMTAgIFl1c3VrZSBTdXp1a2kgIDx5
dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBbSlNDXSBSZW5hbWUgY3JlYXRl
WFhYIHRvIHRyeUNyZWF0ZVhYWCBpZiBpdCBjYW4gcmV0dXJuIFJlZlB0cgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDI5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGB0cnlDcmVhdGVgIG9yIG5l
dyBgY3JlYXRlYC4gSWYgd2UgdXNlIG5ldyBgY3JlYXRlYCwgd2UgY2FuIHVzZSBSZWY8PiBhbmQg
cmVtb3ZlIG51bGwgY2hlY2suCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXdJT1MubW06
CisgICAgICAgICgtW1dlYlBERlZpZXcgZmluaXNoZWRMb2FkaW5nV2l0aERhdGFTb3VyY2U6XSk6
CisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW06CisgICAgICAgICgt
W1dlYlBERlZpZXdQbGFjZWhvbGRlciBfZXZhbHVhdGVKU0ZvckRvY3VtZW50Ol0pOgorCiAyMDE4
LTEwLTAyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmVtb3ZlIHVudXNlZCBsaW5rZWQtb24tb3ItYmVmb3JlLWlPUzUgY2hlY2sKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBkNTRhMjdjNmZkYmIwZGNkN2UxMDUwNmU1OTdmNWZl
ZDEwMzViNWU0Li4zOGE2OWZmNmJkMDMxZDc5MWJlZWNkNjA5NWNiMDNhN2JhMjkxNTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMTAtMTAgIFl1
c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBbSlND
XSBSZW5hbWUgY3JlYXRlWFhYIHRvIHRyeUNyZWF0ZVhYWCBpZiBpdCBjYW4gcmV0dXJuIFJlZlB0
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDI5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGB0
cnlDcmVhdGVgIG9yIG5ldyBgY3JlYXRlYC4gSWYgd2UgdXNlIG5ldyBgY3JlYXRlYCwgd2UgY2Fu
IHVzZSBSZWY8PiBhbmQgcmVtb3ZlIG51bGwgY2hlY2suCisKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlBERlJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoLVtXZWJQREZSZXByZXNlbnRhdGlvbiBm
aW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTpdKToKKwogMjAxOC0xMC0wOCAgSnVzdGluIEZh
biAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkdQVTogUmVuYW1lIG9sZCBX
ZWJHUFUgcHJvdG90eXBlIHRvIFdlYk1ldGFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDE1Yjg2MDg2NmRlYTky
Mjg0Yjc4YTBkNzA3ZDgwMTY2NTk4NzcxZDEuLjRmNGI3ZDcxZWUwOTI5NTU3YzI4ZTIwYjhhZDg3
YzNkYjVlN2NiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC0xNTUsNyArMTU1LDcgQEAgYm9vbCBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGUKICAgICAgICAgICAgIC8vIG9wdGlvbmFsIG9wdGltaXphdGlvbiB0byBieXBh
c3MgZ2V0UHJvcGVydHkgaW4gY2FzZXMgd2hlbiB3ZSBvbmx5IG5lZWQgdG8ga25vdyBpZiB0aGUg
cHJvcGVydHkgZXhpc3RzCiAgICAgICAgICAgICBpZiAoSlNPYmplY3RIYXNQcm9wZXJ0eUNhbGxi
YWNrIGhhc1Byb3BlcnR5ID0ganNDbGFzcy0+aGFzUHJvcGVydHkpIHsKICAgICAgICAgICAgICAg
ICBpZiAoIXByb3BlcnR5TmFtZVJlZikKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1l
UmVmID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAg
cHJvcGVydHlOYW1lUmVmID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShuYW1lKTsKICAgICAg
ICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZXhlYyk7CiAgICAg
ICAgICAgICAgICAgaWYgKGhhc1Byb3BlcnR5KGN0eCwgdGhpc1JlZiwgcHJvcGVydHlOYW1lUmVm
LmdldCgpKSkgewogICAgICAgICAgICAgICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0sIGNhbGxiYWNrR2V0dGVyKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSBpZiAoSlNPYmpl
Y3RHZXRQcm9wZXJ0eUNhbGxiYWNrIGdldFByb3BlcnR5ID0ganNDbGFzcy0+Z2V0UHJvcGVydHkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKLSAgICAgICAgICAgICAg
ICAgICAgcHJvcGVydHlOYW1lUmVmID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShuYW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lUmVmID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNy
ZWF0ZShuYW1lKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAg
ICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiB2YWx1ZTsKICAgICAgICAgICAgICAgICB7CkBAIC0y
NTIsNyArMjUyLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHAKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdFNldFBy
b3BlcnR5Q2FsbGJhY2sgc2V0UHJvcGVydHkgPSBqc0NsYXNzLT5zZXRQcm9wZXJ0eSkgewogICAg
ICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQotICAgICAgICAgICAgICAgICAgICBw
cm9wZXJ0eU5hbWVSZWYgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKG5hbWUpOworICAgICAgICAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWYgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG5h
bWUpOwogICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICAgICAg
ICAgICAgICBib29sIHJlc3VsdDsKICAgICAgICAgICAgICAgICB7CkBAIC0zMTYsNyArMzE2LDcg
QEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmUKICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewogICAgICAgICBpZiAoSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIHNldFBy
b3BlcnR5ID0ganNDbGFzcy0+c2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgIGlmICghcHJvcGVy
dHlOYW1lUmVmKQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3Ry
aW5nOjpjcmVhdGUocHJvcGVydHlOYW1lLmltcGwoKSk7CisgICAgICAgICAgICAgICAgcHJvcGVy
dHlOYW1lUmVmID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShwcm9wZXJ0eU5hbWUuaW1wbCgp
KTsKICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICAgICAgICAgIGJv
b2wgcmVzdWx0OwogICAgICAgICAgICAgewpAQCAtMzc1LDcgKzM3NSw3IEBAIGJvb2wgSlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvCiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iamVj
dC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7
CiAgICAgICAgICAgICBpZiAoSlNPYmplY3REZWxldGVQcm9wZXJ0eUNhbGxiYWNrIGRlbGV0ZVBy
b3BlcnR5ID0ganNDbGFzcy0+ZGVsZXRlUHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAo
IXByb3BlcnR5TmFtZVJlZikKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lUmVmID0g
T3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVy
dHlOYW1lUmVmID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShuYW1lKTsKICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgYm9vbCByZXN1
bHQ7CiAgICAgICAgICAgICAgICAgewpAQCAtNjc5LDcgKzY3OSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tHZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkCiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+Y2xh
c3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAg
ICAgICAgICBpZiAoSlNPYmplY3RHZXRQcm9wZXJ0eUNhbGxiYWNrIGdldFByb3BlcnR5ID0ganND
bGFzcy0+Z2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJl
ZikKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lUmVmID0gT3BhcXVlSlNTdHJpbmc6
OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lUmVmID0gT3Bh
cXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShuYW1lKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVm
IGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiB2YWx1ZTsKICAgICAg
ICAgICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xh
c3NSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5oCmluZGV4IGZh
MDI0ZDM0NGY0NmM1MWJhZDIwZTE1NDBmYWZlOTJhYTVhY2MxOTUuLjkwYzRmNTM5MDA1YzgyYjBl
MjNhYjkxMjA3Njk5YWVhNGEwMzlhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDbGFzc1JlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFz
c1JlZi5oCkBAIC0zNyw3ICszNywxMCBAQCBzdHJ1Y3QgU3RhdGljVmFsdWVFbnRyeSB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU3RhdGljVmFsdWVFbnRyeShK
U09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgX2dldFByb3BlcnR5LCBKU09iamVjdFNldFByb3Bl
cnR5Q2FsbGJhY2sgX3NldFByb3BlcnR5LCBKU1Byb3BlcnR5QXR0cmlidXRlcyBfYXR0cmlidXRl
cywgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCi0gICAgOiBnZXRQcm9wZXJ0eShfZ2V0UHJvcGVydHkp
LCBzZXRQcm9wZXJ0eShfc2V0UHJvcGVydHkpLCBhdHRyaWJ1dGVzKF9hdHRyaWJ1dGVzKSwgcHJv
cGVydHlOYW1lUmVmKE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocHJvcGVydHlOYW1lKSkKKyAgICAg
ICAgOiBnZXRQcm9wZXJ0eShfZ2V0UHJvcGVydHkpCisgICAgICAgICwgc2V0UHJvcGVydHkoX3Nl
dFByb3BlcnR5KQorICAgICAgICAsIGF0dHJpYnV0ZXMoX2F0dHJpYnV0ZXMpCisgICAgICAgICwg
cHJvcGVydHlOYW1lUmVmKE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUocHJvcGVydHlOYW1lKSkK
ICAgICB7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHQubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQpp
bmRleCA3Zjg1Njk2NWUyODc3MTE3OWFiNDhmYmUwM2IzODFlMjdiMzg5OTE1Li4yNzU2NmY0MWI5
N2UxYjM5YmRkZTliNDhhYWE1NTlmMTRjYjczOWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dC5tbQpAQCAtMTAwLDggKzEwMCw4IEBAIC0gKEpTVmFsdWUgKilldmFsdWF0ZVNj
cmlwdDooTlNTdHJpbmcgKilzY3JpcHQKIC0gKEpTVmFsdWUgKilldmFsdWF0ZVNjcmlwdDooTlNT
dHJpbmcgKilzY3JpcHQgd2l0aFNvdXJjZVVSTDooTlNVUkwgKilzb3VyY2VVUkwKIHsKICAgICBK
U1ZhbHVlUmVmIGV4Y2VwdGlvblZhbHVlID0gbnVsbHB0cjsKLSAgICBhdXRvIHNjcmlwdEpTID0g
T3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShzY3JpcHQpOwotICAgIGF1dG8gc291cmNlVVJMSlMgPSBP
cGFxdWVKU1N0cmluZzo6Y3JlYXRlKFtzb3VyY2VVUkwgYWJzb2x1dGVTdHJpbmddKTsKKyAgICBh
dXRvIHNjcmlwdEpTID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShzY3JpcHQpOworICAgIGF1
dG8gc291cmNlVVJMSlMgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKFtzb3VyY2VVUkwgYWJz
b2x1dGVTdHJpbmddKTsKICAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTRXZhbHVhdGVTY3JpcHQo
bV9jb250ZXh0LCBzY3JpcHRKUy5nZXQoKSwgbnVsbHB0ciwgc291cmNlVVJMSlMuZ2V0KCksIDAs
ICZleGNlcHRpb25WYWx1ZSk7CiAKICAgICBpZiAoZXhjZXB0aW9uVmFsdWUpCkBAIC0yMDAsNyAr
MjAwLDcgQEAgLSAoTlNTdHJpbmcgKiluYW1lCiAKIC0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcg
KiluYW1lCiB7Ci0gICAgSlNHbG9iYWxDb250ZXh0U2V0TmFtZShtX2NvbnRleHQsIE9wYXF1ZUpT
U3RyaW5nOjpjcmVhdGUobmFtZSkuZ2V0KCkpOworICAgIEpTR2xvYmFsQ29udGV4dFNldE5hbWUo
bV9jb250ZXh0LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG5hbWUpLmdldCgpKTsKIH0KIAog
LSAoQk9PTClfcmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCBmM2MwZmQxYzdlMDZkMzQzMDAyYzE0ZTNlY2FhMzA2
NDNkMjcyYWQ3Li5lMThkZmQyMWZmMjg0MDA3ZDAwMzllNjQzMmQ5ZWMzYzRmMWYzMTc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCkBAIC0yMzIsNyArMjMy
LDcgQEAgSlNTdHJpbmdSZWYgSlNHbG9iYWxDb250ZXh0Q29weU5hbWUoSlNHbG9iYWxDb250ZXh0
UmVmIGN0eCkKICAgICBpZiAobmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShuYW1lKS5sZWFrUmVmKCk7CisgICAgcmV0
dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobmFtZSkubGVha1JlZigpOwogfQogCiB2b2lk
IEpTR2xvYmFsQ29udGV4dFNldE5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdS
ZWYgbmFtZSkKQEAgLTMxNiw3ICszMTYsNyBAQCBKU1N0cmluZ1JlZiBKU0NvbnRleHRDcmVhdGVC
YWNrdHJhY2UoSlNDb250ZXh0UmVmIGN0eCwgdW5zaWduZWQgbWF4U3RhY2tTaXplKQogICAgIEJh
Y2t0cmFjZUZ1bmN0b3IgZnVuY3RvcihidWlsZGVyLCBtYXhTdGFja1NpemUpOwogICAgIGZyYW1l
LT5pdGVyYXRlKGZ1bmN0b3IpOwogCi0gICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUo
YnVpbGRlci50b1N0cmluZygpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5n
Ojp0cnlDcmVhdGUoYnVpbGRlci50b1N0cmluZygpKS5sZWFrUmVmKCk7CiB9CiAKIGJvb2wgSlNH
bG9iYWxDb250ZXh0R2V0UmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQoSlNHbG9iYWxDb250ZXh0UmVm
IGN0eCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKaW5kZXggZDhk
MmRmMTAwNGFhMzNlZTkxYzc0MmE5YjEwNjdkNThkMDVlMGNhZi4uNTExNjljNGQ0ZDhiNThiNGQ0
NjU1YmIxZjVjNTg2ZWZlMzkzNGRjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAKQEAgLTgyMCw3ICs4MjAsNyBAQCBKU1Byb3BlcnR5TmFtZUFycmF5UmVmIEpT
T2JqZWN0Q29weVByb3BlcnR5TmFtZXMoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgbwog
ICAgIHNpemVfdCBzaXplID0gYXJyYXkuc2l6ZSgpOwogICAgIHByb3BlcnR5TmFtZXMtPmFycmF5
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpCi0gICAgICAgIHByb3BlcnR5TmFtZXMtPmFycmF5LnVuY2hlY2tlZEFwcGVu
ZChPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGFycmF5W2ldLnN0cmluZygpKS5yZWxlYXNlTm9uTnVs
bCgpKTsKKyAgICAgICAgcHJvcGVydHlOYW1lcy0+YXJyYXkudW5jaGVja2VkQXBwZW5kKE9wYXF1
ZUpTU3RyaW5nOjp0cnlDcmVhdGUoYXJyYXlbaV0uc3RyaW5nKCkpLnJlbGVhc2VOb25OdWxsKCkp
OwogCiAgICAgcmV0dXJuIEpTUHJvcGVydHlOYW1lQXJyYXlSZXRhaW4ocHJvcGVydHlOYW1lcyk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCmluZGV4IDMzZjU5
YTM2MzM0MTcxYjE0NTU2YzZiZTMzNDhmNmMxMjAxMmYxNzIuLmJiNzIwZGJlOGQ3MWE4MjhkZDg2
ZDhmZDc4YTllMzU4ZGYzYTcyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNTY3JpcHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHRSZWYuY3BwCkBAIC05OSw3ICs5OSw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlUmVm
ZXJlbmNpbmdJbW1vcnRhbEFTQ0lJVGV4dChKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0CiAgICAg
UGFyc2VyRXJyb3IgZXJyb3I7CiAgICAgaWYgKCFwYXJzZVNjcmlwdCh2bSwgU291cmNlQ29kZShy
ZXN1bHQuY29weVJlZigpKSwgZXJyb3IpKSB7CiAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpCi0g
ICAgICAgICAgICAqZXJyb3JNZXNzYWdlID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShlcnJvci5t
ZXNzYWdlKCkpLmxlYWtSZWYoKTsKKyAgICAgICAgICAgICplcnJvck1lc3NhZ2UgPSBPcGFxdWVK
U1N0cmluZzo6dHJ5Q3JlYXRlKGVycm9yLm1lc3NhZ2UoKSkubGVha1JlZigpOwogICAgICAgICBp
ZiAoZXJyb3JMaW5lKQogICAgICAgICAgICAgKmVycm9yTGluZSA9IGVycm9yLmxpbmUoKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMjEsNyArMTIxLDcgQEAgSlNTY3JpcHRSZWYgSlNT
Y3JpcHRDcmVhdGVGcm9tU3RyaW5nKEpTQ29udGV4dEdyb3VwUmVmIGNvbnRleHRHcm91cCwgSlNT
dHJpbmdSZWYKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBpZiAoIXBhcnNlU2NyaXB0KHZt
LCBTb3VyY2VDb2RlKHJlc3VsdC5jb3B5UmVmKCkpLCBlcnJvcikpIHsKICAgICAgICAgaWYgKGVy
cm9yTWVzc2FnZSkKLSAgICAgICAgICAgICplcnJvck1lc3NhZ2UgPSBPcGFxdWVKU1N0cmluZzo6
Y3JlYXRlKGVycm9yLm1lc3NhZ2UoKSkubGVha1JlZigpOworICAgICAgICAgICAgKmVycm9yTWVz
c2FnZSA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoZXJyb3IubWVzc2FnZSgpKS5sZWFrUmVm
KCk7CiAgICAgICAgIGlmIChlcnJvckxpbmUpCiAgICAgICAgICAgICAqZXJyb3JMaW5lID0gZXJy
b3IubGluZSgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1N0cmluZ1JlZi5jcHAKaW5kZXggMTY4M2FhZTU5NTI5MzkwMjQ1YWFmYWMwYmEzMWJi
ODcyMDBiOWYzNi4uZTY0NGYxYWI3YTdmNGZiZTFmNjliMjBiNzFmMzE0YTJmMDI1NTQ0MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZi5jcHAKQEAgLTYyLDcgKzYyLDcg
QEAgSlNTdHJpbmdSZWYgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoY29uc3QgY2hhciog
c3RyaW5nKQogSlNTdHJpbmdSZWYgSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVyc05vQ29weShj
b25zdCBKU0NoYXIqIGNoYXJzLCBzaXplX3QgbnVtQ2hhcnMpCiB7CiAgICAgaW5pdGlhbGl6ZVRo
cmVhZGluZygpOwotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKFN0cmluZ0ltcGw6
OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihjaGFy
cyksIG51bUNoYXJzKSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5
Q3JlYXRlKFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUNoYXIqPihjaGFycyksIG51bUNoYXJzKSkubGVha1JlZigpOwogfQogCiBKU1N0cmlu
Z1JlZiBKU1N0cmluZ1JldGFpbihKU1N0cmluZ1JlZiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTVmFsdWUubW0KaW5kZXggZDc5NzQyYWYzNzRmYjg1NWVlOTRlZTYzZjRlOTFlZDQzNjRm
ZTA1MC4uOWU1MzRiMGFlYjA1MWYzNDZiMzRhZDFjNjc3NDQ5YzNhZWQzMDJiOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpAQCAtMTI2LDE1ICsxMjYsMTUgQEAgKyAoSlNWYWx1
ZSAqKXZhbHVlV2l0aE5ld0FycmF5SW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0CiAKICsg
KEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdSZWd1bGFyRXhwcmVzc2lvbkZyb21QYXR0ZXJuOihOU1N0
cmluZyAqKXBhdHRlcm4gZmxhZ3M6KE5TU3RyaW5nICopZmxhZ3MgaW5Db250ZXh0OihKU0NvbnRl
eHQgKiljb250ZXh0CiB7Ci0gICAgYXV0byBwYXR0ZXJuU3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6
OmNyZWF0ZShwYXR0ZXJuKTsKLSAgICBhdXRvIGZsYWdzU3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6
OmNyZWF0ZShmbGFncyk7CisgICAgYXV0byBwYXR0ZXJuU3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6
OnRyeUNyZWF0ZShwYXR0ZXJuKTsKKyAgICBhdXRvIGZsYWdzU3RyaW5nID0gT3BhcXVlSlNTdHJp
bmc6OnRyeUNyZWF0ZShmbGFncyk7CiAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudHNbMl0gPSB7IEpT
VmFsdWVNYWtlU3RyaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIHBhdHRlcm5TdHJp
bmcuZ2V0KCkpLCBKU1ZhbHVlTWFrZVN0cmluZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZd
LCBmbGFnc1N0cmluZy5nZXQoKSkgfTsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNW
YWx1ZVJlZjpKU09iamVjdE1ha2VSZWdFeHAoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwg
MiwgYXJndW1lbnRzLCAwKSBpbkNvbnRleHQ6Y29udGV4dF07CiB9CiAKICsgKEpTVmFsdWUgKil2
YWx1ZVdpdGhOZXdFcnJvckZyb21NZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5Db250ZXh0
OihKU0NvbnRleHQgKiljb250ZXh0CiB7Ci0gICAgYXV0byBzdHJpbmcgPSBPcGFxdWVKU1N0cmlu
Zzo6Y3JlYXRlKG1lc3NhZ2UpOworICAgIGF1dG8gc3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6OnRy
eUNyZWF0ZShtZXNzYWdlKTsKICAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50ID0gSlNWYWx1ZU1ha2VT
dHJpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgc3RyaW5nLmdldCgpKTsKICAgICBy
ZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpKU09iamVjdE1ha2VFcnJvcihbY29u
dGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCAxLCAmYXJndW1lbnQsIDApIGluQ29udGV4dDpjb250
ZXh0XTsKIH0KQEAgLTE1MSw3ICsxNTEsNyBAQCArIChKU1ZhbHVlICopdmFsdWVXaXRoVW5kZWZp
bmVkSW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0CiAKICsgKEpTVmFsdWUgKil2YWx1ZVdp
dGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246KE5TU3RyaW5nICopZGVzY3JpcHRpb24gaW5Db250
ZXh0OihKU0NvbnRleHQgKiljb250ZXh0CiB7Ci0gICAgYXV0byBzdHJpbmcgPSBPcGFxdWVKU1N0
cmluZzo6Y3JlYXRlKGRlc2NyaXB0aW9uKTsKKyAgICBhdXRvIHN0cmluZyA9IE9wYXF1ZUpTU3Ry
aW5nOjp0cnlDcmVhdGUoZGVzY3JpcHRpb24pOwogICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdp
dGhKU1ZhbHVlUmVmOkpTVmFsdWVNYWtlU3ltYm9sKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJl
Zl0sIHN0cmluZy5nZXQoKSkgaW5Db250ZXh0OmNvbnRleHRdOwogfQogCkBAIC0yOTIsNyArMjky
LDcgQEAgaW5saW5lIEV4cGVjdGVkPFJlc3VsdCwgSlNWYWx1ZVJlZj4gcGVyZm9ybVByb3BlcnR5
T3BlcmF0aW9uKE5TU3RyaW5nRnVuY3Rpb24gc3QKICAgICBSZXN1bHQgcmVzdWx0OwogICAgIC8v
IElmIGl0J3MgYSBOU1N0cmluZyBhbHJlYWR5LCByZWR1Y2UgaW5kaXJlY3Rpb24gYW5kIGp1c3Qg
cGFzcyB0aGUgTlNTdHJpbmcuCiAgICAgaWYgKFtwcm9wZXJ0eUtleSBpc0tpbmRPZkNsYXNzOltO
U1N0cmluZyBjbGFzc11dKSB7Ci0gICAgICAgIGF1dG8gbmFtZSA9IE9wYXF1ZUpTU3RyaW5nOjpj
cmVhdGUoKE5TU3RyaW5nICopcHJvcGVydHlLZXkpOworICAgICAgICBhdXRvIG5hbWUgPSBPcGFx
dWVKU1N0cmluZzo6dHJ5Q3JlYXRlKChOU1N0cmluZyAqKXByb3BlcnR5S2V5KTsKICAgICAgICAg
cmVzdWx0ID0gc3RyaW5nRnVuY3Rpb24oW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgb2Jq
ZWN0LCBuYW1lLmdldCgpLCBhcmd1bWVudHMuLi4sICZleGNlcHRpb24pOwogICAgIH0gZWxzZQog
ICAgICAgICByZXN1bHQgPSBqc0Z1bmN0aW9uKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0s
IG9iamVjdCwgW1tKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpwcm9wZXJ0eUtleSBpbkNvbnRleHQ6
Y29udGV4dF0gSlNWYWx1ZVJlZl0sIGFyZ3VtZW50cy4uLiwgJmV4Y2VwdGlvbik7CkBAIC01MjAs
NyArNTIwLDcgQEAgLSAoSlNWYWx1ZSAqKWludm9rZU1ldGhvZDooTlNTdHJpbmcgKiltZXRob2Qg
d2l0aEFyZ3VtZW50czooTlNBcnJheSAqKWFyZ3VtZW50cwogICAgIGlmIChleGNlcHRpb24pCiAg
ICAgICAgIHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlv
bl07CiAKLSAgICBhdXRvIG5hbWUgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKG1ldGhvZCk7Cisg
ICAgYXV0byBuYW1lID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShtZXRob2QpOwogICAgIEpT
VmFsdWVSZWYgZnVuY3Rpb24gPSBKU09iamVjdEdldFByb3BlcnR5KFtfY29udGV4dCBKU0dsb2Jh
bENvbnRleHRSZWZdLCB0aGlzT2JqZWN0LCBuYW1lLmdldCgpLCAmZXhjZXB0aW9uKTsKICAgICBp
ZiAoZXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gW19jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4
Y2VwdGlvbjpleGNlcHRpb25dOwpAQCAtNzc0LDcgKzc3NCw3IEBAIHN0YXRpYyBpZCBjb250YWlu
ZXJWYWx1ZVRvT2JqZWN0KEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0LCBKU0NvbnRhaW5lckNv
bnZlcnRvCiAgICAgICAgICAgICBBU1NFUlQoW2N1cnJlbnQub2JqYyBpc0tpbmRPZkNsYXNzOltO
U011dGFibGVBcnJheSBjbGFzc11dKTsKICAgICAgICAgICAgIE5TTXV0YWJsZUFycmF5ICphcnJh
eSA9IChOU011dGFibGVBcnJheSAqKWN1cnJlbnQub2JqYzsKICAgICAgICAgCi0gICAgICAgICAg
ICBhdXRvIGxlbmd0aFN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoImxlbmd0aCJfcyk7
CisgICAgICAgICAgICBhdXRvIGxlbmd0aFN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVh
dGUoImxlbmd0aCJfcyk7CiAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBKU0M6OnRvVUlu
dDMyKEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQs
IGpzLCBsZW5ndGhTdHJpbmcuZ2V0KCksIDApLCAwKSk7CiAKICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewpAQCAtOTg0LDcgKzk4NCw3IEBAIHN0YXRp
YyBPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNrIG9iamVjdFRvVmFsdWVXaXRob3V0Q29weShK
U0NvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICByZXR1cm4geyBvYmplY3QsICgoSlNWYWx1
ZSAqKW9iamVjdCktPm1fdmFsdWUsIENvbnRhaW5lck5vbmUgfTsKIAogICAgICAgICBpZiAoW29i
amVjdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7Ci0gICAgICAgICAgICBhdXRv
IHN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoKE5TU3RyaW5nICopb2JqZWN0KTsKKyAg
ICAgICAgICAgIGF1dG8gc3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSgoTlNTdHJp
bmcgKilvYmplY3QpOwogICAgICAgICAgICAgcmV0dXJuIHsgb2JqZWN0LCBKU1ZhbHVlTWFrZVN0
cmluZyhjb250ZXh0UmVmLCBzdHJpbmcuZ2V0KCkpLCBDb250YWluZXJOb25lIH07CiAgICAgICAg
IH0KIApAQCAtMTA0MSw3ICsxMDQxLDcgQEAgSlNWYWx1ZVJlZiBvYmplY3RUb1ZhbHVlKEpTQ29u
dGV4dCAqY29udGV4dCwgaWQgb2JqZWN0KQogICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICpkaWN0
aW9uYXJ5ID0gKE5TRGljdGlvbmFyeSAqKWN1cnJlbnQub2JqYzsKICAgICAgICAgICAgIGZvciAo
aWQga2V5IGluIFtkaWN0aW9uYXJ5IGtleUVudW1lcmF0b3JdKSB7CiAgICAgICAgICAgICAgICAg
aWYgKFtrZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewotICAgICAgICAgICAg
ICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoKE5TU3Ry
aW5nICopa2V5KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBPcGFx
dWVKU1N0cmluZzo6dHJ5Q3JlYXRlKChOU1N0cmluZyAqKWtleSk7CiAgICAgICAgICAgICAgICAg
ICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4dFJlZiwganMsIHByb3BlcnR5TmFtZS5nZXQo
KSwgY29udmVydG9yLmNvbnZlcnQoW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OmtleV0pLCAwLCAw
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlUmVmLmNwcAppbmRleCAyM2YxN2JjMjFiYjNjMDgyOWRlMGE1NjA0MzM3MDY4
NTBmYzFlYzA1Li40YzEyYjk2Y2ZkZDY5MjNmYjdjMzJiZjg0ODMxMDJjMzYxNDZjNDUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKQEAgLTM4Niw3ICszODYsNyBA
QCBKU1N0cmluZ1JlZiBKU1ZhbHVlQ3JlYXRlSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBK
U1ZhbHVlUmVmIGFwaVZhbHVlLCB1bnNpZwogICAgICAgICAqZXhjZXB0aW9uID0gMDsKICAgICBp
ZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhj
ZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIE9w
YXF1ZUpTU3RyaW5nOjpjcmVhdGUocmVzdWx0KS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIE9wYXF1
ZUpTU3RyaW5nOjp0cnlDcmVhdGUocmVzdWx0KS5sZWFrUmVmKCk7CiB9CiAKIGJvb2wgSlNWYWx1
ZVRvQm9vbGVhbihKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKQpAQCAtNDM0LDcg
KzQzNCw3IEBAIEpTU3RyaW5nUmVmIEpTVmFsdWVUb1N0cmluZ0NvcHkoSlNDb250ZXh0UmVmIGN0
eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZioKIAogICAgIEpTVmFsdWUganNWYWx1ZSA9
IHRvSlMoZXhlYywgdmFsdWUpOwogICAgIAotICAgIGF1dG8gc3RyaW5nUmVmKE9wYXF1ZUpTU3Ry
aW5nOjpjcmVhdGUoanNWYWx1ZS50b1dURlN0cmluZyhleGVjKSkpOworICAgIGF1dG8gc3RyaW5n
UmVmKE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoanNWYWx1ZS50b1dURlN0cmluZyhleGVjKSkp
OwogICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9u
KSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQogICAgICAgICBzdHJpbmdSZWYgPSBudWxs
cHRyOwogICAgIHJldHVybiBzdHJpbmdSZWYubGVha1JlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcAppbmRleCA5ODFkYzg1YjA4NWYxODk3ZTVjZWRi
ZDgxMjU5NzNhMGJjMDRkNDllLi43N2EyZTFjN2YxMzU0NWNjMDhkZDA4MmIzZmQyOTQxZDNlMDg1
ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5n
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcApA
QCAtMzQsNyArMzQsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1SZWZQdHI8T3BhcXVl
SlNTdHJpbmc+IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitS
ZWZQdHI8T3BhcXVlSlNTdHJpbmc+IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC00Miw3ICs0Miw3IEBAIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gT3BhcXVl
SlNTdHJpbmc6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IE9wYXF1ZUpTU3RyaW5nKHN0cmluZykpOwogfQogCi1SZWZQdHI8T3BhcXVlSlNTdHJp
bmc+IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoU3RyaW5nJiYgc3RyaW5nKQorUmVmUHRyPE9wYXF1
ZUpTU3RyaW5nPiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKFN0cmluZyYmIHN0cmluZykKIHsK
ICAgICBpZiAoc3RyaW5nLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaAppbmRleCBhZDJmZmNkZTU3MTI1
ZThhZjcyZjIzOTE0M2VkYmMwNzI1MjQ2MTYwLi40YTRiNWVkZmJhMjAxNDZjODkzMjAxNDNmOWI1
ZjRkMWRkMTBkNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1
ZUpTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmlu
Zy5oCkBAIC01MSw4ICs1MSw4IEBAIHN0cnVjdCBPcGFxdWVKU1N0cmluZyA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxPcGFxdWVKU1N0cmluZz4gewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBPcGFxdWVKU1N0cmluZyhjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKICAgICB9CiAKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxPcGFx
dWVKU1N0cmluZz4gY3JlYXRlKFN0cmluZyYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiB0cnlDcmVhdGUoY29uc3QgU3RyaW5nJik7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gdHJ5Q3JlYXRl
KFN0cmluZyYmKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5PcGFxdWVKU1N0cmluZygpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKaW5kZXgg
YjU0OGVmYmZmNjk2YTVlYWZhNzRjZWVkODU1NzIyYzMyMmI5MmE0NC4uNDBlYTVjMTQ5MTdiM2Nk
ZDRmN2VlYzBhMjRiZTIwMGY3Y2MwNzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtODE5LDcgKzgxOSw3IEBAIEpTQ1ZhbHVlKiBqc2Nf
Y29udGV4dF9ldmFsdWF0ZShKU0NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBjb2RlLCBn
c3NpemUgbGVuCiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGV2YWx1YXRlU2NyaXB0SW5Db250ZXh0KEpT
R2xvYmFsQ29udGV4dFJlZiBqc0NvbnRleHQsIFN0cmluZyYmIHNjcmlwdCwgY29uc3QgY2hhciog
dXJpLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7Ci0gICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHNjcmlwdEpTKEFkb3B0LCBPcGFxdWVKU1N0cmluZzo6
Y3JlYXRlKFdURk1vdmUoc2NyaXB0KSkubGVha1JlZigpKTsKKyAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gc2NyaXB0SlMoQWRvcHQsIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoV1RGTW92
ZShzY3JpcHQpKS5sZWFrUmVmKCkpOwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzb3Vy
Y2VVUkkgPSB1cmkgPyBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1cmkpKSA6
IG51bGxwdHI7CiAgICAgcmV0dXJuIEpTRXZhbHVhdGVTY3JpcHQoanNDb250ZXh0LCBzY3JpcHRK
Uy5nZXQoKSwgbnVsbHB0ciwgc291cmNlVVJJLmdldCgpLCBsaW5lTnVtYmVyLCBleGNlcHRpb24p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWYWx1ZS5jcHAKaW5kZXgg
NzllNTMxNmZkMzYyOTNjOGRkMDIzMzYyM2JhZDAzYmFhODVkOWMzYi4uNmUyNzRmODlmNDM3YjYz
Yzk1OTI1NzIzNDJmOTcwNTM5Y2FhZTE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L2dsaWIvSlNDVmFsdWUuY3BwCkBAIC0zNjcsNyArMzY3LDcgQEAgSlNDVmFsdWUqIGpzY192YWx1
ZV9uZXdfc3RyaW5nX2Zyb21fYnl0ZXMoSlNDQ29udGV4dCogY29udGV4dCwgR0J5dGVzKiBieXRl
cykKICAgICBnc2l6ZSBkYXRhU2l6ZTsKICAgICBjb25zdCBhdXRvKiBkYXRhID0gc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoYnl0ZXMsICZkYXRhU2l6ZSkpOwogICAg
IGF1dG8gc3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChkYXRhLCBkYXRhU2l6ZSk7Ci0gICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGpzU3RyaW5nKEFkb3B0LCBPcGFxdWVKU1N0cmluZzo6Y3Jl
YXRlKFdURk1vdmUoc3RyaW5nKSkubGVha1JlZigpKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4ganNTdHJpbmcoQWRvcHQsIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoV1RGTW92ZShz
dHJpbmcpKS5sZWFrUmVmKCkpOwogICAgIHJldHVybiBqc2NDb250ZXh0R2V0T3JDcmVhdGVWYWx1
ZShjb250ZXh0LCBKU1ZhbHVlTWFrZVN0cmluZyhqc2NDb250ZXh0R2V0SlNDb250ZXh0KGNvbnRl
eHQpLCBqc1N0cmluZy5nZXQoKSkpLmxlYWtSZWYoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1BhdGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTGF6eVNsb3dQYXRoLmgKaW5kZXggOWE2ZTYwMWFkMzE5YmRkZmMzYTk4ZTA1
ZDk5MzBiODFkYWUxZGFkZC4uYTViM2E3MjUyYTQxMzc3Njg1MmY0MWZhMjUxMjRiOTA4Mzc4ZGIx
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1BhdGgu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExhenlTbG93UGF0aC5oCkBAIC01
OSw3ICs1OSw3IEBAIGNsYXNzIExhenlTbG93UGF0aCB7CiAgICAgdHlwZWRlZiBTaGFyZWRUYXNr
PEdlbmVyYXRvckZ1bmN0aW9uPiBHZW5lcmF0b3I7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPgotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJhdG9yPiBjcmVhdGVHZW5lcmF0b3IoY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICBzdGF0aWMgUmVmPEdlbmVyYXRvcj4gY3JlYXRlR2Vu
ZXJhdG9yKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAgICAgICByZXR1cm4gY3Jl
YXRlU2hhcmVkVGFzazxHZW5lcmF0b3JGdW5jdGlvbj4oZnVuY3Rvcik7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1BhdGhDYWxsLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExhenlTbG93UGF0aENhbGwuaAppbmRleCBiZmIy
YWNlYzg2ZWQ4Njc3NmYxYjExNjU1MjhkYzUyMjE3NjFhZTY2Li43NGZkNmVjN2I3MmYzMjIzNDIx
YWE2NjRiYTFiNmE2N2JjNzcyOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExhenlTbG93UGF0aENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExhenlTbG93UGF0aENhbGwuaApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBGVEwgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHRUeXBlLCB0eXBlbmFt
ZS4uLiBBcmd1bWVudFR5cGVzPgotUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiBjcmVh
dGVMYXp5Q2FsbEdlbmVyYXRvcigKK1JlZjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gY3JlYXRl
TGF6eUNhbGxHZW5lcmF0b3IoCiAgICAgVk0mIHZtLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJU
YWc+IGZ1bmN0aW9uLCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVu
dHMpCiB7CiAgICAgcmV0dXJuIExhenlTbG93UGF0aDo6Y3JlYXRlR2VuZXJhdG9yKApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5jcHAKaW5kZXggMzI4ZjBjODE4MjhiZmNiOTZi
MTFhOTQ5ZWRhMTlkMWUwNjcxZDE1NC4uYjA5ZTcwYWI0NmNkNjAyNTNkMWI1MTRkYjgwNTcxODU3
NGVlNTRlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXQuY3BwCkBAIC02
MywxNyArNjMsMTcgQEAgdm9pZCBPU1JFeGl0RGVzY3JpcHRvcjo6dmFsaWRhdGVSZWZlcmVuY2Vz
KGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJiB0cmFja2VkUmVmZXIKICAgICAgICAgbWF0ZXJpYWxp
emF0aW9uLT52YWxpZGF0ZVJlZmVyZW5jZXModHJhY2tlZFJlZmVyZW5jZXMpOwogfQogCi1SZWZQ
dHI8T1NSRXhpdEhhbmRsZT4gT1NSRXhpdERlc2NyaXB0b3I6OmVtaXRPU1JFeGl0KAorUmVmPE9T
UkV4aXRIYW5kbGU+IE9TUkV4aXREZXNjcmlwdG9yOjplbWl0T1NSRXhpdCgKICAgICBTdGF0ZSYg
c3RhdGUsIEV4aXRLaW5kIGV4aXRLaW5kLCBjb25zdCBOb2RlT3JpZ2luJiBub2RlT3JpZ2luLCBD
Q2FsbEhlbHBlcnMmIGppdCwKICAgICBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBh
cmFtcywgdW5zaWduZWQgb2Zmc2V0KQogewogICAgIFJlZlB0cjxPU1JFeGl0SGFuZGxlPiBoYW5k
bGUgPQogICAgICAgICBwcmVwYXJlT1NSRXhpdEhhbmRsZShzdGF0ZSwgZXhpdEtpbmQsIG5vZGVP
cmlnaW4sIHBhcmFtcywgb2Zmc2V0KTsKICAgICBoYW5kbGUtPmVtaXRFeGl0VGh1bmsoc3RhdGUs
IGppdCk7Ci0gICAgcmV0dXJuIGhhbmRsZTsKKyAgICByZXR1cm4gaGFuZGxlLnJlbGVhc2VOb25O
dWxsKCk7CiB9CiAKLVJlZlB0cjxPU1JFeGl0SGFuZGxlPiBPU1JFeGl0RGVzY3JpcHRvcjo6ZW1p
dE9TUkV4aXRMYXRlcigKK1JlZjxPU1JFeGl0SGFuZGxlPiBPU1JFeGl0RGVzY3JpcHRvcjo6ZW1p
dE9TUkV4aXRMYXRlcigKICAgICBTdGF0ZSYgc3RhdGUsIEV4aXRLaW5kIGV4aXRLaW5kLCBjb25z
dCBOb2RlT3JpZ2luJiBub2RlT3JpZ2luLAogICAgIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zLCB1bnNpZ25lZCBvZmZzZXQpCiB7CkBAIC04MywxNyArODMsMTcgQEAgUmVm
UHRyPE9TUkV4aXRIYW5kbGU+IE9TUkV4aXREZXNjcmlwdG9yOjplbWl0T1NSRXhpdExhdGVyKAog
ICAgICAgICBbaGFuZGxlLCAmc3RhdGVdIChDQ2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAg
ICAgaGFuZGxlLT5lbWl0RXhpdFRodW5rKHN0YXRlLCBqaXQpOwogICAgICAgICB9KTsKLSAgICBy
ZXR1cm4gaGFuZGxlOworICAgIHJldHVybiBoYW5kbGUucmVsZWFzZU5vbk51bGwoKTsKIH0KIAot
UmVmUHRyPE9TUkV4aXRIYW5kbGU+IE9TUkV4aXREZXNjcmlwdG9yOjpwcmVwYXJlT1NSRXhpdEhh
bmRsZSgKK1JlZjxPU1JFeGl0SGFuZGxlPiBPU1JFeGl0RGVzY3JpcHRvcjo6cHJlcGFyZU9TUkV4
aXRIYW5kbGUoCiAgICAgU3RhdGUmIHN0YXRlLCBFeGl0S2luZCBleGl0S2luZCwgY29uc3QgTm9k
ZU9yaWdpbiYgbm9kZU9yaWdpbiwKICAgICBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcywgdW5zaWduZWQgb2Zmc2V0KQogewogICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGUu
aml0Q29kZS0+b3NyRXhpdC5zaXplKCk7CiAgICAgT1NSRXhpdCYgZXhpdCA9IHN0YXRlLmppdENv
ZGUtPm9zckV4aXQuYWxsb2MoCiAgICAgICAgIHRoaXMsIGV4aXRLaW5kLCBub2RlT3JpZ2luLmZv
ckV4aXQsIG5vZGVPcmlnaW4uc2VtYW50aWMsIG5vZGVPcmlnaW4ud2FzSG9pc3RlZCk7Ci0gICAg
UmVmUHRyPE9TUkV4aXRIYW5kbGU+IGhhbmRsZSA9IGFkb3B0UmVmKG5ldyBPU1JFeGl0SGFuZGxl
KGluZGV4LCBleGl0KSk7CisgICAgUmVmPE9TUkV4aXRIYW5kbGU+IGhhbmRsZSA9IGFkb3B0UmVm
KCpuZXcgT1NSRXhpdEhhbmRsZShpbmRleCwgZXhpdCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IG9mZnNldDsgaSA8IHBhcmFtcy5zaXplKCk7ICsraSkKICAgICAgICAgZXhpdC5tX3ZhbHVlUmVw
cy5hcHBlbmQocGFyYW1zW2ldKTsKICAgICBleGl0Lm1fdmFsdWVSZXBzLnNocmlua1RvRml0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCmluZGV4IDdjMDJmYjEwZGEwZjFi
OGMzZjU2NmY0NTlhZGNiZWMyNWRkNGM5YjcuLmRhODdjY2YzMjczZmU0YmUzNjA2ODNiOGFmM2Ji
ZjUxNmQ2MjI1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NS
RXhpdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCkBAIC05
MCw3ICs5MCw3IEBAIHN0cnVjdCBPU1JFeGl0RGVzY3JpcHRvciB7CiAgICAgLy8gdXAgdG8gdGhl
IE9TUkV4aXQgb2JqZWN0LCB3aGljaCB0aGlzIGNyZWF0ZXMuIE5vdGUgdGhhdCBpdCdzIE9LIHRv
IGRyb3AgdGhlIE9TUkV4aXRIYW5kbGUgb2JqZWN0CiAgICAgLy8gb24gdGhlIGdyb3VuZC4gSXQg
Y29udGFpbnMgaW5mb3JtYXRpb24gdGhhdCBpcyBtb3N0bHkgbm90IHVzZWZ1bCBpZiB5b3UgdXNl
IHRoaXMgQVBJLCBzaW5jZSBhZnRlcgogICAgIC8vIHRoaXMgY2FsbCwgdGhlIE9TUkV4aXQgaXMg
c2ltcGx5IHJlYWR5IHRvIGdvLgotICAgIFJlZlB0cjxPU1JFeGl0SGFuZGxlPiBlbWl0T1NSRXhp
dCgKKyAgICBSZWY8T1NSRXhpdEhhbmRsZT4gZW1pdE9TUkV4aXQoCiAgICAgICAgIFN0YXRlJiwg
RXhpdEtpbmQsIGNvbnN0IERGRzo6Tm9kZU9yaWdpbiYsIENDYWxsSGVscGVycyYsIGNvbnN0IEIz
OjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmLAogICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSAw
KTsKIApAQCAtMTAyLDcgKzEwMiw3IEBAIHN0cnVjdCBPU1JFeGl0RGVzY3JpcHRvciB7CiAgICAg
Ly8gVGhpcyBBUEkgaXMgbWVhbnQgdG8gYmUgdXNlZCBmb3IgdGhpbmdzIGxpa2UgZXhjZXB0aW9u
IGhhbmRsaW5nLCB3aGVyZSBzb21lIHBhdGNocG9pbnQgd2FudHMgdG8KICAgICAvLyBoYXZlIGEg
cGxhY2UgdG8ganVtcCB0byBmb3IgT1NSIGV4aXQuIEl0IGRvZXNuJ3QgY2FyZSB3aGVyZSB0aGF0
IE9TUiBleGl0IGlzIGVtaXR0ZWQgc28gbG9uZyBhcyBpdAogICAgIC8vIGV2ZW50dWFsbHkgZ2V0
cyBhY2Nlc3MgdG8gaXRzIGxhYmVsLgotICAgIFJlZlB0cjxPU1JFeGl0SGFuZGxlPiBlbWl0T1NS
RXhpdExhdGVyKAorICAgIFJlZjxPU1JFeGl0SGFuZGxlPiBlbWl0T1NSRXhpdExhdGVyKAogICAg
ICAgICBTdGF0ZSYsIEV4aXRLaW5kLCBjb25zdCBERkc6Ok5vZGVPcmlnaW4mLCBjb25zdCBCMzo6
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiwKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMCk7
CiAKQEAgLTExMCw3ICsxMTAsNyBAQCBzdHJ1Y3QgT1NSRXhpdERlc2NyaXB0b3IgewogICAgIC8v
IFRoaXMgaXMgdGhlIGxvdy1sZXZlbCBpbnRlcmZhY2UuIEl0IHdpbGwgY3JlYXRlIGEgaGFuZGxl
IHJlcHJlc2VudGluZyB0aGUgZGVzaXJlIHRvIGVtaXQgY29kZSBmb3IKICAgICAvLyBhbiBPU1Ig
ZXhpdC4gWW91IGNhbiBjYWxsIE9TUkV4aXRIYW5kbGU6OmVtaXRFeGl0VGh1bmsoKSBvbmNlIHlv
dSBoYXZlIGEgcGxhY2UgdG8gZW1pdCBpdC4gTm90ZQogICAgIC8vIHRoYXQgdGhlIGFib3ZlIHR3
byBBUElzIGFyZSB3cml0dGVuIGluIHRlcm1zIG9mIHRoaXMgYW5kIE9TUkV4aXRIYW5kbGU6OmVt
aXRFeGl0VGh1bmsoKS4KLSAgICBSZWZQdHI8T1NSRXhpdEhhbmRsZT4gcHJlcGFyZU9TUkV4aXRI
YW5kbGUoCisgICAgUmVmPE9TUkV4aXRIYW5kbGU+IHByZXBhcmVPU1JFeGl0SGFuZGxlKAogICAg
ICAgICBTdGF0ZSYsIEV4aXRLaW5kLCBjb25zdCBERkc6Ok5vZGVPcmlnaW4mLCBjb25zdCBCMzo6
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiwKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMCk7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExQYXRjaHBvaW50
RXhjZXB0aW9uSGFuZGxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUGF0Y2hw
b2ludEV4Y2VwdGlvbkhhbmRsZS5jcHAKaW5kZXggNzI5NGIxYjVmNmJhZWU2MWM1NzRjZmU1MTBj
ZTIzOGM5MzMzNzAyMS4uZmFlZjQxN2I5ODIzNTRmM2U2NDdhYWQyOWJhMDZjODI3MGNlMDlkMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExQYXRjaHBvaW50RXhjZXB0
aW9uSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFBhdGNocG9p
bnRFeGNlcHRpb25IYW5kbGUuY3BwCkBAIC0zOCwxMSArMzgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBGVEwgewogCiB1c2luZyBuYW1lc3BhY2UgREZHOwogCi1SZWZQdHI8UGF0Y2hw
b2ludEV4Y2VwdGlvbkhhbmRsZT4gUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZTo6Y3JlYXRlKAor
UmVmPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU6
OmNyZWF0ZSgKICAgICBTdGF0ZSYgc3RhdGUsIE9TUkV4aXREZXNjcmlwdG9yKiBkZXNjcmlwdG9y
LCBOb2RlT3JpZ2luIG9yaWdpbiwgdW5zaWduZWQgb2Zmc2V0LAogICAgIGNvbnN0IEhhbmRsZXJJ
bmZvJiBoYW5kbGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGF0Y2hwb2ludEV4Y2Vw
dGlvbkhhbmRsZShzdGF0ZSwgZGVzY3JpcHRvciwgb3JpZ2luLCBvZmZzZXQsIGhhbmRsZXIpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlKHN0YXRl
LCBkZXNjcmlwdG9yLCBvcmlnaW4sIG9mZnNldCwgaGFuZGxlcikpOwogfQogCiBSZWZQdHI8UGF0
Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZTo6ZGVmYXVs
dEhhbmRsZShTdGF0ZSYgc3RhdGUpCkBAIC0xMDgsNyArMTA4LDcgQEAgUGF0Y2hwb2ludEV4Y2Vw
dGlvbkhhbmRsZTo6UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZSgKIHsKIH0KIAotUmVmUHRyPE9T
UkV4aXRIYW5kbGU+IFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU6OmNyZWF0ZUhhbmRsZSgKK1Jl
ZjxPU1JFeGl0SGFuZGxlPiBQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlOjpjcmVhdGVIYW5kbGUo
CiAgICAgRXhpdEtpbmQga2luZCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKQogewogICAgIHJldHVybiBtX2Rlc2NyaXB0b3ItPmVtaXRPU1JFeGl0TGF0ZXIoCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFBhdGNocG9pbnRFeGNlcHRp
b25IYW5kbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2Vw
dGlvbkhhbmRsZS5oCmluZGV4IDFiMjY2ZDJlMWZlOTc4ODhlYThmNzhkMmM4YzQzYjRlMzY0Njlm
ZWMuLjQ0OGUxY2Y1ZjA1ZGY1NTgzYjIzMDI3ZGZlY2U2MTQyN2EyMzIyMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhh
bmRsZS5oCkBAIC01MSw3ICs1MSw3IEBAIHN0cnVjdCBPU1JFeGl0SGFuZGxlOwogCiBjbGFzcyBQ
YXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBh
dGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFBh
dGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGNyZWF0ZSgKKyAgICBzdGF0aWMgUmVmPFBhdGNocG9p
bnRFeGNlcHRpb25IYW5kbGU+IGNyZWF0ZSgKICAgICAgICAgU3RhdGUmLCBPU1JFeGl0RGVzY3Jp
cHRvciosIERGRzo6Tm9kZU9yaWdpbiwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBIYW5kbGVySW5m
byYpOwogCiAgICAgc3RhdGljIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBkZWZh
dWx0SGFuZGxlKFN0YXRlJik7CkBAIC04OSw3ICs4OSw3IEBAIGNsYXNzIFBhdGNocG9pbnRFeGNl
cHRpb25IYW5kbGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGF0Y2hwb2ludEV4Y2Vw
dGlvCiAgICAgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZSgKICAgICAgICAgU3RhdGUmLCBPU1JF
eGl0RGVzY3JpcHRvciosIERGRzo6Tm9kZU9yaWdpbiwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBI
YW5kbGVySW5mbyYpOwogCi0gICAgUmVmUHRyPE9TUkV4aXRIYW5kbGU+IGNyZWF0ZUhhbmRsZShF
eGl0S2luZCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpOworICAgIFJlZjxP
U1JFeGl0SGFuZGxlPiBjcmVhdGVIYW5kbGUoRXhpdEtpbmQsIGNvbnN0IEIzOjpTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmKTsKIAogICAgIFN0YXRlJiBtX3N0YXRlOwogICAgIE9TUkV4aXREZXNj
cmlwdG9yKiBtX2Rlc2NyaXB0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgKaW5kZXggNTJlMGEyOGZlM2M5MGNmOWYyZjgxODU3
NzlhNzZmZjE5MjUzNzVjYy4uMDVjZjI4MjBmMzI0YWE1YzA5YTM0ZDIwMTI2MDY2NmM1MmUzNjg4
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlD
YWxsYmFjay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5
Q2FsbGJhY2suaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBFZGVu
R0NBY3Rpdml0eUNhbGxiYWNrIDogcHVibGljIEdDQWN0aXZpdHlDYWxsYmFjayB7CiAgICAgZG91
YmxlIGRlYXRoUmF0ZShIZWFwJikgb3ZlcnJpZGU7CiB9OwogCi1pbmxpbmUgUmVmUHRyPEdDQWN0
aXZpdHlDYWxsYmFjaz4gR0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIoSGVhcCog
aGVhcCkKK2lubGluZSBSZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBHQ0FjdGl2aXR5Q2FsbGJh
Y2s6OnRyeUNyZWF0ZUVkZW5UaW1lcihIZWFwKiBoZWFwKQogewogICAgIHJldHVybiBzX3Nob3Vs
ZENyZWF0ZUdDVGltZXIgPyBhZG9wdFJlZihuZXcgRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhoZWFw
KSkgOiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
RnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5oCmluZGV4IDVjZTAzNGEwY2Q4MWY1NWQyOThmMTI4OTgyNmRl
NmY4YmVmNjJiYmEuLjY1MGFlMTM4N2YxNmFhMDAzZDdkZGI5ODZmMDc1OGZjOWYxZWM0ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxi
YWNrLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRnVsbEdDQWN0
aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBHQ0FjdGl2aXR5Q2FsbGJhY2sgewogICAgIGJvb2wgbV9k
aWRHQ1JlY2VudGx5IHsgZmFsc2UgfTsKIH07CiAKLWlubGluZSBSZWZQdHI8RnVsbEdDQWN0aXZp
dHlDYWxsYmFjaz4gR0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVGdWxsVGltZXIoSGVhcCogaGVh
cCkKK2lubGluZSBSZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rpdml0eUNhbGxi
YWNrOjp0cnlDcmVhdGVGdWxsVGltZXIoSGVhcCogaGVhcCkKIHsKICAgICByZXR1cm4gc19zaG91
bGRDcmVhdGVHQ1RpbWVyID8gYWRvcHRSZWYobmV3IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soaGVh
cCkpIDogbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0dDQWN0aXZpdHlDYWxsYmFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rp
dml0eUNhbGxiYWNrLmgKaW5kZXggOWRmZGQwZjcwMDdkMjEzYjRmYjk1NDQ5YjE2ZWZlZGQ4ZTRj
M2EzNi4uYzM3MWY3N2QyYjY0YjQzZGFjNzQ2MzE0ZDdjMWQ5ZDI1ZjM5ZmIwYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgKQEAgLTQzLDgg
KzQzLDggQEAgY2xhc3MgSGVhcDsKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEdDQWN0aXZpdHlD
YWxsYmFjayA6IHB1YmxpYyBKU1J1bkxvb3BUaW1lciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFz
ZSA9IEpTUnVuTG9vcFRpbWVyOwotICAgIHN0YXRpYyBSZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxs
YmFjaz4gY3JlYXRlRnVsbFRpbWVyKEhlYXAqKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdDQWN0aXZp
dHlDYWxsYmFjaz4gY3JlYXRlRWRlblRpbWVyKEhlYXAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZ1
bGxHQ0FjdGl2aXR5Q2FsbGJhY2s+IHRyeUNyZWF0ZUZ1bGxUaW1lcihIZWFwKik7CisgICAgc3Rh
dGljIFJlZlB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IHRyeUNyZWF0ZUVkZW5UaW1lcihIZWFwKik7
CiAKICAgICBHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCmluZGV4IGNjNGEzMzY1MWEyZjE5NmZjYWZiMzJhY2MwYTYwM2Q5ODg4MjNmMDgu
LmY0NjhkNDFlNGZmYzdhNmFjN2Q0Mjk1ZmNiZmE3NzcyMjE3YmJjMGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0zMDQsOCArMzA0LDggQEAgSGVhcDo6SGVhcChWTSogdm0s
IEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIC8vIHNjaGVkdWxlIHRoZSB0aW1lciBpZiB3ZSd2ZSBu
ZXZlciBkb25lIGEgY29sbGVjdGlvbi4KICAgICAsIG1fbGFzdEZ1bGxHQ0xlbmd0aCgwLjAxKQog
ICAgICwgbV9sYXN0RWRlbkdDTGVuZ3RoKDAuMDEpCi0gICAgLCBtX2Z1bGxBY3Rpdml0eUNhbGxi
YWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlRnVsbFRpbWVyKHRoaXMpKQotICAgICwgbV9l
ZGVuQWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZUVkZW5UaW1lcih0
aGlzKSkKKyAgICAsIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxiYWNrOjp0
cnlDcmVhdGVGdWxsVGltZXIodGhpcykpCisgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKEdD
QWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRWRlblRpbWVyKHRoaXMpKQogICAgICwgbV9zd2Vl
cGVyKGFkb3B0UmVmKG5ldyBJbmNyZW1lbnRhbFN3ZWVwZXIodGhpcykpKQogICAgICwgbV9zdG9w
SWZOZWNlc3NhcnlUaW1lcihhZG9wdFJlZihuZXcgU3RvcElmTmVjZXNzYXJ5VGltZXIodm0pKSkK
ICAgICAsIG1fZGVmZXJyYWxEZXB0aCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2UuY3BwCmluZGV4IDMxNGI4N2M2ODdiODBlZGE4NGE2
NmM4N2E2YTVhOGIxOWQwMjE0NjYuLjhjYjA5Nzk2ZjEyODIxNjU3N2IyZjkwYWQyZTJjZTBjNGQy
YmMzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQXN5bmNT
dGFja1RyYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5j
U3RhY2tUcmFjZS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAKLVJlZlB0cjxBc3luY1N0YWNrVHJhY2U+IEFzeW5jU3RhY2tUcmFjZTo6Y3JlYXRlKFJlZjxT
Y3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxBc3lu
Y1N0YWNrVHJhY2U+IHBhcmVudCkKK1JlZjxBc3luY1N0YWNrVHJhY2U+IEFzeW5jU3RhY2tUcmFj
ZTo6Y3JlYXRlKFJlZjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBib29sIHNpbmdsZVNo
b3QsIFJlZlB0cjxBc3luY1N0YWNrVHJhY2U+IHBhcmVudCkKIHsKICAgICBBU1NFUlQoY2FsbFN0
YWNrLT5zaXplKCkpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFzeW5jU3RhY2tUcmFjZShX
VEZNb3ZlKGNhbGxTdGFjayksIHNpbmdsZVNob3QsIFdURk1vdmUocGFyZW50KSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2UuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQXN5bmNTdGFja1RyYWNlLmgKaW5kZXgg
MWMzY2NmNDgzN2FiMTU3MjEwYzAzZmM4M2ZiZGQ3Yzc5Nzg1MTkyNC4uMjJiM2ZlNzQ5NWIxOGU0
YTViZTA3Mzc5MzUyMDllZDk1NTFhY2RlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEpT
X0VYUE9SVF9QUklWQVRFIEFzeW5jU3RhY2tUcmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPEFzeW5j
U3RhY2tUcmFjZT4gewogICAgICAgICBDYW5jZWxlZCwKICAgICB9OwogCi0gICAgc3RhdGljIFJl
ZlB0cjxBc3luY1N0YWNrVHJhY2U+IGNyZWF0ZShSZWY8U2NyaXB0Q2FsbFN0YWNrPiYmLCBib29s
IHNpbmdsZVNob3QsIFJlZlB0cjxBc3luY1N0YWNrVHJhY2U+IHBhcmVudCk7CisgICAgc3RhdGlj
IFJlZjxBc3luY1N0YWNrVHJhY2U+IGNyZWF0ZShSZWY8U2NyaXB0Q2FsbFN0YWNrPiYmLCBib29s
IHNpbmdsZVNob3QsIFJlZlB0cjxBc3luY1N0YWNrVHJhY2U+IHBhcmVudCk7CiAKICAgICBib29s
IGlzUGVuZGluZygpIGNvbnN0OwogICAgIGJvb2wgaXNMb2NrZWQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKaW5kZXggMzhhMDBhNzFiNjE4ZTcxNDdlMzFhYmFmY2ZmMzNjYzRkYTBkMGQ1ZC4u
OTJhNWYyMDhhZjRjYzJiM2Y1YTg0NDJiODI4MDVlNzFmMjZhMGM1MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKQEAgLTg4Nyw3ICs4ODcsOSBAQCBzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGZpbGxC
dWZmZXJXaXRoQ29udGVudHNPZkZpbGUoRklMRSogZmlsZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgaWYgKGZzZWVrKGZpbGUsIDAsIFNFRUtfU0VUKSA9PSAtMSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgUmVmUHRyPFVpbnQ4QXJyYXk+IHJlc3VsdCA9IFVpbnQ4QXJyYXk6
OmNyZWF0ZShidWZmZXJDYXBhY2l0eSk7CisgICAgYXV0byByZXN1bHQgPSBVaW50OEFycmF5Ojp0
cnlDcmVhdGUoYnVmZmVyQ2FwYWNpdHkpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBzaXplX3QgcmVhZFNpemUgPSBmcmVhZChyZXN1bHQtPmRhdGEoKSwg
MSwgYnVmZmVyQ2FwYWNpdHksIGZpbGUpOwogICAgIGlmIChyZWFkU2l6ZSAhPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGJ1ZmZlckNhcGFjaXR5KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBkZWVhMjU0NTA5
NmNiNTk2YzE4MWFlYzc2ODUxNWZjMWMxYTA4MDUxLi5lYjM2N2MxNGNkMTkzMDFjNTNkNjdmMmEw
ZTA5NGQ2MjM0MWZjMWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBH
Q0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShj
b25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwogCi0gICAgLy8gT25seSBm
b3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkIGFuZCBTaGFy
ZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyLgorICAgIC8vIE9ubHkgZm9yIHVzZSBieSBV
aW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVy
Ojp0cnlDcmVhdGVBcnJheUJ1ZmZlci4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PEFycmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZTVmZDRi
Yjc0MTZmM2UyNTBmZjhhNjg5NTE1N2VmZDg2ZjVkYzQ5OC4uZWYyZTgwZjRlYTAzYmRlNjQ5MWNm
NzMzM2EyN2I3YzU3N2YwZWI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTM2LDExICszNiwxNSBAQCBjbGFz
cyBHZW5lcmljVHlwZWRBcnJheVZpZXcgZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsK
ICAgICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5h
bWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRp
YyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IHRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQ
dHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5l
cmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCi0gICAgc3RhdGljIFJlZlB0
cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0
aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CiAgICAg
CiAgICAgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPihiYXNlQWRkcmVzcygpKTsgfQogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDFiNmRhNTYxZWI3Y2ViMTMxMmFhNjQ4Y2QyZTQ5
M2I1ODJiOWI2YjUuLmU2NjBjZmNkZDQ4OTQ1NjJkMTc0ZjY0NjU3NWQ1NjIyYjEyMjM3OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5
Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTM5LDI1ICszOSw1MyBAQCBHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBlZEFycmF5VmlldygKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+
IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkK
K1JlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9
IHRyeUNyZWF0ZShsZW5ndGgpOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgorUmVmPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCisgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0
ZShhcnJheSwgbGVuZ3RoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHJldHVy
biByZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KK1JlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBhdXRvIHJlc3Vs
dCA9IHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CisgICAg
UkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VOb25OdWxs
KCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CitSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNy
ZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICBp
ZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNyZWF0ZShX
VEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7CisgICAgcmV0dXJuIHRyeUNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlciksIDAsIGxlbmd0aCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1S
ZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZSgKK1JlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAogICAgIGNvbnN0
IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAg
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gcmVzdWx0ID0gY3JlYXRlKGxlbmd0aCk7Cisg
ICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0
aCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIG1lbWNw
eShyZXN1bHQtPmRhdGEoKSwgYXJyYXksIGxlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAorUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoCiAg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKQogewogICAgIEFTU0VSVChidWZmZXIpOwpAQCAtNzAsMTQgKzk4LDIzIEBA
IFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgot
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KK1JlZjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+CiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQoreworICAgIGF1dG8gcmVzdWx0ID0gdHJ5
Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgpOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7
CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBBZGFwdG9yPgorUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KK0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBsZW5ndGgpCiB7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPQogICAgICAg
ICBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwor
ICAgIHJldHVybiB0cnlDcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpAQCAtOTYsNyArMTMzLDcgQEAgR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0CiAg
ICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgQVNT
RVJUKGJ1ZmZlcik7CiAgICAgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBl
PigqYnVmZmVyLCBieXRlT2Zmc2V0KCksICZvZmZzZXQsICZsZW5ndGgpOwotICAgIHJldHVybiBj
cmVhdGUoYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgcmV0dXJuIHRyeUNyZWF0ZShidWZm
ZXIsIG9mZnNldCwgbGVuZ3RoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNw
cAppbmRleCBiMzAzOWEyMzZiYzdkOTI2MmIzZWUwYmM5ZjRmYWVlZjYzYjczNTdjLi5jMmRlMDAz
ZmY2YjcxMGRkZTdkZGJiZTgxOTk0YTU4MjhlNDU3MmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0zMDIsNyArMzAy
LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5
U2hhcmVkSW1wbCgpCiAgICAgc3dpdGNoICh0eXBlKCkpIHsKICNkZWZpbmUgRkFDVE9SWSh0eXBl
KSBcCiAgICAgY2FzZSB0eXBlICMjIEFycmF5VHlwZTogXAotICAgICAgICByZXR1cm4gdHlwZSAj
IyBBcnJheTo6Y3JlYXRlKGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0
dXJuIHR5cGUgIyMgQXJyYXk6OnRyeUNyZWF0ZShidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7
CiAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKEZBQ1RP
UlkpCiAjdW5kZWYgRkFDVE9SWQogICAgIGNhc2UgRGF0YVZpZXdUeXBlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0lubGluZXMuaAppbmRleCBjYTE4ODQ0NzcyODEwMGM1YWYzN2E1N2Q2ZDdlMTRjNmY4Nzky
YjA1Li4yZTU2Y2UxNjViNTk2NGNhNGRkMDRmNTdlNDc5ODZiNDc0ZGU1YzZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0lubGluZXMuaApAQCAtMzE0LDEzICszMTQsMTMgQEAgYm9vbCBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0KAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4K
IFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OnBvc3NpYmx5U2hhcmVkVHlwZWRJbXBsKCkKIHsKLSAgICByZXR1cm4gQWRh
cHRvcjo6Vmlld1R5cGU6OmNyZWF0ZShwb3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBieXRlT2Zmc2V0
KCksIGxlbmd0aCgpKTsKKyAgICByZXR1cm4gQWRhcHRvcjo6Vmlld1R5cGU6OnRyeUNyZWF0ZShw
b3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlw
ZT4gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnVuc2hhcmVkVHlwZWRJbXBsKCkK
IHsKLSAgICByZXR1cm4gQWRhcHRvcjo6Vmlld1R5cGU6OmNyZWF0ZSh1bnNoYXJlZEJ1ZmZlcigp
LCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsKKyAgICByZXR1cm4gQWRhcHRvcjo6Vmlld1R5cGU6
OnRyeUNyZWF0ZSh1bnNoYXJlZEJ1ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU1lbW9yeS5jcHAKaW5kZXggYTY4NWYwZWEzZTRmY2Y5MDVkYjJjYzM2ZDUwMGFhNzU5Y2I3
N2IzZi4uMzhiYmU4OTQ4NDdhZjc5MmE4YjMwZWMxZTAxNjcxMDM1OTJjMjQ4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKQEAgLTI2OSwxMiArMjY5LDEyIEBA
IE1lbW9yeTo6TWVtb3J5KHZvaWQqIG1lbW9yeSwgUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3Vu
dCBtYXhpbXVtLCBzaXplX3QgbWFwcGVkCiAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1lbW9y
eTo6TWVtb3J5IGFsbG9jYXRpbmcgIiwgKnRoaXMpOwogfQogCi1SZWZQdHI8TWVtb3J5PiBNZW1v
cnk6OmNyZWF0ZSgpCitSZWY8TWVtb3J5PiBNZW1vcnk6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBNZW1vcnkoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVtb3J5
KCkpOwogfQogCi1SZWZQdHI8TWVtb3J5PiBNZW1vcnk6OmNyZWF0ZShQYWdlQ291bnQgaW5pdGlh
bCwgUGFnZUNvdW50IG1heGltdW0sIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+
JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNs
YWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1
Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQorUmVm
UHRyPE1lbW9yeT4gTWVtb3J5Ojp0cnlDcmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3Vu
dCBtYXhpbXVtLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1l
bW9yeVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3lu
Y1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdl
Q291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykKIHsKICAgICBBU1NFUlQo
aW5pdGlhbCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1heGltdW0gfHwgbWF4aW11bSA+PSBpbml0
aWFsKTsgLy8gVGhpcyBzaG91bGQgYmUgZ3VhcmFudGVlZCBieSBvdXIgY2FsbGVyLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oCmluZGV4IGMzNjU4MGY3OWVmNzMzZDg2MThk
Y2ZkYjNmNjcyMTczODVmMmYyNDEuLjAwNzM3ZmMxZTY1ZTJiMjhkMGIwMDhhOWUzOTUzZGM3NzJj
OTkxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnku
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmgKQEAgLTU5LDgg
KzU5LDggQEAgY2xhc3MgTWVtb3J5IDogcHVibGljIFJlZkNvdW50ZWQ8TWVtb3J5PiB7CiAgICAg
ZW51bSBTeW5jVHJ5VG9SZWNsYWltIHsgU3luY1RyeVRvUmVjbGFpbVRhZyB9OwogICAgIGVudW0g
R3Jvd1N1Y2Nlc3MgeyBHcm93U3VjY2Vzc1RhZyB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxNZW1v
cnk+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8TWVtb3J5PiBjcmVhdGUoUGFnZUNvdW50
IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJl
c3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1Ry
eVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lk
KEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFj
ayk7CisgICAgc3RhdGljIFJlZjxNZW1vcnk+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWZQdHI8
TWVtb3J5PiB0cnlDcmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJl
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFp
bU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VD
b3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayk7CiAKICAgICB+TWVtb3J5KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuY3BwCmluZGV4IDA0YWMwNjUyNTU5YTZkOTM4
ZjA5YjA2YWVlMjAxZjkxMmU5ZTRjNjguLmViYjYzMjUyMGZhZjMwODNkZjRjNmYyNzEwMDFmZDU1
NzE0NWU4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmNwcApAQCAt
NDcsNyArNDcsNyBAQCB2b2lkIFRhYmxlOjpzZXRMZW5ndGgodWludDMyX3QgbGVuZ3RoKQogICAg
IEFTU0VSVChtX21hc2sgPT0gV1RGOjptYXNrRm9yU2l6ZShhbGxvY2F0ZWRMZW5ndGgobGVuZ3Ro
KSkpOwogfQogCi1SZWZQdHI8VGFibGU+IFRhYmxlOjpjcmVhdGUodWludDMyX3QgaW5pdGlhbCwg
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSkKK1JlZlB0cjxUYWJsZT4gVGFibGU6OnRy
eUNyZWF0ZSh1aW50MzJfdCBpbml0aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVt
KQogewogICAgIGlmICghaXNWYWxpZExlbmd0aChpbml0aWFsKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oCmluZGV4IDRlMTVlMjkw
MTQ0ZjIzMjgzN2M2Yjg1MzBhMjdkM2YzNWE3NjA5ZmIuLjJmNTQ4M2M2MThmYTQ1OGJjZTBlZDg1
MGRhNTU5NGE5MWU2MmI5ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21UYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5o
CkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEluc3RhbmNlOwogCiBjbGFzcyBUYWJsZSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUYWJsZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQ
dHI8VGFibGU+IGNyZWF0ZSh1aW50MzJfdCBpbml0aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiBtYXhpbXVtKTsKKyAgICBzdGF0aWMgUmVmUHRyPFRhYmxlPiB0cnlDcmVhdGUodWludDMyX3Qg
aW5pdGlhbCwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSk7CiAKICAgICBKU19FWFBP
UlRfUFJJVkFURSB+VGFibGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKaW5kZXggYWJjN2ZhZTQ4ZWY3OGJh
ZTdlZjM0Y2JlNGYzNTZhYmY4NGVhMDNhMy4uYmQ3MDNmZGIyNmIyNDM4MzYxM2E2YjRjZjgzOWI3
MjQ2NTAxOTgwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgSlNXZWJBc3Nl
bWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4ZWNT
dGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGF1dG8qIGpzTWVtb3J5ID0gSlNXZWJBc3NlbWJs
eU1lbW9yeTo6Y3JlYXRlKGV4ZWMsIHZtLCBnbG9iYWxPYmplY3QtPldlYkFzc2VtYmx5TWVtb3J5
U3RydWN0dXJlKCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBudWxscHRyKTsKIAotICAgICAgICAgICAgUmVmUHRyPFdhc206Ok1lbW9yeT4gbWVtb3J5ID0g
V2FzbTo6TWVtb3J5OjpjcmVhdGUobW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5LmluaXRpYWwoKSwg
bW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5Lm1heGltdW0oKSwKKyAgICAgICAgICAgIFJlZlB0cjxX
YXNtOjpNZW1vcnk+IG1lbW9yeSA9IFdhc206Ok1lbW9yeTo6dHJ5Q3JlYXRlKG1vZHVsZUluZm9y
bWF0aW9uLm1lbW9yeS5pbml0aWFsKCksIG1vZHVsZUluZm9ybWF0aW9uLm1lbW9yeS5tYXhpbXVt
KCksCiAgICAgICAgICAgICAgICAgWyZ2bV0gKFdhc206Ok1lbW9yeTo6Tm90aWZ5UHJlc3N1cmUp
IHsgdm0uaGVhcC5jb2xsZWN0QXN5bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAg
ICAgICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7IHZtLmhl
YXAuY29sbGVjdFN5bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAg
ICBbJnZtLCBqc01lbW9yeV0gKFdhc206Ok1lbW9yeTo6R3Jvd1N1Y2Nlc3MsIFdhc206OlBhZ2VD
b3VudCBvbGRQYWdlQ291bnQsIFdhc206OlBhZ2VDb3VudCBuZXdQYWdlQ291bnQpIHsganNNZW1v
cnktPmdyb3dTdWNjZXNzQ2FsbGJhY2sodm0sIG9sZFBhZ2VDb3VudCwgbmV3UGFnZUNvdW50KTsg
fSk7CkBAIC0yOTcsNyArMjk3LDcgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICBpZiAo
IWpzSW5zdGFuY2UtPm1lbW9yeSgpKSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGEg
ZHVtbXkgbWVtb3J5LCBzbyB0aGF0IHdhc20gLT4gd2FzbSB0aHVua3MgYXZvaWQgY2hlY2tpbmcg
Zm9yIGEgbnVsbHB0ciBNZW1vcnkgd2hlbiB0cnlpbmcgdG8gc2V0IHBpbm5lZCByZWdpc3RlcnMu
CiAgICAgICAgIGF1dG8qIGpzTWVtb3J5ID0gSlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlKGV4
ZWMsIHZtLCBnbG9iYWxPYmplY3QtPldlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJlKCkpOwotICAg
ICAgICBqc01lbW9yeS0+YWRvcHQoV2FzbTo6TWVtb3J5OjpjcmVhdGUoKS5yZWxlYXNlTm9uTnVs
bCgpKTsKKyAgICAgICAganNNZW1vcnktPmFkb3B0KFdhc206Ok1lbW9yeTo6Y3JlYXRlKCkpOwog
ICAgICAgICBqc0luc3RhbmNlLT5zZXRNZW1vcnkodm0sIGpzTWVtb3J5KTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCmlu
ZGV4IDU2NTYyNTI2Y2ZlNzE3OGIyNzM4ZTkyNjVkN2IyODVhM2U0NzY0NmYuLjdhNmE1ZjAzOThm
ODYwYTEwMTM4YjZiM2JkNTk1NjJjMDA3ZDllMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCkBAIC02OSw3ICs2OSw3
IEBAIFN0cnVjdHVyZSogSlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAKIEpTV2ViQXNzZW1ibHlNZW1vcnk6OkpTV2Vi
QXNzZW1ibHlNZW1vcnkoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uo
dm0sIHN0cnVjdHVyZSkKLSAgICAsIG1fbWVtb3J5KFdhc206Ok1lbW9yeTo6Y3JlYXRlKCkucmVs
ZWFzZU5vbk51bGwoKSkKKyAgICAsIG1fbWVtb3J5KFdhc206Ok1lbW9yeTo6Y3JlYXRlKCkpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TWVtb3J5Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNGYyNjAyNDJkNmZiNTcwN2Y3
NWRlNzFkMTM2ZDZhNjliMDEyYWZmOC4uMTQwNGU2NzgyYTliNjJmYzBhMWJjMzZlN2I1NDQ4NDdl
MjJlNmQyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJs
eU1lbW9yeShFeGVjU3RhdGUqIGV4ZWMKICAgICBhdXRvKiBqc01lbW9yeSA9IEpTV2ViQXNzZW1i
bHlNZW1vcnk6OmNyZWF0ZShleGVjLCB2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5X
ZWJBc3NlbWJseU1lbW9yeVN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgUmVmUHRyPFdhc206Ok1lbW9yeT4g
bWVtb3J5ID0gV2FzbTo6TWVtb3J5OjpjcmVhdGUoaW5pdGlhbFBhZ2VDb3VudCwgbWF4aW11bVBh
Z2VDb3VudCwKKyAgICBSZWZQdHI8V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6
OnRyeUNyZWF0ZShpbml0aWFsUGFnZUNvdW50LCBtYXhpbXVtUGFnZUNvdW50LAogICAgICAgICBb
JnZtXSAoV2FzbTo6TWVtb3J5OjpOb3RpZnlQcmVzc3VyZSkgeyB2bS5oZWFwLmNvbGxlY3RBc3lu
YyhDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOyB9LAogICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5
OjpTeW5jVHJ5VG9SZWNsYWltKSB7IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVjdGlvblNjb3Bl
OjpGdWxsKTsgfSwKICAgICAgICAgWyZ2bSwganNNZW1vcnldIChXYXNtOjpNZW1vcnk6Okdyb3dT
dWNjZXNzLCBXYXNtOjpQYWdlQ291bnQgb2xkUGFnZUNvdW50LCBXYXNtOjpQYWdlQ291bnQgbmV3
UGFnZUNvdW50KSB7IGpzTWVtb3J5LT5ncm93U3VjY2Vzc0NhbGxiYWNrKHZtLCBvbGRQYWdlQ291
bnQsIG5ld1BhZ2VDb3VudCk7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IGU4Y2E1OGNiZjYw
YWM0NmFiMjMwZWUzZGYwNGE1ZjRhMzAyOGYyZjIuLjM5YTY2ZmFmNjYzODZmN2NkYzhlNjNlNjQ0
YWUwZmNmNzA5ODEyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTI5OCw3ICsyOTgsNyBAQCB2
b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSwgSlNPYmplY3QqIGltcG9ydE9iagogICAgICAgICBpZiAoISFtb2R1bGVJbmZvcm1hdGlvbi50
YWJsZUluZm9ybWF0aW9uICYmICFoYXNUYWJsZUltcG9ydCkgewogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIW1vZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaXNJbXBvcnQoKSk7
CiAgICAgICAgICAgICAvLyBXZSBjcmVhdGUgYSBUYWJsZSB3aGVuIGl0J3MgYSBUYWJsZSBkZWZp
bml0aW9uLgotICAgICAgICAgICAgUmVmUHRyPFdhc206OlRhYmxlPiB3YXNtVGFibGUgPSBXYXNt
OjpUYWJsZTo6Y3JlYXRlKG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaW5pdGlh
bCgpLCBtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0aW9uLm1heGltdW0oKSk7CisgICAg
ICAgICAgICBSZWZQdHI8V2FzbTo6VGFibGU+IHdhc21UYWJsZSA9IFdhc206OlRhYmxlOjp0cnlD
cmVhdGUobW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlvbi5pbml0aWFsKCksIG1vZHVs
ZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24ubWF4aW11bSgpKTsKICAgICAgICAgICAgIGlm
ICghd2FzbVRhYmxlKQogICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNX
ZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgImNvdWxkbid0IGNyZWF0ZSBUYWJsZSIpKTsK
ICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBKU1dlYkFzc2VtYmx5VGFi
bGU6OmNyZWF0ZShleGVjLCB2bSwgZ2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseVRhYmxlU3RydWN0
dXJlKCksIHdhc21UYWJsZS5yZWxlYXNlTm9uTnVsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IDA3NmM3ODc4ZjVkZTI2ZWNiMDE3YmY4NTc4OGIwMDE5N2VhMzJiMTUuLjVhNjk1
MjA4NTBkZTAxOTFhZTI3M2I0N2ZiOTliMzM3YzE3ZTg2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVj
dG9yLmNwcApAQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5VGFibGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgUmVmUHRyPFdhc206OlRhYmxlPiB3YXNtVGFibGUgPSBXYXNtOjpU
YWJsZTo6Y3JlYXRlKGluaXRpYWwsIG1heGltdW0pOworICAgIFJlZlB0cjxXYXNtOjpUYWJsZT4g
d2FzbVRhYmxlID0gV2FzbTo6VGFibGU6OnRyeUNyZWF0ZShpbml0aWFsLCBtYXhpbXVtKTsKICAg
ICBpZiAoIXdhc21UYWJsZSkgewogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsCiAgICAgICAgICAgICBjcmVhdGVSYW5nZUVycm9y
KGV4ZWMsICJjb3VsZG4ndCBjcmVhdGUgVGFibGUiX3MpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xl
YXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
TGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcAppbmRleCA0NzZkMmU1ZTM3N2E1OTQwMGE2NTU0
MjYyNTg3NzU4YTdlZTk3MmYyLi5kMGZiM2UwNTM2ZmVkYzkyNzFjZTFkZTkzMGFiNDdjYjU3N2E0
OTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5jcHAK
QEAgLTE5NCw3ICsxOTQsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IENETVNlc3Npb25DbGVhcktl
eTo6Y2FjaGVkS2V5Rm9yS2V5SUQoY29uc3QgU3RyaW5nJiBrZXlJZCkgYwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIGF1dG8ga2V5RGF0YSA9IG1fY2FjaGVkS2V5cy5nZXQoa2V5SWQp
OwotICAgIFJlZlB0cjxVaW50OEFycmF5PiBrZXlEYXRhQXJyYXkgPSBVaW50OEFycmF5OjpjcmVh
dGUoa2V5RGF0YS5kYXRhKCksIGtleURhdGEuc2l6ZSgpKTsKKyAgICBhdXRvIGtleURhdGFBcnJh
eSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShrZXlEYXRhLmRhdGEoKSwga2V5RGF0YS5zaXplKCkpOwog
ICAgIHJldHVybiBrZXlEYXRhQXJyYXktPnVuc2hhcmVkQnVmZmVyKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudC5tbQppbmRleCA3OWVjODkxZDgxM2NkOTFiNzA4NzE5Zjc0MmQ5NjlhN2ZmMjFm
NzA5Li42MmIzMTkyYTJmNjM4Y2M5NGQ5MzJhZThiNWNmYmE0NDBhYzFlNzQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdp
blJlcGxhY2VtZW50Lm1tCkBAIC0zMDgsNyArMzA4LDcgQEAgc3RhdGljIEpTVmFsdWUgKmpzVmFs
dWVXaXRoRGljdGlvbmFyeUluQ29udGV4dChOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnksIEpTQ29u
dGUKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IGF1dG8gbmFtZSA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoa2V5KTsKKyAgICAgICAgYXV0byBu
YW1lID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShrZXkpOwogICAgICAgICBKU09iamVjdFNl
dFByb3BlcnR5KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIHJlc3VsdE9iamVjdCwgbmFt
ZS5nZXQoKSwgW3ZhbHVlIEpTVmFsdWVSZWZdLCAwLCAmZXhjZXB0aW9uKTsKICAgICAgICAgaWYg
KGV4Y2VwdGlvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAppbmRleCA5ZjBhMjVmZDNmYmM4YjMyZGY5
ODY0MTFmNGExNTVjZmI2MTk0OTQ5Li41NmExM2NhZWFiZDRlM2ZkNGI4YmMzYWU2ZjdhNjgxZTMy
ZGQyODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyLmNwcApAQCAtNjcsNyArNjcsNyBAQCBBdWRpb0J1ZmZlcjo6QXVkaW9CdWZmZXIodW5zaWdu
ZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdAogICAgIG1f
Y2hhbm5lbHMucmVzZXJ2ZUNhcGFjaXR5KG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkgewotICAgICAgICBhdXRv
IGNoYW5uZWxEYXRhQXJyYXkgPSBGbG9hdDMyQXJyYXk6OmNyZWF0ZShtX2xlbmd0aCk7CisgICAg
ICAgIGF1dG8gY2hhbm5lbERhdGFBcnJheSA9IEZsb2F0MzJBcnJheTo6dHJ5Q3JlYXRlKG1fbGVu
Z3RoKTsKICAgICAgICAgaWYgKCFjaGFubmVsRGF0YUFycmF5KSB7CiAgICAgICAgICAgICBpbnZh
bGlkYXRlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTg2LDcgKzg2LDcgQEAgQXVkaW9CdWZm
ZXI6OkF1ZGlvQnVmZmVyKEF1ZGlvQnVzJiBidXMpCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscyA9IGJ1cy5udW1iZXJPZkNoYW5uZWxzKCk7CiAgICAgbV9jaGFubmVscy5yZXNlcnZlQ2Fw
YWNpdHkobnVtYmVyT2ZDaGFubmVscyk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bWJlck9mQ2hhbm5lbHM7ICsraSkgewotICAgICAgICBhdXRvIGNoYW5uZWxEYXRhQXJyYXkgPSBG
bG9hdDMyQXJyYXk6OmNyZWF0ZShtX2xlbmd0aCk7CisgICAgICAgIGF1dG8gY2hhbm5lbERhdGFB
cnJheSA9IEZsb2F0MzJBcnJheTo6dHJ5Q3JlYXRlKG1fbGVuZ3RoKTsKICAgICAgICAgaWYgKCFj
aGFubmVsRGF0YUFycmF5KSB7CiAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTExNSw5ICsxMTUsNyBAQCBFeGNlcHRpb25PcjxSZWY8RmxvYXQzMkFycmF5
Pj4gQXVkaW9CdWZmZXI6OmdldENoYW5uZWxEYXRhKHVuc2lnbmVkIGNoYW5uZWxJbmRleAogICAg
IGlmIChjaGFubmVsSW5kZXggPj0gbV9jaGFubmVscy5zaXplKCkpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBTeW50YXhFcnJvciB9OwogICAgIGF1dG8mIGNoYW5uZWxEYXRhID0gKm1fY2hh
bm5lbHNbY2hhbm5lbEluZGV4XTsKLSAgICBhdXRvIGFycmF5ID0gRmxvYXQzMkFycmF5OjpjcmVh
dGUoY2hhbm5lbERhdGEudW5zaGFyZWRCdWZmZXIoKSwgY2hhbm5lbERhdGEuYnl0ZU9mZnNldCgp
LCBjaGFubmVsRGF0YS5sZW5ndGgoKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOwotICAg
IHJldHVybiBhcnJheS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMyQXJyYXk6
OmNyZWF0ZShjaGFubmVsRGF0YS51bnNoYXJlZEJ1ZmZlcigpLCBjaGFubmVsRGF0YS5ieXRlT2Zm
c2V0KCksIGNoYW5uZWxEYXRhLmxlbmd0aCgpKTsKIH0KIAogRmxvYXQzMkFycmF5KiBBdWRpb0J1
ZmZlcjo6Y2hhbm5lbERhdGEodW5zaWduZWQgY2hhbm5lbEluZGV4KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkV5ZVBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkV5ZVBhcmFtZXRlcnMuY3BwCmluZGV4IDI1ZmI4ZThiN2Q1
NTVkN2FkMGQzNDkxNzQ5OTdkYjMyOTcwY2M5YTkuLjAxMjY0YmQ4NjkyNGZjZmNjYzhjMmM1ZTNh
NzhmNzIwNjM5MTE2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIv
VlJFeWVQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZS
RXllUGFyYW1ldGVycy5jcHAKQEAgLTM5LDEyICszOSwxMSBAQCBWUkV5ZVBhcmFtZXRlcnM6OlZS
RXllUGFyYW1ldGVycyhjb25zdCBGbG9hdFBvaW50M0QmIG9mZnNldCwgY29uc3QgVlJQbGF0Zm9y
bURpcwogUmVmPEZsb2F0MzJBcnJheT4gVlJFeWVQYXJhbWV0ZXJzOjpvZmZzZXQoKSBjb25zdAog
ewogICAgIGF1dG8gb2Zmc2V0ID0gRmxvYXQzMkFycmF5OjpjcmVhdGUoMyk7Ci0gICAgUkVMRUFT
RV9BU1NFUlQob2Zmc2V0KTsKICAgICBmbG9hdCogb2Zmc2V0RGF0YSA9IG9mZnNldC0+ZGF0YSgp
OwogICAgIG9mZnNldERhdGFbMF0gPSBtX29mZnNldC54KCk7CiAgICAgb2Zmc2V0RGF0YVsxXSA9
IG1fb2Zmc2V0LnkoKTsKICAgICBvZmZzZXREYXRhWzJdID0gbV9vZmZzZXQueigpOwotICAgIHJl
dHVybiBvZmZzZXQucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1cm4gb2Zmc2V0OwogfQogCiBj
b25zdCBWUkZpZWxkT2ZWaWV3JiBWUkV5ZVBhcmFtZXRlcnM6OmZpZWxkT2ZWaWV3KCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJGcmFtZURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHAKaW5kZXggNjVj
M2RiYWQ2OGRjMmU4NGExMzYxYzY2MGExZjdlZWU4OThjMWZiZC4uYjIxNWI1NWZjNmMwMzFiMDdk
NjljNzJkNWZhMGQ5ZTVlYmE3MWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2
ci9WUkZyYW1lRGF0YS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgVlJGcmFtZURhdGE6OlZSRnJhbWVE
YXRhKCkKIHN0YXRpYyBSZWY8RmxvYXQzMkFycmF5PiBtYXRyaXhUb0FycmF5KGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCiB7CiAgICAgYXV0byBjb2x1bW5NYWpvck1hdHJpeCA9
IG1hdHJpeC50b0NvbHVtbk1ham9yRmxvYXRBcnJheSgpOwotICAgIHJldHVybiBGbG9hdDMyQXJy
YXk6OmNyZWF0ZShjb2x1bW5NYWpvck1hdHJpeC5kYXRhKCksIDE2KS5yZWxlYXNlTm9uTnVsbCgp
OworICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShjb2x1bW5NYWpvck1hdHJpeC5kYXRh
KCksIDE2KTsKIH0KIAogUmVmPEZsb2F0MzJBcnJheT4gVlJGcmFtZURhdGE6OmxlZnRQcm9qZWN0
aW9uTWF0cml4KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
dnIvVlJQb3NlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJQb3NlLmNwcApp
bmRleCA4ZTNiYWY1YTJmMDg0NTA5NTY0OGI4MWRhMjlkZGJkZTlmZWY2NDRiLi4xNjg2YjlhNWFi
N2RmN2MzN2FlM2NlMjIzNTcwZDA0OWI1MGU5NzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnZyL1ZSUG9zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ2ci9WUlBvc2UuY3BwCkBAIC0zMiw3ICszMiw3IEBAIHN0YXRpYyBSZWZQdHI8RmxvYXQzMkFy
cmF5PiBvcHRpb25hbEZsb2F0M1RvSlNDQXJyYXkoY29uc3Qgc3RkOjpvcHRpb25hbDxWUlBsYXRm
CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBG
bG9hdDMyQXJyYXk6OmNyZWF0ZShkYXRhLT5kYXRhLCAzKS5yZWxlYXNlTm9uTnVsbCgpOworICAg
IHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShkYXRhLT5kYXRhLCAzKTsKIH0KIAogUmVmUHRy
PEZsb2F0MzJBcnJheT4gVlJQb3NlOjpwb3NpdGlvbigpIGNvbnN0CkBAIC00Miw3ICs0Miw3IEBA
IFJlZlB0cjxGbG9hdDMyQXJyYXk+IFZSUG9zZTo6cG9zaXRpb24oKSBjb25zdAogCiAgICAgYXV0
byYgcG9zaXRpb24gPSAqbV90cmFja2luZ0luZm8ucG9zaXRpb247CiAgICAgZmxvYXQgcG9zaXRp
b25EYXRhWzNdID0geyBwb3NpdGlvbi54KCksIHBvc2l0aW9uLnkoKSwgcG9zaXRpb24ueigpIH07
Ci0gICAgcmV0dXJuIEZsb2F0MzJBcnJheTo6Y3JlYXRlKHBvc2l0aW9uRGF0YSwgMykucmVsZWFz
ZU5vbk51bGwoKTsKKyAgICByZXR1cm4gRmxvYXQzMkFycmF5OjpjcmVhdGUocG9zaXRpb25EYXRh
LCAzKTsKIH0KIAogUmVmUHRyPEZsb2F0MzJBcnJheT4gVlJQb3NlOjpsaW5lYXJWZWxvY2l0eSgp
IGNvbnN0CkBAIC02Miw3ICs2Miw3IEBAIFJlZlB0cjxGbG9hdDMyQXJyYXk+IFZSUG9zZTo6b3Jp
ZW50YXRpb24oKSBjb25zdAogCiAgICAgYXV0byYgb3JpZW50YXRpb24gPSAqbV90cmFja2luZ0lu
Zm8ub3JpZW50YXRpb247CiAgICAgZmxvYXQgb3JpZW50YXRpb25EYXRhWzRdID0geyBvcmllbnRh
dGlvbi54LCBvcmllbnRhdGlvbi55LCBvcmllbnRhdGlvbi56LCBvcmllbnRhdGlvbi53IH07Ci0g
ICAgcmV0dXJuIEZsb2F0MzJBcnJheTo6Y3JlYXRlKG9yaWVudGF0aW9uRGF0YSwgNCkucmVsZWFz
ZU5vbk51bGwoKTsKKyAgICByZXR1cm4gRmxvYXQzMkFycmF5OjpjcmVhdGUob3JpZW50YXRpb25E
YXRhLCA0KTsKIH0KIAogUmVmUHRyPEZsb2F0MzJBcnJheT4gVlJQb3NlOjphbmd1bGFyVmVsb2Np
dHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUlN0
YWdlUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSU3RhZ2VQ
YXJhbWV0ZXJzLmNwcAppbmRleCAyZGEwNzQzYjQ0YzdlYzhmODMwOTI1OWJmNGRhMjU4N2FkZjI4
NmUyLi5iNmU1NzMyNmM1MjRhNTc2OTczYmMzYjZhN2M4NjRkODE4ODIyNTczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSU3RhZ2VQYXJhbWV0ZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSU3RhZ2VQYXJhbWV0ZXJzLmNwcApAQCAt
NDEsNyArNDEsNyBAQCBWUlN0YWdlUGFyYW1ldGVyczo6VlJTdGFnZVBhcmFtZXRlcnMoY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHNpdHRpbmdUb1N0YW5kaQogUmVmPEZsb2F0MzJBcnJheT4g
VlJTdGFnZVBhcmFtZXRlcnM6OnNpdHRpbmdUb1N0YW5kaW5nVHJhbnNmb3JtKCkgY29uc3QKIHsK
ICAgICBhdXRvIGNvbHVtbk1ham9yTWF0cml4ID0gbV9zaXR0aW5nVG9TdGFuZGluZ1RyYW5zZm9y
bS50b0NvbHVtbk1ham9yRmxvYXRBcnJheSgpOwotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNy
ZWF0ZShjb2x1bW5NYWpvck1hdHJpeC5kYXRhKCksIDE2KS5yZWxlYXNlTm9uTnVsbCgpOworICAg
IHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShjb2x1bW5NYWpvck1hdHJpeC5kYXRhKCksIDE2
KTsKIH0KIAogZmxvYXQgVlJTdGFnZVBhcmFtZXRlcnM6OnNpemVYKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVs
dENvbnRyb2xsZXIuaAppbmRleCA2NGNlZGMxNjhmZDBlMmNhMDA0ODQwMDAzNmY4MzQxMGJiZmZk
MjFiLi40ODRjOGQ4MWU3YmM2MWFhZTM5NmJhYzU4Y2E2YzIzNGNiZmQ5OWNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlci5oCkBAIC05OSw4ICs5OSw3IEBAIGlubGluZSBib29sIFJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXI6OmVucXVldWUoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+JiYK
ICAgICB9CiAgICAgYXV0byBsZW5ndGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICBhdXRv
IGNodW5rID0gSlNDOjpVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5n
dGgpOwotICAgIEFTU0VSVChjaHVuayk7Ci0gICAgZW5xdWV1ZShzdGF0ZSwgdG9KUygmc3RhdGUs
ICZnbG9iYWxPYmplY3QsIGNodW5rLmdldCgpKSk7CisgICAgZW5xdWV1ZShzdGF0ZSwgdG9KUygm
c3RhdGUsICZnbG9iYWxPYmplY3QsIGNodW5rLnB0cigpKSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9F
eGNlcHRpb24oKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGJhOTQ1Y2Q3NzFl
NGFmOWU4NWY2N2Y4NTcyMDQ4NjI5NTc0NGM2MDkuLmFmN2FiM2E2YzdlNGIyN2NjMzcyZDZkZjIw
YWI2MTJhNDcxNTY1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMjA5NiwzMSArMjA5NiwzMSBAQCBjbGFzcyBD
bG9uZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAgICAgICAgICAgICBhcnJheUJ1ZmZlclZp
ZXcgPSBnZXRKU1ZhbHVlKERhdGFWaWV3OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5
dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIGNhc2UgSW50OEFycmF5VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9K
UyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBJbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5
QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1
ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIEludDhBcnJheTo6dHJ5Q3Jl
YXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFVpbnQ4QXJyYXlUYWc6Ci0gICAg
ICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVp
bnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3Ro
KS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9n
bG9iYWxPYmplY3QsIFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwg
Ynl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgY2FzZSBVaW50OENsYW1wZWRBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVy
VmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDhDbGFtcGVkQXJyYXk6OmNy
ZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7Cisg
ICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3Qs
IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVP
ZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IGNhc2UgSW50MTZBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMo
bV9leGVjLCBtX2dsb2JhbE9iamVjdCwgSW50MTZBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlC
dWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVm
ZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgSW50MTZBcnJheTo6dHJ5Q3Jl
YXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFVpbnQxNkFycmF5VGFnOgotICAg
ICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBV
aW50MTZBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5n
dGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBt
X2dsb2JhbE9iamVjdCwgVWludDE2QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVy
KSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgY2FzZSBJbnQzMkFycmF5VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3
ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBJbnQzMkFycmF5OjpjcmVhdGUoV1RGTW92
ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAg
YXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBJbnQzMkFycmF5
Ojp0cnlDcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgVWludDMyQXJyYXlU
YWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxP
YmplY3QsIFVpbnQzMkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZz
ZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyht
X2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBVaW50MzJBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJy
YXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICBjYXNlIEZsb2F0MzJBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5
QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgRmxvYXQzMkFycmF5Ojpj
cmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwor
ICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0
LCBGbG9hdDMyQXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNl
dCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2Fz
ZSBGbG9hdDY0QXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1f
ZXhlYywgbV9nbG9iYWxPYmplY3QsIEZsb2F0NjRBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlC
dWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVm
ZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgRmxvYXQ2NEFycmF5Ojp0cnlD
cmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0tleVJTQUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0tleVJTQUdDcnlwdC5jcHAKaW5kZXggMDgwMjA5OTU0NGM4NGQzZGIxODM3MDYzYjQ5N2U1OWRi
ZGZiNmZlNS4uM2Q4MDAyYzlhOTU0OWEzMmIxMThhMGZjNGUyOWJjZDljN2FiZDJjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNw
cApAQCAtNjI5LDcgKzYyOSw3IEBAIGF1dG8gQ3J5cHRvS2V5UlNBOjphbGdvcml0aG0oKSBjb25z
dCAtPiBLZXlBbGdvcml0aG0KICAgICAgICAgQ3J5cHRvUnNhSGFzaGVkS2V5QWxnb3JpdGhtIHJl
c3VsdDsKICAgICAgICAgcmVzdWx0Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2lu
Z2xldG9uKCkubmFtZShhbGdvcml0aG1JZGVudGlmaWVyKCkpOwogICAgICAgICByZXN1bHQubW9k
dWx1c0xlbmd0aCA9IG1vZHVsdXNMZW5ndGg7Ci0gICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVu
dCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1YmxpY0V4cG9u
ZW50LnNpemUoKSk7CisgICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6
OnRyeUNyZWF0ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7
CiAgICAgICAgIHJlc3VsdC5oYXNoLm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2lu
Z2xldG9uKCkubmFtZShtX2hhc2gpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAg
LTYzNyw3ICs2MzcsNyBAQCBhdXRvIENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkgY29uc3QgLT4g
S2V5QWxnb3JpdGhtCiAgICAgQ3J5cHRvUnNhS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICByZXN1
bHQubmFtZSA9IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKGFsZ29y
aXRobUlkZW50aWZpZXIoKSk7CiAgICAgcmVzdWx0Lm1vZHVsdXNMZW5ndGggPSBtb2R1bHVzTGVu
Z3RoOwotICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShwdWJs
aWNFeHBvbmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgcmVzdWx0LnB1
YmxpY0V4cG9uZW50ID0gVWludDhBcnJheTo6dHJ5Q3JlYXRlKHB1YmxpY0V4cG9uZW50LmRhdGEo
KSwgcHVibGljRXhwb25lbnQuc2l6ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAKaW5kZXggZThlYjg0
ZWEwZTUyNDYwZTJkNTc4YTZiODc4OWQ5N2YzZTIwNDE1YS4uOTRmYzFhNzYyOTMzMmY3ZTgxZDAx
MWY5MGYxNTM2MDRkNjJmNjBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9LZXlSU0FNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvS2V5UlNBTWFjLmNwcApAQCAtMjIyLDcgKzIyMiw3IEBAIGF1dG8gQ3J5cHRvS2V5UlNBOjph
bGdvcml0aG0oKSBjb25zdCAtPiBLZXlBbGdvcml0aG0KICAgICAgICAgQ3J5cHRvUnNhS2V5QWxn
b3JpdGhtIHJlc3VsdDsKICAgICAgICAgcmVzdWx0Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdp
c3RyeTo6c2luZ2xldG9uKCkubmFtZShhbGdvcml0aG1JZGVudGlmaWVyKCkpOwogICAgICAgICBy
ZXN1bHQubW9kdWx1c0xlbmd0aCA9IDA7Ci0gICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9
IFVpbnQ4QXJyYXk6OmNyZWF0ZSgwKTsKKyAgICAgICAgcmVzdWx0LnB1YmxpY0V4cG9uZW50ID0g
VWludDhBcnJheTo6dHJ5Q3JlYXRlKDApOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IApAQCAtMjMyLDcgKzIzMiw3IEBAIGF1dG8gQ3J5cHRvS2V5UlNBOjphbGdvcml0aG0oKSBjb25z
dCAtPiBLZXlBbGdvcml0aG0KICAgICAgICAgQ3J5cHRvUnNhSGFzaGVkS2V5QWxnb3JpdGhtIHJl
c3VsdDsKICAgICAgICAgcmVzdWx0Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2lu
Z2xldG9uKCkubmFtZShhbGdvcml0aG1JZGVudGlmaWVyKCkpOwogICAgICAgICByZXN1bHQubW9k
dWx1c0xlbmd0aCA9IG1vZHVsdXNMZW5ndGg7Ci0gICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVu
dCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1YmxpY0V4cG9u
ZW50LnNpemUoKSk7CisgICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6
OnRyeUNyZWF0ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7
CiAgICAgICAgIHJlc3VsdC5oYXNoLm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2lu
Z2xldG9uKCkubmFtZShtX2hhc2gpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAg
LTI0MCw3ICsyNDAsNyBAQCBhdXRvIENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkgY29uc3QgLT4g
S2V5QWxnb3JpdGhtCiAgICAgQ3J5cHRvUnNhS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICByZXN1
bHQubmFtZSA9IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKGFsZ29y
aXRobUlkZW50aWZpZXIoKSk7CiAgICAgcmVzdWx0Lm1vZHVsdXNMZW5ndGggPSBtb2R1bHVzTGVu
Z3RoOwotICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShwdWJs
aWNFeHBvbmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgcmVzdWx0LnB1
YmxpY0V4cG9uZW50ID0gVWludDhBcnJheTo6dHJ5Q3JlYXRlKHB1YmxpY0V4cG9uZW50LmRhdGEo
KSwgcHVibGljRXhwb25lbnQuc2l6ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmNwcAppbmRleCBkZWFhZGZhN2Y4MTFlNzQ4
ZjNlYjEzNzE0Yjk1ZTcwNzZkOGIyYzRlLi43MzE3NTRlNDY2ZjM3MzZlOWNjNDdkNzMwNDc1MjU3
ZjdlYTViZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9u
bHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5jcHAKQEAg
LTM0NSw3ICszNDUsNyBAQCBSZWY8RE9NUG9pbnQ+IERPTU1hdHJpeFJlYWRPbmx5Ojp0cmFuc2Zv
cm1Qb2ludChET01Qb2ludEluaXQmJiBwb2ludEluaXQpCiAKIEV4Y2VwdGlvbk9yPFJlZjxGbG9h
dDMyQXJyYXk+PiBET01NYXRyaXhSZWFkT25seTo6dG9GbG9hdDMyQXJyYXkoKSBjb25zdAogewot
ICAgIGF1dG8gYXJyYXkzMiA9IEZsb2F0MzJBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgxNik7
CisgICAgYXV0byBhcnJheTMyID0gRmxvYXQzMkFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVk
KDE2KTsKICAgICBpZiAoIWFycmF5MzIpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBVbmtu
b3duRXJyb3IsICJPdXQgb2YgbWVtb3J5Il9zIH07CiAKQEAgLTM3MSw3ICszNzEsNyBAQCBFeGNl
cHRpb25PcjxSZWY8RmxvYXQzMkFycmF5Pj4gRE9NTWF0cml4UmVhZE9ubHk6OnRvRmxvYXQzMkFy
cmF5KCkgY29uc3QKIAogRXhjZXB0aW9uT3I8UmVmPEZsb2F0NjRBcnJheT4+IERPTU1hdHJpeFJl
YWRPbmx5Ojp0b0Zsb2F0NjRBcnJheSgpIGNvbnN0CiB7Ci0gICAgYXV0byBhcnJheTY0ID0gRmxv
YXQ2NEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKDE2KTsKKyAgICBhdXRvIGFycmF5NjQgPSBG
bG9hdDY0QXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoMTYpOwogICAgIGlmICghYXJyYXk2
NCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIk91dCBvZiBtZW1v
cnkiX3MgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggMmViNDFjOWMxMTQ0NGQ2MWJk
ZGYzYWIxNDJiOTViZTM4NDE5NWM3OC4uYTI0YTUzNjI2ODkwYThhOTFkMTE3MzhjYTlhNThhNDUz
NzFiYjhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCkBAIC03OCw3ICs3OCw3IEBAIEV4Y2Vw
dGlvbk9yPFJlZjxGb250RmFjZT4+IEZvbnRGYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIGZhCiAgICAgICAgIFsmXSAoUmVmUHRyPEFycmF5QnVmZmVyPiYgYXJy
YXlCdWZmZXIpIC0+IEV4Y2VwdGlvbk9yPHZvaWQ+IHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5
dGVMZW5ndGggPSBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwogICAgICAgICAgICAgYXV0byBh
cnJheUJ1ZmZlclZpZXcgPSBKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVm
ZmVyKSwgMCwgYnl0ZUxlbmd0aCk7Ci0gICAgICAgICAgICBkYXRhUmVxdWlyZXNBc3luY2hyb25v
dXNMb2FkaW5nID0gcG9wdWxhdGVGb250RmFjZVdpdGhBcnJheUJ1ZmZlcihyZXN1bHQtPmJhY2tp
bmcoKSwgYXJyYXlCdWZmZXJWaWV3LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgZGF0
YVJlcXVpcmVzQXN5bmNocm9ub3VzTG9hZGluZyA9IHBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlC
dWZmZXIocmVzdWx0LT5iYWNraW5nKCksIFdURk1vdmUoYXJyYXlCdWZmZXJWaWV3KSk7CiAgICAg
ICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVu
Y29kZXIuY3BwCmluZGV4IDllZWI3Nzk0NWFlOTIxNGZkYjgwMGMwYmUwY2EzOTA1ODUzNTRmYjUu
LmIwNDljYzFlMzRhNzJiYjkyMmY0MTNkM2I0ZDJmYzI0ZjExODQ5MDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RleHRFbmNvZGVyLmNwcApAQCAtNDAsNyArNDAsNyBAQCBSZWZQdHI8VWludDhBcnJheT4gVGV4
dEVuY29kZXI6OmVuY29kZShTdHJpbmcmJiBpbnB1dCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIG5vdCBuZWVkIHRvIGFsbG9jYXRlIGEgQ1N0cmluZyB0byBlbmNvZGUgaW50byBh
IFVpbnQ4QXJyYXkuCiAgICAgQ1N0cmluZyB1dGY4ID0gaW5wdXQudXRmOCgpOwotICAgIHJldHVy
biBVaW50OEFycmF5OjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRm
OC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gVWludDhBcnJheTo6dHJ5Q3Jl
YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5s
ZW5ndGgoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAppbmRleCA5ZmZjNDA4
ZWY2MDI1ZDJlZTJjNTYxMzNjYjc1ZWVlOGI4NjA5ZWU5Li4zYjJhMjM2NjNkMTA3NzMxZDMyNzFi
NjQzODEzNDUxYTEzMTg3NTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCkBAIC05OSwx
NSArOTksMTMgQEAgSW1hZ2VEYXRhOjpJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAg
ICA6IG1fc2l6ZShzaXplKQogICAgICwgbV9kYXRhKFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVV
bmluaXRpYWxpemVkKChzaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKSkKIHsKLSAgICBBU1NF
UlQobV9kYXRhKTsKIH0KIAogSW1hZ2VEYXRhOjpJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmIGJ5dGVBcnJheSkKICAgICA6IG1fc2l6ZShzaXpl
KQogICAgICwgbV9kYXRhKFdURk1vdmUoYnl0ZUFycmF5KSkKIHsKLSAgICBBU1NFUlQobV9kYXRh
KTsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbV9kYXRhIHx8IChzaXpl
LmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOworICAgIFJFTEVB
U0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oKHNpemUuYXJlYSgpICogNCkudW5z
YWZlR2V0KCkgPD0gbV9kYXRhLT5sZW5ndGgoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0
YS5oCmluZGV4IDk4YjFmMTA4Zjk2ZjFlYmFmODdjMGFkZjQ3ODdmNjViZTRkNmNhNzYuLmEwZmZh
Mjk4NzE4YmYyNzdlOGExNmI2MTNlNTc1OGE3ODcyYzIyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURh
dGEuaApAQCAtMzQsMjUgKzM0LDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgSW1hZ2VEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VEYXRhPiB7
CitjbGFzcyBJbWFnZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZURhdGE+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZSh1bnNpZ25l
ZCBzdywgdW5zaWduZWQgc2gpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUo
Y29uc3QgSW50U2l6ZSYpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29u
c3QgSW50U2l6ZSYsIFJlZjxVaW50OENsYW1wZWRBcnJheT4mJik7Ci0gICAgc3RhdGljIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+PiBjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYm
LCB1bnNpZ25lZCBzdywgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc2gpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlKHVuc2lnbmVk
IHN3LCB1bnNpZ25lZCBzaCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFn
ZURhdGE+IGNyZWF0ZShjb25zdCBJbnRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZShjb25zdCBJbnRTaXplJiwgUmVmPFVpbnQ4Q2xhbXBl
ZEFycmF5PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmUHRy
PEltYWdlRGF0YT4+IGNyZWF0ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYsIHVuc2lnbmVkIHN3
LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzaCk7CiAKICAgICBJbnRTaXplIHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3NpemU7IH0KICAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3Np
emUud2lkdGgoKTsgfQogICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NpemUuaGVp
Z2h0KCk7IH0KIAotICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhLmdldCgpOyB9CisgICAgVWludDhDbGFtcGVkQXJyYXkqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGEucHRyKCk7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbWFnZURhdGEo
Y29uc3QgSW50U2l6ZSYpOwogICAgIEltYWdlRGF0YShjb25zdCBJbnRTaXplJiwgUmVmPFVpbnQ4
Q2xhbXBlZEFycmF5PiYmKTsKIAogICAgIEludFNpemUgbV9zaXplOwotICAgIFJlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gbV9kYXRhOworICAgIFJlZjxVaW50OENsYW1wZWRBcnJheT4gbV9kYXRh
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA3YzA0NTU1MDhk
NTQ0YmE1OGZlNGU3NDNlYTViMmZjMmEwNTMyOTMyLi4wNzY2ODM1MDdlODkyZDkzOWUwMzM1MzVm
ZWJkMDhkYWM3MGYwYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIGNvbnN0IEFy
cmF5QnVmZmVyVmlldyYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gc2xpY2Ug
PSBVaW50OEFycmF5OjpjcmVhdGUoZGF0YS5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBkYXRhLmJ5
dGVPZmZzZXQoKSArIGNoZWNrZWRCeXRlU3JjT2Zmc2V0LnVuc2FmZUdldCgpLCBjaGVja2VkQnl0
ZUxlbmd0aC51bnNhZmVHZXQoKSk7CisgICAgYXV0byBzbGljZSA9IFVpbnQ4QXJyYXk6OnRyeUNy
ZWF0ZShkYXRhLnBvc3NpYmx5U2hhcmVkQnVmZmVyKCksIGRhdGEuYnl0ZU9mZnNldCgpICsgY2hl
Y2tlZEJ5dGVTcmNPZmZzZXQudW5zYWZlR2V0KCksIGNoZWNrZWRCeXRlTGVuZ3RoLnVuc2FmZUdl
dCgpKTsKICAgICBpZiAoIXNsaWNlKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpPVVRfT0ZfTUVNT1JZLCAiYnVmZmVyRGF0YSIsICJDb3VsZCBub3QgY3Jl
YXRlIGludGVybWVkaWF0ZSBBcnJheUJ1ZmZlclZpZXciKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MTg3LDcgKzE4Nyw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyU3ViRGF0
YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBvZmZzZXQsIGNvCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBhdXRvIHNsaWNlID0gVWludDhBcnJheTo6Y3JlYXRlKGRhdGEucG9zc2li
bHlTaGFyZWRCdWZmZXIoKSwgZGF0YS5ieXRlT2Zmc2V0KCkgKyBjaGVja2VkQnl0ZVNyY09mZnNl
dC51bnNhZmVHZXQoKSwgY2hlY2tlZEJ5dGVMZW5ndGgudW5zYWZlR2V0KCkpOworICAgIGF1dG8g
c2xpY2UgPSBVaW50OEFycmF5Ojp0cnlDcmVhdGUoZGF0YS5wb3NzaWJseVNoYXJlZEJ1ZmZlcigp
LCBkYXRhLmJ5dGVPZmZzZXQoKSArIGNoZWNrZWRCeXRlU3JjT2Zmc2V0LnVuc2FmZUdldCgpLCBj
aGVja2VkQnl0ZUxlbmd0aC51bnNhZmVHZXQoKSk7CiAgICAgaWYgKCFzbGljZSkgewogICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6T1VUX09GX01FTU9SWSwgImJ1
ZmZlclN1YkRhdGEiLCAiQ291bGQgbm90IGNyZWF0ZSBpbnRlcm1lZGlhdGUgQXJyYXlCdWZmZXJW
aWV3Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTQxMiw3ICs0MTIsNyBAQCBXZWJHTEFueSBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbnRlcm5hbGZvcm1hdFBhcmFtZXRlcihHQzNEZW51bSB0
YXJnZXQsIEdDMwogICAgICAgICBwYXJhbXNbaV0gPSBzYW1wbGVzW2ldOwogI2VuZGlmCiAKLSAg
ICByZXR1cm4gSW50MzJBcnJheTo6Y3JlYXRlKHBhcmFtcywgbnVtVmFsdWVzKTsKKyAgICByZXR1
cm4gSW50MzJBcnJheTo6dHJ5Q3JlYXRlKHBhcmFtcywgbnVtVmFsdWVzKTsKIH0KIAogdm9pZCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0MzRGVudW0sIGNv
bnN0IFZlY3RvcjxHQzNEZW51bT4mKQpAQCAtMTc5NCw3ICsxNzk0LDcgQEAgV2ViR0xBbnkgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX1dSSVRFTUFTSzoKICAgICAgICAgcmV0dXJuIGdl
dEJvb2xlYW5BcnJheVBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6Q09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6Ci0gICAgICAgIHJldHVybiBVaW50MzJBcnJh
eTo6Y3JlYXRlKG1fY29tcHJlc3NlZFRleHR1cmVGb3JtYXRzLmRhdGEoKSwgbV9jb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdHMuc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIFVpbnQzMkFycmF5Ojp0cnlD
cmVhdGUobV9jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMuZGF0YSgpLCBtX2NvbXByZXNzZWRUZXh0
dXJlRm9ybWF0cy5zaXplKCkpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNVTExfRkFD
RToKICAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOwogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkNVTExfRkFDRV9NT0RFOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNjIwYmRiMzBh
MWI2MjkwNWMxMDI4YWMxYzMyZWRhOGVjZGE2NjBhOC4uYWY3YTc3ZmRjMzg2MzYwYTUzY2I3YTU1
YTQ4NDg0ZGJmYjU1ODRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC00NDQsNyArNDQ0LDcgQEAgV2ViR0xBbnkg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIoR0MzRGVudW0gcG5hbWUpCiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfV1JJVEVNQVNLOgogICAgICAgICByZXR1cm4g
Z2V0Qm9vbGVhbkFycmF5UGFyYW1ldGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpDT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUzoKLSAgICAgICAgcmV0dXJuIFVpbnQzMkFy
cmF5OjpjcmVhdGUobV9jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMuZGF0YSgpLCBtX2NvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0cy5zaXplKCkpOworICAgICAgICByZXR1cm4gVWludDMyQXJyYXk6OnRy
eUNyZWF0ZShtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5kYXRhKCksIG1fY29tcHJlc3NlZFRl
eHR1cmVGb3JtYXRzLnNpemUoKSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q1VMTF9G
QUNFOgogICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6Q1VMTF9GQUNFX01PREU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4
IDg1NzRmY2ViZjk5MzMyZjIzNTEzZGIwYTdjMmQzZWEwYmVjODVjNjkuLmYxOGE4ZmJkMDkwZmI5
NTRjOGRmZGM1OTI3NDc4MWZjYjNiZTllMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0yOTIyLDcg
KzI5MjIsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3Jt
KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QgV2ViRwogICAgICAgICAgICAgbV9jb250ZXh0
LT5nZXRVbmlmb3JtZnYob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBsb2NhdGlvbiwgdmFsdWUpOwog
ICAgICAgICBpZiAobGVuZ3RoID09IDEpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWVbMF07Ci0g
ICAgICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKKyAgICAg
ICAgcmV0dXJuIEZsb2F0MzJBcnJheTo6dHJ5Q3JlYXRlKHZhbHVlLCBsZW5ndGgpOwogICAgIH0K
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpJTlQ6IHsKICAgICAgICAgR0MzRGludCB2YWx1
ZVs0XSA9IHswfTsKQEAgLTI5MzIsNyArMjkzMiw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBjb25zdCBXZWJH
CiAgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihvYmplY3RPclplcm8ocHJvZ3Jh
bSksIGxvY2F0aW9uLCB2YWx1ZSk7CiAgICAgICAgIGlmIChsZW5ndGggPT0gMSkKICAgICAgICAg
ICAgIHJldHVybiB2YWx1ZVswXTsKLSAgICAgICAgcmV0dXJuIEludDMyQXJyYXk6OmNyZWF0ZSh2
YWx1ZSwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIEludDMyQXJyYXk6OnRyeUNyZWF0ZSh2YWx1
ZSwgbGVuZ3RoKTsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTDogewog
ICAgICAgICBHQzNEaW50IHZhbHVlWzRdID0gezB9OwpAQCAtMzAyOCw3ICszMDI4LDcgQEAgV2Vi
R0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VmVydGV4QXR0cmliKEdDM0R1aW50
IGluZGV4LCBHQzNEZW51bSBwbmEKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhf
QVRUUklCX0FSUkFZX1RZUEU6CiAgICAgICAgIHJldHVybiBzdGF0ZS50eXBlOwogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkNVUlJFTlRfVkVSVEVYX0FUVFJJQjoKLSAgICAgICAgcmV0dXJu
IEZsb2F0MzJBcnJheTo6Y3JlYXRlKG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnZhbHVlLCA0
KTsKKyAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJheTo6dHJ5Q3JlYXRlKG1fdmVydGV4QXR0cmli
VmFsdWVbaW5kZXhdLnZhbHVlLCA0KTsKICAgICBkZWZhdWx0OgogICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCAiZ2V0VmVydGV4QXR0cmli
IiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC01MjM1LDcgKzUyMzUsNyBAQCBSZWZQdHI8RmxvYXQzMkFycmF5PiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0ZXIoR0MzRAogICAgIGRlZmF1bHQ6
CiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgfQotICAgIHJldHVybiBGbG9hdDMyQXJy
YXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gRmxvYXQzMkFycmF5Ojp0cnlD
cmVhdGUodmFsdWUsIGxlbmd0aCk7CiB9CiAKIFJlZlB0cjxJbnQzMkFycmF5PiBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRXZWJHTEludEFycmF5UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1l
KQpAQCAtNTI1NCw3ICs1MjU0LDcgQEAgUmVmUHRyPEludDMyQXJyYXk+IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmdldFdlYkdMSW50QXJyYXlQYXJhbWV0ZXIoR0MzRGVudW0KICAgICBkZWZh
dWx0OgogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIH0KLSAgICByZXR1cm4gSW50MzJB
cnJheTo6Y3JlYXRlKHZhbHVlLCBsZW5ndGgpOworICAgIHJldHVybiBJbnQzMkFycmF5Ojp0cnlD
cmVhdGUodmFsdWUsIGxlbmd0aCk7CiB9CiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Y2hlY2tUZXh0dXJlQ29tcGxldGVuZXNzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgYm9v
bCBwcmVwYXJlVG9EcmF3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCA1OTE1YTc3MzE2ZWQ4YTAzMGE0ZTZkM2FkNzQx
MDRjMTc4Y2FkOWQyLi5iMzQwNDYzYTM5YjM5NzNkZGI4MjNjMDBhMGMxNzNlNTUxZmM4ZTY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uLmNwcApAQCAtMTAxNCw3ICsxMDE0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb246OmV4dHJhY3RLZXlVUklLZXlJREFuZENlcnRpZmljYXRlRnJvbUluaXREYXQKICAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IGluaXREYXRhQnVmZmVyID0gaW5pdERhdGEtPnVuc2hhcmVk
QnVmZmVyKCk7CiAKICAgICAvLyBVc2UgYSBEYXRhVmlldyB0byByZWFkIHVpbnQzMiB2YWx1ZXMg
ZnJvbSB0aGUgYnVmZmVyLCBhcyBVaW50MzJBcnJheSByZXF1aXJlcyB0aGUgcmVhZHMgYmUgYWxp
Z25lZCBvbiA0LWJ5dGUgYm91bmRhcmllcy4gCi0gICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IGlu
aXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVm
KCksIDAsIGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIGF1dG8gaW5pdERhdGFW
aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwg
aW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgdWludDMyX3Qgb2Zmc2V0ID0gMDsK
ICAgICBib29sIHN0YXR1cyA9IHRydWU7CiAKQEAgLTEwMjMsNyArMTAyMyw3IEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZp
Y2F0ZUZyb21Jbml0RGF0CiAgICAgaWYgKCFzdGF0dXMgfHwgb2Zmc2V0ICsga2V5VVJJTGVuZ3Ro
ID4gaW5pdERhdGEtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWZQ
dHI8VWludDE2QXJyYXk+IGtleVVSSUFycmF5ID0gVWludDE2QXJyYXk6OmNyZWF0ZShpbml0RGF0
YUJ1ZmZlci5jb3B5UmVmKCksIG9mZnNldCwga2V5VVJJTGVuZ3RoKTsKKyAgICBhdXRvIGtleVVS
SUFycmF5ID0gVWludDE2QXJyYXk6OnRyeUNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCks
IG9mZnNldCwga2V5VVJJTGVuZ3RoKTsKICAgICBpZiAoIWtleVVSSUFycmF5KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTEwMzUsNyArMTAzNSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0
RGF0CiAgICAgaWYgKCFzdGF0dXMgfHwgb2Zmc2V0ICsga2V5SURMZW5ndGggPiBpbml0RGF0YS0+
bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxVaW50OEFycmF5
PiBrZXlJREFycmF5ID0gVWludDhBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYo
KSwgb2Zmc2V0LCBrZXlJRExlbmd0aCk7CisgICAgYXV0byBrZXlJREFycmF5ID0gVWludDhBcnJh
eTo6dHJ5Q3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgb2Zmc2V0LCBrZXlJRExlbmd0
aCk7CiAgICAgaWYgKCFrZXlJREFycmF5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEw
NDcsNyArMTA0Nyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRy
YWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAgaWYgKCFzdGF0dXMg
fHwgb2Zmc2V0ICsgY2VydGlmaWNhdGVMZW5ndGggPiBpbml0RGF0YS0+bGVuZ3RoKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNlcnRpZmljYXRlID0gVWludDhBcnJheTo6Y3JlYXRl
KFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCBvZmZzZXQsIGNlcnRpZmljYXRlTGVuZ3RoKTsKKyAg
ICBjZXJ0aWZpY2F0ZSA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVm
ZmVyKSwgb2Zmc2V0LCBjZXJ0aWZpY2F0ZUxlbmd0aCk7CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDMyMzJiNzM1YTMzMWFhZWRhZTRkMTcyMDg2
NWIxODQwMjBhNmNjNDUuLjcwOWMwODBkNGZmYjAyMTNjOGRiNmZkZDRjOGJmNzhhN2UxMjU2NmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Yu
Y3BwCkBAIC05OSw3ICs5OSw3IEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmLCBVCiAgICAgZGVzdGlu
YXRpb25VUkwgPSBTdHJpbmcoKTsKIAogICAgIGF1dG8ga2V5UmVxdWVzdEJ1ZmZlciA9IEFycmF5
QnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihrZXlSZXF1ZXN0LmdldCgpKSwgQ0ZEYXRh
R2V0TGVuZ3RoKGtleVJlcXVlc3QuZ2V0KCkpKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3Jl
YXRlKFdURk1vdmUoa2V5UmVxdWVzdEJ1ZmZlciksIDAsIGtleVJlcXVlc3RCdWZmZXItPmJ5dGVM
ZW5ndGgoKSk7CisgICAgcmV0dXJuIFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGtleVJl
cXVlc3RCdWZmZXIpLCAwLCBrZXlSZXF1ZXN0QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGU4MjQ0OWE1MGZjYzhlOWI4MTdmYzc3ZTJhYTNh
MDE5NWY2YTEyMjYuLmE5MjYwMmZkNjljZDM3ZjE4OWFkMzRjYmNjMWE0YzJkZWU3NDQ1MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcApAQCAtMTg5MywxMiArMTg5MywxMiBAQCBib29sIEFWRldyYXBwZXI6
OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdS
ZXF1ZXN0UgogICAgICAgICBSZWZQdHI8SlNDOjpEYXRhVmlldz4gaW5pdERhdGFWaWV3ID0gSlND
OjpEYXRhVmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgaW5pdERhdGFC
dWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgICAgIGluaXREYXRhVmlldy0+c2V0PHVpbnQzMl90
PigwLCBrZXlVUklTaXplLCB0cnVlKTsKIAotICAgICAgICBSZWZQdHI8VWludDE2QXJyYXk+IGtl
eVVSSUFycmF5ID0gVWludDE2QXJyYXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCks
IDQsIGtleVVSSS5sZW5ndGgoKSk7CisgICAgICAgIGF1dG8ga2V5VVJJQXJyYXkgPSBVaW50MTZB
cnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgNCwga2V5VVJJLmxlbmd0aCgp
KTsKICAgICAgICAga2V5VVJJQXJyYXktPnNldFJhbmdlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDE2X3QqPihTdHJpbmdWaWV3KGtleVVSSSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0
KCkpLCBrZXlVUkkubGVuZ3RoKCkgLyBzaXplb2YodW5zaWduZWQgY2hhciksIDApOwogCiAgICAg
ICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwot
ICAgICAgICBSZWZQdHI8VWludDhBcnJheT4gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUo
V1RGTW92ZShpbml0RGF0YUJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwotICAgICAgICBpZiAoIW1f
b3duZXItPnBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEuZ2V0KCkpKQorICAgICAgICBhdXRv
IGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAw
LCBieXRlTGVuZ3RoKTsKKyAgICAgICAgaWYgKCFtX293bmVyLT5wbGF5ZXIoKS0+a2V5TmVlZGVk
KGluaXREYXRhLnB0cigpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBz
ZXRSZXF1ZXN0Rm9yS2V5KGtleVVSSSwgYXZSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNv
bnRlbnRLZXlTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXggNWVk
YWM0NjNjZGQyOWZlY2I4MDkyZjQ5MTM3ZjhmMmM2MjZlMDMyYy4uNWU5ODlmZmEzZjA3M2U0ZWVi
NzRmYjI3ZDAzNmMyYWYwOTA5ZDg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Np
b24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KQEAgLTE2NSw3ICsxNjUsNyBA
QCBSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVy
YXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbgogCiAgICAgaWYgKCFtX2NlcnRpZmljYXRlKSB7CiAg
ICAgICAgIFN0cmluZyBjZXJ0aWZpY2F0ZVN0cmluZygiY2VydGlmaWNhdGUiX3MpOwotICAgICAg
ICBSZWZQdHI8VWludDhBcnJheT4gYXJyYXkgPSBVaW50OEFycmF5OjpjcmVhdGUoY2VydGlmaWNh
dGVTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBhdXRvIGFycmF5ID0gVWludDhBcnJheTo6Y3Jl
YXRlKGNlcnRpZmljYXRlU3RyaW5nLmxlbmd0aCgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMCwgbGVuZ3RoID0gY2VydGlmaWNhdGVTdHJpbmcubGVuZ3RoKCk7IGkgPCBsZW5ndGg7ICsr
aSkKICAgICAgICAgICAgIGFycmF5LT5zZXQoaSwgY2VydGlmaWNhdGVTdHJpbmdbaV0pOwogICAg
ICAgICByZXR1cm4gYXJyYXk7CkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZD
b250ZW50S2V5U2Vzc2lvbjo6cmVsZWFzZUtleXMoKQogICAgICAgICAgICAgaWYgKG1fc2Vzc2lv
bklkID09IFN0cmluZyhwbGF5YmFja1Nlc3Npb25JZFZhbHVlKSkgewogICAgICAgICAgICAgICAg
IExPRyhNZWRpYSwgIkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpyZWxlYXNlS2V5cygl
cCkgLSBmb3VuZCBzZXNzaW9uLCBzZW5kaW5nIGV4cGlyYXRpb24gbWVzc2FnZSIpOwogICAgICAg
ICAgICAgICAgIG1fZXhwaXJlZFNlc3Npb24gPSBleHBpcmVkU2Vzc2lvbkRhdGE7Ci0gICAgICAg
ICAgICAgICAgbV9jbGllbnQtPnNlbmRNZXNzYWdlKFVpbnQ4QXJyYXk6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oW21fZXhwaXJlZFNlc3Npb24gYnl0ZXNdKSwgW21fZXhwaXJl
ZFNlc3Npb24gbGVuZ3RoXSkuZ2V0KCksIGVtcHR5U3RyaW5nKCkpOworICAgICAgICAgICAgICAg
IG1fY2xpZW50LT5zZW5kTWVzc2FnZShVaW50OEFycmF5OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KFttX2V4cGlyZWRTZXNzaW9uIGJ5dGVzXSksIFttX2V4cGlyZWRTZXNzaW9u
IGxlbmd0aF0pLnB0cigpLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzAwLDcgKzMwMCw3IEBAIGJvb2wgQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxV
aW50OEFycmF5PiYKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAg
ICAgIG5leHRNZXNzYWdlID0gVWludDhBcnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihbcmVxdWVzdERhdGEgYnl0ZXNdKSwgW3JlcXVlc3REYXRhIGxlbmd0aF0pOworICAg
ICAgICBuZXh0TWVzc2FnZSA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oW3JlcXVlc3REYXRhIGJ5dGVzXSksIFtyZXF1ZXN0RGF0YSBsZW5ndGhdKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMzUwLDcgKzM1MCw3IEBAIFJlZlB0
cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlS
ZWxlYXNlTWVzc2FnZSh1bnNpCiAgICAgZXJyb3JDb2RlID0gMDsKICAgICBzeXN0ZW1Db2RlID0g
MDsKICAgICBtX2V4cGlyZWRTZXNzaW9uID0gW2V4cGlyZWRTZXNzaW9ucyBmaXJzdE9iamVjdF07
Ci0gICAgcmV0dXJuIFVpbnQ4QXJyYXk6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oW21fZXhwaXJlZFNlc3Npb24gYnl0ZXNdKSwgW21fZXhwaXJlZFNlc3Npb24gbGVuZ3RoXSk7
CisgICAgcmV0dXJuIFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oW21fZXhwaXJlZFNlc3Npb24gYnl0ZXNdKSwgW21fZXhwaXJlZFNlc3Npb24gbGVuZ3Ro
XSk7CiB9CiAKIHZvaWQgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmRpZFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICprZXlSZXF1ZXN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQpp
bmRleCA4MmY0Y2RjMDcwZjUzYWQwN2U2YjliNWYyYzgzNDRmODgyNjNiMmFhLi5jYTE5YmFlMDhm
ZWM1ZmNjYmE1N2U0OWFhMGY0ZWFmODcxM2U1Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0
aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtOTksOSArOTksOSBA
QCBSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRl
S2V5UmVxdWVzdChjb25zdCBTdHJpbmcmCiAgICAgc3lzdGVtQ29kZSA9IDA7CiAgICAgZGVzdGlu
YXRpb25VUkwgPSBTdHJpbmcoKTsKIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2V5UmVxdWVz
dEJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoW2tleVJlcXVlc3QuZ2V0KCkgYnl0ZXNdLCBb
a2V5UmVxdWVzdC5nZXQoKSBsZW5ndGhdKTsKKyAgICBhdXRvIGtleVJlcXVlc3RCdWZmZXIgPSBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKFtrZXlSZXF1ZXN0LmdldCgpIGJ5dGVzXSwgW2tleVJlcXVlc3Qu
Z2V0KCkgbGVuZ3RoXSk7CiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGtleVJlcXVlc3RCdWZm
ZXItPmJ5dGVMZW5ndGgoKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUo
a2V5UmVxdWVzdEJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOworICAgIHJldHVybiBVaW50OEFycmF5
Ojp0cnlDcmVhdGUoV1RGTW92ZShrZXlSZXF1ZXN0QnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7CiB9
CiAKIHZvaWQgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OnJlbGVhc2VLZXlzKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCmlu
ZGV4IDdiMjAyODEyMTA3MmRiNTcxMTdlYTYxMGUzM2FjMzQ0ZjEyZTExNDguLjY4YzE4YTA4YzVk
YzZmMmJkNmJlOGQ0Nzg0NjQ2ODNmODg1N2U0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNl
c3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQpAQCAtMTIyLDcgKzEyMiw3IEBA
IFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtl
eVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtCiAgICAgfQogCiAgICAgU3RyaW5nIGNlcnRpZmljYXRl
U3RyaW5nKCJjZXJ0aWZpY2F0ZSJfcyk7Ci0gICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGFycmF5ID0g
VWludDhBcnJheTo6Y3JlYXRlKGNlcnRpZmljYXRlU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBhdXRv
IGFycmF5ID0gVWludDhBcnJheTo6Y3JlYXRlKGNlcnRpZmljYXRlU3RyaW5nLmxlbmd0aCgpKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBsZW5ndGggPSBjZXJ0aWZpY2F0ZVN0cmluZy5sZW5n
dGgoKTsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgICBhcnJheS0+c2V0KGksIGNlcnRpZmljYXRl
U3RyaW5nW2ldKTsKICAgICByZXR1cm4gYXJyYXk7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBD
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpyZWxlYXNlS2V5cygpCiAgICAgICAgICAgICBpZiAo
bV9zZXNzaW9uSWQgPT0gU3RyaW5nKHBsYXliYWNrU2Vzc2lvbklkVmFsdWUpKSB7CiAgICAgICAg
ICAgICAgICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtl
eXMoJXApIC0gZm91bmQgc2Vzc2lvbiwgc2VuZGluZyBleHBpcmF0aW9uIG1lc3NhZ2UiKTsKICAg
ICAgICAgICAgICAgICBtX2V4cGlyZWRTZXNzaW9uID0gZXhwaXJlZFNlc3Npb25EYXRhOwotICAg
ICAgICAgICAgICAgIG1fY2xpZW50LT5zZW5kTWVzc2FnZShVaW50OEFycmF5OjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFttX2V4cGlyZWRTZXNzaW9uIGJ5dGVzXSksIFttX2V4
cGlyZWRTZXNzaW9uIGxlbmd0aF0pLmdldCgpLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgICAg
ICAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UoVWludDhBcnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihbbV9leHBpcmVkU2Vzc2lvbiBieXRlc10pLCBbbV9leHBpcmVkU2Vz
c2lvbiBsZW5ndGhdKS5wdHIoKSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTMzNSw3ICszMzUsNyBAQCBSZWZQdHI8
VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNl
TWVzc2FnZSh1bnNpZ25lZAogICAgIGVycm9yQ29kZSA9IDA7CiAgICAgc3lzdGVtQ29kZSA9IDA7
CiAgICAgbV9leHBpcmVkU2Vzc2lvbiA9IFtleHBpcmVkU2Vzc2lvbnMgZmlyc3RPYmplY3RdOwot
ICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KFttX2V4cGlyZWRTZXNzaW9uIGJ5dGVzXSksIFttX2V4cGlyZWRTZXNzaW9uIGxlbmd0aF0pOwor
ICAgIHJldHVybiBVaW50OEFycmF5Ojp0cnlDcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KFttX2V4cGlyZWRTZXNzaW9uIGJ5dGVzXSksIFttX2V4cGlyZWRTZXNzaW9uIGxlbmd0aF0p
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBkNDRhMDg3YTQyOTlhYjY1ODU2
YjgyNDU2YTYwOWFiYjMwOGQ1YzFjLi5lNmYzYzgzYTM0MWZkZWUyYjcxZGFiNDQxMGI0YjQ3MWFj
YWFkZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTE3NjQsMTUgKzE3NjQsMTUgQEAg
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9h
ZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAgICAgICAgLy8gQ3JlYXRlIGFuIGluaXREYXRhIHdp
dGggdGhlIGZvbGxvd2luZyBsYXlvdXQ6CiAgICAgICAgIC8vIFs0IGJ5dGVzOiBrZXlVUkkgc2l6
ZV0sIFtrZXlVUkkgc2l6ZSBieXRlczoga2V5VVJJXQogICAgICAgICB1bnNpZ25lZCBrZXlVUklT
aXplID0ga2V5VVJJLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKLSAgICAgICAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoNCArIGtleVVS
SVNpemUsIDEpOworICAgICAgICBhdXRvIGluaXREYXRhQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNy
ZWF0ZSg0ICsga2V5VVJJU2l6ZSwgMSk7CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBp
bml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwotICAgICAgICBSZWZQdHI8SlNDOjpEYXRhVmll
dz4gaW5pdERhdGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNv
cHlSZWYoKSwgMCwgYnl0ZUxlbmd0aCk7CisgICAgICAgIGF1dG8gaW5pdERhdGFWaWV3ID0gSlND
OjpEYXRhVmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgYnl0ZUxlbmd0
aCk7CiAgICAgICAgIGluaXREYXRhVmlldy0+c2V0PHVpbnQzMl90PigwLCBrZXlVUklTaXplLCB0
cnVlKTsKIAotICAgICAgICBSZWZQdHI8VWludDE2QXJyYXk+IGtleVVSSUFycmF5ID0gVWludDE2
QXJyYXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDQsIGtleVVSSS5sZW5ndGgo
KSk7CisgICAgICAgIGF1dG8ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXRE
YXRhQnVmZmVyLmNvcHlSZWYoKSwgNCwga2V5VVJJLmxlbmd0aCgpKTsKICAgICAgICAga2V5VVJJ
QXJyYXktPnNldFJhbmdlKFN0cmluZ1ZpZXcoa2V5VVJJKS51cGNvbnZlcnRlZENoYXJhY3RlcnMo
KSwga2V5VVJJLmxlbmd0aCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAwKTsKIAotICAgICAg
ICBSZWZQdHI8VWludDhBcnJheT4gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92
ZShpbml0RGF0YUJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOworICAgICAgICBhdXRvIGluaXREYXRh
ID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVu
Z3RoKTsKICAgICAgICAgaWYgKCFwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLmdldCgpKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMTgxMiw3ICsxODEyLDcgQEAg
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9h
ZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICNlbmRpZgogI2VuZGlmCiAKLSAgICBSZWZQdHI8V2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyPiByZXNvdXJjZUxvYWRlciA9IFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6Y3JlYXRlKHRoaXMsIGF2UmVxdWVzdCk7CisgICAgYXV0byByZXNvdXJjZUxvYWRl
ciA9IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHRoaXMsIGF2UmVxdWVzdCk7CiAg
ICAgbV9yZXNvdXJjZUxvYWRlck1hcC5hZGQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJlcXVlc3Qs
IHJlc291cmNlTG9hZGVyKTsKICAgICByZXNvdXJjZUxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9i
akMubW0KaW5kZXggMTg5OGRjYjQ4MDdkYzNkNGRlY2I0YzAzZGViZTRlZGY4NjcxMmI5Zi4uYzNi
Y2E2MTA5MDU1NGY4MjhiODQ4MzlhZDQwNTQ5YTYyN2JmZTc0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQpAQCAtMjk0LDcgKzI5NCw3IEBAIFJlZlB0
cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBNZWRpYVNhbXBsZUFWRk9iakM6OmdldFJHQkFJbWFn
ZURhdGEoKSBjb25zdAogCiAgICAgdm9pZCogZGF0YSA9IENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRk
cmVzc09mUGxhbmUocmdiYVBpeGVsQnVmZmVyLmdldCgpLCAwKTsKICAgICBzaXplX3QgYnl0ZUxl
bmd0aCA9IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQocGl4ZWxCdWZmZXIpICogQ1ZQaXhlbEJ1ZmZl
ckdldFdpZHRoKHBpeGVsQnVmZmVyKSAqIDQ7Ci0gICAgYXV0byByZXN1bHQgPSBKU0M6OlVpbnQ4
Q2xhbXBlZEFycmF5OjpjcmVhdGUoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ5dGVM
ZW5ndGgpLCAwLCBieXRlTGVuZ3RoKTsKKyAgICBhdXRvIHJlc3VsdCA9IEpTQzo6VWludDhDbGFt
cGVkQXJyYXk6OnRyeUNyZWF0ZShKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YSwgYnl0ZUxl
bmd0aCksIDAsIGJ5dGVMZW5ndGgpOwogCiAgICAgc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlclVubG9j
a0Jhc2VBZGRyZXNzKHJnYmFQaXhlbEJ1ZmZlci5nZXQoKSwga0NWUGl4ZWxCdWZmZXJMb2NrX1Jl
YWRPbmx5KTsKICAgICBBU1NFUlQoc3RhdHVzID09IG5vRXJyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggY2QzNTQ3
NTllZTQ0ZTJmMjFiNjNiZmMyNDI5YjAzMmFiNWQzYWQzNi4uNDVlMDM4YjM4MjhiODM4ZmQ3ZGRj
NjNhOWNjNzdkZjNkYmExMDlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGbwogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAg
IExPRyhNZWRpYVNvdXJjZSwgIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKCVwKSAtIHRyYWNr
OiVkIiwgdGhpcywgdHJhY2tJRCk7CiAgICAgbV9wcm90ZWN0ZWRUcmFja0lEID0gdHJhY2tJRDsK
LSAgICBSZWZQdHI8VWludDhBcnJheT4gaW5pdERhdGFBcnJheSA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShbaW5pdERhdGEgbGVuZ3RoXSk7CisgICAgYXV0byBpbml0RGF0YUFycmF5ID0gVWludDhBcnJh
eTo6Y3JlYXRlKFtpbml0RGF0YSBsZW5ndGhdKTsKICAgICBbaW5pdERhdGEgZ2V0Qnl0ZXM6aW5p
dERhdGFBcnJheS0+ZGF0YSgpIGxlbmd0aDppbml0RGF0YUFycmF5LT5sZW5ndGgoKV07CiAgICAg
bV9tZWRpYVNvdXJjZS0+c291cmNlQnVmZmVyS2V5TmVlZGVkKHRoaXMsIGluaXREYXRhQXJyYXku
Z2V0KCkpOwogICAgIGlmIChhdXRvIHNlc3Npb24gPSBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+
Y2RtU2Vzc2lvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDQ1NmFmNzg2ZDA5MjU5
MDE3YzQzMTc1ZDJkNjQwODcxNzYyZThhNGUuLmNjYmJlMWYxNTZlMGY5ZTNhMGYwMzFkYTdjY2U0
MjhhNmZlZTk0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC00MTIsNyArNDEyLDcgQEAg
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVj
dCwgY29uc3QgSW50UmVjdCYgbG9naWMKICAgICBpZiAoYXJlYS5oYXNPdmVyZmxvd2VkKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byByZXN1bHQgPSBVaW50OENsYW1wZWRB
cnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChhcmVhLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIHJl
c3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGFyZWEudW5z
YWZlR2V0KCkpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJEYXRhQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJEYXRhQ0cuY3BwCmluZGV4IGQ0MmFhMzQ0OGIwYmMzN2RlNmU1ZjA4OTYzNmQxNzk3ZDU0
ZmEzNzYuLjg0NzlkNWQzYTIzYTA3ZTg5ZGZjYjhiYjIwNTIwZmE5MDNlYjcyOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckRhdGFDRy5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+
IEltYWdlQnVmZmVyRGF0YTo6Z2V0RGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dAog
ICAgIGlmIChhcmVhLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBhdXRvIHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVk
KGFyZWEudW5zYWZlR2V0KCkpOworICAgIGF1dG8gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoYXJlYS51bnNhZmVHZXQoKSk7CiAgICAgdWludDhfdCog
cmVzdWx0RGF0YSA9IHJlc3VsdCA/IHJlc3VsdC0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICBpZiAo
IXJlc3VsdERhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNw
cAppbmRleCA5YTc5OThkMTM5NTkzMDkzNzg0NzQyNjE4NzY2MmE3ODEwNTYwMWYyLi4xMTgwMjMx
MWU5YWVjMWM5YjVmMmQwN2FmYTI5ZDQ3MTMwNjJiNjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNw
cApAQCAtNTMxLDcgKzUzMSw3IEBAIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCiAKICAgICBJbnRTaXplIHBhaW50U2l6ZSA9IGFic29sdXRlUGFpbnRSZWN0KCku
c2l6ZSgpOwogICAgIHBhaW50U2l6ZS5zY2FsZShmaWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKLSAg
ICBhdXRvIHRtcEltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKChwYWludFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOworICAgIGF1dG8gdG1wSW1h
Z2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoKHBhaW50
U2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CiAgICAgaWYgKCF0bXBJbWFnZURhdGEpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCmluZGV4IDY2YzMwYTk4YzI4YWVkMmZj
ZmY1MTk2MDJkMmM0NzEzOWY3NmFlYTguLjZlOTg2ZDRlYzJhOTc5Mjk2NjM4NGZjNTUwNzRhMmY5
NzJiNTkwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKQEAgLTI5MCw3ICsyOTAsNyBAQCBSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KGNvbnN0
IEludFJlY3QmIHJlY3QpCiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAg
ICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXplKSk7CiAg
ICAgc2NhbGVkU2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBhdXRvIGlt
YWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKChzY2FsZWRT
aXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIGltYWdlRGF0YSA9IFVpbnQ4
Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKChzY2FsZWRTaXplLmFyZWEoKSAq
IDQpLnVuc2FmZUdldCgpKTsKICAgICBpZiAoIWltYWdlRGF0YSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKQEAgLTMwMyw3ICszMDMsNyBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZp
bHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0KQogICAg
IEludFNpemUgc2NhbGVkU2l6ZShyZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZl
cjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2NhbGVkU2l6ZSkpOwogICAgIHNjYWxlZFNpemUuc2NhbGUo
bV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgYXV0byBpbWFnZURhdGEgPSBVaW50OENsYW1w
ZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgoc2NhbGVkU2l6ZS5hcmVhKCkgKiA0KS51bnNh
ZmVHZXQoKSk7CisgICAgYXV0byBpbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZCgoc2NhbGVkU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CiAg
ICAgaWYgKCFpbWFnZURhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGNvcHlQcmVt
dWx0aXBsaWVkUmVzdWx0KCppbWFnZURhdGEsIHJlY3QpOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHZv
aWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5
JiBkZXN0aW5hdGlvbiwgY29uc3QKICAgICAgICAgICAgIEludFNpemUgaW5wdXRTaXplKG1fYWJz
b2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6
OnNpemVOZWVkc0NsYW1waW5nKGlucHV0U2l6ZSkpOwogICAgICAgICAgICAgaW5wdXRTaXplLnNj
YWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgICAgICAgICAgbV91bm11bHRpcGxpZWRJ
bWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKChpbnB1
dFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOworICAgICAgICAgICAgbV91bm11bHRpcGxp
ZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVk
KChpbnB1dFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAgICAgICAgICAgaWYgKCFt
X3VubXVsdGlwbGllZEltYWdlUmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIApAQCAtNDc2LDcgKzQ3Niw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVs
dGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0CiAgICAg
ICAgICAgICBJbnRTaXplIGlucHV0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAg
ICAgICAgICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhpbnB1dFNp
emUpKTsKICAgICAgICAgICAgIGlucHV0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgp
KTsKLSAgICAgICAgICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVk
QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoKGlucHV0U2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVH
ZXQoKSk7CisgICAgICAgICAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xh
bXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKChpbnB1dFNpemUuYXJlYSgpICogNCku
dW5zYWZlR2V0KCkpOwogICAgICAgICAgICAgaWYgKCFtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3Vs
dCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKQEAgLTUxNSw3ICs1MTUs
NyBAQCBVaW50OENsYW1wZWRBcnJheSogRmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJ
bWFnZVJlc3VsdCgpCiAgICAgSW50U2l6ZSByZXN1bHRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Qu
c2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhyZXN1
bHRTaXplKSk7CiAgICAgcmVzdWx0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsK
LSAgICBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQoKHJlc3VsdFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOworICAg
IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRl
VW5pbml0aWFsaXplZCgocmVzdWx0U2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CiAgICAg
cmV0dXJuIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCk7CiB9CiAKQEAgLTUzMSw3ICs1
MzEsNyBAQCBVaW50OENsYW1wZWRBcnJheSogRmlsdGVyRWZmZWN0OjpjcmVhdGVQcmVtdWx0aXBs
aWVkSW1hZ2VSZXN1bHQoKQogICAgIEludFNpemUgcmVzdWx0U2l6ZShtX2Fic29sdXRlUGFpbnRS
ZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmco
cmVzdWx0U2l6ZSkpOwogICAgIHJlc3VsdFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUo
KSk7Ci0gICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6
Y3JlYXRlVW5pbml0aWFsaXplZCgocmVzdWx0U2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7
CisgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZCgocmVzdWx0U2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7
CiAgICAgcmV0dXJuIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJE
YXRhRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQnVmZmVyRGF0YURpcmVjdDJELmNwcAppbmRleCBmMGUyNTgwOTIwNTM4NTRjZDUxNTk2Yzdl
MDcxNzU5ZWY3Y2JmNWE4Li4wMjc1ZjlkYzliZTk2OGYwNzA2NjM0ZWMyYjNjZTg1ZDAyOWRlNTUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEYXRhRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEoQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiwgY29uc3QKICAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gcmVzdWx0ID0gVWludDhDbGFtcGVk
QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobnVtQnl0ZXMudW5zYWZlR2V0KCkpOworICAgIGF1
dG8gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobnVt
Qnl0ZXMudW5zYWZlR2V0KCkpOwogICAgIHVuc2lnbmVkIGNoYXIqIHJlc3VsdERhdGEgPSByZXN1
bHQgPyByZXN1bHQtPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFyZXN1bHREYXRhKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbQpp
bmRleCBkYzBkNDFjMDFmMGM4MTMzMGM4YjVjZTBiMWFkZGY4YTRkNWU1NzllLi5lOTk3YjM2YTdi
NGE1MGExNjMzYWIwYWVhYWY2YWExYjc4ZjVkYjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2Vu
dGF0aW9uTWFjLm1tCkBAIC0xOTAsNyArMTkwLDcgQEAgc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVX
aXRoRGljdGlvbmFyeUluQ29udGV4dChOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnksIEpTQ29udGUK
ICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1
dG8gbmFtZSA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoa2V5KTsKKyAgICAgICAgYXV0byBuYW1l
ID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShrZXkpOwogICAgICAgICBKU09iamVjdFNldFBy
b3BlcnR5KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIHJlc3VsdE9iamVjdCwgbmFtZS5n
ZXQoKSwgW3ZhbHVlIEpTVmFsdWVSZWZdLCAwLCAmZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKGV4
Y2VwdGlvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAKaW5kZXggZDRhYTIwNTQ2M2U4
OGZlNzUwNzZmMmE4MDdlZjkyZDIwM2U5YmU5MS4uZTU0YmEzNzZkYTYxNjY0NTdjMjMyODk3MTgx
NGNmZjM4NWZhNmUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9t
ZWRpYXNvdXJjZS9Nb2NrQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tCb3guY3BwCkBAIC00OSw3ICs0OSw3IEBAIE1vY2tCb3g6Ok1vY2tC
b3goQXJyYXlCdWZmZXIqIGRhdGEpCiBTdHJpbmcgTW9ja0JveDo6cGVla1R5cGUoQXJyYXlCdWZm
ZXIqIGRhdGEpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIFJlZlB0cjxJbnQ4
QXJyYXk+IGFycmF5ID0gSlNDOjpJbnQ4QXJyYXk6OmNyZWF0ZShkYXRhLCAwLCA0KTsKKyAgICBh
dXRvIGFycmF5ID0gSlNDOjpJbnQ4QXJyYXk6OmNyZWF0ZShkYXRhLCAwLCA0KTsKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IDQ7ICsraSkKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJyYXktPml0
ZW0oaSkpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC01Nyw3ICs1Nyw3IEBA
IFN0cmluZyBNb2NrQm94OjpwZWVrVHlwZShBcnJheUJ1ZmZlciogZGF0YSkKIAogc2l6ZV90IE1v
Y2tCb3g6OnBlZWtMZW5ndGgoQXJyYXlCdWZmZXIqIGRhdGEpCiB7Ci0gICAgUmVmUHRyPEpTQzo6
RGF0YVZpZXc+IHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoZGF0YSwgMCwgZGF0YS0+Ynl0
ZUxlbmd0aCgpKTsKKyAgICBhdXRvIHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoZGF0YSwg
MCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKICAgICByZXR1cm4gdmlldy0+Z2V0PHVpbnQzMl90Pig0
LCB0cnVlKTsKIH0KIApAQCAtNjYsMTEgKzY2LDExIEBAIE1vY2tUcmFja0JveDo6TW9ja1RyYWNr
Qm94KEFycmF5QnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VSVChtX2xlbmd0aCA9PSAxNyk7CiAK
LSAgICBSZWZQdHI8SlNDOjpEYXRhVmlldz4gdmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShk
YXRhLCAwLCBkYXRhLT5ieXRlTGVuZ3RoKCkpOworICAgIGF1dG8gdmlldyA9IEpTQzo6RGF0YVZp
ZXc6OmNyZWF0ZShkYXRhLCAwLCBkYXRhLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fdHJhY2tJRCA9
IHZpZXctPmdldDxpbnQzMl90Pig4LCB0cnVlKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKLSAgICBSZWZQdHI8SW50OEFycmF5PiBhcnJheSA9IEpTQzo6SW50OEFycmF5OjpjcmVhdGUo
ZGF0YSwgMTIsIDQpOworICAgIGF1dG8gYXJyYXkgPSBKU0M6OkludDhBcnJheTo6Y3JlYXRlKGRh
dGEsIDEyLCA0KTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkKICAgICAgICAgYnVp
bGRlci5hcHBlbmQoYXJyYXktPml0ZW0oaSkpOwogICAgIG1fY29kZWMgPSBidWlsZGVyLnRvU3Ry
aW5nKCk7CkBAIC04OSw3ICs4OSw3IEBAIE1vY2tJbml0aWFsaXphdGlvbkJveDo6TW9ja0luaXRp
YWxpemF0aW9uQm94KEFycmF5QnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VSVChtX2xlbmd0aCA+
PSAxMyk7CiAKLSAgICBSZWZQdHI8SlNDOjpEYXRhVmlldz4gdmlldyA9IEpTQzo6RGF0YVZpZXc6
OmNyZWF0ZShkYXRhLCAwLCBkYXRhLT5ieXRlTGVuZ3RoKCkpOworICAgIGF1dG8gdmlldyA9IEpT
Qzo6RGF0YVZpZXc6OmNyZWF0ZShkYXRhLCAwLCBkYXRhLT5ieXRlTGVuZ3RoKCkpOwogICAgIGlu
dDMyX3QgdGltZVZhbHVlID0gdmlldy0+Z2V0PGludDMyX3Q+KDgsIHRydWUpOwogICAgIGludDMy
X3QgdGltZVNjYWxlID0gdmlldy0+Z2V0PGludDMyX3Q+KDEyLCB0cnVlKTsKICAgICBtX2R1cmF0
aW9uID0gTWVkaWFUaW1lKHRpbWVWYWx1ZSwgdGltZVNjYWxlKTsKQEAgLTExOCw3ICsxMTgsNyBA
QCBNb2NrU2FtcGxlQm94OjpNb2NrU2FtcGxlQm94KEFycmF5QnVmZmVyKiBkYXRhKQogewogICAg
IEFTU0VSVChtX2xlbmd0aCA9PSAzMCk7CiAKLSAgICBSZWZQdHI8SlNDOjpEYXRhVmlldz4gdmll
dyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShkYXRhLCAwLCBkYXRhLT5ieXRlTGVuZ3RoKCkpOwor
ICAgIGF1dG8gdmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShkYXRhLCAwLCBkYXRhLT5ieXRl
TGVuZ3RoKCkpOwogICAgIGludDMyX3QgdGltZVNjYWxlID0gdmlldy0+Z2V0PGludDMyX3Q+KDgs
IHRydWUpOwogCiAgICAgaW50MzJfdCB0aW1lVmFsdWUgPSB2aWV3LT5nZXQ8aW50MzJfdD4oMTIs
IHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAppbmRleCA2
ODMyZDA5Yjg3NWJlM2Q0NzA4OGNiZDZjZWU1ZTllYzcxZjUxMjQxLi5iNzU3ZjlmOTVkNmM5NTk1
MTlhYzA2NWI0ZTBmMDNlYmE1MWQ2NzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlLmNwcApAQCAtMTg5LDYgKzE4OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4g
U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKEltYWdlKiBpbWFnZSwgZmxvYXQgdGhyZXNob2xkLCBj
CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgSW50UmVjdChJ
bnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7CiAKICAgICAgICAgUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBwaXhlbEFycmF5ID0gaW1hZ2VCdWZmZXItPmdldFVubXVsdGlwbGllZEltYWdl
RGF0YShJbnRSZWN0KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQocGl4ZWxBcnJheSk7CiAgICAgICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5n
dGggPSBwaXhlbEFycmF5LT5sZW5ndGgoKTsKICAgICAgICAgdW5zaWduZWQgcGl4ZWxBcnJheU9m
ZnNldCA9IDM7IC8vIEVhY2ggcGl4ZWwgaXMgZm91ciBieXRlczogUkdCQS4KICAgICAgICAgdWlu
dDhfdCBhbHBoYVBpeGVsVGhyZXNob2xkID0gdGhyZXNob2xkICogMjU1OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAKaW5kZXggMzg5MGMwZmFiYzQ3ZTU5MGU1YjFhYmJk
MzVkMmY5OTJjNDY1YTc0Ny4uNjQyODdkMjM5YWY1NzNlOTIwM2QyNTg0MzFiMjczYzdiODc0OTAw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCkBAIC03OSwyNSAr
NzksMjUgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IExlZ2FjeU1vY2tDRE06
OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkMKIHN0YXRpYyBVaW50OEFycmF5KiBpbml0
RGF0YVByZWZpeCgpCiB7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciBwcmVmaXhEYXRhW10gPSB7
ICdtJywgJ28nLCAnYycsICdrJyB9OwotICAgIHN0YXRpYyBVaW50OEFycmF5KiBwcmVmaXggPSBV
aW50OEFycmF5OjpjcmVhdGUocHJlZml4RGF0YSwgV1RGX0FSUkFZX0xFTkdUSChwcmVmaXhEYXRh
KSkubGVha1JlZigpOworICAgIHN0YXRpYyBVaW50OEFycmF5JiBwcmVmaXggeyBVaW50OEFycmF5
OjpjcmVhdGUocHJlZml4RGF0YSwgV1RGX0FSUkFZX0xFTkdUSChwcmVmaXhEYXRhKSkubGVha1Jl
ZigpIH07CiAKLSAgICByZXR1cm4gcHJlZml4OworICAgIHJldHVybiAmcHJlZml4OwogfQogCiBz
dGF0aWMgVWludDhBcnJheSoga2V5UHJlZml4KCkKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgY2hhciBwcmVmaXhEYXRhW10gPSB7J2snLCAnZScsICd5J307Ci0gICAgc3RhdGljIFVpbnQ4
QXJyYXkqIHByZWZpeCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShwcmVmaXhEYXRhLCBXVEZfQVJSQVlf
TEVOR1RIKHByZWZpeERhdGEpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIFVpbnQ4QXJyYXkmIHBy
ZWZpeCB7IFVpbnQ4QXJyYXk6OmNyZWF0ZShwcmVmaXhEYXRhLCBXVEZfQVJSQVlfTEVOR1RIKHBy
ZWZpeERhdGEpKS5sZWFrUmVmKCkgfTsKIAotICAgIHJldHVybiBwcmVmaXg7CisgICAgcmV0dXJu
ICZwcmVmaXg7CiB9CiAKIHN0YXRpYyBVaW50OEFycmF5KiBrZXlSZXF1ZXN0KCkKIHsKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciByZXF1ZXN0RGF0YVtdID0geydyJywgJ2UnLCAncScs
ICd1JywgJ2UnLCAncycsICd0J307Ci0gICAgc3RhdGljIFVpbnQ4QXJyYXkqIHJlcXVlc3QgPSBV
aW50OEFycmF5OjpjcmVhdGUocmVxdWVzdERhdGEsIFdURl9BUlJBWV9MRU5HVEgocmVxdWVzdERh
dGEpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIFVpbnQ4QXJyYXkmIHJlcXVlc3QgeyBVaW50OEFy
cmF5OjpjcmVhdGUocmVxdWVzdERhdGEsIFdURl9BUlJBWV9MRU5HVEgocmVxdWVzdERhdGEpKS5s
ZWFrUmVmKCkgfTsKIAotICAgIHJldHVybiByZXF1ZXN0OworICAgIHJldHVybiAmcmVxdWVzdDsK
IH0KIAogc3RhdGljIFN0cmluZyBnZW5lcmF0ZVNlc3Npb25JZCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9XS1N0cmluZy5jcHAKaW5kZXggNzhkZTYxZTk4YTc3OTI3ODJjNTAyYTQwNDc4Y2Iz
YWRkMjE1YjEwNS4uNzY3YWE4ZDkxNGIwY2Y3NTE5NmUyMGMzNjNiODA2MzhmZmQ3ZDNkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcApAQCAtMTM2LDUgKzEzNiw1IEBA
IFdLU3RyaW5nUmVmIFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5nKEpTU3RyaW5nUmVmIGpzU3Ry
aW5nUmVmKQogSlNTdHJpbmdSZWYgV0tTdHJpbmdDb3B5SlNTdHJpbmcoV0tTdHJpbmdSZWYgc3Ry
aW5nUmVmKQogewogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwotICAgIHJldHVybiBP
cGFxdWVKU1N0cmluZzo6Y3JlYXRlKHRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmcoKSkubGVha1Jl
ZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHRvSW1wbChzdHJpbmdS
ZWYpLT5zdHJpbmcoKSkubGVha1JlZigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
LmNwcAppbmRleCAyOWZiMDFlMjBjNDAwODRmMzlhOTM5NzYxOTdlZGE4NTU0M2M5ZmMxLi5lZmEw
MzQxNDAyYTBhZjM3YmIxMmUzZTlmNDM0ZmNmMmM1MjMzZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmNwcApAQCAtODgsNyArODgsNyBAQCBzdGF0aWMgSlNPYmplY3RSZWYgdG9K
U0FycmF5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBWZWN0b3I8VD4mIGRhdGEsIEpTVmFs
dQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWVSZWYgdG9KU1ZhbHVlKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJp
bmcoY29udGV4dCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShzdHJpbmcpLmdldCgpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0
ZShzdHJpbmcpLmdldCgpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlUmVmIGNhbGxQcm9w
ZXJ0eUZ1bmN0aW9uKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBvYmplY3QsIGNv
bnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtOTYsNyArOTYs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWVSZWYgY2FsbFByb3BlcnR5RnVuY3Rpb24oSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmCiAgICAgQVNTRVJUX0FSRyhvYmplY3QsIG9iamVj
dCk7CiAgICAgQVNTRVJUX0FSRyhvYmplY3QsIEpTVmFsdWVJc09iamVjdChjb250ZXh0LCBvYmpl
Y3QpKTsKIAotICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uID0gY29uc3RfY2FzdDxKU09iamVjdFJl
Zj4oSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBvYmplY3QsIE9wYXF1ZUpTU3RyaW5nOjpj
cmVhdGUocHJvcGVydHlOYW1lKS5nZXQoKSwgZXhjZXB0aW9uKSk7CisgICAgSlNPYmplY3RSZWYg
ZnVuY3Rpb24gPSBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihKU09iamVjdEdldFByb3BlcnR5KGNv
bnRleHQsIG9iamVjdCwgT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShwcm9wZXJ0eU5hbWUpLmdl
dCgpLCBleGNlcHRpb24pKTsKICAgICBBU1NFUlQoSlNPYmplY3RJc0Z1bmN0aW9uKGNvbnRleHQs
IGZ1bmN0aW9uKSk7CiAKICAgICByZXR1cm4gSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0
LCBmdW5jdGlvbiwgb2JqZWN0LCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMsIGV4Y2VwdGlvbik7
CkBAIC0xNzcsNyArMTc3LDcgQEAgSlNPYmplY3RSZWYgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6c2NyaXB0T2JqZWN0Rm9yRnJhbWUoV2ViRnJhbWUmIGZyYW1lKQogCiAgICAgU3RyaW5nIHNj
cmlwdCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHlTY3JpcHRTb3VyY2UsIHNpemVvZihXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5U2Ny
aXB0U291cmNlKSk7CiAKLSAgICBKU09iamVjdFJlZiBzY3JpcHRPYmplY3RGdW5jdGlvbiA9IGNv
bnN0X2Nhc3Q8SlNPYmplY3RSZWY+KEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgT3BhcXVlSlNT
dHJpbmc6OmNyZWF0ZShzY3JpcHQpLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAwLCAmZXhjZXB0
aW9uKSk7CisgICAgSlNPYmplY3RSZWYgc2NyaXB0T2JqZWN0RnVuY3Rpb24gPSBjb25zdF9jYXN0
PEpTT2JqZWN0UmVmPihKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIE9wYXF1ZUpTU3RyaW5nOjp0
cnlDcmVhdGUoc2NyaXB0KS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgJmV4Y2VwdGlvbikp
OwogICAgIEFTU0VSVChKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgc2NyaXB0T2JqZWN0RnVuY3Rp
b24pKTsKIAogICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzW10gPSB7IHNlc3Npb25JZGVudGlmaWVy
LCBldmFsdWF0ZUZ1bmN0aW9uLCBjcmVhdGVVVUlERnVuY3Rpb24gfTsKQEAgLTI4MCw3ICsyODAs
NyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdEZ1
bmN0aW9uKHVpbnQ2NF90IHBhZ2VJRCwgdWludAogCiAgICAgU3RyaW5nIGV4Y2VwdGlvbk1lc3Nh
Z2U7CiAgICAgaWYgKEpTVmFsdWVJc09iamVjdChjb250ZXh0LCBleGNlcHRpb24pKSB7Ci0gICAg
ICAgIEpTVmFsdWVSZWYgbmFtZVZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBj
b25zdF9jYXN0PEpTT2JqZWN0UmVmPihleGNlcHRpb24pLCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRl
KCJuYW1lIl9zKS5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgIEpTVmFsdWVSZWYgbmFtZVZhbHVl
ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihl
eGNlcHRpb24pLCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCJuYW1lIl9zKS5nZXQoKSwgbnVs
bHB0cik7CiAgICAgICAgIGF1dG8gZXhjZXB0aW9uTmFtZSA9IGFkb3B0UmVmKEpTVmFsdWVUb1N0
cmluZ0NvcHkoY29udGV4dCwgbmFtZVZhbHVlLCBudWxscHRyKSktPnN0cmluZygpOwogICAgICAg
ICBpZiAoZXhjZXB0aW9uTmFtZSA9PSAiTm9kZU5vdEZvdW5kIikKICAgICAgICAgICAgIGVycm9y
VHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29u
c3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6
Ok5vZGVOb3RGb3VuZCk7CkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBwYWdlSUQsIHVp
bnQKICAgICAgICAgZWxzZSBpZiAoZXhjZXB0aW9uTmFtZSA9PSAiSW52YWxpZFNlbGVjdG9yIikK
ICAgICAgICAgICAgIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25I
ZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpFcnJvck1lc3NhZ2U6OkludmFsaWRTZWxlY3Rvcik7CiAKLSAgICAgICAgSlNWYWx1ZVJl
ZiBtZXNzYWdlVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGNvbnN0X2Nhc3Q8
SlNPYmplY3RSZWY+KGV4Y2VwdGlvbiksIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoIm1lc3NhZ2Ui
X3MpLmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgSlNWYWx1ZVJlZiBtZXNzYWdlVmFsdWUgPSBK
U09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KGV4Y2Vw
dGlvbiksIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoIm1lc3NhZ2UiX3MpLmdldCgpLCBudWxs
cHRyKTsKICAgICAgICAgZXhjZXB0aW9uTWVzc2FnZSA9IGFkb3B0UmVmKEpTVmFsdWVUb1N0cmlu
Z0NvcHkoY29udGV4dCwgbWVzc2FnZVZhbHVlLCBudWxscHRyKSktPnN0cmluZygpOwogICAgIH0g
ZWxzZQogICAgICAgICBleGNlcHRpb25NZXNzYWdlID0gYWRvcHRSZWYoSlNWYWx1ZVRvU3RyaW5n
Q29weShjb250ZXh0LCBleGNlcHRpb24sIG51bGxwdHIpKS0+c3RyaW5nKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCAzZDFm
ZTc1YTkwMGI3YjI1NmM3ZTI1MzllMDIzYjNhNzNmNzFmOTY1Li40OWIyMjI1NDA1YjgyZjgxOGQz
ZWZjMDI3NTQ5ZTQzOWViZDkxN2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTExMTgsNyArMTExOCw3IEBAIHZvaWQgUERG
UGx1Z2luOjpydW5TY3JpcHRzSW5QREZEb2N1bWVudCgpCiAgICAgSlNHbG9iYWxDb250ZXh0UmVm
IGN0eCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZSgwKTsKICAgICBKU09iamVjdFJlZiBqc1BERkRv
YyA9IG1ha2VKU1BERkRvYyhjdHgpOwogICAgIGZvciAoYXV0byYgc2NyaXB0IDogc2NyaXB0cykK
LSAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoc2Ny
aXB0LmdldCgpKS5nZXQoKSwganNQREZEb2MsIG51bGxwdHIsIDAsIG51bGxwdHIpOworICAgICAg
ICBKU0V2YWx1YXRlU2NyaXB0KGN0eCwgT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShzY3JpcHQu
Z2V0KCkpLmdldCgpLCBqc1BERkRvYywgbnVsbHB0ciwgMCwgbnVsbHB0cik7CiAgICAgSlNHbG9i
YWxDb250ZXh0UmVsZWFzZShjdHgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KaW5kZXggMTg0MWI5ODVjODUwY2FmMDQzNzRhYTgx
M2EyMDUwYmRmMDA0NTdhNy4uZjhiNjZhM2I3NGNlMWYzMjUwMTVjOTVmN2FkY2M5OTVkN2ZlOGY0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lP
Uy5tbQpAQCAtMzI2LDcgKzMyNiw3IEBAIC0gKHZvaWQpZmluaXNoZWRMb2FkaW5nV2l0aERhdGFT
b3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCiAgICAgSlNHbG9iYWxDb250ZXh0UmVm
IGN0eCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZSgwKTsKICAgICBKU09iamVjdFJlZiBqc1BERkRv
YyA9IG1ha2VKU1BERkRvYyhjdHgsIGRhdGFTb3VyY2UpOwogICAgIGZvciAoTlNTdHJpbmcgKnNj
cmlwdCBpbiBzY3JpcHRzKQotICAgICAgICBKU0V2YWx1YXRlU2NyaXB0KGN0eCwgT3BhcXVlSlNT
dHJpbmc6OmNyZWF0ZShzY3JpcHQpLmdldCgpLCBqc1BERkRvYywgbnVsbHB0ciwgMCwgbnVsbHB0
cik7CisgICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3Jl
YXRlKHNjcmlwdCkuZ2V0KCksIGpzUERGRG9jLCBudWxscHRyLCAwLCBudWxscHRyKTsKICAgICBK
U0dsb2JhbENvbnRleHRSZWxlYXNlKGN0eCk7CiAKICAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXk6
WUVTXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERG
Vmlld1BsYWNlaG9sZGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQ
REZWaWV3UGxhY2Vob2xkZXIubW0KaW5kZXggMWU4NmJhMDc0NGI0NGZmNjRkMjQxNjdiZTc4NDhh
YWY3ZTk1N2UzMy4uZThlYTUyYzBlNWRkNTdkOGJlYmI2MTc2OTY0MzdlM2UyMjVkYjllNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vo
b2xkZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3
UGxhY2Vob2xkZXIubW0KQEAgLTMwNyw3ICszMDcsNyBAQCAtICh2b2lkKV9ldmFsdWF0ZUpTRm9y
RG9jdW1lbnQ6KENHUERGRG9jdW1lbnRSZWYpcGRmRG9jdW1lbnQKICAgICAgICAgSlNHbG9iYWxD
b250ZXh0UmVmIGN0eCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZSgwKTsKICAgICAgICAgSlNPYmpl
Y3RSZWYganNQREZEb2MgPSBtYWtlSlNQREZEb2MoY3R4LCBfZGF0YVNvdXJjZSk7CiAgICAgICAg
IGZvciAoTlNTdHJpbmcgKnNjcmlwdCBpbiBzY3JpcHRzKQotICAgICAgICAgICAgSlNFdmFsdWF0
ZVNjcmlwdChjdHgsIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoc2NyaXB0KS5nZXQoKSwganNQREZE
b2MsIG51bGxwdHIsIDAsIG51bGxwdHIpOworICAgICAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChj
dHgsIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoc2NyaXB0KS5nZXQoKSwganNQREZEb2MsIG51
bGxwdHIsIDAsIG51bGxwdHIpOwogICAgICAgICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKGN0eCk7
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJQREZSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUERGUmVwcmVzZW50YXRpb24ubW0KaW5kZXggYWFkZmVkMjE4ZmNlZjRiMTJmYjg5YWE3Nzdh
MTk0ZjVmZDI3YTA0NS4uMzQ2OGRkZGNkNGE3N2JiYTczODY5YTg3OTc0NzU5MTA4Y2VmMzY1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNl
bnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJl
cHJlc2VudGF0aW9uLm1tCkBAIC0xMzQsNyArMTM0LDcgQEAgLSAodm9pZClmaW5pc2hlZExvYWRp
bmdXaXRoRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKICAgICBKU0dsb2Jh
bENvbnRleHRSZWYgY3R4ID0gSlNHbG9iYWxDb250ZXh0Q3JlYXRlKDApOwogICAgIEpTT2JqZWN0
UmVmIGpzUERGRG9jID0gbWFrZUpTUERGRG9jKGN0eCwgZGF0YVNvdXJjZSk7CiAgICAgZm9yIChO
U1N0cmluZyAqc2NyaXB0IGluIHNjcmlwdHMpCi0gICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4
LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHNjcmlwdCkuZ2V0KCksIGpzUERGRG9jLCBudWxscHRy
LCAwLCBudWxscHRyKTsKKyAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIE9wYXF1ZUpTU3Ry
aW5nOjp0cnlDcmVhdGUoc2NyaXB0KS5nZXQoKSwganNQREZEb2MsIG51bGxwdHIsIDAsIG51bGxw
dHIpOwogICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoY3R4KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351961</attachid>
            <date>2018-10-10 08:17:24 -0700</date>
            <delta_ts>2018-10-10 08:21:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190429-20181011001723.patch</filename>
            <type>text/plain</type>
            <size>125655</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NWRkYTc3YTg1YTkxNzUyZTZkNjZjM2U4MGI2NGEwZjE4YzRhNzIyLi44ZWU5ODNjZTJmNDUzNmRj
NWMxOGZhZmQ4NWY2ODAxMGZmMmFkYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjQgQEAKKzIwMTgtMTAtMTAgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xv
d3N0YXJ0Lm9yZz4KKworICAgICAgICBbSlNDXSBSZW5hbWUgY3JlYXRlWFhYIHRvIHRyeUNyZWF0
ZVhYWCBpZiBpdCBjYW4gcmV0dXJuIFJlZlB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU29tZSBjcmVhdGVYWFggZnVuY3Rpb25zIGNhbiBmYWlsLiBC
dXQgc29tZXRpbWVzIHRoZSBjYWxsZXIgZG9lcyBub3QgcGVyZm9ybSBlcnJvciBjaGVja2luZy4K
KyAgICAgICAgVG8gbWFrZSBpdCBleHBsaWNpdCB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBjYW4gZmFp
bCwgd2UgcmVuYW1lIHRoZXNlIGZ1bmN0aW9ucyBmcm9tIGNyZWF0ZVhYWAorICAgICAgICB0byB0
cnlDcmVhdGVYWFguIEluIHRoaXMgcGF0Y2gsIHdlIGZvY3VzIG9uIG5vbi1KUy1tYW5hZ2VkIGZh
Y3RvcnkgZnVuY3Rpb25zLiBJZiB0aGUgZmFjdG9yeQorICAgICAgICBmdW5jdGlvbiBkb2VzIG5v
dCBmYWlsLCBpdCBzaG91bGQgcmV0dXJuIFJlZjw+LiBPdGhlcndpc2UsIGl0IHNob3VsZCBiZSBu
YW1lZCBhcyB0cnlDcmVhdGVYWFgKKyAgICAgICAgYW5kIGl0IHNob3VsZCByZXR1cm4gUmVmUHRy
PD4uCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWlubHkgZm9jdXNlcyBvbiBUeXBlZEFycmF5IGZh
Y3RvcnkgZnVuY3Rpb25zLiBQcmV2aW91c2x5LCB0aGVzZSBmdW5jdGlvbnMgYXJlCisgICAgICAg
IGBSZWZQdHI8WFhYQXJyYXk+IGNyZWF0ZSguLi4pYC4gVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZW0g
dG8gYFJlZlB0cjxYWFhBcnJheT4gdHJ5Q3JlYXRlKC4uLilgLgorICAgICAgICBBbmQgd2UgYWxz
byBpbnRyb2R1Y2UgYFJlZjxYWFhBcnJheT4gY3JlYXRlKC4uLilgIGZ1bmN0aW9uIHdoaWNoIGlu
dGVybmFsbHkgcGVyZm9ybXMKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQgb24gdGhlIHJlc3VsdCBv
ZiBgdHJ5Q3JlYXRlKC4uLilgLgorCisgICAgICAgIEFuZCB3ZSBhbHNvIGNvbnZlcnQgT3BhcXVl
SlNTdHJpbmc6OmNyZWF0ZSB0byBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlIHNpbmNlIGl0IGNh
biBmYWlsLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFjdHVhbGx5IGZpbmRzIG9uZSBwbGFjZSB3
aGljaCBkb2VzIG5vdCBwZXJmb3JtIGFueSBudWxsIGNoZWNraW5ncyB3aGlsZSBpdCB1c2VzCisg
ICAgICAgIGBSZWZQdHI8PiBjcmVhdGUoLi4uKWAgZnVuY3Rpb24uCisKKyAgICAgICAgKiBBUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpwdXRCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Y2FsbGJhY2tHZXR0ZXIpOgorICAgICAgICAqIEFQSS9KU0NsYXNzUmVmLmg6CisgICAg
ICAgIChTdGF0aWNWYWx1ZUVudHJ5OjpTdGF0aWNWYWx1ZUVudHJ5KToKKyAgICAgICAgKiBBUEkv
SlNDb250ZXh0Lm1tOgorICAgICAgICAoLVtKU0NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6d2l0aFNv
dXJjZVVSTDpdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IHNldE5hbWU6XSk6CisgICAgICAgICog
QVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRDb3B5TmFtZSk6
CisgICAgICAgIChKU0NvbnRleHRDcmVhdGVCYWNrdHJhY2UpOgorICAgICAgICAqIEFQSS9KU09i
amVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAqIEFQSS9KU1N0cmluZ1JlZi5jcHA6
CisgICAgICAgIChKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KToKKyAgICAgICAg
KiBBUEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdSZWd1bGFy
RXhwcmVzc2lvbkZyb21QYXR0ZXJuOmZsYWdzOmluQ29udGV4dDpdKToKKyAgICAgICAgKCtbSlNW
YWx1ZSB2YWx1ZVdpdGhOZXdFcnJvckZyb21NZXNzYWdlOmluQ29udGV4dDpdKToKKyAgICAgICAg
KCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246aW5Db250ZXh0Ol0p
OgorICAgICAgICAocGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uKToKKyAgICAgICAgKC1bSlNWYWx1
ZSBpbnZva2VNZXRob2Q6d2l0aEFyZ3VtZW50czpdKToKKyAgICAgICAgKGNvbnRhaW5lclZhbHVl
VG9PYmplY3QpOgorICAgICAgICAob2JqZWN0VG9WYWx1ZVdpdGhvdXRDb3B5KToKKyAgICAgICAg
KG9iamVjdFRvVmFsdWUpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmNwcDoKKyAgICAgICAg
KEpTVmFsdWVDcmVhdGVKU09OU3RyaW5nKToKKyAgICAgICAgKEpTVmFsdWVUb1N0cmluZ0NvcHkp
OgorICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmluZy5jcHA6CisgICAgICAgIChPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUpOiBEZWxl
dGVkLgorICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmluZy5oOgorICAgICAgICAqIEFQSS9nbGli
L0pTQ0NvbnRleHQuY3BwOgorICAgICAgICAoZXZhbHVhdGVTY3JpcHRJbkNvbnRleHQpOgorICAg
ICAgICAqIEFQSS9nbGliL0pTQ1ZhbHVlLmNwcDoKKyAgICAgICAgKGpzY192YWx1ZV9uZXdfc3Ry
aW5nX2Zyb21fYnl0ZXMpOgorICAgICAgICAqIGZ0bC9GVExMYXp5U2xvd1BhdGguaDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpMYXp5U2xvd1BhdGg6OmNyZWF0ZUdlbmVyYXRvcik6CisgICAgICAgICog
ZnRsL0ZUTExhenlTbG93UGF0aENhbGwuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpjcmVhdGVMYXp5
Q2FsbEdlbmVyYXRvcik6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXQuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6Ok9TUkV4aXREZXNjcmlwdG9yOjplbWl0T1NSRXhpdCk6CisgICAgICAgIChKU0M6
OkZUTDo6T1NSRXhpdERlc2NyaXB0b3I6OmVtaXRPU1JFeGl0TGF0ZXIpOgorICAgICAgICAoSlND
OjpGVEw6Ok9TUkV4aXREZXNjcmlwdG9yOjpwcmVwYXJlT1NSRXhpdEhhbmRsZSk6CisgICAgICAg
ICogZnRsL0ZUTE9TUkV4aXQuaDoKKyAgICAgICAgKiBmdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlv
bkhhbmRsZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxl
OjpjcmVhdGVIYW5kbGUpOgorICAgICAgICAqIGZ0bC9GVExQYXRjaHBvaW50RXhjZXB0aW9uSGFu
ZGxlLmg6CisgICAgICAgICogaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg6CisgICAgICAg
IChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRWRlblRpbWVyKToKKyAgICAgICAg
KEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIGhlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oOgorICAgICAgICAoSlNDOjpHQ0Fj
dGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUZ1bGxUaW1lcik6CisgICAgICAgIChKU0M6OkdDQWN0
aXZpdHlDYWxsYmFjazo6Y3JlYXRlRnVsbFRpbWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFw
L0dDQWN0aXZpdHlDYWxsYmFjay5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAg
IChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAqIGluc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2Uu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpBc3luY1N0YWNrVHJhY2U6OmNyZWF0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5oOgorICAgICAgICAqIGpzYy5jcHA6Cisg
ICAgICAgIChmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKiBydW50aW1l
L0FycmF5QnVmZmVyLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcu
aDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0
aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2li
bHlTaGFyZWRJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6cG9zc2libHlTaGFyZWRUeXBlZEltcGwpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBlZEltcGwpOgorICAgICAgICAqIHdhc20v
V2FzbU1lbW9yeS5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAqIHdhc20vV2Fz
bU1lbW9yeS5oOgorICAgICAgICAqIHdhc20vV2FzbVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6VGFibGU6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6Oldhc206OlRhYmxlOjpjcmVh
dGUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbVRhYmxlLmg6CisgICAgICAgICogd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVt
b3J5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6SlNXZWJBc3NlbWJs
eU1lbW9yeSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeSk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6
OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2Vi
QXNzZW1ibHlUYWJsZSk6CisKIDIwMTgtMTAtMDkgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNob3cgcmVkaXJlY3QgcmVxdWVzdHMg
aW4gTmV0d29yayBhbmQgVGltZWxpbmVzIHRhYnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NjMzYTRjNTQ3MGM0
YWVhY2NkMTRlOWJiODQ2NjM1OTZkMGZiMTliLi5mMWJlYmJhYWZhOTJiMjhiMWQ3NTc1OGMxZDI3
MWNmMjI2MWM5ZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE0IEBACisyMDE4LTEwLTEwICBZ
dXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgW0pT
Q10gUmVuYW1lIGNyZWF0ZVhYWCB0byB0cnlDcmVhdGVYWFggaWYgaXQgY2FuIHJldHVybiBSZWZQ
dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDQy
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBg
dHJ5Q3JlYXRlYCBvciBuZXcgYGNyZWF0ZWAuIElmIHdlIHVzZSBuZXcgYGNyZWF0ZWAsIHdlIGNh
biB1c2UgUmVmPD4gYW5kIHJlbW92ZSBudWxsIGNoZWNrLgorCisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVNlc3Npb25DbGVhcktleTo6Y2FjaGVkS2V5Rm9yS2V5SUQgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0J1ZmZlcjo6QXVkaW9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9C
dWZmZXI6OmdldENoYW5uZWxEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSRXllUGFy
YW1ldGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWUkV5ZVBhcmFtZXRlcnM6Om9mZnNldCBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjptYXRyaXhUb0FycmF5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSUG9z
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcHRpb25hbEZsb2F0M1RvSlNDQXJyYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6VlJQb3NlOjpwb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWUlBvc2U6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZS
U3RhZ2VQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZSU3RhZ2VQYXJhbWV0ZXJz
OjpzaXR0aW5nVG9TdGFuZGluZ1RyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6ZW5xdWV1ZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNs
b25lRGVzZXJpYWxpemVyOjpyZWFkQXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBjcnlwdG8v
Z2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9L
ZXlSU0E6OmFsZ29yaXRobSBjb25zdCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9LZXlS
U0FNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjphbGdvcml0aG0gY29u
c3QpOgorICAgICAgICAqIGNzcy9ET01NYXRyaXhSZWFkT25seS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01NYXRyaXhSZWFkT25seTo6dG9GbG9hdDMyQXJyYXkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NTWF0cml4UmVhZE9ubHk6OnRvRmxvYXQ2NEFycmF5IGNvbnN0KToKKyAgICAg
ICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmNyZWF0
ZSk6CisgICAgICAgICogZG9tL1RleHRFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRFbmNvZGVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6SW1hZ2VEYXRhKToKKyAgICAgICAgKiBodG1s
L0ltYWdlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRWZXJ0ZXhBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFdlYkdMSW50QXJyYXlQ
YXJhbWV0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0
ZUZyb21Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JM
b2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAgICAgIChXZWJD
b3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpyZWxlYXNl
S2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6
dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
OjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpnZW5lcmF0ZUtleVJlcXVl
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVlN0cmVhbVNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZT
dHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
U2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1w
bGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpnZXRS
R0JBSW1hZ2VEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldElt
YWdlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRh
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRSZXN1bHQpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdl
UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlw
bGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEYXRhRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRh
OjpnZXREYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpqc1ZhbHVlV2l0aERp
Y3Rpb25hcnlJbkNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tUcmFja0JveDo6TW9ja1RyYWNrQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJbml0aWFs
aXphdGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9uQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tTYW1wbGVCb3g6Ok1vY2tTYW1wbGVCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMv
U2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKToK
KyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aW5pdERhdGFQcmVmaXgpOgorICAgICAgICAoV2ViQ29yZTo6a2V5UHJlZml4KToKKyAgICAgICAg
KFdlYkNvcmU6OmtleVJlcXVlc3QpOgorCiAyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8eXVz
dWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CiAKICAgICAgICAgWE1MSHR0cFJlcXVlc3Qgc2hvdWxk
IHVzZSByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZC9yZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQg
aW5zdGVhZCBvZiBkZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmVmMDUw
YTA4NGFkODVkYmFjMDg3N2MwMWVhNTkzMjk1NDg0MGQ1OS4uMGEzYzg0ZmMwMzA3MGNlM2ZjMTlj
MzdkZjk3Yjk3M2JkZTdiN2YwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0xMC0x
MCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAg
IFtKU0NdIFJlbmFtZSBjcmVhdGVYWFggdG8gdHJ5Q3JlYXRlWFhYIGlmIGl0IGNhbiByZXR1cm4g
UmVmUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTA0MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgYHRyeUNyZWF0ZWAgb3IgbmV3IGBjcmVhdGVgLiBJZiB3ZSB1c2UgbmV3IGBjcmVhdGVgLCB3
ZSBjYW4gdXNlIFJlZjw+IGFuZCByZW1vdmUgbnVsbCBjaGVjay4KKworICAgICAgICAqIFNoYXJl
ZC9BUEkvYy9XS1N0cmluZy5jcHA6CisgICAgICAgIChXS1N0cmluZ0NvcHlKU1N0cmluZyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0Ojp0b0pTVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpjYWxs
UHJvcGVydHlGdW5jdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OnNjcmlwdE9iamVjdEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OnJ1blNjcmlwdHNJblBERkRvY3VtZW50KToKKwogMjAxOC0xMC0wOSAgQW50b2lu
ZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgZnJhbWVz
KCkgdGltaW5nIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggOGFmM2Mz
Y2Q1NWNlYTZmNTBkMzc1ODAxZGI3ZmI5MWRmZTljNjdkNS4uNmU2YTNlMzM3MDM5MjdmZDRmMGY5
MjgwNmEwODc1ZDQ4MzQ4MjJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dz
dGFydC5vcmc+CisKKyAgICAgICAgW0pTQ10gUmVuYW1lIGNyZWF0ZVhYWCB0byB0cnlDcmVhdGVY
WFggaWYgaXQgY2FuIHJldHVybiBSZWZQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBgdHJ5Q3JlYXRlYCBvciBuZXcgYGNyZWF0ZWAuIElmIHdl
IHVzZSBuZXcgYGNyZWF0ZWAsIHdlIGNhbiB1c2UgUmVmPD4gYW5kIHJlbW92ZSBudWxsIGNoZWNr
LgorCisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tOgorICAgICAgICAoLVtXZWJQ
REZWaWV3IGZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOl0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3UGxhY2Vo
b2xkZXIgX2V2YWx1YXRlSlNGb3JEb2N1bWVudDpdKToKKwogMjAxOC0xMC0wMiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bnVz
ZWQgbGlua2VkLW9uLW9yLWJlZm9yZS1pT1M1IGNoZWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggZDU0YTI3YzZmZGJiMGRjZDdlMTA1MDZlNTk3ZjVmZWQxMDM1YjVlNC4uMzhhNjlm
ZjZiZDAzMWQ3OTFiZWVjZDYwOTVjYjAzYTdiYTI5MTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8eXVz
dWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgW0pTQ10gUmVuYW1lIGNyZWF0ZVhY
WCB0byB0cnlDcmVhdGVYWFggaWYgaXQgY2FuIHJldHVybiBSZWZQdHIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDQyOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBgdHJ5Q3JlYXRlYCBvciBuZXcg
YGNyZWF0ZWAuIElmIHdlIHVzZSBuZXcgYGNyZWF0ZWAsIHdlIGNhbiB1c2UgUmVmPD4gYW5kIHJl
bW92ZSBudWxsIGNoZWNrLgorCisgICAgICAgICogV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlv
bi5tbToKKyAgICAgICAgKC1bV2ViUERGUmVwcmVzZW50YXRpb24gZmluaXNoZWRMb2FkaW5nV2l0
aERhdGFTb3VyY2U6XSk6CisKIDIwMTgtMTAtMDggIEp1c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWJHUFU6IFJlbmFtZSBvbGQgV2ViR1BVIHByb3RvdHlwZSB0
byBXZWJNZXRhbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCAxNWI4NjA4NjZkZWE5MjI4NGI3OGEwZDcwN2Q4MDE2
NjU5ODc3MWQxLi40ZjRiN2Q3MWVlMDkyOTU1N2MyOGUyMGI4YWQ4N2MzZGI1ZTdjYmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5j
dGlvbnMuaApAQCAtMTU1LDcgKzE1NSw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBlCiAgICAg
ICAgICAgICAvLyBvcHRpb25hbCBvcHRpbWl6YXRpb24gdG8gYnlwYXNzIGdldFByb3BlcnR5IGlu
IGNhc2VzIHdoZW4gd2Ugb25seSBuZWVkIHRvIGtub3cgaWYgdGhlIHByb3BlcnR5IGV4aXN0cwog
ICAgICAgICAgICAgaWYgKEpTT2JqZWN0SGFzUHJvcGVydHlDYWxsYmFjayBoYXNQcm9wZXJ0eSA9
IGpzQ2xhc3MtPmhhc1Byb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5h
bWVSZWYpCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3Ry
aW5nOjpjcmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9
IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobmFtZSk7CiAgICAgICAgICAgICAgICAgSlNMb2Nr
OjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGV4ZWMpOwogICAgICAgICAgICAgICAgIGlmICho
YXNQcm9wZXJ0eShjdHgsIHRoaXNSZWYsIHByb3BlcnR5TmFtZVJlZi5nZXQoKSkpIHsKICAgICAg
ICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBjYWxsYmFja0dldHRl
cik7CkBAIC0xNjMsNyArMTYzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGUKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgaWYgKEpTT2JqZWN0R2V0UHJvcGVydHlDYWxs
YmFjayBnZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPmdldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYpCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFt
ZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAg
IHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobmFtZSk7CiAgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWYgdmFsdWU7CiAgICAgICAgICAgICAgICAgewpAQCAtMjUyLDcgKzI1Miw3IEBAIGJv
b2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0g
dGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVu
dENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIHNl
dFByb3BlcnR5ID0ganNDbGFzcy0+c2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAo
IXByb3BlcnR5TmFtZVJlZikKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lUmVmID0g
T3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVy
dHlOYW1lUmVmID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShuYW1lKTsKICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgYm9vbCByZXN1
bHQ7CiAgICAgICAgICAgICAgICAgewpAQCAtMzE2LDcgKzMxNiw3IEBAIGJvb2wgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lCiAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFz
c1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAg
ICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBzZXRQcm9wZXJ0eSA9IGpzQ2xhc3Mt
PnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKLSAgICAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWYgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHByb3Bl
cnR5TmFtZS5pbXBsKCkpOworICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1
ZUpTU3RyaW5nOjp0cnlDcmVhdGUocHJvcGVydHlOYW1lLmltcGwoKSk7CiAgICAgICAgICAgICBK
U1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICBib29sIHJlc3VsdDsKICAgICAg
ICAgICAgIHsKQEAgLTM3NSw3ICszNzUsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBybwogICAg
ICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpz
Q2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgaWYg
KEpTT2JqZWN0RGVsZXRlUHJvcGVydHlDYWxsYmFjayBkZWxldGVQcm9wZXJ0eSA9IGpzQ2xhc3Mt
PmRlbGV0ZVByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYp
Ci0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjpj
cmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1
ZUpTU3RyaW5nOjp0cnlDcmVhdGUobmFtZSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBl
eGNlcHRpb24gPSAwOwogICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0OwogICAgICAgICAgICAg
ICAgIHsKQEAgLTY3OSw3ICs2NzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZAogICAgICAg
ICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmotPmNsYXNzUmVmKCk7IGpzQ2xhc3M7
IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2Jq
ZWN0R2V0UHJvcGVydHlDYWxsYmFjayBnZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPmdldFByb3BlcnR5
KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYpCi0gICAgICAgICAgICAg
ICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUobmFtZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlD
cmVhdGUobmFtZSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwog
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgdmFsdWU7CiAgICAgICAgICAgICAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaAppbmRleCBmYTAyNGQzNDRmNDZjNTFiYWQy
MGUxNTQwZmFmZTkyYWE1YWNjMTk1Li45MGM0ZjUzOTAwNWM4MmIwZTIzYWI5MTIwNzY5OWFlYTRh
MDM5YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaApAQCAtMzcsNyAr
MzcsMTAgQEAgc3RydWN0IFN0YXRpY1ZhbHVlRW50cnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFN0YXRpY1ZhbHVlRW50cnkoSlNPYmplY3RHZXRQcm9wZXJ0
eUNhbGxiYWNrIF9nZXRQcm9wZXJ0eSwgSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIF9zZXRQ
cm9wZXJ0eSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgX2F0dHJpYnV0ZXMsIFN0cmluZyYgcHJvcGVy
dHlOYW1lKQotICAgIDogZ2V0UHJvcGVydHkoX2dldFByb3BlcnR5KSwgc2V0UHJvcGVydHkoX3Nl
dFByb3BlcnR5KSwgYXR0cmlidXRlcyhfYXR0cmlidXRlcyksIHByb3BlcnR5TmFtZVJlZihPcGFx
dWVKU1N0cmluZzo6Y3JlYXRlKHByb3BlcnR5TmFtZSkpCisgICAgICAgIDogZ2V0UHJvcGVydHko
X2dldFByb3BlcnR5KQorICAgICAgICAsIHNldFByb3BlcnR5KF9zZXRQcm9wZXJ0eSkKKyAgICAg
ICAgLCBhdHRyaWJ1dGVzKF9hdHRyaWJ1dGVzKQorICAgICAgICAsIHByb3BlcnR5TmFtZVJlZihP
cGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHByb3BlcnR5TmFtZSkpCiAgICAgewogICAgIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggN2Y4NTY5NjVlMjg3
NzExNzlhYjQ4ZmJlMDNiMzgxZTI3YjM4OTkxNS4uMjc1NjZmNDFiOTdlMWIzOWJkZGU5YjQ4YWFh
NTU5ZjE0Y2I3MzllYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHQubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAg
LTEwMCw4ICsxMDAsOCBAQCAtIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICop
c2NyaXB0CiAtIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0IHdp
dGhTb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMCiB7CiAgICAgSlNWYWx1ZVJlZiBleGNlcHRp
b25WYWx1ZSA9IG51bGxwdHI7Ci0gICAgYXV0byBzY3JpcHRKUyA9IE9wYXF1ZUpTU3RyaW5nOjpj
cmVhdGUoc2NyaXB0KTsKLSAgICBhdXRvIHNvdXJjZVVSTEpTID0gT3BhcXVlSlNTdHJpbmc6OmNy
ZWF0ZShbc291cmNlVVJMIGFic29sdXRlU3RyaW5nXSk7CisgICAgYXV0byBzY3JpcHRKUyA9IE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoc2NyaXB0KTsKKyAgICBhdXRvIHNvdXJjZVVSTEpTID0g
T3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShbc291cmNlVVJMIGFic29sdXRlU3RyaW5nXSk7CiAg
ICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU0V2YWx1YXRlU2NyaXB0KG1fY29udGV4dCwgc2NyaXB0
SlMuZ2V0KCksIG51bGxwdHIsIHNvdXJjZVVSTEpTLmdldCgpLCAwLCAmZXhjZXB0aW9uVmFsdWUp
OwogCiAgICAgaWYgKGV4Y2VwdGlvblZhbHVlKQpAQCAtMjAwLDcgKzIwMCw3IEBAIC0gKE5TU3Ry
aW5nICopbmFtZQogCiAtICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIEpT
R2xvYmFsQ29udGV4dFNldE5hbWUobV9jb250ZXh0LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKG5h
bWUpLmdldCgpKTsKKyAgICBKU0dsb2JhbENvbnRleHRTZXROYW1lKG1fY29udGV4dCwgT3BhcXVl
SlNTdHJpbmc6OnRyeUNyZWF0ZShuYW1lKS5nZXQoKSk7CiB9CiAKIC0gKEJPT0wpX3JlbW90ZUlu
c3BlY3Rpb25FbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5j
cHAKaW5kZXggZjNjMGZkMWM3ZTA2ZDM0MzAwMmMxNGUzZWNhYTMwNjQzZDI3MmFkNy4uZTE4ZGZk
MjFmZjI4NDAwN2QwMDM5ZTY0MzJkOWVjM2M0ZjFmMzE3NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIEpTU3RyaW5nUmVm
IEpTR2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCiAgICAgaWYg
KG5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIE9wYXF1ZUpT
U3RyaW5nOjpjcmVhdGUobmFtZSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmlu
Zzo6dHJ5Q3JlYXRlKG5hbWUpLmxlYWtSZWYoKTsKIH0KIAogdm9pZCBKU0dsb2JhbENvbnRleHRT
ZXROYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUpCkBAIC0zMTYs
NyArMzE2LDcgQEAgSlNTdHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQ29udGV4
dFJlZiBjdHgsIHVuc2lnbmVkIG1heFN0YWNrU2l6ZSkKICAgICBCYWNrdHJhY2VGdW5jdG9yIGZ1
bmN0b3IoYnVpbGRlciwgbWF4U3RhY2tTaXplKTsKICAgICBmcmFtZS0+aXRlcmF0ZShmdW5jdG9y
KTsKIAotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGJ1aWxkZXIudG9TdHJpbmco
KSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGJ1aWxk
ZXIudG9TdHJpbmcoKSkubGVha1JlZigpOwogfQogCiBib29sIEpTR2xvYmFsQ29udGV4dEdldFJl
bW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IGQ4ZDJkZjEwMDRhYTMzZWU5MWM3
NDJhOWIxMDY3ZDU4ZDA1ZTBjYWYuLjUxMTY5YzRkNGQ4YjU4YjRkNDY1NWJiMWY1YzU4NmVmZTM5
MzRkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC04
MjAsNyArODIwLDcgQEAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBKU09iamVjdENvcHlQcm9wZXJ0
eU5hbWVzKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG8KICAgICBzaXplX3Qgc2l6ZSA9
IGFycmF5LnNpemUoKTsKICAgICBwcm9wZXJ0eU5hbWVzLT5hcnJheS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHNpemUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAg
ICAgICBwcm9wZXJ0eU5hbWVzLT5hcnJheS51bmNoZWNrZWRBcHBlbmQoT3BhcXVlSlNTdHJpbmc6
OmNyZWF0ZShhcnJheVtpXS5zdHJpbmcoKSkucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIHBy
b3BlcnR5TmFtZXMtPmFycmF5LnVuY2hlY2tlZEFwcGVuZChPcGFxdWVKU1N0cmluZzo6dHJ5Q3Jl
YXRlKGFycmF5W2ldLnN0cmluZygpKS5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgIHJldHVybiBK
U1Byb3BlcnR5TmFtZUFycmF5UmV0YWluKHByb3BlcnR5TmFtZXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAppbmRleCAzM2Y1OWEzNjMzNDE3MWIxNDU1NmM2
YmUzMzQ4ZjZjMTIwMTJmMTcyLi5iYjcyMGRiZThkNzFhODI4ZGQ4NmQ4ZmQ3OGE5ZTM1OGRmM2E3
MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtOTks
NyArOTksNyBAQCBKU1NjcmlwdFJlZiBKU1NjcmlwdENyZWF0ZVJlZmVyZW5jaW5nSW1tb3J0YWxB
U0NJSVRleHQoSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dAogICAgIFBhcnNlckVycm9yIGVycm9y
OwogICAgIGlmICghcGFyc2VTY3JpcHQodm0sIFNvdXJjZUNvZGUocmVzdWx0LmNvcHlSZWYoKSks
IGVycm9yKSkgewogICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKQotICAgICAgICAgICAgKmVycm9y
TWVzc2FnZSA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoZXJyb3IubWVzc2FnZSgpKS5sZWFrUmVm
KCk7CisgICAgICAgICAgICAqZXJyb3JNZXNzYWdlID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0
ZShlcnJvci5tZXNzYWdlKCkpLmxlYWtSZWYoKTsKICAgICAgICAgaWYgKGVycm9yTGluZSkKICAg
ICAgICAgICAgICplcnJvckxpbmUgPSBlcnJvci5saW5lKCk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMTIxLDcgKzEyMSw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0
cmluZyhKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0R3JvdXAsIEpTU3RyaW5nUmVmCiAgICAgUGFy
c2VyRXJyb3IgZXJyb3I7CiAgICAgaWYgKCFwYXJzZVNjcmlwdCh2bSwgU291cmNlQ29kZShyZXN1
bHQuY29weVJlZigpKSwgZXJyb3IpKSB7CiAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpCi0gICAg
ICAgICAgICAqZXJyb3JNZXNzYWdlID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShlcnJvci5tZXNz
YWdlKCkpLmxlYWtSZWYoKTsKKyAgICAgICAgICAgICplcnJvck1lc3NhZ2UgPSBPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKGVycm9yLm1lc3NhZ2UoKSkubGVha1JlZigpOwogICAgICAgICBpZiAo
ZXJyb3JMaW5lKQogICAgICAgICAgICAgKmVycm9yTGluZSA9IGVycm9yLmxpbmUoKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTU3RyaW5nUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYu
Y3BwCmluZGV4IDE2ODNhYWU1OTUyOTM5MDI0NWFhZmFjMGJhMzFiYjg3MjAwYjlmMzYuLmU2NDRm
MWFiN2E3ZjRmYmUxZjY5YjIwYjcxZjMxNGEyZjAyNTU0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwCkBAIC02Miw3ICs2Miw3IEBAIEpTU3RyaW5nUmVmIEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnN0IGNoYXIqIHN0cmluZykKIEpTU3RyaW5n
UmVmIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoY29uc3QgSlNDaGFyKiBjaGFy
cywgc2l6ZV90IG51bUNoYXJzKQogewogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBy
ZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY2hhcnMpLCBudW1DaGFycykpLmxl
YWtSZWYoKTsKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShTdHJpbmdJbXBs
OjpjcmVhdGVXaXRob3V0Q29weWluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY2hh
cnMpLCBudW1DaGFycykpLmxlYWtSZWYoKTsKIH0KIAogSlNTdHJpbmdSZWYgSlNTdHJpbmdSZXRh
aW4oSlNTdHJpbmdSZWYgc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCmlu
ZGV4IGQ3OTc0MmFmMzc0ZmI4NTVlZTk0ZWU2M2Y0ZTkxZWQ0MzY0ZmUwNTAuLjllNTM0YjBhZWIw
NTFmMzQ2YjM0YWQxYzY3NzQ0OWMzYWVkMzAyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWUubW0KQEAgLTEyNiwxNSArMTI2LDE1IEBAICsgKEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdB
cnJheUluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogCiArIChKU1ZhbHVlICopdmFsdWVX
aXRoTmV3UmVndWxhckV4cHJlc3Npb25Gcm9tUGF0dGVybjooTlNTdHJpbmcgKilwYXR0ZXJuIGZs
YWdzOihOU1N0cmluZyAqKWZsYWdzIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogewot
ICAgIGF1dG8gcGF0dGVyblN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocGF0dGVybik7
Ci0gICAgYXV0byBmbGFnc1N0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoZmxhZ3MpOwor
ICAgIGF1dG8gcGF0dGVyblN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUocGF0dGVy
bik7CisgICAgYXV0byBmbGFnc1N0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoZmxh
Z3MpOwogICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzWzJdID0geyBKU1ZhbHVlTWFrZVN0cmluZyhb
Y29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBwYXR0ZXJuU3RyaW5nLmdldCgpKSwgSlNWYWx1
ZU1ha2VTdHJpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgZmxhZ3NTdHJpbmcuZ2V0
KCkpIH07CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6SlNPYmplY3RN
YWtlUmVnRXhwKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIDIsIGFyZ3VtZW50cywgMCkg
aW5Db250ZXh0OmNvbnRleHRdOwogfQogCiArIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3RXJyb3JG
cm9tTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGluQ29udGV4dDooSlNDb250ZXh0ICopY29u
dGV4dAogewotICAgIGF1dG8gc3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShtZXNzYWdl
KTsKKyAgICBhdXRvIHN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobWVzc2FnZSk7
CiAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudCA9IEpTVmFsdWVNYWtlU3RyaW5nKFtjb250ZXh0IEpT
R2xvYmFsQ29udGV4dFJlZl0sIHN0cmluZy5nZXQoKSk7CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZh
bHVlV2l0aEpTVmFsdWVSZWY6SlNPYmplY3RNYWtlRXJyb3IoW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSwgMSwgJmFyZ3VtZW50LCAwKSBpbkNvbnRleHQ6Y29udGV4dF07CiB9CkBAIC0xNTEs
NyArMTUxLDcgQEAgKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDooSlND
b250ZXh0ICopY29udGV4dAogCiArIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURl
c2NyaXB0aW9uOihOU1N0cmluZyAqKWRlc2NyaXB0aW9uIGluQ29udGV4dDooSlNDb250ZXh0ICop
Y29udGV4dAogewotICAgIGF1dG8gc3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShkZXNj
cmlwdGlvbik7CisgICAgYXV0byBzdHJpbmcgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGRl
c2NyaXB0aW9uKTsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpKU1Zh
bHVlTWFrZVN5bWJvbChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBzdHJpbmcuZ2V0KCkp
IGluQ29udGV4dDpjb250ZXh0XTsKIH0KIApAQCAtMjkyLDcgKzI5Miw3IEBAIGlubGluZSBFeHBl
Y3RlZDxSZXN1bHQsIEpTVmFsdWVSZWY+IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbihOU1N0cmlu
Z0Z1bmN0aW9uIHN0CiAgICAgUmVzdWx0IHJlc3VsdDsKICAgICAvLyBJZiBpdCdzIGEgTlNTdHJp
bmcgYWxyZWFkeSwgcmVkdWNlIGluZGlyZWN0aW9uIGFuZCBqdXN0IHBhc3MgdGhlIE5TU3RyaW5n
LgogICAgIGlmIChbcHJvcGVydHlLZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkg
ewotICAgICAgICBhdXRvIG5hbWUgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKChOU1N0cmluZyAq
KXByb3BlcnR5S2V5KTsKKyAgICAgICAgYXV0byBuYW1lID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNy
ZWF0ZSgoTlNTdHJpbmcgKilwcm9wZXJ0eUtleSk7CiAgICAgICAgIHJlc3VsdCA9IHN0cmluZ0Z1
bmN0aW9uKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZS5nZXQoKSwg
YXJndW1lbnRzLi4uLCAmZXhjZXB0aW9uKTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzdWx0ID0g
anNGdW5jdGlvbihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIFtbSlNWYWx1
ZSB2YWx1ZVdpdGhPYmplY3Q6cHJvcGVydHlLZXkgaW5Db250ZXh0OmNvbnRleHRdIEpTVmFsdWVS
ZWZdLCBhcmd1bWVudHMuLi4sICZleGNlcHRpb24pOwpAQCAtNTIwLDcgKzUyMCw3IEBAIC0gKEpT
VmFsdWUgKilpbnZva2VNZXRob2Q6KE5TU3RyaW5nICopbWV0aG9kIHdpdGhBcmd1bWVudHM6KE5T
QXJyYXkgKilhcmd1bWVudHMKICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gW19j
b250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogCi0gICAgYXV0byBu
YW1lID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShtZXRob2QpOworICAgIGF1dG8gbmFtZSA9IE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobWV0aG9kKTsKICAgICBKU1ZhbHVlUmVmIGZ1bmN0aW9u
ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgdGhp
c09iamVjdCwgbmFtZS5nZXQoKSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKICAg
ICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9u
XTsKQEAgLTc3NCw3ICs3NzQsNyBAQCBzdGF0aWMgaWQgY29udGFpbmVyVmFsdWVUb09iamVjdChK
U0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNDb250YWluZXJDb252ZXJ0bwogICAgICAgICAg
ICAgQVNTRVJUKFtjdXJyZW50Lm9iamMgaXNLaW5kT2ZDbGFzczpbTlNNdXRhYmxlQXJyYXkgY2xh
c3NdXSk7CiAgICAgICAgICAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSAoTlNNdXRhYmxlQXJy
YXkgKiljdXJyZW50Lm9iamM7CiAgICAgICAgIAotICAgICAgICAgICAgYXV0byBsZW5ndGhTdHJp
bmcgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKCJsZW5ndGgiX3MpOworICAgICAgICAgICAgYXV0
byBsZW5ndGhTdHJpbmcgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCJsZW5ndGgiX3MpOwog
ICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gSlNDOjp0b1VJbnQzMihKU1ZhbHVlVG9OdW1i
ZXIoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBqcywgbGVuZ3RoU3RyaW5n
LmdldCgpLCAwKSwgMCkpOwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKQEAgLTk4NCw3ICs5ODQsNyBAQCBzdGF0aWMgT2JqY0NvbnRhaW5lckNv
bnZlcnRvcjo6VGFzayBvYmplY3RUb1ZhbHVlV2l0aG91dENvcHkoSlNDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgcmV0dXJuIHsgb2JqZWN0LCAoKEpTVmFsdWUgKilvYmplY3QpLT5tX3Zh
bHVlLCBDb250YWluZXJOb25lIH07CiAKICAgICAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSkgewotICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBPcGFxdWVK
U1N0cmluZzo6Y3JlYXRlKChOU1N0cmluZyAqKW9iamVjdCk7CisgICAgICAgICAgICBhdXRvIHN0
cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoKE5TU3RyaW5nICopb2JqZWN0KTsKICAg
ICAgICAgICAgIHJldHVybiB7IG9iamVjdCwgSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dFJlZiwg
c3RyaW5nLmdldCgpKSwgQ29udGFpbmVyTm9uZSB9OwogICAgICAgICB9CiAKQEAgLTEwNDEsNyAr
MTA0MSw3IEBAIEpTVmFsdWVSZWYgb2JqZWN0VG9WYWx1ZShKU0NvbnRleHQgKmNvbnRleHQsIGlk
IG9iamVjdCkKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IChOU0RpY3Rp
b25hcnkgKiljdXJyZW50Lm9iamM7CiAgICAgICAgICAgICBmb3IgKGlkIGtleSBpbiBbZGljdGlv
bmFyeSBrZXlFbnVtZXJhdG9yXSkgewogICAgICAgICAgICAgICAgIGlmIChba2V5IGlzS2luZE9m
Q2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKChOU1N0cmluZyAqKWtleSk7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNy
ZWF0ZSgoTlNTdHJpbmcgKilrZXkpOwogICAgICAgICAgICAgICAgICAgICBKU09iamVjdFNldFBy
b3BlcnR5KGNvbnRleHRSZWYsIGpzLCBwcm9wZXJ0eU5hbWUuZ2V0KCksIGNvbnZlcnRvci5jb252
ZXJ0KFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTprZXldKSwgMCwgMCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5j
cHAKaW5kZXggMjNmMTdiYzIxYmIzYzA4MjlkZTBhNTYwNDMzNzA2ODUwZmMxZWMwNS4uNGMxMmI5
NmNmZGQ2OTIzZmI3YzMyYmY4NDgzMTAyYzM2MTQ2YzQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWVSZWYuY3BwCkBAIC0zODYsNyArMzg2LDcgQEAgSlNTdHJpbmdSZWYgSlNW
YWx1ZUNyZWF0ZUpTT05TdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiBhcGlWYWx1
ZSwgdW5zaWcKICAgICAgICAgKmV4Y2VwdGlvbiA9IDA7CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlv
bklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlk
VGhyb3cpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3Jl
YXRlKHJlc3VsdCkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3Jl
YXRlKHJlc3VsdCkubGVha1JlZigpOwogfQogCiBib29sIEpTVmFsdWVUb0Jvb2xlYW4oSlNDb250
ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKQEAgLTQzNCw3ICs0MzQsNyBAQCBKU1N0cmlu
Z1JlZiBKU1ZhbHVlVG9TdHJpbmdDb3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFs
dWUsIEpTVmFsdWVSZWYqCiAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVl
KTsKICAgICAKLSAgICBhdXRvIHN0cmluZ1JlZihPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGpzVmFs
dWUudG9XVEZTdHJpbmcoZXhlYykpKTsKKyAgICBhdXRvIHN0cmluZ1JlZihPcGFxdWVKU1N0cmlu
Zzo6dHJ5Q3JlYXRlKGpzVmFsdWUudG9XVEZTdHJpbmcoZXhlYykpKTsKICAgICBpZiAoaGFuZGxl
RXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3Rh
dHVzOjpEaWRUaHJvdykKICAgICAgICAgc3RyaW5nUmVmID0gbnVsbHB0cjsKICAgICByZXR1cm4g
c3RyaW5nUmVmLmxlYWtSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvT3BhcXVlSlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVK
U1N0cmluZy5jcHAKaW5kZXggOTgxZGM4NWIwODVmMTg5N2U1Y2VkYmQ4MTI1OTczYTBiYzA0ZDQ5
ZS4uNzdhMmUxYzdmMTM1NDVjYzA4ZGQwODJiM2ZkMjk0MWQzZTA4NWUyNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAK
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBPcGFxdWVK
U1N0cmluZzo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPE9wYXF1ZUpTU3Ry
aW5nPiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewog
ICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDIs
NyArNDIsNyBAQCBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPcGFxdWVKU1N0
cmluZyhzdHJpbmcpKTsKIH0KIAotUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBPcGFxdWVKU1N0cmlu
Zzo6Y3JlYXRlKFN0cmluZyYmIHN0cmluZykKK1JlZlB0cjxPcGFxdWVKU1N0cmluZz4gT3BhcXVl
SlNTdHJpbmc6OnRyeUNyZWF0ZShTdHJpbmcmJiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL09wYXF1ZUpTU3RyaW5nLmgKaW5kZXggYWQyZmZjZGU1NzEyNWU4YWY3MmYyMzkxNDNlZGJj
MDcyNTI0NjE2MC4uNGE0YjVlZGZiYTIwMTQ2Yzg5MzIwMTQzZjliNWY0ZDFkZDEwZDY3NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaApAQCAtNTEsOCArNTEs
OCBAQCBzdHJ1Y3QgT3BhcXVlSlNTdHJpbmcgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
T3BhcXVlSlNTdHJpbmc+IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3BhcXVlSlNT
dHJpbmcoY2hhcmFjdGVycywgbGVuZ3RoKSk7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IGNyZWF0
ZShTdHJpbmcmJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxPcGFxdWVK
U1N0cmluZz4gdHJ5Q3JlYXRlKGNvbnN0IFN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHRyeUNyZWF0ZShTdHJpbmcmJik7CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSB+T3BhcXVlSlNTdHJpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCmluZGV4IGI1NDhlZmJmZjY5NmE1ZWFm
YTc0Y2VlZDg1NTcyMmMzMjJiOTJhNDQuLjQwZWE1YzE0OTE3YjNjZGQ0ZjdlZWMwYTI0YmUyMDBm
N2NjMDc3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0ND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4
dC5jcHAKQEAgLTgxOSw3ICs4MTksNyBAQCBKU0NWYWx1ZSoganNjX2NvbnRleHRfZXZhbHVhdGUo
SlNDQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogY29kZSwgZ3NzaXplIGxlbgogCiBzdGF0
aWMgSlNWYWx1ZVJlZiBldmFsdWF0ZVNjcmlwdEluQ29udGV4dChKU0dsb2JhbENvbnRleHRSZWYg
anNDb250ZXh0LCBTdHJpbmcmJiBzY3JpcHQsIGNvbnN0IGNoYXIqIHVyaSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBzY3JpcHRKUyhBZG9wdCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShXVEZNb3ZlKHNj
cmlwdCkpLmxlYWtSZWYoKSk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHNjcmlwdEpT
KEFkb3B0LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKFdURk1vdmUoc2NyaXB0KSkubGVha1Jl
ZigpKTsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc291cmNlVVJJID0gdXJpID8gYWRv
cHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXJpKSkgOiBudWxscHRyOwogICAgIHJl
dHVybiBKU0V2YWx1YXRlU2NyaXB0KGpzQ29udGV4dCwgc2NyaXB0SlMuZ2V0KCksIG51bGxwdHIs
IHNvdXJjZVVSSS5nZXQoKSwgbGluZU51bWJlciwgZXhjZXB0aW9uKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmFsdWUuY3BwCmluZGV4IDc5ZTUzMTZmZDM2MjkzYzhk
ZDAyMzM2MjNiYWQwM2JhYTg1ZDljM2IuLjZlMjc0Zjg5ZjQzN2I2M2M5NTkyNTcyMzQyZjk3MDUz
OWNhYWUxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NW
YWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmNw
cApAQCAtMzY3LDcgKzM2Nyw3IEBAIEpTQ1ZhbHVlKiBqc2NfdmFsdWVfbmV3X3N0cmluZ19mcm9t
X2J5dGVzKEpTQ0NvbnRleHQqIGNvbnRleHQsIEdCeXRlcyogYnl0ZXMpCiAgICAgZ3NpemUgZGF0
YVNpemU7CiAgICAgY29uc3QgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihn
X2J5dGVzX2dldF9kYXRhKGJ5dGVzLCAmZGF0YVNpemUpKTsKICAgICBhdXRvIHN0cmluZyA9IFN0
cmluZzo6ZnJvbVVURjgoZGF0YSwgZGF0YVNpemUpOwotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBqc1N0cmluZyhBZG9wdCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShXVEZNb3ZlKHN0cmlu
ZykpLmxlYWtSZWYoKSk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGpzU3RyaW5nKEFk
b3B0LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKFdURk1vdmUoc3RyaW5nKSkubGVha1JlZigp
KTsKICAgICByZXR1cm4ganNjQ29udGV4dEdldE9yQ3JlYXRlVmFsdWUoY29udGV4dCwgSlNWYWx1
ZU1ha2VTdHJpbmcoanNjQ29udGV4dEdldEpTQ29udGV4dChjb250ZXh0KSwganNTdHJpbmcuZ2V0
KCkpKS5sZWFrUmVmKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGF6eVNsb3dQYXRoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExhenlT
bG93UGF0aC5oCmluZGV4IDlhNmU2MDFhZDMxOWJkZGZjM2E5OGUwNWQ5OTMwYjgxZGFlMWRhZGQu
LmE1YjNhNzI1MmE0MTM3NzY4NTJmNDFmYTI1MTI0YjkwODM3OGRiMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGF6eVNsb3dQYXRoLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1BhdGguaApAQCAtNTksNyArNTksNyBAQCBjbGFz
cyBMYXp5U2xvd1BhdGggewogICAgIHR5cGVkZWYgU2hhcmVkVGFzazxHZW5lcmF0b3JGdW5jdGlv
bj4gR2VuZXJhdG9yOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBzdGF0
aWMgUmVmUHRyPEdlbmVyYXRvcj4gY3JlYXRlR2VuZXJhdG9yKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCisgICAgc3RhdGljIFJlZjxHZW5lcmF0b3I+IGNyZWF0ZUdlbmVyYXRvcihjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgcmV0dXJuIGNyZWF0ZVNoYXJlZFRhc2s8R2Vu
ZXJhdG9yRnVuY3Rpb24+KGZ1bmN0b3IpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTGF6eVNsb3dQYXRoQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMYXp5U2xvd1BhdGhDYWxsLmgKaW5kZXggYmZiMmFjZWM4NmVkODY3NzZmMWIx
MTY1NTI4ZGM1MjIxNzYxYWU2Ni4uNzRmZDZlYzdiNzJmMzIyMzQyMWFhNjY0YmExYjZhNjdiYzc3
MjkzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1Bh
dGhDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1BhdGhD
YWxsLmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRUeXBl
cz4KLVJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0
b3IoCitSZWY8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9y
KAogICAgIFZNJiB2bSwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbiwgUmVz
dWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQogewogICAgIHJldHVy
biBMYXp5U2xvd1BhdGg6OmNyZWF0ZUdlbmVyYXRvcigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9TUkV4aXQuY3BwCmluZGV4IDMyOGYwYzgxODI4YmZjYjk2YjExYTk0OWVkYTE5ZDFlMDY3
MWQxNTQuLmIwOWU3MGFiNDZjZDYwMjUzZDFiNTE0ZGI4MDU3MTg1NzRlZTU0ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0LmNwcApAQCAtNjMsMTcgKzYzLDE3IEBAIHZv
aWQgT1NSRXhpdERlc2NyaXB0b3I6OnZhbGlkYXRlUmVmZXJlbmNlcyhjb25zdCBUcmFja2VkUmVm
ZXJlbmNlcyYgdHJhY2tlZFJlZmVyCiAgICAgICAgIG1hdGVyaWFsaXphdGlvbi0+dmFsaWRhdGVS
ZWZlcmVuY2VzKHRyYWNrZWRSZWZlcmVuY2VzKTsKIH0KIAotUmVmUHRyPE9TUkV4aXRIYW5kbGU+
IE9TUkV4aXREZXNjcmlwdG9yOjplbWl0T1NSRXhpdCgKK1JlZjxPU1JFeGl0SGFuZGxlPiBPU1JF
eGl0RGVzY3JpcHRvcjo6ZW1pdE9TUkV4aXQoCiAgICAgU3RhdGUmIHN0YXRlLCBFeGl0S2luZCBl
eGl0S2luZCwgY29uc3QgTm9kZU9yaWdpbiYgbm9kZU9yaWdpbiwgQ0NhbGxIZWxwZXJzJiBqaXQs
CiAgICAgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMsIHVuc2lnbmVkIG9m
ZnNldCkKIHsKICAgICBSZWZQdHI8T1NSRXhpdEhhbmRsZT4gaGFuZGxlID0KICAgICAgICAgcHJl
cGFyZU9TUkV4aXRIYW5kbGUoc3RhdGUsIGV4aXRLaW5kLCBub2RlT3JpZ2luLCBwYXJhbXMsIG9m
ZnNldCk7CiAgICAgaGFuZGxlLT5lbWl0RXhpdFRodW5rKHN0YXRlLCBqaXQpOwotICAgIHJldHVy
biBoYW5kbGU7CisgICAgcmV0dXJuIGhhbmRsZS5yZWxlYXNlTm9uTnVsbCgpOwogfQogCi1SZWZQ
dHI8T1NSRXhpdEhhbmRsZT4gT1NSRXhpdERlc2NyaXB0b3I6OmVtaXRPU1JFeGl0TGF0ZXIoCitS
ZWY8T1NSRXhpdEhhbmRsZT4gT1NSRXhpdERlc2NyaXB0b3I6OmVtaXRPU1JFeGl0TGF0ZXIoCiAg
ICAgU3RhdGUmIHN0YXRlLCBFeGl0S2luZCBleGl0S2luZCwgY29uc3QgTm9kZU9yaWdpbiYgbm9k
ZU9yaWdpbiwKICAgICBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcywgdW5z
aWduZWQgb2Zmc2V0KQogewpAQCAtODMsMTcgKzgzLDE3IEBAIFJlZlB0cjxPU1JFeGl0SGFuZGxl
PiBPU1JFeGl0RGVzY3JpcHRvcjo6ZW1pdE9TUkV4aXRMYXRlcigKICAgICAgICAgW2hhbmRsZSwg
JnN0YXRlXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgICAgIGhhbmRsZS0+ZW1pdEV4
aXRUaHVuayhzdGF0ZSwgaml0KTsKICAgICAgICAgfSk7Ci0gICAgcmV0dXJuIGhhbmRsZTsKKyAg
ICByZXR1cm4gaGFuZGxlLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKLVJlZlB0cjxPU1JFeGl0SGFu
ZGxlPiBPU1JFeGl0RGVzY3JpcHRvcjo6cHJlcGFyZU9TUkV4aXRIYW5kbGUoCitSZWY8T1NSRXhp
dEhhbmRsZT4gT1NSRXhpdERlc2NyaXB0b3I6OnByZXBhcmVPU1JFeGl0SGFuZGxlKAogICAgIFN0
YXRlJiBzdGF0ZSwgRXhpdEtpbmQgZXhpdEtpbmQsIGNvbnN0IE5vZGVPcmlnaW4mIG5vZGVPcmln
aW4sCiAgICAgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMsIHVuc2lnbmVk
IG9mZnNldCkKIHsKICAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRlLmppdENvZGUtPm9zckV4aXQu
c2l6ZSgpOwogICAgIE9TUkV4aXQmIGV4aXQgPSBzdGF0ZS5qaXRDb2RlLT5vc3JFeGl0LmFsbG9j
KAogICAgICAgICB0aGlzLCBleGl0S2luZCwgbm9kZU9yaWdpbi5mb3JFeGl0LCBub2RlT3JpZ2lu
LnNlbWFudGljLCBub2RlT3JpZ2luLndhc0hvaXN0ZWQpOwotICAgIFJlZlB0cjxPU1JFeGl0SGFu
ZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihuZXcgT1NSRXhpdEhhbmRsZShpbmRleCwgZXhpdCkpOwor
ICAgIFJlZjxPU1JFeGl0SGFuZGxlPiBoYW5kbGUgPSBhZG9wdFJlZigqbmV3IE9TUkV4aXRIYW5k
bGUoaW5kZXgsIGV4aXQpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvZmZzZXQ7IGkgPCBwYXJh
bXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIGV4aXQubV92YWx1ZVJlcHMuYXBwZW5kKHBhcmFtc1tp
XSk7CiAgICAgZXhpdC5tX3ZhbHVlUmVwcy5zaHJpbmtUb0ZpdCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE9TUkV4aXQuaAppbmRleCA3YzAyZmIxMGRhMGYxYjhjM2Y1NjZmNDU5YWRjYmVj
MjVkZDRjOWI3Li5kYTg3Y2NmMzI3M2ZlNGJlMzYwNjgzYjhhZjNiYmY1MTZkNjIyNWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXQuaApAQCAtOTAsNyArOTAsNyBAQCBzdHJ1
Y3QgT1NSRXhpdERlc2NyaXB0b3IgewogICAgIC8vIHVwIHRvIHRoZSBPU1JFeGl0IG9iamVjdCwg
d2hpY2ggdGhpcyBjcmVhdGVzLiBOb3RlIHRoYXQgaXQncyBPSyB0byBkcm9wIHRoZSBPU1JFeGl0
SGFuZGxlIG9iamVjdAogICAgIC8vIG9uIHRoZSBncm91bmQuIEl0IGNvbnRhaW5zIGluZm9ybWF0
aW9uIHRoYXQgaXMgbW9zdGx5IG5vdCB1c2VmdWwgaWYgeW91IHVzZSB0aGlzIEFQSSwgc2luY2Ug
YWZ0ZXIKICAgICAvLyB0aGlzIGNhbGwsIHRoZSBPU1JFeGl0IGlzIHNpbXBseSByZWFkeSB0byBn
by4KLSAgICBSZWZQdHI8T1NSRXhpdEhhbmRsZT4gZW1pdE9TUkV4aXQoCisgICAgUmVmPE9TUkV4
aXRIYW5kbGU+IGVtaXRPU1JFeGl0KAogICAgICAgICBTdGF0ZSYsIEV4aXRLaW5kLCBjb25zdCBE
Rkc6Ok5vZGVPcmlnaW4mLCBDQ2FsbEhlbHBlcnMmLCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJiwKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMCk7CiAKQEAgLTEwMiw3ICsx
MDIsNyBAQCBzdHJ1Y3QgT1NSRXhpdERlc2NyaXB0b3IgewogICAgIC8vIFRoaXMgQVBJIGlzIG1l
YW50IHRvIGJlIHVzZWQgZm9yIHRoaW5ncyBsaWtlIGV4Y2VwdGlvbiBoYW5kbGluZywgd2hlcmUg
c29tZSBwYXRjaHBvaW50IHdhbnRzIHRvCiAgICAgLy8gaGF2ZSBhIHBsYWNlIHRvIGp1bXAgdG8g
Zm9yIE9TUiBleGl0LiBJdCBkb2Vzbid0IGNhcmUgd2hlcmUgdGhhdCBPU1IgZXhpdCBpcyBlbWl0
dGVkIHNvIGxvbmcgYXMgaXQKICAgICAvLyBldmVudHVhbGx5IGdldHMgYWNjZXNzIHRvIGl0cyBs
YWJlbC4KLSAgICBSZWZQdHI8T1NSRXhpdEhhbmRsZT4gZW1pdE9TUkV4aXRMYXRlcigKKyAgICBS
ZWY8T1NSRXhpdEhhbmRsZT4gZW1pdE9TUkV4aXRMYXRlcigKICAgICAgICAgU3RhdGUmLCBFeGl0
S2luZCwgY29uc3QgREZHOjpOb2RlT3JpZ2luJiwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYsCiAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IDApOwogCkBAIC0xMTAsNyArMTEw
LDcgQEAgc3RydWN0IE9TUkV4aXREZXNjcmlwdG9yIHsKICAgICAvLyBUaGlzIGlzIHRoZSBsb3ct
bGV2ZWwgaW50ZXJmYWNlLiBJdCB3aWxsIGNyZWF0ZSBhIGhhbmRsZSByZXByZXNlbnRpbmcgdGhl
IGRlc2lyZSB0byBlbWl0IGNvZGUgZm9yCiAgICAgLy8gYW4gT1NSIGV4aXQuIFlvdSBjYW4gY2Fs
bCBPU1JFeGl0SGFuZGxlOjplbWl0RXhpdFRodW5rKCkgb25jZSB5b3UgaGF2ZSBhIHBsYWNlIHRv
IGVtaXQgaXQuIE5vdGUKICAgICAvLyB0aGF0IHRoZSBhYm92ZSB0d28gQVBJcyBhcmUgd3JpdHRl
biBpbiB0ZXJtcyBvZiB0aGlzIGFuZCBPU1JFeGl0SGFuZGxlOjplbWl0RXhpdFRodW5rKCkuCi0g
ICAgUmVmUHRyPE9TUkV4aXRIYW5kbGU+IHByZXBhcmVPU1JFeGl0SGFuZGxlKAorICAgIFJlZjxP
U1JFeGl0SGFuZGxlPiBwcmVwYXJlT1NSRXhpdEhhbmRsZSgKICAgICAgICAgU3RhdGUmLCBFeGl0
S2luZCwgY29uc3QgREZHOjpOb2RlT3JpZ2luJiwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYsCiAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IDApOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGUuY3BwCmluZGV4IDcyOTRiMWI1ZjZiYWVlNjFjNTc0Y2ZlNTEwY2UyMzhjOTMzMzcwMjEuLmZh
ZWY0MTdiOTgyMzU0ZjNlNjQ3YWFkMjliYTA2YzgyNzBjZTA5ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxl
LmNwcApAQCAtMzgsMTEgKzM4LDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsK
IAogdXNpbmcgbmFtZXNwYWNlIERGRzsKIAotUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGU+IFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU6OmNyZWF0ZSgKK1JlZjxQYXRjaHBvaW50RXhj
ZXB0aW9uSGFuZGxlPiBQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlOjpjcmVhdGUoCiAgICAgU3Rh
dGUmIHN0YXRlLCBPU1JFeGl0RGVzY3JpcHRvciogZGVzY3JpcHRvciwgTm9kZU9yaWdpbiBvcmln
aW4sIHVuc2lnbmVkIG9mZnNldCwKICAgICBjb25zdCBIYW5kbGVySW5mbyYgaGFuZGxlcikKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUoc3RhdGUs
IGRlc2NyaXB0b3IsIG9yaWdpbiwgb2Zmc2V0LCBoYW5kbGVyKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZShzdGF0ZSwgZGVzY3JpcHRvciwgb3Jp
Z2luLCBvZmZzZXQsIGhhbmRsZXIpKTsKIH0KIAogUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25I
YW5kbGU+IFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU6OmRlZmF1bHRIYW5kbGUoU3RhdGUmIHN0
YXRlKQpAQCAtMTA4LDcgKzEwOCw3IEBAIFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU6OlBhdGNo
cG9pbnRFeGNlcHRpb25IYW5kbGUoCiB7CiB9CiAKLVJlZlB0cjxPU1JFeGl0SGFuZGxlPiBQYXRj
aHBvaW50RXhjZXB0aW9uSGFuZGxlOjpjcmVhdGVIYW5kbGUoCitSZWY8T1NSRXhpdEhhbmRsZT4g
UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZTo6Y3JlYXRlSGFuZGxlKAogICAgIEV4aXRLaW5kIGtp
bmQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykKIHsKICAgICBy
ZXR1cm4gbV9kZXNjcmlwdG9yLT5lbWl0T1NSRXhpdExhdGVyKApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUuaAppbmRl
eCAxYjI2NmQyZTFmZTk3ODg4ZWE4Zjc4ZDJjOGM0M2I0ZTM2NDY5ZmVjLi40NDhlMWNmNWYwNWRm
NTU4M2IyMzAyN2RmZWNlNjE0MjdhMjMyMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUuaApAQCAtNTEsNyAr
NTEsNyBAQCBzdHJ1Y3QgT1NSRXhpdEhhbmRsZTsKIAogY2xhc3MgUGF0Y2hwb2ludEV4Y2VwdGlv
bkhhbmRsZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQYXRjaHBvaW50RXhjZXB0aW9u
SGFuZGxlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9u
SGFuZGxlPiBjcmVhdGUoCisgICAgc3RhdGljIFJlZjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxl
PiBjcmVhdGUoCiAgICAgICAgIFN0YXRlJiwgT1NSRXhpdERlc2NyaXB0b3IqLCBERkc6Ok5vZGVP
cmlnaW4sIHVuc2lnbmVkIG9mZnNldCwgY29uc3QgSGFuZGxlckluZm8mKTsKIAogICAgIHN0YXRp
YyBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZGVmYXVsdEhhbmRsZShTdGF0ZSYp
OwpAQCAtODksNyArODksNyBAQCBjbGFzcyBQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBhdGNocG9pbnRFeGNlcHRpbwogICAgIFBhdGNocG9p
bnRFeGNlcHRpb25IYW5kbGUoCiAgICAgICAgIFN0YXRlJiwgT1NSRXhpdERlc2NyaXB0b3IqLCBE
Rkc6Ok5vZGVPcmlnaW4sIHVuc2lnbmVkIG9mZnNldCwgY29uc3QgSGFuZGxlckluZm8mKTsKIAot
ICAgIFJlZlB0cjxPU1JFeGl0SGFuZGxlPiBjcmVhdGVIYW5kbGUoRXhpdEtpbmQsIGNvbnN0IEIz
OjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKTsKKyAgICBSZWY8T1NSRXhpdEhhbmRsZT4gY3Jl
YXRlSGFuZGxlKEV4aXRLaW5kLCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJik7
CiAKICAgICBTdGF0ZSYgbV9zdGF0ZTsKICAgICBPU1JFeGl0RGVzY3JpcHRvciogbV9kZXNjcmlw
dG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZp
dHlDYWxsYmFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlD
YWxsYmFjay5oCmluZGV4IDUyZTBhMjhmZTNjOTBjZjlmMmY4MTg1Nzc5YTc2ZmYxOTI1Mzc1Y2Mu
LjA1Y2YyODIwZjMyNGFhNWMwOWEzNGQyMDEyNjA2NjZjNTJlMzY4ODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgKQEAgLTQx
LDcgKzQxLDcgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRWRlbkdDQWN0aXZpdHlDYWxsYmFj
ayA6IHB1YmxpYyBHQ0FjdGl2aXR5Q2FsbGJhY2sgewogICAgIGRvdWJsZSBkZWF0aFJhdGUoSGVh
cCYpIG92ZXJyaWRlOwogfTsKIAotaW5saW5lIFJlZlB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IEdD
QWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlRWRlblRpbWVyKEhlYXAqIGhlYXApCitpbmxpbmUgUmVm
UHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVhdGVFZGVu
VGltZXIoSGVhcCogaGVhcCkKIHsKICAgICByZXR1cm4gc19zaG91bGRDcmVhdGVHQ1RpbWVyID8g
YWRvcHRSZWYobmV3IEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkpIDogbnVsbHB0cjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2Fs
bGJhY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2suaAppbmRleCA1Y2UwMzRhMGNkODFmNTVkMjk4ZjEyODk4MjZkZTZmOGJlZjYyYmJhLi42NTBh
ZTEzODdmMTZhYTAwM2Q3ZGRiOTg2ZjA3NThmYzlmMWVjNDgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oCkBAIC00Niw3ICs0
Niw3IEBAIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2sgOiBw
dWJsaWMgR0NBY3Rpdml0eUNhbGxiYWNrIHsKICAgICBib29sIG1fZGlkR0NSZWNlbnRseSB7IGZh
bHNlIH07CiB9OwogCi1pbmxpbmUgUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s+IEdDQWN0
aXZpdHlDYWxsYmFjazo6Y3JlYXRlRnVsbFRpbWVyKEhlYXAqIGhlYXApCitpbmxpbmUgUmVmUHRy
PEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s+IEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRnVs
bFRpbWVyKEhlYXAqIGhlYXApCiB7CiAgICAgcmV0dXJuIHNfc2hvdWxkQ3JlYXRlR0NUaW1lciA/
IGFkb3B0UmVmKG5ldyBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApKSA6IG51bGxwdHI7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0FjdGl2aXR5Q2FsbGJh
Y2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oCmlu
ZGV4IDlkZmRkMGY3MDA3ZDIxM2I0ZmI5NTQ0OWIxNmVmZWRkOGU0YzNhMzYuLmMzNzFmNzdkMmI2
NGI0M2RhYzc0NjMxNGQ3YzFkOWQyNWYzOWZiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oCkBAIC00Myw4ICs0Myw4IEBAIGNsYXNzIEhl
YXA7CiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBHQ0FjdGl2aXR5Q2FsbGJhY2sgOiBwdWJsaWMg
SlNSdW5Mb29wVGltZXIgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU1J1bkxvb3BUaW1l
cjsKLSAgICBzdGF0aWMgUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0ZUZ1bGxU
aW1lcihIZWFwKik7Ci0gICAgc3RhdGljIFJlZlB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0
ZUVkZW5UaW1lcihIZWFwKik7CisgICAgc3RhdGljIFJlZlB0cjxGdWxsR0NBY3Rpdml0eUNhbGxi
YWNrPiB0cnlDcmVhdGVGdWxsVGltZXIoSGVhcCopOworICAgIHN0YXRpYyBSZWZQdHI8R0NBY3Rp
dml0eUNhbGxiYWNrPiB0cnlDcmVhdGVFZGVuVGltZXIoSGVhcCopOwogCiAgICAgR0NBY3Rpdml0
eUNhbGxiYWNrKEhlYXAqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCBj
YzRhMzM2NTFhMmYxOTZmY2FmYjMyYWNjMGE2MDNkOTg4ODIzZjA4Li5mNDY4ZDQxZTRmZmM3YTZh
YzdkNDI5NWZjYmZhNzc3MjIxN2JiYzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cApAQCAtMzA0LDggKzMwNCw4IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlw
ZSkKICAgICAvLyBzY2hlZHVsZSB0aGUgdGltZXIgaWYgd2UndmUgbmV2ZXIgZG9uZSBhIGNvbGxl
Y3Rpb24uCiAgICAgLCBtX2xhc3RGdWxsR0NMZW5ndGgoMC4wMSkKICAgICAsIG1fbGFzdEVkZW5H
Q0xlbmd0aCgwLjAxKQotICAgICwgbV9mdWxsQWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2aXR5Q2Fs
bGJhY2s6OmNyZWF0ZUZ1bGxUaW1lcih0aGlzKSkKLSAgICAsIG1fZWRlbkFjdGl2aXR5Q2FsbGJh
Y2soR0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIodGhpcykpCisgICAgLCBtX2Z1
bGxBY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRnVsbFRpbWVy
KHRoaXMpKQorICAgICwgbV9lZGVuQWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2aXR5Q2FsbGJhY2s6
OnRyeUNyZWF0ZUVkZW5UaW1lcih0aGlzKSkKICAgICAsIG1fc3dlZXBlcihhZG9wdFJlZihuZXcg
SW5jcmVtZW50YWxTd2VlcGVyKHRoaXMpKSkKICAgICAsIG1fc3RvcElmTmVjZXNzYXJ5VGltZXIo
YWRvcHRSZWYobmV3IFN0b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkpCiAgICAgLCBtX2RlZmVycmFs
RGVwdGgoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQXN5
bmNTdGFja1RyYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQXN5bmNT
dGFja1RyYWNlLmNwcAppbmRleCAzMTRiODdjNjg3YjgwZWRhODRhNjZjODdhNmE1YThiMTlkMDIx
NDY2Li44Y2IwOTc5NmYxMjgyMTY1NzdiMmY5MGFkMmUyY2UwYzRkMmJjMzgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2UuY3BwCkBA
IC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1SZWZQdHI8QXN5bmNT
dGFja1RyYWNlPiBBc3luY1N0YWNrVHJhY2U6OmNyZWF0ZShSZWY8U2NyaXB0Q2FsbFN0YWNrPiYm
IGNhbGxTdGFjaywgYm9vbCBzaW5nbGVTaG90LCBSZWZQdHI8QXN5bmNTdGFja1RyYWNlPiBwYXJl
bnQpCitSZWY8QXN5bmNTdGFja1RyYWNlPiBBc3luY1N0YWNrVHJhY2U6OmNyZWF0ZShSZWY8U2Ny
aXB0Q2FsbFN0YWNrPiYmIGNhbGxTdGFjaywgYm9vbCBzaW5nbGVTaG90LCBSZWZQdHI8QXN5bmNT
dGFja1RyYWNlPiBwYXJlbnQpCiB7CiAgICAgQVNTRVJUKGNhbGxTdGFjay0+c2l6ZSgpKTsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBc3luY1N0YWNrVHJhY2UoV1RGTW92ZShjYWxsU3RhY2sp
LCBzaW5nbGVTaG90LCBXVEZNb3ZlKHBhcmVudCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvQXN5bmNTdGFja1RyYWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5oCmluZGV4IDFjM2NjZjQ4MzdhYjE1NzIx
MGMwM2ZjODNmYmRkN2M3OTc4NTE5MjQuLjIyYjNmZTc0OTViMThlNGE1YmUwNzM3OTM1MjA5ZWQ5
NTUxYWNkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQXN5
bmNTdGFja1RyYWNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3lu
Y1N0YWNrVHJhY2UuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBB
c3luY1N0YWNrVHJhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxBc3luY1N0YWNrVHJhY2U+IHsKICAg
ICAgICAgQ2FuY2VsZWQsCiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWZQdHI8QXN5bmNTdGFja1Ry
YWNlPiBjcmVhdGUoUmVmPFNjcmlwdENhbGxTdGFjaz4mJiwgYm9vbCBzaW5nbGVTaG90LCBSZWZQ
dHI8QXN5bmNTdGFja1RyYWNlPiBwYXJlbnQpOworICAgIHN0YXRpYyBSZWY8QXN5bmNTdGFja1Ry
YWNlPiBjcmVhdGUoUmVmPFNjcmlwdENhbGxTdGFjaz4mJiwgYm9vbCBzaW5nbGVTaG90LCBSZWZQ
dHI8QXN5bmNTdGFja1RyYWNlPiBwYXJlbnQpOwogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25z
dDsKICAgICBib29sIGlzTG9ja2VkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDM4
YTAwYTcxYjYxOGU3MTQ3ZTMxYWJhZmNmZjMzY2M0ZGEwZDBkNWQuLjkyYTVmMjA4YWY0Y2MyYjNm
NWE4NDQyYjgyODA1ZTcxZjI2YTBjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC04ODcsNyAr
ODg3LDkgQEAgc3RhdGljIFJlZlB0cjxVaW50OEFycmF5PiBmaWxsQnVmZmVyV2l0aENvbnRlbnRz
T2ZGaWxlKEZJTEUqIGZpbGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChmc2Vl
ayhmaWxlLCAwLCBTRUVLX1NFVCkgPT0gLTEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IFJlZlB0cjxVaW50OEFycmF5PiByZXN1bHQgPSBVaW50OEFycmF5OjpjcmVhdGUoYnVmZmVyQ2Fw
YWNpdHkpOworICAgIGF1dG8gcmVzdWx0ID0gVWludDhBcnJheTo6dHJ5Q3JlYXRlKGJ1ZmZlckNh
cGFjaXR5KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
c2l6ZV90IHJlYWRTaXplID0gZnJlYWQocmVzdWx0LT5kYXRhKCksIDEsIGJ1ZmZlckNhcGFjaXR5
LCBmaWxlKTsKICAgICBpZiAocmVhZFNpemUgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihidWZmZXJD
YXBhY2l0eSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggZGVlYTI1NDUwOTZjYjU5NmMxODFhZWM3Njg1
MTVmYzFjMWEwODA1MS4uZWIzNjdjMTRjZDE5MzAxYzUzZDY3ZjJhMGUwOTRkNjIzNDFmYzFjNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0xMTEs
NyArMTExLDcgQEAgY2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50
ZWQ8QXJyYXlCdWZmZXI+IHsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFy
cmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlCdWZmZXImKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNl
LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKIAotICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENs
YW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVh
dGVBcnJheUJ1ZmZlci4KKyAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVy
PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBl
bGVtZW50Qnl0ZVNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IGU1ZmQ0YmI3NDE2ZjNlMjUwZmY4YTY4
OTUxNTdlZmQ4NmY1ZGM0OTguLmVmMmU4MGY0ZWEwM2JkZTY0OTFjZjczMzNhMjdiN2M1NzdmMGVi
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBl
ZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNU
eXBlZEFycmF5Vmlldy5oCkBAIC0zNiwxMSArMzYsMTUgQEAgY2xhc3MgR2VuZXJpY1R5cGVkQXJy
YXlWaWV3IGZpbmFsIDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7CiAgICAgR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKIAogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdl
bmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUq
IGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNUeXBl
ZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1
bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBj
cmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlD
cmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5Vmlldz4gdHJ5Q3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1
bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3
PiB0cnlDcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpOwogICAgIAotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGlj
IFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gdHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwogICAgIAogICAgIHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKj4oYmFzZUFkZHJlc3MoKSk7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaAppbmRleCAxYjZkYTU2MWViN2NlYjEzMTJhYTY0OGNkMmU0OTNiNTgyYjliNmI1Li5lNjYw
Y2ZjZGQ0ODk0NTYyZDE3NGY2NDY1NzVkNTYyMmIxMjIzNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5s
aW5lcy5oCkBAIC0zOSwyNSArMzksNTMgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
OjpHZW5lcmljVHlwZWRBcnJheVZpZXcoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCitSZWY8R2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZSh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUobGVuZ3Ro
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQucmVsZWFz
ZU5vbk51bGwoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KK1JlZjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Y3JlYXRlKAorICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25l
ZCBsZW5ndGgpCit7CisgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUoYXJyYXksIGxlbmd0aCk7
CisgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VO
b25OdWxsKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CitSZWY8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNy
ZWF0ZSgKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgYXV0byByZXN1bHQgPSB0cnlDcmVhdGUoV1RG
TW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworICAgIFJFTEVBU0VfQVNTRVJUKHJl
c3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBBZGFwdG9yPgorUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUodW5zaWduZWQgbGVu
Z3RoKQogewogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShsZW5ndGgs
IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShidWZmZXIpLCAw
LCBsZW5ndGgpOworICAgIHJldHVybiB0cnlDcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5n
dGgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUoCitSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSgKICAgICBjb25zdCB0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQogewotICAgIFJlZlB0cjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc+IHJlc3VsdCA9IGNyZWF0ZShsZW5ndGgpOworICAgIFJlZlB0cjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc+IHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgpOworICAgIGlmICghcmVz
dWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBtZW1jcHkocmVzdWx0LT5kYXRhKCks
IGFycmF5LCBsZW5ndGggKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OmNyZWF0ZSgKK1JlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAogICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsK
ICAgICBBU1NFUlQoYnVmZmVyKTsKQEAgLTcwLDE0ICs5OCwyMyBAQCBSZWZQdHI8R2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNy
ZWF0ZSgKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj4+CitSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
PgogR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQobGVuZ3RoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHJldHVybiByZXN1
bHQucmVsZWFzZU5vbk51bGwoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KK1Jl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+CitHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQogewog
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0KICAgICAgICAgQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSkpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gY3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoKTsKKyAgICByZXR1cm4gdHJ5Q3Jl
YXRlKFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KQEAgLTk2LDcgKzEzMyw3IEBAIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAogICAgIEFycmF5QnVmZmVyKiBi
dWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwogICAgIEFTU0VSVChidWZmZXIpOwogICAg
IGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHM8QWRhcHRvcjo6VHlwZT4oKmJ1ZmZlciwgYnl0ZU9m
ZnNldCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICByZXR1cm4gY3JlYXRlKGJ1ZmZlciwgb2Zm
c2V0LCBsZW5ndGgpOworICAgIHJldHVybiB0cnlDcmVhdGUoYnVmZmVyLCBvZmZzZXQsIGxlbmd0
aCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggYjMwMzlhMjM2
YmM3ZDkyNjJiM2VlMGJjOWY0ZmFlZWY2M2I3MzU3Yy4uYzJkZTAwM2ZmNmI3MTBkZGU3ZGRiYmU4
MTk5NGE1ODI4ZTQ1NzJjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtMzAyLDcgKzMwMiw3IEBAIFJlZlB0cjxBcnJh
eUJ1ZmZlclZpZXc+IEpTQXJyYXlCdWZmZXJWaWV3Ojpwb3NzaWJseVNoYXJlZEltcGwoKQogICAg
IHN3aXRjaCAodHlwZSgpKSB7CiAjZGVmaW5lIEZBQ1RPUlkodHlwZSkgXAogICAgIGNhc2UgdHlw
ZSAjIyBBcnJheVR5cGU6IFwKLSAgICAgICAgcmV0dXJuIHR5cGUgIyMgQXJyYXk6OmNyZWF0ZShi
dWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybiB0eXBlICMjIEFycmF5
Ojp0cnlDcmVhdGUoYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwogICAgIEZPUl9FQUNIX1RZ
UEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhGQUNUT1JZKQogI3VuZGVmIEZBQ1RP
UlkKICAgICBjYXNlIERhdGFWaWV3VHlwZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5k
ZXggY2ExODg0NDc3MjgxMDBjNWFmMzdhNTdkNmQ3ZTE0YzZmODc5MmIwNS4uMmU1NmNlMTY1YjU5
NjRjYTRkZDA0ZjU3ZTQ3OTg2YjQ3NGRlNWM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKQEAgLTMxNCwxMyArMzE0LDEzIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnNldCgKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8dHlwZW5hbWUg
QWRhcHRvcjo6Vmlld1R5cGU+IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpwb3Nz
aWJseVNoYXJlZFR5cGVkSW1wbCgpCiB7Ci0gICAgcmV0dXJuIEFkYXB0b3I6OlZpZXdUeXBlOjpj
cmVhdGUocG9zc2libHlTaGFyZWRCdWZmZXIoKSwgYnl0ZU9mZnNldCgpLCBsZW5ndGgoKSk7Cisg
ICAgcmV0dXJuIEFkYXB0b3I6OlZpZXdUeXBlOjp0cnlDcmVhdGUocG9zc2libHlTaGFyZWRCdWZm
ZXIoKSwgYnl0ZU9mZnNldCgpLCBsZW5ndGgoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFk
YXB0b3I+CiBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+Ojp1bnNoYXJlZFR5cGVkSW1wbCgpCiB7Ci0gICAgcmV0dXJuIEFk
YXB0b3I6OlZpZXdUeXBlOjpjcmVhdGUodW5zaGFyZWRCdWZmZXIoKSwgYnl0ZU9mZnNldCgpLCBs
ZW5ndGgoKSk7CisgICAgcmV0dXJuIEFkYXB0b3I6OlZpZXdUeXBlOjp0cnlDcmVhdGUodW5zaGFy
ZWRCdWZmZXIoKSwgYnl0ZU9mZnNldCgpLCBsZW5ndGgoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TWVtb3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwCmlu
ZGV4IGE2ODVmMGVhM2U0ZmNmOTA1ZGIyY2MzNmQ1MDBhYTc1OWNiNzdiM2YuLjM4YmJlODk0ODQ3
YWY3OTJhOGIzMGVjMWUwMTY3MTAzNTkyYzI0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21NZW1vcnkuY3BwCkBAIC0yNjksMTIgKzI2OSwxMiBAQCBNZW1vcnk6Ok1lbW9yeSh2
b2lkKiBtZW1vcnksIFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgc2l6ZV90
IG1hcHBlZAogICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJNZW1vcnk6Ok1lbW9yeSBhbGxvY2F0
aW5nICIsICp0aGlzKTsKIH0KIAotUmVmUHRyPE1lbW9yeT4gTWVtb3J5OjpjcmVhdGUoKQorUmVm
PE1lbW9yeT4gTWVtb3J5OjpjcmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVt
b3J5KCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lbW9yeSgpKTsKIH0KIAotUmVmUHRy
PE1lbW9yeT4gTWVtb3J5OjpjcmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhp
bXVtLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVBy
ZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRv
UmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQs
IFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykKK1JlZlB0cjxNZW1vcnk+IE1lbW9y
eTo6dHJ5Q3JlYXRlKFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgV1RGOjpG
dW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgV1RG
OjpGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1v
cnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQp
PiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGluaXRpYWwpOwogICAgIFJF
TEVBU0VfQVNTRVJUKCFtYXhpbXVtIHx8IG1heGltdW0gPj0gaW5pdGlhbCk7IC8vIFRoaXMgc2hv
dWxkIGJlIGd1YXJhbnRlZWQgYnkgb3VyIGNhbGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21NZW1vcnkuaAppbmRleCBjMzY1ODBmNzllZjczM2Q4NjE4ZGNmZGIzZjY3MjE3Mzg1ZjJm
MjQxLi4wMDczN2ZjMWU2NWUyYjI4ZDBiMDA4YTllMzk1M2RjNzcyYzk5MTExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oCkBAIC01OSw4ICs1OSw4IEBAIGNsYXNzIE1l
bW9yeSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lbW9yeT4gewogICAgIGVudW0gU3luY1RyeVRvUmVj
bGFpbSB7IFN5bmNUcnlUb1JlY2xhaW1UYWcgfTsKICAgICBlbnVtIEdyb3dTdWNjZXNzIHsgR3Jv
d1N1Y2Nlc3NUYWcgfTsKIAotICAgIHN0YXRpYyBSZWZQdHI8TWVtb3J5PiBjcmVhdGUoKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPE1lbW9yeT4gY3JlYXRlKFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291
bnQgbWF4aW11bSwgV1RGOjpGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlN
ZW1vcnlQcmVzc3VyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5
bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFn
ZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spOworICAgIHN0YXRpYyBS
ZWY8TWVtb3J5PiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUmVmUHRyPE1lbW9yeT4gdHJ5Q3JlYXRl
KFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgV1RGOjpGdW5jdGlvbjx2b2lk
KE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgV1RGOjpGdW5jdGlvbjx2
b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVu
Y3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNj
ZXNzQ2FsbGJhY2spOwogCiAgICAgfk1lbW9yeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVRhYmxlLmNwcAppbmRleCAwNGFjMDY1MjU1OWE2ZDkzOGYwOWIwNmFlZTIwMWY5MTJl
OWU0YzY4Li5lYmI2MzI1MjBmYWYzMDgzZGY0YzZmMjcxMDAxZmQ1NTcxNDVlOGZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9p
ZCBUYWJsZTo6c2V0TGVuZ3RoKHVpbnQzMl90IGxlbmd0aCkKICAgICBBU1NFUlQobV9tYXNrID09
IFdURjo6bWFza0ZvclNpemUoYWxsb2NhdGVkTGVuZ3RoKGxlbmd0aCkpKTsKIH0KIAotUmVmUHRy
PFRhYmxlPiBUYWJsZTo6Y3JlYXRlKHVpbnQzMl90IGluaXRpYWwsIHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IG1heGltdW0pCitSZWZQdHI8VGFibGU+IFRhYmxlOjp0cnlDcmVhdGUodWludDMyX3Qg
aW5pdGlhbCwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSkKIHsKICAgICBpZiAoIWlz
VmFsaWRMZW5ndGgoaW5pdGlhbCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaAppbmRleCA0ZTE1ZTI5MDE0NGYyMzI4MzdjNmI4NTMw
YTI3ZDNmMzVhNzYwOWZiLi4yZjU0ODNjNjE4ZmE0NThiY2UwZWQ4NTBkYTU1OTRhOTFlNjJiOWUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaApAQCAtNDAsNyArNDAsNyBA
QCBjbGFzcyBJbnN0YW5jZTsKIAogY2xhc3MgVGFibGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8VGFibGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFRhYmxlPiBjcmVhdGUo
dWludDMyX3QgaW5pdGlhbCwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSk7CisgICAg
c3RhdGljIFJlZlB0cjxUYWJsZT4gdHJ5Q3JlYXRlKHVpbnQzMl90IGluaXRpYWwsIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IG1heGltdW0pOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgflRhYmxl
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4IGFiYzdmYWU0OGVmNzhiYWU3ZWYzNGNiZTRmMzU2YWJm
ODRlYTAzYTMuLmJkNzAzZmRiMjZiMjQzODM2MTNhNmI0Y2Y4MzliNzI0NjUwMTk4MDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5j
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUlu
c3RhbmNlLmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNX
ZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIGNvCiAg
ICAgICAgICAgICBhdXRvKiBqc01lbW9yeSA9IEpTV2ViQXNzZW1ibHlNZW1vcnk6OmNyZWF0ZShl
eGVjLCB2bSwgZ2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseU1lbW9yeVN0cnVjdHVyZSgpKTsKICAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7CiAKLSAg
ICAgICAgICAgIFJlZlB0cjxXYXNtOjpNZW1vcnk+IG1lbW9yeSA9IFdhc206Ok1lbW9yeTo6Y3Jl
YXRlKG1vZHVsZUluZm9ybWF0aW9uLm1lbW9yeS5pbml0aWFsKCksIG1vZHVsZUluZm9ybWF0aW9u
Lm1lbW9yeS5tYXhpbXVtKCksCisgICAgICAgICAgICBSZWZQdHI8V2FzbTo6TWVtb3J5PiBtZW1v
cnkgPSBXYXNtOjpNZW1vcnk6OnRyeUNyZWF0ZShtb2R1bGVJbmZvcm1hdGlvbi5tZW1vcnkuaW5p
dGlhbCgpLCBtb2R1bGVJbmZvcm1hdGlvbi5tZW1vcnkubWF4aW11bSgpLAogICAgICAgICAgICAg
ICAgIFsmdm1dIChXYXNtOjpNZW1vcnk6Ok5vdGlmeVByZXNzdXJlKSB7IHZtLmhlYXAuY29sbGVj
dEFzeW5jKENvbGxlY3Rpb25TY29wZTo6RnVsbCk7IH0sCiAgICAgICAgICAgICAgICAgWyZ2bV0g
KFdhc206Ok1lbW9yeTo6U3luY1RyeVRvUmVjbGFpbSkgeyB2bS5oZWFwLmNvbGxlY3RTeW5jKENv
bGxlY3Rpb25TY29wZTo6RnVsbCk7IH0sCiAgICAgICAgICAgICAgICAgWyZ2bSwganNNZW1vcnld
IChXYXNtOjpNZW1vcnk6Okdyb3dTdWNjZXNzLCBXYXNtOjpQYWdlQ291bnQgb2xkUGFnZUNvdW50
LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KSB7IGpzTWVtb3J5LT5ncm93U3VjY2Vzc0Nh
bGxiYWNrKHZtLCBvbGRQYWdlQ291bnQsIG5ld1BhZ2VDb3VudCk7IH0pOwpAQCAtMjk3LDcgKzI5
Nyw3IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVh
dGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgaWYgKCFqc0luc3RhbmNlLT5tZW1v
cnkoKSkgewogICAgICAgICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBhIGR1bW15IG1lbW9yeSwgc28g
dGhhdCB3YXNtIC0+IHdhc20gdGh1bmtzIGF2b2lkIGNoZWNraW5nIGZvciBhIG51bGxwdHIgTWVt
b3J5IHdoZW4gdHJ5aW5nIHRvIHNldCBwaW5uZWQgcmVnaXN0ZXJzLgogICAgICAgICBhdXRvKiBq
c01lbW9yeSA9IEpTV2ViQXNzZW1ibHlNZW1vcnk6OmNyZWF0ZShleGVjLCB2bSwgZ2xvYmFsT2Jq
ZWN0LT5XZWJBc3NlbWJseU1lbW9yeVN0cnVjdHVyZSgpKTsKLSAgICAgICAganNNZW1vcnktPmFk
b3B0KFdhc206Ok1lbW9yeTo6Y3JlYXRlKCkucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIGpz
TWVtb3J5LT5hZG9wdChXYXNtOjpNZW1vcnk6OmNyZWF0ZSgpKTsKICAgICAgICAganNJbnN0YW5j
ZS0+c2V0TWVtb3J5KHZtLCBqc01lbW9yeSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgbnVsbHB0cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcAppbmRleCA1NjU2MjUyNmNmZTcx
NzhiMjczOGU5MjY1ZDdiMjg1YTNlNDc2NDZmLi43YTZhNWYwMzk4Zjg2MGExMDEzOGI2YjNiZDU5
NTYyYzAwN2Q5ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5TWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcApAQCAtNjksNyArNjksNyBAQCBTdHJ1Y3R1cmUqIEpT
V2ViQXNzZW1ibHlNZW1vcnk6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYgogCiBKU1dlYkFzc2VtYmx5TWVtb3J5OjpKU1dlYkFzc2VtYmx5TWVtb3J5KFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCi0g
ICAgLCBtX21lbW9yeShXYXNtOjpNZW1vcnk6OmNyZWF0ZSgpLnJlbGVhc2VOb25OdWxsKCkpCisg
ICAgLCBtX21lbW9yeShXYXNtOjpNZW1vcnk6OmNyZWF0ZSgpKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5
Q29uc3RydWN0b3IuY3BwCmluZGV4IDRmMjYwMjQyZDZmYjU3MDdmNzVkZTcxZDEzNmQ2YTY5YjAx
MmFmZjguLjE0MDRlNjc4MmE5YjYyZmMwYTFiYzM2ZTdiNTQ0ODQ3ZTIyZTZkMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TWVtb3J5Q29uc3RydWN0b3IuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNZW1vcnkoRXhlY1N0YXRl
KiBleGVjCiAgICAgYXV0byoganNNZW1vcnkgPSBKU1dlYkFzc2VtYmx5TWVtb3J5OjpjcmVhdGUo
ZXhlYywgdm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1ibHlNZW1vcnlT
dHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAotICAgIFJlZlB0cjxXYXNtOjpNZW1vcnk+IG1lbW9yeSA9IFdhc206Ok1l
bW9yeTo6Y3JlYXRlKGluaXRpYWxQYWdlQ291bnQsIG1heGltdW1QYWdlQ291bnQsCisgICAgUmVm
UHRyPFdhc206Ok1lbW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUoaW5pdGlh
bFBhZ2VDb3VudCwgbWF4aW11bVBhZ2VDb3VudCwKICAgICAgICAgWyZ2bV0gKFdhc206Ok1lbW9y
eTo6Tm90aWZ5UHJlc3N1cmUpIHsgdm0uaGVhcC5jb2xsZWN0QXN5bmMoQ29sbGVjdGlvblNjb3Bl
OjpGdWxsKTsgfSwKICAgICAgICAgWyZ2bV0gKFdhc206Ok1lbW9yeTo6U3luY1RyeVRvUmVjbGFp
bSkgeyB2bS5oZWFwLmNvbGxlY3RTeW5jKENvbGxlY3Rpb25TY29wZTo6RnVsbCk7IH0sCiAgICAg
ICAgIFsmdm0sIGpzTWVtb3J5XSAoV2FzbTo6TWVtb3J5OjpHcm93U3VjY2VzcywgV2FzbTo6UGFn
ZUNvdW50IG9sZFBhZ2VDb3VudCwgV2FzbTo6UGFnZUNvdW50IG5ld1BhZ2VDb3VudCkgeyBqc01l
bW9yeS0+Z3Jvd1N1Y2Nlc3NDYWxsYmFjayh2bSwgb2xkUGFnZUNvdW50LCBuZXdQYWdlQ291bnQp
OyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRleCBlOGNhNThjYmY2MGFjNDZhYjIzMGVlM2RmMDRh
NWY0YTMwMjhmMmYyLi4zOWE2NmZhZjY2Mzg2ZjdjZGM4ZTYzZTY0NGFlMGZjZjcwOTgxMmExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVs
ZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQuY3BwCkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBXZWJBc3NlbWJseU1v
ZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBv
cnRPYmoKICAgICAgICAgaWYgKCEhbW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlvbiAm
JiAhaGFzVGFibGVJbXBvcnQpIHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtb2R1bGVJ
bmZvcm1hdGlvbi50YWJsZUluZm9ybWF0aW9uLmlzSW1wb3J0KCkpOwogICAgICAgICAgICAgLy8g
V2UgY3JlYXRlIGEgVGFibGUgd2hlbiBpdCdzIGEgVGFibGUgZGVmaW5pdGlvbi4KLSAgICAgICAg
ICAgIFJlZlB0cjxXYXNtOjpUYWJsZT4gd2FzbVRhYmxlID0gV2FzbTo6VGFibGU6OmNyZWF0ZSht
b2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0aW9uLmluaXRpYWwoKSwgbW9kdWxlSW5mb3Jt
YXRpb24udGFibGVJbmZvcm1hdGlvbi5tYXhpbXVtKCkpOworICAgICAgICAgICAgUmVmUHRyPFdh
c206OlRhYmxlPiB3YXNtVGFibGUgPSBXYXNtOjpUYWJsZTo6dHJ5Q3JlYXRlKG1vZHVsZUluZm9y
bWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaW5pdGlhbCgpLCBtb2R1bGVJbmZvcm1hdGlvbi50YWJs
ZUluZm9ybWF0aW9uLm1heGltdW0oKSk7CiAgICAgICAgICAgICBpZiAoIXdhc21UYWJsZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJy
b3IoZXhlYywgdm0sICJjb3VsZG4ndCBjcmVhdGUgVGFibGUiKSk7CiAgICAgICAgICAgICBKU1dl
YkFzc2VtYmx5VGFibGUqIHRhYmxlID0gSlNXZWJBc3NlbWJseVRhYmxlOjpjcmVhdGUoZXhlYywg
dm0sIGdsb2JhbE9iamVjdC0+V2ViQXNzZW1ibHlUYWJsZVN0cnVjdHVyZSgpLCB3YXNtVGFibGUu
cmVsZWFzZU5vbk51bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcAppbmRleCAwNzZjNzg3
OGY1ZGUyNmVjYjAxN2JmODU3ODhiMDAxOTdlYTMyYjE1Li41YTY5NTIwODUwZGUwMTkxYWUyNzNi
NDdmYjk5YjMzN2MxN2U4NmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTkwLDcg
KzkwLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNX
ZWJBc3NlbWJseVRhYmxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgfQogICAgIH0KIAotICAg
IFJlZlB0cjxXYXNtOjpUYWJsZT4gd2FzbVRhYmxlID0gV2FzbTo6VGFibGU6OmNyZWF0ZShpbml0
aWFsLCBtYXhpbXVtKTsKKyAgICBSZWZQdHI8V2FzbTo6VGFibGU+IHdhc21UYWJsZSA9IFdhc206
OlRhYmxlOjp0cnlDcmVhdGUoaW5pdGlhbCwgbWF4aW11bSk7CiAgICAgaWYgKCF3YXNtVGFibGUp
IHsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0
aHJvd1Njb3BlLAogICAgICAgICAgICAgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiY291bGRuJ3Qg
Y3JlYXRlIFRhYmxlIl9zKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25D
bGVhcktleS5jcHAKaW5kZXggNDc2ZDJlNWUzNzdhNTk0MDBhNjU1NDI2MjU4Nzc1OGE3ZWU5NzJm
Mi4uZDBmYjNlMDUzNmZlZGM5MjcxY2UxZGU5MzBhYjQ3Y2I1NzdhNDk5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vz
c2lvbkNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwCkBAIC0xOTQsNyArMTk0LDcg
QEAgUmVmUHRyPEFycmF5QnVmZmVyPiBDRE1TZXNzaW9uQ2xlYXJLZXk6OmNhY2hlZEtleUZvcktl
eUlEKGNvbnN0IFN0cmluZyYga2V5SWQpIGMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBhdXRvIGtleURhdGEgPSBtX2NhY2hlZEtleXMuZ2V0KGtleUlkKTsKLSAgICBSZWZQdHI8VWlu
dDhBcnJheT4ga2V5RGF0YUFycmF5ID0gVWludDhBcnJheTo6Y3JlYXRlKGtleURhdGEuZGF0YSgp
LCBrZXlEYXRhLnNpemUoKSk7CisgICAgYXV0byBrZXlEYXRhQXJyYXkgPSBVaW50OEFycmF5Ojpj
cmVhdGUoa2V5RGF0YS5kYXRhKCksIGtleURhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4ga2V5RGF0
YUFycmF5LT51bnNoYXJlZEJ1ZmZlcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KaW5k
ZXggNzllYzg5MWQ4MTNjZDkxYjcwODcxOWY3NDJkOTY5YTdmZjIxZjcwOS4uNjJiMzE5MmEyZjYz
OGNjOTRkOTMyYWU4YjVjZmJhNDQwYWMxZTc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQpA
QCAtMzA4LDcgKzMwOCw3IEBAIHN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aERpY3Rpb25hcnlJ
bkNvbnRleHQoTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5LCBKU0NvbnRlCiAgICAgICAgIGlmICgh
dmFsdWUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIG5hbWUgPSBPcGFx
dWVKU1N0cmluZzo6Y3JlYXRlKGtleSk7CisgICAgICAgIGF1dG8gbmFtZSA9IE9wYXF1ZUpTU3Ry
aW5nOjp0cnlDcmVhdGUoa2V5KTsKICAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShbY29udGV4
dCBKU0dsb2JhbENvbnRleHRSZWZdLCByZXN1bHRPYmplY3QsIG5hbWUuZ2V0KCksIFt2YWx1ZSBK
U1ZhbHVlUmVmXSwgMCwgJmV4Y2VwdGlvbik7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAg
ICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlci5jcHAKaW5kZXggOWYwYTI1ZmQzZmJjOGIzMmRmOTg2NDExZjRhMTU1Y2ZiNjE5
NDk0OS4uNTZhMTNjYWVhYmQ0ZTNmZDRiOGJjM2FlNmY3YTY4MWUzMmRkMjg0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKQEAgLTY3LDcg
KzY3LDcgQEAgQXVkaW9CdWZmZXI6OkF1ZGlvQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5l
bHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQKICAgICBtX2NoYW5uZWxzLnJlc2VydmVD
YXBhY2l0eShudW1iZXJPZkNoYW5uZWxzKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1iZXJPZkNoYW5uZWxzOyArK2kpIHsKLSAgICAgICAgYXV0byBjaGFubmVsRGF0YUFycmF5
ID0gRmxvYXQzMkFycmF5OjpjcmVhdGUobV9sZW5ndGgpOworICAgICAgICBhdXRvIGNoYW5uZWxE
YXRhQXJyYXkgPSBGbG9hdDMyQXJyYXk6OnRyeUNyZWF0ZShtX2xlbmd0aCk7CiAgICAgICAgIGlm
ICghY2hhbm5lbERhdGFBcnJheSkgewogICAgICAgICAgICAgaW52YWxpZGF0ZSgpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC04Niw3ICs4Niw3IEBAIEF1ZGlvQnVmZmVyOjpBdWRpb0J1ZmZlcihB
dWRpb0J1cyYgYnVzKQogICAgIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMgPSBidXMubnVtYmVy
T2ZDaGFubmVscygpOwogICAgIG1fY2hhbm5lbHMucmVzZXJ2ZUNhcGFjaXR5KG51bWJlck9mQ2hh
bm5lbHMpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyAr
K2kpIHsKLSAgICAgICAgYXV0byBjaGFubmVsRGF0YUFycmF5ID0gRmxvYXQzMkFycmF5OjpjcmVh
dGUobV9sZW5ndGgpOworICAgICAgICBhdXRvIGNoYW5uZWxEYXRhQXJyYXkgPSBGbG9hdDMyQXJy
YXk6OnRyeUNyZWF0ZShtX2xlbmd0aCk7CiAgICAgICAgIGlmICghY2hhbm5lbERhdGFBcnJheSkg
ewogICAgICAgICAgICAgaW52YWxpZGF0ZSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTUs
OSArMTE1LDcgQEAgRXhjZXB0aW9uT3I8UmVmPEZsb2F0MzJBcnJheT4+IEF1ZGlvQnVmZmVyOjpn
ZXRDaGFubmVsRGF0YSh1bnNpZ25lZCBjaGFubmVsSW5kZXgKICAgICBpZiAoY2hhbm5lbEluZGV4
ID49IG1fY2hhbm5lbHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4
RXJyb3IgfTsKICAgICBhdXRvJiBjaGFubmVsRGF0YSA9ICptX2NoYW5uZWxzW2NoYW5uZWxJbmRl
eF07Ci0gICAgYXV0byBhcnJheSA9IEZsb2F0MzJBcnJheTo6Y3JlYXRlKGNoYW5uZWxEYXRhLnVu
c2hhcmVkQnVmZmVyKCksIGNoYW5uZWxEYXRhLmJ5dGVPZmZzZXQoKSwgY2hhbm5lbERhdGEubGVu
Z3RoKCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKGFycmF5KTsKLSAgICByZXR1cm4gYXJyYXkucmVs
ZWFzZU5vbk51bGwoKTsKKyAgICByZXR1cm4gRmxvYXQzMkFycmF5OjpjcmVhdGUoY2hhbm5lbERh
dGEudW5zaGFyZWRCdWZmZXIoKSwgY2hhbm5lbERhdGEuYnl0ZU9mZnNldCgpLCBjaGFubmVsRGF0
YS5sZW5ndGgoKSk7CiB9CiAKIEZsb2F0MzJBcnJheSogQXVkaW9CdWZmZXI6OmNoYW5uZWxEYXRh
KHVuc2lnbmVkIGNoYW5uZWxJbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VidnIvVlJFeWVQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
dnIvVlJFeWVQYXJhbWV0ZXJzLmNwcAppbmRleCAyNWZiOGU4YjdkNTU1ZDdhZDBkMzQ5MTc0OTk3
ZGIzMjk3MGNjOWE5Li4wMTI2NGJkODY5MjRmY2ZjY2M4YzJjNWUzYTc4ZjcyMDYzOTExNmI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRXllUGFyYW1ldGVycy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkV5ZVBhcmFtZXRlcnMuY3Bw
CkBAIC0zOSwxMiArMzksMTEgQEAgVlJFeWVQYXJhbWV0ZXJzOjpWUkV5ZVBhcmFtZXRlcnMoY29u
c3QgRmxvYXRQb2ludDNEJiBvZmZzZXQsIGNvbnN0IFZSUGxhdGZvcm1EaXMKIFJlZjxGbG9hdDMy
QXJyYXk+IFZSRXllUGFyYW1ldGVyczo6b2Zmc2V0KCkgY29uc3QKIHsKICAgICBhdXRvIG9mZnNl
dCA9IEZsb2F0MzJBcnJheTo6Y3JlYXRlKDMpOwotICAgIFJFTEVBU0VfQVNTRVJUKG9mZnNldCk7
CiAgICAgZmxvYXQqIG9mZnNldERhdGEgPSBvZmZzZXQtPmRhdGEoKTsKICAgICBvZmZzZXREYXRh
WzBdID0gbV9vZmZzZXQueCgpOwogICAgIG9mZnNldERhdGFbMV0gPSBtX29mZnNldC55KCk7CiAg
ICAgb2Zmc2V0RGF0YVsyXSA9IG1fb2Zmc2V0LnooKTsKLSAgICByZXR1cm4gb2Zmc2V0LnJlbGVh
c2VOb25OdWxsKCk7CisgICAgcmV0dXJuIG9mZnNldDsKIH0KIAogY29uc3QgVlJGaWVsZE9mVmll
dyYgVlJFeWVQYXJhbWV0ZXJzOjpmaWVsZE9mVmlldygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRnJhbWVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VidnIvVlJGcmFtZURhdGEuY3BwCmluZGV4IDY1YzNkYmFkNjhkYzJlODRhMTM2
MWM2NjBhMWY3ZWVlODk4YzFmYmQuLmIyMTViNTVmYzZjMDMxYjA3ZDY5YzcyZDVmYTBkOWU1ZWJh
NzFjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJGcmFtZURh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJGcmFtZURhdGEuY3Bw
CkBAIC0zOSw3ICszOSw3IEBAIFZSRnJhbWVEYXRhOjpWUkZyYW1lRGF0YSgpCiBzdGF0aWMgUmVm
PEZsb2F0MzJBcnJheT4gbWF0cml4VG9BcnJheShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bWF0cml4KQogewogICAgIGF1dG8gY29sdW1uTWFqb3JNYXRyaXggPSBtYXRyaXgudG9Db2x1bW5N
YWpvckZsb2F0QXJyYXkoKTsKLSAgICByZXR1cm4gRmxvYXQzMkFycmF5OjpjcmVhdGUoY29sdW1u
TWFqb3JNYXRyaXguZGF0YSgpLCAxNikucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1cm4gRmxv
YXQzMkFycmF5OjpjcmVhdGUoY29sdW1uTWFqb3JNYXRyaXguZGF0YSgpLCAxNik7CiB9CiAKIFJl
ZjxGbG9hdDMyQXJyYXk+IFZSRnJhbWVEYXRhOjpsZWZ0UHJvamVjdGlvbk1hdHJpeCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSUG9zZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSUG9zZS5jcHAKaW5kZXggOGUzYmFmNWEyZjA4
NDUwOTU2NDhiODFkYTI5ZGRiZGU5ZmVmNjQ0Yi4uMTY4NmI5YTVhYjdkZjdjMzdhZTNjZTIyMzU3
MGQwNDliNTBlOTc5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9W
UlBvc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJQb3NlLmNwcApA
QCAtMzIsNyArMzIsNyBAQCBzdGF0aWMgUmVmUHRyPEZsb2F0MzJBcnJheT4gb3B0aW9uYWxGbG9h
dDNUb0pTQ0FycmF5KGNvbnN0IHN0ZDo6b3B0aW9uYWw8VlJQbGF0ZgogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gRmxvYXQzMkFycmF5OjpjcmVh
dGUoZGF0YS0+ZGF0YSwgMykucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1cm4gRmxvYXQzMkFy
cmF5OjpjcmVhdGUoZGF0YS0+ZGF0YSwgMyk7CiB9CiAKIFJlZlB0cjxGbG9hdDMyQXJyYXk+IFZS
UG9zZTo6cG9zaXRpb24oKSBjb25zdApAQCAtNDIsNyArNDIsNyBAQCBSZWZQdHI8RmxvYXQzMkFy
cmF5PiBWUlBvc2U6OnBvc2l0aW9uKCkgY29uc3QKIAogICAgIGF1dG8mIHBvc2l0aW9uID0gKm1f
dHJhY2tpbmdJbmZvLnBvc2l0aW9uOwogICAgIGZsb2F0IHBvc2l0aW9uRGF0YVszXSA9IHsgcG9z
aXRpb24ueCgpLCBwb3NpdGlvbi55KCksIHBvc2l0aW9uLnooKSB9OwotICAgIHJldHVybiBGbG9h
dDMyQXJyYXk6OmNyZWF0ZShwb3NpdGlvbkRhdGEsIDMpLnJlbGVhc2VOb25OdWxsKCk7CisgICAg
cmV0dXJuIEZsb2F0MzJBcnJheTo6Y3JlYXRlKHBvc2l0aW9uRGF0YSwgMyk7CiB9CiAKIFJlZlB0
cjxGbG9hdDMyQXJyYXk+IFZSUG9zZTo6bGluZWFyVmVsb2NpdHkoKSBjb25zdApAQCAtNjIsNyAr
NjIsNyBAQCBSZWZQdHI8RmxvYXQzMkFycmF5PiBWUlBvc2U6Om9yaWVudGF0aW9uKCkgY29uc3QK
IAogICAgIGF1dG8mIG9yaWVudGF0aW9uID0gKm1fdHJhY2tpbmdJbmZvLm9yaWVudGF0aW9uOwog
ICAgIGZsb2F0IG9yaWVudGF0aW9uRGF0YVs0XSA9IHsgb3JpZW50YXRpb24ueCwgb3JpZW50YXRp
b24ueSwgb3JpZW50YXRpb24ueiwgb3JpZW50YXRpb24udyB9OwotICAgIHJldHVybiBGbG9hdDMy
QXJyYXk6OmNyZWF0ZShvcmllbnRhdGlvbkRhdGEsIDQpLnJlbGVhc2VOb25OdWxsKCk7CisgICAg
cmV0dXJuIEZsb2F0MzJBcnJheTo6Y3JlYXRlKG9yaWVudGF0aW9uRGF0YSwgNCk7CiB9CiAKIFJl
ZlB0cjxGbG9hdDMyQXJyYXk+IFZSUG9zZTo6YW5ndWxhclZlbG9jaXR5KCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJTdGFnZVBhcmFtZXRlcnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUlN0YWdlUGFyYW1ldGVycy5jcHAKaW5k
ZXggMmRhMDc0M2I0NGM3ZWM4ZjgzMDkyNTliZjRkYTI1ODdhZGYyODZlMi4uYjZlNTczMjZjNTI0
YTU3Njk3M2JjM2I2YTdjODY0ZDgxODgyMjU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ2ci9WUlN0YWdlUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ2ci9WUlN0YWdlUGFyYW1ldGVycy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgVlJT
dGFnZVBhcmFtZXRlcnM6OlZSU3RhZ2VQYXJhbWV0ZXJzKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBzaXR0aW5nVG9TdGFuZGkKIFJlZjxGbG9hdDMyQXJyYXk+IFZSU3RhZ2VQYXJhbWV0ZXJz
OjpzaXR0aW5nVG9TdGFuZGluZ1RyYW5zZm9ybSgpIGNvbnN0CiB7CiAgICAgYXV0byBjb2x1bW5N
YWpvck1hdHJpeCA9IG1fc2l0dGluZ1RvU3RhbmRpbmdUcmFuc2Zvcm0udG9Db2x1bW5NYWpvckZs
b2F0QXJyYXkoKTsKLSAgICByZXR1cm4gRmxvYXQzMkFycmF5OjpjcmVhdGUoY29sdW1uTWFqb3JN
YXRyaXguZGF0YSgpLCAxNikucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1cm4gRmxvYXQzMkFy
cmF5OjpjcmVhdGUoY29sdW1uTWFqb3JNYXRyaXguZGF0YSgpLCAxNik7CiB9CiAKIGZsb2F0IFZS
U3RhZ2VQYXJhbWV0ZXJzOjpzaXplWCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgKaW5k
ZXggNjRjZWRjMTY4ZmQwZTJjYTAwNDg0MDAwMzZmODM0MTBiYmZmZDIxYi4uNDg0YzhkODFlN2Jj
NjFhYWUzOTZiYWM1OGNhNmMyMzRjYmZkOTljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaApA
QCAtOTksOCArOTksNyBAQCBpbmxpbmUgYm9vbCBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9s
bGVyOjplbnF1ZXVlKFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiYmCiAgICAgfQogICAgIGF1dG8g
bGVuZ3RoID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7CiAgICAgYXV0byBjaHVuayA9IEpTQzo6VWlu
dDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgMCwgbGVuZ3RoKTsKLSAgICBBU1NFUlQo
Y2h1bmspOwotICAgIGVucXVldWUoc3RhdGUsIHRvSlMoJnN0YXRlLCAmZ2xvYmFsT2JqZWN0LCBj
aHVuay5nZXQoKSkpOworICAgIGVucXVldWUoc3RhdGUsIHRvSlMoJnN0YXRlLCAmZ2xvYmFsT2Jq
ZWN0LCBjaHVuay5wdHIoKSkpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBiYTk0NWNkNzcxZTRhZjllODVmNjdmODU3MjA0
ODYyOTU3NDRjNjA5Li5hZjdhYjNhNmM3ZTRiMjdjYzM3MmQ2ZGYyMGFiNjEyYTQ3MTU2NTM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKQEAgLTIwOTYsMzEgKzIwOTYsMzEgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIg
OiBDbG9uZUJhc2UgewogICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gZ2V0SlNWYWx1ZShE
YXRhVmlldzo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgp
LmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIEludDhBcnJh
eVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2Jh
bE9iamVjdCwgSW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZz
ZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyht
X2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBJbnQ4QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5
QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgY2FzZSBVaW50OEFycmF5VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZm
ZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBVaW50OEFycmF5OjpjcmVhdGUo
V1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAg
ICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBVaW50
OEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0
aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgVWludDhD
bGFtcGVkQXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhl
YywgbV9nbG9iYWxPYmplY3QsIFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJh
eUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAgYXJyYXlC
dWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBVaW50OENsYW1wZWRBcnJh
eTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdl
dCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIEludDE2QXJyYXlU
YWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxP
YmplY3QsIEludDE2QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNl
dCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1f
ZXhlYywgbV9nbG9iYWxPYmplY3QsIEludDE2QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5
QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgY2FzZSBVaW50MTZBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVm
ZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDE2QXJyYXk6OmNyZWF0
ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAg
ICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVp
bnQxNkFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxl
bmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgSW50
MzJBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBt
X2dsb2JhbE9iamVjdCwgSW50MzJBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBi
eXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9
IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgSW50MzJBcnJheTo6dHJ5Q3JlYXRlKFdURk1v
dmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFVpbnQzMkFycmF5VGFnOgotICAgICAgICAgICAg
YXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBVaW50MzJBcnJh
eTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgp
KTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9i
amVjdCwgVWludDMyQXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9m
ZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
Y2FzZSBGbG9hdDMyQXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pT
KG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIEZsb2F0MzJBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJy
YXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5
QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgRmxvYXQzMkFycmF5Ojp0
cnlDcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgRmxvYXQ2NEFycmF5VGFn
OgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2Jq
ZWN0LCBGbG9hdDY0QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNl
dCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1f
ZXhlYywgbV9nbG9iYWxPYmplY3QsIEZsb2F0NjRBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJy
YXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3Bw
CmluZGV4IDA4MDIwOTk1NDRjODRkM2RiMTgzNzA2M2I0OTdlNTlkYmRmYjZmZTUuLjNkODAwMmM5
YTk1NDlhMzJiMTE4YTBmYzRlMjliY2Q5YzdhYmQyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKQEAgLTYyOSw3ICs2Mjks
NyBAQCBhdXRvIENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkgY29uc3QgLT4gS2V5QWxnb3JpdGht
CiAgICAgICAgIENyeXB0b1JzYUhhc2hlZEtleUFsZ29yaXRobSByZXN1bHQ7CiAgICAgICAgIHJl
c3VsdC5uYW1lID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNpbmdsZXRvbigpLm5hbWUoYWxn
b3JpdGhtSWRlbnRpZmllcigpKTsKICAgICAgICAgcmVzdWx0Lm1vZHVsdXNMZW5ndGggPSBtb2R1
bHVzTGVuZ3RoOwotICAgICAgICByZXN1bHQucHVibGljRXhwb25lbnQgPSBVaW50OEFycmF5Ojpj
cmVhdGUocHVibGljRXhwb25lbnQuZGF0YSgpLCBwdWJsaWNFeHBvbmVudC5zaXplKCkpOworICAg
ICAgICByZXN1bHQucHVibGljRXhwb25lbnQgPSBVaW50OEFycmF5Ojp0cnlDcmVhdGUocHVibGlj
RXhwb25lbnQuZGF0YSgpLCBwdWJsaWNFeHBvbmVudC5zaXplKCkpOwogICAgICAgICByZXN1bHQu
aGFzaC5uYW1lID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNpbmdsZXRvbigpLm5hbWUobV9o
YXNoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC02MzcsNyArNjM3LDcgQEAg
YXV0byBDcnlwdG9LZXlSU0E6OmFsZ29yaXRobSgpIGNvbnN0IC0+IEtleUFsZ29yaXRobQogICAg
IENyeXB0b1JzYUtleUFsZ29yaXRobSByZXN1bHQ7CiAgICAgcmVzdWx0Lm5hbWUgPSBDcnlwdG9B
bGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShhbGdvcml0aG1JZGVudGlmaWVyKCkp
OwogICAgIHJlc3VsdC5tb2R1bHVzTGVuZ3RoID0gbW9kdWx1c0xlbmd0aDsKLSAgICByZXN1bHQu
cHVibGljRXhwb25lbnQgPSBVaW50OEFycmF5OjpjcmVhdGUocHVibGljRXhwb25lbnQuZGF0YSgp
LCBwdWJsaWNFeHBvbmVudC5zaXplKCkpOworICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVp
bnQ4QXJyYXk6OnRyeUNyZWF0ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50
LnNpemUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwCmluZGV4IGU4ZWI4NGVhMGU1MjQ2MGUyZDU3OGE2
Yjg3ODlkOTdmM2UyMDQxNWEuLjk0ZmMxYTc2MjkzMzJmN2U4MWQwMTFmOTBmMTUzNjA0ZDYyZjYw
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAK
QEAgLTIyMiw3ICsyMjIsNyBAQCBhdXRvIENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkgY29uc3Qg
LT4gS2V5QWxnb3JpdGhtCiAgICAgICAgIENyeXB0b1JzYUtleUFsZ29yaXRobSByZXN1bHQ7CiAg
ICAgICAgIHJlc3VsdC5uYW1lID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNpbmdsZXRvbigp
Lm5hbWUoYWxnb3JpdGhtSWRlbnRpZmllcigpKTsKICAgICAgICAgcmVzdWx0Lm1vZHVsdXNMZW5n
dGggPSAwOwotICAgICAgICByZXN1bHQucHVibGljRXhwb25lbnQgPSBVaW50OEFycmF5OjpjcmVh
dGUoMCk7CisgICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OnRyeUNy
ZWF0ZSgwKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTIzMiw3ICsyMzIs
NyBAQCBhdXRvIENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkgY29uc3QgLT4gS2V5QWxnb3JpdGht
CiAgICAgICAgIENyeXB0b1JzYUhhc2hlZEtleUFsZ29yaXRobSByZXN1bHQ7CiAgICAgICAgIHJl
c3VsdC5uYW1lID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNpbmdsZXRvbigpLm5hbWUoYWxn
b3JpdGhtSWRlbnRpZmllcigpKTsKICAgICAgICAgcmVzdWx0Lm1vZHVsdXNMZW5ndGggPSBtb2R1
bHVzTGVuZ3RoOwotICAgICAgICByZXN1bHQucHVibGljRXhwb25lbnQgPSBVaW50OEFycmF5Ojpj
cmVhdGUocHVibGljRXhwb25lbnQuZGF0YSgpLCBwdWJsaWNFeHBvbmVudC5zaXplKCkpOworICAg
ICAgICByZXN1bHQucHVibGljRXhwb25lbnQgPSBVaW50OEFycmF5Ojp0cnlDcmVhdGUocHVibGlj
RXhwb25lbnQuZGF0YSgpLCBwdWJsaWNFeHBvbmVudC5zaXplKCkpOwogICAgICAgICByZXN1bHQu
aGFzaC5uYW1lID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNpbmdsZXRvbigpLm5hbWUobV9o
YXNoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0yNDAsNyArMjQwLDcgQEAg
YXV0byBDcnlwdG9LZXlSU0E6OmFsZ29yaXRobSgpIGNvbnN0IC0+IEtleUFsZ29yaXRobQogICAg
IENyeXB0b1JzYUtleUFsZ29yaXRobSByZXN1bHQ7CiAgICAgcmVzdWx0Lm5hbWUgPSBDcnlwdG9B
bGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShhbGdvcml0aG1JZGVudGlmaWVyKCkp
OwogICAgIHJlc3VsdC5tb2R1bHVzTGVuZ3RoID0gbW9kdWx1c0xlbmd0aDsKLSAgICByZXN1bHQu
cHVibGljRXhwb25lbnQgPSBVaW50OEFycmF5OjpjcmVhdGUocHVibGljRXhwb25lbnQuZGF0YSgp
LCBwdWJsaWNFeHBvbmVudC5zaXplKCkpOworICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVp
bnQ4QXJyYXk6OnRyeUNyZWF0ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50
LnNpemUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01N
YXRyaXhSZWFkT25seS5jcHAKaW5kZXggZGVhYWRmYTdmODExZTc0OGYzZWIxMzcxNGI5NWU3MDc2
ZDhiMmM0ZS4uNzMxNzU0ZTQ2NmYzNzM2ZTljYzQ3ZDczMDQ3NTI1N2Y3ZWE1YmZlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuY3BwCkBAIC0zNDUsNyArMzQ1LDcgQEAg
UmVmPERPTVBvaW50PiBET01NYXRyaXhSZWFkT25seTo6dHJhbnNmb3JtUG9pbnQoRE9NUG9pbnRJ
bml0JiYgcG9pbnRJbml0KQogCiBFeGNlcHRpb25PcjxSZWY8RmxvYXQzMkFycmF5Pj4gRE9NTWF0
cml4UmVhZE9ubHk6OnRvRmxvYXQzMkFycmF5KCkgY29uc3QKIHsKLSAgICBhdXRvIGFycmF5MzIg
PSBGbG9hdDMyQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoMTYpOworICAgIGF1dG8gYXJyYXkz
MiA9IEZsb2F0MzJBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCgxNik7CiAgICAgaWYgKCFh
cnJheTMyKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yLCAiT3V0IG9m
IG1lbW9yeSJfcyB9OwogCkBAIC0zNzEsNyArMzcxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPEZsb2F0
MzJBcnJheT4+IERPTU1hdHJpeFJlYWRPbmx5Ojp0b0Zsb2F0MzJBcnJheSgpIGNvbnN0CiAKIEV4
Y2VwdGlvbk9yPFJlZjxGbG9hdDY0QXJyYXk+PiBET01NYXRyaXhSZWFkT25seTo6dG9GbG9hdDY0
QXJyYXkoKSBjb25zdAogewotICAgIGF1dG8gYXJyYXk2NCA9IEZsb2F0NjRBcnJheTo6Y3JlYXRl
VW5pbml0aWFsaXplZCgxNik7CisgICAgYXV0byBhcnJheTY0ID0gRmxvYXQ2NEFycmF5Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKDE2KTsKICAgICBpZiAoIWFycmF5NjQpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJPdXQgb2YgbWVtb3J5Il9zIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZhY2UuY3BwCmluZGV4IDJlYjQxYzljMTE0NDRkNjFiZGRmM2FiMTQyYjk1YmUzODQx
OTVjNzguLmEyNGE1MzYyNjg5MGE4YTkxZDExNzM4Y2E5YTU4YTQ1MzcxYmI4YjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRGYWNlLmNwcApAQCAtNzgsNyArNzgsNyBAQCBFeGNlcHRpb25PcjxSZWY8Rm9udEZh
Y2U+PiBGb250RmFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBm
YQogICAgICAgICBbJl0gKFJlZlB0cjxBcnJheUJ1ZmZlcj4mIGFycmF5QnVmZmVyKSAtPiBFeGNl
cHRpb25Pcjx2b2lkPiB7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYXJyYXlC
dWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICAgICAgICAgIGF1dG8gYXJyYXlCdWZmZXJWaWV3ID0g
SlNDOjpVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIDAsIGJ5dGVMZW5n
dGgpOwotICAgICAgICAgICAgZGF0YVJlcXVpcmVzQXN5bmNocm9ub3VzTG9hZGluZyA9IHBvcHVs
YXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIocmVzdWx0LT5iYWNraW5nKCksIGFycmF5QnVmZmVy
Vmlldy5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgIGRhdGFSZXF1aXJlc0FzeW5jaHJv
bm91c0xvYWRpbmcgPSBwb3B1bGF0ZUZvbnRGYWNlV2l0aEFycmF5QnVmZmVyKHJlc3VsdC0+YmFj
a2luZygpLCBXVEZNb3ZlKGFycmF5QnVmZmVyVmlldykpOwogICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAgICAgfQogICAgICk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4
dEVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmNwcAppbmRleCA5
ZWViNzc5NDVhZTkyMTRmZGI4MDBjMGJlMGNhMzkwNTg1MzU0ZmI1Li5iMDQ5Y2MxZTM0YTcyYmI5
MjJmNDEzZDNiNGQyZmMyNGYxMTg0OTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2Rlci5jcHAK
QEAgLTQwLDcgKzQwLDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IFRleHRFbmNvZGVyOjplbmNvZGUo
U3RyaW5nJiYgaW5wdXQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVl
ZCB0byBhbGxvY2F0ZSBhIENTdHJpbmcgdG8gZW5jb2RlIGludG8gYSBVaW50OEFycmF5LgogICAg
IENTdHJpbmcgdXRmOCA9IGlucHV0LnV0ZjgoKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3Jl
YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5s
ZW5ndGgoKSk7CisgICAgcmV0dXJuIFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPih1dGY4LmRhdGEoKSksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKaW5kZXggOWZmYzQwOGVmNjAyNWQyZWUyYzU2MTMz
Y2I3NWVlZThiODYwOWVlOS4uM2IyYTIzNjYzZDEwNzczMWQzMjcxYjY0MzgxMzQ1MWExMzE4NzU2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcApAQCAtOTksMTUgKzk5LDEzIEBAIEltYWdl
RGF0YTo6SW1hZ2VEYXRhKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgOiBtX3NpemUoc2l6ZSkK
ICAgICAsIG1fZGF0YShVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgoc2l6
ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSkpCiB7Ci0gICAgQVNTRVJUKG1fZGF0YSk7CiB9CiAK
IEltYWdlRGF0YTo6SW1hZ2VEYXRhKGNvbnN0IEludFNpemUmIHNpemUsIFJlZjxVaW50OENsYW1w
ZWRBcnJheT4mJiBieXRlQXJyYXkpCiAgICAgOiBtX3NpemUoc2l6ZSkKICAgICAsIG1fZGF0YShX
VEZNb3ZlKGJ5dGVBcnJheSkpCiB7Ci0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW1fZGF0YSB8fCAoc2l6ZS5hcmVhKCkgKiA0KS51bnNh
ZmVHZXQoKSA8PSBtX2RhdGEtPmxlbmd0aCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKChzaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IG1fZGF0
YS0+bGVuZ3RoKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAppbmRleCA5OGIxZjEw
OGY5NmYxZWJhZjg3YzBhZGY0Nzg3ZjY1YmU0ZDZjYTc2Li5hMGZmYTI5ODcxOGJmMjc3ZThhMTZi
NjEzZTU3NThhNzg3MmMyMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKQEAgLTM0LDI1ICsz
NCwyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElt
YWdlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdlRGF0YT4geworY2xhc3MgSW1hZ2VEYXRh
IDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VEYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4
Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGUodW5zaWduZWQgc3csIHVuc2lnbmVkIHNo
KTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKGNvbnN0IEludFNpemUmKTsK
LSAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBSZWY8
VWludDhDbGFtcGVkQXJyYXk+JiYpOwotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWZQdHI8SW1h
Z2VEYXRhPj4gY3JlYXRlKFJlZjxVaW50OENsYW1wZWRBcnJheT4mJiwgdW5zaWduZWQgc3csIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhj
ZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29u
c3QgSW50U2l6ZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRh
PiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIFJlZjxVaW50OENsYW1wZWRBcnJheT4mJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+PiBjcmVh
dGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmLCB1bnNpZ25lZCBzdywgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gc2gpOwogCiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
OyB9CiAgICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zaXplLndpZHRoKCk7IH0KICAg
ICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zaXplLmhlaWdodCgpOyB9CiAKLSAgICBV
aW50OENsYW1wZWRBcnJheSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQor
ICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnB0cigp
OyB9CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW1hZ2VEYXRhKGNvbnN0IEludFNpemUmKTsK
ICAgICBJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYsIFJlZjxVaW50OENsYW1wZWRBcnJheT4mJik7
CiAKICAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IG1f
ZGF0YTsKKyAgICBSZWY8VWludDhDbGFtcGVkQXJyYXk+IG1fZGF0YTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggN2MwNDU1NTA4ZDU0NGJhNThmZTRlNzQzZWE1
YjJmYzJhMDUzMjkzMi4uMDc2NjgzNTA3ZTg5MmQ5MzllMDMzNTM1ZmViZDA4ZGFjNzBmMGI3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5jcHAKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBjb25zdCBBcnJheUJ1ZmZlclZpZXcmCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHNsaWNlID0gVWludDhBcnJheTo6Y3Jl
YXRlKGRhdGEucG9zc2libHlTaGFyZWRCdWZmZXIoKSwgZGF0YS5ieXRlT2Zmc2V0KCkgKyBjaGVj
a2VkQnl0ZVNyY09mZnNldC51bnNhZmVHZXQoKSwgY2hlY2tlZEJ5dGVMZW5ndGgudW5zYWZlR2V0
KCkpOworICAgIGF1dG8gc2xpY2UgPSBVaW50OEFycmF5Ojp0cnlDcmVhdGUoZGF0YS5wb3NzaWJs
eVNoYXJlZEJ1ZmZlcigpLCBkYXRhLmJ5dGVPZmZzZXQoKSArIGNoZWNrZWRCeXRlU3JjT2Zmc2V0
LnVuc2FmZUdldCgpLCBjaGVja2VkQnl0ZUxlbmd0aC51bnNhZmVHZXQoKSk7CiAgICAgaWYgKCFz
bGljZSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6T1VU
X09GX01FTU9SWSwgImJ1ZmZlckRhdGEiLCAiQ291bGQgbm90IGNyZWF0ZSBpbnRlcm1lZGlhdGUg
QXJyYXlCdWZmZXJWaWV3Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTE4Nyw3ICsxODcsNyBAQCB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0
LCBsb25nIGxvbmcgb2Zmc2V0LCBjbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0
byBzbGljZSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShkYXRhLnBvc3NpYmx5U2hhcmVkQnVmZmVyKCks
IGRhdGEuYnl0ZU9mZnNldCgpICsgY2hlY2tlZEJ5dGVTcmNPZmZzZXQudW5zYWZlR2V0KCksIGNo
ZWNrZWRCeXRlTGVuZ3RoLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIHNsaWNlID0gVWludDhBcnJh
eTo6dHJ5Q3JlYXRlKGRhdGEucG9zc2libHlTaGFyZWRCdWZmZXIoKSwgZGF0YS5ieXRlT2Zmc2V0
KCkgKyBjaGVja2VkQnl0ZVNyY09mZnNldC51bnNhZmVHZXQoKSwgY2hlY2tlZEJ5dGVMZW5ndGgu
dW5zYWZlR2V0KCkpOwogICAgIGlmICghc2xpY2UpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6Ok9VVF9PRl9NRU1PUlksICJidWZmZXJTdWJEYXRhIiwgIkNv
dWxkIG5vdCBjcmVhdGUgaW50ZXJtZWRpYXRlIEFycmF5QnVmZmVyVmlldyIpOwogICAgICAgICBy
ZXR1cm47CkBAIC00MTIsNyArNDEyLDcgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzMKICAgICAg
ICAgcGFyYW1zW2ldID0gc2FtcGxlc1tpXTsKICNlbmRpZgogCi0gICAgcmV0dXJuIEludDMyQXJy
YXk6OmNyZWF0ZShwYXJhbXMsIG51bVZhbHVlcyk7CisgICAgcmV0dXJuIEludDMyQXJyYXk6OnRy
eUNyZWF0ZShwYXJhbXMsIG51bVZhbHVlcyk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDM0RlbnVtLCBjb25zdCBWZWN0b3I8R0MzRGVu
dW0+JikKQEAgLTE3OTQsNyArMTc5NCw3IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmdldFBhcmFtZXRlcihHQzNEZW51bSBwbmFtZSkKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpDT0xPUl9XUklURU1BU0s6CiAgICAgICAgIHJldHVybiBnZXRCb29sZWFuQXJyYXlQYXJh
bWV0ZXIocG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTVBSRVNTRURfVEVY
VFVSRV9GT1JNQVRTOgotICAgICAgICByZXR1cm4gVWludDMyQXJyYXk6OmNyZWF0ZShtX2NvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0cy5kYXRhKCksIG1fY29tcHJlc3NlZFRleHR1cmVGb3JtYXRzLnNp
emUoKSk7CisgICAgICAgIHJldHVybiBVaW50MzJBcnJheTo6dHJ5Q3JlYXRlKG1fY29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXRzLmRhdGEoKSwgbV9jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMuc2l6ZSgp
KTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDVUxMX0ZBQ0U6CiAgICAgICAgIHJldHVy
biBnZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpDVUxMX0ZBQ0VfTU9ERToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDYyMGJkYjMwYTFiNjI5MDVjMTAyOGFjMWMz
MmVkYThlY2RhNjYwYTguLmFmN2E3N2ZkYzM4NjM2MGE1M2NiN2E1NWE0ODQ4NGRiZmI1NTg0ZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcApAQCAtNDQ0LDcgKzQ0NCw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OkNPTE9SX1dSSVRFTUFTSzoKICAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5BcnJheVBh
cmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09NUFJFU1NFRF9U
RVhUVVJFX0ZPUk1BVFM6Ci0gICAgICAgIHJldHVybiBVaW50MzJBcnJheTo6Y3JlYXRlKG1fY29t
cHJlc3NlZFRleHR1cmVGb3JtYXRzLmRhdGEoKSwgbV9jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMu
c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIFVpbnQzMkFycmF5Ojp0cnlDcmVhdGUobV9jb21wcmVz
c2VkVGV4dHVyZUZvcm1hdHMuZGF0YSgpLCBtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5zaXpl
KCkpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNVTExfRkFDRToKICAgICAgICAgcmV0
dXJuIGdldEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkNVTExfRkFDRV9NT0RFOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA4NTc0ZmNlYmY5OTMzMmYy
MzUxM2RiMGE3YzJkM2VhMGJlYzg1YzY5Li5mMThhOGZiZDA5MGZiOTU0YzhkZmRjNTkyNzQ3ODFm
Y2IzYmU5ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMjkyMiw3ICsyOTIyLDcgQEAgV2ViR0xB
bnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybShXZWJHTFByb2dyYW0qIHBy
b2dyYW0sIGNvbnN0IFdlYkcKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KG9i
amVjdE9yWmVybyhwcm9ncmFtKSwgbG9jYXRpb24sIHZhbHVlKTsKICAgICAgICAgaWYgKGxlbmd0
aCA9PSAxKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlWzBdOwotICAgICAgICByZXR1cm4gRmxv
YXQzMkFycmF5OjpjcmVhdGUodmFsdWUsIGxlbmd0aCk7CisgICAgICAgIHJldHVybiBGbG9hdDMy
QXJyYXk6OnRyeUNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKICAgICB9CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6SU5UOiB7CiAgICAgICAgIEdDM0RpbnQgdmFsdWVbNF0gPSB7MH07CkBAIC0y
OTMyLDcgKzI5MzIsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRV
bmlmb3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QgV2ViRwogICAgICAgICAgICAgbV9j
b250ZXh0LT5nZXRVbmlmb3JtaXYob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBsb2NhdGlvbiwgdmFs
dWUpOwogICAgICAgICBpZiAobGVuZ3RoID09IDEpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWVb
MF07Ci0gICAgICAgIHJldHVybiBJbnQzMkFycmF5OjpjcmVhdGUodmFsdWUsIGxlbmd0aCk7Cisg
ICAgICAgIHJldHVybiBJbnQzMkFycmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7CiAgICAg
fQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkJPT0w6IHsKICAgICAgICAgR0MzRGludCB2
YWx1ZVs0XSA9IHswfTsKQEAgLTMwMjgsNyArMzAyOCw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdldFZlcnRleEF0dHJpYihHQzNEdWludCBpbmRleCwgR0MzRGVudW0g
cG5hCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBF
OgogICAgICAgICByZXR1cm4gc3RhdGUudHlwZTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpDVVJSRU5UX1ZFUlRFWF9BVFRSSUI6Ci0gICAgICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNy
ZWF0ZShtX3ZlcnRleEF0dHJpYlZhbHVlW2luZGV4XS52YWx1ZSwgNCk7CisgICAgICAgIHJldHVy
biBGbG9hdDMyQXJyYXk6OnRyeUNyZWF0ZShtX3ZlcnRleEF0dHJpYlZhbHVlW2luZGV4XS52YWx1
ZSwgNCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfRU5VTSwgImdldFZlcnRleEF0dHJpYiIsICJpbnZhbGlkIHBhcmFt
ZXRlciBuYW1lIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNTIzNSw3ICs1MjM1LDcg
QEAgUmVmUHRyPEZsb2F0MzJBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0V2Vi
R0xGbG9hdEFycmF5UGFyYW1ldGVyKEdDM0QKICAgICBkZWZhdWx0OgogICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgIH0KLSAgICByZXR1cm4gRmxvYXQzMkFycmF5OjpjcmVhdGUodmFsdWUs
IGxlbmd0aCk7CisgICAgcmV0dXJuIEZsb2F0MzJBcnJheTo6dHJ5Q3JlYXRlKHZhbHVlLCBsZW5n
dGgpOwogfQogCiBSZWZQdHI8SW50MzJBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0V2ViR0xJbnRBcnJheVBhcmFtZXRlcihHQzNEZW51bSBwbmFtZSkKQEAgLTUyNTQsNyArNTI1
NCw3IEBAIFJlZlB0cjxJbnQzMkFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRX
ZWJHTEludEFycmF5UGFyYW1ldGVyKEdDM0RlbnVtCiAgICAgZGVmYXVsdDoKICAgICAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICB9Ci0gICAgcmV0dXJuIEludDMyQXJyYXk6OmNyZWF0ZSh2YWx1
ZSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gSW50MzJBcnJheTo6dHJ5Q3JlYXRlKHZhbHVlLCBsZW5n
dGgpOwogfQogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNoZWNrVGV4dHVyZUNv
bXBsZXRlbmVzcyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGJvb2wgcHJlcGFyZVRvRHJhdykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5jcHAKaW5kZXggNTkxNWE3NzMxNmVkOGEwMzBhNGU2ZDNhZDc0MTA0YzE3OGNhZDlkMi4uYjM0
MDQ2M2EzOWIzOTczZGRiODIzYzAwYTBjMTczZTU1MWZjOGU2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTEwMTQs
NyArMTAxNCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRyYWN0
S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBpbml0RGF0YUJ1ZmZlciA9IGluaXREYXRhLT51bnNoYXJlZEJ1ZmZlcigpOwogCiAgICAg
Ly8gVXNlIGEgRGF0YVZpZXcgdG8gcmVhZCB1aW50MzIgdmFsdWVzIGZyb20gdGhlIGJ1ZmZlciwg
YXMgVWludDMyQXJyYXkgcmVxdWlyZXMgdGhlIHJlYWRzIGJlIGFsaWduZWQgb24gNC1ieXRlIGJv
dW5kYXJpZXMuIAotICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBKU0M6
OkRhdGFWaWV3OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCAwLCBpbml0RGF0YUJ1
ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBhdXRvIGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZp
ZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGluaXREYXRhQnVmZmVyLT5i
eXRlTGVuZ3RoKCkpOwogICAgIHVpbnQzMl90IG9mZnNldCA9IDA7CiAgICAgYm9vbCBzdGF0dXMg
PSB0cnVlOwogCkBAIC0xMDIzLDcgKzEwMjMsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbjo6ZXh0cmFjdEtleVVSSUtleUlEQW5kQ2VydGlmaWNhdGVGcm9tSW5pdERhdAog
ICAgIGlmICghc3RhdHVzIHx8IG9mZnNldCArIGtleVVSSUxlbmd0aCA+IGluaXREYXRhLT5sZW5n
dGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmUHRyPFVpbnQxNkFycmF5PiBr
ZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigp
LCBvZmZzZXQsIGtleVVSSUxlbmd0aCk7CisgICAgYXV0byBrZXlVUklBcnJheSA9IFVpbnQxNkFy
cmF5Ojp0cnlDcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCBvZmZzZXQsIGtleVVSSUxl
bmd0aCk7CiAgICAgaWYgKCFrZXlVUklBcnJheSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC0xMDM1LDcgKzEwMzUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6
ZXh0cmFjdEtleVVSSUtleUlEQW5kQ2VydGlmaWNhdGVGcm9tSW5pdERhdAogICAgIGlmICghc3Rh
dHVzIHx8IG9mZnNldCArIGtleUlETGVuZ3RoID4gaW5pdERhdGEtPmxlbmd0aCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWZQdHI8VWludDhBcnJheT4ga2V5SURBcnJheSA9IFVp
bnQ4QXJyYXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIG9mZnNldCwga2V5SURM
ZW5ndGgpOworICAgIGF1dG8ga2V5SURBcnJheSA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShpbml0
RGF0YUJ1ZmZlci5jb3B5UmVmKCksIG9mZnNldCwga2V5SURMZW5ndGgpOwogICAgIGlmICgha2V5
SURBcnJheSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMDQ3LDcgKzEwNDcsNyBAQCBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6ZXh0cmFjdEtleVVSSUtleUlEQW5k
Q2VydGlmaWNhdGVGcm9tSW5pdERhdAogICAgIGlmICghc3RhdHVzIHx8IG9mZnNldCArIGNlcnRp
ZmljYXRlTGVuZ3RoID4gaW5pdERhdGEtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBjZXJ0aWZpY2F0ZSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGluaXREYXRh
QnVmZmVyKSwgb2Zmc2V0LCBjZXJ0aWZpY2F0ZUxlbmd0aCk7CisgICAgY2VydGlmaWNhdGUgPSBV
aW50OEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShpbml0RGF0YUJ1ZmZlciksIG9mZnNldCwgY2Vy
dGlmaWNhdGVMZW5ndGgpOwogICAgIGlmICghY2VydGlmaWNhdGUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bkNGLmNwcAppbmRleCAzMjMyYjczNWEzMzFhYWVkYWU0ZDE3MjA4NjViMTg0MDIwYTZjYzQ1Li43
MDljMDgwZDRmZmIwMjEzYzhkYjZmZGQ0YzhiZjc4YTdlMTI1NjZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcApAQCAtOTksNyArOTks
NyBAQCBSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGOjpnZW5lcmF0
ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiwgVQogICAgIGRlc3RpbmF0aW9uVVJMID0gU3RyaW5n
KCk7CiAKICAgICBhdXRvIGtleVJlcXVlc3RCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKENG
RGF0YUdldEJ5dGVQdHIoa2V5UmVxdWVzdC5nZXQoKSksIENGRGF0YUdldExlbmd0aChrZXlSZXF1
ZXN0LmdldCgpKSk7Ci0gICAgcmV0dXJuIFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGtleVJl
cXVlc3RCdWZmZXIpLCAwLCBrZXlSZXF1ZXN0QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIHJl
dHVybiBVaW50OEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShrZXlSZXF1ZXN0QnVmZmVyKSwgMCwg
a2V5UmVxdWVzdEJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
LmNwcAppbmRleCBlODI0NDlhNTBmY2M4ZTliODE3ZmM3N2UyYWEzYTAxOTVmNmExMjI2Li5hOTI2
MDJmZDY5Y2QzN2YxODlhZDM0Y2JjYzFhNGMyZGVlNzQ0NTFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAK
QEAgLTE4OTMsMTIgKzE4OTMsMTIgQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9h
ZGluZ09mUmVzb3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKICAgICAgICAg
UmVmUHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0
ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3Ro
KCkpOwogICAgICAgICBpbml0RGF0YVZpZXctPnNldDx1aW50MzJfdD4oMCwga2V5VVJJU2l6ZSwg
dHJ1ZSk7CiAKLSAgICAgICAgUmVmUHRyPFVpbnQxNkFycmF5PiBrZXlVUklBcnJheSA9IFVpbnQx
NkFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCA0LCBrZXlVUkkubGVuZ3Ro
KCkpOworICAgICAgICBhdXRvIGtleVVSSUFycmF5ID0gVWludDE2QXJyYXk6OmNyZWF0ZShpbml0
RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDQsIGtleVVSSS5sZW5ndGgoKSk7CiAgICAgICAgIGtleVVS
SUFycmF5LT5zZXRSYW5nZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4oU3RyaW5n
VmlldyhrZXlVUkkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpKSwga2V5VVJJLmxlbmd0
aCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAwKTsKIAogICAgICAgICB1bnNpZ25lZCBieXRl
TGVuZ3RoID0gaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKTsKLSAgICAgICAgUmVmUHRyPFVp
bnQ4QXJyYXk+IGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFC
dWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKLSAgICAgICAgaWYgKCFtX293bmVyLT5wbGF5ZXIoKS0+
a2V5TmVlZGVkKGluaXREYXRhLmdldCgpKSkKKyAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4
QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7Cisg
ICAgICAgIGlmICghbV9vd25lci0+cGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgc2V0UmVxdWVzdEZvcktleShr
ZXlVUkksIGF2UmVxdWVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCmluZGV4IDVlZGFjNDYzY2RkMjlmZWNiODA5
MmY0OTEzN2Y4ZjJjNjI2ZTAzMmMuLjVlOTg5ZmZhM2YwNzNlNGVlYjc0ZmIyN2QwMzZjMmFmMDkw
OWQ4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VkNvbnRlbnRLZXlTZXNzaW9uLm1tCkBAIC0xNjUsNyArMTY1LDcgQEAgUmVmUHRyPFVpbnQ4QXJy
YXk+IENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29u
c3QgU3RyaW4KIAogICAgIGlmICghbV9jZXJ0aWZpY2F0ZSkgewogICAgICAgICBTdHJpbmcgY2Vy
dGlmaWNhdGVTdHJpbmcoImNlcnRpZmljYXRlIl9zKTsKLSAgICAgICAgUmVmUHRyPFVpbnQ4QXJy
YXk+IGFycmF5ID0gVWludDhBcnJheTo6Y3JlYXRlKGNlcnRpZmljYXRlU3RyaW5nLmxlbmd0aCgp
KTsKKyAgICAgICAgYXV0byBhcnJheSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShjZXJ0aWZpY2F0ZVN0
cmluZy5sZW5ndGgoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGxlbmd0aCA9IGNl
cnRpZmljYXRlU3RyaW5nLmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBh
cnJheS0+c2V0KGksIGNlcnRpZmljYXRlU3RyaW5nW2ldKTsKICAgICAgICAgcmV0dXJuIGFycmF5
OwpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246
OnJlbGVhc2VLZXlzKCkKICAgICAgICAgICAgIGlmIChtX3Nlc3Npb25JZCA9PSBTdHJpbmcocGxh
eWJhY2tTZXNzaW9uSWRWYWx1ZSkpIHsKICAgICAgICAgICAgICAgICBMT0coTWVkaWEsICJDRE1T
ZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6cmVsZWFzZUtleXMoJXApIC0gZm91bmQgc2Vzc2lv
biwgc2VuZGluZyBleHBpcmF0aW9uIG1lc3NhZ2UiKTsKICAgICAgICAgICAgICAgICBtX2V4cGly
ZWRTZXNzaW9uID0gZXhwaXJlZFNlc3Npb25EYXRhOwotICAgICAgICAgICAgICAgIG1fY2xpZW50
LT5zZW5kTWVzc2FnZShVaW50OEFycmF5OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KFttX2V4cGlyZWRTZXNzaW9uIGJ5dGVzXSksIFttX2V4cGlyZWRTZXNzaW9uIGxlbmd0aF0p
LmdldCgpLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+c2VuZE1l
c3NhZ2UoVWludDhBcnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbbV9l
eHBpcmVkU2Vzc2lvbiBieXRlc10pLCBbbV9leHBpcmVkU2Vzc2lvbiBsZW5ndGhdKS5wdHIoKSwg
ZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KQEAgLTMwMCw3ICszMDAsNyBAQCBib29sIENETVNlc3Npb25BVkNvbnRlbnRLZXlT
ZXNzaW9uOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBuZXh0TWVzc2FnZSA9
IFVpbnQ4QXJyYXk6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW3JlcXVlc3RE
YXRhIGJ5dGVzXSksIFtyZXF1ZXN0RGF0YSBsZW5ndGhdKTsKKyAgICAgICAgbmV4dE1lc3NhZ2Ug
PSBVaW50OEFycmF5Ojp0cnlDcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtyZXF1
ZXN0RGF0YSBieXRlc10pLCBbcmVxdWVzdERhdGEgbGVuZ3RoXSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTM1MCw3ICszNTAsNyBAQCBSZWZQdHI8VWludDhBcnJheT4gQ0RN
U2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5z
aQogICAgIGVycm9yQ29kZSA9IDA7CiAgICAgc3lzdGVtQ29kZSA9IDA7CiAgICAgbV9leHBpcmVk
U2Vzc2lvbiA9IFtleHBpcmVkU2Vzc2lvbnMgZmlyc3RPYmplY3RdOwotICAgIHJldHVybiBVaW50
OEFycmF5OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFttX2V4cGlyZWRTZXNz
aW9uIGJ5dGVzXSksIFttX2V4cGlyZWRTZXNzaW9uIGxlbmd0aF0pOworICAgIHJldHVybiBVaW50
OEFycmF5Ojp0cnlDcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFttX2V4cGlyZWRT
ZXNzaW9uIGJ5dGVzXSksIFttX2V4cGlyZWRTZXNzaW9uIGxlbmd0aF0pOwogfQogCiB2b2lkIENE
TVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3Qo
QVZDb250ZW50S2V5UmVxdWVzdCAqa2V5UmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5k
YXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggODJmNGNkYzA3MGY1
M2FkMDdlNmI5YjVmMmM4MzQ0Zjg4MjYzYjJhYS4uY2ExOWJhZTA4ZmVjNWZjY2JhNTdlNDlhYTBm
NGVhZjg3MTNlNTI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWRm91bmRhdGlvbk9iakMubW0KQEAgLTk5LDkgKzk5LDkgQEAgUmVmUHRyPFVpbnQ4QXJy
YXk+IENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3Qg
U3RyaW5nJgogICAgIHN5c3RlbUNvZGUgPSAwOwogICAgIGRlc3RpbmF0aW9uVVJMID0gU3RyaW5n
KCk7CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGtleVJlcXVlc3RCdWZmZXIgPSBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKFtrZXlSZXF1ZXN0LmdldCgpIGJ5dGVzXSwgW2tleVJlcXVlc3QuZ2V0KCkg
bGVuZ3RoXSk7CisgICAgYXV0byBrZXlSZXF1ZXN0QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0
ZShba2V5UmVxdWVzdC5nZXQoKSBieXRlc10sIFtrZXlSZXF1ZXN0LmdldCgpIGxlbmd0aF0pOwog
ICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBrZXlSZXF1ZXN0QnVmZmVyLT5ieXRlTGVuZ3RoKCk7
Ci0gICAgcmV0dXJuIFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGtleVJlcXVlc3RCdWZmZXIp
LCAwLCBieXRlTGVuZ3RoKTsKKyAgICByZXR1cm4gVWludDhBcnJheTo6dHJ5Q3JlYXRlKFdURk1v
dmUoa2V5UmVxdWVzdEJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwogfQogCiB2b2lkIENETVNlc3Np
b25BVkZvdW5kYXRpb25PYmpDOjpyZWxlYXNlS2V5cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJl
YW1TZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQppbmRleCA3YjIwMjgxMjEwNzJk
YjU3MTE3ZWE2MTBlMzNhYzM0NGYxMmUxMTQ4Li42OGMxOGEwOGM1ZGM2ZjJiZDZiZThkNDc4NDY0
NjgzZjg4NTdlNDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVlN0cmVhbVNlc3Npb24ubW0KQEAgLTEyMiw3ICsxMjIsNyBAQCBSZWZQdHI8VWludDhBcnJh
eT4gQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0
cmluZyYgbQogICAgIH0KIAogICAgIFN0cmluZyBjZXJ0aWZpY2F0ZVN0cmluZygiY2VydGlmaWNh
dGUiX3MpOwotICAgIFJlZlB0cjxVaW50OEFycmF5PiBhcnJheSA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShjZXJ0aWZpY2F0ZVN0cmluZy5sZW5ndGgoKSk7CisgICAgYXV0byBhcnJheSA9IFVpbnQ4QXJy
YXk6OmNyZWF0ZShjZXJ0aWZpY2F0ZVN0cmluZy5sZW5ndGgoKSk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMCwgbGVuZ3RoID0gY2VydGlmaWNhdGVTdHJpbmcubGVuZ3RoKCk7IGkgPCBsZW5ndGg7
ICsraSkKICAgICAgICAgYXJyYXktPnNldChpLCBjZXJ0aWZpY2F0ZVN0cmluZ1tpXSk7CiAgICAg
cmV0dXJuIGFycmF5OwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWU3RyZWFt
U2Vzc2lvbjo6cmVsZWFzZUtleXMoKQogICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbklkID09IFN0
cmluZyhwbGF5YmFja1Nlc3Npb25JZFZhbHVlKSkgewogICAgICAgICAgICAgICAgIExPRyhNZWRp
YSwgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnJlbGVhc2VLZXlzKCVwKSAtIGZvdW5kIHNl
c3Npb24sIHNlbmRpbmcgZXhwaXJhdGlvbiBtZXNzYWdlIik7CiAgICAgICAgICAgICAgICAgbV9l
eHBpcmVkU2Vzc2lvbiA9IGV4cGlyZWRTZXNzaW9uRGF0YTsKLSAgICAgICAgICAgICAgICBtX2Ns
aWVudC0+c2VuZE1lc3NhZ2UoVWludDhBcnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihbbV9leHBpcmVkU2Vzc2lvbiBieXRlc10pLCBbbV9leHBpcmVkU2Vzc2lvbiBsZW5n
dGhdKS5nZXQoKSwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNl
bmRNZXNzYWdlKFVpbnQ4QXJyYXk6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
W21fZXhwaXJlZFNlc3Npb24gYnl0ZXNdKSwgW21fZXhwaXJlZFNlc3Npb24gbGVuZ3RoXSkucHRy
KCksIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC0zMzUsNyArMzM1LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNl
c3Npb25BVlN0cmVhbVNlc3Npb246OmdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5zaWduZWQK
ICAgICBlcnJvckNvZGUgPSAwOwogICAgIHN5c3RlbUNvZGUgPSAwOwogICAgIG1fZXhwaXJlZFNl
c3Npb24gPSBbZXhwaXJlZFNlc3Npb25zIGZpcnN0T2JqZWN0XTsKLSAgICByZXR1cm4gVWludDhB
cnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbbV9leHBpcmVkU2Vzc2lv
biBieXRlc10pLCBbbV9leHBpcmVkU2Vzc2lvbiBsZW5ndGhdKTsKKyAgICByZXR1cm4gVWludDhB
cnJheTo6dHJ5Q3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbbV9leHBpcmVkU2Vz
c2lvbiBieXRlc10pLCBbbV9leHBpcmVkU2Vzc2lvbiBsZW5ndGhdKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KaW5kZXggZDQ0YTA4N2E0Mjk5YWI2NTg1NmI4MjQ1NmE2MDlhYmIzMDhk
NWMxYy4uZTZmM2M4M2EzNDFmZGVlMmI3MWRhYjQ0MTBiNGI0NzFhY2FhZGQ1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCkBAIC0xNzY0LDE1ICsxNzY0LDE1IEBAIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFW
QXNzZXRSCiAgICAgICAgIC8vIENyZWF0ZSBhbiBpbml0RGF0YSB3aXRoIHRoZSBmb2xsb3dpbmcg
bGF5b3V0OgogICAgICAgICAvLyBbNCBieXRlczoga2V5VVJJIHNpemVdLCBba2V5VVJJIHNpemUg
Ynl0ZXM6IGtleVVSSV0KICAgICAgICAgdW5zaWduZWQga2V5VVJJU2l6ZSA9IGtleVVSSS5sZW5n
dGgoKSAqIHNpemVvZihVQ2hhcik7Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gaW5pdERh
dGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAxKTsKKyAgICAg
ICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoNCArIGtleVVSSVNp
emUsIDEpOwogICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gaW5pdERhdGFCdWZmZXItPmJ5
dGVMZW5ndGgoKTsKLSAgICAgICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRhVmlldyA9
IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGJ5dGVM
ZW5ndGgpOworICAgICAgICBhdXRvIGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0
ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGJ5dGVMZW5ndGgpOwogICAgICAgICBpbml0
RGF0YVZpZXctPnNldDx1aW50MzJfdD4oMCwga2V5VVJJU2l6ZSwgdHJ1ZSk7CiAKLSAgICAgICAg
UmVmUHRyPFVpbnQxNkFycmF5PiBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5p
dERhdGFCdWZmZXIuY29weVJlZigpLCA0LCBrZXlVUkkubGVuZ3RoKCkpOworICAgICAgICBhdXRv
IGtleVVSSUFycmF5ID0gVWludDE2QXJyYXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVm
KCksIDQsIGtleVVSSS5sZW5ndGgoKSk7CiAgICAgICAgIGtleVVSSUFycmF5LT5zZXRSYW5nZShT
dHJpbmdWaWV3KGtleVVSSSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIGtleVVSSS5sZW5ndGgo
KSAvIHNpemVvZih1bnNpZ25lZCBjaGFyKSwgMCk7CiAKLSAgICAgICAgUmVmUHRyPFVpbnQ4QXJy
YXk+IGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIp
LCAwLCBieXRlTGVuZ3RoKTsKKyAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNy
ZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIGlm
ICghcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5nZXQoKSkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTE4MTIsNyArMTgxMiw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFW
QXNzZXRSCiAjZW5kaWYKICNlbmRpZgogCi0gICAgUmVmUHRyPFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSh0
aGlzLCBhdlJlcXVlc3QpOworICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI6OmNyZWF0ZSh0aGlzLCBhdlJlcXVlc3QpOwogICAgIG1fcmVzb3VyY2VMb2Fk
ZXJNYXAuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0LCByZXNvdXJjZUxvYWRlcik7
CiAgICAgcmVzb3VyY2VMb2FkZXItPnN0YXJ0TG9hZGluZygpOwogICAgIHJldHVybiB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCmluZGV4IDE4OThk
Y2I0ODA3ZGMzZDRkZWNiNGMwM2RlYmU0ZWRmODY3MTJiOWYuLmMzYmNhNjEwOTA1NTRmODI4Yjg0
ODM5YWQ0MDU0OWE2MjdiZmU3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNh
bXBsZUFWRk9iakMubW0KQEAgLTI5NCw3ICsyOTQsNyBAQCBSZWZQdHI8SlNDOjpVaW50OENsYW1w
ZWRBcnJheT4gTWVkaWFTYW1wbGVBVkZPYmpDOjpnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QKIAog
ICAgIHZvaWQqIGRhdGEgPSBDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3NPZlBsYW5lKHJnYmFQ
aXhlbEJ1ZmZlci5nZXQoKSwgMCk7CiAgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBDVlBpeGVsQnVm
ZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKSAqIENWUGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1
ZmZlcikgKiA0OwotICAgIGF1dG8gcmVzdWx0ID0gSlNDOjpVaW50OENsYW1wZWRBcnJheTo6Y3Jl
YXRlKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZShkYXRhLCBieXRlTGVuZ3RoKSwgMCwgYnl0ZUxl
bmd0aCk7CisgICAgYXV0byByZXN1bHQgPSBKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVh
dGUoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ5dGVMZW5ndGgpLCAwLCBieXRlTGVu
Z3RoKTsKIAogICAgIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRkcmVzcyhyZ2Jh
UGl4ZWxCdWZmZXIuZ2V0KCksIGtDVlBpeGVsQnVmZmVyTG9ja19SZWFkT25seSk7CiAgICAgQVNT
RVJUKHN0YXR1cyA9PSBub0Vycik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGNkMzU0NzU5ZWU0NGUyZjIxYjYzYmZj
MjQyOWIwMzJhYjVkM2FkMzYuLjQ1ZTAzOGIzODI4YjgzOGZkN2RkYzYzYTljYzc3ZGYzZGJhMTA5
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tCkBAIC02NTAsNyArNjUwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8K
ICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBMT0coTWVkaWFTb3VyY2Us
ICJTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCglcCkgLSB0cmFjazolZCIsIHRoaXMsIHRyYWNr
SUQpOwogICAgIG1fcHJvdGVjdGVkVHJhY2tJRCA9IHRyYWNrSUQ7Ci0gICAgUmVmUHRyPFVpbnQ4
QXJyYXk+IGluaXREYXRhQXJyYXkgPSBVaW50OEFycmF5OjpjcmVhdGUoW2luaXREYXRhIGxlbmd0
aF0pOworICAgIGF1dG8gaW5pdERhdGFBcnJheSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShbaW5pdERh
dGEgbGVuZ3RoXSk7CiAgICAgW2luaXREYXRhIGdldEJ5dGVzOmluaXREYXRhQXJyYXktPmRhdGEo
KSBsZW5ndGg6aW5pdERhdGFBcnJheS0+bGVuZ3RoKCldOwogICAgIG1fbWVkaWFTb3VyY2UtPnNv
dXJjZUJ1ZmZlcktleU5lZWRlZCh0aGlzLCBpbml0RGF0YUFycmF5LmdldCgpKTsKICAgICBpZiAo
YXV0byBzZXNzaW9uID0gbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPmNkbVNlc3Npb24oKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCA0NTZhZjc4NmQwOTI1OTAxN2M0MzE3NWQyZDY0MDg3
MTc2MmU4YTRlLi5jY2JiZTFmMTU2ZTBmOWUzYTBmMDMxZGE3Y2NlNDI4YTZmZWU5NGViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtNDEyLDcgKzQxMiw3IEBAIFJlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFJlY3Qm
IGxvZ2ljCiAgICAgaWYgKGFyZWEuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIGF1dG8gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQoYXJlYS51bnNhZmVHZXQoKSk7CisgICAgYXV0byByZXN1bHQgPSBVaW50OENsYW1w
ZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChhcmVhLnVuc2FmZUdldCgpKTsKICAgICBp
ZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcApp
bmRleCBkNDJhYTM0NDhiMGJjMzdkZTZlNWYwODk2MzZkMTc5N2Q1NGZhMzc2Li44NDc5ZDVkM2Ey
M2EwN2U4OWRmY2I4YmIyMDUyMGZhOTAzZWI3Mjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCkBAIC0x
MzMsNyArMTMzLDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlckRhdGE6
OmdldERhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXQKICAgICBpZiAoYXJlYS5oYXNP
dmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byByZXN1bHQg
PSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChhcmVhLnVuc2FmZUdldCgp
KTsKKyAgICBhdXRvIHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRp
YWxpemVkKGFyZWEudW5zYWZlR2V0KCkpOwogICAgIHVpbnQ4X3QqIHJlc3VsdERhdGEgPSByZXN1
bHQgPyByZXN1bHQtPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFyZXN1bHREYXRhKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggOWE3OTk4ZDEz
OTU5MzA5Mzc4NDc0MjYxODc2NjJhNzgxMDU2MDFmMi4uMTE4MDIzMTFlOWFlYzFjOWI1ZjJkMDdh
ZmEyOWQ0NzEzMDYyYjY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKQEAgLTUzMSw3ICs1MzEs
NyBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAg
SW50U2l6ZSBwYWludFNpemUgPSBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKTsKICAgICBwYWlu
dFNpemUuc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7Ci0gICAgYXV0byB0bXBJbWFnZURh
dGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgocGFpbnRTaXplLmFy
ZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIHRtcEltYWdlRGF0YSA9IFVpbnQ4Q2xh
bXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKChwYWludFNpemUuYXJlYSgpICogNCku
dW5zYWZlR2V0KCkpOwogICAgIGlmICghdG1wSW1hZ2VEYXRhKQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmNwcAppbmRleCA2NmMzMGE5OGMyOGFlZDJmY2ZmNTE5NjAyZDJjNDcxMzlm
NzZhZWE4Li42ZTk4NmQ0ZWMyYTk3OTI5NjYzODRmYzU1MDc0YTJmOTcyYjU5MGZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBGaWx0ZXJFZmZlY3Q6OnVubXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0KQog
ICAgIEludFNpemUgc2NhbGVkU2l6ZShyZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1
ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2NhbGVkU2l6ZSkpOwogICAgIHNjYWxlZFNpemUuc2Nh
bGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgYXV0byBpbWFnZURhdGEgPSBVaW50OENs
YW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgoc2NhbGVkU2l6ZS5hcmVhKCkgKiA0KS51
bnNhZmVHZXQoKSk7CisgICAgYXV0byBpbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZCgoc2NhbGVkU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7
CiAgICAgaWYgKCFpbWFnZURhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0zMDMs
NyArMzAzLDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnByZW11
bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBJbnRTaXplIHNjYWxlZFNp
emUocmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1w
aW5nKHNjYWxlZFNpemUpKTsKICAgICBzY2FsZWRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNj
YWxlKCkpOwotICAgIGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQoKHNjYWxlZFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOworICAgIGF1
dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
KHNjYWxlZFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAgIGlmICghaW1hZ2VEYXRh
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjb3B5UHJlbXVsdGlwbGllZFJlc3VsdCgq
aW1hZ2VEYXRhLCByZWN0KTsKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6
Y29weVVubXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNv
bnN0CiAgICAgICAgICAgICBJbnRTaXplIGlucHV0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNp
emUoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGlu
ZyhpbnB1dFNpemUpKTsKICAgICAgICAgICAgIGlucHV0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0
ZXJTY2FsZSgpKTsKLSAgICAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50
OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgoaW5wdXRTaXplLmFyZWEoKSAqIDQp
LnVuc2FmZUdldCgpKTsKKyAgICAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBV
aW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCgoaW5wdXRTaXplLmFyZWEo
KSAqIDQpLnVuc2FmZUdldCgpKTsKICAgICAgICAgICAgIGlmICghbV91bm11bHRpcGxpZWRJbWFn
ZVJlc3VsdCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKQEAgLTQ3Niw3
ICs0NzYsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxpZWRSZXN1bHQoVWlu
dDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdAogICAgICAgICAgICAgSW50U2l6ZSBp
bnB1dFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgICAgICAgICAgQVNTRVJU
KCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoaW5wdXRTaXplKSk7CiAgICAgICAgICAg
ICBpbnB1dFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgICAgICAgICBt
X3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmlu
aXRpYWxpemVkKChpbnB1dFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOworICAgICAgICAg
ICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZCgoaW5wdXRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKICAg
ICAgICAgICAgIGlmICghbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgCkBAIC01MTUsNyArNTE1LDcgQEAgVWludDhDbGFtcGVk
QXJyYXkqIEZpbHRlckVmZmVjdDo6Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKQogICAg
IEludFNpemUgcmVzdWx0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAgICAgQVNT
RVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcocmVzdWx0U2l6ZSkpOwogICAgIHJl
c3VsdFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgbV91bm11bHRpcGxp
ZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKChy
ZXN1bHRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKKyAgICBtX3VubXVsdGlwbGllZElt
YWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoKHJl
c3VsdFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAgIHJldHVybiBtX3VubXVsdGlw
bGllZEltYWdlUmVzdWx0LmdldCgpOwogfQogCkBAIC01MzEsNyArNTMxLDcgQEAgVWludDhDbGFt
cGVkQXJyYXkqIEZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCkK
ICAgICBJbnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAg
IEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJlc3VsdFNpemUpKTsKICAg
ICByZXN1bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIG1fcHJlbXVs
dGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQoKHJlc3VsdFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOworICAgIG1fcHJlbXVsdGlw
bGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQoKHJlc3VsdFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAgIHJldHVybiBtX3By
ZW11bHRpcGxpZWRJbWFnZVJlc3VsdC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJl
Y3QyRC5jcHAKaW5kZXggZjBlMjU4MDkyMDUzODU0Y2Q1MTU5NmM3ZTA3MTc1OWVmN2NiZjVhOC4u
MDI3NWY5ZGM5YmU5NjhmMDcwNjYzNGVjMmIzY2U4NWQwMjlkZTU1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJE
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZm
ZXJEYXRhRGlyZWN0MkQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZlB0cjxVaW50OENsYW1wZWRB
cnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24sIGNv
bnN0CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBhdXRvIHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmlu
aXRpYWxpemVkKG51bUJ5dGVzLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IFVpbnQ4
Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKG51bUJ5dGVzLnVuc2FmZUdldCgp
KTsKICAgICB1bnNpZ25lZCBjaGFyKiByZXN1bHREYXRhID0gcmVzdWx0ID8gcmVzdWx0LT5kYXRh
KCkgOiBudWxscHRyOwogICAgIGlmICghcmVzdWx0RGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBs
YXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0KaW5kZXggZGMwZDQxYzAxZjBj
ODEzMzBjOGI1Y2UwYjFhZGRmOGE0ZDVlNTc5ZS4uZTk5N2IzNmE3YjRhNTBhMTYzM2FiMGFlYWFm
NmFhMWI3OGY1ZGI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nl
cmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbQpAQCAt
MTkwLDcgKzE5MCw3IEBAIHN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aERpY3Rpb25hcnlJbkNv
bnRleHQoTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5LCBKU0NvbnRlCiAgICAgICAgIGlmICghdmFs
dWUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIG5hbWUgPSBPcGFxdWVK
U1N0cmluZzo6Y3JlYXRlKGtleSk7CisgICAgICAgIGF1dG8gbmFtZSA9IE9wYXF1ZUpTU3RyaW5n
Ojp0cnlDcmVhdGUoa2V5KTsKICAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShbY29udGV4dCBK
U0dsb2JhbENvbnRleHRSZWZdLCByZXN1bHRPYmplY3QsIG5hbWUuZ2V0KCksIFt2YWx1ZSBKU1Zh
bHVlUmVmXSwgMCwgJmV4Y2VwdGlvbik7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAg
ICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tCb3guY3BwCmluZGV4IGQ0YWEyMDU0NjNlODhmZTc1MDc2ZjJhODA3ZWY5
MmQyMDNlOWJlOTEuLmU1NGJhMzc2ZGE2MTY2NDU3YzIzMjg5NzE4MTRjZmYzODVmYTZlMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0Jv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
Qm94LmNwcApAQCAtNDksNyArNDksNyBAQCBNb2NrQm94OjpNb2NrQm94KEFycmF5QnVmZmVyKiBk
YXRhKQogU3RyaW5nIE1vY2tCb3g6OnBlZWtUeXBlKEFycmF5QnVmZmVyKiBkYXRhKQogewogICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBSZWZQdHI8SW50OEFycmF5PiBhcnJheSA9IEpT
Qzo6SW50OEFycmF5OjpjcmVhdGUoZGF0YSwgMCwgNCk7CisgICAgYXV0byBhcnJheSA9IEpTQzo6
SW50OEFycmF5OjpjcmVhdGUoZGF0YSwgMCwgNCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0
OyArK2kpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFycmF5LT5pdGVtKGkpKTsKICAgICByZXR1
cm4gYnVpbGRlci50b1N0cmluZygpOwpAQCAtNTcsNyArNTcsNyBAQCBTdHJpbmcgTW9ja0JveDo6
cGVla1R5cGUoQXJyYXlCdWZmZXIqIGRhdGEpCiAKIHNpemVfdCBNb2NrQm94OjpwZWVrTGVuZ3Ro
KEFycmF5QnVmZmVyKiBkYXRhKQogewotICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3PiB2aWV3ID0g
SlNDOjpEYXRhVmlldzo6Y3JlYXRlKGRhdGEsIDAsIGRhdGEtPmJ5dGVMZW5ndGgoKSk7CisgICAg
YXV0byB2aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGRhdGEsIDAsIGRhdGEtPmJ5dGVMZW5n
dGgoKSk7CiAgICAgcmV0dXJuIHZpZXctPmdldDx1aW50MzJfdD4oNCwgdHJ1ZSk7CiB9CiAKQEAg
LTY2LDExICs2NiwxMSBAQCBNb2NrVHJhY2tCb3g6Ok1vY2tUcmFja0JveChBcnJheUJ1ZmZlciog
ZGF0YSkKIHsKICAgICBBU1NFUlQobV9sZW5ndGggPT0gMTcpOwogCi0gICAgUmVmUHRyPEpTQzo6
RGF0YVZpZXc+IHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoZGF0YSwgMCwgZGF0YS0+Ynl0
ZUxlbmd0aCgpKTsKKyAgICBhdXRvIHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoZGF0YSwg
MCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3RyYWNrSUQgPSB2aWV3LT5nZXQ8aW50MzJf
dD4oOCwgdHJ1ZSk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgUmVmUHRyPElu
dDhBcnJheT4gYXJyYXkgPSBKU0M6OkludDhBcnJheTo6Y3JlYXRlKGRhdGEsIDEyLCA0KTsKKyAg
ICBhdXRvIGFycmF5ID0gSlNDOjpJbnQ4QXJyYXk6OmNyZWF0ZShkYXRhLCAxMiwgNCk7CiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFycmF5
LT5pdGVtKGkpKTsKICAgICBtX2NvZGVjID0gYnVpbGRlci50b1N0cmluZygpOwpAQCAtODksNyAr
ODksNyBAQCBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6Ok1vY2tJbml0aWFsaXphdGlvbkJveChBcnJh
eUJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQobV9sZW5ndGggPj0gMTMpOwogCi0gICAgUmVm
UHRyPEpTQzo6RGF0YVZpZXc+IHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoZGF0YSwgMCwg
ZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBhdXRvIHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVh
dGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpbnQzMl90IHRpbWVWYWx1ZSA9
IHZpZXctPmdldDxpbnQzMl90Pig4LCB0cnVlKTsKICAgICBpbnQzMl90IHRpbWVTY2FsZSA9IHZp
ZXctPmdldDxpbnQzMl90PigxMiwgdHJ1ZSk7CiAgICAgbV9kdXJhdGlvbiA9IE1lZGlhVGltZSh0
aW1lVmFsdWUsIHRpbWVTY2FsZSk7CkBAIC0xMTgsNyArMTE4LDcgQEAgTW9ja1NhbXBsZUJveDo6
TW9ja1NhbXBsZUJveChBcnJheUJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQobV9sZW5ndGgg
PT0gMzApOwogCi0gICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IHZpZXcgPSBKU0M6OkRhdGFWaWV3
OjpjcmVhdGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBhdXRvIHZpZXcgPSBK
U0M6OkRhdGFWaWV3OjpjcmVhdGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKICAgICBp
bnQzMl90IHRpbWVTY2FsZSA9IHZpZXctPmdldDxpbnQzMl90Pig4LCB0cnVlKTsKIAogICAgIGlu
dDMyX3QgdGltZVZhbHVlID0gdmlldy0+Z2V0PGludDMyX3Q+KDEyLCB0cnVlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggNjgzMmQwOWI4NzViZTNkNDcw
ODhjYmQ2Y2VlNWU5ZWM3MWY1MTI0MS4uYjc1N2Y5Zjk1ZDZjOTU5NTE5YWMwNjViNGUwZjAzZWJh
NTFkNjc2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAg
LTE4OSw2ICsxODksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0
ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VS
ZWN0LnNpemUoKSkpOwogCiAgICAgICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcGl4ZWxB
cnJheSA9IGltYWdlQnVmZmVyLT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoSW50UmVjdChJbnRQ
b2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHBpeGVs
QXJyYXkpOwogICAgICAgICB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoID0gcGl4ZWxBcnJheS0+
bGVuZ3RoKCk7CiAgICAgICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlPZmZzZXQgPSAzOyAvLyBFYWNo
IHBpeGVsIGlzIGZvdXIgYnl0ZXM6IFJHQkEuCiAgICAgICAgIHVpbnQ4X3QgYWxwaGFQaXhlbFRo
cmVzaG9sZCA9IHRocmVzaG9sZCAqIDI1NTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTGVnYWN5TW9ja0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1v
Y2tDRE0uY3BwCmluZGV4IDM4OTBjMGZhYmM0N2U1OTBlNWIxYWJiZDM1ZDJmOTkyYzQ2NWE3NDcu
LjY0Mjg3ZDIzOWFmNTczZTkyMDNkMjU4NDMxYjI3M2M3Yjg3NDkwMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcApAQCAtNzksMjUgKzc5LDI1IEBAIHN0ZDo6dW5p
cXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lNb2NrQ0RNOjpjcmVhdGVTZXNzaW9uKExl
Z2FjeUNETVNlc3Npb25DCiBzdGF0aWMgVWludDhBcnJheSogaW5pdERhdGFQcmVmaXgoKQogewog
ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgcHJlZml4RGF0YVtdID0geyAnbScsICdvJywgJ2MnLCAn
aycgfTsKLSAgICBzdGF0aWMgVWludDhBcnJheSogcHJlZml4ID0gVWludDhBcnJheTo6Y3JlYXRl
KHByZWZpeERhdGEsIFdURl9BUlJBWV9MRU5HVEgocHJlZml4RGF0YSkpLmxlYWtSZWYoKTsKKyAg
ICBzdGF0aWMgVWludDhBcnJheSYgcHJlZml4IHsgVWludDhBcnJheTo6Y3JlYXRlKHByZWZpeERh
dGEsIFdURl9BUlJBWV9MRU5HVEgocHJlZml4RGF0YSkpLmxlYWtSZWYoKSB9OwogCi0gICAgcmV0
dXJuIHByZWZpeDsKKyAgICByZXR1cm4gJnByZWZpeDsKIH0KIAogc3RhdGljIFVpbnQ4QXJyYXkq
IGtleVByZWZpeCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcHJlZml4RGF0
YVtdID0geydrJywgJ2UnLCAneSd9OwotICAgIHN0YXRpYyBVaW50OEFycmF5KiBwcmVmaXggPSBV
aW50OEFycmF5OjpjcmVhdGUocHJlZml4RGF0YSwgV1RGX0FSUkFZX0xFTkdUSChwcmVmaXhEYXRh
KSkubGVha1JlZigpOworICAgIHN0YXRpYyBVaW50OEFycmF5JiBwcmVmaXggeyBVaW50OEFycmF5
OjpjcmVhdGUocHJlZml4RGF0YSwgV1RGX0FSUkFZX0xFTkdUSChwcmVmaXhEYXRhKSkubGVha1Jl
ZigpIH07CiAKLSAgICByZXR1cm4gcHJlZml4OworICAgIHJldHVybiAmcHJlZml4OwogfQogCiBz
dGF0aWMgVWludDhBcnJheSoga2V5UmVxdWVzdCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGNoYXIgcmVxdWVzdERhdGFbXSA9IHsncicsICdlJywgJ3EnLCAndScsICdlJywgJ3MnLCAn
dCd9OwotICAgIHN0YXRpYyBVaW50OEFycmF5KiByZXF1ZXN0ID0gVWludDhBcnJheTo6Y3JlYXRl
KHJlcXVlc3REYXRhLCBXVEZfQVJSQVlfTEVOR1RIKHJlcXVlc3REYXRhKSkubGVha1JlZigpOwor
ICAgIHN0YXRpYyBVaW50OEFycmF5JiByZXF1ZXN0IHsgVWludDhBcnJheTo6Y3JlYXRlKHJlcXVl
c3REYXRhLCBXVEZfQVJSQVlfTEVOR1RIKHJlcXVlc3REYXRhKSkubGVha1JlZigpIH07CiAKLSAg
ICByZXR1cm4gcmVxdWVzdDsKKyAgICByZXR1cm4gJnJlcXVlc3Q7CiB9CiAKIHN0YXRpYyBTdHJp
bmcgZ2VuZXJhdGVTZXNzaW9uSWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tTdHJpbmcuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTdHJpbmcu
Y3BwCmluZGV4IDc4ZGU2MWU5OGE3NzkyNzgyYzUwMmE0MDQ3OGNiM2FkZDIxNWIxMDUuLjc2N2Fh
OGQ5MTRiMGNmNzUxOTZlMjBjMzYzYjgwNjM4ZmZkN2QzZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9XS1N0cmluZy5jcHAKQEAgLTEzNiw1ICsxMzYsNSBAQCBXS1N0cmluZ1JlZiBXS1N0
cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhKU1N0cmluZ1JlZiBqc1N0cmluZ1JlZikKIEpTU3RyaW5n
UmVmIFdLU3RyaW5nQ29weUpTU3RyaW5nKFdLU3RyaW5nUmVmIHN0cmluZ1JlZikKIHsKICAgICBK
U0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNy
ZWF0ZSh0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nKCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4g
T3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSh0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nKCkpLmxl
YWtSZWYoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXggMjlmYjAx
ZTIwYzQwMDg0ZjM5YTkzOTc2MTk3ZWRhODU1NDNjOWZjMS4uZWZhMDM0MTQwMmEwYWYzN2JiMTJl
M2U5ZjQzNGZjZjJjNTIzM2ZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAK
QEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIEpTT2JqZWN0UmVmIHRvSlNBcnJheShKU0NvbnRleHRS
ZWYgY29udGV4dCwgY29uc3QgVmVjdG9yPFQ+JiBkYXRhLCBKU1ZhbHUKIAogc3RhdGljIGlubGlu
ZSBKU1ZhbHVlUmVmIHRvSlNWYWx1ZShKU0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIE9wYXF1
ZUpTU3RyaW5nOjpjcmVhdGUoc3RyaW5nKS5nZXQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtl
U3RyaW5nKGNvbnRleHQsIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoc3RyaW5nKS5nZXQoKSk7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZVJlZiBjYWxsUHJvcGVydHlGdW5jdGlvbihKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0LCBjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRz
W10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTk2LDcgKzk2LDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlUmVmIGNhbGxQcm9wZXJ0eUZ1bmN0aW9uKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZgogICAgIEFTU0VSVF9BUkcob2JqZWN0LCBvYmplY3QpOwogICAgIEFTU0VSVF9B
Ukcob2JqZWN0LCBKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgb2JqZWN0KSk7CiAKLSAgICBKU09i
amVjdFJlZiBmdW5jdGlvbiA9IGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KEpTT2JqZWN0R2V0UHJv
cGVydHkoY29udGV4dCwgb2JqZWN0LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHByb3BlcnR5TmFt
ZSkuZ2V0KCksIGV4Y2VwdGlvbikpOworICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uID0gY29uc3Rf
Y2FzdDxKU09iamVjdFJlZj4oSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBvYmplY3QsIE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUocHJvcGVydHlOYW1lKS5nZXQoKSwgZXhjZXB0aW9uKSk7
CiAgICAgQVNTRVJUKEpTT2JqZWN0SXNGdW5jdGlvbihjb250ZXh0LCBmdW5jdGlvbikpOwogCiAg
ICAgcmV0dXJuIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgZnVuY3Rpb24sIG9iamVj
dCwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLCBleGNlcHRpb24pOwpAQCAtMTc3LDcgKzE3Nyw3
IEBAIEpTT2JqZWN0UmVmIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNjcmlwdE9iamVjdEZv
ckZyYW1lKFdlYkZyYW1lJiBmcmFtZSkKIAogICAgIFN0cmluZyBzY3JpcHQgPSBTdHJpbmdJbXBs
OjpjcmVhdGVXaXRob3V0Q29weWluZyhXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5U2NyaXB0U291
cmNlLCBzaXplb2YoV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZSkpOwogCi0g
ICAgSlNPYmplY3RSZWYgc2NyaXB0T2JqZWN0RnVuY3Rpb24gPSBjb25zdF9jYXN0PEpTT2JqZWN0
UmVmPihKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoc2Ny
aXB0KS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgJmV4Y2VwdGlvbikpOworICAgIEpTT2Jq
ZWN0UmVmIHNjcmlwdE9iamVjdEZ1bmN0aW9uID0gY29uc3RfY2FzdDxKU09iamVjdFJlZj4oSlNF
dmFsdWF0ZVNjcmlwdChjb250ZXh0LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHNjcmlwdCku
Z2V0KCksIG51bGxwdHIsIG51bGxwdHIsIDAsICZleGNlcHRpb24pKTsKICAgICBBU1NFUlQoSlNW
YWx1ZUlzT2JqZWN0KGNvbnRleHQsIHNjcmlwdE9iamVjdEZ1bmN0aW9uKSk7CiAKICAgICBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdID0geyBzZXNzaW9uSWRlbnRpZmllciwgZXZhbHVhdGVGdW5jdGlv
biwgY3JlYXRlVVVJREZ1bmN0aW9uIH07CkBAIC0yODAsNyArMjgwLDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBw
YWdlSUQsIHVpbnQKIAogICAgIFN0cmluZyBleGNlcHRpb25NZXNzYWdlOwogICAgIGlmIChKU1Zh
bHVlSXNPYmplY3QoY29udGV4dCwgZXhjZXB0aW9uKSkgewotICAgICAgICBKU1ZhbHVlUmVmIG5h
bWVWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgY29uc3RfY2FzdDxKU09iamVj
dFJlZj4oZXhjZXB0aW9uKSwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZSgibmFtZSJfcykuZ2V0KCks
IG51bGxwdHIpOworICAgICAgICBKU1ZhbHVlUmVmIG5hbWVWYWx1ZSA9IEpTT2JqZWN0R2V0UHJv
cGVydHkoY29udGV4dCwgY29uc3RfY2FzdDxKU09iamVjdFJlZj4oZXhjZXB0aW9uKSwgT3BhcXVl
SlNTdHJpbmc6OnRyeUNyZWF0ZSgibmFtZSJfcykuZ2V0KCksIG51bGxwdHIpOwogICAgICAgICBh
dXRvIGV4Y2VwdGlvbk5hbWUgPSBhZG9wdFJlZihKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQs
IG5hbWVWYWx1ZSwgbnVsbHB0cikpLT5zdHJpbmcoKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbk5h
bWUgPT0gIk5vZGVOb3RGb3VuZCIpCiAgICAgICAgICAgICBlcnJvclR5cGUgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpOb2RlTm90Rm91bmQpOwpA
QCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZXZhbHVh
dGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgcGFnZUlELCB1aW50CiAgICAgICAgIGVsc2Ug
aWYgKGV4Y2VwdGlvbk5hbWUgPT0gIkludmFsaWRTZWxlY3RvciIpCiAgICAgICAgICAgICBlcnJv
clR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNv
bnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdl
OjpJbnZhbGlkU2VsZWN0b3IpOwogCi0gICAgICAgIEpTVmFsdWVSZWYgbWVzc2FnZVZhbHVlID0g
SlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihleGNl
cHRpb24pLCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKCJtZXNzYWdlIl9zKS5nZXQoKSwgbnVsbHB0
cik7CisgICAgICAgIEpTVmFsdWVSZWYgbWVzc2FnZVZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0
eShjb250ZXh0LCBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihleGNlcHRpb24pLCBPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKCJtZXNzYWdlIl9zKS5nZXQoKSwgbnVsbHB0cik7CiAgICAgICAgIGV4
Y2VwdGlvbk1lc3NhZ2UgPSBhZG9wdFJlZihKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIG1l
c3NhZ2VWYWx1ZSwgbnVsbHB0cikpLT5zdHJpbmcoKTsKICAgICB9IGVsc2UKICAgICAgICAgZXhj
ZXB0aW9uTWVzc2FnZSA9IGFkb3B0UmVmKEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgZXhj
ZXB0aW9uLCBudWxscHRyKSktPnN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggM2QxZmU3NWE5MDBiN2IyNTZjN2Uy
NTM5ZTAyM2IzYTczZjcxZjk2NS4uNDliMjIyNTQwNWI4MmY4MThkM2VmYzAyNzU0OWU0MzllYmQ5
MTdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tCkBAIC0xMTE4LDcgKzExMTgsNyBAQCB2b2lkIFBERlBsdWdpbjo6cnVuU2NyaXB0
c0luUERGRG9jdW1lbnQoKQogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjdHggPSBKU0dsb2JhbENv
bnRleHRDcmVhdGUoMCk7CiAgICAgSlNPYmplY3RSZWYganNQREZEb2MgPSBtYWtlSlNQREZEb2Mo
Y3R4KTsKICAgICBmb3IgKGF1dG8mIHNjcmlwdCA6IHNjcmlwdHMpCi0gICAgICAgIEpTRXZhbHVh
dGVTY3JpcHQoY3R4LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHNjcmlwdC5nZXQoKSkuZ2V0KCks
IGpzUERGRG9jLCBudWxscHRyLCAwLCBudWxscHRyKTsKKyAgICAgICAgSlNFdmFsdWF0ZVNjcmlw
dChjdHgsIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoc2NyaXB0LmdldCgpKS5nZXQoKSwganNQ
REZEb2MsIG51bGxwdHIsIDAsIG51bGxwdHIpOwogICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2Uo
Y3R4KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9X
ZWJQREZWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZW
aWV3SU9TLm1tCmluZGV4IDE4NDFiOTg1Yzg1MGNhZjA0Mzc0YWE4MTNhMjA1MGJkZjAwNDU3YTcu
LmY4YjY2YTNiNzRjZTFmMzI1MDE1Yzk1ZjdhZGNjOTk1ZDdmZThmNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KQEAgLTMyNiw3ICsz
MjYsNyBAQCAtICh2b2lkKWZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOihXZWJEYXRhU291
cmNlICopZGF0YVNvdXJjZQogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjdHggPSBKU0dsb2JhbENv
bnRleHRDcmVhdGUoMCk7CiAgICAgSlNPYmplY3RSZWYganNQREZEb2MgPSBtYWtlSlNQREZEb2Mo
Y3R4LCBkYXRhU291cmNlKTsKICAgICBmb3IgKE5TU3RyaW5nICpzY3JpcHQgaW4gc2NyaXB0cykK
LSAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoc2Ny
aXB0KS5nZXQoKSwganNQREZEb2MsIG51bGxwdHIsIDAsIG51bGxwdHIpOworICAgICAgICBKU0V2
YWx1YXRlU2NyaXB0KGN0eCwgT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShzY3JpcHQpLmdldCgp
LCBqc1BERkRvYywgbnVsbHB0ciwgMCwgbnVsbHB0cik7CiAgICAgSlNHbG9iYWxDb250ZXh0UmVs
ZWFzZShjdHgpOwogCiAgICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5OllFU107CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVy
Lm1tCmluZGV4IDFlODZiYTA3NDRiNDRmZjY0ZDI0MTY3YmU3ODQ4YWFmN2U5NTdlMzMuLmU4ZWE1
MmMwZTVkZDU3ZDhiZWJiNjE3Njk2NDM3ZTNlMjI1ZGI5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCkBA
IC0zMDcsNyArMzA3LDcgQEAgLSAodm9pZClfZXZhbHVhdGVKU0ZvckRvY3VtZW50OihDR1BERkRv
Y3VtZW50UmVmKXBkZkRvY3VtZW50CiAgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjdHggPSBK
U0dsb2JhbENvbnRleHRDcmVhdGUoMCk7CiAgICAgICAgIEpTT2JqZWN0UmVmIGpzUERGRG9jID0g
bWFrZUpTUERGRG9jKGN0eCwgX2RhdGFTb3VyY2UpOwogICAgICAgICBmb3IgKE5TU3RyaW5nICpz
Y3JpcHQgaW4gc2NyaXB0cykKLSAgICAgICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4LCBPcGFx
dWVKU1N0cmluZzo6Y3JlYXRlKHNjcmlwdCkuZ2V0KCksIGpzUERGRG9jLCBudWxscHRyLCAwLCBu
dWxscHRyKTsKKyAgICAgICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4LCBPcGFxdWVKU1N0cmlu
Zzo6dHJ5Q3JlYXRlKHNjcmlwdCkuZ2V0KCksIGpzUERGRG9jLCBudWxscHRyLCAwLCBudWxscHRy
KTsKICAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShjdHgpOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0
aW9uLm1tCmluZGV4IGFhZGZlZDIxOGZjZWY0YjEyZmI4OWFhNzc3YTE5NGY1ZmQyN2EwNDUuLjM0
NjhkZGRjZDRhNzdiYmE3Mzg2OWE4Nzk3NDc1OTEwOGNlZjM2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbQpA
QCAtMTM0LDcgKzEzNCw3IEBAIC0gKHZvaWQpZmluaXNoZWRMb2FkaW5nV2l0aERhdGFTb3VyY2U6
KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCiAgICAgSlNHbG9iYWxDb250ZXh0UmVmIGN0eCA9
IEpTR2xvYmFsQ29udGV4dENyZWF0ZSgwKTsKICAgICBKU09iamVjdFJlZiBqc1BERkRvYyA9IG1h
a2VKU1BERkRvYyhjdHgsIGRhdGFTb3VyY2UpOwogICAgIGZvciAoTlNTdHJpbmcgKnNjcmlwdCBp
biBzY3JpcHRzKQotICAgICAgICBKU0V2YWx1YXRlU2NyaXB0KGN0eCwgT3BhcXVlSlNTdHJpbmc6
OmNyZWF0ZShzY3JpcHQpLmdldCgpLCBqc1BERkRvYywgbnVsbHB0ciwgMCwgbnVsbHB0cik7Cisg
ICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHNj
cmlwdCkuZ2V0KCksIGpzUERGRG9jLCBudWxscHRyLCAwLCBudWxscHRyKTsKICAgICBKU0dsb2Jh
bENvbnRleHRSZWxlYXNlKGN0eCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351962</attachid>
            <date>2018-10-10 08:21:32 -0700</date>
            <delta_ts>2018-10-10 08:44:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190429-20181011002131.patch</filename>
            <type>text/plain</type>
            <size>125651</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NWRkYTc3YTg1YTkxNzUyZTZkNjZjM2U4MGI2NGEwZjE4YzRhNzIyLi44ZWU5ODNjZTJmNDUzNmRj
NWMxOGZhZmQ4NWY2ODAxMGZmMmFkYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjQgQEAKKzIwMTgtMTAtMTAgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xv
d3N0YXJ0Lm9yZz4KKworICAgICAgICBbSlNDXSBSZW5hbWUgY3JlYXRlWFhYIHRvIHRyeUNyZWF0
ZVhYWCBpZiBpdCBjYW4gcmV0dXJuIFJlZlB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU29tZSBjcmVhdGVYWFggZnVuY3Rpb25zIGNhbiBmYWlsLiBC
dXQgc29tZXRpbWVzIHRoZSBjYWxsZXIgZG9lcyBub3QgcGVyZm9ybSBlcnJvciBjaGVja2luZy4K
KyAgICAgICAgVG8gbWFrZSBpdCBleHBsaWNpdCB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBjYW4gZmFp
bCwgd2UgcmVuYW1lIHRoZXNlIGZ1bmN0aW9ucyBmcm9tIGNyZWF0ZVhYWAorICAgICAgICB0byB0
cnlDcmVhdGVYWFguIEluIHRoaXMgcGF0Y2gsIHdlIGZvY3VzIG9uIG5vbi1KUy1tYW5hZ2VkIGZh
Y3RvcnkgZnVuY3Rpb25zLiBJZiB0aGUgZmFjdG9yeQorICAgICAgICBmdW5jdGlvbiBkb2VzIG5v
dCBmYWlsLCBpdCBzaG91bGQgcmV0dXJuIFJlZjw+LiBPdGhlcndpc2UsIGl0IHNob3VsZCBiZSBu
YW1lZCBhcyB0cnlDcmVhdGVYWFgKKyAgICAgICAgYW5kIGl0IHNob3VsZCByZXR1cm4gUmVmUHRy
PD4uCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWlubHkgZm9jdXNlcyBvbiBUeXBlZEFycmF5IGZh
Y3RvcnkgZnVuY3Rpb25zLiBQcmV2aW91c2x5LCB0aGVzZSBmdW5jdGlvbnMgYXJlCisgICAgICAg
IGBSZWZQdHI8WFhYQXJyYXk+IGNyZWF0ZSguLi4pYC4gVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZW0g
dG8gYFJlZlB0cjxYWFhBcnJheT4gdHJ5Q3JlYXRlKC4uLilgLgorICAgICAgICBBbmQgd2UgYWxz
byBpbnRyb2R1Y2UgYFJlZjxYWFhBcnJheT4gY3JlYXRlKC4uLilgIGZ1bmN0aW9uIHdoaWNoIGlu
dGVybmFsbHkgcGVyZm9ybXMKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQgb24gdGhlIHJlc3VsdCBv
ZiBgdHJ5Q3JlYXRlKC4uLilgLgorCisgICAgICAgIEFuZCB3ZSBhbHNvIGNvbnZlcnQgT3BhcXVl
SlNTdHJpbmc6OmNyZWF0ZSB0byBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlIHNpbmNlIGl0IGNh
biBmYWlsLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFjdHVhbGx5IGZpbmRzIG9uZSBwbGFjZSB3
aGljaCBkb2VzIG5vdCBwZXJmb3JtIGFueSBudWxsIGNoZWNraW5ncyB3aGlsZSBpdCB1c2VzCisg
ICAgICAgIGBSZWZQdHI8PiBjcmVhdGUoLi4uKWAgZnVuY3Rpb24uCisKKyAgICAgICAgKiBBUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpwdXRCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Y2FsbGJhY2tHZXR0ZXIpOgorICAgICAgICAqIEFQSS9KU0NsYXNzUmVmLmg6CisgICAg
ICAgIChTdGF0aWNWYWx1ZUVudHJ5OjpTdGF0aWNWYWx1ZUVudHJ5KToKKyAgICAgICAgKiBBUEkv
SlNDb250ZXh0Lm1tOgorICAgICAgICAoLVtKU0NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6d2l0aFNv
dXJjZVVSTDpdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IHNldE5hbWU6XSk6CisgICAgICAgICog
QVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRDb3B5TmFtZSk6
CisgICAgICAgIChKU0NvbnRleHRDcmVhdGVCYWNrdHJhY2UpOgorICAgICAgICAqIEFQSS9KU09i
amVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAqIEFQSS9KU1N0cmluZ1JlZi5jcHA6
CisgICAgICAgIChKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KToKKyAgICAgICAg
KiBBUEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdSZWd1bGFy
RXhwcmVzc2lvbkZyb21QYXR0ZXJuOmZsYWdzOmluQ29udGV4dDpdKToKKyAgICAgICAgKCtbSlNW
YWx1ZSB2YWx1ZVdpdGhOZXdFcnJvckZyb21NZXNzYWdlOmluQ29udGV4dDpdKToKKyAgICAgICAg
KCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246aW5Db250ZXh0Ol0p
OgorICAgICAgICAocGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uKToKKyAgICAgICAgKC1bSlNWYWx1
ZSBpbnZva2VNZXRob2Q6d2l0aEFyZ3VtZW50czpdKToKKyAgICAgICAgKGNvbnRhaW5lclZhbHVl
VG9PYmplY3QpOgorICAgICAgICAob2JqZWN0VG9WYWx1ZVdpdGhvdXRDb3B5KToKKyAgICAgICAg
KG9iamVjdFRvVmFsdWUpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmNwcDoKKyAgICAgICAg
KEpTVmFsdWVDcmVhdGVKU09OU3RyaW5nKToKKyAgICAgICAgKEpTVmFsdWVUb1N0cmluZ0NvcHkp
OgorICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmluZy5jcHA6CisgICAgICAgIChPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUpOiBEZWxl
dGVkLgorICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmluZy5oOgorICAgICAgICAqIEFQSS9nbGli
L0pTQ0NvbnRleHQuY3BwOgorICAgICAgICAoZXZhbHVhdGVTY3JpcHRJbkNvbnRleHQpOgorICAg
ICAgICAqIEFQSS9nbGliL0pTQ1ZhbHVlLmNwcDoKKyAgICAgICAgKGpzY192YWx1ZV9uZXdfc3Ry
aW5nX2Zyb21fYnl0ZXMpOgorICAgICAgICAqIGZ0bC9GVExMYXp5U2xvd1BhdGguaDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpMYXp5U2xvd1BhdGg6OmNyZWF0ZUdlbmVyYXRvcik6CisgICAgICAgICog
ZnRsL0ZUTExhenlTbG93UGF0aENhbGwuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpjcmVhdGVMYXp5
Q2FsbEdlbmVyYXRvcik6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXQuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6Ok9TUkV4aXREZXNjcmlwdG9yOjplbWl0T1NSRXhpdCk6CisgICAgICAgIChKU0M6
OkZUTDo6T1NSRXhpdERlc2NyaXB0b3I6OmVtaXRPU1JFeGl0TGF0ZXIpOgorICAgICAgICAoSlND
OjpGVEw6Ok9TUkV4aXREZXNjcmlwdG9yOjpwcmVwYXJlT1NSRXhpdEhhbmRsZSk6CisgICAgICAg
ICogZnRsL0ZUTE9TUkV4aXQuaDoKKyAgICAgICAgKiBmdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlv
bkhhbmRsZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxl
OjpjcmVhdGVIYW5kbGUpOgorICAgICAgICAqIGZ0bC9GVExQYXRjaHBvaW50RXhjZXB0aW9uSGFu
ZGxlLmg6CisgICAgICAgICogaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg6CisgICAgICAg
IChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRWRlblRpbWVyKToKKyAgICAgICAg
KEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIGhlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oOgorICAgICAgICAoSlNDOjpHQ0Fj
dGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUZ1bGxUaW1lcik6CisgICAgICAgIChKU0M6OkdDQWN0
aXZpdHlDYWxsYmFjazo6Y3JlYXRlRnVsbFRpbWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFw
L0dDQWN0aXZpdHlDYWxsYmFjay5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAg
IChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAqIGluc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2Uu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpBc3luY1N0YWNrVHJhY2U6OmNyZWF0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5oOgorICAgICAgICAqIGpzYy5jcHA6Cisg
ICAgICAgIChmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKiBydW50aW1l
L0FycmF5QnVmZmVyLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcu
aDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0
aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2li
bHlTaGFyZWRJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6cG9zc2libHlTaGFyZWRUeXBlZEltcGwpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBlZEltcGwpOgorICAgICAgICAqIHdhc20v
V2FzbU1lbW9yeS5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAqIHdhc20vV2Fz
bU1lbW9yeS5oOgorICAgICAgICAqIHdhc20vV2FzbVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6VGFibGU6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6Oldhc206OlRhYmxlOjpjcmVh
dGUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbVRhYmxlLmg6CisgICAgICAgICogd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVt
b3J5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6SlNXZWJBc3NlbWJs
eU1lbW9yeSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeSk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6
OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2Vi
QXNzZW1ibHlUYWJsZSk6CisKIDIwMTgtMTAtMDkgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNob3cgcmVkaXJlY3QgcmVxdWVzdHMg
aW4gTmV0d29yayBhbmQgVGltZWxpbmVzIHRhYnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NjMzYTRjNTQ3MGM0
YWVhY2NkMTRlOWJiODQ2NjM1OTZkMGZiMTliLi5mMWJlYmJhYWZhOTJiMjhiMWQ3NTc1OGMxZDI3
MWNmMjI2MWM5ZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE0IEBACisyMDE4LTEwLTEwICBZ
dXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgW0pT
Q10gUmVuYW1lIGNyZWF0ZVhYWCB0byB0cnlDcmVhdGVYWFggaWYgaXQgY2FuIHJldHVybiBSZWZQ
dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDQy
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBg
dHJ5Q3JlYXRlYCBvciBuZXcgYGNyZWF0ZWAuIElmIHdlIHVzZSBuZXcgYGNyZWF0ZWAsIHdlIGNh
biB1c2UgUmVmPD4gYW5kIHJlbW92ZSBudWxsIGNoZWNrLgorCisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVNlc3Npb25DbGVhcktleTo6Y2FjaGVkS2V5Rm9yS2V5SUQgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0J1ZmZlcjo6QXVkaW9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9C
dWZmZXI6OmdldENoYW5uZWxEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSRXllUGFy
YW1ldGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWUkV5ZVBhcmFtZXRlcnM6Om9mZnNldCBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjptYXRyaXhUb0FycmF5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSUG9z
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcHRpb25hbEZsb2F0M1RvSlNDQXJyYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6VlJQb3NlOjpwb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWUlBvc2U6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZS
U3RhZ2VQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZSU3RhZ2VQYXJhbWV0ZXJz
OjpzaXR0aW5nVG9TdGFuZGluZ1RyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6ZW5xdWV1ZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNs
b25lRGVzZXJpYWxpemVyOjpyZWFkQXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBjcnlwdG8v
Z2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9L
ZXlSU0E6OmFsZ29yaXRobSBjb25zdCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9LZXlS
U0FNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjphbGdvcml0aG0gY29u
c3QpOgorICAgICAgICAqIGNzcy9ET01NYXRyaXhSZWFkT25seS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01NYXRyaXhSZWFkT25seTo6dG9GbG9hdDMyQXJyYXkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NTWF0cml4UmVhZE9ubHk6OnRvRmxvYXQ2NEFycmF5IGNvbnN0KToKKyAgICAg
ICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmNyZWF0
ZSk6CisgICAgICAgICogZG9tL1RleHRFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRFbmNvZGVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6SW1hZ2VEYXRhKToKKyAgICAgICAgKiBodG1s
L0ltYWdlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRWZXJ0ZXhBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFdlYkdMSW50QXJyYXlQ
YXJhbWV0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0
ZUZyb21Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JM
b2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAgICAgIChXZWJD
b3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpyZWxlYXNl
S2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6
dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
OjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpnZW5lcmF0ZUtleVJlcXVl
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVlN0cmVhbVNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZT
dHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
U2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1w
bGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpnZXRS
R0JBSW1hZ2VEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldElt
YWdlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRh
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRSZXN1bHQpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdl
UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlw
bGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEYXRhRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRh
OjpnZXREYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpqc1ZhbHVlV2l0aERp
Y3Rpb25hcnlJbkNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tUcmFja0JveDo6TW9ja1RyYWNrQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJbml0aWFs
aXphdGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9uQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tTYW1wbGVCb3g6Ok1vY2tTYW1wbGVCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMv
U2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKToK
KyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aW5pdERhdGFQcmVmaXgpOgorICAgICAgICAoV2ViQ29yZTo6a2V5UHJlZml4KToKKyAgICAgICAg
KFdlYkNvcmU6OmtleVJlcXVlc3QpOgorCiAyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8eXVz
dWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CiAKICAgICAgICAgWE1MSHR0cFJlcXVlc3Qgc2hvdWxk
IHVzZSByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZC9yZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQg
aW5zdGVhZCBvZiBkZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmVmMDUw
YTA4NGFkODVkYmFjMDg3N2MwMWVhNTkzMjk1NDg0MGQ1OS4uMGEzYzg0ZmMwMzA3MGNlM2ZjMTlj
MzdkZjk3Yjk3M2JkZTdiN2YwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0xMC0x
MCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAg
IFtKU0NdIFJlbmFtZSBjcmVhdGVYWFggdG8gdHJ5Q3JlYXRlWFhYIGlmIGl0IGNhbiByZXR1cm4g
UmVmUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTA0MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgYHRyeUNyZWF0ZWAgb3IgbmV3IGBjcmVhdGVgLiBJZiB3ZSB1c2UgbmV3IGBjcmVhdGVgLCB3
ZSBjYW4gdXNlIFJlZjw+IGFuZCByZW1vdmUgbnVsbCBjaGVjay4KKworICAgICAgICAqIFNoYXJl
ZC9BUEkvYy9XS1N0cmluZy5jcHA6CisgICAgICAgIChXS1N0cmluZ0NvcHlKU1N0cmluZyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0Ojp0b0pTVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpjYWxs
UHJvcGVydHlGdW5jdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OnNjcmlwdE9iamVjdEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OnJ1blNjcmlwdHNJblBERkRvY3VtZW50KToKKwogMjAxOC0xMC0wOSAgQW50b2lu
ZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgZnJhbWVz
KCkgdGltaW5nIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggOGFmM2Mz
Y2Q1NWNlYTZmNTBkMzc1ODAxZGI3ZmI5MWRmZTljNjdkNS4uNmU2YTNlMzM3MDM5MjdmZDRmMGY5
MjgwNmEwODc1ZDQ4MzQ4MjJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dz
dGFydC5vcmc+CisKKyAgICAgICAgW0pTQ10gUmVuYW1lIGNyZWF0ZVhYWCB0byB0cnlDcmVhdGVY
WFggaWYgaXQgY2FuIHJldHVybiBSZWZQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBgdHJ5Q3JlYXRlYCBvciBuZXcgYGNyZWF0ZWAuIElmIHdl
IHVzZSBuZXcgYGNyZWF0ZWAsIHdlIGNhbiB1c2UgUmVmPD4gYW5kIHJlbW92ZSBudWxsIGNoZWNr
LgorCisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tOgorICAgICAgICAoLVtXZWJQ
REZWaWV3IGZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOl0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3UGxhY2Vo
b2xkZXIgX2V2YWx1YXRlSlNGb3JEb2N1bWVudDpdKToKKwogMjAxOC0xMC0wMiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bnVz
ZWQgbGlua2VkLW9uLW9yLWJlZm9yZS1pT1M1IGNoZWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggZDU0YTI3YzZmZGJiMGRjZDdlMTA1MDZlNTk3ZjVmZWQxMDM1YjVlNC4uMzhhNjlm
ZjZiZDAzMWQ3OTFiZWVjZDYwOTVjYjAzYTdiYTI5MTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8eXVz
dWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgW0pTQ10gUmVuYW1lIGNyZWF0ZVhY
WCB0byB0cnlDcmVhdGVYWFggaWYgaXQgY2FuIHJldHVybiBSZWZQdHIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDQyOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBgdHJ5Q3JlYXRlYCBvciBuZXcg
YGNyZWF0ZWAuIElmIHdlIHVzZSBuZXcgYGNyZWF0ZWAsIHdlIGNhbiB1c2UgUmVmPD4gYW5kIHJl
bW92ZSBudWxsIGNoZWNrLgorCisgICAgICAgICogV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlv
bi5tbToKKyAgICAgICAgKC1bV2ViUERGUmVwcmVzZW50YXRpb24gZmluaXNoZWRMb2FkaW5nV2l0
aERhdGFTb3VyY2U6XSk6CisKIDIwMTgtMTAtMDggIEp1c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWJHUFU6IFJlbmFtZSBvbGQgV2ViR1BVIHByb3RvdHlwZSB0
byBXZWJNZXRhbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCAxNWI4NjA4NjZkZWE5MjI4NGI3OGEwZDcwN2Q4MDE2
NjU5ODc3MWQxLi40ZjRiN2Q3MWVlMDkyOTU1N2MyOGUyMGI4YWQ4N2MzZGI1ZTdjYmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5j
dGlvbnMuaApAQCAtMTU1LDcgKzE1NSw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBlCiAgICAg
ICAgICAgICAvLyBvcHRpb25hbCBvcHRpbWl6YXRpb24gdG8gYnlwYXNzIGdldFByb3BlcnR5IGlu
IGNhc2VzIHdoZW4gd2Ugb25seSBuZWVkIHRvIGtub3cgaWYgdGhlIHByb3BlcnR5IGV4aXN0cwog
ICAgICAgICAgICAgaWYgKEpTT2JqZWN0SGFzUHJvcGVydHlDYWxsYmFjayBoYXNQcm9wZXJ0eSA9
IGpzQ2xhc3MtPmhhc1Byb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5h
bWVSZWYpCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3Ry
aW5nOjpjcmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9
IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobmFtZSk7CiAgICAgICAgICAgICAgICAgSlNMb2Nr
OjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGV4ZWMpOwogICAgICAgICAgICAgICAgIGlmICho
YXNQcm9wZXJ0eShjdHgsIHRoaXNSZWYsIHByb3BlcnR5TmFtZVJlZi5nZXQoKSkpIHsKICAgICAg
ICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBjYWxsYmFja0dldHRl
cik7CkBAIC0xNjMsNyArMTYzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGUKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgaWYgKEpTT2JqZWN0R2V0UHJvcGVydHlDYWxs
YmFjayBnZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPmdldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYpCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFt
ZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAg
IHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobmFtZSk7CiAgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWYgdmFsdWU7CiAgICAgICAgICAgICAgICAgewpAQCAtMjUyLDcgKzI1Miw3IEBAIGJv
b2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0g
dGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVu
dENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIHNl
dFByb3BlcnR5ID0ganNDbGFzcy0+c2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAo
IXByb3BlcnR5TmFtZVJlZikKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lUmVmID0g
T3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVy
dHlOYW1lUmVmID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShuYW1lKTsKICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgYm9vbCByZXN1
bHQ7CiAgICAgICAgICAgICAgICAgewpAQCAtMzE2LDcgKzMxNiw3IEBAIGJvb2wgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lCiAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFz
c1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAg
ICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBzZXRQcm9wZXJ0eSA9IGpzQ2xhc3Mt
PnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKLSAgICAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWYgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHByb3Bl
cnR5TmFtZS5pbXBsKCkpOworICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1
ZUpTU3RyaW5nOjp0cnlDcmVhdGUocHJvcGVydHlOYW1lLmltcGwoKSk7CiAgICAgICAgICAgICBK
U1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICBib29sIHJlc3VsdDsKICAgICAg
ICAgICAgIHsKQEAgLTM3NSw3ICszNzUsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBybwogICAg
ICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpz
Q2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgaWYg
KEpTT2JqZWN0RGVsZXRlUHJvcGVydHlDYWxsYmFjayBkZWxldGVQcm9wZXJ0eSA9IGpzQ2xhc3Mt
PmRlbGV0ZVByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYp
Ci0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjpj
cmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1
ZUpTU3RyaW5nOjp0cnlDcmVhdGUobmFtZSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBl
eGNlcHRpb24gPSAwOwogICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0OwogICAgICAgICAgICAg
ICAgIHsKQEAgLTY3OSw3ICs2NzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZAogICAgICAg
ICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmotPmNsYXNzUmVmKCk7IGpzQ2xhc3M7
IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2Jq
ZWN0R2V0UHJvcGVydHlDYWxsYmFjayBnZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPmdldFByb3BlcnR5
KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYpCi0gICAgICAgICAgICAg
ICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUobmFtZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlD
cmVhdGUobmFtZSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwog
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgdmFsdWU7CiAgICAgICAgICAgICAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaAppbmRleCBmYTAyNGQzNDRmNDZjNTFiYWQy
MGUxNTQwZmFmZTkyYWE1YWNjMTk1Li45MGM0ZjUzOTAwNWM4MmIwZTIzYWI5MTIwNzY5OWFlYTRh
MDM5YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaApAQCAtMzcsNyAr
MzcsMTAgQEAgc3RydWN0IFN0YXRpY1ZhbHVlRW50cnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFN0YXRpY1ZhbHVlRW50cnkoSlNPYmplY3RHZXRQcm9wZXJ0
eUNhbGxiYWNrIF9nZXRQcm9wZXJ0eSwgSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIF9zZXRQ
cm9wZXJ0eSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgX2F0dHJpYnV0ZXMsIFN0cmluZyYgcHJvcGVy
dHlOYW1lKQotICAgIDogZ2V0UHJvcGVydHkoX2dldFByb3BlcnR5KSwgc2V0UHJvcGVydHkoX3Nl
dFByb3BlcnR5KSwgYXR0cmlidXRlcyhfYXR0cmlidXRlcyksIHByb3BlcnR5TmFtZVJlZihPcGFx
dWVKU1N0cmluZzo6Y3JlYXRlKHByb3BlcnR5TmFtZSkpCisgICAgICAgIDogZ2V0UHJvcGVydHko
X2dldFByb3BlcnR5KQorICAgICAgICAsIHNldFByb3BlcnR5KF9zZXRQcm9wZXJ0eSkKKyAgICAg
ICAgLCBhdHRyaWJ1dGVzKF9hdHRyaWJ1dGVzKQorICAgICAgICAsIHByb3BlcnR5TmFtZVJlZihP
cGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHByb3BlcnR5TmFtZSkpCiAgICAgewogICAgIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggN2Y4NTY5NjVlMjg3
NzExNzlhYjQ4ZmJlMDNiMzgxZTI3YjM4OTkxNS4uMjc1NjZmNDFiOTdlMWIzOWJkZGU5YjQ4YWFh
NTU5ZjE0Y2I3MzllYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHQubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAg
LTEwMCw4ICsxMDAsOCBAQCAtIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICop
c2NyaXB0CiAtIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0IHdp
dGhTb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMCiB7CiAgICAgSlNWYWx1ZVJlZiBleGNlcHRp
b25WYWx1ZSA9IG51bGxwdHI7Ci0gICAgYXV0byBzY3JpcHRKUyA9IE9wYXF1ZUpTU3RyaW5nOjpj
cmVhdGUoc2NyaXB0KTsKLSAgICBhdXRvIHNvdXJjZVVSTEpTID0gT3BhcXVlSlNTdHJpbmc6OmNy
ZWF0ZShbc291cmNlVVJMIGFic29sdXRlU3RyaW5nXSk7CisgICAgYXV0byBzY3JpcHRKUyA9IE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoc2NyaXB0KTsKKyAgICBhdXRvIHNvdXJjZVVSTEpTID0g
T3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShbc291cmNlVVJMIGFic29sdXRlU3RyaW5nXSk7CiAg
ICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU0V2YWx1YXRlU2NyaXB0KG1fY29udGV4dCwgc2NyaXB0
SlMuZ2V0KCksIG51bGxwdHIsIHNvdXJjZVVSTEpTLmdldCgpLCAwLCAmZXhjZXB0aW9uVmFsdWUp
OwogCiAgICAgaWYgKGV4Y2VwdGlvblZhbHVlKQpAQCAtMjAwLDcgKzIwMCw3IEBAIC0gKE5TU3Ry
aW5nICopbmFtZQogCiAtICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIEpT
R2xvYmFsQ29udGV4dFNldE5hbWUobV9jb250ZXh0LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKG5h
bWUpLmdldCgpKTsKKyAgICBKU0dsb2JhbENvbnRleHRTZXROYW1lKG1fY29udGV4dCwgT3BhcXVl
SlNTdHJpbmc6OnRyeUNyZWF0ZShuYW1lKS5nZXQoKSk7CiB9CiAKIC0gKEJPT0wpX3JlbW90ZUlu
c3BlY3Rpb25FbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5j
cHAKaW5kZXggZjNjMGZkMWM3ZTA2ZDM0MzAwMmMxNGUzZWNhYTMwNjQzZDI3MmFkNy4uZTE4ZGZk
MjFmZjI4NDAwN2QwMDM5ZTY0MzJkOWVjM2M0ZjFmMzE3NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIEpTU3RyaW5nUmVm
IEpTR2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCiAgICAgaWYg
KG5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIE9wYXF1ZUpT
U3RyaW5nOjpjcmVhdGUobmFtZSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmlu
Zzo6dHJ5Q3JlYXRlKG5hbWUpLmxlYWtSZWYoKTsKIH0KIAogdm9pZCBKU0dsb2JhbENvbnRleHRT
ZXROYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUpCkBAIC0zMTYs
NyArMzE2LDcgQEAgSlNTdHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQ29udGV4
dFJlZiBjdHgsIHVuc2lnbmVkIG1heFN0YWNrU2l6ZSkKICAgICBCYWNrdHJhY2VGdW5jdG9yIGZ1
bmN0b3IoYnVpbGRlciwgbWF4U3RhY2tTaXplKTsKICAgICBmcmFtZS0+aXRlcmF0ZShmdW5jdG9y
KTsKIAotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGJ1aWxkZXIudG9TdHJpbmco
KSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGJ1aWxk
ZXIudG9TdHJpbmcoKSkubGVha1JlZigpOwogfQogCiBib29sIEpTR2xvYmFsQ29udGV4dEdldFJl
bW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IGQ4ZDJkZjEwMDRhYTMzZWU5MWM3
NDJhOWIxMDY3ZDU4ZDA1ZTBjYWYuLjUxMTY5YzRkNGQ4YjU4YjRkNDY1NWJiMWY1YzU4NmVmZTM5
MzRkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC04
MjAsNyArODIwLDcgQEAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBKU09iamVjdENvcHlQcm9wZXJ0
eU5hbWVzKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG8KICAgICBzaXplX3Qgc2l6ZSA9
IGFycmF5LnNpemUoKTsKICAgICBwcm9wZXJ0eU5hbWVzLT5hcnJheS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHNpemUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAg
ICAgICBwcm9wZXJ0eU5hbWVzLT5hcnJheS51bmNoZWNrZWRBcHBlbmQoT3BhcXVlSlNTdHJpbmc6
OmNyZWF0ZShhcnJheVtpXS5zdHJpbmcoKSkucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIHBy
b3BlcnR5TmFtZXMtPmFycmF5LnVuY2hlY2tlZEFwcGVuZChPcGFxdWVKU1N0cmluZzo6dHJ5Q3Jl
YXRlKGFycmF5W2ldLnN0cmluZygpKS5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgIHJldHVybiBK
U1Byb3BlcnR5TmFtZUFycmF5UmV0YWluKHByb3BlcnR5TmFtZXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAppbmRleCAzM2Y1OWEzNjMzNDE3MWIxNDU1NmM2
YmUzMzQ4ZjZjMTIwMTJmMTcyLi5iYjcyMGRiZThkNzFhODI4ZGQ4NmQ4ZmQ3OGE5ZTM1OGRmM2E3
MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtOTks
NyArOTksNyBAQCBKU1NjcmlwdFJlZiBKU1NjcmlwdENyZWF0ZVJlZmVyZW5jaW5nSW1tb3J0YWxB
U0NJSVRleHQoSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dAogICAgIFBhcnNlckVycm9yIGVycm9y
OwogICAgIGlmICghcGFyc2VTY3JpcHQodm0sIFNvdXJjZUNvZGUocmVzdWx0LmNvcHlSZWYoKSks
IGVycm9yKSkgewogICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKQotICAgICAgICAgICAgKmVycm9y
TWVzc2FnZSA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoZXJyb3IubWVzc2FnZSgpKS5sZWFrUmVm
KCk7CisgICAgICAgICAgICAqZXJyb3JNZXNzYWdlID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0
ZShlcnJvci5tZXNzYWdlKCkpLmxlYWtSZWYoKTsKICAgICAgICAgaWYgKGVycm9yTGluZSkKICAg
ICAgICAgICAgICplcnJvckxpbmUgPSBlcnJvci5saW5lKCk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMTIxLDcgKzEyMSw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0
cmluZyhKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0R3JvdXAsIEpTU3RyaW5nUmVmCiAgICAgUGFy
c2VyRXJyb3IgZXJyb3I7CiAgICAgaWYgKCFwYXJzZVNjcmlwdCh2bSwgU291cmNlQ29kZShyZXN1
bHQuY29weVJlZigpKSwgZXJyb3IpKSB7CiAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpCi0gICAg
ICAgICAgICAqZXJyb3JNZXNzYWdlID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShlcnJvci5tZXNz
YWdlKCkpLmxlYWtSZWYoKTsKKyAgICAgICAgICAgICplcnJvck1lc3NhZ2UgPSBPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKGVycm9yLm1lc3NhZ2UoKSkubGVha1JlZigpOwogICAgICAgICBpZiAo
ZXJyb3JMaW5lKQogICAgICAgICAgICAgKmVycm9yTGluZSA9IGVycm9yLmxpbmUoKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTU3RyaW5nUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYu
Y3BwCmluZGV4IDE2ODNhYWU1OTUyOTM5MDI0NWFhZmFjMGJhMzFiYjg3MjAwYjlmMzYuLmU2NDRm
MWFiN2E3ZjRmYmUxZjY5YjIwYjcxZjMxNGEyZjAyNTU0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwCkBAIC02Miw3ICs2Miw3IEBAIEpTU3RyaW5nUmVmIEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnN0IGNoYXIqIHN0cmluZykKIEpTU3RyaW5n
UmVmIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoY29uc3QgSlNDaGFyKiBjaGFy
cywgc2l6ZV90IG51bUNoYXJzKQogewogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBy
ZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY2hhcnMpLCBudW1DaGFycykpLmxl
YWtSZWYoKTsKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShTdHJpbmdJbXBs
OjpjcmVhdGVXaXRob3V0Q29weWluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY2hh
cnMpLCBudW1DaGFycykpLmxlYWtSZWYoKTsKIH0KIAogSlNTdHJpbmdSZWYgSlNTdHJpbmdSZXRh
aW4oSlNTdHJpbmdSZWYgc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCmlu
ZGV4IGQ3OTc0MmFmMzc0ZmI4NTVlZTk0ZWU2M2Y0ZTkxZWQ0MzY0ZmUwNTAuLjllNTM0YjBhZWIw
NTFmMzQ2YjM0YWQxYzY3NzQ0OWMzYWVkMzAyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWUubW0KQEAgLTEyNiwxNSArMTI2LDE1IEBAICsgKEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdB
cnJheUluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogCiArIChKU1ZhbHVlICopdmFsdWVX
aXRoTmV3UmVndWxhckV4cHJlc3Npb25Gcm9tUGF0dGVybjooTlNTdHJpbmcgKilwYXR0ZXJuIGZs
YWdzOihOU1N0cmluZyAqKWZsYWdzIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogewot
ICAgIGF1dG8gcGF0dGVyblN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocGF0dGVybik7
Ci0gICAgYXV0byBmbGFnc1N0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoZmxhZ3MpOwor
ICAgIGF1dG8gcGF0dGVyblN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUocGF0dGVy
bik7CisgICAgYXV0byBmbGFnc1N0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoZmxh
Z3MpOwogICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzWzJdID0geyBKU1ZhbHVlTWFrZVN0cmluZyhb
Y29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBwYXR0ZXJuU3RyaW5nLmdldCgpKSwgSlNWYWx1
ZU1ha2VTdHJpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgZmxhZ3NTdHJpbmcuZ2V0
KCkpIH07CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6SlNPYmplY3RN
YWtlUmVnRXhwKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIDIsIGFyZ3VtZW50cywgMCkg
aW5Db250ZXh0OmNvbnRleHRdOwogfQogCiArIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3RXJyb3JG
cm9tTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGluQ29udGV4dDooSlNDb250ZXh0ICopY29u
dGV4dAogewotICAgIGF1dG8gc3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShtZXNzYWdl
KTsKKyAgICBhdXRvIHN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobWVzc2FnZSk7
CiAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudCA9IEpTVmFsdWVNYWtlU3RyaW5nKFtjb250ZXh0IEpT
R2xvYmFsQ29udGV4dFJlZl0sIHN0cmluZy5nZXQoKSk7CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZh
bHVlV2l0aEpTVmFsdWVSZWY6SlNPYmplY3RNYWtlRXJyb3IoW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSwgMSwgJmFyZ3VtZW50LCAwKSBpbkNvbnRleHQ6Y29udGV4dF07CiB9CkBAIC0xNTEs
NyArMTUxLDcgQEAgKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDooSlND
b250ZXh0ICopY29udGV4dAogCiArIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURl
c2NyaXB0aW9uOihOU1N0cmluZyAqKWRlc2NyaXB0aW9uIGluQ29udGV4dDooSlNDb250ZXh0ICop
Y29udGV4dAogewotICAgIGF1dG8gc3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShkZXNj
cmlwdGlvbik7CisgICAgYXV0byBzdHJpbmcgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGRl
c2NyaXB0aW9uKTsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpKU1Zh
bHVlTWFrZVN5bWJvbChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBzdHJpbmcuZ2V0KCkp
IGluQ29udGV4dDpjb250ZXh0XTsKIH0KIApAQCAtMjkyLDcgKzI5Miw3IEBAIGlubGluZSBFeHBl
Y3RlZDxSZXN1bHQsIEpTVmFsdWVSZWY+IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbihOU1N0cmlu
Z0Z1bmN0aW9uIHN0CiAgICAgUmVzdWx0IHJlc3VsdDsKICAgICAvLyBJZiBpdCdzIGEgTlNTdHJp
bmcgYWxyZWFkeSwgcmVkdWNlIGluZGlyZWN0aW9uIGFuZCBqdXN0IHBhc3MgdGhlIE5TU3RyaW5n
LgogICAgIGlmIChbcHJvcGVydHlLZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkg
ewotICAgICAgICBhdXRvIG5hbWUgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKChOU1N0cmluZyAq
KXByb3BlcnR5S2V5KTsKKyAgICAgICAgYXV0byBuYW1lID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNy
ZWF0ZSgoTlNTdHJpbmcgKilwcm9wZXJ0eUtleSk7CiAgICAgICAgIHJlc3VsdCA9IHN0cmluZ0Z1
bmN0aW9uKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZS5nZXQoKSwg
YXJndW1lbnRzLi4uLCAmZXhjZXB0aW9uKTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzdWx0ID0g
anNGdW5jdGlvbihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIFtbSlNWYWx1
ZSB2YWx1ZVdpdGhPYmplY3Q6cHJvcGVydHlLZXkgaW5Db250ZXh0OmNvbnRleHRdIEpTVmFsdWVS
ZWZdLCBhcmd1bWVudHMuLi4sICZleGNlcHRpb24pOwpAQCAtNTIwLDcgKzUyMCw3IEBAIC0gKEpT
VmFsdWUgKilpbnZva2VNZXRob2Q6KE5TU3RyaW5nICopbWV0aG9kIHdpdGhBcmd1bWVudHM6KE5T
QXJyYXkgKilhcmd1bWVudHMKICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gW19j
b250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogCi0gICAgYXV0byBu
YW1lID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShtZXRob2QpOworICAgIGF1dG8gbmFtZSA9IE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobWV0aG9kKTsKICAgICBKU1ZhbHVlUmVmIGZ1bmN0aW9u
ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgdGhp
c09iamVjdCwgbmFtZS5nZXQoKSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKICAg
ICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9u
XTsKQEAgLTc3NCw3ICs3NzQsNyBAQCBzdGF0aWMgaWQgY29udGFpbmVyVmFsdWVUb09iamVjdChK
U0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNDb250YWluZXJDb252ZXJ0bwogICAgICAgICAg
ICAgQVNTRVJUKFtjdXJyZW50Lm9iamMgaXNLaW5kT2ZDbGFzczpbTlNNdXRhYmxlQXJyYXkgY2xh
c3NdXSk7CiAgICAgICAgICAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSAoTlNNdXRhYmxlQXJy
YXkgKiljdXJyZW50Lm9iamM7CiAgICAgICAgIAotICAgICAgICAgICAgYXV0byBsZW5ndGhTdHJp
bmcgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKCJsZW5ndGgiX3MpOworICAgICAgICAgICAgYXV0
byBsZW5ndGhTdHJpbmcgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCJsZW5ndGgiX3MpOwog
ICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gSlNDOjp0b1VJbnQzMihKU1ZhbHVlVG9OdW1i
ZXIoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBqcywgbGVuZ3RoU3RyaW5n
LmdldCgpLCAwKSwgMCkpOwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKQEAgLTk4NCw3ICs5ODQsNyBAQCBzdGF0aWMgT2JqY0NvbnRhaW5lckNv
bnZlcnRvcjo6VGFzayBvYmplY3RUb1ZhbHVlV2l0aG91dENvcHkoSlNDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgcmV0dXJuIHsgb2JqZWN0LCAoKEpTVmFsdWUgKilvYmplY3QpLT5tX3Zh
bHVlLCBDb250YWluZXJOb25lIH07CiAKICAgICAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSkgewotICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBPcGFxdWVK
U1N0cmluZzo6Y3JlYXRlKChOU1N0cmluZyAqKW9iamVjdCk7CisgICAgICAgICAgICBhdXRvIHN0
cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoKE5TU3RyaW5nICopb2JqZWN0KTsKICAg
ICAgICAgICAgIHJldHVybiB7IG9iamVjdCwgSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dFJlZiwg
c3RyaW5nLmdldCgpKSwgQ29udGFpbmVyTm9uZSB9OwogICAgICAgICB9CiAKQEAgLTEwNDEsNyAr
MTA0MSw3IEBAIEpTVmFsdWVSZWYgb2JqZWN0VG9WYWx1ZShKU0NvbnRleHQgKmNvbnRleHQsIGlk
IG9iamVjdCkKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IChOU0RpY3Rp
b25hcnkgKiljdXJyZW50Lm9iamM7CiAgICAgICAgICAgICBmb3IgKGlkIGtleSBpbiBbZGljdGlv
bmFyeSBrZXlFbnVtZXJhdG9yXSkgewogICAgICAgICAgICAgICAgIGlmIChba2V5IGlzS2luZE9m
Q2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKChOU1N0cmluZyAqKWtleSk7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNy
ZWF0ZSgoTlNTdHJpbmcgKilrZXkpOwogICAgICAgICAgICAgICAgICAgICBKU09iamVjdFNldFBy
b3BlcnR5KGNvbnRleHRSZWYsIGpzLCBwcm9wZXJ0eU5hbWUuZ2V0KCksIGNvbnZlcnRvci5jb252
ZXJ0KFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTprZXldKSwgMCwgMCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5j
cHAKaW5kZXggMjNmMTdiYzIxYmIzYzA4MjlkZTBhNTYwNDMzNzA2ODUwZmMxZWMwNS4uNGMxMmI5
NmNmZGQ2OTIzZmI3YzMyYmY4NDgzMTAyYzM2MTQ2YzQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWVSZWYuY3BwCkBAIC0zODYsNyArMzg2LDcgQEAgSlNTdHJpbmdSZWYgSlNW
YWx1ZUNyZWF0ZUpTT05TdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiBhcGlWYWx1
ZSwgdW5zaWcKICAgICAgICAgKmV4Y2VwdGlvbiA9IDA7CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlv
bklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlk
VGhyb3cpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3Jl
YXRlKHJlc3VsdCkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3Jl
YXRlKHJlc3VsdCkubGVha1JlZigpOwogfQogCiBib29sIEpTVmFsdWVUb0Jvb2xlYW4oSlNDb250
ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKQEAgLTQzNCw3ICs0MzQsNyBAQCBKU1N0cmlu
Z1JlZiBKU1ZhbHVlVG9TdHJpbmdDb3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFs
dWUsIEpTVmFsdWVSZWYqCiAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVl
KTsKICAgICAKLSAgICBhdXRvIHN0cmluZ1JlZihPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGpzVmFs
dWUudG9XVEZTdHJpbmcoZXhlYykpKTsKKyAgICBhdXRvIHN0cmluZ1JlZihPcGFxdWVKU1N0cmlu
Zzo6dHJ5Q3JlYXRlKGpzVmFsdWUudG9XVEZTdHJpbmcoZXhlYykpKTsKICAgICBpZiAoaGFuZGxl
RXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3Rh
dHVzOjpEaWRUaHJvdykKICAgICAgICAgc3RyaW5nUmVmID0gbnVsbHB0cjsKICAgICByZXR1cm4g
c3RyaW5nUmVmLmxlYWtSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvT3BhcXVlSlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVK
U1N0cmluZy5jcHAKaW5kZXggOTgxZGM4NWIwODVmMTg5N2U1Y2VkYmQ4MTI1OTczYTBiYzA0ZDQ5
ZS4uNzdhMmUxYzdmMTM1NDVjYzA4ZGQwODJiM2ZkMjk0MWQzZTA4NWUyNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAK
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBPcGFxdWVK
U1N0cmluZzo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPE9wYXF1ZUpTU3Ry
aW5nPiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewog
ICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDIs
NyArNDIsNyBAQCBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPcGFxdWVKU1N0
cmluZyhzdHJpbmcpKTsKIH0KIAotUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBPcGFxdWVKU1N0cmlu
Zzo6Y3JlYXRlKFN0cmluZyYmIHN0cmluZykKK1JlZlB0cjxPcGFxdWVKU1N0cmluZz4gT3BhcXVl
SlNTdHJpbmc6OnRyeUNyZWF0ZShTdHJpbmcmJiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL09wYXF1ZUpTU3RyaW5nLmgKaW5kZXggYWQyZmZjZGU1NzEyNWU4YWY3MmYyMzkxNDNlZGJj
MDcyNTI0NjE2MC4uNGE0YjVlZGZiYTIwMTQ2Yzg5MzIwMTQzZjliNWY0ZDFkZDEwZDY3NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaApAQCAtNTEsOCArNTEs
OCBAQCBzdHJ1Y3QgT3BhcXVlSlNTdHJpbmcgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
T3BhcXVlSlNTdHJpbmc+IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3BhcXVlSlNT
dHJpbmcoY2hhcmFjdGVycywgbGVuZ3RoKSk7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IGNyZWF0
ZShTdHJpbmcmJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxPcGFxdWVK
U1N0cmluZz4gdHJ5Q3JlYXRlKGNvbnN0IFN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHRyeUNyZWF0ZShTdHJpbmcmJik7CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSB+T3BhcXVlSlNTdHJpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCmluZGV4IGI1NDhlZmJmZjY5NmE1ZWFm
YTc0Y2VlZDg1NTcyMmMzMjJiOTJhNDQuLjQwZWE1YzE0OTE3YjNjZGQ0ZjdlZWMwYTI0YmUyMDBm
N2NjMDc3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0ND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4
dC5jcHAKQEAgLTgxOSw3ICs4MTksNyBAQCBKU0NWYWx1ZSoganNjX2NvbnRleHRfZXZhbHVhdGUo
SlNDQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogY29kZSwgZ3NzaXplIGxlbgogCiBzdGF0
aWMgSlNWYWx1ZVJlZiBldmFsdWF0ZVNjcmlwdEluQ29udGV4dChKU0dsb2JhbENvbnRleHRSZWYg
anNDb250ZXh0LCBTdHJpbmcmJiBzY3JpcHQsIGNvbnN0IGNoYXIqIHVyaSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBzY3JpcHRKUyhBZG9wdCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShXVEZNb3ZlKHNj
cmlwdCkpLmxlYWtSZWYoKSk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHNjcmlwdEpT
KEFkb3B0LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKFdURk1vdmUoc2NyaXB0KSkubGVha1Jl
ZigpKTsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc291cmNlVVJJID0gdXJpID8gYWRv
cHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXJpKSkgOiBudWxscHRyOwogICAgIHJl
dHVybiBKU0V2YWx1YXRlU2NyaXB0KGpzQ29udGV4dCwgc2NyaXB0SlMuZ2V0KCksIG51bGxwdHIs
IHNvdXJjZVVSSS5nZXQoKSwgbGluZU51bWJlciwgZXhjZXB0aW9uKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmFsdWUuY3BwCmluZGV4IDc5ZTUzMTZmZDM2MjkzYzhk
ZDAyMzM2MjNiYWQwM2JhYTg1ZDljM2IuLjZlMjc0Zjg5ZjQzN2I2M2M5NTkyNTcyMzQyZjk3MDUz
OWNhYWUxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NW
YWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmNw
cApAQCAtMzY3LDcgKzM2Nyw3IEBAIEpTQ1ZhbHVlKiBqc2NfdmFsdWVfbmV3X3N0cmluZ19mcm9t
X2J5dGVzKEpTQ0NvbnRleHQqIGNvbnRleHQsIEdCeXRlcyogYnl0ZXMpCiAgICAgZ3NpemUgZGF0
YVNpemU7CiAgICAgY29uc3QgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihn
X2J5dGVzX2dldF9kYXRhKGJ5dGVzLCAmZGF0YVNpemUpKTsKICAgICBhdXRvIHN0cmluZyA9IFN0
cmluZzo6ZnJvbVVURjgoZGF0YSwgZGF0YVNpemUpOwotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBqc1N0cmluZyhBZG9wdCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShXVEZNb3ZlKHN0cmlu
ZykpLmxlYWtSZWYoKSk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGpzU3RyaW5nKEFk
b3B0LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKFdURk1vdmUoc3RyaW5nKSkubGVha1JlZigp
KTsKICAgICByZXR1cm4ganNjQ29udGV4dEdldE9yQ3JlYXRlVmFsdWUoY29udGV4dCwgSlNWYWx1
ZU1ha2VTdHJpbmcoanNjQ29udGV4dEdldEpTQ29udGV4dChjb250ZXh0KSwganNTdHJpbmcuZ2V0
KCkpKS5sZWFrUmVmKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGF6eVNsb3dQYXRoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExhenlT
bG93UGF0aC5oCmluZGV4IDlhNmU2MDFhZDMxOWJkZGZjM2E5OGUwNWQ5OTMwYjgxZGFlMWRhZGQu
LmE1YjNhNzI1MmE0MTM3NzY4NTJmNDFmYTI1MTI0YjkwODM3OGRiMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGF6eVNsb3dQYXRoLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1BhdGguaApAQCAtNTksNyArNTksNyBAQCBjbGFz
cyBMYXp5U2xvd1BhdGggewogICAgIHR5cGVkZWYgU2hhcmVkVGFzazxHZW5lcmF0b3JGdW5jdGlv
bj4gR2VuZXJhdG9yOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBzdGF0
aWMgUmVmUHRyPEdlbmVyYXRvcj4gY3JlYXRlR2VuZXJhdG9yKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCisgICAgc3RhdGljIFJlZjxHZW5lcmF0b3I+IGNyZWF0ZUdlbmVyYXRvcihjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgcmV0dXJuIGNyZWF0ZVNoYXJlZFRhc2s8R2Vu
ZXJhdG9yRnVuY3Rpb24+KGZ1bmN0b3IpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTGF6eVNsb3dQYXRoQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMYXp5U2xvd1BhdGhDYWxsLmgKaW5kZXggYmZiMmFjZWM4NmVkODY3NzZmMWIx
MTY1NTI4ZGM1MjIxNzYxYWU2Ni4uNzRmZDZlYzdiNzJmMzIyMzQyMWFhNjY0YmExYjZhNjdiYzc3
MjkzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1Bh
dGhDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1BhdGhD
YWxsLmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRUeXBl
cz4KLVJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0
b3IoCitSZWY8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9y
KAogICAgIFZNJiB2bSwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbiwgUmVz
dWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQogewogICAgIHJldHVy
biBMYXp5U2xvd1BhdGg6OmNyZWF0ZUdlbmVyYXRvcigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9TUkV4aXQuY3BwCmluZGV4IDMyOGYwYzgxODI4YmZjYjk2YjExYTk0OWVkYTE5ZDFlMDY3
MWQxNTQuLjA5OTU4ZDJjNGY5YTVkODliNWZiYmI2NWY4NmJiNmRhYmNkZjE4ZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0LmNwcApAQCAtNjMsMTcgKzYzLDE3IEBAIHZv
aWQgT1NSRXhpdERlc2NyaXB0b3I6OnZhbGlkYXRlUmVmZXJlbmNlcyhjb25zdCBUcmFja2VkUmVm
ZXJlbmNlcyYgdHJhY2tlZFJlZmVyCiAgICAgICAgIG1hdGVyaWFsaXphdGlvbi0+dmFsaWRhdGVS
ZWZlcmVuY2VzKHRyYWNrZWRSZWZlcmVuY2VzKTsKIH0KIAotUmVmUHRyPE9TUkV4aXRIYW5kbGU+
IE9TUkV4aXREZXNjcmlwdG9yOjplbWl0T1NSRXhpdCgKK1JlZjxPU1JFeGl0SGFuZGxlPiBPU1JF
eGl0RGVzY3JpcHRvcjo6ZW1pdE9TUkV4aXQoCiAgICAgU3RhdGUmIHN0YXRlLCBFeGl0S2luZCBl
eGl0S2luZCwgY29uc3QgTm9kZU9yaWdpbiYgbm9kZU9yaWdpbiwgQ0NhbGxIZWxwZXJzJiBqaXQs
CiAgICAgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMsIHVuc2lnbmVkIG9m
ZnNldCkKIHsKLSAgICBSZWZQdHI8T1NSRXhpdEhhbmRsZT4gaGFuZGxlID0KKyAgICBSZWY8T1NS
RXhpdEhhbmRsZT4gaGFuZGxlID0KICAgICAgICAgcHJlcGFyZU9TUkV4aXRIYW5kbGUoc3RhdGUs
IGV4aXRLaW5kLCBub2RlT3JpZ2luLCBwYXJhbXMsIG9mZnNldCk7CiAgICAgaGFuZGxlLT5lbWl0
RXhpdFRodW5rKHN0YXRlLCBqaXQpOwogICAgIHJldHVybiBoYW5kbGU7CiB9CiAKLVJlZlB0cjxP
U1JFeGl0SGFuZGxlPiBPU1JFeGl0RGVzY3JpcHRvcjo6ZW1pdE9TUkV4aXRMYXRlcigKK1JlZjxP
U1JFeGl0SGFuZGxlPiBPU1JFeGl0RGVzY3JpcHRvcjo6ZW1pdE9TUkV4aXRMYXRlcigKICAgICBT
dGF0ZSYgc3RhdGUsIEV4aXRLaW5kIGV4aXRLaW5kLCBjb25zdCBOb2RlT3JpZ2luJiBub2RlT3Jp
Z2luLAogICAgIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zLCB1bnNpZ25l
ZCBvZmZzZXQpCiB7CkBAIC04MywxNyArODMsMTcgQEAgUmVmUHRyPE9TUkV4aXRIYW5kbGU+IE9T
UkV4aXREZXNjcmlwdG9yOjplbWl0T1NSRXhpdExhdGVyKAogICAgICAgICBbaGFuZGxlLCAmc3Rh
dGVdIChDQ2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAgICAgaGFuZGxlLT5lbWl0RXhpdFRo
dW5rKHN0YXRlLCBqaXQpOwogICAgICAgICB9KTsKLSAgICByZXR1cm4gaGFuZGxlOworICAgIHJl
dHVybiBoYW5kbGUucmVsZWFzZU5vbk51bGwoKTsKIH0KIAotUmVmUHRyPE9TUkV4aXRIYW5kbGU+
IE9TUkV4aXREZXNjcmlwdG9yOjpwcmVwYXJlT1NSRXhpdEhhbmRsZSgKK1JlZjxPU1JFeGl0SGFu
ZGxlPiBPU1JFeGl0RGVzY3JpcHRvcjo6cHJlcGFyZU9TUkV4aXRIYW5kbGUoCiAgICAgU3RhdGUm
IHN0YXRlLCBFeGl0S2luZCBleGl0S2luZCwgY29uc3QgTm9kZU9yaWdpbiYgbm9kZU9yaWdpbiwK
ICAgICBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcywgdW5zaWduZWQgb2Zm
c2V0KQogewogICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGUuaml0Q29kZS0+b3NyRXhpdC5zaXpl
KCk7CiAgICAgT1NSRXhpdCYgZXhpdCA9IHN0YXRlLmppdENvZGUtPm9zckV4aXQuYWxsb2MoCiAg
ICAgICAgIHRoaXMsIGV4aXRLaW5kLCBub2RlT3JpZ2luLmZvckV4aXQsIG5vZGVPcmlnaW4uc2Vt
YW50aWMsIG5vZGVPcmlnaW4ud2FzSG9pc3RlZCk7Ci0gICAgUmVmUHRyPE9TUkV4aXRIYW5kbGU+
IGhhbmRsZSA9IGFkb3B0UmVmKG5ldyBPU1JFeGl0SGFuZGxlKGluZGV4LCBleGl0KSk7CisgICAg
UmVmPE9TUkV4aXRIYW5kbGU+IGhhbmRsZSA9IGFkb3B0UmVmKCpuZXcgT1NSRXhpdEhhbmRsZShp
bmRleCwgZXhpdCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG9mZnNldDsgaSA8IHBhcmFtcy5z
aXplKCk7ICsraSkKICAgICAgICAgZXhpdC5tX3ZhbHVlUmVwcy5hcHBlbmQocGFyYW1zW2ldKTsK
ICAgICBleGl0Lm1fdmFsdWVSZXBzLnNocmlua1RvRml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT1NSRXhpdC5oCmluZGV4IDdjMDJmYjEwZGEwZjFiOGMzZjU2NmY0NTlhZGNiZWMyNWRk
NGM5YjcuLmRhODdjY2YzMjczZmU0YmUzNjA2ODNiOGFmM2JiZjUxNmQ2MjI1ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCkBAIC05MCw3ICs5MCw3IEBAIHN0cnVjdCBP
U1JFeGl0RGVzY3JpcHRvciB7CiAgICAgLy8gdXAgdG8gdGhlIE9TUkV4aXQgb2JqZWN0LCB3aGlj
aCB0aGlzIGNyZWF0ZXMuIE5vdGUgdGhhdCBpdCdzIE9LIHRvIGRyb3AgdGhlIE9TUkV4aXRIYW5k
bGUgb2JqZWN0CiAgICAgLy8gb24gdGhlIGdyb3VuZC4gSXQgY29udGFpbnMgaW5mb3JtYXRpb24g
dGhhdCBpcyBtb3N0bHkgbm90IHVzZWZ1bCBpZiB5b3UgdXNlIHRoaXMgQVBJLCBzaW5jZSBhZnRl
cgogICAgIC8vIHRoaXMgY2FsbCwgdGhlIE9TUkV4aXQgaXMgc2ltcGx5IHJlYWR5IHRvIGdvLgot
ICAgIFJlZlB0cjxPU1JFeGl0SGFuZGxlPiBlbWl0T1NSRXhpdCgKKyAgICBSZWY8T1NSRXhpdEhh
bmRsZT4gZW1pdE9TUkV4aXQoCiAgICAgICAgIFN0YXRlJiwgRXhpdEtpbmQsIGNvbnN0IERGRzo6
Tm9kZU9yaWdpbiYsIENDYWxsSGVscGVycyYsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmLAogICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSAwKTsKIApAQCAtMTAyLDcgKzEwMiw3
IEBAIHN0cnVjdCBPU1JFeGl0RGVzY3JpcHRvciB7CiAgICAgLy8gVGhpcyBBUEkgaXMgbWVhbnQg
dG8gYmUgdXNlZCBmb3IgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nLCB3aGVyZSBzb21l
IHBhdGNocG9pbnQgd2FudHMgdG8KICAgICAvLyBoYXZlIGEgcGxhY2UgdG8ganVtcCB0byBmb3Ig
T1NSIGV4aXQuIEl0IGRvZXNuJ3QgY2FyZSB3aGVyZSB0aGF0IE9TUiBleGl0IGlzIGVtaXR0ZWQg
c28gbG9uZyBhcyBpdAogICAgIC8vIGV2ZW50dWFsbHkgZ2V0cyBhY2Nlc3MgdG8gaXRzIGxhYmVs
LgotICAgIFJlZlB0cjxPU1JFeGl0SGFuZGxlPiBlbWl0T1NSRXhpdExhdGVyKAorICAgIFJlZjxP
U1JFeGl0SGFuZGxlPiBlbWl0T1NSRXhpdExhdGVyKAogICAgICAgICBTdGF0ZSYsIEV4aXRLaW5k
LCBjb25zdCBERkc6Ok5vZGVPcmlnaW4mLCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiwKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMCk7CiAKQEAgLTExMCw3ICsxMTAsNyBA
QCBzdHJ1Y3QgT1NSRXhpdERlc2NyaXB0b3IgewogICAgIC8vIFRoaXMgaXMgdGhlIGxvdy1sZXZl
bCBpbnRlcmZhY2UuIEl0IHdpbGwgY3JlYXRlIGEgaGFuZGxlIHJlcHJlc2VudGluZyB0aGUgZGVz
aXJlIHRvIGVtaXQgY29kZSBmb3IKICAgICAvLyBhbiBPU1IgZXhpdC4gWW91IGNhbiBjYWxsIE9T
UkV4aXRIYW5kbGU6OmVtaXRFeGl0VGh1bmsoKSBvbmNlIHlvdSBoYXZlIGEgcGxhY2UgdG8gZW1p
dCBpdC4gTm90ZQogICAgIC8vIHRoYXQgdGhlIGFib3ZlIHR3byBBUElzIGFyZSB3cml0dGVuIGlu
IHRlcm1zIG9mIHRoaXMgYW5kIE9TUkV4aXRIYW5kbGU6OmVtaXRFeGl0VGh1bmsoKS4KLSAgICBS
ZWZQdHI8T1NSRXhpdEhhbmRsZT4gcHJlcGFyZU9TUkV4aXRIYW5kbGUoCisgICAgUmVmPE9TUkV4
aXRIYW5kbGU+IHByZXBhcmVPU1JFeGl0SGFuZGxlKAogICAgICAgICBTdGF0ZSYsIEV4aXRLaW5k
LCBjb25zdCBERkc6Ok5vZGVPcmlnaW4mLCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiwKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5j
cHAKaW5kZXggNzI5NGIxYjVmNmJhZWU2MWM1NzRjZmU1MTBjZTIzOGM5MzMzNzAyMS4uZmFlZjQx
N2I5ODIzNTRmM2U2NDdhYWQyOWJhMDZjODI3MGNlMDlkMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUuY3Bw
CkBAIC0zOCwxMSArMzgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiB1
c2luZyBuYW1lc3BhY2UgREZHOwogCi1SZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4g
UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZTo6Y3JlYXRlKAorUmVmPFBhdGNocG9pbnRFeGNlcHRp
b25IYW5kbGU+IFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU6OmNyZWF0ZSgKICAgICBTdGF0ZSYg
c3RhdGUsIE9TUkV4aXREZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOb2RlT3JpZ2luIG9yaWdpbiwg
dW5zaWduZWQgb2Zmc2V0LAogICAgIGNvbnN0IEhhbmRsZXJJbmZvJiBoYW5kbGVyKQogewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZShzdGF0ZSwgZGVz
Y3JpcHRvciwgb3JpZ2luLCBvZmZzZXQsIGhhbmRsZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlKHN0YXRlLCBkZXNjcmlwdG9yLCBvcmlnaW4s
IG9mZnNldCwgaGFuZGxlcikpOwogfQogCiBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZT4gUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZTo6ZGVmYXVsdEhhbmRsZShTdGF0ZSYgc3RhdGUp
CkBAIC0xMDgsNyArMTA4LDcgQEAgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZTo6UGF0Y2hwb2lu
dEV4Y2VwdGlvbkhhbmRsZSgKIHsKIH0KIAotUmVmUHRyPE9TUkV4aXRIYW5kbGU+IFBhdGNocG9p
bnRFeGNlcHRpb25IYW5kbGU6OmNyZWF0ZUhhbmRsZSgKK1JlZjxPU1JFeGl0SGFuZGxlPiBQYXRj
aHBvaW50RXhjZXB0aW9uSGFuZGxlOjpjcmVhdGVIYW5kbGUoCiAgICAgRXhpdEtpbmQga2luZCwg
Y29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKQogewogICAgIHJldHVy
biBtX2Rlc2NyaXB0b3ItPmVtaXRPU1JFeGl0TGF0ZXIoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5oCmluZGV4IDFi
MjY2ZDJlMWZlOTc4ODhlYThmNzhkMmM4YzQzYjRlMzY0NjlmZWMuLjQ0OGUxY2Y1ZjA1ZGY1NTgz
YjIzMDI3ZGZlY2U2MTQyN2EyMzIyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5oCkBAIC01MSw3ICs1MSw3
IEBAIHN0cnVjdCBPU1JFeGl0SGFuZGxlOwogCiBjbGFzcyBQYXRjaHBvaW50RXhjZXB0aW9uSGFu
ZGxlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGU+IGNyZWF0ZSgKKyAgICBzdGF0aWMgUmVmPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGNy
ZWF0ZSgKICAgICAgICAgU3RhdGUmLCBPU1JFeGl0RGVzY3JpcHRvciosIERGRzo6Tm9kZU9yaWdp
biwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBIYW5kbGVySW5mbyYpOwogCiAgICAgc3RhdGljIFJl
ZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBkZWZhdWx0SGFuZGxlKFN0YXRlJik7CkBA
IC04OSw3ICs4OSw3IEBAIGNsYXNzIFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGF0Y2hwb2ludEV4Y2VwdGlvCiAgICAgUGF0Y2hwb2ludEV4
Y2VwdGlvbkhhbmRsZSgKICAgICAgICAgU3RhdGUmLCBPU1JFeGl0RGVzY3JpcHRvciosIERGRzo6
Tm9kZU9yaWdpbiwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBIYW5kbGVySW5mbyYpOwogCi0gICAg
UmVmUHRyPE9TUkV4aXRIYW5kbGU+IGNyZWF0ZUhhbmRsZShFeGl0S2luZCwgY29uc3QgQjM6OlN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpOworICAgIFJlZjxPU1JFeGl0SGFuZGxlPiBjcmVhdGVI
YW5kbGUoRXhpdEtpbmQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKTsKIAog
ICAgIFN0YXRlJiBtX3N0YXRlOwogICAgIE9TUkV4aXREZXNjcmlwdG9yKiBtX2Rlc2NyaXB0b3I7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNh
bGxiYWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxi
YWNrLmgKaW5kZXggNTJlMGEyOGZlM2M5MGNmOWYyZjgxODU3NzlhNzZmZjE5MjUzNzVjYy4uMDVj
ZjI4MjBmMzI0YWE1YzA5YTM0ZDIwMTI2MDY2NmM1MmUzNjg4NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaApAQCAtNDEsNyAr
NDEsNyBAQCBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrIDog
cHVibGljIEdDQWN0aXZpdHlDYWxsYmFjayB7CiAgICAgZG91YmxlIGRlYXRoUmF0ZShIZWFwJikg
b3ZlcnJpZGU7CiB9OwogCi1pbmxpbmUgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rp
dml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIoSGVhcCogaGVhcCkKK2lubGluZSBSZWZQdHI8
R0NBY3Rpdml0eUNhbGxiYWNrPiBHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVkZW5UaW1l
cihIZWFwKiBoZWFwKQogewogICAgIHJldHVybiBzX3Nob3VsZENyZWF0ZUdDVGltZXIgPyBhZG9w
dFJlZihuZXcgRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKSkgOiBudWxscHRyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFj
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5o
CmluZGV4IDVjZTAzNGEwY2Q4MWY1NWQyOThmMTI4OTgyNmRlNmY4YmVmNjJiYmEuLjY1MGFlMTM4
N2YxNmFhMDAzZDdkZGI5ODZmMDc1OGZjOWYxZWM0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRnVsbEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1Ymxp
YyBHQ0FjdGl2aXR5Q2FsbGJhY2sgewogICAgIGJvb2wgbV9kaWRHQ1JlY2VudGx5IHsgZmFsc2Ug
fTsKIH07CiAKLWlubGluZSBSZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rpdml0
eUNhbGxiYWNrOjpjcmVhdGVGdWxsVGltZXIoSGVhcCogaGVhcCkKK2lubGluZSBSZWZQdHI8RnVs
bEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVhdGVGdWxsVGlt
ZXIoSGVhcCogaGVhcCkKIHsKICAgICByZXR1cm4gc19zaG91bGRDcmVhdGVHQ1RpbWVyID8gYWRv
cHRSZWYobmV3IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkpIDogbnVsbHB0cjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgKaW5kZXgg
OWRmZGQwZjcwMDdkMjEzYjRmYjk1NDQ5YjE2ZWZlZGQ4ZTRjM2EzNi4uYzM3MWY3N2QyYjY0YjQz
ZGFjNzQ2MzE0ZDdjMWQ5ZDI1ZjM5ZmIwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgKQEAgLTQzLDggKzQzLDggQEAgY2xhc3MgSGVhcDsK
IGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBKU1J1
bkxvb3BUaW1lciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTUnVuTG9vcFRpbWVyOwot
ICAgIHN0YXRpYyBSZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlRnVsbFRpbWVy
KEhlYXAqKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlRWRl
blRpbWVyKEhlYXAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s+
IHRyeUNyZWF0ZUZ1bGxUaW1lcihIZWFwKik7CisgICAgc3RhdGljIFJlZlB0cjxHQ0FjdGl2aXR5
Q2FsbGJhY2s+IHRyeUNyZWF0ZUVkZW5UaW1lcihIZWFwKik7CiAKICAgICBHQ0FjdGl2aXR5Q2Fs
bGJhY2soSGVhcCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IGNjNGEz
MzY1MWEyZjE5NmZjYWZiMzJhY2MwYTYwM2Q5ODg4MjNmMDguLmY0NjhkNDFlNGZmYzdhNmFjN2Q0
Mjk1ZmNiZmE3NzcyMjE3YmJjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBA
IC0zMDQsOCArMzA0LDggQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQog
ICAgIC8vIHNjaGVkdWxlIHRoZSB0aW1lciBpZiB3ZSd2ZSBuZXZlciBkb25lIGEgY29sbGVjdGlv
bi4KICAgICAsIG1fbGFzdEZ1bGxHQ0xlbmd0aCgwLjAxKQogICAgICwgbV9sYXN0RWRlbkdDTGVu
Z3RoKDAuMDEpCi0gICAgLCBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFj
azo6Y3JlYXRlRnVsbFRpbWVyKHRoaXMpKQotICAgICwgbV9lZGVuQWN0aXZpdHlDYWxsYmFjayhH
Q0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZUVkZW5UaW1lcih0aGlzKSkKKyAgICAsIG1fZnVsbEFj
dGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVhdGVGdWxsVGltZXIodGhp
cykpCisgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5
Q3JlYXRlRWRlblRpbWVyKHRoaXMpKQogICAgICwgbV9zd2VlcGVyKGFkb3B0UmVmKG5ldyBJbmNy
ZW1lbnRhbFN3ZWVwZXIodGhpcykpKQogICAgICwgbV9zdG9wSWZOZWNlc3NhcnlUaW1lcihhZG9w
dFJlZihuZXcgU3RvcElmTmVjZXNzYXJ5VGltZXIodm0pKSkKICAgICAsIG1fZGVmZXJyYWxEZXB0
aCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0
YWNrVHJhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNr
VHJhY2UuY3BwCmluZGV4IDMxNGI4N2M2ODdiODBlZGE4NGE2NmM4N2E2YTVhOGIxOWQwMjE0NjYu
LjhjYjA5Nzk2ZjEyODIxNjU3N2IyZjkwYWQyZTJjZTBjNGQyYmMzODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQXN5bmNTdGFja1RyYWNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHAKQEAgLTMx
LDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLVJlZlB0cjxBc3luY1N0YWNr
VHJhY2U+IEFzeW5jU3RhY2tUcmFjZTo6Y3JlYXRlKFJlZjxTY3JpcHRDYWxsU3RhY2s+JiYgY2Fs
bFN0YWNrLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxBc3luY1N0YWNrVHJhY2U+IHBhcmVudCkK
K1JlZjxBc3luY1N0YWNrVHJhY2U+IEFzeW5jU3RhY2tUcmFjZTo6Y3JlYXRlKFJlZjxTY3JpcHRD
YWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxBc3luY1N0YWNr
VHJhY2U+IHBhcmVudCkKIHsKICAgICBBU1NFUlQoY2FsbFN0YWNrLT5zaXplKCkpOwogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEFzeW5jU3RhY2tUcmFjZShXVEZNb3ZlKGNhbGxTdGFjayksIHNp
bmdsZVNob3QsIFdURk1vdmUocGFyZW50KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvQXN5bmNTdGFja1RyYWNlLmgKaW5kZXggMWMzY2NmNDgzN2FiMTU3MjEwYzAz
ZmM4M2ZiZGQ3Yzc5Nzg1MTkyNC4uMjJiM2ZlNzQ5NWIxOGU0YTViZTA3Mzc5MzUyMDllZDk1NTFh
Y2RlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0
YWNrVHJhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3Rh
Y2tUcmFjZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEFzeW5j
U3RhY2tUcmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPEFzeW5jU3RhY2tUcmFjZT4gewogICAgICAg
ICBDYW5jZWxlZCwKICAgICB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxBc3luY1N0YWNrVHJhY2U+
IGNyZWF0ZShSZWY8U2NyaXB0Q2FsbFN0YWNrPiYmLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxB
c3luY1N0YWNrVHJhY2U+IHBhcmVudCk7CisgICAgc3RhdGljIFJlZjxBc3luY1N0YWNrVHJhY2U+
IGNyZWF0ZShSZWY8U2NyaXB0Q2FsbFN0YWNrPiYmLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxB
c3luY1N0YWNrVHJhY2U+IHBhcmVudCk7CiAKICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0Owog
ICAgIGJvb2wgaXNMb2NrZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMzhhMDBh
NzFiNjE4ZTcxNDdlMzFhYmFmY2ZmMzNjYzRkYTBkMGQ1ZC4uOTJhNWYyMDhhZjRjYzJiM2Y1YTg0
NDJiODI4MDVlNzFmMjZhMGM1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTg4Nyw3ICs4ODcs
OSBAQCBzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZp
bGUoRklMRSogZmlsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKGZzZWVrKGZp
bGUsIDAsIFNFRUtfU0VUKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUmVm
UHRyPFVpbnQ4QXJyYXk+IHJlc3VsdCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShidWZmZXJDYXBhY2l0
eSk7CisgICAgYXV0byByZXN1bHQgPSBVaW50OEFycmF5Ojp0cnlDcmVhdGUoYnVmZmVyQ2FwYWNp
dHkpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBzaXpl
X3QgcmVhZFNpemUgPSBmcmVhZChyZXN1bHQtPmRhdGEoKSwgMSwgYnVmZmVyQ2FwYWNpdHksIGZp
bGUpOwogICAgIGlmIChyZWFkU2l6ZSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZmZlckNhcGFj
aXR5KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBkZWVhMjU0NTA5NmNiNTk2YzE4MWFlYzc2ODUxNWZj
MWMxYTA4MDUxLi5lYjM2N2MxNGNkMTkzMDFjNTNkNjdmMmEwZTA5NGQ2MjM0MWZjMWM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTExMSw3ICsx
MTEsNyBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxB
cnJheUJ1ZmZlcj4gewogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlC
dWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpOwogCi0gICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBl
ZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkIGFuZCBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFy
cmF5QnVmZmVyLgorICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZl
ci4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZTVmZDRiYjc0MTZmM2UyNTBmZjhhNjg5NTE1
N2VmZDg2ZjVkYzQ5OC4uZWYyZTgwZjRlYTAzYmRlNjQ5MWNmNzMzM2EyN2I3YzU3N2YwZWI1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVk
QXJyYXlWaWV3LmgKQEAgLTM2LDExICszNiwxNSBAQCBjbGFzcyBHZW5lcmljVHlwZWRBcnJheVZp
ZXcgZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKICAgICBHZW5lcmljVHlwZWRBcnJh
eVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+
IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0
ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0
ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRy
eUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCk7CiAgICAgCi0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVm
PEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAgICAgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUqPihiYXNlQWRkcmVzcygpKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
CmluZGV4IDFiNmRhNTYxZWI3Y2ViMTMxMmFhNjQ4Y2QyZTQ5M2I1ODJiOWI2YjUuLmU2NjBjZmNk
ZDQ4OTQ1NjJkMTc0ZjY0NjU3NWQ1NjIyYjEyMjM3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKQEAgLTM5LDI1ICszOSw1MyBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46Okdl
bmVyaWNUeXBlZEFycmF5VmlldygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlTm9u
TnVsbCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgorUmVmPEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUoCisgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxl
bmd0aCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShhcnJheSwgbGVuZ3RoKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQucmVsZWFzZU5vbk51
bGwoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KK1JlZjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KAorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CisgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0
KTsKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CitSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgp
CiB7CiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aCwgc2l6
ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxl
bmd0aCk7CisgICAgcmV0dXJuIHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgK
K1JlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAogICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5Vmlldz4gcmVzdWx0ID0gY3JlYXRlKGxlbmd0aCk7CisgICAgUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5Vmlldz4gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQp
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIG1lbWNweShyZXN1bHQtPmRhdGEoKSwgYXJy
YXksIGxlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Y3JlYXRlKAorUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoCiAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IEFTU0VSVChidWZmZXIpOwpAQCAtNzAsMTQgKzk4LDIzIEBAIFJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4KK1JlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+CiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoKQoreworICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChs
ZW5ndGgpOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlTm9uTnVsbCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgorUmVmUHRy
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KK0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPQogICAgICAgICBBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBj
cmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOworICAgIHJldHVybiB0cnlDcmVhdGUo
V1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgpAQCAtOTYsNyArMTMzLDcgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpz
dWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0CiAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZl
ciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgQVNTRVJUKGJ1ZmZlcik7CiAgICAgY2xh
bXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBlPigqYnVmZmVyLCBieXRlT2Zmc2V0
KCksICZvZmZzZXQsICZsZW5ndGgpOwotICAgIHJldHVybiBjcmVhdGUoYnVmZmVyLCBvZmZzZXQs
IGxlbmd0aCk7CisgICAgcmV0dXJuIHRyeUNyZWF0ZShidWZmZXIsIG9mZnNldCwgbGVuZ3RoKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCBiMzAzOWEyMzZiYzdk
OTI2MmIzZWUwYmM5ZjRmYWVlZjYzYjczNTdjLi5jMmRlMDAzZmY2YjcxMGRkZTdkZGJiZTgxOTk0
YTU4MjhlNDU3MmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0zMDIsNyArMzAyLDcgQEAgUmVmUHRyPEFycmF5QnVm
ZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCgpCiAgICAgc3dp
dGNoICh0eXBlKCkpIHsKICNkZWZpbmUgRkFDVE9SWSh0eXBlKSBcCiAgICAgY2FzZSB0eXBlICMj
IEFycmF5VHlwZTogXAotICAgICAgICByZXR1cm4gdHlwZSAjIyBBcnJheTo6Y3JlYXRlKGJ1ZmZl
ciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHR5cGUgIyMgQXJyYXk6OnRy
eUNyZWF0ZShidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CiAgICAgRk9SX0VBQ0hfVFlQRURf
QVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKEZBQ1RPUlkpCiAjdW5kZWYgRkFDVE9SWQog
ICAgIGNhc2UgRGF0YVZpZXdUeXBlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBj
YTE4ODQ0NzcyODEwMGM1YWYzN2E1N2Q2ZDdlMTRjNmY4NzkyYjA1Li4yZTU2Y2UxNjViNTk2NGNh
NGRkMDRmNTdlNDc5ODZiNDc0ZGU1YzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApA
QCAtMzE0LDEzICszMTQsMTMgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6c2V0KAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjx0eXBlbmFtZSBBZGFw
dG9yOjpWaWV3VHlwZT4gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnBvc3NpYmx5
U2hhcmVkVHlwZWRJbXBsKCkKIHsKLSAgICByZXR1cm4gQWRhcHRvcjo6Vmlld1R5cGU6OmNyZWF0
ZShwb3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsKKyAgICBy
ZXR1cm4gQWRhcHRvcjo6Vmlld1R5cGU6OnRyeUNyZWF0ZShwb3NzaWJseVNoYXJlZEJ1ZmZlcigp
LCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnVuc2hhcmVkVHlwZWRJbXBsKCkKIHsKLSAgICByZXR1cm4gQWRhcHRv
cjo6Vmlld1R5cGU6OmNyZWF0ZSh1bnNoYXJlZEJ1ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0
aCgpKTsKKyAgICByZXR1cm4gQWRhcHRvcjo6Vmlld1R5cGU6OnRyeUNyZWF0ZSh1bnNoYXJlZEJ1
ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1v
cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKaW5kZXgg
YTY4NWYwZWEzZTRmY2Y5MDVkYjJjYzM2ZDUwMGFhNzU5Y2I3N2IzZi4uMzhiYmU4OTQ4NDdhZjc5
MmE4YjMwZWMxZTAxNjcxMDM1OTJjMjQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU1lbW9yeS5jcHAKQEAgLTI2OSwxMiArMjY5LDEyIEBAIE1lbW9yeTo6TWVtb3J5KHZvaWQq
IG1lbW9yeSwgUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBzaXplX3QgbWFw
cGVkCiAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1lbW9yeTo6TWVtb3J5IGFsbG9jYXRpbmcg
IiwgKnRoaXMpOwogfQogCi1SZWZQdHI8TWVtb3J5PiBNZW1vcnk6OmNyZWF0ZSgpCitSZWY8TWVt
b3J5PiBNZW1vcnk6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZW1vcnko
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVtb3J5KCkpOwogfQogCi1SZWZQdHI8TWVt
b3J5PiBNZW1vcnk6OmNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0s
IFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1
cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNs
YWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFn
ZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQorUmVmUHRyPE1lbW9yeT4gTWVtb3J5Ojp0
cnlDcmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwg
V1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYg
Z3Jvd1N1Y2Nlc3NDYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaW5pdGlhbCk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoIW1heGltdW0gfHwgbWF4aW11bSA+PSBpbml0aWFsKTsgLy8gVGhpcyBzaG91bGQg
YmUgZ3VhcmFudGVlZCBieSBvdXIgY2FsbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU1lbW9yeS5oCmluZGV4IGMzNjU4MGY3OWVmNzMzZDg2MThkY2ZkYjNmNjcyMTczODVmMmYyNDEu
LjAwNzM3ZmMxZTY1ZTJiMjhkMGIwMDhhOWUzOTUzZGM3NzJjOTkxMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmgKQEAgLTU5LDggKzU5LDggQEAgY2xhc3MgTWVtb3J5
IDogcHVibGljIFJlZkNvdW50ZWQ8TWVtb3J5PiB7CiAgICAgZW51bSBTeW5jVHJ5VG9SZWNsYWlt
IHsgU3luY1RyeVRvUmVjbGFpbVRhZyB9OwogICAgIGVudW0gR3Jvd1N1Y2Nlc3MgeyBHcm93U3Vj
Y2Vzc1RhZyB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxNZW1vcnk+IGNyZWF0ZSgpOwotICAgIHN0
YXRpYyBSZWZQdHI8TWVtb3J5PiBjcmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBt
YXhpbXVtLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9y
eVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1Ry
eVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291
bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayk7CisgICAgc3RhdGljIFJlZjxN
ZW1vcnk+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWZQdHI8TWVtb3J5PiB0cnlDcmVhdGUoUGFn
ZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90
aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
U3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlv
bjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3ND
YWxsYmFjayk7CiAKICAgICB+TWVtb3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtVGFibGUuY3BwCmluZGV4IDA0YWMwNjUyNTU5YTZkOTM4ZjA5YjA2YWVlMjAxZjkxMmU5ZTRj
NjguLmViYjYzMjUyMGZhZjMwODNkZjRjNmYyNzEwMDFmZDU1NzE0NWU4ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIFRh
YmxlOjpzZXRMZW5ndGgodWludDMyX3QgbGVuZ3RoKQogICAgIEFTU0VSVChtX21hc2sgPT0gV1RG
OjptYXNrRm9yU2l6ZShhbGxvY2F0ZWRMZW5ndGgobGVuZ3RoKSkpOwogfQogCi1SZWZQdHI8VGFi
bGU+IFRhYmxlOjpjcmVhdGUodWludDMyX3QgaW5pdGlhbCwgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gbWF4aW11bSkKK1JlZlB0cjxUYWJsZT4gVGFibGU6OnRyeUNyZWF0ZSh1aW50MzJfdCBpbml0
aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKQogewogICAgIGlmICghaXNWYWxp
ZExlbmd0aChpbml0aWFsKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21UYWJsZS5oCmluZGV4IDRlMTVlMjkwMTQ0ZjIzMjgzN2M2Yjg1MzBhMjdk
M2YzNWE3NjA5ZmIuLjJmNTQ4M2M2MThmYTQ1OGJjZTBlZDg1MGRhNTU5NGE5MWU2MmI5ZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNs
YXNzIEluc3RhbmNlOwogCiBjbGFzcyBUYWJsZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxUYWJsZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8VGFibGU+IGNyZWF0ZSh1aW50
MzJfdCBpbml0aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKTsKKyAgICBzdGF0
aWMgUmVmUHRyPFRhYmxlPiB0cnlDcmVhdGUodWludDMyX3QgaW5pdGlhbCwgc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gbWF4aW11bSk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB+VGFibGUoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlJbnN0YW5jZS5jcHAKaW5kZXggYWJjN2ZhZTQ4ZWY3OGJhZTdlZjM0Y2JlNGYzNTZhYmY4NGVh
MDNhMy4uYmQ3MDNmZGIyNmIyNDM4MzYxM2E2YjRjZjgzOWI3MjQ2NTAxOTgwOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFu
Y2UuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFz
c2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAg
ICAgICAgIGF1dG8qIGpzTWVtb3J5ID0gSlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlKGV4ZWMs
IHZtLCBnbG9iYWxPYmplY3QtPldlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJlKCkpOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKIAotICAgICAg
ICAgICAgUmVmUHRyPFdhc206Ok1lbW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5OjpjcmVhdGUo
bW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5LmluaXRpYWwoKSwgbW9kdWxlSW5mb3JtYXRpb24ubWVt
b3J5Lm1heGltdW0oKSwKKyAgICAgICAgICAgIFJlZlB0cjxXYXNtOjpNZW1vcnk+IG1lbW9yeSA9
IFdhc206Ok1lbW9yeTo6dHJ5Q3JlYXRlKG1vZHVsZUluZm9ybWF0aW9uLm1lbW9yeS5pbml0aWFs
KCksIG1vZHVsZUluZm9ybWF0aW9uLm1lbW9yeS5tYXhpbXVtKCksCiAgICAgICAgICAgICAgICAg
WyZ2bV0gKFdhc206Ok1lbW9yeTo6Tm90aWZ5UHJlc3N1cmUpIHsgdm0uaGVhcC5jb2xsZWN0QXN5
bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtXSAoV2Fz
bTo6TWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVj
dGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtLCBqc01lbW9yeV0gKFdh
c206Ok1lbW9yeTo6R3Jvd1N1Y2Nlc3MsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdh
c206OlBhZ2VDb3VudCBuZXdQYWdlQ291bnQpIHsganNNZW1vcnktPmdyb3dTdWNjZXNzQ2FsbGJh
Y2sodm0sIG9sZFBhZ2VDb3VudCwgbmV3UGFnZUNvdW50KTsgfSk7CkBAIC0yOTcsNyArMjk3LDcg
QEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShW
TSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICBpZiAoIWpzSW5zdGFuY2UtPm1lbW9yeSgp
KSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGEgZHVtbXkgbWVtb3J5LCBzbyB0aGF0
IHdhc20gLT4gd2FzbSB0aHVua3MgYXZvaWQgY2hlY2tpbmcgZm9yIGEgbnVsbHB0ciBNZW1vcnkg
d2hlbiB0cnlpbmcgdG8gc2V0IHBpbm5lZCByZWdpc3RlcnMuCiAgICAgICAgIGF1dG8qIGpzTWVt
b3J5ID0gSlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlKGV4ZWMsIHZtLCBnbG9iYWxPYmplY3Qt
PldlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJlKCkpOwotICAgICAgICBqc01lbW9yeS0+YWRvcHQo
V2FzbTo6TWVtb3J5OjpjcmVhdGUoKS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAganNNZW1v
cnktPmFkb3B0KFdhc206Ok1lbW9yeTo6Y3JlYXRlKCkpOwogICAgICAgICBqc0luc3RhbmNlLT5z
ZXRNZW1vcnkodm0sIGpzTWVtb3J5KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBudWxscHRyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCmluZGV4IDU2NTYyNTI2Y2ZlNzE3OGIy
NzM4ZTkyNjVkN2IyODVhM2U0NzY0NmYuLjdhNmE1ZjAzOThmODYwYTEwMTM4YjZiM2JkNTk1NjJj
MDA3ZDllMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlNZW1vcnkuY3BwCkBAIC02OSw3ICs2OSw3IEBAIFN0cnVjdHVyZSogSlNXZWJB
c3NlbWJseU1lbW9yeTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iCiAKIEpTV2ViQXNzZW1ibHlNZW1vcnk6OkpTV2ViQXNzZW1ibHlNZW1vcnkoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKLSAgICAs
IG1fbWVtb3J5KFdhc206Ok1lbW9yeTo6Y3JlYXRlKCkucmVsZWFzZU5vbk51bGwoKSkKKyAgICAs
IG1fbWVtb3J5KFdhc206Ok1lbW9yeTo6Y3JlYXRlKCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggNGYyNjAyNDJkNmZiNTcwN2Y3NWRlNzFkMTM2ZDZhNjliMDEyYWZm
OC4uMTQwNGU2NzgyYTliNjJmYzBhMWJjMzZlN2I1NDQ4NDdlMjJlNmQyYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1v
cnlDb25zdHJ1Y3Rvci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeShFeGVjU3RhdGUqIGV4
ZWMKICAgICBhdXRvKiBqc01lbW9yeSA9IEpTV2ViQXNzZW1ibHlNZW1vcnk6OmNyZWF0ZShleGVj
LCB2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5XZWJBc3NlbWJseU1lbW9yeVN0cnVj
dHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCi0gICAgUmVmUHRyPFdhc206Ok1lbW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5
OjpjcmVhdGUoaW5pdGlhbFBhZ2VDb3VudCwgbWF4aW11bVBhZ2VDb3VudCwKKyAgICBSZWZQdHI8
V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OnRyeUNyZWF0ZShpbml0aWFsUGFn
ZUNvdW50LCBtYXhpbXVtUGFnZUNvdW50LAogICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpO
b3RpZnlQcmVzc3VyZSkgeyB2bS5oZWFwLmNvbGxlY3RBc3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1
bGwpOyB9LAogICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7
IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAg
WyZ2bSwganNNZW1vcnldIChXYXNtOjpNZW1vcnk6Okdyb3dTdWNjZXNzLCBXYXNtOjpQYWdlQ291
bnQgb2xkUGFnZUNvdW50LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KSB7IGpzTWVtb3J5
LT5ncm93U3VjY2Vzc0NhbGxiYWNrKHZtLCBvbGRQYWdlQ291bnQsIG5ld1BhZ2VDb3VudCk7IH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IGU4Y2E1OGNiZjYwYWM0NmFiMjMwZWUzZGYwNGE1ZjRh
MzAyOGYyZjIuLjM5YTY2ZmFmNjYzODZmN2NkYzhlNjNlNjQ0YWUwZmNmNzA5ODEyYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1v
ZHVsZVJlY29yZC5jcHAKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9i
agogICAgICAgICBpZiAoISFtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0aW9uICYmICFo
YXNUYWJsZUltcG9ydCkgewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1vZHVsZUluZm9y
bWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaXNJbXBvcnQoKSk7CiAgICAgICAgICAgICAvLyBXZSBj
cmVhdGUgYSBUYWJsZSB3aGVuIGl0J3MgYSBUYWJsZSBkZWZpbml0aW9uLgotICAgICAgICAgICAg
UmVmUHRyPFdhc206OlRhYmxlPiB3YXNtVGFibGUgPSBXYXNtOjpUYWJsZTo6Y3JlYXRlKG1vZHVs
ZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaW5pdGlhbCgpLCBtb2R1bGVJbmZvcm1hdGlv
bi50YWJsZUluZm9ybWF0aW9uLm1heGltdW0oKSk7CisgICAgICAgICAgICBSZWZQdHI8V2FzbTo6
VGFibGU+IHdhc21UYWJsZSA9IFdhc206OlRhYmxlOjp0cnlDcmVhdGUobW9kdWxlSW5mb3JtYXRp
b24udGFibGVJbmZvcm1hdGlvbi5pbml0aWFsKCksIG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5m
b3JtYXRpb24ubWF4aW11bSgpKTsKICAgICAgICAgICAgIGlmICghd2FzbVRhYmxlKQogICAgICAg
ICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihl
eGVjLCB2bSwgImNvdWxkbid0IGNyZWF0ZSBUYWJsZSIpKTsKICAgICAgICAgICAgIEpTV2ViQXNz
ZW1ibHlUYWJsZSogdGFibGUgPSBKU1dlYkFzc2VtYmx5VGFibGU6OmNyZWF0ZShleGVjLCB2bSwg
Z2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseVRhYmxlU3RydWN0dXJlKCksIHdhc21UYWJsZS5yZWxl
YXNlTm9uTnVsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwCmluZGV4IDA3NmM3ODc4ZjVk
ZTI2ZWNiMDE3YmY4NTc4OGIwMDE5N2VhMzJiMTUuLjVhNjk1MjA4NTBkZTAxOTFhZTI3M2I0N2Zi
OTliMzM3YzE3ZTg2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcApAQCAtOTAsNyArOTAs
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFz
c2VtYmx5VGFibGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9CiAgICAgfQogCi0gICAgUmVm
UHRyPFdhc206OlRhYmxlPiB3YXNtVGFibGUgPSBXYXNtOjpUYWJsZTo6Y3JlYXRlKGluaXRpYWws
IG1heGltdW0pOworICAgIFJlZlB0cjxXYXNtOjpUYWJsZT4gd2FzbVRhYmxlID0gV2FzbTo6VGFi
bGU6OnRyeUNyZWF0ZShpbml0aWFsLCBtYXhpbXVtKTsKICAgICBpZiAoIXdhc21UYWJsZSkgewog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93
U2NvcGUsCiAgICAgICAgICAgICBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJjb3VsZG4ndCBjcmVh
dGUgVGFibGUiX3MpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFy
S2V5LmNwcAppbmRleCA0NzZkMmU1ZTM3N2E1OTQwMGE2NTU0MjYyNTg3NzU4YTdlZTk3MmYyLi5k
MGZiM2UwNTM2ZmVkYzkyNzFjZTFkZTkzMGFiNDdjYjU3N2E0OTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9u
Q2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCBS
ZWZQdHI8QXJyYXlCdWZmZXI+IENETVNlc3Npb25DbGVhcktleTo6Y2FjaGVkS2V5Rm9yS2V5SUQo
Y29uc3QgU3RyaW5nJiBrZXlJZCkgYwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1
dG8ga2V5RGF0YSA9IG1fY2FjaGVkS2V5cy5nZXQoa2V5SWQpOwotICAgIFJlZlB0cjxVaW50OEFy
cmF5PiBrZXlEYXRhQXJyYXkgPSBVaW50OEFycmF5OjpjcmVhdGUoa2V5RGF0YS5kYXRhKCksIGtl
eURhdGEuc2l6ZSgpKTsKKyAgICBhdXRvIGtleURhdGFBcnJheSA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShrZXlEYXRhLmRhdGEoKSwga2V5RGF0YS5zaXplKCkpOwogICAgIHJldHVybiBrZXlEYXRhQXJy
YXktPnVuc2hhcmVkQnVmZmVyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCA3
OWVjODkxZDgxM2NkOTFiNzA4NzE5Zjc0MmQ5NjlhN2ZmMjFmNzA5Li42MmIzMTkyYTJmNjM4Y2M5
NGQ5MzJhZThiNWNmYmE0NDBhYzFlNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC0z
MDgsNyArMzA4LDcgQEAgc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29u
dGV4dChOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnksIEpTQ29udGUKICAgICAgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbmFtZSA9IE9wYXF1ZUpT
U3RyaW5nOjpjcmVhdGUoa2V5KTsKKyAgICAgICAgYXV0byBuYW1lID0gT3BhcXVlSlNTdHJpbmc6
OnRyeUNyZWF0ZShrZXkpOwogICAgICAgICBKU09iamVjdFNldFByb3BlcnR5KFtjb250ZXh0IEpT
R2xvYmFsQ29udGV4dFJlZl0sIHJlc3VsdE9iamVjdCwgbmFtZS5nZXQoKSwgW3ZhbHVlIEpTVmFs
dWVSZWZdLCAwLCAmZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAg
ICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyLmNwcAppbmRleCA5ZjBhMjVmZDNmYmM4YjMyZGY5ODY0MTFmNGExNTVjZmI2MTk0OTQ5
Li41NmExM2NhZWFiZDRlM2ZkNGI4YmMzYWU2ZjdhNjgxZTMyZGQyODRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcApAQCAtNjcsNyArNjcs
NyBAQCBBdWRpb0J1ZmZlcjo6QXVkaW9CdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywg
c2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdAogICAgIG1fY2hhbm5lbHMucmVzZXJ2ZUNhcGFj
aXR5KG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bWJlck9mQ2hhbm5lbHM7ICsraSkgewotICAgICAgICBhdXRvIGNoYW5uZWxEYXRhQXJyYXkgPSBG
bG9hdDMyQXJyYXk6OmNyZWF0ZShtX2xlbmd0aCk7CisgICAgICAgIGF1dG8gY2hhbm5lbERhdGFB
cnJheSA9IEZsb2F0MzJBcnJheTo6dHJ5Q3JlYXRlKG1fbGVuZ3RoKTsKICAgICAgICAgaWYgKCFj
aGFubmVsRGF0YUFycmF5KSB7CiAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTg2LDcgKzg2LDcgQEAgQXVkaW9CdWZmZXI6OkF1ZGlvQnVmZmVyKEF1ZGlv
QnVzJiBidXMpCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyA9IGJ1cy5udW1iZXJPZkNo
YW5uZWxzKCk7CiAgICAgbV9jaGFubmVscy5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZDaGFubmVs
cyk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkg
ewotICAgICAgICBhdXRvIGNoYW5uZWxEYXRhQXJyYXkgPSBGbG9hdDMyQXJyYXk6OmNyZWF0ZSht
X2xlbmd0aCk7CisgICAgICAgIGF1dG8gY2hhbm5lbERhdGFBcnJheSA9IEZsb2F0MzJBcnJheTo6
dHJ5Q3JlYXRlKG1fbGVuZ3RoKTsKICAgICAgICAgaWYgKCFjaGFubmVsRGF0YUFycmF5KSB7CiAg
ICAgICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTExNSw5ICsx
MTUsNyBAQCBFeGNlcHRpb25PcjxSZWY8RmxvYXQzMkFycmF5Pj4gQXVkaW9CdWZmZXI6OmdldENo
YW5uZWxEYXRhKHVuc2lnbmVkIGNoYW5uZWxJbmRleAogICAgIGlmIChjaGFubmVsSW5kZXggPj0g
bV9jaGFubmVscy5zaXplKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJv
ciB9OwogICAgIGF1dG8mIGNoYW5uZWxEYXRhID0gKm1fY2hhbm5lbHNbY2hhbm5lbEluZGV4XTsK
LSAgICBhdXRvIGFycmF5ID0gRmxvYXQzMkFycmF5OjpjcmVhdGUoY2hhbm5lbERhdGEudW5zaGFy
ZWRCdWZmZXIoKSwgY2hhbm5lbERhdGEuYnl0ZU9mZnNldCgpLCBjaGFubmVsRGF0YS5sZW5ndGgo
KSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOwotICAgIHJldHVybiBhcnJheS5yZWxlYXNl
Tm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShjaGFubmVsRGF0YS51
bnNoYXJlZEJ1ZmZlcigpLCBjaGFubmVsRGF0YS5ieXRlT2Zmc2V0KCksIGNoYW5uZWxEYXRhLmxl
bmd0aCgpKTsKIH0KIAogRmxvYXQzMkFycmF5KiBBdWRpb0J1ZmZlcjo6Y2hhbm5lbERhdGEodW5z
aWduZWQgY2hhbm5lbEluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ2ci9WUkV5ZVBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9W
UkV5ZVBhcmFtZXRlcnMuY3BwCmluZGV4IDI1ZmI4ZThiN2Q1NTVkN2FkMGQzNDkxNzQ5OTdkYjMy
OTcwY2M5YTkuLjAxMjY0YmQ4NjkyNGZjZmNjYzhjMmM1ZTNhNzhmNzIwNjM5MTE2YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJFeWVQYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRXllUGFyYW1ldGVycy5jcHAKQEAg
LTM5LDEyICszOSwxMSBAQCBWUkV5ZVBhcmFtZXRlcnM6OlZSRXllUGFyYW1ldGVycyhjb25zdCBG
bG9hdFBvaW50M0QmIG9mZnNldCwgY29uc3QgVlJQbGF0Zm9ybURpcwogUmVmPEZsb2F0MzJBcnJh
eT4gVlJFeWVQYXJhbWV0ZXJzOjpvZmZzZXQoKSBjb25zdAogewogICAgIGF1dG8gb2Zmc2V0ID0g
RmxvYXQzMkFycmF5OjpjcmVhdGUoMyk7Ci0gICAgUkVMRUFTRV9BU1NFUlQob2Zmc2V0KTsKICAg
ICBmbG9hdCogb2Zmc2V0RGF0YSA9IG9mZnNldC0+ZGF0YSgpOwogICAgIG9mZnNldERhdGFbMF0g
PSBtX29mZnNldC54KCk7CiAgICAgb2Zmc2V0RGF0YVsxXSA9IG1fb2Zmc2V0LnkoKTsKICAgICBv
ZmZzZXREYXRhWzJdID0gbV9vZmZzZXQueigpOwotICAgIHJldHVybiBvZmZzZXQucmVsZWFzZU5v
bk51bGwoKTsKKyAgICByZXR1cm4gb2Zmc2V0OwogfQogCiBjb25zdCBWUkZpZWxkT2ZWaWV3JiBW
UkV5ZVBhcmFtZXRlcnM6OmZpZWxkT2ZWaWV3KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VidnIvVlJGcmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHAKaW5kZXggNjVjM2RiYWQ2OGRjMmU4NGExMzYxYzY2
MGExZjdlZWU4OThjMWZiZC4uYjIxNWI1NWZjNmMwMzFiMDdkNjljNzJkNWZhMGQ5ZTVlYmE3MWMw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAgVlJGcmFtZURhdGE6OlZSRnJhbWVEYXRhKCkKIHN0YXRpYyBSZWY8Rmxv
YXQzMkFycmF5PiBtYXRyaXhUb0FycmF5KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRy
aXgpCiB7CiAgICAgYXV0byBjb2x1bW5NYWpvck1hdHJpeCA9IG1hdHJpeC50b0NvbHVtbk1ham9y
RmxvYXRBcnJheSgpOwotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShjb2x1bW5NYWpv
ck1hdHJpeC5kYXRhKCksIDE2KS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMy
QXJyYXk6OmNyZWF0ZShjb2x1bW5NYWpvck1hdHJpeC5kYXRhKCksIDE2KTsKIH0KIAogUmVmPEZs
b2F0MzJBcnJheT4gVlJGcmFtZURhdGE6OmxlZnRQcm9qZWN0aW9uTWF0cml4KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJQb3NlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJQb3NlLmNwcAppbmRleCA4ZTNiYWY1YTJmMDg0NTA5
NTY0OGI4MWRhMjlkZGJkZTlmZWY2NDRiLi4xNjg2YjlhNWFiN2RmN2MzN2FlM2NlMjIzNTcwZDA0
OWI1MGU5NzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSUG9z
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUlBvc2UuY3BwCkBAIC0z
Miw3ICszMiw3IEBAIHN0YXRpYyBSZWZQdHI8RmxvYXQzMkFycmF5PiBvcHRpb25hbEZsb2F0M1Rv
SlNDQXJyYXkoY29uc3Qgc3RkOjpvcHRpb25hbDxWUlBsYXRmCiAgICAgaWYgKCFkYXRhKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShk
YXRhLT5kYXRhLCAzKS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMyQXJyYXk6
OmNyZWF0ZShkYXRhLT5kYXRhLCAzKTsKIH0KIAogUmVmUHRyPEZsb2F0MzJBcnJheT4gVlJQb3Nl
Ojpwb3NpdGlvbigpIGNvbnN0CkBAIC00Miw3ICs0Miw3IEBAIFJlZlB0cjxGbG9hdDMyQXJyYXk+
IFZSUG9zZTo6cG9zaXRpb24oKSBjb25zdAogCiAgICAgYXV0byYgcG9zaXRpb24gPSAqbV90cmFj
a2luZ0luZm8ucG9zaXRpb247CiAgICAgZmxvYXQgcG9zaXRpb25EYXRhWzNdID0geyBwb3NpdGlv
bi54KCksIHBvc2l0aW9uLnkoKSwgcG9zaXRpb24ueigpIH07Ci0gICAgcmV0dXJuIEZsb2F0MzJB
cnJheTo6Y3JlYXRlKHBvc2l0aW9uRGF0YSwgMykucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1
cm4gRmxvYXQzMkFycmF5OjpjcmVhdGUocG9zaXRpb25EYXRhLCAzKTsKIH0KIAogUmVmUHRyPEZs
b2F0MzJBcnJheT4gVlJQb3NlOjpsaW5lYXJWZWxvY2l0eSgpIGNvbnN0CkBAIC02Miw3ICs2Miw3
IEBAIFJlZlB0cjxGbG9hdDMyQXJyYXk+IFZSUG9zZTo6b3JpZW50YXRpb24oKSBjb25zdAogCiAg
ICAgYXV0byYgb3JpZW50YXRpb24gPSAqbV90cmFja2luZ0luZm8ub3JpZW50YXRpb247CiAgICAg
ZmxvYXQgb3JpZW50YXRpb25EYXRhWzRdID0geyBvcmllbnRhdGlvbi54LCBvcmllbnRhdGlvbi55
LCBvcmllbnRhdGlvbi56LCBvcmllbnRhdGlvbi53IH07Ci0gICAgcmV0dXJuIEZsb2F0MzJBcnJh
eTo6Y3JlYXRlKG9yaWVudGF0aW9uRGF0YSwgNCkucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1
cm4gRmxvYXQzMkFycmF5OjpjcmVhdGUob3JpZW50YXRpb25EYXRhLCA0KTsKIH0KIAogUmVmUHRy
PEZsb2F0MzJBcnJheT4gVlJQb3NlOjphbmd1bGFyVmVsb2NpdHkoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUlN0YWdlUGFyYW1ldGVycy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSU3RhZ2VQYXJhbWV0ZXJzLmNwcAppbmRleCAy
ZGEwNzQzYjQ0YzdlYzhmODMwOTI1OWJmNGRhMjU4N2FkZjI4NmUyLi5iNmU1NzMyNmM1MjRhNTc2
OTczYmMzYjZhN2M4NjRkODE4ODIyNTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnZyL1ZSU3RhZ2VQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnZyL1ZSU3RhZ2VQYXJhbWV0ZXJzLmNwcApAQCAtNDEsNyArNDEsNyBAQCBWUlN0YWdl
UGFyYW1ldGVyczo6VlJTdGFnZVBhcmFtZXRlcnMoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHNpdHRpbmdUb1N0YW5kaQogUmVmPEZsb2F0MzJBcnJheT4gVlJTdGFnZVBhcmFtZXRlcnM6OnNp
dHRpbmdUb1N0YW5kaW5nVHJhbnNmb3JtKCkgY29uc3QKIHsKICAgICBhdXRvIGNvbHVtbk1ham9y
TWF0cml4ID0gbV9zaXR0aW5nVG9TdGFuZGluZ1RyYW5zZm9ybS50b0NvbHVtbk1ham9yRmxvYXRB
cnJheSgpOwotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShjb2x1bW5NYWpvck1hdHJp
eC5kYXRhKCksIDE2KS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMyQXJyYXk6
OmNyZWF0ZShjb2x1bW5NYWpvck1hdHJpeC5kYXRhKCksIDE2KTsKIH0KIAogZmxvYXQgVlJTdGFn
ZVBhcmFtZXRlcnM6OnNpemVYKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaAppbmRleCA2
NGNlZGMxNjhmZDBlMmNhMDA0ODQwMDAzNmY4MzQxMGJiZmZkMjFiLi40ODRjOGQ4MWU3YmM2MWFh
ZTM5NmJhYzU4Y2E2YzIzNGNiZmQ5OWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCkBAIC05
OSw4ICs5OSw3IEBAIGlubGluZSBib29sIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6
OmVucXVldWUoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+JiYKICAgICB9CiAgICAgYXV0byBsZW5n
dGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICBhdXRvIGNodW5rID0gSlNDOjpVaW50OEFy
cmF5OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwotICAgIEFTU0VSVChjaHVu
ayk7Ci0gICAgZW5xdWV1ZShzdGF0ZSwgdG9KUygmc3RhdGUsICZnbG9iYWxPYmplY3QsIGNodW5r
LmdldCgpKSk7CisgICAgZW5xdWV1ZShzdGF0ZSwgdG9KUygmc3RhdGUsICZnbG9iYWxPYmplY3Qs
IGNodW5rLnB0cigpKSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGJhOTQ1Y2Q3NzFlNGFmOWU4NWY2N2Y4NTcyMDQ4NjI5
NTc0NGM2MDkuLmFmN2FiM2E2YzdlNGIyN2NjMzcyZDZkZjIwYWI2MTJhNDcxNTY1MzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcApAQCAtMjA5NiwzMSArMjA5NiwzMSBAQCBjbGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENs
b25lQmFzZSB7CiAgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSBnZXRKU1ZhbHVlKERhdGFW
aWV3OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgSW50OEFycmF5VGFn
OgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2Jq
ZWN0LCBJbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwg
bGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhl
YywgbV9nbG9iYWxPYmplY3QsIEludDhBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZm
ZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIFVpbnQ4QXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZp
ZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZN
b3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAg
ICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQ4QXJy
YXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5n
ZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBVaW50OENsYW1w
ZWRBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBt
X2dsb2JhbE9iamVjdCwgVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVm
ZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZl
clZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQ4Q2xhbXBlZEFycmF5Ojp0
cnlDcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgSW50MTZBcnJheVRhZzoK
LSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVj
dCwgSW50MTZBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBs
ZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVj
LCBtX2dsb2JhbE9iamVjdCwgSW50MTZBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZm
ZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIFVpbnQxNkFycmF5VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZmZXJW
aWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBVaW50MTZBcnJheTo6Y3JlYXRlKFdU
Rk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAg
ICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDE2
QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3Ro
KS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBJbnQzMkFy
cmF5VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xv
YmFsT2JqZWN0LCBJbnQzMkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVP
ZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9K
UyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBJbnQzMkFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShh
cnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIGNhc2UgVWludDMyQXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJh
eUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQzMkFycmF5Ojpj
cmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwor
ICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0
LCBVaW50MzJBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0
LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNl
IEZsb2F0MzJBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9l
eGVjLCBtX2dsb2JhbE9iamVjdCwgRmxvYXQzMkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1
ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAgYXJyYXlCdWZm
ZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBGbG9hdDMyQXJyYXk6OnRyeUNy
ZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBGbG9hdDY0QXJyYXlUYWc6Ci0g
ICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3Qs
IEZsb2F0NjRBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBs
ZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVj
LCBtX2dsb2JhbE9iamVjdCwgRmxvYXQ2NEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShhcnJheUJ1
ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKaW5k
ZXggMDgwMjA5OTU0NGM4NGQzZGIxODM3MDYzYjQ5N2U1OWRiZGZiNmZlNS4uM2Q4MDAyYzlhOTU0
OWEzMmIxMThhMGZjNGUyOWJjZDljN2FiZDJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcApAQCAtNjI5LDcgKzYyOSw3IEBA
IGF1dG8gQ3J5cHRvS2V5UlNBOjphbGdvcml0aG0oKSBjb25zdCAtPiBLZXlBbGdvcml0aG0KICAg
ICAgICAgQ3J5cHRvUnNhSGFzaGVkS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICAgICAgcmVzdWx0
Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShhbGdvcml0
aG1JZGVudGlmaWVyKCkpOwogICAgICAgICByZXN1bHQubW9kdWx1c0xlbmd0aCA9IG1vZHVsdXNM
ZW5ndGg7Ci0gICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgICAg
IHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShwdWJsaWNFeHBv
bmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CiAgICAgICAgIHJlc3VsdC5oYXNo
Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShtX2hhc2gp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTYzNyw3ICs2MzcsNyBAQCBhdXRv
IENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkgY29uc3QgLT4gS2V5QWxnb3JpdGhtCiAgICAgQ3J5
cHRvUnNhS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICByZXN1bHQubmFtZSA9IENyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKGFsZ29yaXRobUlkZW50aWZpZXIoKSk7CiAg
ICAgcmVzdWx0Lm1vZHVsdXNMZW5ndGggPSBtb2R1bHVzTGVuZ3RoOwotICAgIHJlc3VsdC5wdWJs
aWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1
YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgcmVzdWx0LnB1YmxpY0V4cG9uZW50ID0gVWludDhB
cnJheTo6dHJ5Q3JlYXRlKHB1YmxpY0V4cG9uZW50LmRhdGEoKSwgcHVibGljRXhwb25lbnQuc2l6
ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0tleVJTQU1hYy5jcHAKaW5kZXggZThlYjg0ZWEwZTUyNDYwZTJkNTc4YTZiODc4
OWQ5N2YzZTIwNDE1YS4uOTRmYzFhNzYyOTMzMmY3ZTgxZDAxMWY5MGYxNTM2MDRkNjJmNjBmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcApAQCAt
MjIyLDcgKzIyMiw3IEBAIGF1dG8gQ3J5cHRvS2V5UlNBOjphbGdvcml0aG0oKSBjb25zdCAtPiBL
ZXlBbGdvcml0aG0KICAgICAgICAgQ3J5cHRvUnNhS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICAg
ICAgcmVzdWx0Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFt
ZShhbGdvcml0aG1JZGVudGlmaWVyKCkpOwogICAgICAgICByZXN1bHQubW9kdWx1c0xlbmd0aCA9
IDA7Ci0gICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZSgw
KTsKKyAgICAgICAgcmVzdWx0LnB1YmxpY0V4cG9uZW50ID0gVWludDhBcnJheTo6dHJ5Q3JlYXRl
KDApOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMjMyLDcgKzIzMiw3IEBA
IGF1dG8gQ3J5cHRvS2V5UlNBOjphbGdvcml0aG0oKSBjb25zdCAtPiBLZXlBbGdvcml0aG0KICAg
ICAgICAgQ3J5cHRvUnNhSGFzaGVkS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICAgICAgcmVzdWx0
Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShhbGdvcml0
aG1JZGVudGlmaWVyKCkpOwogICAgICAgICByZXN1bHQubW9kdWx1c0xlbmd0aCA9IG1vZHVsdXNM
ZW5ndGg7Ci0gICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgICAg
IHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShwdWJsaWNFeHBv
bmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CiAgICAgICAgIHJlc3VsdC5oYXNo
Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShtX2hhc2gp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTI0MCw3ICsyNDAsNyBAQCBhdXRv
IENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkgY29uc3QgLT4gS2V5QWxnb3JpdGhtCiAgICAgQ3J5
cHRvUnNhS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICByZXN1bHQubmFtZSA9IENyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKGFsZ29yaXRobUlkZW50aWZpZXIoKSk7CiAg
ICAgcmVzdWx0Lm1vZHVsdXNMZW5ndGggPSBtb2R1bHVzTGVuZ3RoOwotICAgIHJlc3VsdC5wdWJs
aWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1
YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgcmVzdWx0LnB1YmxpY0V4cG9uZW50ID0gVWludDhB
cnJheTo6dHJ5Q3JlYXRlKHB1YmxpY0V4cG9uZW50LmRhdGEoKSwgcHVibGljRXhwb25lbnQuc2l6
ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJp
eFJlYWRPbmx5LmNwcAppbmRleCBkZWFhZGZhN2Y4MTFlNzQ4ZjNlYjEzNzE0Yjk1ZTcwNzZkOGIy
YzRlLi43MzE3NTRlNDY2ZjM3MzZlOWNjNDdkNzMwNDc1MjU3ZjdlYTViZmU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5jcHAKQEAgLTM0NSw3ICszNDUsNyBAQCBSZWY8
RE9NUG9pbnQ+IERPTU1hdHJpeFJlYWRPbmx5Ojp0cmFuc2Zvcm1Qb2ludChET01Qb2ludEluaXQm
JiBwb2ludEluaXQpCiAKIEV4Y2VwdGlvbk9yPFJlZjxGbG9hdDMyQXJyYXk+PiBET01NYXRyaXhS
ZWFkT25seTo6dG9GbG9hdDMyQXJyYXkoKSBjb25zdAogewotICAgIGF1dG8gYXJyYXkzMiA9IEZs
b2F0MzJBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgxNik7CisgICAgYXV0byBhcnJheTMyID0g
RmxvYXQzMkFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKDE2KTsKICAgICBpZiAoIWFycmF5
MzIpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJPdXQgb2YgbWVt
b3J5Il9zIH07CiAKQEAgLTM3MSw3ICszNzEsNyBAQCBFeGNlcHRpb25PcjxSZWY8RmxvYXQzMkFy
cmF5Pj4gRE9NTWF0cml4UmVhZE9ubHk6OnRvRmxvYXQzMkFycmF5KCkgY29uc3QKIAogRXhjZXB0
aW9uT3I8UmVmPEZsb2F0NjRBcnJheT4+IERPTU1hdHJpeFJlYWRPbmx5Ojp0b0Zsb2F0NjRBcnJh
eSgpIGNvbnN0CiB7Ci0gICAgYXV0byBhcnJheTY0ID0gRmxvYXQ2NEFycmF5OjpjcmVhdGVVbmlu
aXRpYWxpemVkKDE2KTsKKyAgICBhdXRvIGFycmF5NjQgPSBGbG9hdDY0QXJyYXk6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQoMTYpOwogICAgIGlmICghYXJyYXk2NCkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIk91dCBvZiBtZW1vcnkiX3MgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5jcHAKaW5kZXggMmViNDFjOWMxMTQ0NGQ2MWJkZGYzYWIxNDJiOTViZTM4NDE5NWM3
OC4uYTI0YTUzNjI2ODkwYThhOTFkMTE3MzhjYTlhNThhNDUzNzFiYjhiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuY3BwCkBAIC03OCw3ICs3OCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxGb250RmFjZT4+
IEZvbnRGYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGZhCiAg
ICAgICAgIFsmXSAoUmVmUHRyPEFycmF5QnVmZmVyPiYgYXJyYXlCdWZmZXIpIC0+IEV4Y2VwdGlv
bk9yPHZvaWQ+IHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpOwogICAgICAgICAgICAgYXV0byBhcnJheUJ1ZmZlclZpZXcgPSBKU0M6
OlVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7
Ci0gICAgICAgICAgICBkYXRhUmVxdWlyZXNBc3luY2hyb25vdXNMb2FkaW5nID0gcG9wdWxhdGVG
b250RmFjZVdpdGhBcnJheUJ1ZmZlcihyZXN1bHQtPmJhY2tpbmcoKSwgYXJyYXlCdWZmZXJWaWV3
LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgZGF0YVJlcXVpcmVzQXN5bmNocm9ub3Vz
TG9hZGluZyA9IHBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIocmVzdWx0LT5iYWNraW5n
KCksIFdURk1vdmUoYXJyYXlCdWZmZXJWaWV3KSk7CiAgICAgICAgICAgICByZXR1cm4geyB9Owog
ICAgICAgICB9CiAgICAgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5j
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXIuY3BwCmluZGV4IDllZWI3
Nzk0NWFlOTIxNGZkYjgwMGMwYmUwY2EzOTA1ODUzNTRmYjUuLmIwNDljYzFlMzRhNzJiYjkyMmY0
MTNkM2I0ZDJmYzI0ZjExODQ5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0
RW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmNwcApAQCAt
NDAsNyArNDAsNyBAQCBSZWZQdHI8VWludDhBcnJheT4gVGV4dEVuY29kZXI6OmVuY29kZShTdHJp
bmcmJiBpbnB1dCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBuZWVkIHRv
IGFsbG9jYXRlIGEgQ1N0cmluZyB0byBlbmNvZGUgaW50byBhIFVpbnQ4QXJyYXkuCiAgICAgQ1N0
cmluZyB1dGY4ID0gaW5wdXQudXRmOCgpOwotICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0
aCgpKTsKKyAgICByZXR1cm4gVWludDhBcnJheTo6dHJ5Q3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAppbmRleCA5ZmZjNDA4ZWY2MDI1ZDJlZTJjNTYxMzNjYjc1
ZWVlOGI4NjA5ZWU5Li4zYjJhMjM2NjNkMTA3NzMxZDMyNzFiNjQzODEzNDUxYTEzMTg3NTZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCkBAIC05OSwxNSArOTksMTMgQEAgSW1hZ2VEYXRh
OjpJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICA6IG1fc2l6ZShzaXplKQogICAg
ICwgbV9kYXRhKFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKChzaXplLmFy
ZWEoKSAqIDQpLnVuc2FmZUdldCgpKSkKIHsKLSAgICBBU1NFUlQobV9kYXRhKTsKIH0KIAogSW1h
Z2VEYXRhOjpJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSwgUmVmPFVpbnQ4Q2xhbXBlZEFy
cmF5PiYmIGJ5dGVBcnJheSkKICAgICA6IG1fc2l6ZShzaXplKQogICAgICwgbV9kYXRhKFdURk1v
dmUoYnl0ZUFycmF5KSkKIHsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTighbV9kYXRhIHx8IChzaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdl
dCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oKHNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkgPD0gbV9kYXRhLT5s
ZW5ndGgoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCmluZGV4IDk4YjFmMTA4Zjk2
ZjFlYmFmODdjMGFkZjQ3ODdmNjViZTRkNmNhNzYuLmEwZmZhMjk4NzE4YmYyNzdlOGExNmI2MTNl
NTc1OGE3ODcyYzIyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaApAQCAtMzQsMjUgKzM0LDI1
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSW1hZ2VE
YXRhIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VEYXRhPiB7CitjbGFzcyBJbWFnZURhdGEgOiBw
dWJsaWMgUmVmQ291bnRlZDxJbWFnZURhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gpOwot
ICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYpOwotICAg
IHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIFJlZjxVaW50
OENsYW1wZWRBcnJheT4mJik7Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURh
dGE+PiBjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmLCB1bnNpZ25lZCBzdywgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gc2gpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRp
b25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlKHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZShjb25zdCBJ
bnRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNy
ZWF0ZShjb25zdCBJbnRTaXplJiwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IGNyZWF0ZShS
ZWY8VWludDhDbGFtcGVkQXJyYXk+JiYsIHVuc2lnbmVkIHN3LCBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBzaCk7CiAKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0K
ICAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NpemUud2lkdGgoKTsgfQogICAgIGlu
dCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NpemUuaGVpZ2h0KCk7IH0KIAotICAgIFVpbnQ4
Q2xhbXBlZEFycmF5KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAg
VWludDhDbGFtcGVkQXJyYXkqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEucHRyKCk7IH0K
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYpOwogICAg
IEltYWdlRGF0YShjb25zdCBJbnRTaXplJiwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmKTsKIAog
ICAgIEludFNpemUgbV9zaXplOwotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gbV9kYXRh
OworICAgIFJlZjxVaW50OENsYW1wZWRBcnJheT4gbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA3YzA0NTU1MDhkNTQ0YmE1OGZlNGU3NDNlYTViMmZj
MmEwNTMyOTMyLi4wNzY2ODM1MDdlODkyZDkzOWUwMzM1MzVmZWJkMDhkYWM3MGYwYjdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250
ZXh0LmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIGNvbnN0IEFycmF5QnVmZmVyVmlldyYKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gc2xpY2UgPSBVaW50OEFycmF5OjpjcmVhdGUo
ZGF0YS5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBkYXRhLmJ5dGVPZmZzZXQoKSArIGNoZWNrZWRC
eXRlU3JjT2Zmc2V0LnVuc2FmZUdldCgpLCBjaGVja2VkQnl0ZUxlbmd0aC51bnNhZmVHZXQoKSk7
CisgICAgYXV0byBzbGljZSA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShkYXRhLnBvc3NpYmx5U2hh
cmVkQnVmZmVyKCksIGRhdGEuYnl0ZU9mZnNldCgpICsgY2hlY2tlZEJ5dGVTcmNPZmZzZXQudW5z
YWZlR2V0KCksIGNoZWNrZWRCeXRlTGVuZ3RoLnVuc2FmZUdldCgpKTsKICAgICBpZiAoIXNsaWNl
KSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpPVVRfT0Zf
TUVNT1JZLCAiYnVmZmVyRGF0YSIsICJDb3VsZCBub3QgY3JlYXRlIGludGVybWVkaWF0ZSBBcnJh
eUJ1ZmZlclZpZXciKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxv
bmcgbG9uZyBvZmZzZXQsIGNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHNs
aWNlID0gVWludDhBcnJheTo6Y3JlYXRlKGRhdGEucG9zc2libHlTaGFyZWRCdWZmZXIoKSwgZGF0
YS5ieXRlT2Zmc2V0KCkgKyBjaGVja2VkQnl0ZVNyY09mZnNldC51bnNhZmVHZXQoKSwgY2hlY2tl
ZEJ5dGVMZW5ndGgudW5zYWZlR2V0KCkpOworICAgIGF1dG8gc2xpY2UgPSBVaW50OEFycmF5Ojp0
cnlDcmVhdGUoZGF0YS5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBkYXRhLmJ5dGVPZmZzZXQoKSAr
IGNoZWNrZWRCeXRlU3JjT2Zmc2V0LnVuc2FmZUdldCgpLCBjaGVja2VkQnl0ZUxlbmd0aC51bnNh
ZmVHZXQoKSk7CiAgICAgaWYgKCFzbGljZSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6T1VUX09GX01FTU9SWSwgImJ1ZmZlclN1YkRhdGEiLCAiQ291bGQg
bm90IGNyZWF0ZSBpbnRlcm1lZGlhdGUgQXJyYXlCdWZmZXJWaWV3Iik7CiAgICAgICAgIHJldHVy
bjsKQEAgLTQxMiw3ICs0MTIsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRJbnRlcm5hbGZvcm1hdFBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDMwogICAgICAgICBw
YXJhbXNbaV0gPSBzYW1wbGVzW2ldOwogI2VuZGlmCiAKLSAgICByZXR1cm4gSW50MzJBcnJheTo6
Y3JlYXRlKHBhcmFtcywgbnVtVmFsdWVzKTsKKyAgICByZXR1cm4gSW50MzJBcnJheTo6dHJ5Q3Jl
YXRlKHBhcmFtcywgbnVtVmFsdWVzKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0MzRGVudW0sIGNvbnN0IFZlY3RvcjxHQzNEZW51bT4m
KQpAQCAtMTc5NCw3ICsxNzk0LDcgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkNPTE9SX1dSSVRFTUFTSzoKICAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5BcnJheVBhcmFtZXRl
cihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09NUFJFU1NFRF9URVhUVVJF
X0ZPUk1BVFM6Ci0gICAgICAgIHJldHVybiBVaW50MzJBcnJheTo6Y3JlYXRlKG1fY29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXRzLmRhdGEoKSwgbV9jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMuc2l6ZSgp
KTsKKyAgICAgICAgcmV0dXJuIFVpbnQzMkFycmF5Ojp0cnlDcmVhdGUobV9jb21wcmVzc2VkVGV4
dHVyZUZvcm1hdHMuZGF0YSgpLCBtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5zaXplKCkpOwog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNVTExfRkFDRToKICAgICAgICAgcmV0dXJuIGdl
dEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNV
TExfRkFDRV9NT0RFOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNjIwYmRiMzBhMWI2MjkwNWMxMDI4YWMxYzMyZWRh
OGVjZGE2NjBhOC4uYWY3YTc3ZmRjMzg2MzYwYTUzY2I3YTU1YTQ4NDg0ZGJmYjU1ODRmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCkBAIC00NDQsNyArNDQ0LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRQYXJhbWV0ZXIoR0MzRGVudW0gcG5hbWUpCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6Q09MT1JfV1JJVEVNQVNLOgogICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhbkFycmF5UGFyYW1l
dGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT01QUkVTU0VEX1RFWFRV
UkVfRk9STUFUUzoKLSAgICAgICAgcmV0dXJuIFVpbnQzMkFycmF5OjpjcmVhdGUobV9jb21wcmVz
c2VkVGV4dHVyZUZvcm1hdHMuZGF0YSgpLCBtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5zaXpl
KCkpOworICAgICAgICByZXR1cm4gVWludDMyQXJyYXk6OnRyeUNyZWF0ZShtX2NvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0cy5kYXRhKCksIG1fY29tcHJlc3NlZFRleHR1cmVGb3JtYXRzLnNpemUoKSk7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q1VMTF9GQUNFOgogICAgICAgICByZXR1cm4g
Z2V0Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
Q1VMTF9GQUNFX01PREU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDg1NzRmY2ViZjk5MzMyZjIzNTEz
ZGIwYTdjMmQzZWEwYmVjODVjNjkuLmYxOGE4ZmJkMDkwZmI5NTRjOGRmZGM1OTI3NDc4MWZjYjNi
ZTllMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0yOTIyLDcgKzI5MjIsNyBAQCBXZWJHTEFueSBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3Jh
bSwgY29uc3QgV2ViRwogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtZnYob2JqZWN0
T3JaZXJvKHByb2dyYW0pLCBsb2NhdGlvbiwgdmFsdWUpOwogICAgICAgICBpZiAobGVuZ3RoID09
IDEpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWVbMF07Ci0gICAgICAgIHJldHVybiBGbG9hdDMy
QXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJh
eTo6dHJ5Q3JlYXRlKHZhbHVlLCBsZW5ndGgpOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlQ6IHsKICAgICAgICAgR0MzRGludCB2YWx1ZVs0XSA9IHswfTsKQEAgLTI5MzIs
NyArMjkzMiw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZv
cm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBjb25zdCBXZWJHCiAgICAgICAgICAgICBtX2NvbnRl
eHQtPmdldFVuaWZvcm1pdihvYmplY3RPclplcm8ocHJvZ3JhbSksIGxvY2F0aW9uLCB2YWx1ZSk7
CiAgICAgICAgIGlmIChsZW5ndGggPT0gMSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZVswXTsK
LSAgICAgICAgcmV0dXJuIEludDMyQXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKKyAgICAg
ICAgcmV0dXJuIEludDMyQXJyYXk6OnRyeUNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKICAgICB9CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTDogewogICAgICAgICBHQzNEaW50IHZhbHVl
WzRdID0gezB9OwpAQCAtMzAyOCw3ICszMDI4LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VmVydGV4QXR0cmliKEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmEK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfQVRUUklCX0FSUkFZX1RZUEU6CiAg
ICAgICAgIHJldHVybiBzdGF0ZS50eXBlOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNV
UlJFTlRfVkVSVEVYX0FUVFJJQjoKLSAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJheTo6Y3JlYXRl
KG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnZhbHVlLCA0KTsKKyAgICAgICAgcmV0dXJuIEZs
b2F0MzJBcnJheTo6dHJ5Q3JlYXRlKG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnZhbHVlLCA0
KTsKICAgICBkZWZhdWx0OgogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9FTlVNLCAiZ2V0VmVydGV4QXR0cmliIiwgImludmFsaWQgcGFyYW1ldGVy
IG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MjM1LDcgKzUyMzUsNyBAQCBS
ZWZQdHI8RmxvYXQzMkFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRXZWJHTEZs
b2F0QXJyYXlQYXJhbWV0ZXIoR0MzRAogICAgIGRlZmF1bHQ6CiAgICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAgICAgfQotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVu
Z3RoKTsKKyAgICByZXR1cm4gRmxvYXQzMkFycmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7
CiB9CiAKIFJlZlB0cjxJbnQzMkFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRX
ZWJHTEludEFycmF5UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQpAQCAtNTI1NCw3ICs1MjU0LDcg
QEAgUmVmUHRyPEludDMyQXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFdlYkdM
SW50QXJyYXlQYXJhbWV0ZXIoR0MzRGVudW0KICAgICBkZWZhdWx0OgogICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgIH0KLSAgICByZXR1cm4gSW50MzJBcnJheTo6Y3JlYXRlKHZhbHVlLCBs
ZW5ndGgpOworICAgIHJldHVybiBJbnQzMkFycmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7
CiB9CiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y2hlY2tUZXh0dXJlQ29tcGxl
dGVuZXNzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgYm9vbCBwcmVwYXJlVG9EcmF3KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNw
cAppbmRleCA1OTE1YTc3MzE2ZWQ4YTAzMGE0ZTZkM2FkNzQxMDRjMTc4Y2FkOWQyLi5iMzQwNDYz
YTM5YjM5NzNkZGI4MjNjMDBhMGMxNzNlNTUxZmM4ZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtMTAxNCw3ICsx
MDE0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmV4dHJhY3RLZXlV
UklLZXlJREFuZENlcnRpZmljYXRlRnJvbUluaXREYXQKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGluaXREYXRhQnVmZmVyID0gaW5pdERhdGEtPnVuc2hhcmVkQnVmZmVyKCk7CiAKICAgICAvLyBV
c2UgYSBEYXRhVmlldyB0byByZWFkIHVpbnQzMiB2YWx1ZXMgZnJvbSB0aGUgYnVmZmVyLCBhcyBV
aW50MzJBcnJheSByZXF1aXJlcyB0aGUgcmVhZHMgYmUgYWxpZ25lZCBvbiA0LWJ5dGUgYm91bmRh
cmllcy4gCi0gICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRhVmlldyA9IEpTQzo6RGF0
YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGluaXREYXRhQnVmZmVy
LT5ieXRlTGVuZ3RoKCkpOworICAgIGF1dG8gaW5pdERhdGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6
Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVM
ZW5ndGgoKSk7CiAgICAgdWludDMyX3Qgb2Zmc2V0ID0gMDsKICAgICBib29sIHN0YXR1cyA9IHRy
dWU7CiAKQEAgLTEwMjMsNyArMTAyMyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAg
aWYgKCFzdGF0dXMgfHwgb2Zmc2V0ICsga2V5VVJJTGVuZ3RoID4gaW5pdERhdGEtPmxlbmd0aCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWZQdHI8VWludDE2QXJyYXk+IGtleVVS
SUFycmF5ID0gVWludDE2QXJyYXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIG9m
ZnNldCwga2V5VVJJTGVuZ3RoKTsKKyAgICBhdXRvIGtleVVSSUFycmF5ID0gVWludDE2QXJyYXk6
OnRyeUNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIG9mZnNldCwga2V5VVJJTGVuZ3Ro
KTsKICAgICBpZiAoIWtleVVSSUFycmF5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEw
MzUsNyArMTAzNSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRy
YWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAgaWYgKCFzdGF0dXMg
fHwgb2Zmc2V0ICsga2V5SURMZW5ndGggPiBpbml0RGF0YS0+bGVuZ3RoKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxVaW50OEFycmF5PiBrZXlJREFycmF5ID0gVWludDhB
cnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgb2Zmc2V0LCBrZXlJRExlbmd0
aCk7CisgICAgYXV0byBrZXlJREFycmF5ID0gVWludDhBcnJheTo6dHJ5Q3JlYXRlKGluaXREYXRh
QnVmZmVyLmNvcHlSZWYoKSwgb2Zmc2V0LCBrZXlJRExlbmd0aCk7CiAgICAgaWYgKCFrZXlJREFy
cmF5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0
aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAgaWYgKCFzdGF0dXMgfHwgb2Zmc2V0ICsgY2VydGlmaWNh
dGVMZW5ndGggPiBpbml0RGF0YS0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGNlcnRpZmljYXRlID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZm
ZXIpLCBvZmZzZXQsIGNlcnRpZmljYXRlTGVuZ3RoKTsKKyAgICBjZXJ0aWZpY2F0ZSA9IFVpbnQ4
QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwgb2Zmc2V0LCBjZXJ0aWZp
Y2F0ZUxlbmd0aCk7CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Yu
Y3BwCmluZGV4IDMyMzJiNzM1YTMzMWFhZWRhZTRkMTcyMDg2NWIxODQwMjBhNmNjNDUuLjcwOWMw
ODBkNGZmYjAyMTNjOGRiNmZkZDRjOGJmNzhhN2UxMjU2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC05OSw3ICs5OSw3IEBA
IFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5
UmVxdWVzdChjb25zdCBTdHJpbmcmLCBVCiAgICAgZGVzdGluYXRpb25VUkwgPSBTdHJpbmcoKTsK
IAogICAgIGF1dG8ga2V5UmVxdWVzdEJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoQ0ZEYXRh
R2V0Qnl0ZVB0cihrZXlSZXF1ZXN0LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGtleVJlcXVlc3Qu
Z2V0KCkpKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoa2V5UmVxdWVz
dEJ1ZmZlciksIDAsIGtleVJlcXVlc3RCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgcmV0dXJu
IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGtleVJlcXVlc3RCdWZmZXIpLCAwLCBrZXlS
ZXF1ZXN0QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CmluZGV4IGU4MjQ0OWE1MGZjYzhlOWI4MTdmYzc3ZTJhYTNhMDE5NWY2YTEyMjYuLmE5MjYwMmZk
NjljZDM3ZjE4OWFkMzRjYmNjMWE0YzJkZWU3NDQ1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAt
MTg5MywxMiArMTg5MywxMiBAQCBib29sIEFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5n
T2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UgogICAgICAgICBSZWZQ
dHI8SlNDOjpEYXRhVmlldz4gaW5pdERhdGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGlu
aXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7
CiAgICAgICAgIGluaXREYXRhVmlldy0+c2V0PHVpbnQzMl90PigwLCBrZXlVUklTaXplLCB0cnVl
KTsKIAotICAgICAgICBSZWZQdHI8VWludDE2QXJyYXk+IGtleVVSSUFycmF5ID0gVWludDE2QXJy
YXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDQsIGtleVVSSS5sZW5ndGgoKSk7
CisgICAgICAgIGF1dG8ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRh
QnVmZmVyLmNvcHlSZWYoKSwgNCwga2V5VVJJLmxlbmd0aCgpKTsKICAgICAgICAga2V5VVJJQXJy
YXktPnNldFJhbmdlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihTdHJpbmdWaWV3
KGtleVVSSSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0KCkpLCBrZXlVUkkubGVuZ3RoKCkg
LyBzaXplb2YodW5zaWduZWQgY2hhciksIDApOwogCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5n
dGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwotICAgICAgICBSZWZQdHI8VWludDhB
cnJheT4gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShpbml0RGF0YUJ1ZmZl
ciksIDAsIGJ5dGVMZW5ndGgpOwotICAgICAgICBpZiAoIW1fb3duZXItPnBsYXllcigpLT5rZXlO
ZWVkZWQoaW5pdERhdGEuZ2V0KCkpKQorICAgICAgICBhdXRvIGluaXREYXRhID0gVWludDhBcnJh
eTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKKyAgICAg
ICAgaWYgKCFtX293bmVyLT5wbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBzZXRSZXF1ZXN0Rm9yS2V5KGtleVVS
SSwgYXZSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXggNWVkYWM0NjNjZGQyOWZlY2I4MDkyZjQ5
MTM3ZjhmMmM2MjZlMDMyYy4uNWU5ODlmZmEzZjA3M2U0ZWViNzRmYjI3ZDAzNmMyYWYwOTA5ZDg4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24ubW0KQEAgLTE2NSw3ICsxNjUsNyBAQCBSZWZQdHI8VWludDhBcnJheT4g
Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBT
dHJpbgogCiAgICAgaWYgKCFtX2NlcnRpZmljYXRlKSB7CiAgICAgICAgIFN0cmluZyBjZXJ0aWZp
Y2F0ZVN0cmluZygiY2VydGlmaWNhdGUiX3MpOwotICAgICAgICBSZWZQdHI8VWludDhBcnJheT4g
YXJyYXkgPSBVaW50OEFycmF5OjpjcmVhdGUoY2VydGlmaWNhdGVTdHJpbmcubGVuZ3RoKCkpOwor
ICAgICAgICBhdXRvIGFycmF5ID0gVWludDhBcnJheTo6Y3JlYXRlKGNlcnRpZmljYXRlU3RyaW5n
Lmxlbmd0aCgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbGVuZ3RoID0gY2VydGlm
aWNhdGVTdHJpbmcubGVuZ3RoKCk7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICAgICAgIGFycmF5
LT5zZXQoaSwgY2VydGlmaWNhdGVTdHJpbmdbaV0pOwogICAgICAgICByZXR1cm4gYXJyYXk7CkBA
IC0yMTAsNyArMjEwLDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6cmVs
ZWFzZUtleXMoKQogICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbklkID09IFN0cmluZyhwbGF5YmFj
a1Nlc3Npb25JZFZhbHVlKSkgewogICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkNETVNlc3Np
b25BVkNvbnRlbnRLZXlTZXNzaW9uOjpyZWxlYXNlS2V5cyglcCkgLSBmb3VuZCBzZXNzaW9uLCBz
ZW5kaW5nIGV4cGlyYXRpb24gbWVzc2FnZSIpOwogICAgICAgICAgICAgICAgIG1fZXhwaXJlZFNl
c3Npb24gPSBleHBpcmVkU2Vzc2lvbkRhdGE7Ci0gICAgICAgICAgICAgICAgbV9jbGllbnQtPnNl
bmRNZXNzYWdlKFVpbnQ4QXJyYXk6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
W21fZXhwaXJlZFNlc3Npb24gYnl0ZXNdKSwgW21fZXhwaXJlZFNlc3Npb24gbGVuZ3RoXSkuZ2V0
KCksIGVtcHR5U3RyaW5nKCkpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5zZW5kTWVzc2Fn
ZShVaW50OEFycmF5OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFttX2V4cGly
ZWRTZXNzaW9uIGJ5dGVzXSksIFttX2V4cGlyZWRTZXNzaW9uIGxlbmd0aF0pLnB0cigpLCBlbXB0
eVN0cmluZygpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMzAwLDcgKzMwMCw3IEBAIGJvb2wgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Np
b246OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIG5leHRNZXNzYWdlID0gVWlu
dDhBcnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbcmVxdWVzdERhdGEg
Ynl0ZXNdKSwgW3JlcXVlc3REYXRhIGxlbmd0aF0pOworICAgICAgICBuZXh0TWVzc2FnZSA9IFVp
bnQ4QXJyYXk6OnRyeUNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW3JlcXVlc3RE
YXRhIGJ5dGVzXSksIFtyZXF1ZXN0RGF0YSBsZW5ndGhdKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtMzUwLDcgKzM1MCw3IEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNz
aW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpCiAg
ICAgZXJyb3JDb2RlID0gMDsKICAgICBzeXN0ZW1Db2RlID0gMDsKICAgICBtX2V4cGlyZWRTZXNz
aW9uID0gW2V4cGlyZWRTZXNzaW9ucyBmaXJzdE9iamVjdF07Ci0gICAgcmV0dXJuIFVpbnQ4QXJy
YXk6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW21fZXhwaXJlZFNlc3Npb24g
Ynl0ZXNdKSwgW21fZXhwaXJlZFNlc3Npb24gbGVuZ3RoXSk7CisgICAgcmV0dXJuIFVpbnQ4QXJy
YXk6OnRyeUNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW21fZXhwaXJlZFNlc3Np
b24gYnl0ZXNdKSwgW21fZXhwaXJlZFNlc3Npb24gbGVuZ3RoXSk7CiB9CiAKIHZvaWQgQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb246OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdChBVkNv
bnRlbnRLZXlSZXF1ZXN0ICprZXlSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA4MmY0Y2RjMDcwZjUzYWQw
N2U2YjliNWYyYzgzNDRmODgyNjNiMmFhLi5jYTE5YmFlMDhmZWM1ZmNjYmE1N2U0OWFhMGY0ZWFm
ODcxM2U1Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
QVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtOTksOSArOTksOSBAQCBSZWZQdHI8VWludDhBcnJheT4g
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJp
bmcmCiAgICAgc3lzdGVtQ29kZSA9IDA7CiAgICAgZGVzdGluYXRpb25VUkwgPSBTdHJpbmcoKTsK
IAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2V5UmVxdWVzdEJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGUoW2tleVJlcXVlc3QuZ2V0KCkgYnl0ZXNdLCBba2V5UmVxdWVzdC5nZXQoKSBsZW5n
dGhdKTsKKyAgICBhdXRvIGtleVJlcXVlc3RCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKFtr
ZXlSZXF1ZXN0LmdldCgpIGJ5dGVzXSwgW2tleVJlcXVlc3QuZ2V0KCkgbGVuZ3RoXSk7CiAgICAg
dW5zaWduZWQgYnl0ZUxlbmd0aCA9IGtleVJlcXVlc3RCdWZmZXItPmJ5dGVMZW5ndGgoKTsKLSAg
ICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoa2V5UmVxdWVzdEJ1ZmZlciksIDAs
IGJ5dGVMZW5ndGgpOworICAgIHJldHVybiBVaW50OEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShr
ZXlSZXF1ZXN0QnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7CiB9CiAKIHZvaWQgQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbk9iakM6OnJlbGVhc2VLZXlzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNl
c3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCmluZGV4IDdiMjAyODEyMTA3MmRiNTcx
MTdlYTYxMGUzM2FjMzQ0ZjEyZTExNDguLjY4YzE4YTA4YzVkYzZmMmJkNmJlOGQ0Nzg0NjQ2ODNm
ODg1N2U0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFW
U3RyZWFtU2Vzc2lvbi5tbQpAQCAtMTIyLDcgKzEyMiw3IEBAIFJlZlB0cjxVaW50OEFycmF5PiBD
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5n
JiBtCiAgICAgfQogCiAgICAgU3RyaW5nIGNlcnRpZmljYXRlU3RyaW5nKCJjZXJ0aWZpY2F0ZSJf
cyk7Ci0gICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGFycmF5ID0gVWludDhBcnJheTo6Y3JlYXRlKGNl
cnRpZmljYXRlU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBhdXRvIGFycmF5ID0gVWludDhBcnJheTo6
Y3JlYXRlKGNlcnRpZmljYXRlU3RyaW5nLmxlbmd0aCgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwLCBsZW5ndGggPSBjZXJ0aWZpY2F0ZVN0cmluZy5sZW5ndGgoKTsgaSA8IGxlbmd0aDsgKytp
KQogICAgICAgICBhcnJheS0+c2V0KGksIGNlcnRpZmljYXRlU3RyaW5nW2ldKTsKICAgICByZXR1
cm4gYXJyYXk7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZTdHJlYW1TZXNz
aW9uOjpyZWxlYXNlS2V5cygpCiAgICAgICAgICAgICBpZiAobV9zZXNzaW9uSWQgPT0gU3RyaW5n
KHBsYXliYWNrU2Vzc2lvbklkVmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgTE9HKE1lZGlhLCAi
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMoJXApIC0gZm91bmQgc2Vzc2lv
biwgc2VuZGluZyBleHBpcmF0aW9uIG1lc3NhZ2UiKTsKICAgICAgICAgICAgICAgICBtX2V4cGly
ZWRTZXNzaW9uID0gZXhwaXJlZFNlc3Npb25EYXRhOwotICAgICAgICAgICAgICAgIG1fY2xpZW50
LT5zZW5kTWVzc2FnZShVaW50OEFycmF5OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KFttX2V4cGlyZWRTZXNzaW9uIGJ5dGVzXSksIFttX2V4cGlyZWRTZXNzaW9uIGxlbmd0aF0p
LmdldCgpLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+c2VuZE1l
c3NhZ2UoVWludDhBcnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbbV9l
eHBpcmVkU2Vzc2lvbiBieXRlc10pLCBbbV9leHBpcmVkU2Vzc2lvbiBsZW5ndGhdKS5wdHIoKSwg
ZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KQEAgLTMzNSw3ICszMzUsNyBAQCBSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZAogICAg
IGVycm9yQ29kZSA9IDA7CiAgICAgc3lzdGVtQ29kZSA9IDA7CiAgICAgbV9leHBpcmVkU2Vzc2lv
biA9IFtleHBpcmVkU2Vzc2lvbnMgZmlyc3RPYmplY3RdOwotICAgIHJldHVybiBVaW50OEFycmF5
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFttX2V4cGlyZWRTZXNzaW9uIGJ5
dGVzXSksIFttX2V4cGlyZWRTZXNzaW9uIGxlbmd0aF0pOworICAgIHJldHVybiBVaW50OEFycmF5
Ojp0cnlDcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFttX2V4cGlyZWRTZXNzaW9u
IGJ5dGVzXSksIFttX2V4cGlyZWRTZXNzaW9uIGxlbmd0aF0pOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQppbmRleCBkNDRhMDg3YTQyOTlhYjY1ODU2YjgyNDU2YTYwOWFiYjMwOGQ1YzFj
Li5lNmYzYzgzYTM0MWZkZWUyYjcxZGFiNDQxMGI0YjQ3MWFjYWFkZDVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KQEAgLTE3NjQsMTUgKzE3NjQsMTUgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3Nl
dFIKICAgICAgICAgLy8gQ3JlYXRlIGFuIGluaXREYXRhIHdpdGggdGhlIGZvbGxvd2luZyBsYXlv
dXQ6CiAgICAgICAgIC8vIFs0IGJ5dGVzOiBrZXlVUkkgc2l6ZV0sIFtrZXlVUkkgc2l6ZSBieXRl
czoga2V5VVJJXQogICAgICAgICB1bnNpZ25lZCBrZXlVUklTaXplID0ga2V5VVJJLmxlbmd0aCgp
ICogc2l6ZW9mKFVDaGFyKTsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBpbml0RGF0YUJ1
ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoNCArIGtleVVSSVNpemUsIDEpOworICAgICAgICBh
dXRvIGluaXREYXRhQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZSg0ICsga2V5VVJJU2l6ZSwg
MSk7CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpOwotICAgICAgICBSZWZQdHI8SlNDOjpEYXRhVmlldz4gaW5pdERhdGFWaWV3ID0gSlND
OjpEYXRhVmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgYnl0ZUxlbmd0
aCk7CisgICAgICAgIGF1dG8gaW5pdERhdGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGlu
aXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIGluaXREYXRh
Vmlldy0+c2V0PHVpbnQzMl90PigwLCBrZXlVUklTaXplLCB0cnVlKTsKIAotICAgICAgICBSZWZQ
dHI8VWludDE2QXJyYXk+IGtleVVSSUFycmF5ID0gVWludDE2QXJyYXk6OmNyZWF0ZShpbml0RGF0
YUJ1ZmZlci5jb3B5UmVmKCksIDQsIGtleVVSSS5sZW5ndGgoKSk7CisgICAgICAgIGF1dG8ga2V5
VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwg
NCwga2V5VVJJLmxlbmd0aCgpKTsKICAgICAgICAga2V5VVJJQXJyYXktPnNldFJhbmdlKFN0cmlu
Z1ZpZXcoa2V5VVJJKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwga2V5VVJJLmxlbmd0aCgpIC8g
c2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAwKTsKIAotICAgICAgICBSZWZQdHI8VWludDhBcnJheT4g
aW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShpbml0RGF0YUJ1ZmZlciksIDAs
IGJ5dGVMZW5ndGgpOworICAgICAgICBhdXRvIGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRl
KFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKICAgICAgICAgaWYgKCFw
bGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICNlbmRpZgpAQCAtMTgxMiw3ICsxODEyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3Nl
dFIKICNlbmRpZgogI2VuZGlmCiAKLSAgICBSZWZQdHI8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
PiByZXNvdXJjZUxvYWRlciA9IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHRoaXMs
IGF2UmVxdWVzdCk7CisgICAgYXV0byByZXNvdXJjZUxvYWRlciA9IFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6Y3JlYXRlKHRoaXMsIGF2UmVxdWVzdCk7CiAgICAgbV9yZXNvdXJjZUxvYWRlck1h
cC5hZGQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJlcXVlc3QsIHJlc291cmNlTG9hZGVyKTsKICAg
ICByZXNvdXJjZUxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVNhbXBsZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KaW5kZXggMTg5OGRjYjQ4
MDdkYzNkNGRlY2I0YzAzZGViZTRlZGY4NjcxMmI5Zi4uYzNiY2E2MTA5MDU1NGY4MjhiODQ4Mzlh
ZDQwNTQ5YTYyN2JmZTc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxl
QVZGT2JqQy5tbQpAQCAtMjk0LDcgKzI5NCw3IEBAIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFy
cmF5PiBNZWRpYVNhbXBsZUFWRk9iakM6OmdldFJHQkFJbWFnZURhdGEoKSBjb25zdAogCiAgICAg
dm9pZCogZGF0YSA9IENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzc09mUGxhbmUocmdiYVBpeGVs
QnVmZmVyLmdldCgpLCAwKTsKICAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IENWUGl4ZWxCdWZmZXJH
ZXRIZWlnaHQocGl4ZWxCdWZmZXIpICogQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoKHBpeGVsQnVmZmVy
KSAqIDQ7Ci0gICAgYXV0byByZXN1bHQgPSBKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUo
SlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ5dGVMZW5ndGgpLCAwLCBieXRlTGVuZ3Ro
KTsKKyAgICBhdXRvIHJlc3VsdCA9IEpTQzo6VWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZShK
U0M6OkFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YSwgYnl0ZUxlbmd0aCksIDAsIGJ5dGVMZW5ndGgp
OwogCiAgICAgc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jhc2VBZGRyZXNzKHJnYmFQaXhl
bEJ1ZmZlci5nZXQoKSwga0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKICAgICBBU1NFUlQo
c3RhdHVzID09IG5vRXJyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggY2QzNTQ3NTllZTQ0ZTJmMjFiNjNiZmMyNDI5
YjAzMmFiNWQzYWQzNi4uNDVlMDM4YjM4MjhiODM4ZmQ3ZGRjNjNhOWNjNzdkZjNkYmExMDlhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMubW0KQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwogI2lm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIExPRyhNZWRpYVNvdXJjZSwgIlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKCVwKSAtIHRyYWNrOiVkIiwgdGhpcywgdHJhY2tJRCk7
CiAgICAgbV9wcm90ZWN0ZWRUcmFja0lEID0gdHJhY2tJRDsKLSAgICBSZWZQdHI8VWludDhBcnJh
eT4gaW5pdERhdGFBcnJheSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShbaW5pdERhdGEgbGVuZ3RoXSk7
CisgICAgYXV0byBpbml0RGF0YUFycmF5ID0gVWludDhBcnJheTo6Y3JlYXRlKFtpbml0RGF0YSBs
ZW5ndGhdKTsKICAgICBbaW5pdERhdGEgZ2V0Qnl0ZXM6aW5pdERhdGFBcnJheS0+ZGF0YSgpIGxl
bmd0aDppbml0RGF0YUFycmF5LT5sZW5ndGgoKV07CiAgICAgbV9tZWRpYVNvdXJjZS0+c291cmNl
QnVmZmVyS2V5TmVlZGVkKHRoaXMsIGluaXREYXRhQXJyYXkuZ2V0KCkpOwogICAgIGlmIChhdXRv
IHNlc3Npb24gPSBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+Y2RtU2Vzc2lvbigpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDQ1NmFmNzg2ZDA5MjU5MDE3YzQzMTc1ZDJkNjQwODcxNzYy
ZThhNGUuLmNjYmJlMWYxNTZlMGY5ZTNhMGYwMzFkYTdjY2U0MjhhNmZlZTk0ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwCkBAIC00MTIsNyArNDEyLDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UmVjdCYgbG9n
aWMKICAgICBpZiAoYXJlYS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgYXV0byByZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFs
aXplZChhcmVhLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFy
cmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGFyZWEudW5zYWZlR2V0KCkpOwogICAgIGlmICgh
cmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCmluZGV4
IGQ0MmFhMzQ0OGIwYmMzN2RlNmU1ZjA4OTYzNmQxNzk3ZDU0ZmEzNzYuLjg0NzlkNWQzYTIzYTA3
ZTg5ZGZjYjhiYjIwNTIwZmE5MDNlYjcyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKQEAgLTEzMyw3
ICsxMzMsNyBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyRGF0YTo6Z2V0
RGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dAogICAgIGlmIChhcmVhLmhhc092ZXJm
bG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHJlc3VsdCA9IFVp
bnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKGFyZWEudW5zYWZlR2V0KCkpOwor
ICAgIGF1dG8gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQoYXJlYS51bnNhZmVHZXQoKSk7CiAgICAgdWludDhfdCogcmVzdWx0RGF0YSA9IHJlc3VsdCA/
IHJlc3VsdC0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICBpZiAoIXJlc3VsdERhdGEpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAppbmRleCA5YTc5OThkMTM5NTkz
MDkzNzg0NzQyNjE4NzY2MmE3ODEwNTYwMWYyLi4xMTgwMjMxMWU5YWVjMWM5YjVmMmQwN2FmYTI5
ZDQ3MTMwNjJiNjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcApAQCAtNTMxLDcgKzUzMSw3IEBA
IHZvaWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBJbnRT
aXplIHBhaW50U2l6ZSA9IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwogICAgIHBhaW50U2l6
ZS5zY2FsZShmaWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKLSAgICBhdXRvIHRtcEltYWdlRGF0YSA9
IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKChwYWludFNpemUuYXJlYSgp
ICogNCkudW5zYWZlR2V0KCkpOworICAgIGF1dG8gdG1wSW1hZ2VEYXRhID0gVWludDhDbGFtcGVk
QXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoKHBhaW50U2l6ZS5hcmVhKCkgKiA0KS51bnNh
ZmVHZXQoKSk7CiAgICAgaWYgKCF0bXBJbWFnZURhdGEpCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJF
ZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwCmluZGV4IDY2YzMwYTk4YzI4YWVkMmZjZmY1MTk2MDJkMmM0NzEzOWY3NmFl
YTguLjZlOTg2ZDRlYzJhOTc5Mjk2NjM4NGZjNTUwNzRhMmY5NzJiNTkwZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5jcHAKQEAgLTI5MCw3ICsyOTAsNyBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZp
bHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAg
SW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVy
OjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXplKSk7CiAgICAgc2NhbGVkU2l6ZS5zY2FsZSht
X2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBhdXRvIGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBl
ZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKChzY2FsZWRTaXplLmFyZWEoKSAqIDQpLnVuc2Fm
ZUdldCgpKTsKKyAgICBhdXRvIGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKChzY2FsZWRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKICAg
ICBpZiAoIWltYWdlRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTMwMyw3ICsz
MDMsNyBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6cHJlbXVsdGlw
bGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIEludFNpemUgc2NhbGVkU2l6ZShy
ZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmco
c2NhbGVkU2l6ZSkpOwogICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUo
KSk7Ci0gICAgYXV0byBpbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0
aWFsaXplZCgoc2NhbGVkU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CisgICAgYXV0byBp
bWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCgoc2Nh
bGVkU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CiAgICAgaWYgKCFpbWFnZURhdGEpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KCppbWFn
ZURhdGEsIHJlY3QpOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5
VW5tdWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QK
ICAgICAgICAgICAgIEludFNpemUgaW5wdXRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgp
KTsKICAgICAgICAgICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGlu
cHV0U2l6ZSkpOwogICAgICAgICAgICAgaW5wdXRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNj
YWxlKCkpOwotICAgICAgICAgICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xh
bXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKChpbnB1dFNpemUuYXJlYSgpICogNCkudW5z
YWZlR2V0KCkpOworICAgICAgICAgICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4
Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKChpbnB1dFNpemUuYXJlYSgpICog
NCkudW5zYWZlR2V0KCkpOwogICAgICAgICAgICAgaWYgKCFtX3VubXVsdGlwbGllZEltYWdlUmVz
dWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIApAQCAtNDc2LDcgKzQ3
Niw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdChVaW50OENs
YW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0CiAgICAgICAgICAgICBJbnRTaXplIGlucHV0
U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIUlt
YWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhpbnB1dFNpemUpKTsKICAgICAgICAgICAgIGlu
cHV0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICAgICAgICAgIG1fcHJl
bXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoKGlucHV0U2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CisgICAgICAgICAgICBt
X3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKChpbnB1dFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAgICAg
ICAgICAgaWYgKCFtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAKQEAgLTUxNSw3ICs1MTUsNyBAQCBVaW50OENsYW1wZWRBcnJh
eSogRmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiAgICAgSW50
U2l6ZSByZXN1bHRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICBBU1NFUlQo
IUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhyZXN1bHRTaXplKSk7CiAgICAgcmVzdWx0
U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBtX3VubXVsdGlwbGllZElt
YWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoKHJlc3Vs
dFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOworICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCgocmVzdWx0
U2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CiAgICAgcmV0dXJuIG1fdW5tdWx0aXBsaWVk
SW1hZ2VSZXN1bHQuZ2V0KCk7CiB9CiAKQEAgLTUzMSw3ICs1MzEsNyBAQCBVaW50OENsYW1wZWRB
cnJheSogRmlsdGVyRWZmZWN0OjpjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKQogICAg
IEludFNpemUgcmVzdWx0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAgICAgQVNT
RVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcocmVzdWx0U2l6ZSkpOwogICAgIHJl
c3VsdFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgbV9wcmVtdWx0aXBs
aWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgo
cmVzdWx0U2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CisgICAgbV9wcmVtdWx0aXBsaWVk
SW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCgo
cmVzdWx0U2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CiAgICAgcmV0dXJuIG1fcHJlbXVs
dGlwbGllZEltYWdlUmVzdWx0LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJE
LmNwcAppbmRleCBmMGUyNTgwOTIwNTM4NTRjZDUxNTk2YzdlMDcxNzU5ZWY3Y2JmNWE4Li4wMjc1
ZjlkYzliZTk2OGYwNzA2NjM0ZWMyYjNjZTg1ZDAyOWRlNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRh
dGFEaXJlY3QyRC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgY29uc3QK
ICAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIGF1dG8gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQobnVtQnl0ZXMudW5zYWZlR2V0KCkpOworICAgIGF1dG8gcmVzdWx0ID0gVWludDhDbGFt
cGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobnVtQnl0ZXMudW5zYWZlR2V0KCkpOwog
ICAgIHVuc2lnbmVkIGNoYXIqIHJlc3VsdERhdGEgPSByZXN1bHQgPyByZXN1bHQtPmRhdGEoKSA6
IG51bGxwdHI7CiAgICAgaWYgKCFyZXN1bHREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZv
cm1SZXByZXNlbnRhdGlvbk1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJp
YWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbQppbmRleCBkYzBkNDFjMDFmMGM4MTMz
MGM4YjVjZTBiMWFkZGY4YTRkNWU1NzllLi5lOTk3YjM2YTdiNGE1MGExNjMzYWIwYWVhYWY2YWEx
Yjc4ZjVkYjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFs
aXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tCkBAIC0xOTAs
NyArMTkwLDcgQEAgc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4
dChOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnksIEpTQ29udGUKICAgICAgICAgaWYgKCF2YWx1ZSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbmFtZSA9IE9wYXF1ZUpTU3Ry
aW5nOjpjcmVhdGUoa2V5KTsKKyAgICAgICAgYXV0byBuYW1lID0gT3BhcXVlSlNTdHJpbmc6OnRy
eUNyZWF0ZShrZXkpOwogICAgICAgICBKU09iamVjdFNldFByb3BlcnR5KFtjb250ZXh0IEpTR2xv
YmFsQ29udGV4dFJlZl0sIHJlc3VsdE9iamVjdCwgbmFtZS5nZXQoKSwgW3ZhbHVlIEpTVmFsdWVS
ZWZdLCAwLCAmZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAg
IGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja0JveC5jcHAKaW5kZXggZDRhYTIwNTQ2M2U4OGZlNzUwNzZmMmE4MDdlZjkyZDIw
M2U5YmU5MS4uZTU0YmEzNzZkYTYxNjY0NTdjMjMyODk3MTgxNGNmZjM4NWZhNmUxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3gu
Y3BwCkBAIC00OSw3ICs0OSw3IEBAIE1vY2tCb3g6Ok1vY2tCb3goQXJyYXlCdWZmZXIqIGRhdGEp
CiBTdHJpbmcgTW9ja0JveDo6cGVla1R5cGUoQXJyYXlCdWZmZXIqIGRhdGEpCiB7CiAgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwotICAgIFJlZlB0cjxJbnQ4QXJyYXk+IGFycmF5ID0gSlNDOjpJ
bnQ4QXJyYXk6OmNyZWF0ZShkYXRhLCAwLCA0KTsKKyAgICBhdXRvIGFycmF5ID0gSlNDOjpJbnQ4
QXJyYXk6OmNyZWF0ZShkYXRhLCAwLCA0KTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsr
aSkKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJyYXktPml0ZW0oaSkpOwogICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCk7CkBAIC01Nyw3ICs1Nyw3IEBAIFN0cmluZyBNb2NrQm94OjpwZWVr
VHlwZShBcnJheUJ1ZmZlciogZGF0YSkKIAogc2l6ZV90IE1vY2tCb3g6OnBlZWtMZW5ndGgoQXJy
YXlCdWZmZXIqIGRhdGEpCiB7Ci0gICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IHZpZXcgPSBKU0M6
OkRhdGFWaWV3OjpjcmVhdGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBhdXRv
IHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0aCgp
KTsKICAgICByZXR1cm4gdmlldy0+Z2V0PHVpbnQzMl90Pig0LCB0cnVlKTsKIH0KIApAQCAtNjYs
MTEgKzY2LDExIEBAIE1vY2tUcmFja0JveDo6TW9ja1RyYWNrQm94KEFycmF5QnVmZmVyKiBkYXRh
KQogewogICAgIEFTU0VSVChtX2xlbmd0aCA9PSAxNyk7CiAKLSAgICBSZWZQdHI8SlNDOjpEYXRh
Vmlldz4gdmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShkYXRhLCAwLCBkYXRhLT5ieXRlTGVu
Z3RoKCkpOworICAgIGF1dG8gdmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShkYXRhLCAwLCBk
YXRhLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fdHJhY2tJRCA9IHZpZXctPmdldDxpbnQzMl90Pig4
LCB0cnVlKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBSZWZQdHI8SW50OEFy
cmF5PiBhcnJheSA9IEpTQzo6SW50OEFycmF5OjpjcmVhdGUoZGF0YSwgMTIsIDQpOworICAgIGF1
dG8gYXJyYXkgPSBKU0M6OkludDhBcnJheTo6Y3JlYXRlKGRhdGEsIDEyLCA0KTsKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IDQ7ICsraSkKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJyYXktPml0
ZW0oaSkpOwogICAgIG1fY29kZWMgPSBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC04OSw3ICs4OSw3
IEBAIE1vY2tJbml0aWFsaXphdGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9uQm94KEFycmF5QnVm
ZmVyKiBkYXRhKQogewogICAgIEFTU0VSVChtX2xlbmd0aCA+PSAxMyk7CiAKLSAgICBSZWZQdHI8
SlNDOjpEYXRhVmlldz4gdmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShkYXRhLCAwLCBkYXRh
LT5ieXRlTGVuZ3RoKCkpOworICAgIGF1dG8gdmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShk
YXRhLCAwLCBkYXRhLT5ieXRlTGVuZ3RoKCkpOwogICAgIGludDMyX3QgdGltZVZhbHVlID0gdmll
dy0+Z2V0PGludDMyX3Q+KDgsIHRydWUpOwogICAgIGludDMyX3QgdGltZVNjYWxlID0gdmlldy0+
Z2V0PGludDMyX3Q+KDEyLCB0cnVlKTsKICAgICBtX2R1cmF0aW9uID0gTWVkaWFUaW1lKHRpbWVW
YWx1ZSwgdGltZVNjYWxlKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBNb2NrU2FtcGxlQm94OjpNb2Nr
U2FtcGxlQm94KEFycmF5QnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VSVChtX2xlbmd0aCA9PSAz
MCk7CiAKLSAgICBSZWZQdHI8SlNDOjpEYXRhVmlldz4gdmlldyA9IEpTQzo6RGF0YVZpZXc6OmNy
ZWF0ZShkYXRhLCAwLCBkYXRhLT5ieXRlTGVuZ3RoKCkpOworICAgIGF1dG8gdmlldyA9IEpTQzo6
RGF0YVZpZXc6OmNyZWF0ZShkYXRhLCAwLCBkYXRhLT5ieXRlTGVuZ3RoKCkpOwogICAgIGludDMy
X3QgdGltZVNjYWxlID0gdmlldy0+Z2V0PGludDMyX3Q+KDgsIHRydWUpOwogCiAgICAgaW50MzJf
dCB0aW1lVmFsdWUgPSB2aWV3LT5nZXQ8aW50MzJfdD4oMTIsIHRydWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAppbmRleCA2ODMyZDA5Yjg3NWJlM2Q0NzA4OGNi
ZDZjZWU1ZTllYzcxZjUxMjQxLi5iNzU3ZjlmOTVkNmM5NTk1MTlhYzA2NWI0ZTBmMDNlYmE1MWQ2
NzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcApAQCAtMTg5
LDYgKzE4OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNo
YXBlKEltYWdlKiBpbWFnZSwgZmxvYXQgdGhyZXNob2xkLCBjCiAgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Qu
c2l6ZSgpKSk7CiAKICAgICAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5
ID0gaW1hZ2VCdWZmZXItPmdldFVubXVsdGlwbGllZEltYWdlRGF0YShJbnRSZWN0KEludFBvaW50
KCksIGltYWdlUmVjdC5zaXplKCkpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQocGl4ZWxBcnJh
eSk7CiAgICAgICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5ndGggPSBwaXhlbEFycmF5LT5sZW5n
dGgoKTsKICAgICAgICAgdW5zaWduZWQgcGl4ZWxBcnJheU9mZnNldCA9IDM7IC8vIEVhY2ggcGl4
ZWwgaXMgZm91ciBieXRlczogUkdCQS4KICAgICAgICAgdWludDhfdCBhbHBoYVBpeGVsVGhyZXNo
b2xkID0gdGhyZXNob2xkICogMjU1OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9MZWdhY3lNb2NrQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NE
TS5jcHAKaW5kZXggMzg5MGMwZmFiYzQ3ZTU5MGU1YjFhYmJkMzVkMmY5OTJjNDY1YTc0Ny4uNjQy
ODdkMjM5YWY1NzNlOTIwM2QyNTg0MzFiMjczYzdiODc0OTAwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCkBAIC03OSwyNSArNzksMjUgQEAgc3RkOjp1bmlxdWVf
cHRyPExlZ2FjeUNETVNlc3Npb24+IExlZ2FjeU1vY2tDRE06OmNyZWF0ZVNlc3Npb24oTGVnYWN5
Q0RNU2Vzc2lvbkMKIHN0YXRpYyBVaW50OEFycmF5KiBpbml0RGF0YVByZWZpeCgpCiB7CiAgICAg
Y29uc3QgdW5zaWduZWQgY2hhciBwcmVmaXhEYXRhW10gPSB7ICdtJywgJ28nLCAnYycsICdrJyB9
OwotICAgIHN0YXRpYyBVaW50OEFycmF5KiBwcmVmaXggPSBVaW50OEFycmF5OjpjcmVhdGUocHJl
Zml4RGF0YSwgV1RGX0FSUkFZX0xFTkdUSChwcmVmaXhEYXRhKSkubGVha1JlZigpOworICAgIHN0
YXRpYyBVaW50OEFycmF5JiBwcmVmaXggeyBVaW50OEFycmF5OjpjcmVhdGUocHJlZml4RGF0YSwg
V1RGX0FSUkFZX0xFTkdUSChwcmVmaXhEYXRhKSkubGVha1JlZigpIH07CiAKLSAgICByZXR1cm4g
cHJlZml4OworICAgIHJldHVybiAmcHJlZml4OwogfQogCiBzdGF0aWMgVWludDhBcnJheSoga2V5
UHJlZml4KCkKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwcmVmaXhEYXRhW10g
PSB7J2snLCAnZScsICd5J307Ci0gICAgc3RhdGljIFVpbnQ4QXJyYXkqIHByZWZpeCA9IFVpbnQ4
QXJyYXk6OmNyZWF0ZShwcmVmaXhEYXRhLCBXVEZfQVJSQVlfTEVOR1RIKHByZWZpeERhdGEpKS5s
ZWFrUmVmKCk7CisgICAgc3RhdGljIFVpbnQ4QXJyYXkmIHByZWZpeCB7IFVpbnQ4QXJyYXk6OmNy
ZWF0ZShwcmVmaXhEYXRhLCBXVEZfQVJSQVlfTEVOR1RIKHByZWZpeERhdGEpKS5sZWFrUmVmKCkg
fTsKIAotICAgIHJldHVybiBwcmVmaXg7CisgICAgcmV0dXJuICZwcmVmaXg7CiB9CiAKIHN0YXRp
YyBVaW50OEFycmF5KiBrZXlSZXF1ZXN0KCkKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
Y2hhciByZXF1ZXN0RGF0YVtdID0geydyJywgJ2UnLCAncScsICd1JywgJ2UnLCAncycsICd0J307
Ci0gICAgc3RhdGljIFVpbnQ4QXJyYXkqIHJlcXVlc3QgPSBVaW50OEFycmF5OjpjcmVhdGUocmVx
dWVzdERhdGEsIFdURl9BUlJBWV9MRU5HVEgocmVxdWVzdERhdGEpKS5sZWFrUmVmKCk7CisgICAg
c3RhdGljIFVpbnQ4QXJyYXkmIHJlcXVlc3QgeyBVaW50OEFycmF5OjpjcmVhdGUocmVxdWVzdERh
dGEsIFdURl9BUlJBWV9MRU5HVEgocmVxdWVzdERhdGEpKS5sZWFrUmVmKCkgfTsKIAotICAgIHJl
dHVybiByZXF1ZXN0OworICAgIHJldHVybiAmcmVxdWVzdDsKIH0KIAogc3RhdGljIFN0cmluZyBn
ZW5lcmF0ZVNlc3Npb25JZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9XS1N0cmluZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAK
aW5kZXggNzhkZTYxZTk4YTc3OTI3ODJjNTAyYTQwNDc4Y2IzYWRkMjE1YjEwNS4uNzY3YWE4ZDkx
NGIwY2Y3NTE5NmUyMGMzNjNiODA2MzhmZmQ3ZDNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL1dLU3RyaW5nLmNwcApAQCAtMTM2LDUgKzEzNiw1IEBAIFdLU3RyaW5nUmVmIFdLU3RyaW5n
Q3JlYXRlV2l0aEpTU3RyaW5nKEpTU3RyaW5nUmVmIGpzU3RyaW5nUmVmKQogSlNTdHJpbmdSZWYg
V0tTdHJpbmdDb3B5SlNTdHJpbmcoV0tTdHJpbmdSZWYgc3RyaW5nUmVmKQogewogICAgIEpTQzo6
aW5pdGlhbGl6ZVRocmVhZGluZygpOwotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3JlYXRl
KHRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmcoKSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFx
dWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmcoKSkubGVha1Jl
ZigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAppbmRleCAyOWZiMDFlMjBj
NDAwODRmMzlhOTM5NzYxOTdlZGE4NTU0M2M5ZmMxLi5lZmEwMzQxNDAyYTBhZjM3YmIxMmUzZTlm
NDM0ZmNmMmM1MjMzZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAt
ODgsNyArODgsNyBAQCBzdGF0aWMgSlNPYmplY3RSZWYgdG9KU0FycmF5KEpTQ29udGV4dFJlZiBj
b250ZXh0LCBjb25zdCBWZWN0b3I8VD4mIGRhdGEsIEpTVmFsdQogCiBzdGF0aWMgaW5saW5lIEpT
VmFsdWVSZWYgdG9KU1ZhbHVlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHN0
cmluZykKIHsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgT3BhcXVlSlNT
dHJpbmc6OmNyZWF0ZShzdHJpbmcpLmdldCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJp
bmcoY29udGV4dCwgT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShzdHJpbmcpLmdldCgpKTsKIH0K
IAogc3RhdGljIGlubGluZSBKU1ZhbHVlUmVmIGNhbGxQcm9wZXJ0eUZ1bmN0aW9uKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBvYmplY3QsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lLCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtOTYsNyArOTYsNyBAQCBzdGF0aWMgaW5saW5lIEpT
VmFsdWVSZWYgY2FsbFByb3BlcnR5RnVuY3Rpb24oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2Jq
ZWN0UmVmCiAgICAgQVNTRVJUX0FSRyhvYmplY3QsIG9iamVjdCk7CiAgICAgQVNTRVJUX0FSRyhv
YmplY3QsIEpTVmFsdWVJc09iamVjdChjb250ZXh0LCBvYmplY3QpKTsKIAotICAgIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uID0gY29uc3RfY2FzdDxKU09iamVjdFJlZj4oSlNPYmplY3RHZXRQcm9wZXJ0
eShjb250ZXh0LCBvYmplY3QsIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocHJvcGVydHlOYW1lKS5n
ZXQoKSwgZXhjZXB0aW9uKSk7CisgICAgSlNPYmplY3RSZWYgZnVuY3Rpb24gPSBjb25zdF9jYXN0
PEpTT2JqZWN0UmVmPihKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIG9iamVjdCwgT3BhcXVl
SlNTdHJpbmc6OnRyeUNyZWF0ZShwcm9wZXJ0eU5hbWUpLmdldCgpLCBleGNlcHRpb24pKTsKICAg
ICBBU1NFUlQoSlNPYmplY3RJc0Z1bmN0aW9uKGNvbnRleHQsIGZ1bmN0aW9uKSk7CiAKICAgICBy
ZXR1cm4gSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBmdW5jdGlvbiwgb2JqZWN0LCBh
cmd1bWVudENvdW50LCBhcmd1bWVudHMsIGV4Y2VwdGlvbik7CkBAIC0xNzcsNyArMTc3LDcgQEAg
SlNPYmplY3RSZWYgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2NyaXB0T2JqZWN0Rm9yRnJh
bWUoV2ViRnJhbWUmIGZyYW1lKQogCiAgICAgU3RyaW5nIHNjcmlwdCA9IFN0cmluZ0ltcGw6OmNy
ZWF0ZVdpdGhvdXRDb3B5aW5nKFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlTY3JpcHRTb3VyY2Us
IHNpemVvZihXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5U2NyaXB0U291cmNlKSk7CiAKLSAgICBK
U09iamVjdFJlZiBzY3JpcHRPYmplY3RGdW5jdGlvbiA9IGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+
KEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShzY3JpcHQp
LmdldCgpLCBudWxscHRyLCBudWxscHRyLCAwLCAmZXhjZXB0aW9uKSk7CisgICAgSlNPYmplY3RS
ZWYgc2NyaXB0T2JqZWN0RnVuY3Rpb24gPSBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihKU0V2YWx1
YXRlU2NyaXB0KGNvbnRleHQsIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoc2NyaXB0KS5nZXQo
KSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgJmV4Y2VwdGlvbikpOwogICAgIEFTU0VSVChKU1ZhbHVl
SXNPYmplY3QoY29udGV4dCwgc2NyaXB0T2JqZWN0RnVuY3Rpb24pKTsKIAogICAgIEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10gPSB7IHNlc3Npb25JZGVudGlmaWVyLCBldmFsdWF0ZUZ1bmN0aW9uLCBj
cmVhdGVVVUlERnVuY3Rpb24gfTsKQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IHBhZ2VJ
RCwgdWludAogCiAgICAgU3RyaW5nIGV4Y2VwdGlvbk1lc3NhZ2U7CiAgICAgaWYgKEpTVmFsdWVJ
c09iamVjdChjb250ZXh0LCBleGNlcHRpb24pKSB7Ci0gICAgICAgIEpTVmFsdWVSZWYgbmFtZVZh
bHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBjb25zdF9jYXN0PEpTT2JqZWN0UmVm
PihleGNlcHRpb24pLCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKCJuYW1lIl9zKS5nZXQoKSwgbnVs
bHB0cik7CisgICAgICAgIEpTVmFsdWVSZWYgbmFtZVZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0
eShjb250ZXh0LCBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihleGNlcHRpb24pLCBPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKCJuYW1lIl9zKS5nZXQoKSwgbnVsbHB0cik7CiAgICAgICAgIGF1dG8g
ZXhjZXB0aW9uTmFtZSA9IGFkb3B0UmVmKEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgbmFt
ZVZhbHVlLCBudWxscHRyKSktPnN0cmluZygpOwogICAgICAgICBpZiAoZXhjZXB0aW9uTmFtZSA9
PSAiTm9kZU5vdEZvdW5kIikKICAgICAgICAgICAgIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6Ok5vZGVOb3RGb3VuZCk7CkBAIC0y
OTEsNyArMjkxLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0ZUph
dmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBwYWdlSUQsIHVpbnQKICAgICAgICAgZWxzZSBpZiAo
ZXhjZXB0aW9uTmFtZSA9PSAiSW52YWxpZFNlbGVjdG9yIikKICAgICAgICAgICAgIGVycm9yVHlw
ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3Rh
bnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6Oklu
dmFsaWRTZWxlY3Rvcik7CiAKLSAgICAgICAgSlNWYWx1ZVJlZiBtZXNzYWdlVmFsdWUgPSBKU09i
amVjdEdldFByb3BlcnR5KGNvbnRleHQsIGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KGV4Y2VwdGlv
biksIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoIm1lc3NhZ2UiX3MpLmdldCgpLCBudWxscHRyKTsK
KyAgICAgICAgSlNWYWx1ZVJlZiBtZXNzYWdlVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNv
bnRleHQsIGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KGV4Y2VwdGlvbiksIE9wYXF1ZUpTU3RyaW5n
Ojp0cnlDcmVhdGUoIm1lc3NhZ2UiX3MpLmdldCgpLCBudWxscHRyKTsKICAgICAgICAgZXhjZXB0
aW9uTWVzc2FnZSA9IGFkb3B0UmVmKEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgbWVzc2Fn
ZVZhbHVlLCBudWxscHRyKSktPnN0cmluZygpOwogICAgIH0gZWxzZQogICAgICAgICBleGNlcHRp
b25NZXNzYWdlID0gYWRvcHRSZWYoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBleGNlcHRp
b24sIG51bGxwdHIpKS0+c3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCAzZDFmZTc1YTkwMGI3YjI1NmM3ZTI1Mzll
MDIzYjNhNzNmNzFmOTY1Li40OWIyMjI1NDA1YjgyZjgxOGQzZWZjMDI3NTQ5ZTQzOWViZDkxN2Yz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW0KQEAgLTExMTgsNyArMTExOCw3IEBAIHZvaWQgUERGUGx1Z2luOjpydW5TY3JpcHRzSW5Q
REZEb2N1bWVudCgpCiAgICAgSlNHbG9iYWxDb250ZXh0UmVmIGN0eCA9IEpTR2xvYmFsQ29udGV4
dENyZWF0ZSgwKTsKICAgICBKU09iamVjdFJlZiBqc1BERkRvYyA9IG1ha2VKU1BERkRvYyhjdHgp
OwogICAgIGZvciAoYXV0byYgc2NyaXB0IDogc2NyaXB0cykKLSAgICAgICAgSlNFdmFsdWF0ZVNj
cmlwdChjdHgsIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoc2NyaXB0LmdldCgpKS5nZXQoKSwganNQ
REZEb2MsIG51bGxwdHIsIDAsIG51bGxwdHIpOworICAgICAgICBKU0V2YWx1YXRlU2NyaXB0KGN0
eCwgT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShzY3JpcHQuZ2V0KCkpLmdldCgpLCBqc1BERkRv
YywgbnVsbHB0ciwgMCwgbnVsbHB0cik7CiAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShjdHgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBE
RlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJ
T1MubW0KaW5kZXggMTg0MWI5ODVjODUwY2FmMDQzNzRhYTgxM2EyMDUwYmRmMDA0NTdhNy4uZjhi
NjZhM2I3NGNlMWYzMjUwMTVjOTVmN2FkY2M5OTVkN2ZlOGY0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQpAQCAtMzI2LDcgKzMyNiw3
IEBAIC0gKHZvaWQpZmluaXNoZWRMb2FkaW5nV2l0aERhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2Ug
KilkYXRhU291cmNlCiAgICAgSlNHbG9iYWxDb250ZXh0UmVmIGN0eCA9IEpTR2xvYmFsQ29udGV4
dENyZWF0ZSgwKTsKICAgICBKU09iamVjdFJlZiBqc1BERkRvYyA9IG1ha2VKU1BERkRvYyhjdHgs
IGRhdGFTb3VyY2UpOwogICAgIGZvciAoTlNTdHJpbmcgKnNjcmlwdCBpbiBzY3JpcHRzKQotICAg
ICAgICBKU0V2YWx1YXRlU2NyaXB0KGN0eCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShzY3JpcHQp
LmdldCgpLCBqc1BERkRvYywgbnVsbHB0ciwgMCwgbnVsbHB0cik7CisgICAgICAgIEpTRXZhbHVh
dGVTY3JpcHQoY3R4LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHNjcmlwdCkuZ2V0KCksIGpz
UERGRG9jLCBudWxscHRyLCAwLCBudWxscHRyKTsKICAgICBKU0dsb2JhbENvbnRleHRSZWxlYXNl
KGN0eCk7CiAKICAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXk6WUVTXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0K
aW5kZXggMWU4NmJhMDc0NGI0NGZmNjRkMjQxNjdiZTc4NDhhYWY3ZTk1N2UzMy4uZThlYTUyYzBl
NWRkNTdkOGJlYmI2MTc2OTY0MzdlM2UyMjVkYjllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KQEAgLTMw
Nyw3ICszMDcsNyBAQCAtICh2b2lkKV9ldmFsdWF0ZUpTRm9yRG9jdW1lbnQ6KENHUERGRG9jdW1l
bnRSZWYpcGRmRG9jdW1lbnQKICAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVmIGN0eCA9IEpTR2xv
YmFsQ29udGV4dENyZWF0ZSgwKTsKICAgICAgICAgSlNPYmplY3RSZWYganNQREZEb2MgPSBtYWtl
SlNQREZEb2MoY3R4LCBfZGF0YVNvdXJjZSk7CiAgICAgICAgIGZvciAoTlNTdHJpbmcgKnNjcmlw
dCBpbiBzY3JpcHRzKQotICAgICAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIE9wYXF1ZUpT
U3RyaW5nOjpjcmVhdGUoc2NyaXB0KS5nZXQoKSwganNQREZEb2MsIG51bGxwdHIsIDAsIG51bGxw
dHIpOworICAgICAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIE9wYXF1ZUpTU3RyaW5nOjp0
cnlDcmVhdGUoc2NyaXB0KS5nZXQoKSwganNQREZEb2MsIG51bGxwdHIsIDAsIG51bGxwdHIpOwog
ICAgICAgICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKGN0eCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24u
bW0KaW5kZXggYWFkZmVkMjE4ZmNlZjRiMTJmYjg5YWE3NzdhMTk0ZjVmZDI3YTA0NS4uMzQ2OGRk
ZGNkNGE3N2JiYTczODY5YTg3OTc0NzU5MTA4Y2VmMzY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tCkBAIC0x
MzQsNyArMTM0LDcgQEAgLSAodm9pZClmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTooV2Vi
RGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKICAgICBKU0dsb2JhbENvbnRleHRSZWYgY3R4ID0gSlNH
bG9iYWxDb250ZXh0Q3JlYXRlKDApOwogICAgIEpTT2JqZWN0UmVmIGpzUERGRG9jID0gbWFrZUpT
UERGRG9jKGN0eCwgZGF0YVNvdXJjZSk7CiAgICAgZm9yIChOU1N0cmluZyAqc2NyaXB0IGluIHNj
cmlwdHMpCi0gICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4LCBPcGFxdWVKU1N0cmluZzo6Y3Jl
YXRlKHNjcmlwdCkuZ2V0KCksIGpzUERGRG9jLCBudWxscHRyLCAwLCBudWxscHRyKTsKKyAgICAg
ICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoc2NyaXB0
KS5nZXQoKSwganNQREZEb2MsIG51bGxwdHIsIDAsIG51bGxwdHIpOwogICAgIEpTR2xvYmFsQ29u
dGV4dFJlbGVhc2UoY3R4KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351965</attachid>
            <date>2018-10-10 08:44:47 -0700</date>
            <delta_ts>2018-10-10 08:50:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190429-20181011004446.patch</filename>
            <type>text/plain</type>
            <size>126234</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NWRkYTc3YTg1YTkxNzUyZTZkNjZjM2U4MGI2NGEwZjE4YzRhNzIyLi44ZWU5ODNjZTJmNDUzNmRj
NWMxOGZhZmQ4NWY2ODAxMGZmMmFkYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjQgQEAKKzIwMTgtMTAtMTAgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xv
d3N0YXJ0Lm9yZz4KKworICAgICAgICBbSlNDXSBSZW5hbWUgY3JlYXRlWFhYIHRvIHRyeUNyZWF0
ZVhYWCBpZiBpdCBjYW4gcmV0dXJuIFJlZlB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU29tZSBjcmVhdGVYWFggZnVuY3Rpb25zIGNhbiBmYWlsLiBC
dXQgc29tZXRpbWVzIHRoZSBjYWxsZXIgZG9lcyBub3QgcGVyZm9ybSBlcnJvciBjaGVja2luZy4K
KyAgICAgICAgVG8gbWFrZSBpdCBleHBsaWNpdCB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBjYW4gZmFp
bCwgd2UgcmVuYW1lIHRoZXNlIGZ1bmN0aW9ucyBmcm9tIGNyZWF0ZVhYWAorICAgICAgICB0byB0
cnlDcmVhdGVYWFguIEluIHRoaXMgcGF0Y2gsIHdlIGZvY3VzIG9uIG5vbi1KUy1tYW5hZ2VkIGZh
Y3RvcnkgZnVuY3Rpb25zLiBJZiB0aGUgZmFjdG9yeQorICAgICAgICBmdW5jdGlvbiBkb2VzIG5v
dCBmYWlsLCBpdCBzaG91bGQgcmV0dXJuIFJlZjw+LiBPdGhlcndpc2UsIGl0IHNob3VsZCBiZSBu
YW1lZCBhcyB0cnlDcmVhdGVYWFgKKyAgICAgICAgYW5kIGl0IHNob3VsZCByZXR1cm4gUmVmUHRy
PD4uCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWlubHkgZm9jdXNlcyBvbiBUeXBlZEFycmF5IGZh
Y3RvcnkgZnVuY3Rpb25zLiBQcmV2aW91c2x5LCB0aGVzZSBmdW5jdGlvbnMgYXJlCisgICAgICAg
IGBSZWZQdHI8WFhYQXJyYXk+IGNyZWF0ZSguLi4pYC4gVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZW0g
dG8gYFJlZlB0cjxYWFhBcnJheT4gdHJ5Q3JlYXRlKC4uLilgLgorICAgICAgICBBbmQgd2UgYWxz
byBpbnRyb2R1Y2UgYFJlZjxYWFhBcnJheT4gY3JlYXRlKC4uLilgIGZ1bmN0aW9uIHdoaWNoIGlu
dGVybmFsbHkgcGVyZm9ybXMKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQgb24gdGhlIHJlc3VsdCBv
ZiBgdHJ5Q3JlYXRlKC4uLilgLgorCisgICAgICAgIEFuZCB3ZSBhbHNvIGNvbnZlcnQgT3BhcXVl
SlNTdHJpbmc6OmNyZWF0ZSB0byBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlIHNpbmNlIGl0IGNh
biBmYWlsLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFjdHVhbGx5IGZpbmRzIG9uZSBwbGFjZSB3
aGljaCBkb2VzIG5vdCBwZXJmb3JtIGFueSBudWxsIGNoZWNraW5ncyB3aGlsZSBpdCB1c2VzCisg
ICAgICAgIGBSZWZQdHI8PiBjcmVhdGUoLi4uKWAgZnVuY3Rpb24uCisKKyAgICAgICAgKiBBUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpwdXRCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Y2FsbGJhY2tHZXR0ZXIpOgorICAgICAgICAqIEFQSS9KU0NsYXNzUmVmLmg6CisgICAg
ICAgIChTdGF0aWNWYWx1ZUVudHJ5OjpTdGF0aWNWYWx1ZUVudHJ5KToKKyAgICAgICAgKiBBUEkv
SlNDb250ZXh0Lm1tOgorICAgICAgICAoLVtKU0NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6d2l0aFNv
dXJjZVVSTDpdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IHNldE5hbWU6XSk6CisgICAgICAgICog
QVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRDb3B5TmFtZSk6
CisgICAgICAgIChKU0NvbnRleHRDcmVhdGVCYWNrdHJhY2UpOgorICAgICAgICAqIEFQSS9KU09i
amVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAqIEFQSS9KU1N0cmluZ1JlZi5jcHA6
CisgICAgICAgIChKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KToKKyAgICAgICAg
KiBBUEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdSZWd1bGFy
RXhwcmVzc2lvbkZyb21QYXR0ZXJuOmZsYWdzOmluQ29udGV4dDpdKToKKyAgICAgICAgKCtbSlNW
YWx1ZSB2YWx1ZVdpdGhOZXdFcnJvckZyb21NZXNzYWdlOmluQ29udGV4dDpdKToKKyAgICAgICAg
KCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246aW5Db250ZXh0Ol0p
OgorICAgICAgICAocGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uKToKKyAgICAgICAgKC1bSlNWYWx1
ZSBpbnZva2VNZXRob2Q6d2l0aEFyZ3VtZW50czpdKToKKyAgICAgICAgKGNvbnRhaW5lclZhbHVl
VG9PYmplY3QpOgorICAgICAgICAob2JqZWN0VG9WYWx1ZVdpdGhvdXRDb3B5KToKKyAgICAgICAg
KG9iamVjdFRvVmFsdWUpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmNwcDoKKyAgICAgICAg
KEpTVmFsdWVDcmVhdGVKU09OU3RyaW5nKToKKyAgICAgICAgKEpTVmFsdWVUb1N0cmluZ0NvcHkp
OgorICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmluZy5jcHA6CisgICAgICAgIChPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUpOiBEZWxl
dGVkLgorICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmluZy5oOgorICAgICAgICAqIEFQSS9nbGli
L0pTQ0NvbnRleHQuY3BwOgorICAgICAgICAoZXZhbHVhdGVTY3JpcHRJbkNvbnRleHQpOgorICAg
ICAgICAqIEFQSS9nbGliL0pTQ1ZhbHVlLmNwcDoKKyAgICAgICAgKGpzY192YWx1ZV9uZXdfc3Ry
aW5nX2Zyb21fYnl0ZXMpOgorICAgICAgICAqIGZ0bC9GVExMYXp5U2xvd1BhdGguaDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpMYXp5U2xvd1BhdGg6OmNyZWF0ZUdlbmVyYXRvcik6CisgICAgICAgICog
ZnRsL0ZUTExhenlTbG93UGF0aENhbGwuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpjcmVhdGVMYXp5
Q2FsbEdlbmVyYXRvcik6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXQuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6Ok9TUkV4aXREZXNjcmlwdG9yOjplbWl0T1NSRXhpdCk6CisgICAgICAgIChKU0M6
OkZUTDo6T1NSRXhpdERlc2NyaXB0b3I6OmVtaXRPU1JFeGl0TGF0ZXIpOgorICAgICAgICAoSlND
OjpGVEw6Ok9TUkV4aXREZXNjcmlwdG9yOjpwcmVwYXJlT1NSRXhpdEhhbmRsZSk6CisgICAgICAg
ICogZnRsL0ZUTE9TUkV4aXQuaDoKKyAgICAgICAgKiBmdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlv
bkhhbmRsZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxl
OjpjcmVhdGVIYW5kbGUpOgorICAgICAgICAqIGZ0bC9GVExQYXRjaHBvaW50RXhjZXB0aW9uSGFu
ZGxlLmg6CisgICAgICAgICogaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg6CisgICAgICAg
IChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRWRlblRpbWVyKToKKyAgICAgICAg
KEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIGhlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oOgorICAgICAgICAoSlNDOjpHQ0Fj
dGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUZ1bGxUaW1lcik6CisgICAgICAgIChKU0M6OkdDQWN0
aXZpdHlDYWxsYmFjazo6Y3JlYXRlRnVsbFRpbWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFw
L0dDQWN0aXZpdHlDYWxsYmFjay5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAg
IChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAqIGluc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2Uu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpBc3luY1N0YWNrVHJhY2U6OmNyZWF0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5oOgorICAgICAgICAqIGpzYy5jcHA6Cisg
ICAgICAgIChmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKiBydW50aW1l
L0FycmF5QnVmZmVyLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcu
aDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0
aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2li
bHlTaGFyZWRJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6cG9zc2libHlTaGFyZWRUeXBlZEltcGwpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBlZEltcGwpOgorICAgICAgICAqIHdhc20v
V2FzbU1lbW9yeS5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAqIHdhc20vV2Fz
bU1lbW9yeS5oOgorICAgICAgICAqIHdhc20vV2FzbVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6VGFibGU6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6Oldhc206OlRhYmxlOjpjcmVh
dGUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbVRhYmxlLmg6CisgICAgICAgICogd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVt
b3J5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6SlNXZWJBc3NlbWJs
eU1lbW9yeSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeSk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6
OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2Vi
QXNzZW1ibHlUYWJsZSk6CisKIDIwMTgtMTAtMDkgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNob3cgcmVkaXJlY3QgcmVxdWVzdHMg
aW4gTmV0d29yayBhbmQgVGltZWxpbmVzIHRhYnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NjMzYTRjNTQ3MGM0
YWVhY2NkMTRlOWJiODQ2NjM1OTZkMGZiMTliLi5mMWJlYmJhYWZhOTJiMjhiMWQ3NTc1OGMxZDI3
MWNmMjI2MWM5ZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE0IEBACisyMDE4LTEwLTEwICBZ
dXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgW0pT
Q10gUmVuYW1lIGNyZWF0ZVhYWCB0byB0cnlDcmVhdGVYWFggaWYgaXQgY2FuIHJldHVybiBSZWZQ
dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDQy
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBg
dHJ5Q3JlYXRlYCBvciBuZXcgYGNyZWF0ZWAuIElmIHdlIHVzZSBuZXcgYGNyZWF0ZWAsIHdlIGNh
biB1c2UgUmVmPD4gYW5kIHJlbW92ZSBudWxsIGNoZWNrLgorCisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVNlc3Npb25DbGVhcktleTo6Y2FjaGVkS2V5Rm9yS2V5SUQgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0J1ZmZlcjo6QXVkaW9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9C
dWZmZXI6OmdldENoYW5uZWxEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSRXllUGFy
YW1ldGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWUkV5ZVBhcmFtZXRlcnM6Om9mZnNldCBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjptYXRyaXhUb0FycmF5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSUG9z
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcHRpb25hbEZsb2F0M1RvSlNDQXJyYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6VlJQb3NlOjpwb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWUlBvc2U6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZS
U3RhZ2VQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZSU3RhZ2VQYXJhbWV0ZXJz
OjpzaXR0aW5nVG9TdGFuZGluZ1RyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6ZW5xdWV1ZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNs
b25lRGVzZXJpYWxpemVyOjpyZWFkQXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBjcnlwdG8v
Z2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9L
ZXlSU0E6OmFsZ29yaXRobSBjb25zdCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9LZXlS
U0FNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjphbGdvcml0aG0gY29u
c3QpOgorICAgICAgICAqIGNzcy9ET01NYXRyaXhSZWFkT25seS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01NYXRyaXhSZWFkT25seTo6dG9GbG9hdDMyQXJyYXkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NTWF0cml4UmVhZE9ubHk6OnRvRmxvYXQ2NEFycmF5IGNvbnN0KToKKyAgICAg
ICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmNyZWF0
ZSk6CisgICAgICAgICogZG9tL1RleHRFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRFbmNvZGVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6SW1hZ2VEYXRhKToKKyAgICAgICAgKiBodG1s
L0ltYWdlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRWZXJ0ZXhBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFdlYkdMSW50QXJyYXlQ
YXJhbWV0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0
ZUZyb21Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JM
b2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAgICAgIChXZWJD
b3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpyZWxlYXNl
S2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6
dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
OjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpnZW5lcmF0ZUtleVJlcXVl
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVlN0cmVhbVNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZT
dHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
U2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1w
bGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpnZXRS
R0JBSW1hZ2VEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldElt
YWdlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRh
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRSZXN1bHQpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdl
UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlw
bGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEYXRhRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRh
OjpnZXREYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpqc1ZhbHVlV2l0aERp
Y3Rpb25hcnlJbkNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tUcmFja0JveDo6TW9ja1RyYWNrQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJbml0aWFs
aXphdGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9uQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tTYW1wbGVCb3g6Ok1vY2tTYW1wbGVCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMv
U2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKToK
KyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aW5pdERhdGFQcmVmaXgpOgorICAgICAgICAoV2ViQ29yZTo6a2V5UHJlZml4KToKKyAgICAgICAg
KFdlYkNvcmU6OmtleVJlcXVlc3QpOgorCiAyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8eXVz
dWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CiAKICAgICAgICAgWE1MSHR0cFJlcXVlc3Qgc2hvdWxk
IHVzZSByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZC9yZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQg
aW5zdGVhZCBvZiBkZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmVmMDUw
YTA4NGFkODVkYmFjMDg3N2MwMWVhNTkzMjk1NDg0MGQ1OS4uMGEzYzg0ZmMwMzA3MGNlM2ZjMTlj
MzdkZjk3Yjk3M2JkZTdiN2YwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0xMC0x
MCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAg
IFtKU0NdIFJlbmFtZSBjcmVhdGVYWFggdG8gdHJ5Q3JlYXRlWFhYIGlmIGl0IGNhbiByZXR1cm4g
UmVmUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTA0MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgYHRyeUNyZWF0ZWAgb3IgbmV3IGBjcmVhdGVgLiBJZiB3ZSB1c2UgbmV3IGBjcmVhdGVgLCB3
ZSBjYW4gdXNlIFJlZjw+IGFuZCByZW1vdmUgbnVsbCBjaGVjay4KKworICAgICAgICAqIFNoYXJl
ZC9BUEkvYy9XS1N0cmluZy5jcHA6CisgICAgICAgIChXS1N0cmluZ0NvcHlKU1N0cmluZyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0Ojp0b0pTVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpjYWxs
UHJvcGVydHlGdW5jdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OnNjcmlwdE9iamVjdEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OnJ1blNjcmlwdHNJblBERkRvY3VtZW50KToKKwogMjAxOC0xMC0wOSAgQW50b2lu
ZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgZnJhbWVz
KCkgdGltaW5nIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggOGFmM2Mz
Y2Q1NWNlYTZmNTBkMzc1ODAxZGI3ZmI5MWRmZTljNjdkNS4uNmU2YTNlMzM3MDM5MjdmZDRmMGY5
MjgwNmEwODc1ZDQ4MzQ4MjJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dz
dGFydC5vcmc+CisKKyAgICAgICAgW0pTQ10gUmVuYW1lIGNyZWF0ZVhYWCB0byB0cnlDcmVhdGVY
WFggaWYgaXQgY2FuIHJldHVybiBSZWZQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBgdHJ5Q3JlYXRlYCBvciBuZXcgYGNyZWF0ZWAuIElmIHdl
IHVzZSBuZXcgYGNyZWF0ZWAsIHdlIGNhbiB1c2UgUmVmPD4gYW5kIHJlbW92ZSBudWxsIGNoZWNr
LgorCisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tOgorICAgICAgICAoLVtXZWJQ
REZWaWV3IGZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOl0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3UGxhY2Vo
b2xkZXIgX2V2YWx1YXRlSlNGb3JEb2N1bWVudDpdKToKKwogMjAxOC0xMC0wMiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bnVz
ZWQgbGlua2VkLW9uLW9yLWJlZm9yZS1pT1M1IGNoZWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggZDU0YTI3YzZmZGJiMGRjZDdlMTA1MDZlNTk3ZjVmZWQxMDM1YjVlNC4uMzhhNjlm
ZjZiZDAzMWQ3OTFiZWVjZDYwOTVjYjAzYTdiYTI5MTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8eXVz
dWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgW0pTQ10gUmVuYW1lIGNyZWF0ZVhY
WCB0byB0cnlDcmVhdGVYWFggaWYgaXQgY2FuIHJldHVybiBSZWZQdHIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDQyOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBgdHJ5Q3JlYXRlYCBvciBuZXcg
YGNyZWF0ZWAuIElmIHdlIHVzZSBuZXcgYGNyZWF0ZWAsIHdlIGNhbiB1c2UgUmVmPD4gYW5kIHJl
bW92ZSBudWxsIGNoZWNrLgorCisgICAgICAgICogV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlv
bi5tbToKKyAgICAgICAgKC1bV2ViUERGUmVwcmVzZW50YXRpb24gZmluaXNoZWRMb2FkaW5nV2l0
aERhdGFTb3VyY2U6XSk6CisKIDIwMTgtMTAtMDggIEp1c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWJHUFU6IFJlbmFtZSBvbGQgV2ViR1BVIHByb3RvdHlwZSB0
byBXZWJNZXRhbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCAxNWI4NjA4NjZkZWE5MjI4NGI3OGEwZDcwN2Q4MDE2
NjU5ODc3MWQxLi40ZjRiN2Q3MWVlMDkyOTU1N2MyOGUyMGI4YWQ4N2MzZGI1ZTdjYmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5j
dGlvbnMuaApAQCAtMTU1LDcgKzE1NSw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBlCiAgICAg
ICAgICAgICAvLyBvcHRpb25hbCBvcHRpbWl6YXRpb24gdG8gYnlwYXNzIGdldFByb3BlcnR5IGlu
IGNhc2VzIHdoZW4gd2Ugb25seSBuZWVkIHRvIGtub3cgaWYgdGhlIHByb3BlcnR5IGV4aXN0cwog
ICAgICAgICAgICAgaWYgKEpTT2JqZWN0SGFzUHJvcGVydHlDYWxsYmFjayBoYXNQcm9wZXJ0eSA9
IGpzQ2xhc3MtPmhhc1Byb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5h
bWVSZWYpCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3Ry
aW5nOjpjcmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9
IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobmFtZSk7CiAgICAgICAgICAgICAgICAgSlNMb2Nr
OjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGV4ZWMpOwogICAgICAgICAgICAgICAgIGlmICho
YXNQcm9wZXJ0eShjdHgsIHRoaXNSZWYsIHByb3BlcnR5TmFtZVJlZi5nZXQoKSkpIHsKICAgICAg
ICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBjYWxsYmFja0dldHRl
cik7CkBAIC0xNjMsNyArMTYzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGUKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgaWYgKEpTT2JqZWN0R2V0UHJvcGVydHlDYWxs
YmFjayBnZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPmdldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYpCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFt
ZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAg
IHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobmFtZSk7CiAgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWYgdmFsdWU7CiAgICAgICAgICAgICAgICAgewpAQCAtMjUyLDcgKzI1Miw3IEBAIGJv
b2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0g
dGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVu
dENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIHNl
dFByb3BlcnR5ID0ganNDbGFzcy0+c2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAo
IXByb3BlcnR5TmFtZVJlZikKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lUmVmID0g
T3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVy
dHlOYW1lUmVmID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShuYW1lKTsKICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgYm9vbCByZXN1
bHQ7CiAgICAgICAgICAgICAgICAgewpAQCAtMzE2LDcgKzMxNiw3IEBAIGJvb2wgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lCiAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFz
c1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAg
ICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBzZXRQcm9wZXJ0eSA9IGpzQ2xhc3Mt
PnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKLSAgICAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWYgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHByb3Bl
cnR5TmFtZS5pbXBsKCkpOworICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1
ZUpTU3RyaW5nOjp0cnlDcmVhdGUocHJvcGVydHlOYW1lLmltcGwoKSk7CiAgICAgICAgICAgICBK
U1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICBib29sIHJlc3VsdDsKICAgICAg
ICAgICAgIHsKQEAgLTM3NSw3ICszNzUsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBybwogICAg
ICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpz
Q2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgaWYg
KEpTT2JqZWN0RGVsZXRlUHJvcGVydHlDYWxsYmFjayBkZWxldGVQcm9wZXJ0eSA9IGpzQ2xhc3Mt
PmRlbGV0ZVByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYp
Ci0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjpj
cmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1
ZUpTU3RyaW5nOjp0cnlDcmVhdGUobmFtZSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBl
eGNlcHRpb24gPSAwOwogICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0OwogICAgICAgICAgICAg
ICAgIHsKQEAgLTY3OSw3ICs2NzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZAogICAgICAg
ICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmotPmNsYXNzUmVmKCk7IGpzQ2xhc3M7
IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2Jq
ZWN0R2V0UHJvcGVydHlDYWxsYmFjayBnZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPmdldFByb3BlcnR5
KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYpCi0gICAgICAgICAgICAg
ICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUobmFtZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlD
cmVhdGUobmFtZSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwog
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgdmFsdWU7CiAgICAgICAgICAgICAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaAppbmRleCBmYTAyNGQzNDRmNDZjNTFiYWQy
MGUxNTQwZmFmZTkyYWE1YWNjMTk1Li45MGM0ZjUzOTAwNWM4MmIwZTIzYWI5MTIwNzY5OWFlYTRh
MDM5YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaApAQCAtMzcsNyAr
MzcsMTAgQEAgc3RydWN0IFN0YXRpY1ZhbHVlRW50cnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFN0YXRpY1ZhbHVlRW50cnkoSlNPYmplY3RHZXRQcm9wZXJ0
eUNhbGxiYWNrIF9nZXRQcm9wZXJ0eSwgSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIF9zZXRQ
cm9wZXJ0eSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgX2F0dHJpYnV0ZXMsIFN0cmluZyYgcHJvcGVy
dHlOYW1lKQotICAgIDogZ2V0UHJvcGVydHkoX2dldFByb3BlcnR5KSwgc2V0UHJvcGVydHkoX3Nl
dFByb3BlcnR5KSwgYXR0cmlidXRlcyhfYXR0cmlidXRlcyksIHByb3BlcnR5TmFtZVJlZihPcGFx
dWVKU1N0cmluZzo6Y3JlYXRlKHByb3BlcnR5TmFtZSkpCisgICAgICAgIDogZ2V0UHJvcGVydHko
X2dldFByb3BlcnR5KQorICAgICAgICAsIHNldFByb3BlcnR5KF9zZXRQcm9wZXJ0eSkKKyAgICAg
ICAgLCBhdHRyaWJ1dGVzKF9hdHRyaWJ1dGVzKQorICAgICAgICAsIHByb3BlcnR5TmFtZVJlZihP
cGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHByb3BlcnR5TmFtZSkpCiAgICAgewogICAgIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggN2Y4NTY5NjVlMjg3
NzExNzlhYjQ4ZmJlMDNiMzgxZTI3YjM4OTkxNS4uMjc1NjZmNDFiOTdlMWIzOWJkZGU5YjQ4YWFh
NTU5ZjE0Y2I3MzllYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHQubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAg
LTEwMCw4ICsxMDAsOCBAQCAtIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICop
c2NyaXB0CiAtIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0IHdp
dGhTb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMCiB7CiAgICAgSlNWYWx1ZVJlZiBleGNlcHRp
b25WYWx1ZSA9IG51bGxwdHI7Ci0gICAgYXV0byBzY3JpcHRKUyA9IE9wYXF1ZUpTU3RyaW5nOjpj
cmVhdGUoc2NyaXB0KTsKLSAgICBhdXRvIHNvdXJjZVVSTEpTID0gT3BhcXVlSlNTdHJpbmc6OmNy
ZWF0ZShbc291cmNlVVJMIGFic29sdXRlU3RyaW5nXSk7CisgICAgYXV0byBzY3JpcHRKUyA9IE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoc2NyaXB0KTsKKyAgICBhdXRvIHNvdXJjZVVSTEpTID0g
T3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShbc291cmNlVVJMIGFic29sdXRlU3RyaW5nXSk7CiAg
ICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU0V2YWx1YXRlU2NyaXB0KG1fY29udGV4dCwgc2NyaXB0
SlMuZ2V0KCksIG51bGxwdHIsIHNvdXJjZVVSTEpTLmdldCgpLCAwLCAmZXhjZXB0aW9uVmFsdWUp
OwogCiAgICAgaWYgKGV4Y2VwdGlvblZhbHVlKQpAQCAtMjAwLDcgKzIwMCw3IEBAIC0gKE5TU3Ry
aW5nICopbmFtZQogCiAtICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIEpT
R2xvYmFsQ29udGV4dFNldE5hbWUobV9jb250ZXh0LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKG5h
bWUpLmdldCgpKTsKKyAgICBKU0dsb2JhbENvbnRleHRTZXROYW1lKG1fY29udGV4dCwgT3BhcXVl
SlNTdHJpbmc6OnRyeUNyZWF0ZShuYW1lKS5nZXQoKSk7CiB9CiAKIC0gKEJPT0wpX3JlbW90ZUlu
c3BlY3Rpb25FbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5j
cHAKaW5kZXggZjNjMGZkMWM3ZTA2ZDM0MzAwMmMxNGUzZWNhYTMwNjQzZDI3MmFkNy4uZTE4ZGZk
MjFmZjI4NDAwN2QwMDM5ZTY0MzJkOWVjM2M0ZjFmMzE3NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIEpTU3RyaW5nUmVm
IEpTR2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCiAgICAgaWYg
KG5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIE9wYXF1ZUpT
U3RyaW5nOjpjcmVhdGUobmFtZSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmlu
Zzo6dHJ5Q3JlYXRlKG5hbWUpLmxlYWtSZWYoKTsKIH0KIAogdm9pZCBKU0dsb2JhbENvbnRleHRT
ZXROYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUpCkBAIC0zMTYs
NyArMzE2LDcgQEAgSlNTdHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQ29udGV4
dFJlZiBjdHgsIHVuc2lnbmVkIG1heFN0YWNrU2l6ZSkKICAgICBCYWNrdHJhY2VGdW5jdG9yIGZ1
bmN0b3IoYnVpbGRlciwgbWF4U3RhY2tTaXplKTsKICAgICBmcmFtZS0+aXRlcmF0ZShmdW5jdG9y
KTsKIAotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGJ1aWxkZXIudG9TdHJpbmco
KSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGJ1aWxk
ZXIudG9TdHJpbmcoKSkubGVha1JlZigpOwogfQogCiBib29sIEpTR2xvYmFsQ29udGV4dEdldFJl
bW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IGQ4ZDJkZjEwMDRhYTMzZWU5MWM3
NDJhOWIxMDY3ZDU4ZDA1ZTBjYWYuLjUxMTY5YzRkNGQ4YjU4YjRkNDY1NWJiMWY1YzU4NmVmZTM5
MzRkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC04
MjAsNyArODIwLDcgQEAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBKU09iamVjdENvcHlQcm9wZXJ0
eU5hbWVzKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG8KICAgICBzaXplX3Qgc2l6ZSA9
IGFycmF5LnNpemUoKTsKICAgICBwcm9wZXJ0eU5hbWVzLT5hcnJheS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHNpemUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAg
ICAgICBwcm9wZXJ0eU5hbWVzLT5hcnJheS51bmNoZWNrZWRBcHBlbmQoT3BhcXVlSlNTdHJpbmc6
OmNyZWF0ZShhcnJheVtpXS5zdHJpbmcoKSkucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIHBy
b3BlcnR5TmFtZXMtPmFycmF5LnVuY2hlY2tlZEFwcGVuZChPcGFxdWVKU1N0cmluZzo6dHJ5Q3Jl
YXRlKGFycmF5W2ldLnN0cmluZygpKS5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgIHJldHVybiBK
U1Byb3BlcnR5TmFtZUFycmF5UmV0YWluKHByb3BlcnR5TmFtZXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAppbmRleCAzM2Y1OWEzNjMzNDE3MWIxNDU1NmM2
YmUzMzQ4ZjZjMTIwMTJmMTcyLi5iYjcyMGRiZThkNzFhODI4ZGQ4NmQ4ZmQ3OGE5ZTM1OGRmM2E3
MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtOTks
NyArOTksNyBAQCBKU1NjcmlwdFJlZiBKU1NjcmlwdENyZWF0ZVJlZmVyZW5jaW5nSW1tb3J0YWxB
U0NJSVRleHQoSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dAogICAgIFBhcnNlckVycm9yIGVycm9y
OwogICAgIGlmICghcGFyc2VTY3JpcHQodm0sIFNvdXJjZUNvZGUocmVzdWx0LmNvcHlSZWYoKSks
IGVycm9yKSkgewogICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKQotICAgICAgICAgICAgKmVycm9y
TWVzc2FnZSA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoZXJyb3IubWVzc2FnZSgpKS5sZWFrUmVm
KCk7CisgICAgICAgICAgICAqZXJyb3JNZXNzYWdlID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0
ZShlcnJvci5tZXNzYWdlKCkpLmxlYWtSZWYoKTsKICAgICAgICAgaWYgKGVycm9yTGluZSkKICAg
ICAgICAgICAgICplcnJvckxpbmUgPSBlcnJvci5saW5lKCk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMTIxLDcgKzEyMSw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0
cmluZyhKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0R3JvdXAsIEpTU3RyaW5nUmVmCiAgICAgUGFy
c2VyRXJyb3IgZXJyb3I7CiAgICAgaWYgKCFwYXJzZVNjcmlwdCh2bSwgU291cmNlQ29kZShyZXN1
bHQuY29weVJlZigpKSwgZXJyb3IpKSB7CiAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpCi0gICAg
ICAgICAgICAqZXJyb3JNZXNzYWdlID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShlcnJvci5tZXNz
YWdlKCkpLmxlYWtSZWYoKTsKKyAgICAgICAgICAgICplcnJvck1lc3NhZ2UgPSBPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKGVycm9yLm1lc3NhZ2UoKSkubGVha1JlZigpOwogICAgICAgICBpZiAo
ZXJyb3JMaW5lKQogICAgICAgICAgICAgKmVycm9yTGluZSA9IGVycm9yLmxpbmUoKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTU3RyaW5nUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYu
Y3BwCmluZGV4IDE2ODNhYWU1OTUyOTM5MDI0NWFhZmFjMGJhMzFiYjg3MjAwYjlmMzYuLmU2NDRm
MWFiN2E3ZjRmYmUxZjY5YjIwYjcxZjMxNGEyZjAyNTU0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwCkBAIC02Miw3ICs2Miw3IEBAIEpTU3RyaW5nUmVmIEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnN0IGNoYXIqIHN0cmluZykKIEpTU3RyaW5n
UmVmIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoY29uc3QgSlNDaGFyKiBjaGFy
cywgc2l6ZV90IG51bUNoYXJzKQogewogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBy
ZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY2hhcnMpLCBudW1DaGFycykpLmxl
YWtSZWYoKTsKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShTdHJpbmdJbXBs
OjpjcmVhdGVXaXRob3V0Q29weWluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY2hh
cnMpLCBudW1DaGFycykpLmxlYWtSZWYoKTsKIH0KIAogSlNTdHJpbmdSZWYgSlNTdHJpbmdSZXRh
aW4oSlNTdHJpbmdSZWYgc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCmlu
ZGV4IGQ3OTc0MmFmMzc0ZmI4NTVlZTk0ZWU2M2Y0ZTkxZWQ0MzY0ZmUwNTAuLjllNTM0YjBhZWIw
NTFmMzQ2YjM0YWQxYzY3NzQ0OWMzYWVkMzAyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWUubW0KQEAgLTEyNiwxNSArMTI2LDE1IEBAICsgKEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdB
cnJheUluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogCiArIChKU1ZhbHVlICopdmFsdWVX
aXRoTmV3UmVndWxhckV4cHJlc3Npb25Gcm9tUGF0dGVybjooTlNTdHJpbmcgKilwYXR0ZXJuIGZs
YWdzOihOU1N0cmluZyAqKWZsYWdzIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogewot
ICAgIGF1dG8gcGF0dGVyblN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocGF0dGVybik7
Ci0gICAgYXV0byBmbGFnc1N0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoZmxhZ3MpOwor
ICAgIGF1dG8gcGF0dGVyblN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUocGF0dGVy
bik7CisgICAgYXV0byBmbGFnc1N0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoZmxh
Z3MpOwogICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzWzJdID0geyBKU1ZhbHVlTWFrZVN0cmluZyhb
Y29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBwYXR0ZXJuU3RyaW5nLmdldCgpKSwgSlNWYWx1
ZU1ha2VTdHJpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgZmxhZ3NTdHJpbmcuZ2V0
KCkpIH07CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6SlNPYmplY3RN
YWtlUmVnRXhwKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIDIsIGFyZ3VtZW50cywgMCkg
aW5Db250ZXh0OmNvbnRleHRdOwogfQogCiArIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3RXJyb3JG
cm9tTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGluQ29udGV4dDooSlNDb250ZXh0ICopY29u
dGV4dAogewotICAgIGF1dG8gc3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShtZXNzYWdl
KTsKKyAgICBhdXRvIHN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobWVzc2FnZSk7
CiAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudCA9IEpTVmFsdWVNYWtlU3RyaW5nKFtjb250ZXh0IEpT
R2xvYmFsQ29udGV4dFJlZl0sIHN0cmluZy5nZXQoKSk7CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZh
bHVlV2l0aEpTVmFsdWVSZWY6SlNPYmplY3RNYWtlRXJyb3IoW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSwgMSwgJmFyZ3VtZW50LCAwKSBpbkNvbnRleHQ6Y29udGV4dF07CiB9CkBAIC0xNTEs
NyArMTUxLDcgQEAgKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDooSlND
b250ZXh0ICopY29udGV4dAogCiArIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURl
c2NyaXB0aW9uOihOU1N0cmluZyAqKWRlc2NyaXB0aW9uIGluQ29udGV4dDooSlNDb250ZXh0ICop
Y29udGV4dAogewotICAgIGF1dG8gc3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShkZXNj
cmlwdGlvbik7CisgICAgYXV0byBzdHJpbmcgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGRl
c2NyaXB0aW9uKTsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpKU1Zh
bHVlTWFrZVN5bWJvbChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBzdHJpbmcuZ2V0KCkp
IGluQ29udGV4dDpjb250ZXh0XTsKIH0KIApAQCAtMjkyLDcgKzI5Miw3IEBAIGlubGluZSBFeHBl
Y3RlZDxSZXN1bHQsIEpTVmFsdWVSZWY+IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbihOU1N0cmlu
Z0Z1bmN0aW9uIHN0CiAgICAgUmVzdWx0IHJlc3VsdDsKICAgICAvLyBJZiBpdCdzIGEgTlNTdHJp
bmcgYWxyZWFkeSwgcmVkdWNlIGluZGlyZWN0aW9uIGFuZCBqdXN0IHBhc3MgdGhlIE5TU3RyaW5n
LgogICAgIGlmIChbcHJvcGVydHlLZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkg
ewotICAgICAgICBhdXRvIG5hbWUgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKChOU1N0cmluZyAq
KXByb3BlcnR5S2V5KTsKKyAgICAgICAgYXV0byBuYW1lID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNy
ZWF0ZSgoTlNTdHJpbmcgKilwcm9wZXJ0eUtleSk7CiAgICAgICAgIHJlc3VsdCA9IHN0cmluZ0Z1
bmN0aW9uKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZS5nZXQoKSwg
YXJndW1lbnRzLi4uLCAmZXhjZXB0aW9uKTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzdWx0ID0g
anNGdW5jdGlvbihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIFtbSlNWYWx1
ZSB2YWx1ZVdpdGhPYmplY3Q6cHJvcGVydHlLZXkgaW5Db250ZXh0OmNvbnRleHRdIEpTVmFsdWVS
ZWZdLCBhcmd1bWVudHMuLi4sICZleGNlcHRpb24pOwpAQCAtNTIwLDcgKzUyMCw3IEBAIC0gKEpT
VmFsdWUgKilpbnZva2VNZXRob2Q6KE5TU3RyaW5nICopbWV0aG9kIHdpdGhBcmd1bWVudHM6KE5T
QXJyYXkgKilhcmd1bWVudHMKICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gW19j
b250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogCi0gICAgYXV0byBu
YW1lID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShtZXRob2QpOworICAgIGF1dG8gbmFtZSA9IE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobWV0aG9kKTsKICAgICBKU1ZhbHVlUmVmIGZ1bmN0aW9u
ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgdGhp
c09iamVjdCwgbmFtZS5nZXQoKSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKICAg
ICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9u
XTsKQEAgLTc3NCw3ICs3NzQsNyBAQCBzdGF0aWMgaWQgY29udGFpbmVyVmFsdWVUb09iamVjdChK
U0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNDb250YWluZXJDb252ZXJ0bwogICAgICAgICAg
ICAgQVNTRVJUKFtjdXJyZW50Lm9iamMgaXNLaW5kT2ZDbGFzczpbTlNNdXRhYmxlQXJyYXkgY2xh
c3NdXSk7CiAgICAgICAgICAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSAoTlNNdXRhYmxlQXJy
YXkgKiljdXJyZW50Lm9iamM7CiAgICAgICAgIAotICAgICAgICAgICAgYXV0byBsZW5ndGhTdHJp
bmcgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKCJsZW5ndGgiX3MpOworICAgICAgICAgICAgYXV0
byBsZW5ndGhTdHJpbmcgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCJsZW5ndGgiX3MpOwog
ICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gSlNDOjp0b1VJbnQzMihKU1ZhbHVlVG9OdW1i
ZXIoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBqcywgbGVuZ3RoU3RyaW5n
LmdldCgpLCAwKSwgMCkpOwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKQEAgLTk4NCw3ICs5ODQsNyBAQCBzdGF0aWMgT2JqY0NvbnRhaW5lckNv
bnZlcnRvcjo6VGFzayBvYmplY3RUb1ZhbHVlV2l0aG91dENvcHkoSlNDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgcmV0dXJuIHsgb2JqZWN0LCAoKEpTVmFsdWUgKilvYmplY3QpLT5tX3Zh
bHVlLCBDb250YWluZXJOb25lIH07CiAKICAgICAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSkgewotICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBPcGFxdWVK
U1N0cmluZzo6Y3JlYXRlKChOU1N0cmluZyAqKW9iamVjdCk7CisgICAgICAgICAgICBhdXRvIHN0
cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoKE5TU3RyaW5nICopb2JqZWN0KTsKICAg
ICAgICAgICAgIHJldHVybiB7IG9iamVjdCwgSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dFJlZiwg
c3RyaW5nLmdldCgpKSwgQ29udGFpbmVyTm9uZSB9OwogICAgICAgICB9CiAKQEAgLTEwNDEsNyAr
MTA0MSw3IEBAIEpTVmFsdWVSZWYgb2JqZWN0VG9WYWx1ZShKU0NvbnRleHQgKmNvbnRleHQsIGlk
IG9iamVjdCkKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IChOU0RpY3Rp
b25hcnkgKiljdXJyZW50Lm9iamM7CiAgICAgICAgICAgICBmb3IgKGlkIGtleSBpbiBbZGljdGlv
bmFyeSBrZXlFbnVtZXJhdG9yXSkgewogICAgICAgICAgICAgICAgIGlmIChba2V5IGlzS2luZE9m
Q2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKChOU1N0cmluZyAqKWtleSk7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNy
ZWF0ZSgoTlNTdHJpbmcgKilrZXkpOwogICAgICAgICAgICAgICAgICAgICBKU09iamVjdFNldFBy
b3BlcnR5KGNvbnRleHRSZWYsIGpzLCBwcm9wZXJ0eU5hbWUuZ2V0KCksIGNvbnZlcnRvci5jb252
ZXJ0KFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTprZXldKSwgMCwgMCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5j
cHAKaW5kZXggMjNmMTdiYzIxYmIzYzA4MjlkZTBhNTYwNDMzNzA2ODUwZmMxZWMwNS4uNGMxMmI5
NmNmZGQ2OTIzZmI3YzMyYmY4NDgzMTAyYzM2MTQ2YzQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWVSZWYuY3BwCkBAIC0zODYsNyArMzg2LDcgQEAgSlNTdHJpbmdSZWYgSlNW
YWx1ZUNyZWF0ZUpTT05TdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiBhcGlWYWx1
ZSwgdW5zaWcKICAgICAgICAgKmV4Y2VwdGlvbiA9IDA7CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlv
bklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlk
VGhyb3cpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3Jl
YXRlKHJlc3VsdCkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3Jl
YXRlKHJlc3VsdCkubGVha1JlZigpOwogfQogCiBib29sIEpTVmFsdWVUb0Jvb2xlYW4oSlNDb250
ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKQEAgLTQzNCw3ICs0MzQsNyBAQCBKU1N0cmlu
Z1JlZiBKU1ZhbHVlVG9TdHJpbmdDb3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFs
dWUsIEpTVmFsdWVSZWYqCiAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVl
KTsKICAgICAKLSAgICBhdXRvIHN0cmluZ1JlZihPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGpzVmFs
dWUudG9XVEZTdHJpbmcoZXhlYykpKTsKKyAgICBhdXRvIHN0cmluZ1JlZihPcGFxdWVKU1N0cmlu
Zzo6dHJ5Q3JlYXRlKGpzVmFsdWUudG9XVEZTdHJpbmcoZXhlYykpKTsKICAgICBpZiAoaGFuZGxl
RXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3Rh
dHVzOjpEaWRUaHJvdykKICAgICAgICAgc3RyaW5nUmVmID0gbnVsbHB0cjsKICAgICByZXR1cm4g
c3RyaW5nUmVmLmxlYWtSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvT3BhcXVlSlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVK
U1N0cmluZy5jcHAKaW5kZXggOTgxZGM4NWIwODVmMTg5N2U1Y2VkYmQ4MTI1OTczYTBiYzA0ZDQ5
ZS4uNzdhMmUxYzdmMTM1NDVjYzA4ZGQwODJiM2ZkMjk0MWQzZTA4NWUyNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAK
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBPcGFxdWVK
U1N0cmluZzo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPE9wYXF1ZUpTU3Ry
aW5nPiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewog
ICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDIs
NyArNDIsNyBAQCBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPcGFxdWVKU1N0
cmluZyhzdHJpbmcpKTsKIH0KIAotUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBPcGFxdWVKU1N0cmlu
Zzo6Y3JlYXRlKFN0cmluZyYmIHN0cmluZykKK1JlZlB0cjxPcGFxdWVKU1N0cmluZz4gT3BhcXVl
SlNTdHJpbmc6OnRyeUNyZWF0ZShTdHJpbmcmJiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL09wYXF1ZUpTU3RyaW5nLmgKaW5kZXggYWQyZmZjZGU1NzEyNWU4YWY3MmYyMzkxNDNlZGJj
MDcyNTI0NjE2MC4uNGE0YjVlZGZiYTIwMTQ2Yzg5MzIwMTQzZjliNWY0ZDFkZDEwZDY3NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaApAQCAtNTEsOCArNTEs
OCBAQCBzdHJ1Y3QgT3BhcXVlSlNTdHJpbmcgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
T3BhcXVlSlNTdHJpbmc+IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3BhcXVlSlNT
dHJpbmcoY2hhcmFjdGVycywgbGVuZ3RoKSk7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IGNyZWF0
ZShTdHJpbmcmJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxPcGFxdWVK
U1N0cmluZz4gdHJ5Q3JlYXRlKGNvbnN0IFN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHRyeUNyZWF0ZShTdHJpbmcmJik7CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSB+T3BhcXVlSlNTdHJpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCmluZGV4IGI1NDhlZmJmZjY5NmE1ZWFm
YTc0Y2VlZDg1NTcyMmMzMjJiOTJhNDQuLjQwZWE1YzE0OTE3YjNjZGQ0ZjdlZWMwYTI0YmUyMDBm
N2NjMDc3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0ND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4
dC5jcHAKQEAgLTgxOSw3ICs4MTksNyBAQCBKU0NWYWx1ZSoganNjX2NvbnRleHRfZXZhbHVhdGUo
SlNDQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogY29kZSwgZ3NzaXplIGxlbgogCiBzdGF0
aWMgSlNWYWx1ZVJlZiBldmFsdWF0ZVNjcmlwdEluQ29udGV4dChKU0dsb2JhbENvbnRleHRSZWYg
anNDb250ZXh0LCBTdHJpbmcmJiBzY3JpcHQsIGNvbnN0IGNoYXIqIHVyaSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBzY3JpcHRKUyhBZG9wdCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShXVEZNb3ZlKHNj
cmlwdCkpLmxlYWtSZWYoKSk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHNjcmlwdEpT
KEFkb3B0LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKFdURk1vdmUoc2NyaXB0KSkubGVha1Jl
ZigpKTsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc291cmNlVVJJID0gdXJpID8gYWRv
cHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXJpKSkgOiBudWxscHRyOwogICAgIHJl
dHVybiBKU0V2YWx1YXRlU2NyaXB0KGpzQ29udGV4dCwgc2NyaXB0SlMuZ2V0KCksIG51bGxwdHIs
IHNvdXJjZVVSSS5nZXQoKSwgbGluZU51bWJlciwgZXhjZXB0aW9uKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmFsdWUuY3BwCmluZGV4IDc5ZTUzMTZmZDM2MjkzYzhk
ZDAyMzM2MjNiYWQwM2JhYTg1ZDljM2IuLjZlMjc0Zjg5ZjQzN2I2M2M5NTkyNTcyMzQyZjk3MDUz
OWNhYWUxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NW
YWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmNw
cApAQCAtMzY3LDcgKzM2Nyw3IEBAIEpTQ1ZhbHVlKiBqc2NfdmFsdWVfbmV3X3N0cmluZ19mcm9t
X2J5dGVzKEpTQ0NvbnRleHQqIGNvbnRleHQsIEdCeXRlcyogYnl0ZXMpCiAgICAgZ3NpemUgZGF0
YVNpemU7CiAgICAgY29uc3QgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihn
X2J5dGVzX2dldF9kYXRhKGJ5dGVzLCAmZGF0YVNpemUpKTsKICAgICBhdXRvIHN0cmluZyA9IFN0
cmluZzo6ZnJvbVVURjgoZGF0YSwgZGF0YVNpemUpOwotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBqc1N0cmluZyhBZG9wdCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShXVEZNb3ZlKHN0cmlu
ZykpLmxlYWtSZWYoKSk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGpzU3RyaW5nKEFk
b3B0LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKFdURk1vdmUoc3RyaW5nKSkubGVha1JlZigp
KTsKICAgICByZXR1cm4ganNjQ29udGV4dEdldE9yQ3JlYXRlVmFsdWUoY29udGV4dCwgSlNWYWx1
ZU1ha2VTdHJpbmcoanNjQ29udGV4dEdldEpTQ29udGV4dChjb250ZXh0KSwganNTdHJpbmcuZ2V0
KCkpKS5sZWFrUmVmKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGF6eVNsb3dQYXRoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExhenlT
bG93UGF0aC5oCmluZGV4IDlhNmU2MDFhZDMxOWJkZGZjM2E5OGUwNWQ5OTMwYjgxZGFlMWRhZGQu
LmE1YjNhNzI1MmE0MTM3NzY4NTJmNDFmYTI1MTI0YjkwODM3OGRiMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGF6eVNsb3dQYXRoLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1BhdGguaApAQCAtNTksNyArNTksNyBAQCBjbGFz
cyBMYXp5U2xvd1BhdGggewogICAgIHR5cGVkZWYgU2hhcmVkVGFzazxHZW5lcmF0b3JGdW5jdGlv
bj4gR2VuZXJhdG9yOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBzdGF0
aWMgUmVmUHRyPEdlbmVyYXRvcj4gY3JlYXRlR2VuZXJhdG9yKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCisgICAgc3RhdGljIFJlZjxHZW5lcmF0b3I+IGNyZWF0ZUdlbmVyYXRvcihjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgcmV0dXJuIGNyZWF0ZVNoYXJlZFRhc2s8R2Vu
ZXJhdG9yRnVuY3Rpb24+KGZ1bmN0b3IpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTGF6eVNsb3dQYXRoQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMYXp5U2xvd1BhdGhDYWxsLmgKaW5kZXggYmZiMmFjZWM4NmVkODY3NzZmMWIx
MTY1NTI4ZGM1MjIxNzYxYWU2Ni4uNzRmZDZlYzdiNzJmMzIyMzQyMWFhNjY0YmExYjZhNjdiYzc3
MjkzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1Bh
dGhDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1BhdGhD
YWxsLmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRUeXBl
cz4KLVJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0
b3IoCitSZWY8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9y
KAogICAgIFZNJiB2bSwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbiwgUmVz
dWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQogewogICAgIHJldHVy
biBMYXp5U2xvd1BhdGg6OmNyZWF0ZUdlbmVyYXRvcigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9TUkV4aXQuY3BwCmluZGV4IDMyOGYwYzgxODI4YmZjYjk2YjExYTk0OWVkYTE5ZDFlMDY3
MWQxNTQuLjA5OTU4ZDJjNGY5YTVkODliNWZiYmI2NWY4NmJiNmRhYmNkZjE4ZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0LmNwcApAQCAtNjMsMTcgKzYzLDE3IEBAIHZv
aWQgT1NSRXhpdERlc2NyaXB0b3I6OnZhbGlkYXRlUmVmZXJlbmNlcyhjb25zdCBUcmFja2VkUmVm
ZXJlbmNlcyYgdHJhY2tlZFJlZmVyCiAgICAgICAgIG1hdGVyaWFsaXphdGlvbi0+dmFsaWRhdGVS
ZWZlcmVuY2VzKHRyYWNrZWRSZWZlcmVuY2VzKTsKIH0KIAotUmVmUHRyPE9TUkV4aXRIYW5kbGU+
IE9TUkV4aXREZXNjcmlwdG9yOjplbWl0T1NSRXhpdCgKK1JlZjxPU1JFeGl0SGFuZGxlPiBPU1JF
eGl0RGVzY3JpcHRvcjo6ZW1pdE9TUkV4aXQoCiAgICAgU3RhdGUmIHN0YXRlLCBFeGl0S2luZCBl
eGl0S2luZCwgY29uc3QgTm9kZU9yaWdpbiYgbm9kZU9yaWdpbiwgQ0NhbGxIZWxwZXJzJiBqaXQs
CiAgICAgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMsIHVuc2lnbmVkIG9m
ZnNldCkKIHsKLSAgICBSZWZQdHI8T1NSRXhpdEhhbmRsZT4gaGFuZGxlID0KKyAgICBSZWY8T1NS
RXhpdEhhbmRsZT4gaGFuZGxlID0KICAgICAgICAgcHJlcGFyZU9TUkV4aXRIYW5kbGUoc3RhdGUs
IGV4aXRLaW5kLCBub2RlT3JpZ2luLCBwYXJhbXMsIG9mZnNldCk7CiAgICAgaGFuZGxlLT5lbWl0
RXhpdFRodW5rKHN0YXRlLCBqaXQpOwogICAgIHJldHVybiBoYW5kbGU7CiB9CiAKLVJlZlB0cjxP
U1JFeGl0SGFuZGxlPiBPU1JFeGl0RGVzY3JpcHRvcjo6ZW1pdE9TUkV4aXRMYXRlcigKK1JlZjxP
U1JFeGl0SGFuZGxlPiBPU1JFeGl0RGVzY3JpcHRvcjo6ZW1pdE9TUkV4aXRMYXRlcigKICAgICBT
dGF0ZSYgc3RhdGUsIEV4aXRLaW5kIGV4aXRLaW5kLCBjb25zdCBOb2RlT3JpZ2luJiBub2RlT3Jp
Z2luLAogICAgIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zLCB1bnNpZ25l
ZCBvZmZzZXQpCiB7CkBAIC04MywxNyArODMsMTcgQEAgUmVmUHRyPE9TUkV4aXRIYW5kbGU+IE9T
UkV4aXREZXNjcmlwdG9yOjplbWl0T1NSRXhpdExhdGVyKAogICAgICAgICBbaGFuZGxlLCAmc3Rh
dGVdIChDQ2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAgICAgaGFuZGxlLT5lbWl0RXhpdFRo
dW5rKHN0YXRlLCBqaXQpOwogICAgICAgICB9KTsKLSAgICByZXR1cm4gaGFuZGxlOworICAgIHJl
dHVybiBoYW5kbGUucmVsZWFzZU5vbk51bGwoKTsKIH0KIAotUmVmUHRyPE9TUkV4aXRIYW5kbGU+
IE9TUkV4aXREZXNjcmlwdG9yOjpwcmVwYXJlT1NSRXhpdEhhbmRsZSgKK1JlZjxPU1JFeGl0SGFu
ZGxlPiBPU1JFeGl0RGVzY3JpcHRvcjo6cHJlcGFyZU9TUkV4aXRIYW5kbGUoCiAgICAgU3RhdGUm
IHN0YXRlLCBFeGl0S2luZCBleGl0S2luZCwgY29uc3QgTm9kZU9yaWdpbiYgbm9kZU9yaWdpbiwK
ICAgICBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcywgdW5zaWduZWQgb2Zm
c2V0KQogewogICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGUuaml0Q29kZS0+b3NyRXhpdC5zaXpl
KCk7CiAgICAgT1NSRXhpdCYgZXhpdCA9IHN0YXRlLmppdENvZGUtPm9zckV4aXQuYWxsb2MoCiAg
ICAgICAgIHRoaXMsIGV4aXRLaW5kLCBub2RlT3JpZ2luLmZvckV4aXQsIG5vZGVPcmlnaW4uc2Vt
YW50aWMsIG5vZGVPcmlnaW4ud2FzSG9pc3RlZCk7Ci0gICAgUmVmUHRyPE9TUkV4aXRIYW5kbGU+
IGhhbmRsZSA9IGFkb3B0UmVmKG5ldyBPU1JFeGl0SGFuZGxlKGluZGV4LCBleGl0KSk7CisgICAg
UmVmPE9TUkV4aXRIYW5kbGU+IGhhbmRsZSA9IGFkb3B0UmVmKCpuZXcgT1NSRXhpdEhhbmRsZShp
bmRleCwgZXhpdCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG9mZnNldDsgaSA8IHBhcmFtcy5z
aXplKCk7ICsraSkKICAgICAgICAgZXhpdC5tX3ZhbHVlUmVwcy5hcHBlbmQocGFyYW1zW2ldKTsK
ICAgICBleGl0Lm1fdmFsdWVSZXBzLnNocmlua1RvRml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT1NSRXhpdC5oCmluZGV4IDdjMDJmYjEwZGEwZjFiOGMzZjU2NmY0NTlhZGNiZWMyNWRk
NGM5YjcuLmRhODdjY2YzMjczZmU0YmUzNjA2ODNiOGFmM2JiZjUxNmQ2MjI1ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCkBAIC05MCw3ICs5MCw3IEBAIHN0cnVjdCBP
U1JFeGl0RGVzY3JpcHRvciB7CiAgICAgLy8gdXAgdG8gdGhlIE9TUkV4aXQgb2JqZWN0LCB3aGlj
aCB0aGlzIGNyZWF0ZXMuIE5vdGUgdGhhdCBpdCdzIE9LIHRvIGRyb3AgdGhlIE9TUkV4aXRIYW5k
bGUgb2JqZWN0CiAgICAgLy8gb24gdGhlIGdyb3VuZC4gSXQgY29udGFpbnMgaW5mb3JtYXRpb24g
dGhhdCBpcyBtb3N0bHkgbm90IHVzZWZ1bCBpZiB5b3UgdXNlIHRoaXMgQVBJLCBzaW5jZSBhZnRl
cgogICAgIC8vIHRoaXMgY2FsbCwgdGhlIE9TUkV4aXQgaXMgc2ltcGx5IHJlYWR5IHRvIGdvLgot
ICAgIFJlZlB0cjxPU1JFeGl0SGFuZGxlPiBlbWl0T1NSRXhpdCgKKyAgICBSZWY8T1NSRXhpdEhh
bmRsZT4gZW1pdE9TUkV4aXQoCiAgICAgICAgIFN0YXRlJiwgRXhpdEtpbmQsIGNvbnN0IERGRzo6
Tm9kZU9yaWdpbiYsIENDYWxsSGVscGVycyYsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmLAogICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSAwKTsKIApAQCAtMTAyLDcgKzEwMiw3
IEBAIHN0cnVjdCBPU1JFeGl0RGVzY3JpcHRvciB7CiAgICAgLy8gVGhpcyBBUEkgaXMgbWVhbnQg
dG8gYmUgdXNlZCBmb3IgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nLCB3aGVyZSBzb21l
IHBhdGNocG9pbnQgd2FudHMgdG8KICAgICAvLyBoYXZlIGEgcGxhY2UgdG8ganVtcCB0byBmb3Ig
T1NSIGV4aXQuIEl0IGRvZXNuJ3QgY2FyZSB3aGVyZSB0aGF0IE9TUiBleGl0IGlzIGVtaXR0ZWQg
c28gbG9uZyBhcyBpdAogICAgIC8vIGV2ZW50dWFsbHkgZ2V0cyBhY2Nlc3MgdG8gaXRzIGxhYmVs
LgotICAgIFJlZlB0cjxPU1JFeGl0SGFuZGxlPiBlbWl0T1NSRXhpdExhdGVyKAorICAgIFJlZjxP
U1JFeGl0SGFuZGxlPiBlbWl0T1NSRXhpdExhdGVyKAogICAgICAgICBTdGF0ZSYsIEV4aXRLaW5k
LCBjb25zdCBERkc6Ok5vZGVPcmlnaW4mLCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiwKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMCk7CiAKQEAgLTExMCw3ICsxMTAsNyBA
QCBzdHJ1Y3QgT1NSRXhpdERlc2NyaXB0b3IgewogICAgIC8vIFRoaXMgaXMgdGhlIGxvdy1sZXZl
bCBpbnRlcmZhY2UuIEl0IHdpbGwgY3JlYXRlIGEgaGFuZGxlIHJlcHJlc2VudGluZyB0aGUgZGVz
aXJlIHRvIGVtaXQgY29kZSBmb3IKICAgICAvLyBhbiBPU1IgZXhpdC4gWW91IGNhbiBjYWxsIE9T
UkV4aXRIYW5kbGU6OmVtaXRFeGl0VGh1bmsoKSBvbmNlIHlvdSBoYXZlIGEgcGxhY2UgdG8gZW1p
dCBpdC4gTm90ZQogICAgIC8vIHRoYXQgdGhlIGFib3ZlIHR3byBBUElzIGFyZSB3cml0dGVuIGlu
IHRlcm1zIG9mIHRoaXMgYW5kIE9TUkV4aXRIYW5kbGU6OmVtaXRFeGl0VGh1bmsoKS4KLSAgICBS
ZWZQdHI8T1NSRXhpdEhhbmRsZT4gcHJlcGFyZU9TUkV4aXRIYW5kbGUoCisgICAgUmVmPE9TUkV4
aXRIYW5kbGU+IHByZXBhcmVPU1JFeGl0SGFuZGxlKAogICAgICAgICBTdGF0ZSYsIEV4aXRLaW5k
LCBjb25zdCBERkc6Ok5vZGVPcmlnaW4mLCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiwKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5j
cHAKaW5kZXggNzI5NGIxYjVmNmJhZWU2MWM1NzRjZmU1MTBjZTIzOGM5MzMzNzAyMS4uZmFlZjQx
N2I5ODIzNTRmM2U2NDdhYWQyOWJhMDZjODI3MGNlMDlkMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUuY3Bw
CkBAIC0zOCwxMSArMzgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiB1
c2luZyBuYW1lc3BhY2UgREZHOwogCi1SZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4g
UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZTo6Y3JlYXRlKAorUmVmPFBhdGNocG9pbnRFeGNlcHRp
b25IYW5kbGU+IFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU6OmNyZWF0ZSgKICAgICBTdGF0ZSYg
c3RhdGUsIE9TUkV4aXREZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOb2RlT3JpZ2luIG9yaWdpbiwg
dW5zaWduZWQgb2Zmc2V0LAogICAgIGNvbnN0IEhhbmRsZXJJbmZvJiBoYW5kbGVyKQogewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZShzdGF0ZSwgZGVz
Y3JpcHRvciwgb3JpZ2luLCBvZmZzZXQsIGhhbmRsZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlKHN0YXRlLCBkZXNjcmlwdG9yLCBvcmlnaW4s
IG9mZnNldCwgaGFuZGxlcikpOwogfQogCiBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZT4gUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZTo6ZGVmYXVsdEhhbmRsZShTdGF0ZSYgc3RhdGUp
CkBAIC0xMDgsNyArMTA4LDcgQEAgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZTo6UGF0Y2hwb2lu
dEV4Y2VwdGlvbkhhbmRsZSgKIHsKIH0KIAotUmVmUHRyPE9TUkV4aXRIYW5kbGU+IFBhdGNocG9p
bnRFeGNlcHRpb25IYW5kbGU6OmNyZWF0ZUhhbmRsZSgKK1JlZjxPU1JFeGl0SGFuZGxlPiBQYXRj
aHBvaW50RXhjZXB0aW9uSGFuZGxlOjpjcmVhdGVIYW5kbGUoCiAgICAgRXhpdEtpbmQga2luZCwg
Y29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKQogewogICAgIHJldHVy
biBtX2Rlc2NyaXB0b3ItPmVtaXRPU1JFeGl0TGF0ZXIoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5oCmluZGV4IDFi
MjY2ZDJlMWZlOTc4ODhlYThmNzhkMmM4YzQzYjRlMzY0NjlmZWMuLjQ0OGUxY2Y1ZjA1ZGY1NTgz
YjIzMDI3ZGZlY2U2MTQyN2EyMzIyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5oCkBAIC01MSw3ICs1MSw3
IEBAIHN0cnVjdCBPU1JFeGl0SGFuZGxlOwogCiBjbGFzcyBQYXRjaHBvaW50RXhjZXB0aW9uSGFu
ZGxlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGU+IGNyZWF0ZSgKKyAgICBzdGF0aWMgUmVmPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGNy
ZWF0ZSgKICAgICAgICAgU3RhdGUmLCBPU1JFeGl0RGVzY3JpcHRvciosIERGRzo6Tm9kZU9yaWdp
biwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBIYW5kbGVySW5mbyYpOwogCiAgICAgc3RhdGljIFJl
ZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBkZWZhdWx0SGFuZGxlKFN0YXRlJik7CkBA
IC04OSw3ICs4OSw3IEBAIGNsYXNzIFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGF0Y2hwb2ludEV4Y2VwdGlvCiAgICAgUGF0Y2hwb2ludEV4
Y2VwdGlvbkhhbmRsZSgKICAgICAgICAgU3RhdGUmLCBPU1JFeGl0RGVzY3JpcHRvciosIERGRzo6
Tm9kZU9yaWdpbiwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBIYW5kbGVySW5mbyYpOwogCi0gICAg
UmVmUHRyPE9TUkV4aXRIYW5kbGU+IGNyZWF0ZUhhbmRsZShFeGl0S2luZCwgY29uc3QgQjM6OlN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpOworICAgIFJlZjxPU1JFeGl0SGFuZGxlPiBjcmVhdGVI
YW5kbGUoRXhpdEtpbmQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKTsKIAog
ICAgIFN0YXRlJiBtX3N0YXRlOwogICAgIE9TUkV4aXREZXNjcmlwdG9yKiBtX2Rlc2NyaXB0b3I7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNh
bGxiYWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxi
YWNrLmgKaW5kZXggNTJlMGEyOGZlM2M5MGNmOWYyZjgxODU3NzlhNzZmZjE5MjUzNzVjYy4uMDVj
ZjI4MjBmMzI0YWE1YzA5YTM0ZDIwMTI2MDY2NmM1MmUzNjg4NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaApAQCAtNDEsNyAr
NDEsNyBAQCBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrIDog
cHVibGljIEdDQWN0aXZpdHlDYWxsYmFjayB7CiAgICAgZG91YmxlIGRlYXRoUmF0ZShIZWFwJikg
b3ZlcnJpZGU7CiB9OwogCi1pbmxpbmUgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rp
dml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIoSGVhcCogaGVhcCkKK2lubGluZSBSZWZQdHI8
R0NBY3Rpdml0eUNhbGxiYWNrPiBHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVkZW5UaW1l
cihIZWFwKiBoZWFwKQogewogICAgIHJldHVybiBzX3Nob3VsZENyZWF0ZUdDVGltZXIgPyBhZG9w
dFJlZihuZXcgRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKSkgOiBudWxscHRyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFj
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5o
CmluZGV4IDVjZTAzNGEwY2Q4MWY1NWQyOThmMTI4OTgyNmRlNmY4YmVmNjJiYmEuLjY1MGFlMTM4
N2YxNmFhMDAzZDdkZGI5ODZmMDc1OGZjOWYxZWM0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRnVsbEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1Ymxp
YyBHQ0FjdGl2aXR5Q2FsbGJhY2sgewogICAgIGJvb2wgbV9kaWRHQ1JlY2VudGx5IHsgZmFsc2Ug
fTsKIH07CiAKLWlubGluZSBSZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rpdml0
eUNhbGxiYWNrOjpjcmVhdGVGdWxsVGltZXIoSGVhcCogaGVhcCkKK2lubGluZSBSZWZQdHI8RnVs
bEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVhdGVGdWxsVGlt
ZXIoSGVhcCogaGVhcCkKIHsKICAgICByZXR1cm4gc19zaG91bGRDcmVhdGVHQ1RpbWVyID8gYWRv
cHRSZWYobmV3IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkpIDogbnVsbHB0cjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgKaW5kZXgg
OWRmZGQwZjcwMDdkMjEzYjRmYjk1NDQ5YjE2ZWZlZGQ4ZTRjM2EzNi4uYzM3MWY3N2QyYjY0YjQz
ZGFjNzQ2MzE0ZDdjMWQ5ZDI1ZjM5ZmIwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgKQEAgLTQzLDggKzQzLDggQEAgY2xhc3MgSGVhcDsK
IGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBKU1J1
bkxvb3BUaW1lciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTUnVuTG9vcFRpbWVyOwot
ICAgIHN0YXRpYyBSZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlRnVsbFRpbWVy
KEhlYXAqKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlRWRl
blRpbWVyKEhlYXAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s+
IHRyeUNyZWF0ZUZ1bGxUaW1lcihIZWFwKik7CisgICAgc3RhdGljIFJlZlB0cjxHQ0FjdGl2aXR5
Q2FsbGJhY2s+IHRyeUNyZWF0ZUVkZW5UaW1lcihIZWFwKik7CiAKICAgICBHQ0FjdGl2aXR5Q2Fs
bGJhY2soSGVhcCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IGNjNGEz
MzY1MWEyZjE5NmZjYWZiMzJhY2MwYTYwM2Q5ODg4MjNmMDguLmY0NjhkNDFlNGZmYzdhNmFjN2Q0
Mjk1ZmNiZmE3NzcyMjE3YmJjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBA
IC0zMDQsOCArMzA0LDggQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQog
ICAgIC8vIHNjaGVkdWxlIHRoZSB0aW1lciBpZiB3ZSd2ZSBuZXZlciBkb25lIGEgY29sbGVjdGlv
bi4KICAgICAsIG1fbGFzdEZ1bGxHQ0xlbmd0aCgwLjAxKQogICAgICwgbV9sYXN0RWRlbkdDTGVu
Z3RoKDAuMDEpCi0gICAgLCBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFj
azo6Y3JlYXRlRnVsbFRpbWVyKHRoaXMpKQotICAgICwgbV9lZGVuQWN0aXZpdHlDYWxsYmFjayhH
Q0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZUVkZW5UaW1lcih0aGlzKSkKKyAgICAsIG1fZnVsbEFj
dGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVhdGVGdWxsVGltZXIodGhp
cykpCisgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5
Q3JlYXRlRWRlblRpbWVyKHRoaXMpKQogICAgICwgbV9zd2VlcGVyKGFkb3B0UmVmKG5ldyBJbmNy
ZW1lbnRhbFN3ZWVwZXIodGhpcykpKQogICAgICwgbV9zdG9wSWZOZWNlc3NhcnlUaW1lcihhZG9w
dFJlZihuZXcgU3RvcElmTmVjZXNzYXJ5VGltZXIodm0pKSkKICAgICAsIG1fZGVmZXJyYWxEZXB0
aCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0
YWNrVHJhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNr
VHJhY2UuY3BwCmluZGV4IDMxNGI4N2M2ODdiODBlZGE4NGE2NmM4N2E2YTVhOGIxOWQwMjE0NjYu
LjhjYjA5Nzk2ZjEyODIxNjU3N2IyZjkwYWQyZTJjZTBjNGQyYmMzODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQXN5bmNTdGFja1RyYWNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHAKQEAgLTMx
LDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLVJlZlB0cjxBc3luY1N0YWNr
VHJhY2U+IEFzeW5jU3RhY2tUcmFjZTo6Y3JlYXRlKFJlZjxTY3JpcHRDYWxsU3RhY2s+JiYgY2Fs
bFN0YWNrLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxBc3luY1N0YWNrVHJhY2U+IHBhcmVudCkK
K1JlZjxBc3luY1N0YWNrVHJhY2U+IEFzeW5jU3RhY2tUcmFjZTo6Y3JlYXRlKFJlZjxTY3JpcHRD
YWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxBc3luY1N0YWNr
VHJhY2U+IHBhcmVudCkKIHsKICAgICBBU1NFUlQoY2FsbFN0YWNrLT5zaXplKCkpOwogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEFzeW5jU3RhY2tUcmFjZShXVEZNb3ZlKGNhbGxTdGFjayksIHNp
bmdsZVNob3QsIFdURk1vdmUocGFyZW50KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvQXN5bmNTdGFja1RyYWNlLmgKaW5kZXggMWMzY2NmNDgzN2FiMTU3MjEwYzAz
ZmM4M2ZiZGQ3Yzc5Nzg1MTkyNC4uMjJiM2ZlNzQ5NWIxOGU0YTViZTA3Mzc5MzUyMDllZDk1NTFh
Y2RlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0
YWNrVHJhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3Rh
Y2tUcmFjZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEFzeW5j
U3RhY2tUcmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPEFzeW5jU3RhY2tUcmFjZT4gewogICAgICAg
ICBDYW5jZWxlZCwKICAgICB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxBc3luY1N0YWNrVHJhY2U+
IGNyZWF0ZShSZWY8U2NyaXB0Q2FsbFN0YWNrPiYmLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxB
c3luY1N0YWNrVHJhY2U+IHBhcmVudCk7CisgICAgc3RhdGljIFJlZjxBc3luY1N0YWNrVHJhY2U+
IGNyZWF0ZShSZWY8U2NyaXB0Q2FsbFN0YWNrPiYmLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxB
c3luY1N0YWNrVHJhY2U+IHBhcmVudCk7CiAKICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0Owog
ICAgIGJvb2wgaXNMb2NrZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMzhhMDBh
NzFiNjE4ZTcxNDdlMzFhYmFmY2ZmMzNjYzRkYTBkMGQ1ZC4uOTJhNWYyMDhhZjRjYzJiM2Y1YTg0
NDJiODI4MDVlNzFmMjZhMGM1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTg4Nyw3ICs4ODcs
OSBAQCBzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZp
bGUoRklMRSogZmlsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKGZzZWVrKGZp
bGUsIDAsIFNFRUtfU0VUKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUmVm
UHRyPFVpbnQ4QXJyYXk+IHJlc3VsdCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShidWZmZXJDYXBhY2l0
eSk7CisgICAgYXV0byByZXN1bHQgPSBVaW50OEFycmF5Ojp0cnlDcmVhdGUoYnVmZmVyQ2FwYWNp
dHkpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBzaXpl
X3QgcmVhZFNpemUgPSBmcmVhZChyZXN1bHQtPmRhdGEoKSwgMSwgYnVmZmVyQ2FwYWNpdHksIGZp
bGUpOwogICAgIGlmIChyZWFkU2l6ZSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZmZlckNhcGFj
aXR5KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBkZWVhMjU0NTA5NmNiNTk2YzE4MWFlYzc2ODUxNWZj
MWMxYTA4MDUxLi5lYjM2N2MxNGNkMTkzMDFjNTNkNjdmMmEwZTA5NGQ2MjM0MWZjMWM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTExMSw3ICsx
MTEsNyBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxB
cnJheUJ1ZmZlcj4gewogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlC
dWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpOwogCi0gICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBl
ZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkIGFuZCBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFy
cmF5QnVmZmVyLgorICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZl
ci4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZTVmZDRiYjc0MTZmM2UyNTBmZjhhNjg5NTE1
N2VmZDg2ZjVkYzQ5OC4uZWYyZTgwZjRlYTAzYmRlNjQ5MWNmNzMzM2EyN2I3YzU3N2YwZWI1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVk
QXJyYXlWaWV3LmgKQEAgLTM2LDExICszNiwxNSBAQCBjbGFzcyBHZW5lcmljVHlwZWRBcnJheVZp
ZXcgZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKICAgICBHZW5lcmljVHlwZWRBcnJh
eVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+
IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0
ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0
ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRy
eUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCk7CiAgICAgCi0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVm
PEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAgICAgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUqPihiYXNlQWRkcmVzcygpKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
CmluZGV4IDFiNmRhNTYxZWI3Y2ViMTMxMmFhNjQ4Y2QyZTQ5M2I1ODJiOWI2YjUuLmU2NjBjZmNk
ZDQ4OTQ1NjJkMTc0ZjY0NjU3NWQ1NjIyYjEyMjM3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKQEAgLTM5LDI1ICszOSw1MyBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46Okdl
bmVyaWNUeXBlZEFycmF5VmlldygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlTm9u
TnVsbCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgorUmVmPEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUoCisgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxl
bmd0aCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShhcnJheSwgbGVuZ3RoKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQucmVsZWFzZU5vbk51
bGwoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KK1JlZjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KAorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CisgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0
KTsKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CitSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgp
CiB7CiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aCwgc2l6
ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxl
bmd0aCk7CisgICAgcmV0dXJuIHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgK
K1JlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAogICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5Vmlldz4gcmVzdWx0ID0gY3JlYXRlKGxlbmd0aCk7CisgICAgUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5Vmlldz4gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQp
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIG1lbWNweShyZXN1bHQtPmRhdGEoKSwgYXJy
YXksIGxlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Y3JlYXRlKAorUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoCiAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IEFTU0VSVChidWZmZXIpOwpAQCAtNzAsMTQgKzk4LDIzIEBAIFJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4KK1JlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+CiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoKQoreworICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChs
ZW5ndGgpOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlTm9uTnVsbCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgorUmVmUHRy
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KK0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPQogICAgICAgICBBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBj
cmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOworICAgIHJldHVybiB0cnlDcmVhdGUo
V1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgpAQCAtOTYsNyArMTMzLDcgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpz
dWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0CiAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZl
ciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgQVNTRVJUKGJ1ZmZlcik7CiAgICAgY2xh
bXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBlPigqYnVmZmVyLCBieXRlT2Zmc2V0
KCksICZvZmZzZXQsICZsZW5ndGgpOwotICAgIHJldHVybiBjcmVhdGUoYnVmZmVyLCBvZmZzZXQs
IGxlbmd0aCk7CisgICAgcmV0dXJuIHRyeUNyZWF0ZShidWZmZXIsIG9mZnNldCwgbGVuZ3RoKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCBiMzAzOWEyMzZiYzdk
OTI2MmIzZWUwYmM5ZjRmYWVlZjYzYjczNTdjLi5jMmRlMDAzZmY2YjcxMGRkZTdkZGJiZTgxOTk0
YTU4MjhlNDU3MmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0zMDIsNyArMzAyLDcgQEAgUmVmUHRyPEFycmF5QnVm
ZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCgpCiAgICAgc3dp
dGNoICh0eXBlKCkpIHsKICNkZWZpbmUgRkFDVE9SWSh0eXBlKSBcCiAgICAgY2FzZSB0eXBlICMj
IEFycmF5VHlwZTogXAotICAgICAgICByZXR1cm4gdHlwZSAjIyBBcnJheTo6Y3JlYXRlKGJ1ZmZl
ciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHR5cGUgIyMgQXJyYXk6OnRy
eUNyZWF0ZShidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CiAgICAgRk9SX0VBQ0hfVFlQRURf
QVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKEZBQ1RPUlkpCiAjdW5kZWYgRkFDVE9SWQog
ICAgIGNhc2UgRGF0YVZpZXdUeXBlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBj
YTE4ODQ0NzcyODEwMGM1YWYzN2E1N2Q2ZDdlMTRjNmY4NzkyYjA1Li4yZTU2Y2UxNjViNTk2NGNh
NGRkMDRmNTdlNDc5ODZiNDc0ZGU1YzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApA
QCAtMzE0LDEzICszMTQsMTMgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6c2V0KAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjx0eXBlbmFtZSBBZGFw
dG9yOjpWaWV3VHlwZT4gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnBvc3NpYmx5
U2hhcmVkVHlwZWRJbXBsKCkKIHsKLSAgICByZXR1cm4gQWRhcHRvcjo6Vmlld1R5cGU6OmNyZWF0
ZShwb3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsKKyAgICBy
ZXR1cm4gQWRhcHRvcjo6Vmlld1R5cGU6OnRyeUNyZWF0ZShwb3NzaWJseVNoYXJlZEJ1ZmZlcigp
LCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnVuc2hhcmVkVHlwZWRJbXBsKCkKIHsKLSAgICByZXR1cm4gQWRhcHRv
cjo6Vmlld1R5cGU6OmNyZWF0ZSh1bnNoYXJlZEJ1ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0
aCgpKTsKKyAgICByZXR1cm4gQWRhcHRvcjo6Vmlld1R5cGU6OnRyeUNyZWF0ZSh1bnNoYXJlZEJ1
ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1v
cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKaW5kZXgg
YTY4NWYwZWEzZTRmY2Y5MDVkYjJjYzM2ZDUwMGFhNzU5Y2I3N2IzZi4uMzhiYmU4OTQ4NDdhZjc5
MmE4YjMwZWMxZTAxNjcxMDM1OTJjMjQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU1lbW9yeS5jcHAKQEAgLTI2OSwxMiArMjY5LDEyIEBAIE1lbW9yeTo6TWVtb3J5KHZvaWQq
IG1lbW9yeSwgUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBzaXplX3QgbWFw
cGVkCiAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1lbW9yeTo6TWVtb3J5IGFsbG9jYXRpbmcg
IiwgKnRoaXMpOwogfQogCi1SZWZQdHI8TWVtb3J5PiBNZW1vcnk6OmNyZWF0ZSgpCitSZWY8TWVt
b3J5PiBNZW1vcnk6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZW1vcnko
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVtb3J5KCkpOwogfQogCi1SZWZQdHI8TWVt
b3J5PiBNZW1vcnk6OmNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0s
IFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1
cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNs
YWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFn
ZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQorUmVmUHRyPE1lbW9yeT4gTWVtb3J5Ojp0
cnlDcmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwg
V1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYg
Z3Jvd1N1Y2Nlc3NDYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaW5pdGlhbCk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoIW1heGltdW0gfHwgbWF4aW11bSA+PSBpbml0aWFsKTsgLy8gVGhpcyBzaG91bGQg
YmUgZ3VhcmFudGVlZCBieSBvdXIgY2FsbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU1lbW9yeS5oCmluZGV4IGMzNjU4MGY3OWVmNzMzZDg2MThkY2ZkYjNmNjcyMTczODVmMmYyNDEu
LjAwNzM3ZmMxZTY1ZTJiMjhkMGIwMDhhOWUzOTUzZGM3NzJjOTkxMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmgKQEAgLTU5LDggKzU5LDggQEAgY2xhc3MgTWVtb3J5
IDogcHVibGljIFJlZkNvdW50ZWQ8TWVtb3J5PiB7CiAgICAgZW51bSBTeW5jVHJ5VG9SZWNsYWlt
IHsgU3luY1RyeVRvUmVjbGFpbVRhZyB9OwogICAgIGVudW0gR3Jvd1N1Y2Nlc3MgeyBHcm93U3Vj
Y2Vzc1RhZyB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxNZW1vcnk+IGNyZWF0ZSgpOwotICAgIHN0
YXRpYyBSZWZQdHI8TWVtb3J5PiBjcmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBt
YXhpbXVtLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9y
eVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1Ry
eVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291
bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayk7CisgICAgc3RhdGljIFJlZjxN
ZW1vcnk+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWZQdHI8TWVtb3J5PiB0cnlDcmVhdGUoUGFn
ZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90
aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
U3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlv
bjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3ND
YWxsYmFjayk7CiAKICAgICB+TWVtb3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtVGFibGUuY3BwCmluZGV4IDA0YWMwNjUyNTU5YTZkOTM4ZjA5YjA2YWVlMjAxZjkxMmU5ZTRj
NjguLmViYjYzMjUyMGZhZjMwODNkZjRjNmYyNzEwMDFmZDU1NzE0NWU4ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIFRh
YmxlOjpzZXRMZW5ndGgodWludDMyX3QgbGVuZ3RoKQogICAgIEFTU0VSVChtX21hc2sgPT0gV1RG
OjptYXNrRm9yU2l6ZShhbGxvY2F0ZWRMZW5ndGgobGVuZ3RoKSkpOwogfQogCi1SZWZQdHI8VGFi
bGU+IFRhYmxlOjpjcmVhdGUodWludDMyX3QgaW5pdGlhbCwgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gbWF4aW11bSkKK1JlZlB0cjxUYWJsZT4gVGFibGU6OnRyeUNyZWF0ZSh1aW50MzJfdCBpbml0
aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKQogewogICAgIGlmICghaXNWYWxp
ZExlbmd0aChpbml0aWFsKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21UYWJsZS5oCmluZGV4IDRlMTVlMjkwMTQ0ZjIzMjgzN2M2Yjg1MzBhMjdk
M2YzNWE3NjA5ZmIuLjJmNTQ4M2M2MThmYTQ1OGJjZTBlZDg1MGRhNTU5NGE5MWU2MmI5ZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNs
YXNzIEluc3RhbmNlOwogCiBjbGFzcyBUYWJsZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxUYWJsZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8VGFibGU+IGNyZWF0ZSh1aW50
MzJfdCBpbml0aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKTsKKyAgICBzdGF0
aWMgUmVmUHRyPFRhYmxlPiB0cnlDcmVhdGUodWludDMyX3QgaW5pdGlhbCwgc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gbWF4aW11bSk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB+VGFibGUoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlJbnN0YW5jZS5jcHAKaW5kZXggYWJjN2ZhZTQ4ZWY3OGJhZTdlZjM0Y2JlNGYzNTZhYmY4NGVh
MDNhMy4uYmQ3MDNmZGIyNmIyNDM4MzYxM2E2YjRjZjgzOWI3MjQ2NTAxOTgwOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFu
Y2UuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFz
c2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAg
ICAgICAgIGF1dG8qIGpzTWVtb3J5ID0gSlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlKGV4ZWMs
IHZtLCBnbG9iYWxPYmplY3QtPldlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJlKCkpOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKIAotICAgICAg
ICAgICAgUmVmUHRyPFdhc206Ok1lbW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5OjpjcmVhdGUo
bW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5LmluaXRpYWwoKSwgbW9kdWxlSW5mb3JtYXRpb24ubWVt
b3J5Lm1heGltdW0oKSwKKyAgICAgICAgICAgIFJlZlB0cjxXYXNtOjpNZW1vcnk+IG1lbW9yeSA9
IFdhc206Ok1lbW9yeTo6dHJ5Q3JlYXRlKG1vZHVsZUluZm9ybWF0aW9uLm1lbW9yeS5pbml0aWFs
KCksIG1vZHVsZUluZm9ybWF0aW9uLm1lbW9yeS5tYXhpbXVtKCksCiAgICAgICAgICAgICAgICAg
WyZ2bV0gKFdhc206Ok1lbW9yeTo6Tm90aWZ5UHJlc3N1cmUpIHsgdm0uaGVhcC5jb2xsZWN0QXN5
bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtXSAoV2Fz
bTo6TWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVj
dGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtLCBqc01lbW9yeV0gKFdh
c206Ok1lbW9yeTo6R3Jvd1N1Y2Nlc3MsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdh
c206OlBhZ2VDb3VudCBuZXdQYWdlQ291bnQpIHsganNNZW1vcnktPmdyb3dTdWNjZXNzQ2FsbGJh
Y2sodm0sIG9sZFBhZ2VDb3VudCwgbmV3UGFnZUNvdW50KTsgfSk7CkBAIC0yOTcsNyArMjk3LDcg
QEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShW
TSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICBpZiAoIWpzSW5zdGFuY2UtPm1lbW9yeSgp
KSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGEgZHVtbXkgbWVtb3J5LCBzbyB0aGF0
IHdhc20gLT4gd2FzbSB0aHVua3MgYXZvaWQgY2hlY2tpbmcgZm9yIGEgbnVsbHB0ciBNZW1vcnkg
d2hlbiB0cnlpbmcgdG8gc2V0IHBpbm5lZCByZWdpc3RlcnMuCiAgICAgICAgIGF1dG8qIGpzTWVt
b3J5ID0gSlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlKGV4ZWMsIHZtLCBnbG9iYWxPYmplY3Qt
PldlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJlKCkpOwotICAgICAgICBqc01lbW9yeS0+YWRvcHQo
V2FzbTo6TWVtb3J5OjpjcmVhdGUoKS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAganNNZW1v
cnktPmFkb3B0KFdhc206Ok1lbW9yeTo6Y3JlYXRlKCkpOwogICAgICAgICBqc0luc3RhbmNlLT5z
ZXRNZW1vcnkodm0sIGpzTWVtb3J5KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBudWxscHRyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCmluZGV4IDU2NTYyNTI2Y2ZlNzE3OGIy
NzM4ZTkyNjVkN2IyODVhM2U0NzY0NmYuLjdhNmE1ZjAzOThmODYwYTEwMTM4YjZiM2JkNTk1NjJj
MDA3ZDllMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlNZW1vcnkuY3BwCkBAIC02OSw3ICs2OSw3IEBAIFN0cnVjdHVyZSogSlNXZWJB
c3NlbWJseU1lbW9yeTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iCiAKIEpTV2ViQXNzZW1ibHlNZW1vcnk6OkpTV2ViQXNzZW1ibHlNZW1vcnkoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKLSAgICAs
IG1fbWVtb3J5KFdhc206Ok1lbW9yeTo6Y3JlYXRlKCkucmVsZWFzZU5vbk51bGwoKSkKKyAgICAs
IG1fbWVtb3J5KFdhc206Ok1lbW9yeTo6Y3JlYXRlKCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggNGYyNjAyNDJkNmZiNTcwN2Y3NWRlNzFkMTM2ZDZhNjliMDEyYWZm
OC4uMTQwNGU2NzgyYTliNjJmYzBhMWJjMzZlN2I1NDQ4NDdlMjJlNmQyYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1v
cnlDb25zdHJ1Y3Rvci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeShFeGVjU3RhdGUqIGV4
ZWMKICAgICBhdXRvKiBqc01lbW9yeSA9IEpTV2ViQXNzZW1ibHlNZW1vcnk6OmNyZWF0ZShleGVj
LCB2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5XZWJBc3NlbWJseU1lbW9yeVN0cnVj
dHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCi0gICAgUmVmUHRyPFdhc206Ok1lbW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5
OjpjcmVhdGUoaW5pdGlhbFBhZ2VDb3VudCwgbWF4aW11bVBhZ2VDb3VudCwKKyAgICBSZWZQdHI8
V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OnRyeUNyZWF0ZShpbml0aWFsUGFn
ZUNvdW50LCBtYXhpbXVtUGFnZUNvdW50LAogICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpO
b3RpZnlQcmVzc3VyZSkgeyB2bS5oZWFwLmNvbGxlY3RBc3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1
bGwpOyB9LAogICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7
IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAg
WyZ2bSwganNNZW1vcnldIChXYXNtOjpNZW1vcnk6Okdyb3dTdWNjZXNzLCBXYXNtOjpQYWdlQ291
bnQgb2xkUGFnZUNvdW50LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KSB7IGpzTWVtb3J5
LT5ncm93U3VjY2Vzc0NhbGxiYWNrKHZtLCBvbGRQYWdlQ291bnQsIG5ld1BhZ2VDb3VudCk7IH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IGU4Y2E1OGNiZjYwYWM0NmFiMjMwZWUzZGYwNGE1ZjRh
MzAyOGYyZjIuLjM5YTY2ZmFmNjYzODZmN2NkYzhlNjNlNjQ0YWUwZmNmNzA5ODEyYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1v
ZHVsZVJlY29yZC5jcHAKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9i
agogICAgICAgICBpZiAoISFtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0aW9uICYmICFo
YXNUYWJsZUltcG9ydCkgewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1vZHVsZUluZm9y
bWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaXNJbXBvcnQoKSk7CiAgICAgICAgICAgICAvLyBXZSBj
cmVhdGUgYSBUYWJsZSB3aGVuIGl0J3MgYSBUYWJsZSBkZWZpbml0aW9uLgotICAgICAgICAgICAg
UmVmUHRyPFdhc206OlRhYmxlPiB3YXNtVGFibGUgPSBXYXNtOjpUYWJsZTo6Y3JlYXRlKG1vZHVs
ZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaW5pdGlhbCgpLCBtb2R1bGVJbmZvcm1hdGlv
bi50YWJsZUluZm9ybWF0aW9uLm1heGltdW0oKSk7CisgICAgICAgICAgICBSZWZQdHI8V2FzbTo6
VGFibGU+IHdhc21UYWJsZSA9IFdhc206OlRhYmxlOjp0cnlDcmVhdGUobW9kdWxlSW5mb3JtYXRp
b24udGFibGVJbmZvcm1hdGlvbi5pbml0aWFsKCksIG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5m
b3JtYXRpb24ubWF4aW11bSgpKTsKICAgICAgICAgICAgIGlmICghd2FzbVRhYmxlKQogICAgICAg
ICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihl
eGVjLCB2bSwgImNvdWxkbid0IGNyZWF0ZSBUYWJsZSIpKTsKICAgICAgICAgICAgIEpTV2ViQXNz
ZW1ibHlUYWJsZSogdGFibGUgPSBKU1dlYkFzc2VtYmx5VGFibGU6OmNyZWF0ZShleGVjLCB2bSwg
Z2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseVRhYmxlU3RydWN0dXJlKCksIHdhc21UYWJsZS5yZWxl
YXNlTm9uTnVsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwCmluZGV4IDA3NmM3ODc4ZjVk
ZTI2ZWNiMDE3YmY4NTc4OGIwMDE5N2VhMzJiMTUuLjVhNjk1MjA4NTBkZTAxOTFhZTI3M2I0N2Zi
OTliMzM3YzE3ZTg2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcApAQCAtOTAsNyArOTAs
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFz
c2VtYmx5VGFibGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9CiAgICAgfQogCi0gICAgUmVm
UHRyPFdhc206OlRhYmxlPiB3YXNtVGFibGUgPSBXYXNtOjpUYWJsZTo6Y3JlYXRlKGluaXRpYWws
IG1heGltdW0pOworICAgIFJlZlB0cjxXYXNtOjpUYWJsZT4gd2FzbVRhYmxlID0gV2FzbTo6VGFi
bGU6OnRyeUNyZWF0ZShpbml0aWFsLCBtYXhpbXVtKTsKICAgICBpZiAoIXdhc21UYWJsZSkgewog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93
U2NvcGUsCiAgICAgICAgICAgICBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJjb3VsZG4ndCBjcmVh
dGUgVGFibGUiX3MpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFy
S2V5LmNwcAppbmRleCA0NzZkMmU1ZTM3N2E1OTQwMGE2NTU0MjYyNTg3NzU4YTdlZTk3MmYyLi5k
MGZiM2UwNTM2ZmVkYzkyNzFjZTFkZTkzMGFiNDdjYjU3N2E0OTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9u
Q2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCBS
ZWZQdHI8QXJyYXlCdWZmZXI+IENETVNlc3Npb25DbGVhcktleTo6Y2FjaGVkS2V5Rm9yS2V5SUQo
Y29uc3QgU3RyaW5nJiBrZXlJZCkgYwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1
dG8ga2V5RGF0YSA9IG1fY2FjaGVkS2V5cy5nZXQoa2V5SWQpOwotICAgIFJlZlB0cjxVaW50OEFy
cmF5PiBrZXlEYXRhQXJyYXkgPSBVaW50OEFycmF5OjpjcmVhdGUoa2V5RGF0YS5kYXRhKCksIGtl
eURhdGEuc2l6ZSgpKTsKKyAgICBhdXRvIGtleURhdGFBcnJheSA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShrZXlEYXRhLmRhdGEoKSwga2V5RGF0YS5zaXplKCkpOwogICAgIHJldHVybiBrZXlEYXRhQXJy
YXktPnVuc2hhcmVkQnVmZmVyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCA3
OWVjODkxZDgxM2NkOTFiNzA4NzE5Zjc0MmQ5NjlhN2ZmMjFmNzA5Li42MmIzMTkyYTJmNjM4Y2M5
NGQ5MzJhZThiNWNmYmE0NDBhYzFlNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC0z
MDgsNyArMzA4LDcgQEAgc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29u
dGV4dChOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnksIEpTQ29udGUKICAgICAgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbmFtZSA9IE9wYXF1ZUpT
U3RyaW5nOjpjcmVhdGUoa2V5KTsKKyAgICAgICAgYXV0byBuYW1lID0gT3BhcXVlSlNTdHJpbmc6
OnRyeUNyZWF0ZShrZXkpOwogICAgICAgICBKU09iamVjdFNldFByb3BlcnR5KFtjb250ZXh0IEpT
R2xvYmFsQ29udGV4dFJlZl0sIHJlc3VsdE9iamVjdCwgbmFtZS5nZXQoKSwgW3ZhbHVlIEpTVmFs
dWVSZWZdLCAwLCAmZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAg
ICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyLmNwcAppbmRleCA5ZjBhMjVmZDNmYmM4YjMyZGY5ODY0MTFmNGExNTVjZmI2MTk0OTQ5
Li41NmExM2NhZWFiZDRlM2ZkNGI4YmMzYWU2ZjdhNjgxZTMyZGQyODRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcApAQCAtNjcsNyArNjcs
NyBAQCBBdWRpb0J1ZmZlcjo6QXVkaW9CdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywg
c2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdAogICAgIG1fY2hhbm5lbHMucmVzZXJ2ZUNhcGFj
aXR5KG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bWJlck9mQ2hhbm5lbHM7ICsraSkgewotICAgICAgICBhdXRvIGNoYW5uZWxEYXRhQXJyYXkgPSBG
bG9hdDMyQXJyYXk6OmNyZWF0ZShtX2xlbmd0aCk7CisgICAgICAgIGF1dG8gY2hhbm5lbERhdGFB
cnJheSA9IEZsb2F0MzJBcnJheTo6dHJ5Q3JlYXRlKG1fbGVuZ3RoKTsKICAgICAgICAgaWYgKCFj
aGFubmVsRGF0YUFycmF5KSB7CiAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTg2LDcgKzg2LDcgQEAgQXVkaW9CdWZmZXI6OkF1ZGlvQnVmZmVyKEF1ZGlv
QnVzJiBidXMpCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyA9IGJ1cy5udW1iZXJPZkNo
YW5uZWxzKCk7CiAgICAgbV9jaGFubmVscy5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZDaGFubmVs
cyk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkg
ewotICAgICAgICBhdXRvIGNoYW5uZWxEYXRhQXJyYXkgPSBGbG9hdDMyQXJyYXk6OmNyZWF0ZSht
X2xlbmd0aCk7CisgICAgICAgIGF1dG8gY2hhbm5lbERhdGFBcnJheSA9IEZsb2F0MzJBcnJheTo6
dHJ5Q3JlYXRlKG1fbGVuZ3RoKTsKICAgICAgICAgaWYgKCFjaGFubmVsRGF0YUFycmF5KSB7CiAg
ICAgICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTExNSw5ICsx
MTUsNyBAQCBFeGNlcHRpb25PcjxSZWY8RmxvYXQzMkFycmF5Pj4gQXVkaW9CdWZmZXI6OmdldENo
YW5uZWxEYXRhKHVuc2lnbmVkIGNoYW5uZWxJbmRleAogICAgIGlmIChjaGFubmVsSW5kZXggPj0g
bV9jaGFubmVscy5zaXplKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJv
ciB9OwogICAgIGF1dG8mIGNoYW5uZWxEYXRhID0gKm1fY2hhbm5lbHNbY2hhbm5lbEluZGV4XTsK
LSAgICBhdXRvIGFycmF5ID0gRmxvYXQzMkFycmF5OjpjcmVhdGUoY2hhbm5lbERhdGEudW5zaGFy
ZWRCdWZmZXIoKSwgY2hhbm5lbERhdGEuYnl0ZU9mZnNldCgpLCBjaGFubmVsRGF0YS5sZW5ndGgo
KSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOwotICAgIHJldHVybiBhcnJheS5yZWxlYXNl
Tm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShjaGFubmVsRGF0YS51
bnNoYXJlZEJ1ZmZlcigpLCBjaGFubmVsRGF0YS5ieXRlT2Zmc2V0KCksIGNoYW5uZWxEYXRhLmxl
bmd0aCgpKTsKIH0KIAogRmxvYXQzMkFycmF5KiBBdWRpb0J1ZmZlcjo6Y2hhbm5lbERhdGEodW5z
aWduZWQgY2hhbm5lbEluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ2ci9WUkV5ZVBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9W
UkV5ZVBhcmFtZXRlcnMuY3BwCmluZGV4IDI1ZmI4ZThiN2Q1NTVkN2FkMGQzNDkxNzQ5OTdkYjMy
OTcwY2M5YTkuLjAxMjY0YmQ4NjkyNGZjZmNjYzhjMmM1ZTNhNzhmNzIwNjM5MTE2YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJFeWVQYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRXllUGFyYW1ldGVycy5jcHAKQEAg
LTM5LDEyICszOSwxMSBAQCBWUkV5ZVBhcmFtZXRlcnM6OlZSRXllUGFyYW1ldGVycyhjb25zdCBG
bG9hdFBvaW50M0QmIG9mZnNldCwgY29uc3QgVlJQbGF0Zm9ybURpcwogUmVmPEZsb2F0MzJBcnJh
eT4gVlJFeWVQYXJhbWV0ZXJzOjpvZmZzZXQoKSBjb25zdAogewogICAgIGF1dG8gb2Zmc2V0ID0g
RmxvYXQzMkFycmF5OjpjcmVhdGUoMyk7Ci0gICAgUkVMRUFTRV9BU1NFUlQob2Zmc2V0KTsKICAg
ICBmbG9hdCogb2Zmc2V0RGF0YSA9IG9mZnNldC0+ZGF0YSgpOwogICAgIG9mZnNldERhdGFbMF0g
PSBtX29mZnNldC54KCk7CiAgICAgb2Zmc2V0RGF0YVsxXSA9IG1fb2Zmc2V0LnkoKTsKICAgICBv
ZmZzZXREYXRhWzJdID0gbV9vZmZzZXQueigpOwotICAgIHJldHVybiBvZmZzZXQucmVsZWFzZU5v
bk51bGwoKTsKKyAgICByZXR1cm4gb2Zmc2V0OwogfQogCiBjb25zdCBWUkZpZWxkT2ZWaWV3JiBW
UkV5ZVBhcmFtZXRlcnM6OmZpZWxkT2ZWaWV3KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VidnIvVlJGcmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHAKaW5kZXggNjVjM2RiYWQ2OGRjMmU4NGExMzYxYzY2
MGExZjdlZWU4OThjMWZiZC4uYjIxNWI1NWZjNmMwMzFiMDdkNjljNzJkNWZhMGQ5ZTVlYmE3MWMw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAgVlJGcmFtZURhdGE6OlZSRnJhbWVEYXRhKCkKIHN0YXRpYyBSZWY8Rmxv
YXQzMkFycmF5PiBtYXRyaXhUb0FycmF5KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRy
aXgpCiB7CiAgICAgYXV0byBjb2x1bW5NYWpvck1hdHJpeCA9IG1hdHJpeC50b0NvbHVtbk1ham9y
RmxvYXRBcnJheSgpOwotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShjb2x1bW5NYWpv
ck1hdHJpeC5kYXRhKCksIDE2KS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMy
QXJyYXk6OmNyZWF0ZShjb2x1bW5NYWpvck1hdHJpeC5kYXRhKCksIDE2KTsKIH0KIAogUmVmPEZs
b2F0MzJBcnJheT4gVlJGcmFtZURhdGE6OmxlZnRQcm9qZWN0aW9uTWF0cml4KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJQb3NlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJQb3NlLmNwcAppbmRleCA4ZTNiYWY1YTJmMDg0NTA5
NTY0OGI4MWRhMjlkZGJkZTlmZWY2NDRiLi4xNjg2YjlhNWFiN2RmN2MzN2FlM2NlMjIzNTcwZDA0
OWI1MGU5NzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSUG9z
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUlBvc2UuY3BwCkBAIC0z
Miw3ICszMiw3IEBAIHN0YXRpYyBSZWZQdHI8RmxvYXQzMkFycmF5PiBvcHRpb25hbEZsb2F0M1Rv
SlNDQXJyYXkoY29uc3Qgc3RkOjpvcHRpb25hbDxWUlBsYXRmCiAgICAgaWYgKCFkYXRhKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShk
YXRhLT5kYXRhLCAzKS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMyQXJyYXk6
OmNyZWF0ZShkYXRhLT5kYXRhLCAzKTsKIH0KIAogUmVmUHRyPEZsb2F0MzJBcnJheT4gVlJQb3Nl
Ojpwb3NpdGlvbigpIGNvbnN0CkBAIC00Miw3ICs0Miw3IEBAIFJlZlB0cjxGbG9hdDMyQXJyYXk+
IFZSUG9zZTo6cG9zaXRpb24oKSBjb25zdAogCiAgICAgYXV0byYgcG9zaXRpb24gPSAqbV90cmFj
a2luZ0luZm8ucG9zaXRpb247CiAgICAgZmxvYXQgcG9zaXRpb25EYXRhWzNdID0geyBwb3NpdGlv
bi54KCksIHBvc2l0aW9uLnkoKSwgcG9zaXRpb24ueigpIH07Ci0gICAgcmV0dXJuIEZsb2F0MzJB
cnJheTo6Y3JlYXRlKHBvc2l0aW9uRGF0YSwgMykucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1
cm4gRmxvYXQzMkFycmF5OjpjcmVhdGUocG9zaXRpb25EYXRhLCAzKTsKIH0KIAogUmVmUHRyPEZs
b2F0MzJBcnJheT4gVlJQb3NlOjpsaW5lYXJWZWxvY2l0eSgpIGNvbnN0CkBAIC02Miw3ICs2Miw3
IEBAIFJlZlB0cjxGbG9hdDMyQXJyYXk+IFZSUG9zZTo6b3JpZW50YXRpb24oKSBjb25zdAogCiAg
ICAgYXV0byYgb3JpZW50YXRpb24gPSAqbV90cmFja2luZ0luZm8ub3JpZW50YXRpb247CiAgICAg
ZmxvYXQgb3JpZW50YXRpb25EYXRhWzRdID0geyBvcmllbnRhdGlvbi54LCBvcmllbnRhdGlvbi55
LCBvcmllbnRhdGlvbi56LCBvcmllbnRhdGlvbi53IH07Ci0gICAgcmV0dXJuIEZsb2F0MzJBcnJh
eTo6Y3JlYXRlKG9yaWVudGF0aW9uRGF0YSwgNCkucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1
cm4gRmxvYXQzMkFycmF5OjpjcmVhdGUob3JpZW50YXRpb25EYXRhLCA0KTsKIH0KIAogUmVmUHRy
PEZsb2F0MzJBcnJheT4gVlJQb3NlOjphbmd1bGFyVmVsb2NpdHkoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUlN0YWdlUGFyYW1ldGVycy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSU3RhZ2VQYXJhbWV0ZXJzLmNwcAppbmRleCAy
ZGEwNzQzYjQ0YzdlYzhmODMwOTI1OWJmNGRhMjU4N2FkZjI4NmUyLi5iNmU1NzMyNmM1MjRhNTc2
OTczYmMzYjZhN2M4NjRkODE4ODIyNTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnZyL1ZSU3RhZ2VQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnZyL1ZSU3RhZ2VQYXJhbWV0ZXJzLmNwcApAQCAtNDEsNyArNDEsNyBAQCBWUlN0YWdl
UGFyYW1ldGVyczo6VlJTdGFnZVBhcmFtZXRlcnMoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHNpdHRpbmdUb1N0YW5kaQogUmVmPEZsb2F0MzJBcnJheT4gVlJTdGFnZVBhcmFtZXRlcnM6OnNp
dHRpbmdUb1N0YW5kaW5nVHJhbnNmb3JtKCkgY29uc3QKIHsKICAgICBhdXRvIGNvbHVtbk1ham9y
TWF0cml4ID0gbV9zaXR0aW5nVG9TdGFuZGluZ1RyYW5zZm9ybS50b0NvbHVtbk1ham9yRmxvYXRB
cnJheSgpOwotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShjb2x1bW5NYWpvck1hdHJp
eC5kYXRhKCksIDE2KS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMyQXJyYXk6
OmNyZWF0ZShjb2x1bW5NYWpvck1hdHJpeC5kYXRhKCksIDE2KTsKIH0KIAogZmxvYXQgVlJTdGFn
ZVBhcmFtZXRlcnM6OnNpemVYKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaAppbmRleCA2
NGNlZGMxNjhmZDBlMmNhMDA0ODQwMDAzNmY4MzQxMGJiZmZkMjFiLi40ODRjOGQ4MWU3YmM2MWFh
ZTM5NmJhYzU4Y2E2YzIzNGNiZmQ5OWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCkBAIC05
OSw4ICs5OSw3IEBAIGlubGluZSBib29sIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6
OmVucXVldWUoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+JiYKICAgICB9CiAgICAgYXV0byBsZW5n
dGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICBhdXRvIGNodW5rID0gSlNDOjpVaW50OEFy
cmF5OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwotICAgIEFTU0VSVChjaHVu
ayk7Ci0gICAgZW5xdWV1ZShzdGF0ZSwgdG9KUygmc3RhdGUsICZnbG9iYWxPYmplY3QsIGNodW5r
LmdldCgpKSk7CisgICAgZW5xdWV1ZShzdGF0ZSwgdG9KUygmc3RhdGUsICZnbG9iYWxPYmplY3Qs
IGNodW5rLnB0cigpKSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGJhOTQ1Y2Q3NzFlNGFmOWU4NWY2N2Y4NTcyMDQ4NjI5
NTc0NGM2MDkuLmFmN2FiM2E2YzdlNGIyN2NjMzcyZDZkZjIwYWI2MTJhNDcxNTY1MzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcApAQCAtMjA5NiwzMSArMjA5NiwzMSBAQCBjbGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENs
b25lQmFzZSB7CiAgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSBnZXRKU1ZhbHVlKERhdGFW
aWV3OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgSW50OEFycmF5VGFn
OgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2Jq
ZWN0LCBJbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwg
bGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhl
YywgbV9nbG9iYWxPYmplY3QsIEludDhBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZm
ZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIFVpbnQ4QXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZp
ZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZN
b3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAg
ICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQ4QXJy
YXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5n
ZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBVaW50OENsYW1w
ZWRBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBt
X2dsb2JhbE9iamVjdCwgVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVm
ZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZl
clZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQ4Q2xhbXBlZEFycmF5Ojp0
cnlDcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgSW50MTZBcnJheVRhZzoK
LSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVj
dCwgSW50MTZBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBs
ZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVj
LCBtX2dsb2JhbE9iamVjdCwgSW50MTZBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZm
ZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIFVpbnQxNkFycmF5VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZmZXJW
aWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBVaW50MTZBcnJheTo6Y3JlYXRlKFdU
Rk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAg
ICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDE2
QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3Ro
KS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBJbnQzMkFy
cmF5VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xv
YmFsT2JqZWN0LCBJbnQzMkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVP
ZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9K
UyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBJbnQzMkFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShh
cnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIGNhc2UgVWludDMyQXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJh
eUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQzMkFycmF5Ojpj
cmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwor
ICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0
LCBVaW50MzJBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0
LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNl
IEZsb2F0MzJBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9l
eGVjLCBtX2dsb2JhbE9iamVjdCwgRmxvYXQzMkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1
ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAgYXJyYXlCdWZm
ZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBGbG9hdDMyQXJyYXk6OnRyeUNy
ZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBGbG9hdDY0QXJyYXlUYWc6Ci0g
ICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3Qs
IEZsb2F0NjRBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBs
ZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVj
LCBtX2dsb2JhbE9iamVjdCwgRmxvYXQ2NEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShhcnJheUJ1
ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKaW5k
ZXggMDgwMjA5OTU0NGM4NGQzZGIxODM3MDYzYjQ5N2U1OWRiZGZiNmZlNS4uM2Q4MDAyYzlhOTU0
OWEzMmIxMThhMGZjNGUyOWJjZDljN2FiZDJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcApAQCAtNjI5LDcgKzYyOSw3IEBA
IGF1dG8gQ3J5cHRvS2V5UlNBOjphbGdvcml0aG0oKSBjb25zdCAtPiBLZXlBbGdvcml0aG0KICAg
ICAgICAgQ3J5cHRvUnNhSGFzaGVkS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICAgICAgcmVzdWx0
Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShhbGdvcml0
aG1JZGVudGlmaWVyKCkpOwogICAgICAgICByZXN1bHQubW9kdWx1c0xlbmd0aCA9IG1vZHVsdXNM
ZW5ndGg7Ci0gICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgICAg
IHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShwdWJsaWNFeHBv
bmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CiAgICAgICAgIHJlc3VsdC5oYXNo
Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShtX2hhc2gp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTYzNyw3ICs2MzcsNyBAQCBhdXRv
IENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkgY29uc3QgLT4gS2V5QWxnb3JpdGhtCiAgICAgQ3J5
cHRvUnNhS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICByZXN1bHQubmFtZSA9IENyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKGFsZ29yaXRobUlkZW50aWZpZXIoKSk7CiAg
ICAgcmVzdWx0Lm1vZHVsdXNMZW5ndGggPSBtb2R1bHVzTGVuZ3RoOwotICAgIHJlc3VsdC5wdWJs
aWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1
YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgcmVzdWx0LnB1YmxpY0V4cG9uZW50ID0gVWludDhB
cnJheTo6dHJ5Q3JlYXRlKHB1YmxpY0V4cG9uZW50LmRhdGEoKSwgcHVibGljRXhwb25lbnQuc2l6
ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0tleVJTQU1hYy5jcHAKaW5kZXggZThlYjg0ZWEwZTUyNDYwZTJkNTc4YTZiODc4
OWQ5N2YzZTIwNDE1YS4uOTRmYzFhNzYyOTMzMmY3ZTgxZDAxMWY5MGYxNTM2MDRkNjJmNjBmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcApAQCAt
MjIyLDcgKzIyMiw3IEBAIGF1dG8gQ3J5cHRvS2V5UlNBOjphbGdvcml0aG0oKSBjb25zdCAtPiBL
ZXlBbGdvcml0aG0KICAgICAgICAgQ3J5cHRvUnNhS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICAg
ICAgcmVzdWx0Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFt
ZShhbGdvcml0aG1JZGVudGlmaWVyKCkpOwogICAgICAgICByZXN1bHQubW9kdWx1c0xlbmd0aCA9
IDA7Ci0gICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZSgw
KTsKKyAgICAgICAgcmVzdWx0LnB1YmxpY0V4cG9uZW50ID0gVWludDhBcnJheTo6dHJ5Q3JlYXRl
KDApOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMjMyLDcgKzIzMiw3IEBA
IGF1dG8gQ3J5cHRvS2V5UlNBOjphbGdvcml0aG0oKSBjb25zdCAtPiBLZXlBbGdvcml0aG0KICAg
ICAgICAgQ3J5cHRvUnNhSGFzaGVkS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICAgICAgcmVzdWx0
Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShhbGdvcml0
aG1JZGVudGlmaWVyKCkpOwogICAgICAgICByZXN1bHQubW9kdWx1c0xlbmd0aCA9IG1vZHVsdXNM
ZW5ndGg7Ci0gICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgICAg
IHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShwdWJsaWNFeHBv
bmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CiAgICAgICAgIHJlc3VsdC5oYXNo
Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShtX2hhc2gp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTI0MCw3ICsyNDAsNyBAQCBhdXRv
IENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkgY29uc3QgLT4gS2V5QWxnb3JpdGhtCiAgICAgQ3J5
cHRvUnNhS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICByZXN1bHQubmFtZSA9IENyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKGFsZ29yaXRobUlkZW50aWZpZXIoKSk7CiAg
ICAgcmVzdWx0Lm1vZHVsdXNMZW5ndGggPSBtb2R1bHVzTGVuZ3RoOwotICAgIHJlc3VsdC5wdWJs
aWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1
YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgcmVzdWx0LnB1YmxpY0V4cG9uZW50ID0gVWludDhB
cnJheTo6dHJ5Q3JlYXRlKHB1YmxpY0V4cG9uZW50LmRhdGEoKSwgcHVibGljRXhwb25lbnQuc2l6
ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJp
eFJlYWRPbmx5LmNwcAppbmRleCBkZWFhZGZhN2Y4MTFlNzQ4ZjNlYjEzNzE0Yjk1ZTcwNzZkOGIy
YzRlLi43MzE3NTRlNDY2ZjM3MzZlOWNjNDdkNzMwNDc1MjU3ZjdlYTViZmU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5jcHAKQEAgLTM0NSw3ICszNDUsNyBAQCBSZWY8
RE9NUG9pbnQ+IERPTU1hdHJpeFJlYWRPbmx5Ojp0cmFuc2Zvcm1Qb2ludChET01Qb2ludEluaXQm
JiBwb2ludEluaXQpCiAKIEV4Y2VwdGlvbk9yPFJlZjxGbG9hdDMyQXJyYXk+PiBET01NYXRyaXhS
ZWFkT25seTo6dG9GbG9hdDMyQXJyYXkoKSBjb25zdAogewotICAgIGF1dG8gYXJyYXkzMiA9IEZs
b2F0MzJBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgxNik7CisgICAgYXV0byBhcnJheTMyID0g
RmxvYXQzMkFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKDE2KTsKICAgICBpZiAoIWFycmF5
MzIpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJPdXQgb2YgbWVt
b3J5Il9zIH07CiAKQEAgLTM3MSw3ICszNzEsNyBAQCBFeGNlcHRpb25PcjxSZWY8RmxvYXQzMkFy
cmF5Pj4gRE9NTWF0cml4UmVhZE9ubHk6OnRvRmxvYXQzMkFycmF5KCkgY29uc3QKIAogRXhjZXB0
aW9uT3I8UmVmPEZsb2F0NjRBcnJheT4+IERPTU1hdHJpeFJlYWRPbmx5Ojp0b0Zsb2F0NjRBcnJh
eSgpIGNvbnN0CiB7Ci0gICAgYXV0byBhcnJheTY0ID0gRmxvYXQ2NEFycmF5OjpjcmVhdGVVbmlu
aXRpYWxpemVkKDE2KTsKKyAgICBhdXRvIGFycmF5NjQgPSBGbG9hdDY0QXJyYXk6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQoMTYpOwogICAgIGlmICghYXJyYXk2NCkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIk91dCBvZiBtZW1vcnkiX3MgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5jcHAKaW5kZXggMmViNDFjOWMxMTQ0NGQ2MWJkZGYzYWIxNDJiOTViZTM4NDE5NWM3
OC4uYTI0YTUzNjI2ODkwYThhOTFkMTE3MzhjYTlhNThhNDUzNzFiYjhiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuY3BwCkBAIC03OCw3ICs3OCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxGb250RmFjZT4+
IEZvbnRGYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGZhCiAg
ICAgICAgIFsmXSAoUmVmUHRyPEFycmF5QnVmZmVyPiYgYXJyYXlCdWZmZXIpIC0+IEV4Y2VwdGlv
bk9yPHZvaWQ+IHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpOwogICAgICAgICAgICAgYXV0byBhcnJheUJ1ZmZlclZpZXcgPSBKU0M6
OlVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7
Ci0gICAgICAgICAgICBkYXRhUmVxdWlyZXNBc3luY2hyb25vdXNMb2FkaW5nID0gcG9wdWxhdGVG
b250RmFjZVdpdGhBcnJheUJ1ZmZlcihyZXN1bHQtPmJhY2tpbmcoKSwgYXJyYXlCdWZmZXJWaWV3
LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgZGF0YVJlcXVpcmVzQXN5bmNocm9ub3Vz
TG9hZGluZyA9IHBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIocmVzdWx0LT5iYWNraW5n
KCksIFdURk1vdmUoYXJyYXlCdWZmZXJWaWV3KSk7CiAgICAgICAgICAgICByZXR1cm4geyB9Owog
ICAgICAgICB9CiAgICAgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5j
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXIuY3BwCmluZGV4IDllZWI3
Nzk0NWFlOTIxNGZkYjgwMGMwYmUwY2EzOTA1ODUzNTRmYjUuLmIwNDljYzFlMzRhNzJiYjkyMmY0
MTNkM2I0ZDJmYzI0ZjExODQ5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0
RW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmNwcApAQCAt
NDAsNyArNDAsNyBAQCBSZWZQdHI8VWludDhBcnJheT4gVGV4dEVuY29kZXI6OmVuY29kZShTdHJp
bmcmJiBpbnB1dCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBuZWVkIHRv
IGFsbG9jYXRlIGEgQ1N0cmluZyB0byBlbmNvZGUgaW50byBhIFVpbnQ4QXJyYXkuCiAgICAgQ1N0
cmluZyB1dGY4ID0gaW5wdXQudXRmOCgpOwotICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0
aCgpKTsKKyAgICByZXR1cm4gVWludDhBcnJheTo6dHJ5Q3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAppbmRleCA5ZmZjNDA4ZWY2MDI1ZDJlZTJjNTYxMzNjYjc1
ZWVlOGI4NjA5ZWU5Li4zYjJhMjM2NjNkMTA3NzMxZDMyNzFiNjQzODEzNDUxYTEzMTg3NTZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCkBAIC05OSwxNSArOTksMTMgQEAgSW1hZ2VEYXRh
OjpJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICA6IG1fc2l6ZShzaXplKQogICAg
ICwgbV9kYXRhKFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKChzaXplLmFy
ZWEoKSAqIDQpLnVuc2FmZUdldCgpKSkKIHsKLSAgICBBU1NFUlQobV9kYXRhKTsKIH0KIAogSW1h
Z2VEYXRhOjpJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSwgUmVmPFVpbnQ4Q2xhbXBlZEFy
cmF5PiYmIGJ5dGVBcnJheSkKICAgICA6IG1fc2l6ZShzaXplKQogICAgICwgbV9kYXRhKFdURk1v
dmUoYnl0ZUFycmF5KSkKIHsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTighbV9kYXRhIHx8IChzaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdl
dCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oKHNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkgPD0gbV9kYXRhLT5s
ZW5ndGgoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCmluZGV4IDk4YjFmMTA4Zjk2
ZjFlYmFmODdjMGFkZjQ3ODdmNjViZTRkNmNhNzYuLmEwZmZhMjk4NzE4YmYyNzdlOGExNmI2MTNl
NTc1OGE3ODcyYzIyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaApAQCAtMzQsMjUgKzM0LDI1
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSW1hZ2VE
YXRhIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VEYXRhPiB7CitjbGFzcyBJbWFnZURhdGEgOiBw
dWJsaWMgUmVmQ291bnRlZDxJbWFnZURhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gpOwot
ICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYpOwotICAg
IHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIFJlZjxVaW50
OENsYW1wZWRBcnJheT4mJik7Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURh
dGE+PiBjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmLCB1bnNpZ25lZCBzdywgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gc2gpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRp
b25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlKHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZShjb25zdCBJ
bnRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNy
ZWF0ZShjb25zdCBJbnRTaXplJiwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IGNyZWF0ZShS
ZWY8VWludDhDbGFtcGVkQXJyYXk+JiYsIHVuc2lnbmVkIHN3LCBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBzaCk7CiAKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0K
ICAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NpemUud2lkdGgoKTsgfQogICAgIGlu
dCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NpemUuaGVpZ2h0KCk7IH0KIAotICAgIFVpbnQ4
Q2xhbXBlZEFycmF5KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAg
VWludDhDbGFtcGVkQXJyYXkqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEucHRyKCk7IH0K
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYpOwogICAg
IEltYWdlRGF0YShjb25zdCBJbnRTaXplJiwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmKTsKIAog
ICAgIEludFNpemUgbV9zaXplOwotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gbV9kYXRh
OworICAgIFJlZjxVaW50OENsYW1wZWRBcnJheT4gbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA3YzA0NTU1MDhkNTQ0YmE1OGZlNGU3NDNlYTViMmZj
MmEwNTMyOTMyLi4wNzY2ODM1MDdlODkyZDkzOWUwMzM1MzVmZWJkMDhkYWM3MGYwYjdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250
ZXh0LmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIGNvbnN0IEFycmF5QnVmZmVyVmlldyYKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gc2xpY2UgPSBVaW50OEFycmF5OjpjcmVhdGUo
ZGF0YS5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBkYXRhLmJ5dGVPZmZzZXQoKSArIGNoZWNrZWRC
eXRlU3JjT2Zmc2V0LnVuc2FmZUdldCgpLCBjaGVja2VkQnl0ZUxlbmd0aC51bnNhZmVHZXQoKSk7
CisgICAgYXV0byBzbGljZSA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShkYXRhLnBvc3NpYmx5U2hh
cmVkQnVmZmVyKCksIGRhdGEuYnl0ZU9mZnNldCgpICsgY2hlY2tlZEJ5dGVTcmNPZmZzZXQudW5z
YWZlR2V0KCksIGNoZWNrZWRCeXRlTGVuZ3RoLnVuc2FmZUdldCgpKTsKICAgICBpZiAoIXNsaWNl
KSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpPVVRfT0Zf
TUVNT1JZLCAiYnVmZmVyRGF0YSIsICJDb3VsZCBub3QgY3JlYXRlIGludGVybWVkaWF0ZSBBcnJh
eUJ1ZmZlclZpZXciKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxv
bmcgbG9uZyBvZmZzZXQsIGNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHNs
aWNlID0gVWludDhBcnJheTo6Y3JlYXRlKGRhdGEucG9zc2libHlTaGFyZWRCdWZmZXIoKSwgZGF0
YS5ieXRlT2Zmc2V0KCkgKyBjaGVja2VkQnl0ZVNyY09mZnNldC51bnNhZmVHZXQoKSwgY2hlY2tl
ZEJ5dGVMZW5ndGgudW5zYWZlR2V0KCkpOworICAgIGF1dG8gc2xpY2UgPSBVaW50OEFycmF5Ojp0
cnlDcmVhdGUoZGF0YS5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBkYXRhLmJ5dGVPZmZzZXQoKSAr
IGNoZWNrZWRCeXRlU3JjT2Zmc2V0LnVuc2FmZUdldCgpLCBjaGVja2VkQnl0ZUxlbmd0aC51bnNh
ZmVHZXQoKSk7CiAgICAgaWYgKCFzbGljZSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6T1VUX09GX01FTU9SWSwgImJ1ZmZlclN1YkRhdGEiLCAiQ291bGQg
bm90IGNyZWF0ZSBpbnRlcm1lZGlhdGUgQXJyYXlCdWZmZXJWaWV3Iik7CiAgICAgICAgIHJldHVy
bjsKQEAgLTQxMiw3ICs0MTIsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRJbnRlcm5hbGZvcm1hdFBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDMwogICAgICAgICBw
YXJhbXNbaV0gPSBzYW1wbGVzW2ldOwogI2VuZGlmCiAKLSAgICByZXR1cm4gSW50MzJBcnJheTo6
Y3JlYXRlKHBhcmFtcywgbnVtVmFsdWVzKTsKKyAgICByZXR1cm4gSW50MzJBcnJheTo6dHJ5Q3Jl
YXRlKHBhcmFtcywgbnVtVmFsdWVzKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0MzRGVudW0sIGNvbnN0IFZlY3RvcjxHQzNEZW51bT4m
KQpAQCAtMTc5NCw3ICsxNzk0LDcgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkNPTE9SX1dSSVRFTUFTSzoKICAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5BcnJheVBhcmFtZXRl
cihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09NUFJFU1NFRF9URVhUVVJF
X0ZPUk1BVFM6Ci0gICAgICAgIHJldHVybiBVaW50MzJBcnJheTo6Y3JlYXRlKG1fY29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXRzLmRhdGEoKSwgbV9jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMuc2l6ZSgp
KTsKKyAgICAgICAgcmV0dXJuIFVpbnQzMkFycmF5Ojp0cnlDcmVhdGUobV9jb21wcmVzc2VkVGV4
dHVyZUZvcm1hdHMuZGF0YSgpLCBtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5zaXplKCkpOwog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNVTExfRkFDRToKICAgICAgICAgcmV0dXJuIGdl
dEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNV
TExfRkFDRV9NT0RFOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNjIwYmRiMzBhMWI2MjkwNWMxMDI4YWMxYzMyZWRh
OGVjZGE2NjBhOC4uYWY3YTc3ZmRjMzg2MzYwYTUzY2I3YTU1YTQ4NDg0ZGJmYjU1ODRmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCkBAIC00NDQsNyArNDQ0LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRQYXJhbWV0ZXIoR0MzRGVudW0gcG5hbWUpCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6Q09MT1JfV1JJVEVNQVNLOgogICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhbkFycmF5UGFyYW1l
dGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT01QUkVTU0VEX1RFWFRV
UkVfRk9STUFUUzoKLSAgICAgICAgcmV0dXJuIFVpbnQzMkFycmF5OjpjcmVhdGUobV9jb21wcmVz
c2VkVGV4dHVyZUZvcm1hdHMuZGF0YSgpLCBtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5zaXpl
KCkpOworICAgICAgICByZXR1cm4gVWludDMyQXJyYXk6OnRyeUNyZWF0ZShtX2NvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0cy5kYXRhKCksIG1fY29tcHJlc3NlZFRleHR1cmVGb3JtYXRzLnNpemUoKSk7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q1VMTF9GQUNFOgogICAgICAgICByZXR1cm4g
Z2V0Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
Q1VMTF9GQUNFX01PREU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDg1NzRmY2ViZjk5MzMyZjIzNTEz
ZGIwYTdjMmQzZWEwYmVjODVjNjkuLmYxOGE4ZmJkMDkwZmI5NTRjOGRmZGM1OTI3NDc4MWZjYjNi
ZTllMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0yOTIyLDcgKzI5MjIsNyBAQCBXZWJHTEFueSBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3Jh
bSwgY29uc3QgV2ViRwogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtZnYob2JqZWN0
T3JaZXJvKHByb2dyYW0pLCBsb2NhdGlvbiwgdmFsdWUpOwogICAgICAgICBpZiAobGVuZ3RoID09
IDEpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWVbMF07Ci0gICAgICAgIHJldHVybiBGbG9hdDMy
QXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJh
eTo6dHJ5Q3JlYXRlKHZhbHVlLCBsZW5ndGgpOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlQ6IHsKICAgICAgICAgR0MzRGludCB2YWx1ZVs0XSA9IHswfTsKQEAgLTI5MzIs
NyArMjkzMiw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZv
cm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBjb25zdCBXZWJHCiAgICAgICAgICAgICBtX2NvbnRl
eHQtPmdldFVuaWZvcm1pdihvYmplY3RPclplcm8ocHJvZ3JhbSksIGxvY2F0aW9uLCB2YWx1ZSk7
CiAgICAgICAgIGlmIChsZW5ndGggPT0gMSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZVswXTsK
LSAgICAgICAgcmV0dXJuIEludDMyQXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKKyAgICAg
ICAgcmV0dXJuIEludDMyQXJyYXk6OnRyeUNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKICAgICB9CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTDogewogICAgICAgICBHQzNEaW50IHZhbHVl
WzRdID0gezB9OwpAQCAtMzAyOCw3ICszMDI4LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VmVydGV4QXR0cmliKEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmEK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfQVRUUklCX0FSUkFZX1RZUEU6CiAg
ICAgICAgIHJldHVybiBzdGF0ZS50eXBlOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNV
UlJFTlRfVkVSVEVYX0FUVFJJQjoKLSAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJheTo6Y3JlYXRl
KG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnZhbHVlLCA0KTsKKyAgICAgICAgcmV0dXJuIEZs
b2F0MzJBcnJheTo6dHJ5Q3JlYXRlKG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnZhbHVlLCA0
KTsKICAgICBkZWZhdWx0OgogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9FTlVNLCAiZ2V0VmVydGV4QXR0cmliIiwgImludmFsaWQgcGFyYW1ldGVy
IG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MjM1LDcgKzUyMzUsNyBAQCBS
ZWZQdHI8RmxvYXQzMkFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRXZWJHTEZs
b2F0QXJyYXlQYXJhbWV0ZXIoR0MzRAogICAgIGRlZmF1bHQ6CiAgICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAgICAgfQotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVu
Z3RoKTsKKyAgICByZXR1cm4gRmxvYXQzMkFycmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7
CiB9CiAKIFJlZlB0cjxJbnQzMkFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRX
ZWJHTEludEFycmF5UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQpAQCAtNTI1NCw3ICs1MjU0LDcg
QEAgUmVmUHRyPEludDMyQXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFdlYkdM
SW50QXJyYXlQYXJhbWV0ZXIoR0MzRGVudW0KICAgICBkZWZhdWx0OgogICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgIH0KLSAgICByZXR1cm4gSW50MzJBcnJheTo6Y3JlYXRlKHZhbHVlLCBs
ZW5ndGgpOworICAgIHJldHVybiBJbnQzMkFycmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7
CiB9CiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y2hlY2tUZXh0dXJlQ29tcGxl
dGVuZXNzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgYm9vbCBwcmVwYXJlVG9EcmF3KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNw
cAppbmRleCA1OTE1YTc3MzE2ZWQ4YTAzMGE0ZTZkM2FkNzQxMDRjMTc4Y2FkOWQyLi5iMzQwNDYz
YTM5YjM5NzNkZGI4MjNjMDBhMGMxNzNlNTUxZmM4ZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtMTAxNCw3ICsx
MDE0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmV4dHJhY3RLZXlV
UklLZXlJREFuZENlcnRpZmljYXRlRnJvbUluaXREYXQKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGluaXREYXRhQnVmZmVyID0gaW5pdERhdGEtPnVuc2hhcmVkQnVmZmVyKCk7CiAKICAgICAvLyBV
c2UgYSBEYXRhVmlldyB0byByZWFkIHVpbnQzMiB2YWx1ZXMgZnJvbSB0aGUgYnVmZmVyLCBhcyBV
aW50MzJBcnJheSByZXF1aXJlcyB0aGUgcmVhZHMgYmUgYWxpZ25lZCBvbiA0LWJ5dGUgYm91bmRh
cmllcy4gCi0gICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRhVmlldyA9IEpTQzo6RGF0
YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGluaXREYXRhQnVmZmVy
LT5ieXRlTGVuZ3RoKCkpOworICAgIGF1dG8gaW5pdERhdGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6
Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVM
ZW5ndGgoKSk7CiAgICAgdWludDMyX3Qgb2Zmc2V0ID0gMDsKICAgICBib29sIHN0YXR1cyA9IHRy
dWU7CiAKQEAgLTEwMjMsNyArMTAyMyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAg
aWYgKCFzdGF0dXMgfHwgb2Zmc2V0ICsga2V5VVJJTGVuZ3RoID4gaW5pdERhdGEtPmxlbmd0aCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWZQdHI8VWludDE2QXJyYXk+IGtleVVS
SUFycmF5ID0gVWludDE2QXJyYXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIG9m
ZnNldCwga2V5VVJJTGVuZ3RoKTsKKyAgICBhdXRvIGtleVVSSUFycmF5ID0gVWludDE2QXJyYXk6
OnRyeUNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIG9mZnNldCwga2V5VVJJTGVuZ3Ro
KTsKICAgICBpZiAoIWtleVVSSUFycmF5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEw
MzUsNyArMTAzNSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRy
YWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAgaWYgKCFzdGF0dXMg
fHwgb2Zmc2V0ICsga2V5SURMZW5ndGggPiBpbml0RGF0YS0+bGVuZ3RoKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxVaW50OEFycmF5PiBrZXlJREFycmF5ID0gVWludDhB
cnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgb2Zmc2V0LCBrZXlJRExlbmd0
aCk7CisgICAgYXV0byBrZXlJREFycmF5ID0gVWludDhBcnJheTo6dHJ5Q3JlYXRlKGluaXREYXRh
QnVmZmVyLmNvcHlSZWYoKSwgb2Zmc2V0LCBrZXlJRExlbmd0aCk7CiAgICAgaWYgKCFrZXlJREFy
cmF5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0
aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAgaWYgKCFzdGF0dXMgfHwgb2Zmc2V0ICsgY2VydGlmaWNh
dGVMZW5ndGggPiBpbml0RGF0YS0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGNlcnRpZmljYXRlID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZm
ZXIpLCBvZmZzZXQsIGNlcnRpZmljYXRlTGVuZ3RoKTsKKyAgICBjZXJ0aWZpY2F0ZSA9IFVpbnQ4
QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwgb2Zmc2V0LCBjZXJ0aWZp
Y2F0ZUxlbmd0aCk7CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Yu
Y3BwCmluZGV4IDMyMzJiNzM1YTMzMWFhZWRhZTRkMTcyMDg2NWIxODQwMjBhNmNjNDUuLjcwOWMw
ODBkNGZmYjAyMTNjOGRiNmZkZDRjOGJmNzhhN2UxMjU2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC05OSw3ICs5OSw3IEBA
IFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5
UmVxdWVzdChjb25zdCBTdHJpbmcmLCBVCiAgICAgZGVzdGluYXRpb25VUkwgPSBTdHJpbmcoKTsK
IAogICAgIGF1dG8ga2V5UmVxdWVzdEJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoQ0ZEYXRh
R2V0Qnl0ZVB0cihrZXlSZXF1ZXN0LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGtleVJlcXVlc3Qu
Z2V0KCkpKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoa2V5UmVxdWVz
dEJ1ZmZlciksIDAsIGtleVJlcXVlc3RCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgcmV0dXJu
IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGtleVJlcXVlc3RCdWZmZXIpLCAwLCBrZXlS
ZXF1ZXN0QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CmluZGV4IGU4MjQ0OWE1MGZjYzhlOWI4MTdmYzc3ZTJhYTNhMDE5NWY2YTEyMjYuLmE5MjYwMmZk
NjljZDM3ZjE4OWFkMzRjYmNjMWE0YzJkZWU3NDQ1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAt
MTg5MywxMiArMTg5MywxMiBAQCBib29sIEFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5n
T2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UgogICAgICAgICBSZWZQ
dHI8SlNDOjpEYXRhVmlldz4gaW5pdERhdGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGlu
aXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7
CiAgICAgICAgIGluaXREYXRhVmlldy0+c2V0PHVpbnQzMl90PigwLCBrZXlVUklTaXplLCB0cnVl
KTsKIAotICAgICAgICBSZWZQdHI8VWludDE2QXJyYXk+IGtleVVSSUFycmF5ID0gVWludDE2QXJy
YXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDQsIGtleVVSSS5sZW5ndGgoKSk7
CisgICAgICAgIGF1dG8ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRh
QnVmZmVyLmNvcHlSZWYoKSwgNCwga2V5VVJJLmxlbmd0aCgpKTsKICAgICAgICAga2V5VVJJQXJy
YXktPnNldFJhbmdlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihTdHJpbmdWaWV3
KGtleVVSSSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0KCkpLCBrZXlVUkkubGVuZ3RoKCkg
LyBzaXplb2YodW5zaWduZWQgY2hhciksIDApOwogCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5n
dGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwotICAgICAgICBSZWZQdHI8VWludDhB
cnJheT4gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShpbml0RGF0YUJ1ZmZl
ciksIDAsIGJ5dGVMZW5ndGgpOwotICAgICAgICBpZiAoIW1fb3duZXItPnBsYXllcigpLT5rZXlO
ZWVkZWQoaW5pdERhdGEuZ2V0KCkpKQorICAgICAgICBhdXRvIGluaXREYXRhID0gVWludDhBcnJh
eTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKKyAgICAg
ICAgaWYgKCFtX293bmVyLT5wbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBzZXRSZXF1ZXN0Rm9yS2V5KGtleVVS
SSwgYXZSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXggNWVkYWM0NjNjZGQyOWZlY2I4MDkyZjQ5
MTM3ZjhmMmM2MjZlMDMyYy4uZThkZDNiNWFlYzgyOTNjZDVlZDk2ZTk4ZjEwMzVlZTUzZTI4Yzdi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24ubW0KQEAgLTE2NSwxMCArMTY1LDEwIEBAIFJlZlB0cjxVaW50OEFycmF5
PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluCiAKICAgICBpZiAoIW1fY2VydGlmaWNhdGUpIHsKICAgICAgICAgU3RyaW5nIGNlcnRp
ZmljYXRlU3RyaW5nKCJjZXJ0aWZpY2F0ZSJfcyk7Ci0gICAgICAgIFJlZlB0cjxVaW50OEFycmF5
PiBhcnJheSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShjZXJ0aWZpY2F0ZVN0cmluZy5sZW5ndGgoKSk7
CisgICAgICAgIGF1dG8gYXJyYXkgPSBVaW50OEFycmF5OjpjcmVhdGUoY2VydGlmaWNhdGVTdHJp
bmcubGVuZ3RoKCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBsZW5ndGggPSBjZXJ0
aWZpY2F0ZVN0cmluZy5sZW5ndGgoKTsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgICAgICAgYXJy
YXktPnNldChpLCBjZXJ0aWZpY2F0ZVN0cmluZ1tpXSk7Ci0gICAgICAgIHJldHVybiBhcnJheTsK
KyAgICAgICAgcmV0dXJuIFdURk1vdmUoYXJyYXkpOwogICAgIH0KIAogICAgIGlmICghbV9rZXlS
ZXF1ZXN0KSB7CkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZDb250ZW50S2V5
U2Vzc2lvbjo6cmVsZWFzZUtleXMoKQogICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbklkID09IFN0
cmluZyhwbGF5YmFja1Nlc3Npb25JZFZhbHVlKSkgewogICAgICAgICAgICAgICAgIExPRyhNZWRp
YSwgIkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpyZWxlYXNlS2V5cyglcCkgLSBmb3Vu
ZCBzZXNzaW9uLCBzZW5kaW5nIGV4cGlyYXRpb24gbWVzc2FnZSIpOwogICAgICAgICAgICAgICAg
IG1fZXhwaXJlZFNlc3Npb24gPSBleHBpcmVkU2Vzc2lvbkRhdGE7Ci0gICAgICAgICAgICAgICAg
bV9jbGllbnQtPnNlbmRNZXNzYWdlKFVpbnQ4QXJyYXk6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oW21fZXhwaXJlZFNlc3Npb24gYnl0ZXNdKSwgW21fZXhwaXJlZFNlc3Npb24g
bGVuZ3RoXSkuZ2V0KCksIGVtcHR5U3RyaW5nKCkpOworICAgICAgICAgICAgICAgIG1fY2xpZW50
LT5zZW5kTWVzc2FnZShVaW50OEFycmF5OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KFttX2V4cGlyZWRTZXNzaW9uIGJ5dGVzXSksIFttX2V4cGlyZWRTZXNzaW9uIGxlbmd0aF0p
LnB0cigpLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpAQCAtMzAwLDcgKzMwMCw3IEBAIGJvb2wgQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5
PiYKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIG5leHRN
ZXNzYWdlID0gVWludDhBcnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihb
cmVxdWVzdERhdGEgYnl0ZXNdKSwgW3JlcXVlc3REYXRhIGxlbmd0aF0pOworICAgICAgICBuZXh0
TWVzc2FnZSA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oW3JlcXVlc3REYXRhIGJ5dGVzXSksIFtyZXF1ZXN0RGF0YSBsZW5ndGhdKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMzUwLDcgKzM1MCw3IEBAIFJlZlB0cjxVaW50OEFy
cmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVz
c2FnZSh1bnNpCiAgICAgZXJyb3JDb2RlID0gMDsKICAgICBzeXN0ZW1Db2RlID0gMDsKICAgICBt
X2V4cGlyZWRTZXNzaW9uID0gW2V4cGlyZWRTZXNzaW9ucyBmaXJzdE9iamVjdF07Ci0gICAgcmV0
dXJuIFVpbnQ4QXJyYXk6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW21fZXhw
aXJlZFNlc3Npb24gYnl0ZXNdKSwgW21fZXhwaXJlZFNlc3Npb24gbGVuZ3RoXSk7CisgICAgcmV0
dXJuIFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW21f
ZXhwaXJlZFNlc3Npb24gYnl0ZXNdKSwgW21fZXhwaXJlZFNlc3Npb24gbGVuZ3RoXSk7CiB9CiAK
IHZvaWQgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmRpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICprZXlSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA4MmY0
Y2RjMDcwZjUzYWQwN2U2YjliNWYyYzgzNDRmODgyNjNiMmFhLi5jYTE5YmFlMDhmZWM1ZmNjYmE1
N2U0OWFhMGY0ZWFmODcxM2U1Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtOTksOSArOTksOSBAQCBSZWZQdHI8
VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmVxdWVz
dChjb25zdCBTdHJpbmcmCiAgICAgc3lzdGVtQ29kZSA9IDA7CiAgICAgZGVzdGluYXRpb25VUkwg
PSBTdHJpbmcoKTsKIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2V5UmVxdWVzdEJ1ZmZlciA9
IEFycmF5QnVmZmVyOjpjcmVhdGUoW2tleVJlcXVlc3QuZ2V0KCkgYnl0ZXNdLCBba2V5UmVxdWVz
dC5nZXQoKSBsZW5ndGhdKTsKKyAgICBhdXRvIGtleVJlcXVlc3RCdWZmZXIgPSBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKFtrZXlSZXF1ZXN0LmdldCgpIGJ5dGVzXSwgW2tleVJlcXVlc3QuZ2V0KCkgbGVu
Z3RoXSk7CiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGtleVJlcXVlc3RCdWZmZXItPmJ5dGVM
ZW5ndGgoKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoa2V5UmVxdWVz
dEJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOworICAgIHJldHVybiBVaW50OEFycmF5Ojp0cnlDcmVh
dGUoV1RGTW92ZShrZXlSZXF1ZXN0QnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7CiB9CiAKIHZvaWQg
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OnJlbGVhc2VLZXlzKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVlN0cmVhbVNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCmluZGV4IDdiMjAy
ODEyMTA3MmRiNTcxMTdlYTYxMGUzM2FjMzQ0ZjEyZTExNDguLmUwMGY5NGRiNzc3MDY4YjM5ZDE1
NTg1MDg2ZDFkOTMwZWU5ZWVhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQpAQCAtMTIyLDEwICsxMjIsMTAgQEAgUmVmUHRy
PFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVz
dChjb25zdCBTdHJpbmcmIG0KICAgICB9CiAKICAgICBTdHJpbmcgY2VydGlmaWNhdGVTdHJpbmco
ImNlcnRpZmljYXRlIl9zKTsKLSAgICBSZWZQdHI8VWludDhBcnJheT4gYXJyYXkgPSBVaW50OEFy
cmF5OjpjcmVhdGUoY2VydGlmaWNhdGVTdHJpbmcubGVuZ3RoKCkpOworICAgIGF1dG8gYXJyYXkg
PSBVaW50OEFycmF5OjpjcmVhdGUoY2VydGlmaWNhdGVTdHJpbmcubGVuZ3RoKCkpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDAsIGxlbmd0aCA9IGNlcnRpZmljYXRlU3RyaW5nLmxlbmd0aCgpOyBp
IDwgbGVuZ3RoOyArK2kpCiAgICAgICAgIGFycmF5LT5zZXQoaSwgY2VydGlmaWNhdGVTdHJpbmdb
aV0pOwotICAgIHJldHVybiBhcnJheTsKKyAgICByZXR1cm4gV1RGTW92ZShhcnJheSk7CiB9CiAK
IHZvaWQgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMoKQpAQCAtMTU2LDcg
KzE1Niw3IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMoKQog
ICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbklkID09IFN0cmluZyhwbGF5YmFja1Nlc3Npb25JZFZh
bHVlKSkgewogICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVlN0cmVhbVNl
c3Npb246OnJlbGVhc2VLZXlzKCVwKSAtIGZvdW5kIHNlc3Npb24sIHNlbmRpbmcgZXhwaXJhdGlv
biBtZXNzYWdlIik7CiAgICAgICAgICAgICAgICAgbV9leHBpcmVkU2Vzc2lvbiA9IGV4cGlyZWRT
ZXNzaW9uRGF0YTsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UoVWludDhB
cnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbbV9leHBpcmVkU2Vzc2lv
biBieXRlc10pLCBbbV9leHBpcmVkU2Vzc2lvbiBsZW5ndGhdKS5nZXQoKSwgZW1wdHlTdHJpbmco
KSk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNlbmRNZXNzYWdlKFVpbnQ4QXJyYXk6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW21fZXhwaXJlZFNlc3Npb24gYnl0ZXNd
KSwgW21fZXhwaXJlZFNlc3Npb24gbGVuZ3RoXSkucHRyKCksIGVtcHR5U3RyaW5nKCkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zMzUsNyAr
MzM1LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246Omdl
bmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5zaWduZWQKICAgICBlcnJvckNvZGUgPSAwOwogICAg
IHN5c3RlbUNvZGUgPSAwOwogICAgIG1fZXhwaXJlZFNlc3Npb24gPSBbZXhwaXJlZFNlc3Npb25z
IGZpcnN0T2JqZWN0XTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihbbV9leHBpcmVkU2Vzc2lvbiBieXRlc10pLCBbbV9leHBpcmVkU2Vz
c2lvbiBsZW5ndGhdKTsKKyAgICByZXR1cm4gVWludDhBcnJheTo6dHJ5Q3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihbbV9leHBpcmVkU2Vzc2lvbiBieXRlc10pLCBbbV9leHBpcmVk
U2Vzc2lvbiBsZW5ndGhdKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZDQ0
YTA4N2E0Mjk5YWI2NTg1NmI4MjQ1NmE2MDlhYmIzMDhkNWMxYy4uZTVhYWIwOWEzZTNhZGVkZDQ0
ZDIyOTFmMGFlYTgxNzYwYWNjNTZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xNzY0
LDE2ICsxNzY0LDE2IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgIC8vIENyZWF0
ZSBhbiBpbml0RGF0YSB3aXRoIHRoZSBmb2xsb3dpbmcgbGF5b3V0OgogICAgICAgICAvLyBbNCBi
eXRlczoga2V5VVJJIHNpemVdLCBba2V5VVJJIHNpemUgYnl0ZXM6IGtleVVSSV0KICAgICAgICAg
dW5zaWduZWQga2V5VVJJU2l6ZSA9IGtleVVSSS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcik7Ci0g
ICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gaW5pdERhdGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAxKTsKKyAgICAgICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9
IEFycmF5QnVmZmVyOjpjcmVhdGUoNCArIGtleVVSSVNpemUsIDEpOwogICAgICAgICB1bnNpZ25l
ZCBieXRlTGVuZ3RoID0gaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKTsKLSAgICAgICAgUmVm
UHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShp
bml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGJ5dGVMZW5ndGgpOworICAgICAgICBhdXRvIGlu
aXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVm
KCksIDAsIGJ5dGVMZW5ndGgpOwogICAgICAgICBpbml0RGF0YVZpZXctPnNldDx1aW50MzJfdD4o
MCwga2V5VVJJU2l6ZSwgdHJ1ZSk7CiAKLSAgICAgICAgUmVmUHRyPFVpbnQxNkFycmF5PiBrZXlV
UklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCA0
LCBrZXlVUkkubGVuZ3RoKCkpOworICAgICAgICBhdXRvIGtleVVSSUFycmF5ID0gVWludDE2QXJy
YXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDQsIGtleVVSSS5sZW5ndGgoKSk7
CiAgICAgICAgIGtleVVSSUFycmF5LT5zZXRSYW5nZShTdHJpbmdWaWV3KGtleVVSSSkudXBjb252
ZXJ0ZWRDaGFyYWN0ZXJzKCksIGtleVVSSS5sZW5ndGgoKSAvIHNpemVvZih1bnNpZ25lZCBjaGFy
KSwgMCk7CiAKLSAgICAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGluaXREYXRhID0gVWludDhBcnJh
eTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKLSAgICAg
ICAgaWYgKCFwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLmdldCgpKSkKKyAgICAgICAgYXV0
byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwg
MCwgYnl0ZUxlbmd0aCk7CisgICAgICAgIGlmICghcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0
YS5wdHIoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICAgICAgICAgbV9r
ZXlVUklUb1JlcXVlc3RNYXAuc2V0KGtleVVSSSwgYXZSZXF1ZXN0KTsKQEAgLTE4MDMsNyArMTgw
Myw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2Fp
dEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEu
Z2V0KCkpKQorICAgICAgICBpZiAoIXBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIG1fa2V5VVJJVG9SZXF1ZXN0
TWFwLnNldChrZXlJRCwgYXZSZXF1ZXN0KTsKQEAgLTE4MTIsNyArMTgxMiw3IEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJl
c291cmNlKEFWQXNzZXRSCiAjZW5kaWYKICNlbmRpZgogCi0gICAgUmVmUHRyPFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6
OmNyZWF0ZSh0aGlzLCBhdlJlcXVlc3QpOworICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSh0aGlzLCBhdlJlcXVlc3QpOwogICAgIG1fcmVz
b3VyY2VMb2FkZXJNYXAuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0LCByZXNvdXJj
ZUxvYWRlcik7CiAgICAgcmVzb3VyY2VMb2FkZXItPnN0YXJ0TG9hZGluZygpOwogICAgIHJldHVy
biB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCmlu
ZGV4IDE4OThkY2I0ODA3ZGMzZDRkZWNiNGMwM2RlYmU0ZWRmODY3MTJiOWYuLmMzYmNhNjEwOTA1
NTRmODI4Yjg0ODM5YWQ0MDU0OWE2MjdiZmU3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVNhbXBsZUFWRk9iakMubW0KQEAgLTI5NCw3ICsyOTQsNyBAQCBSZWZQdHI8SlNDOjpV
aW50OENsYW1wZWRBcnJheT4gTWVkaWFTYW1wbGVBVkZPYmpDOjpnZXRSR0JBSW1hZ2VEYXRhKCkg
Y29uc3QKIAogICAgIHZvaWQqIGRhdGEgPSBDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3NPZlBs
YW5lKHJnYmFQaXhlbEJ1ZmZlci5nZXQoKSwgMCk7CiAgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBD
VlBpeGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKSAqIENWUGl4ZWxCdWZmZXJHZXRXaWR0
aChwaXhlbEJ1ZmZlcikgKiA0OwotICAgIGF1dG8gcmVzdWx0ID0gSlNDOjpVaW50OENsYW1wZWRB
cnJheTo6Y3JlYXRlKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZShkYXRhLCBieXRlTGVuZ3RoKSwg
MCwgYnl0ZUxlbmd0aCk7CisgICAgYXV0byByZXN1bHQgPSBKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5
Ojp0cnlDcmVhdGUoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ5dGVMZW5ndGgpLCAw
LCBieXRlTGVuZ3RoKTsKIAogICAgIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRk
cmVzcyhyZ2JhUGl4ZWxCdWZmZXIuZ2V0KCksIGtDVlBpeGVsQnVmZmVyTG9ja19SZWFkT25seSk7
CiAgICAgQVNTRVJUKHN0YXR1cyA9PSBub0Vycik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGNkMzU0NzU5ZWU0NGUy
ZjIxYjYzYmZjMjQyOWIwMzJhYjVkM2FkMzYuLjQ1ZTAzOGIzODI4YjgzOGZkN2RkYzYzYTljYzc3
ZGYzZGJhMTA5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC02NTAsNyArNjUwLDcgQEAgdm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRp
b25EYXRhRm8KICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBMT0coTWVk
aWFTb3VyY2UsICJTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRL
ZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCglcCkgLSB0cmFjazolZCIsIHRo
aXMsIHRyYWNrSUQpOwogICAgIG1fcHJvdGVjdGVkVHJhY2tJRCA9IHRyYWNrSUQ7Ci0gICAgUmVm
UHRyPFVpbnQ4QXJyYXk+IGluaXREYXRhQXJyYXkgPSBVaW50OEFycmF5OjpjcmVhdGUoW2luaXRE
YXRhIGxlbmd0aF0pOworICAgIGF1dG8gaW5pdERhdGFBcnJheSA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShbaW5pdERhdGEgbGVuZ3RoXSk7CiAgICAgW2luaXREYXRhIGdldEJ5dGVzOmluaXREYXRhQXJy
YXktPmRhdGEoKSBsZW5ndGg6aW5pdERhdGFBcnJheS0+bGVuZ3RoKCldOwogICAgIG1fbWVkaWFT
b3VyY2UtPnNvdXJjZUJ1ZmZlcktleU5lZWRlZCh0aGlzLCBpbml0RGF0YUFycmF5LmdldCgpKTsK
ICAgICBpZiAoYXV0byBzZXNzaW9uID0gbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPmNkbVNlc3Np
b24oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCA0NTZhZjc4NmQwOTI1OTAxN2M0MzE3
NWQyZDY0MDg3MTc2MmU4YTRlLi5jY2JiZTFmMTU2ZTBmOWUzYTBmMDMxZGE3Y2NlNDI4YTZmZWU5
NGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtNDEyLDcgKzQxMiw3IEBAIFJlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IEludFJlY3QmIGxvZ2ljCiAgICAgaWYgKGFyZWEuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoYXJlYS51bnNhZmVHZXQoKSk7CisgICAgYXV0byByZXN1bHQgPSBV
aW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChhcmVhLnVuc2FmZUdldCgp
KTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNH
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0
YUNHLmNwcAppbmRleCBkNDJhYTM0NDhiMGJjMzdkZTZlNWYwODk2MzZkMTc5N2Q1NGZhMzc2Li44
NDc5ZDVkM2EyM2EwN2U4OWRmY2I4YmIyMDUyMGZhOTAzZWI3Mjk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cu
Y3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1
ZmZlckRhdGE6OmdldERhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXQKICAgICBpZiAo
YXJlYS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0
byByZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChhcmVhLnVu
c2FmZUdldCgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKGFyZWEudW5zYWZlR2V0KCkpOwogICAgIHVpbnQ4X3QqIHJlc3VsdERh
dGEgPSByZXN1bHQgPyByZXN1bHQtPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFyZXN1bHRE
YXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKaW5kZXgg
OWE3OTk4ZDEzOTU5MzA5Mzc4NDc0MjYxODc2NjJhNzgxMDU2MDFmMi4uMTE4MDIzMTFlOWFlYzFj
OWI1ZjJkMDdhZmEyOWQ0NzEzMDYyYjY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKQEAgLTUz
MSw3ICs1MzEsNyBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogCiAgICAgSW50U2l6ZSBwYWludFNpemUgPSBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKTsK
ICAgICBwYWludFNpemUuc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7Ci0gICAgYXV0byB0
bXBJbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgocGFp
bnRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIHRtcEltYWdlRGF0YSA9
IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKChwYWludFNpemUuYXJl
YSgpICogNCkudW5zYWZlR2V0KCkpOwogICAgIGlmICghdG1wSW1hZ2VEYXRhKQogICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCA2NmMzMGE5OGMyOGFlZDJmY2ZmNTE5NjAy
ZDJjNDcxMzlmNzZhZWE4Li42ZTk4NmQ0ZWMyYTk3OTI5NjYzODRmYzU1MDc0YTJmOTcyYjU5MGZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnVubXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0
JiByZWN0KQogICAgIEludFNpemUgc2NhbGVkU2l6ZShyZWN0LnNpemUoKSk7CiAgICAgQVNTRVJU
KCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2NhbGVkU2l6ZSkpOwogICAgIHNjYWxl
ZFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgYXV0byBpbWFnZURhdGEg
PSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgoc2NhbGVkU2l6ZS5hcmVh
KCkgKiA0KS51bnNhZmVHZXQoKSk7CisgICAgYXV0byBpbWFnZURhdGEgPSBVaW50OENsYW1wZWRB
cnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCgoc2NhbGVkU2l6ZS5hcmVhKCkgKiA0KS51bnNh
ZmVHZXQoKSk7CiAgICAgaWYgKCFpbWFnZURhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CkBAIC0zMDMsNyArMzAzLDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZl
Y3Q6OnByZW11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBJbnRTaXpl
IHNjYWxlZFNpemUocmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVO
ZWVkc0NsYW1waW5nKHNjYWxlZFNpemUpKTsKICAgICBzY2FsZWRTaXplLnNjYWxlKG1fZmlsdGVy
LmZpbHRlclNjYWxlKCkpOwotICAgIGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoKHNjYWxlZFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkp
OworICAgIGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQoKHNjYWxlZFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAgIGlmICgh
aW1hZ2VEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjb3B5UHJlbXVsdGlwbGll
ZFJlc3VsdCgqaW1hZ2VEYXRhLCByZWN0KTsKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIEZpbHRl
ckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGlu
YXRpb24sIGNvbnN0CiAgICAgICAgICAgICBJbnRTaXplIGlucHV0U2l6ZShtX2Fic29sdXRlUGFp
bnRSZWN0LnNpemUoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVl
ZHNDbGFtcGluZyhpbnB1dFNpemUpKTsKICAgICAgICAgICAgIGlucHV0U2l6ZS5zY2FsZShtX2Zp
bHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1
bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgoaW5wdXRTaXplLmFy
ZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKKyAgICAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCgoaW5wdXRT
aXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKICAgICAgICAgICAgIGlmICghbV91bm11bHRp
cGxpZWRJbWFnZVJlc3VsdCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAK
QEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxpZWRS
ZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdAogICAgICAgICAgICAg
SW50U2l6ZSBpbnB1dFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgICAgICAg
ICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoaW5wdXRTaXplKSk7CiAg
ICAgICAgICAgICBpbnB1dFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAg
ICAgICAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojpj
cmVhdGVVbmluaXRpYWxpemVkKChpbnB1dFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwor
ICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJh
eTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCgoaW5wdXRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdl
dCgpKTsKICAgICAgICAgICAgIGlmICghbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCkBAIC01MTUsNyArNTE1LDcgQEAgVWlu
dDhDbGFtcGVkQXJyYXkqIEZpbHRlckVmZmVjdDo6Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1
bHQoKQogICAgIEludFNpemUgcmVzdWx0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7
CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcocmVzdWx0U2l6ZSkp
OwogICAgIHJlc3VsdFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgbV91
bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRp
YWxpemVkKChyZXN1bHRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKKyAgICBtX3VubXVs
dGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlh
bGl6ZWQoKHJlc3VsdFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAgIHJldHVybiBt
X3VubXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgpOwogfQogCkBAIC01MzEsNyArNTMxLDcgQEAg
VWludDhDbGFtcGVkQXJyYXkqIEZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdl
UmVzdWx0KCkKICAgICBJbnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXpl
KCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJlc3VsdFNp
emUpKTsKICAgICByZXN1bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAg
IG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQoKHJlc3VsdFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOworICAgIG1f
cHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWQoKHJlc3VsdFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAgIHJl
dHVybiBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVj
dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZl
ckRhdGFEaXJlY3QyRC5jcHAKaW5kZXggZjBlMjU4MDkyMDUzODU0Y2Q1MTU5NmM3ZTA3MTc1OWVm
N2NiZjVhOC4uMDI3NWY5ZGM5YmU5NjhmMDcwNjYzNGVjMmIzY2U4NWQwMjlkZTU1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0
YURpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKEFscGhhUHJlbXVsdGlwbGlj
YXRpb24sIGNvbnN0CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojpj
cmVhdGVVbmluaXRpYWxpemVkKG51bUJ5dGVzLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKG51bUJ5dGVzLnVu
c2FmZUdldCgpKTsKICAgICB1bnNpZ25lZCBjaGFyKiByZXN1bHREYXRhID0gcmVzdWx0ID8gcmVz
dWx0LT5kYXRhKCkgOiBudWxscHRyOwogICAgIGlmICghcmVzdWx0RGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Vy
aWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0KaW5kZXggZGMw
ZDQxYzAxZjBjODEzMzBjOGI1Y2UwYjFhZGRmOGE0ZDVlNTc5ZS4uZTk5N2IzNmE3YjRhNTBhMTYz
M2FiMGFlYWFmNmFhMWI3OGY1ZGI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1h
Yy5tbQpAQCAtMTkwLDcgKzE5MCw3IEBAIHN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aERpY3Rp
b25hcnlJbkNvbnRleHQoTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5LCBKU0NvbnRlCiAgICAgICAg
IGlmICghdmFsdWUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIG5hbWUg
PSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGtleSk7CisgICAgICAgIGF1dG8gbmFtZSA9IE9wYXF1
ZUpTU3RyaW5nOjp0cnlDcmVhdGUoa2V5KTsKICAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShb
Y29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCByZXN1bHRPYmplY3QsIG5hbWUuZ2V0KCksIFt2
YWx1ZSBKU1ZhbHVlUmVmXSwgMCwgJmV4Y2VwdGlvbik7CiAgICAgICAgIGlmIChleGNlcHRpb24p
CiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCmluZGV4IGQ0YWEyMDU0NjNlODhmZTc1MDc2
ZjJhODA3ZWY5MmQyMDNlOWJlOTEuLmU1NGJhMzc2ZGE2MTY2NDU3YzIzMjg5NzE4MTRjZmYzODVm
YTZlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3Vy
Y2UvTW9ja0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrQm94LmNwcApAQCAtNDksNyArNDksNyBAQCBNb2NrQm94OjpNb2NrQm94KEFycmF5
QnVmZmVyKiBkYXRhKQogU3RyaW5nIE1vY2tCb3g6OnBlZWtUeXBlKEFycmF5QnVmZmVyKiBkYXRh
KQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBSZWZQdHI8SW50OEFycmF5PiBh
cnJheSA9IEpTQzo6SW50OEFycmF5OjpjcmVhdGUoZGF0YSwgMCwgNCk7CisgICAgYXV0byBhcnJh
eSA9IEpTQzo6SW50OEFycmF5OjpjcmVhdGUoZGF0YSwgMCwgNCk7CiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCA0OyArK2kpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFycmF5LT5pdGVtKGkpKTsK
ICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpAQCAtNTcsNyArNTcsNyBAQCBTdHJpbmcg
TW9ja0JveDo6cGVla1R5cGUoQXJyYXlCdWZmZXIqIGRhdGEpCiAKIHNpemVfdCBNb2NrQm94Ojpw
ZWVrTGVuZ3RoKEFycmF5QnVmZmVyKiBkYXRhKQogewotICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3
PiB2aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGRhdGEsIDAsIGRhdGEtPmJ5dGVMZW5ndGgo
KSk7CisgICAgYXV0byB2aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGRhdGEsIDAsIGRhdGEt
PmJ5dGVMZW5ndGgoKSk7CiAgICAgcmV0dXJuIHZpZXctPmdldDx1aW50MzJfdD4oNCwgdHJ1ZSk7
CiB9CiAKQEAgLTY2LDExICs2NiwxMSBAQCBNb2NrVHJhY2tCb3g6Ok1vY2tUcmFja0JveChBcnJh
eUJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQobV9sZW5ndGggPT0gMTcpOwogCi0gICAgUmVm
UHRyPEpTQzo6RGF0YVZpZXc+IHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoZGF0YSwgMCwg
ZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBhdXRvIHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVh
dGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3RyYWNrSUQgPSB2aWV3LT5n
ZXQ8aW50MzJfdD4oOCwgdHJ1ZSk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAg
UmVmUHRyPEludDhBcnJheT4gYXJyYXkgPSBKU0M6OkludDhBcnJheTo6Y3JlYXRlKGRhdGEsIDEy
LCA0KTsKKyAgICBhdXRvIGFycmF5ID0gSlNDOjpJbnQ4QXJyYXk6OmNyZWF0ZShkYXRhLCAxMiwg
NCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpCiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGFycmF5LT5pdGVtKGkpKTsKICAgICBtX2NvZGVjID0gYnVpbGRlci50b1N0cmluZygpOwpA
QCAtODksNyArODksNyBAQCBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6Ok1vY2tJbml0aWFsaXphdGlv
bkJveChBcnJheUJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQobV9sZW5ndGggPj0gMTMpOwog
Ci0gICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUo
ZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBhdXRvIHZpZXcgPSBKU0M6OkRhdGFW
aWV3OjpjcmVhdGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpbnQzMl90IHRp
bWVWYWx1ZSA9IHZpZXctPmdldDxpbnQzMl90Pig4LCB0cnVlKTsKICAgICBpbnQzMl90IHRpbWVT
Y2FsZSA9IHZpZXctPmdldDxpbnQzMl90PigxMiwgdHJ1ZSk7CiAgICAgbV9kdXJhdGlvbiA9IE1l
ZGlhVGltZSh0aW1lVmFsdWUsIHRpbWVTY2FsZSk7CkBAIC0xMTgsNyArMTE4LDcgQEAgTW9ja1Nh
bXBsZUJveDo6TW9ja1NhbXBsZUJveChBcnJheUJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQo
bV9sZW5ndGggPT0gMzApOwogCi0gICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IHZpZXcgPSBKU0M6
OkRhdGFWaWV3OjpjcmVhdGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBhdXRv
IHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0aCgp
KTsKICAgICBpbnQzMl90IHRpbWVTY2FsZSA9IHZpZXctPmdldDxpbnQzMl90Pig4LCB0cnVlKTsK
IAogICAgIGludDMyX3QgdGltZVZhbHVlID0gdmlldy0+Z2V0PGludDMyX3Q+KDEyLCB0cnVlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggNjgzMmQwOWI4
NzViZTNkNDcwODhjYmQ2Y2VlNWU5ZWM3MWY1MTI0MS4uYjc1N2Y5Zjk1ZDZjOTU5NTE5YWMwNjVi
NGUwZjAzZWJhNTFkNjc2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZS5jcHAKQEAgLTE4OSw2ICsxODksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpj
cmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIEludFJlY3QoSW50UG9pbnQo
KSwgaW1hZ2VSZWN0LnNpemUoKSkpOwogCiAgICAgICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJh
eT4gcGl4ZWxBcnJheSA9IGltYWdlQnVmZmVyLT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoSW50
UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHBpeGVsQXJyYXkpOwogICAgICAgICB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoID0gcGl4
ZWxBcnJheS0+bGVuZ3RoKCk7CiAgICAgICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlPZmZzZXQgPSAz
OyAvLyBFYWNoIHBpeGVsIGlzIGZvdXIgYnl0ZXM6IFJHQkEuCiAgICAgICAgIHVpbnQ4X3QgYWxw
aGFQaXhlbFRocmVzaG9sZCA9IHRocmVzaG9sZCAqIDI1NTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0xlZ2FjeU1vY2tDRE0uY3BwCmluZGV4IDM4OTBjMGZhYmM0N2U1OTBlNWIxYWJiZDM1ZDJmOTky
YzQ2NWE3NDcuLjY0Mjg3ZDIzOWFmNTczZTkyMDNkMjU4NDMxYjI3M2M3Yjg3NDkwMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcApAQCAtNzksMjUgKzc5LDI1IEBA
IHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lNb2NrQ0RNOjpjcmVhdGVT
ZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DCiBzdGF0aWMgVWludDhBcnJheSogaW5pdERhdGFQcmVm
aXgoKQogewogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgcHJlZml4RGF0YVtdID0geyAnbScsICdv
JywgJ2MnLCAnaycgfTsKLSAgICBzdGF0aWMgVWludDhBcnJheSogcHJlZml4ID0gVWludDhBcnJh
eTo6Y3JlYXRlKHByZWZpeERhdGEsIFdURl9BUlJBWV9MRU5HVEgocHJlZml4RGF0YSkpLmxlYWtS
ZWYoKTsKKyAgICBzdGF0aWMgVWludDhBcnJheSYgcHJlZml4IHsgVWludDhBcnJheTo6Y3JlYXRl
KHByZWZpeERhdGEsIFdURl9BUlJBWV9MRU5HVEgocHJlZml4RGF0YSkpLmxlYWtSZWYoKSB9Owog
Ci0gICAgcmV0dXJuIHByZWZpeDsKKyAgICByZXR1cm4gJnByZWZpeDsKIH0KIAogc3RhdGljIFVp
bnQ4QXJyYXkqIGtleVByZWZpeCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg
cHJlZml4RGF0YVtdID0geydrJywgJ2UnLCAneSd9OwotICAgIHN0YXRpYyBVaW50OEFycmF5KiBw
cmVmaXggPSBVaW50OEFycmF5OjpjcmVhdGUocHJlZml4RGF0YSwgV1RGX0FSUkFZX0xFTkdUSChw
cmVmaXhEYXRhKSkubGVha1JlZigpOworICAgIHN0YXRpYyBVaW50OEFycmF5JiBwcmVmaXggeyBV
aW50OEFycmF5OjpjcmVhdGUocHJlZml4RGF0YSwgV1RGX0FSUkFZX0xFTkdUSChwcmVmaXhEYXRh
KSkubGVha1JlZigpIH07CiAKLSAgICByZXR1cm4gcHJlZml4OworICAgIHJldHVybiAmcHJlZml4
OwogfQogCiBzdGF0aWMgVWludDhBcnJheSoga2V5UmVxdWVzdCgpCiB7CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGNoYXIgcmVxdWVzdERhdGFbXSA9IHsncicsICdlJywgJ3EnLCAndScsICdl
JywgJ3MnLCAndCd9OwotICAgIHN0YXRpYyBVaW50OEFycmF5KiByZXF1ZXN0ID0gVWludDhBcnJh
eTo6Y3JlYXRlKHJlcXVlc3REYXRhLCBXVEZfQVJSQVlfTEVOR1RIKHJlcXVlc3REYXRhKSkubGVh
a1JlZigpOworICAgIHN0YXRpYyBVaW50OEFycmF5JiByZXF1ZXN0IHsgVWludDhBcnJheTo6Y3Jl
YXRlKHJlcXVlc3REYXRhLCBXVEZfQVJSQVlfTEVOR1RIKHJlcXVlc3REYXRhKSkubGVha1JlZigp
IH07CiAKLSAgICByZXR1cm4gcmVxdWVzdDsKKyAgICByZXR1cm4gJnJlcXVlc3Q7CiB9CiAKIHN0
YXRpYyBTdHJpbmcgZ2VuZXJhdGVTZXNzaW9uSWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tTdHJpbmcuY3BwCmluZGV4IDc4ZGU2MWU5OGE3NzkyNzgyYzUwMmE0MDQ3OGNiM2FkZDIxNWIx
MDUuLjc2N2FhOGQ5MTRiMGNmNzUxOTZlMjBjMzYzYjgwNjM4ZmZkN2QzZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAKQEAgLTEzNiw1ICsxMzYsNSBAQCBXS1N0cmlu
Z1JlZiBXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhKU1N0cmluZ1JlZiBqc1N0cmluZ1JlZikK
IEpTU3RyaW5nUmVmIFdLU3RyaW5nQ29weUpTU3RyaW5nKFdLU3RyaW5nUmVmIHN0cmluZ1JlZikK
IHsKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICByZXR1cm4gT3BhcXVlSlNT
dHJpbmc6OmNyZWF0ZSh0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nKCkpLmxlYWtSZWYoKTsKKyAg
ICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSh0b0ltcGwoc3RyaW5nUmVmKS0+c3Ry
aW5nKCkpLmxlYWtSZWYoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5k
ZXggMjlmYjAxZTIwYzQwMDg0ZjM5YTkzOTc2MTk3ZWRhODU1NDNjOWZjMS4uZWZhMDM0MTQwMmEw
YWYzN2JiMTJlM2U5ZjQzNGZjZjJjNTIzM2ZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIEpTT2JqZWN0UmVmIHRvSlNBcnJheShK
U0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgVmVjdG9yPFQ+JiBkYXRhLCBKU1ZhbHUKIAogc3Rh
dGljIGlubGluZSBKU1ZhbHVlUmVmIHRvSlNWYWx1ZShKU0NvbnRleHRSZWYgY29udGV4dCwgY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRl
eHQsIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoc3RyaW5nKS5nZXQoKSk7CisgICAgcmV0dXJuIEpT
VmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoc3RyaW5n
KS5nZXQoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZVJlZiBjYWxsUHJvcGVydHlGdW5j
dGlvbihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0LCBjb25zdCBTdHJp
bmcmIHByb3BlcnR5TmFtZSwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTk2LDcgKzk2LDcgQEAgc3Rh
dGljIGlubGluZSBKU1ZhbHVlUmVmIGNhbGxQcm9wZXJ0eUZ1bmN0aW9uKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZgogICAgIEFTU0VSVF9BUkcob2JqZWN0LCBvYmplY3QpOwogICAg
IEFTU0VSVF9BUkcob2JqZWN0LCBKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgb2JqZWN0KSk7CiAK
LSAgICBKU09iamVjdFJlZiBmdW5jdGlvbiA9IGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KEpTT2Jq
ZWN0R2V0UHJvcGVydHkoY29udGV4dCwgb2JqZWN0LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHBy
b3BlcnR5TmFtZSkuZ2V0KCksIGV4Y2VwdGlvbikpOworICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
ID0gY29uc3RfY2FzdDxKU09iamVjdFJlZj4oSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBv
YmplY3QsIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUocHJvcGVydHlOYW1lKS5nZXQoKSwgZXhj
ZXB0aW9uKSk7CiAgICAgQVNTRVJUKEpTT2JqZWN0SXNGdW5jdGlvbihjb250ZXh0LCBmdW5jdGlv
bikpOwogCiAgICAgcmV0dXJuIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgZnVuY3Rp
b24sIG9iamVjdCwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLCBleGNlcHRpb24pOwpAQCAtMTc3
LDcgKzE3Nyw3IEBAIEpTT2JqZWN0UmVmIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNjcmlw
dE9iamVjdEZvckZyYW1lKFdlYkZyYW1lJiBmcmFtZSkKIAogICAgIFN0cmluZyBzY3JpcHQgPSBT
dHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
U2NyaXB0U291cmNlLCBzaXplb2YoV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlwdFNvdXJj
ZSkpOwogCi0gICAgSlNPYmplY3RSZWYgc2NyaXB0T2JqZWN0RnVuY3Rpb24gPSBjb25zdF9jYXN0
PEpTT2JqZWN0UmVmPihKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIE9wYXF1ZUpTU3RyaW5nOjpj
cmVhdGUoc2NyaXB0KS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgJmV4Y2VwdGlvbikpOwor
ICAgIEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdEZ1bmN0aW9uID0gY29uc3RfY2FzdDxKU09iamVj
dFJlZj4oSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRl
KHNjcmlwdCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIDAsICZleGNlcHRpb24pKTsKICAgICBB
U1NFUlQoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHNjcmlwdE9iamVjdEZ1bmN0aW9uKSk7CiAK
ICAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdID0geyBzZXNzaW9uSWRlbnRpZmllciwgZXZhbHVh
dGVGdW5jdGlvbiwgY3JlYXRlVVVJREZ1bmN0aW9uIH07CkBAIC0yODAsNyArMjgwLDcgQEAgdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1
aW50NjRfdCBwYWdlSUQsIHVpbnQKIAogICAgIFN0cmluZyBleGNlcHRpb25NZXNzYWdlOwogICAg
IGlmIChKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgZXhjZXB0aW9uKSkgewotICAgICAgICBKU1Zh
bHVlUmVmIG5hbWVWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgY29uc3RfY2Fz
dDxKU09iamVjdFJlZj4oZXhjZXB0aW9uKSwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZSgibmFtZSJf
cykuZ2V0KCksIG51bGxwdHIpOworICAgICAgICBKU1ZhbHVlUmVmIG5hbWVWYWx1ZSA9IEpTT2Jq
ZWN0R2V0UHJvcGVydHkoY29udGV4dCwgY29uc3RfY2FzdDxKU09iamVjdFJlZj4oZXhjZXB0aW9u
KSwgT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSgibmFtZSJfcykuZ2V0KCksIG51bGxwdHIpOwog
ICAgICAgICBhdXRvIGV4Y2VwdGlvbk5hbWUgPSBhZG9wdFJlZihKU1ZhbHVlVG9TdHJpbmdDb3B5
KGNvbnRleHQsIG5hbWVWYWx1ZSwgbnVsbHB0cikpLT5zdHJpbmcoKTsKICAgICAgICAgaWYgKGV4
Y2VwdGlvbk5hbWUgPT0gIk5vZGVOb3RGb3VuZCIpCiAgICAgICAgICAgICBlcnJvclR5cGUgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFs
dWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpOb2RlTm90
Rm91bmQpOwpAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgcGFnZUlELCB1aW50CiAgICAg
ICAgIGVsc2UgaWYgKGV4Y2VwdGlvbk5hbWUgPT0gIkludmFsaWRTZWxlY3RvciIpCiAgICAgICAg
ICAgICBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6
Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJy
b3JNZXNzYWdlOjpJbnZhbGlkU2VsZWN0b3IpOwogCi0gICAgICAgIEpTVmFsdWVSZWYgbWVzc2Fn
ZVZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBjb25zdF9jYXN0PEpTT2JqZWN0
UmVmPihleGNlcHRpb24pLCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKCJtZXNzYWdlIl9zKS5nZXQo
KSwgbnVsbHB0cik7CisgICAgICAgIEpTVmFsdWVSZWYgbWVzc2FnZVZhbHVlID0gSlNPYmplY3RH
ZXRQcm9wZXJ0eShjb250ZXh0LCBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihleGNlcHRpb24pLCBP
cGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCJtZXNzYWdlIl9zKS5nZXQoKSwgbnVsbHB0cik7CiAg
ICAgICAgIGV4Y2VwdGlvbk1lc3NhZ2UgPSBhZG9wdFJlZihKU1ZhbHVlVG9TdHJpbmdDb3B5KGNv
bnRleHQsIG1lc3NhZ2VWYWx1ZSwgbnVsbHB0cikpLT5zdHJpbmcoKTsKICAgICB9IGVsc2UKICAg
ICAgICAgZXhjZXB0aW9uTWVzc2FnZSA9IGFkb3B0UmVmKEpTVmFsdWVUb1N0cmluZ0NvcHkoY29u
dGV4dCwgZXhjZXB0aW9uLCBudWxscHRyKSktPnN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggM2QxZmU3NWE5MDBi
N2IyNTZjN2UyNTM5ZTAyM2IzYTczZjcxZjk2NS4uNDliMjIyNTQwNWI4MmY4MThkM2VmYzAyNzU0
OWU0MzllYmQ5MTdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCkBAIC0xMTE4LDcgKzExMTgsNyBAQCB2b2lkIFBERlBsdWdpbjo6
cnVuU2NyaXB0c0luUERGRG9jdW1lbnQoKQogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjdHggPSBK
U0dsb2JhbENvbnRleHRDcmVhdGUoMCk7CiAgICAgSlNPYmplY3RSZWYganNQREZEb2MgPSBtYWtl
SlNQREZEb2MoY3R4KTsKICAgICBmb3IgKGF1dG8mIHNjcmlwdCA6IHNjcmlwdHMpCi0gICAgICAg
IEpTRXZhbHVhdGVTY3JpcHQoY3R4LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHNjcmlwdC5nZXQo
KSkuZ2V0KCksIGpzUERGRG9jLCBudWxscHRyLCAwLCBudWxscHRyKTsKKyAgICAgICAgSlNFdmFs
dWF0ZVNjcmlwdChjdHgsIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoc2NyaXB0LmdldCgpKS5n
ZXQoKSwganNQREZEb2MsIG51bGxwdHIsIDAsIG51bGxwdHIpOwogICAgIEpTR2xvYmFsQ29udGV4
dFJlbGVhc2UoY3R4KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViVmlldy9XZWJQREZWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmll
dy9XZWJQREZWaWV3SU9TLm1tCmluZGV4IDE4NDFiOTg1Yzg1MGNhZjA0Mzc0YWE4MTNhMjA1MGJk
ZjAwNDU3YTcuLmY4YjY2YTNiNzRjZTFmMzI1MDE1Yzk1ZjdhZGNjOTk1ZDdmZThmNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KQEAg
LTMyNiw3ICszMjYsNyBAQCAtICh2b2lkKWZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOihX
ZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjdHggPSBK
U0dsb2JhbENvbnRleHRDcmVhdGUoMCk7CiAgICAgSlNPYmplY3RSZWYganNQREZEb2MgPSBtYWtl
SlNQREZEb2MoY3R4LCBkYXRhU291cmNlKTsKICAgICBmb3IgKE5TU3RyaW5nICpzY3JpcHQgaW4g
c2NyaXB0cykKLSAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIE9wYXF1ZUpTU3RyaW5nOjpj
cmVhdGUoc2NyaXB0KS5nZXQoKSwganNQREZEb2MsIG51bGxwdHIsIDAsIG51bGxwdHIpOworICAg
ICAgICBKU0V2YWx1YXRlU2NyaXB0KGN0eCwgT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShzY3Jp
cHQpLmdldCgpLCBqc1BERkRvYywgbnVsbHB0ciwgMCwgbnVsbHB0cik7CiAgICAgSlNHbG9iYWxD
b250ZXh0UmVsZWFzZShjdHgpOwogCiAgICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5OllFU107CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFj
ZWhvbGRlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1Bs
YWNlaG9sZGVyLm1tCmluZGV4IDFlODZiYTA3NDRiNDRmZjY0ZDI0MTY3YmU3ODQ4YWFmN2U5NTdl
MzMuLmU4ZWE1MmMwZTVkZDU3ZDhiZWJiNjE3Njk2NDM3ZTNlMjI1ZGI5ZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9s
ZGVyLm1tCkBAIC0zMDcsNyArMzA3LDcgQEAgLSAodm9pZClfZXZhbHVhdGVKU0ZvckRvY3VtZW50
OihDR1BERkRvY3VtZW50UmVmKXBkZkRvY3VtZW50CiAgICAgICAgIEpTR2xvYmFsQ29udGV4dFJl
ZiBjdHggPSBKU0dsb2JhbENvbnRleHRDcmVhdGUoMCk7CiAgICAgICAgIEpTT2JqZWN0UmVmIGpz
UERGRG9jID0gbWFrZUpTUERGRG9jKGN0eCwgX2RhdGFTb3VyY2UpOwogICAgICAgICBmb3IgKE5T
U3RyaW5nICpzY3JpcHQgaW4gc2NyaXB0cykKLSAgICAgICAgICAgIEpTRXZhbHVhdGVTY3JpcHQo
Y3R4LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHNjcmlwdCkuZ2V0KCksIGpzUERGRG9jLCBudWxs
cHRyLCAwLCBudWxscHRyKTsKKyAgICAgICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4LCBPcGFx
dWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHNjcmlwdCkuZ2V0KCksIGpzUERGRG9jLCBudWxscHRyLCAw
LCBudWxscHRyKTsKICAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShjdHgpOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVw
cmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJl
cHJlc2VudGF0aW9uLm1tCmluZGV4IGFhZGZlZDIxOGZjZWY0YjEyZmI4OWFhNzc3YTE5NGY1ZmQy
N2EwNDUuLjM0NjhkZGRjZDRhNzdiYmE3Mzg2OWE4Nzk3NDc1OTEwOGNlZjM2NWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRh
dGlvbi5tbQpAQCAtMTM0LDcgKzEzNCw3IEBAIC0gKHZvaWQpZmluaXNoZWRMb2FkaW5nV2l0aERh
dGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCiAgICAgSlNHbG9iYWxDb250ZXh0
UmVmIGN0eCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZSgwKTsKICAgICBKU09iamVjdFJlZiBqc1BE
RkRvYyA9IG1ha2VKU1BERkRvYyhjdHgsIGRhdGFTb3VyY2UpOwogICAgIGZvciAoTlNTdHJpbmcg
KnNjcmlwdCBpbiBzY3JpcHRzKQotICAgICAgICBKU0V2YWx1YXRlU2NyaXB0KGN0eCwgT3BhcXVl
SlNTdHJpbmc6OmNyZWF0ZShzY3JpcHQpLmdldCgpLCBqc1BERkRvYywgbnVsbHB0ciwgMCwgbnVs
bHB0cik7CisgICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4LCBPcGFxdWVKU1N0cmluZzo6dHJ5
Q3JlYXRlKHNjcmlwdCkuZ2V0KCksIGpzUERGRG9jLCBudWxscHRyLCAwLCBudWxscHRyKTsKICAg
ICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKGN0eCk7CiB9CiAK
</data>
<flag name="review"
          id="369286"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351967</attachid>
            <date>2018-10-10 09:25:12 -0700</date>
            <delta_ts>2018-10-10 09:25:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190429-20181011012511.patch</filename>
            <type>text/plain</type>
            <size>125797</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NWRkYTc3YTg1YTkxNzUyZTZkNjZjM2U4MGI2NGEwZjE4YzRhNzIyLi44ZWU5ODNjZTJmNDUzNmRj
NWMxOGZhZmQ4NWY2ODAxMGZmMmFkYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjQgQEAKKzIwMTgtMTAtMTAgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xv
d3N0YXJ0Lm9yZz4KKworICAgICAgICBbSlNDXSBSZW5hbWUgY3JlYXRlWFhYIHRvIHRyeUNyZWF0
ZVhYWCBpZiBpdCBjYW4gcmV0dXJuIFJlZlB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU29tZSBjcmVhdGVYWFggZnVuY3Rpb25zIGNhbiBmYWlsLiBC
dXQgc29tZXRpbWVzIHRoZSBjYWxsZXIgZG9lcyBub3QgcGVyZm9ybSBlcnJvciBjaGVja2luZy4K
KyAgICAgICAgVG8gbWFrZSBpdCBleHBsaWNpdCB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBjYW4gZmFp
bCwgd2UgcmVuYW1lIHRoZXNlIGZ1bmN0aW9ucyBmcm9tIGNyZWF0ZVhYWAorICAgICAgICB0byB0
cnlDcmVhdGVYWFguIEluIHRoaXMgcGF0Y2gsIHdlIGZvY3VzIG9uIG5vbi1KUy1tYW5hZ2VkIGZh
Y3RvcnkgZnVuY3Rpb25zLiBJZiB0aGUgZmFjdG9yeQorICAgICAgICBmdW5jdGlvbiBkb2VzIG5v
dCBmYWlsLCBpdCBzaG91bGQgcmV0dXJuIFJlZjw+LiBPdGhlcndpc2UsIGl0IHNob3VsZCBiZSBu
YW1lZCBhcyB0cnlDcmVhdGVYWFgKKyAgICAgICAgYW5kIGl0IHNob3VsZCByZXR1cm4gUmVmUHRy
PD4uCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWlubHkgZm9jdXNlcyBvbiBUeXBlZEFycmF5IGZh
Y3RvcnkgZnVuY3Rpb25zLiBQcmV2aW91c2x5LCB0aGVzZSBmdW5jdGlvbnMgYXJlCisgICAgICAg
IGBSZWZQdHI8WFhYQXJyYXk+IGNyZWF0ZSguLi4pYC4gVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZW0g
dG8gYFJlZlB0cjxYWFhBcnJheT4gdHJ5Q3JlYXRlKC4uLilgLgorICAgICAgICBBbmQgd2UgYWxz
byBpbnRyb2R1Y2UgYFJlZjxYWFhBcnJheT4gY3JlYXRlKC4uLilgIGZ1bmN0aW9uIHdoaWNoIGlu
dGVybmFsbHkgcGVyZm9ybXMKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQgb24gdGhlIHJlc3VsdCBv
ZiBgdHJ5Q3JlYXRlKC4uLilgLgorCisgICAgICAgIEFuZCB3ZSBhbHNvIGNvbnZlcnQgT3BhcXVl
SlNTdHJpbmc6OmNyZWF0ZSB0byBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlIHNpbmNlIGl0IGNh
biBmYWlsLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFjdHVhbGx5IGZpbmRzIG9uZSBwbGFjZSB3
aGljaCBkb2VzIG5vdCBwZXJmb3JtIGFueSBudWxsIGNoZWNraW5ncyB3aGlsZSBpdCB1c2VzCisg
ICAgICAgIGBSZWZQdHI8PiBjcmVhdGUoLi4uKWAgZnVuY3Rpb24uCisKKyAgICAgICAgKiBBUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpwdXRCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Y2FsbGJhY2tHZXR0ZXIpOgorICAgICAgICAqIEFQSS9KU0NsYXNzUmVmLmg6CisgICAg
ICAgIChTdGF0aWNWYWx1ZUVudHJ5OjpTdGF0aWNWYWx1ZUVudHJ5KToKKyAgICAgICAgKiBBUEkv
SlNDb250ZXh0Lm1tOgorICAgICAgICAoLVtKU0NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6d2l0aFNv
dXJjZVVSTDpdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IHNldE5hbWU6XSk6CisgICAgICAgICog
QVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRDb3B5TmFtZSk6
CisgICAgICAgIChKU0NvbnRleHRDcmVhdGVCYWNrdHJhY2UpOgorICAgICAgICAqIEFQSS9KU09i
amVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAqIEFQSS9KU1N0cmluZ1JlZi5jcHA6
CisgICAgICAgIChKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KToKKyAgICAgICAg
KiBBUEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdSZWd1bGFy
RXhwcmVzc2lvbkZyb21QYXR0ZXJuOmZsYWdzOmluQ29udGV4dDpdKToKKyAgICAgICAgKCtbSlNW
YWx1ZSB2YWx1ZVdpdGhOZXdFcnJvckZyb21NZXNzYWdlOmluQ29udGV4dDpdKToKKyAgICAgICAg
KCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246aW5Db250ZXh0Ol0p
OgorICAgICAgICAocGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uKToKKyAgICAgICAgKC1bSlNWYWx1
ZSBpbnZva2VNZXRob2Q6d2l0aEFyZ3VtZW50czpdKToKKyAgICAgICAgKGNvbnRhaW5lclZhbHVl
VG9PYmplY3QpOgorICAgICAgICAob2JqZWN0VG9WYWx1ZVdpdGhvdXRDb3B5KToKKyAgICAgICAg
KG9iamVjdFRvVmFsdWUpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmNwcDoKKyAgICAgICAg
KEpTVmFsdWVDcmVhdGVKU09OU3RyaW5nKToKKyAgICAgICAgKEpTVmFsdWVUb1N0cmluZ0NvcHkp
OgorICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmluZy5jcHA6CisgICAgICAgIChPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUpOiBEZWxl
dGVkLgorICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmluZy5oOgorICAgICAgICAqIEFQSS9nbGli
L0pTQ0NvbnRleHQuY3BwOgorICAgICAgICAoZXZhbHVhdGVTY3JpcHRJbkNvbnRleHQpOgorICAg
ICAgICAqIEFQSS9nbGliL0pTQ1ZhbHVlLmNwcDoKKyAgICAgICAgKGpzY192YWx1ZV9uZXdfc3Ry
aW5nX2Zyb21fYnl0ZXMpOgorICAgICAgICAqIGZ0bC9GVExMYXp5U2xvd1BhdGguaDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpMYXp5U2xvd1BhdGg6OmNyZWF0ZUdlbmVyYXRvcik6CisgICAgICAgICog
ZnRsL0ZUTExhenlTbG93UGF0aENhbGwuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpjcmVhdGVMYXp5
Q2FsbEdlbmVyYXRvcik6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXQuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6Ok9TUkV4aXREZXNjcmlwdG9yOjplbWl0T1NSRXhpdCk6CisgICAgICAgIChKU0M6
OkZUTDo6T1NSRXhpdERlc2NyaXB0b3I6OmVtaXRPU1JFeGl0TGF0ZXIpOgorICAgICAgICAoSlND
OjpGVEw6Ok9TUkV4aXREZXNjcmlwdG9yOjpwcmVwYXJlT1NSRXhpdEhhbmRsZSk6CisgICAgICAg
ICogZnRsL0ZUTE9TUkV4aXQuaDoKKyAgICAgICAgKiBmdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlv
bkhhbmRsZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxl
OjpjcmVhdGVIYW5kbGUpOgorICAgICAgICAqIGZ0bC9GVExQYXRjaHBvaW50RXhjZXB0aW9uSGFu
ZGxlLmg6CisgICAgICAgICogaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg6CisgICAgICAg
IChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRWRlblRpbWVyKToKKyAgICAgICAg
KEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIGhlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oOgorICAgICAgICAoSlNDOjpHQ0Fj
dGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUZ1bGxUaW1lcik6CisgICAgICAgIChKU0M6OkdDQWN0
aXZpdHlDYWxsYmFjazo6Y3JlYXRlRnVsbFRpbWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFw
L0dDQWN0aXZpdHlDYWxsYmFjay5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAg
IChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAqIGluc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2Uu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpBc3luY1N0YWNrVHJhY2U6OmNyZWF0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5oOgorICAgICAgICAqIGpzYy5jcHA6Cisg
ICAgICAgIChmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKiBydW50aW1l
L0FycmF5QnVmZmVyLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcu
aDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0
aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2li
bHlTaGFyZWRJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6cG9zc2libHlTaGFyZWRUeXBlZEltcGwpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBlZEltcGwpOgorICAgICAgICAqIHdhc20v
V2FzbU1lbW9yeS5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAqIHdhc20vV2Fz
bU1lbW9yeS5oOgorICAgICAgICAqIHdhc20vV2FzbVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6VGFibGU6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6Oldhc206OlRhYmxlOjpjcmVh
dGUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbVRhYmxlLmg6CisgICAgICAgICogd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVt
b3J5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6SlNXZWJBc3NlbWJs
eU1lbW9yeSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeSk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6
OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2Vi
QXNzZW1ibHlUYWJsZSk6CisKIDIwMTgtMTAtMDkgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNob3cgcmVkaXJlY3QgcmVxdWVzdHMg
aW4gTmV0d29yayBhbmQgVGltZWxpbmVzIHRhYnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NjMzYTRjNTQ3MGM0
YWVhY2NkMTRlOWJiODQ2NjM1OTZkMGZiMTliLi5mMWJlYmJhYWZhOTJiMjhiMWQ3NTc1OGMxZDI3
MWNmMjI2MWM5ZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE0IEBACisyMDE4LTEwLTEwICBZ
dXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgW0pT
Q10gUmVuYW1lIGNyZWF0ZVhYWCB0byB0cnlDcmVhdGVYWFggaWYgaXQgY2FuIHJldHVybiBSZWZQ
dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDQy
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBg
dHJ5Q3JlYXRlYCBvciBuZXcgYGNyZWF0ZWAuIElmIHdlIHVzZSBuZXcgYGNyZWF0ZWAsIHdlIGNh
biB1c2UgUmVmPD4gYW5kIHJlbW92ZSBudWxsIGNoZWNrLgorCisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVNlc3Npb25DbGVhcktleTo6Y2FjaGVkS2V5Rm9yS2V5SUQgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0J1ZmZlcjo6QXVkaW9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9C
dWZmZXI6OmdldENoYW5uZWxEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSRXllUGFy
YW1ldGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWUkV5ZVBhcmFtZXRlcnM6Om9mZnNldCBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjptYXRyaXhUb0FycmF5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSUG9z
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcHRpb25hbEZsb2F0M1RvSlNDQXJyYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6VlJQb3NlOjpwb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWUlBvc2U6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZS
U3RhZ2VQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZSU3RhZ2VQYXJhbWV0ZXJz
OjpzaXR0aW5nVG9TdGFuZGluZ1RyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6ZW5xdWV1ZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNs
b25lRGVzZXJpYWxpemVyOjpyZWFkQXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBjcnlwdG8v
Z2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9L
ZXlSU0E6OmFsZ29yaXRobSBjb25zdCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9LZXlS
U0FNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjphbGdvcml0aG0gY29u
c3QpOgorICAgICAgICAqIGNzcy9ET01NYXRyaXhSZWFkT25seS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01NYXRyaXhSZWFkT25seTo6dG9GbG9hdDMyQXJyYXkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NTWF0cml4UmVhZE9ubHk6OnRvRmxvYXQ2NEFycmF5IGNvbnN0KToKKyAgICAg
ICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmNyZWF0
ZSk6CisgICAgICAgICogZG9tL1RleHRFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRFbmNvZGVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6SW1hZ2VEYXRhKToKKyAgICAgICAgKiBodG1s
L0ltYWdlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRWZXJ0ZXhBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFdlYkdMSW50QXJyYXlQ
YXJhbWV0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0
ZUZyb21Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JM
b2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAgICAgIChXZWJD
b3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpyZWxlYXNl
S2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6
dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
OjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpnZW5lcmF0ZUtleVJlcXVl
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVlN0cmVhbVNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZT
dHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
U2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1w
bGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpnZXRS
R0JBSW1hZ2VEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldElt
YWdlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRh
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRSZXN1bHQpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdl
UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlw
bGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEYXRhRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRh
OjpnZXREYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpqc1ZhbHVlV2l0aERp
Y3Rpb25hcnlJbkNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tUcmFja0JveDo6TW9ja1RyYWNrQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJbml0aWFs
aXphdGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9uQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tTYW1wbGVCb3g6Ok1vY2tTYW1wbGVCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMv
U2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKToK
KyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aW5pdERhdGFQcmVmaXgpOgorICAgICAgICAoV2ViQ29yZTo6a2V5UHJlZml4KToKKyAgICAgICAg
KFdlYkNvcmU6OmtleVJlcXVlc3QpOgorCiAyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8eXVz
dWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CiAKICAgICAgICAgWE1MSHR0cFJlcXVlc3Qgc2hvdWxk
IHVzZSByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZC9yZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQg
aW5zdGVhZCBvZiBkZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmVmMDUw
YTA4NGFkODVkYmFjMDg3N2MwMWVhNTkzMjk1NDg0MGQ1OS4uMGEzYzg0ZmMwMzA3MGNlM2ZjMTlj
MzdkZjk3Yjk3M2JkZTdiN2YwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0xMC0x
MCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAg
IFtKU0NdIFJlbmFtZSBjcmVhdGVYWFggdG8gdHJ5Q3JlYXRlWFhYIGlmIGl0IGNhbiByZXR1cm4g
UmVmUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTA0MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgYHRyeUNyZWF0ZWAgb3IgbmV3IGBjcmVhdGVgLiBJZiB3ZSB1c2UgbmV3IGBjcmVhdGVgLCB3
ZSBjYW4gdXNlIFJlZjw+IGFuZCByZW1vdmUgbnVsbCBjaGVjay4KKworICAgICAgICAqIFNoYXJl
ZC9BUEkvYy9XS1N0cmluZy5jcHA6CisgICAgICAgIChXS1N0cmluZ0NvcHlKU1N0cmluZyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0Ojp0b0pTVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpjYWxs
UHJvcGVydHlGdW5jdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OnNjcmlwdE9iamVjdEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OnJ1blNjcmlwdHNJblBERkRvY3VtZW50KToKKwogMjAxOC0xMC0wOSAgQW50b2lu
ZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgZnJhbWVz
KCkgdGltaW5nIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggOGFmM2Mz
Y2Q1NWNlYTZmNTBkMzc1ODAxZGI3ZmI5MWRmZTljNjdkNS4uNmU2YTNlMzM3MDM5MjdmZDRmMGY5
MjgwNmEwODc1ZDQ4MzQ4MjJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dz
dGFydC5vcmc+CisKKyAgICAgICAgW0pTQ10gUmVuYW1lIGNyZWF0ZVhYWCB0byB0cnlDcmVhdGVY
WFggaWYgaXQgY2FuIHJldHVybiBSZWZQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBgdHJ5Q3JlYXRlYCBvciBuZXcgYGNyZWF0ZWAuIElmIHdl
IHVzZSBuZXcgYGNyZWF0ZWAsIHdlIGNhbiB1c2UgUmVmPD4gYW5kIHJlbW92ZSBudWxsIGNoZWNr
LgorCisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tOgorICAgICAgICAoLVtXZWJQ
REZWaWV3IGZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOl0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3UGxhY2Vo
b2xkZXIgX2V2YWx1YXRlSlNGb3JEb2N1bWVudDpdKToKKwogMjAxOC0xMC0wMiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bnVz
ZWQgbGlua2VkLW9uLW9yLWJlZm9yZS1pT1M1IGNoZWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggZDU0YTI3YzZmZGJiMGRjZDdlMTA1MDZlNTk3ZjVmZWQxMDM1YjVlNC4uMzhhNjlm
ZjZiZDAzMWQ3OTFiZWVjZDYwOTVjYjAzYTdiYTI5MTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8eXVz
dWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgW0pTQ10gUmVuYW1lIGNyZWF0ZVhY
WCB0byB0cnlDcmVhdGVYWFggaWYgaXQgY2FuIHJldHVybiBSZWZQdHIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDQyOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBgdHJ5Q3JlYXRlYCBvciBuZXcg
YGNyZWF0ZWAuIElmIHdlIHVzZSBuZXcgYGNyZWF0ZWAsIHdlIGNhbiB1c2UgUmVmPD4gYW5kIHJl
bW92ZSBudWxsIGNoZWNrLgorCisgICAgICAgICogV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlv
bi5tbToKKyAgICAgICAgKC1bV2ViUERGUmVwcmVzZW50YXRpb24gZmluaXNoZWRMb2FkaW5nV2l0
aERhdGFTb3VyY2U6XSk6CisKIDIwMTgtMTAtMDggIEp1c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWJHUFU6IFJlbmFtZSBvbGQgV2ViR1BVIHByb3RvdHlwZSB0
byBXZWJNZXRhbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCAxNWI4NjA4NjZkZWE5MjI4NGI3OGEwZDcwN2Q4MDE2
NjU5ODc3MWQxLi40ZjRiN2Q3MWVlMDkyOTU1N2MyOGUyMGI4YWQ4N2MzZGI1ZTdjYmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5j
dGlvbnMuaApAQCAtMTU1LDcgKzE1NSw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBlCiAgICAg
ICAgICAgICAvLyBvcHRpb25hbCBvcHRpbWl6YXRpb24gdG8gYnlwYXNzIGdldFByb3BlcnR5IGlu
IGNhc2VzIHdoZW4gd2Ugb25seSBuZWVkIHRvIGtub3cgaWYgdGhlIHByb3BlcnR5IGV4aXN0cwog
ICAgICAgICAgICAgaWYgKEpTT2JqZWN0SGFzUHJvcGVydHlDYWxsYmFjayBoYXNQcm9wZXJ0eSA9
IGpzQ2xhc3MtPmhhc1Byb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5h
bWVSZWYpCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3Ry
aW5nOjpjcmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9
IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobmFtZSk7CiAgICAgICAgICAgICAgICAgSlNMb2Nr
OjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGV4ZWMpOwogICAgICAgICAgICAgICAgIGlmICho
YXNQcm9wZXJ0eShjdHgsIHRoaXNSZWYsIHByb3BlcnR5TmFtZVJlZi5nZXQoKSkpIHsKICAgICAg
ICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBjYWxsYmFja0dldHRl
cik7CkBAIC0xNjMsNyArMTYzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGUKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgaWYgKEpTT2JqZWN0R2V0UHJvcGVydHlDYWxs
YmFjayBnZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPmdldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYpCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFt
ZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAg
IHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobmFtZSk7CiAgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWYgdmFsdWU7CiAgICAgICAgICAgICAgICAgewpAQCAtMjUyLDcgKzI1Miw3IEBAIGJv
b2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0g
dGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVu
dENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIHNl
dFByb3BlcnR5ID0ganNDbGFzcy0+c2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAo
IXByb3BlcnR5TmFtZVJlZikKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lUmVmID0g
T3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVy
dHlOYW1lUmVmID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShuYW1lKTsKICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgYm9vbCByZXN1
bHQ7CiAgICAgICAgICAgICAgICAgewpAQCAtMzE2LDcgKzMxNiw3IEBAIGJvb2wgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lCiAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFz
c1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAg
ICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBzZXRQcm9wZXJ0eSA9IGpzQ2xhc3Mt
PnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKLSAgICAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWYgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHByb3Bl
cnR5TmFtZS5pbXBsKCkpOworICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1
ZUpTU3RyaW5nOjp0cnlDcmVhdGUocHJvcGVydHlOYW1lLmltcGwoKSk7CiAgICAgICAgICAgICBK
U1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICBib29sIHJlc3VsdDsKICAgICAg
ICAgICAgIHsKQEAgLTM3NSw3ICszNzUsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBybwogICAg
ICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpz
Q2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgaWYg
KEpTT2JqZWN0RGVsZXRlUHJvcGVydHlDYWxsYmFjayBkZWxldGVQcm9wZXJ0eSA9IGpzQ2xhc3Mt
PmRlbGV0ZVByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYp
Ci0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjpj
cmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1
ZUpTU3RyaW5nOjp0cnlDcmVhdGUobmFtZSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBl
eGNlcHRpb24gPSAwOwogICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0OwogICAgICAgICAgICAg
ICAgIHsKQEAgLTY3OSw3ICs2NzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZAogICAgICAg
ICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmotPmNsYXNzUmVmKCk7IGpzQ2xhc3M7
IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2Jq
ZWN0R2V0UHJvcGVydHlDYWxsYmFjayBnZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPmdldFByb3BlcnR5
KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYpCi0gICAgICAgICAgICAg
ICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUobmFtZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlD
cmVhdGUobmFtZSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwog
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgdmFsdWU7CiAgICAgICAgICAgICAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaAppbmRleCBmYTAyNGQzNDRmNDZjNTFiYWQy
MGUxNTQwZmFmZTkyYWE1YWNjMTk1Li45MGM0ZjUzOTAwNWM4MmIwZTIzYWI5MTIwNzY5OWFlYTRh
MDM5YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaApAQCAtMzcsNyAr
MzcsMTAgQEAgc3RydWN0IFN0YXRpY1ZhbHVlRW50cnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFN0YXRpY1ZhbHVlRW50cnkoSlNPYmplY3RHZXRQcm9wZXJ0
eUNhbGxiYWNrIF9nZXRQcm9wZXJ0eSwgSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIF9zZXRQ
cm9wZXJ0eSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgX2F0dHJpYnV0ZXMsIFN0cmluZyYgcHJvcGVy
dHlOYW1lKQotICAgIDogZ2V0UHJvcGVydHkoX2dldFByb3BlcnR5KSwgc2V0UHJvcGVydHkoX3Nl
dFByb3BlcnR5KSwgYXR0cmlidXRlcyhfYXR0cmlidXRlcyksIHByb3BlcnR5TmFtZVJlZihPcGFx
dWVKU1N0cmluZzo6Y3JlYXRlKHByb3BlcnR5TmFtZSkpCisgICAgICAgIDogZ2V0UHJvcGVydHko
X2dldFByb3BlcnR5KQorICAgICAgICAsIHNldFByb3BlcnR5KF9zZXRQcm9wZXJ0eSkKKyAgICAg
ICAgLCBhdHRyaWJ1dGVzKF9hdHRyaWJ1dGVzKQorICAgICAgICAsIHByb3BlcnR5TmFtZVJlZihP
cGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHByb3BlcnR5TmFtZSkpCiAgICAgewogICAgIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggN2Y4NTY5NjVlMjg3
NzExNzlhYjQ4ZmJlMDNiMzgxZTI3YjM4OTkxNS4uMjc1NjZmNDFiOTdlMWIzOWJkZGU5YjQ4YWFh
NTU5ZjE0Y2I3MzllYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHQubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAg
LTEwMCw4ICsxMDAsOCBAQCAtIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICop
c2NyaXB0CiAtIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0IHdp
dGhTb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMCiB7CiAgICAgSlNWYWx1ZVJlZiBleGNlcHRp
b25WYWx1ZSA9IG51bGxwdHI7Ci0gICAgYXV0byBzY3JpcHRKUyA9IE9wYXF1ZUpTU3RyaW5nOjpj
cmVhdGUoc2NyaXB0KTsKLSAgICBhdXRvIHNvdXJjZVVSTEpTID0gT3BhcXVlSlNTdHJpbmc6OmNy
ZWF0ZShbc291cmNlVVJMIGFic29sdXRlU3RyaW5nXSk7CisgICAgYXV0byBzY3JpcHRKUyA9IE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoc2NyaXB0KTsKKyAgICBhdXRvIHNvdXJjZVVSTEpTID0g
T3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShbc291cmNlVVJMIGFic29sdXRlU3RyaW5nXSk7CiAg
ICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU0V2YWx1YXRlU2NyaXB0KG1fY29udGV4dCwgc2NyaXB0
SlMuZ2V0KCksIG51bGxwdHIsIHNvdXJjZVVSTEpTLmdldCgpLCAwLCAmZXhjZXB0aW9uVmFsdWUp
OwogCiAgICAgaWYgKGV4Y2VwdGlvblZhbHVlKQpAQCAtMjAwLDcgKzIwMCw3IEBAIC0gKE5TU3Ry
aW5nICopbmFtZQogCiAtICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIEpT
R2xvYmFsQ29udGV4dFNldE5hbWUobV9jb250ZXh0LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKG5h
bWUpLmdldCgpKTsKKyAgICBKU0dsb2JhbENvbnRleHRTZXROYW1lKG1fY29udGV4dCwgT3BhcXVl
SlNTdHJpbmc6OnRyeUNyZWF0ZShuYW1lKS5nZXQoKSk7CiB9CiAKIC0gKEJPT0wpX3JlbW90ZUlu
c3BlY3Rpb25FbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5j
cHAKaW5kZXggZjNjMGZkMWM3ZTA2ZDM0MzAwMmMxNGUzZWNhYTMwNjQzZDI3MmFkNy4uZTE4ZGZk
MjFmZjI4NDAwN2QwMDM5ZTY0MzJkOWVjM2M0ZjFmMzE3NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIEpTU3RyaW5nUmVm
IEpTR2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCiAgICAgaWYg
KG5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIE9wYXF1ZUpT
U3RyaW5nOjpjcmVhdGUobmFtZSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmlu
Zzo6dHJ5Q3JlYXRlKG5hbWUpLmxlYWtSZWYoKTsKIH0KIAogdm9pZCBKU0dsb2JhbENvbnRleHRT
ZXROYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUpCkBAIC0zMTYs
NyArMzE2LDcgQEAgSlNTdHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQ29udGV4
dFJlZiBjdHgsIHVuc2lnbmVkIG1heFN0YWNrU2l6ZSkKICAgICBCYWNrdHJhY2VGdW5jdG9yIGZ1
bmN0b3IoYnVpbGRlciwgbWF4U3RhY2tTaXplKTsKICAgICBmcmFtZS0+aXRlcmF0ZShmdW5jdG9y
KTsKIAotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGJ1aWxkZXIudG9TdHJpbmco
KSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGJ1aWxk
ZXIudG9TdHJpbmcoKSkubGVha1JlZigpOwogfQogCiBib29sIEpTR2xvYmFsQ29udGV4dEdldFJl
bW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IGQ4ZDJkZjEwMDRhYTMzZWU5MWM3
NDJhOWIxMDY3ZDU4ZDA1ZTBjYWYuLjUxMTY5YzRkNGQ4YjU4YjRkNDY1NWJiMWY1YzU4NmVmZTM5
MzRkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC04
MjAsNyArODIwLDcgQEAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBKU09iamVjdENvcHlQcm9wZXJ0
eU5hbWVzKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG8KICAgICBzaXplX3Qgc2l6ZSA9
IGFycmF5LnNpemUoKTsKICAgICBwcm9wZXJ0eU5hbWVzLT5hcnJheS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHNpemUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAg
ICAgICBwcm9wZXJ0eU5hbWVzLT5hcnJheS51bmNoZWNrZWRBcHBlbmQoT3BhcXVlSlNTdHJpbmc6
OmNyZWF0ZShhcnJheVtpXS5zdHJpbmcoKSkucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIHBy
b3BlcnR5TmFtZXMtPmFycmF5LnVuY2hlY2tlZEFwcGVuZChPcGFxdWVKU1N0cmluZzo6dHJ5Q3Jl
YXRlKGFycmF5W2ldLnN0cmluZygpKS5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgIHJldHVybiBK
U1Byb3BlcnR5TmFtZUFycmF5UmV0YWluKHByb3BlcnR5TmFtZXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAppbmRleCAzM2Y1OWEzNjMzNDE3MWIxNDU1NmM2
YmUzMzQ4ZjZjMTIwMTJmMTcyLi5iYjcyMGRiZThkNzFhODI4ZGQ4NmQ4ZmQ3OGE5ZTM1OGRmM2E3
MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtOTks
NyArOTksNyBAQCBKU1NjcmlwdFJlZiBKU1NjcmlwdENyZWF0ZVJlZmVyZW5jaW5nSW1tb3J0YWxB
U0NJSVRleHQoSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dAogICAgIFBhcnNlckVycm9yIGVycm9y
OwogICAgIGlmICghcGFyc2VTY3JpcHQodm0sIFNvdXJjZUNvZGUocmVzdWx0LmNvcHlSZWYoKSks
IGVycm9yKSkgewogICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKQotICAgICAgICAgICAgKmVycm9y
TWVzc2FnZSA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoZXJyb3IubWVzc2FnZSgpKS5sZWFrUmVm
KCk7CisgICAgICAgICAgICAqZXJyb3JNZXNzYWdlID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0
ZShlcnJvci5tZXNzYWdlKCkpLmxlYWtSZWYoKTsKICAgICAgICAgaWYgKGVycm9yTGluZSkKICAg
ICAgICAgICAgICplcnJvckxpbmUgPSBlcnJvci5saW5lKCk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMTIxLDcgKzEyMSw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0
cmluZyhKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0R3JvdXAsIEpTU3RyaW5nUmVmCiAgICAgUGFy
c2VyRXJyb3IgZXJyb3I7CiAgICAgaWYgKCFwYXJzZVNjcmlwdCh2bSwgU291cmNlQ29kZShyZXN1
bHQuY29weVJlZigpKSwgZXJyb3IpKSB7CiAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpCi0gICAg
ICAgICAgICAqZXJyb3JNZXNzYWdlID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShlcnJvci5tZXNz
YWdlKCkpLmxlYWtSZWYoKTsKKyAgICAgICAgICAgICplcnJvck1lc3NhZ2UgPSBPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKGVycm9yLm1lc3NhZ2UoKSkubGVha1JlZigpOwogICAgICAgICBpZiAo
ZXJyb3JMaW5lKQogICAgICAgICAgICAgKmVycm9yTGluZSA9IGVycm9yLmxpbmUoKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTU3RyaW5nUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYu
Y3BwCmluZGV4IDE2ODNhYWU1OTUyOTM5MDI0NWFhZmFjMGJhMzFiYjg3MjAwYjlmMzYuLmU2NDRm
MWFiN2E3ZjRmYmUxZjY5YjIwYjcxZjMxNGEyZjAyNTU0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwCkBAIC02Miw3ICs2Miw3IEBAIEpTU3RyaW5nUmVmIEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnN0IGNoYXIqIHN0cmluZykKIEpTU3RyaW5n
UmVmIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoY29uc3QgSlNDaGFyKiBjaGFy
cywgc2l6ZV90IG51bUNoYXJzKQogewogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBy
ZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY2hhcnMpLCBudW1DaGFycykpLmxl
YWtSZWYoKTsKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShTdHJpbmdJbXBs
OjpjcmVhdGVXaXRob3V0Q29weWluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY2hh
cnMpLCBudW1DaGFycykpLmxlYWtSZWYoKTsKIH0KIAogSlNTdHJpbmdSZWYgSlNTdHJpbmdSZXRh
aW4oSlNTdHJpbmdSZWYgc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCmlu
ZGV4IGQ3OTc0MmFmMzc0ZmI4NTVlZTk0ZWU2M2Y0ZTkxZWQ0MzY0ZmUwNTAuLjllNTM0YjBhZWIw
NTFmMzQ2YjM0YWQxYzY3NzQ0OWMzYWVkMzAyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWUubW0KQEAgLTEyNiwxNSArMTI2LDE1IEBAICsgKEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdB
cnJheUluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogCiArIChKU1ZhbHVlICopdmFsdWVX
aXRoTmV3UmVndWxhckV4cHJlc3Npb25Gcm9tUGF0dGVybjooTlNTdHJpbmcgKilwYXR0ZXJuIGZs
YWdzOihOU1N0cmluZyAqKWZsYWdzIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogewot
ICAgIGF1dG8gcGF0dGVyblN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocGF0dGVybik7
Ci0gICAgYXV0byBmbGFnc1N0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoZmxhZ3MpOwor
ICAgIGF1dG8gcGF0dGVyblN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUocGF0dGVy
bik7CisgICAgYXV0byBmbGFnc1N0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoZmxh
Z3MpOwogICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzWzJdID0geyBKU1ZhbHVlTWFrZVN0cmluZyhb
Y29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBwYXR0ZXJuU3RyaW5nLmdldCgpKSwgSlNWYWx1
ZU1ha2VTdHJpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgZmxhZ3NTdHJpbmcuZ2V0
KCkpIH07CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6SlNPYmplY3RN
YWtlUmVnRXhwKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIDIsIGFyZ3VtZW50cywgMCkg
aW5Db250ZXh0OmNvbnRleHRdOwogfQogCiArIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3RXJyb3JG
cm9tTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGluQ29udGV4dDooSlNDb250ZXh0ICopY29u
dGV4dAogewotICAgIGF1dG8gc3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShtZXNzYWdl
KTsKKyAgICBhdXRvIHN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobWVzc2FnZSk7
CiAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudCA9IEpTVmFsdWVNYWtlU3RyaW5nKFtjb250ZXh0IEpT
R2xvYmFsQ29udGV4dFJlZl0sIHN0cmluZy5nZXQoKSk7CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZh
bHVlV2l0aEpTVmFsdWVSZWY6SlNPYmplY3RNYWtlRXJyb3IoW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSwgMSwgJmFyZ3VtZW50LCAwKSBpbkNvbnRleHQ6Y29udGV4dF07CiB9CkBAIC0xNTEs
NyArMTUxLDcgQEAgKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDooSlND
b250ZXh0ICopY29udGV4dAogCiArIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURl
c2NyaXB0aW9uOihOU1N0cmluZyAqKWRlc2NyaXB0aW9uIGluQ29udGV4dDooSlNDb250ZXh0ICop
Y29udGV4dAogewotICAgIGF1dG8gc3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShkZXNj
cmlwdGlvbik7CisgICAgYXV0byBzdHJpbmcgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGRl
c2NyaXB0aW9uKTsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpKU1Zh
bHVlTWFrZVN5bWJvbChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBzdHJpbmcuZ2V0KCkp
IGluQ29udGV4dDpjb250ZXh0XTsKIH0KIApAQCAtMjkyLDcgKzI5Miw3IEBAIGlubGluZSBFeHBl
Y3RlZDxSZXN1bHQsIEpTVmFsdWVSZWY+IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbihOU1N0cmlu
Z0Z1bmN0aW9uIHN0CiAgICAgUmVzdWx0IHJlc3VsdDsKICAgICAvLyBJZiBpdCdzIGEgTlNTdHJp
bmcgYWxyZWFkeSwgcmVkdWNlIGluZGlyZWN0aW9uIGFuZCBqdXN0IHBhc3MgdGhlIE5TU3RyaW5n
LgogICAgIGlmIChbcHJvcGVydHlLZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkg
ewotICAgICAgICBhdXRvIG5hbWUgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKChOU1N0cmluZyAq
KXByb3BlcnR5S2V5KTsKKyAgICAgICAgYXV0byBuYW1lID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNy
ZWF0ZSgoTlNTdHJpbmcgKilwcm9wZXJ0eUtleSk7CiAgICAgICAgIHJlc3VsdCA9IHN0cmluZ0Z1
bmN0aW9uKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZS5nZXQoKSwg
YXJndW1lbnRzLi4uLCAmZXhjZXB0aW9uKTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzdWx0ID0g
anNGdW5jdGlvbihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIFtbSlNWYWx1
ZSB2YWx1ZVdpdGhPYmplY3Q6cHJvcGVydHlLZXkgaW5Db250ZXh0OmNvbnRleHRdIEpTVmFsdWVS
ZWZdLCBhcmd1bWVudHMuLi4sICZleGNlcHRpb24pOwpAQCAtNTIwLDcgKzUyMCw3IEBAIC0gKEpT
VmFsdWUgKilpbnZva2VNZXRob2Q6KE5TU3RyaW5nICopbWV0aG9kIHdpdGhBcmd1bWVudHM6KE5T
QXJyYXkgKilhcmd1bWVudHMKICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gW19j
b250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogCi0gICAgYXV0byBu
YW1lID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShtZXRob2QpOworICAgIGF1dG8gbmFtZSA9IE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobWV0aG9kKTsKICAgICBKU1ZhbHVlUmVmIGZ1bmN0aW9u
ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgdGhp
c09iamVjdCwgbmFtZS5nZXQoKSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKICAg
ICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9u
XTsKQEAgLTc3NCw3ICs3NzQsNyBAQCBzdGF0aWMgaWQgY29udGFpbmVyVmFsdWVUb09iamVjdChK
U0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNDb250YWluZXJDb252ZXJ0bwogICAgICAgICAg
ICAgQVNTRVJUKFtjdXJyZW50Lm9iamMgaXNLaW5kT2ZDbGFzczpbTlNNdXRhYmxlQXJyYXkgY2xh
c3NdXSk7CiAgICAgICAgICAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSAoTlNNdXRhYmxlQXJy
YXkgKiljdXJyZW50Lm9iamM7CiAgICAgICAgIAotICAgICAgICAgICAgYXV0byBsZW5ndGhTdHJp
bmcgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKCJsZW5ndGgiX3MpOworICAgICAgICAgICAgYXV0
byBsZW5ndGhTdHJpbmcgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCJsZW5ndGgiX3MpOwog
ICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gSlNDOjp0b1VJbnQzMihKU1ZhbHVlVG9OdW1i
ZXIoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBqcywgbGVuZ3RoU3RyaW5n
LmdldCgpLCAwKSwgMCkpOwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKQEAgLTk4NCw3ICs5ODQsNyBAQCBzdGF0aWMgT2JqY0NvbnRhaW5lckNv
bnZlcnRvcjo6VGFzayBvYmplY3RUb1ZhbHVlV2l0aG91dENvcHkoSlNDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgcmV0dXJuIHsgb2JqZWN0LCAoKEpTVmFsdWUgKilvYmplY3QpLT5tX3Zh
bHVlLCBDb250YWluZXJOb25lIH07CiAKICAgICAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSkgewotICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBPcGFxdWVK
U1N0cmluZzo6Y3JlYXRlKChOU1N0cmluZyAqKW9iamVjdCk7CisgICAgICAgICAgICBhdXRvIHN0
cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoKE5TU3RyaW5nICopb2JqZWN0KTsKICAg
ICAgICAgICAgIHJldHVybiB7IG9iamVjdCwgSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dFJlZiwg
c3RyaW5nLmdldCgpKSwgQ29udGFpbmVyTm9uZSB9OwogICAgICAgICB9CiAKQEAgLTEwNDEsNyAr
MTA0MSw3IEBAIEpTVmFsdWVSZWYgb2JqZWN0VG9WYWx1ZShKU0NvbnRleHQgKmNvbnRleHQsIGlk
IG9iamVjdCkKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IChOU0RpY3Rp
b25hcnkgKiljdXJyZW50Lm9iamM7CiAgICAgICAgICAgICBmb3IgKGlkIGtleSBpbiBbZGljdGlv
bmFyeSBrZXlFbnVtZXJhdG9yXSkgewogICAgICAgICAgICAgICAgIGlmIChba2V5IGlzS2luZE9m
Q2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKChOU1N0cmluZyAqKWtleSk7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNy
ZWF0ZSgoTlNTdHJpbmcgKilrZXkpOwogICAgICAgICAgICAgICAgICAgICBKU09iamVjdFNldFBy
b3BlcnR5KGNvbnRleHRSZWYsIGpzLCBwcm9wZXJ0eU5hbWUuZ2V0KCksIGNvbnZlcnRvci5jb252
ZXJ0KFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTprZXldKSwgMCwgMCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5j
cHAKaW5kZXggMjNmMTdiYzIxYmIzYzA4MjlkZTBhNTYwNDMzNzA2ODUwZmMxZWMwNS4uNGMxMmI5
NmNmZGQ2OTIzZmI3YzMyYmY4NDgzMTAyYzM2MTQ2YzQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWVSZWYuY3BwCkBAIC0zODYsNyArMzg2LDcgQEAgSlNTdHJpbmdSZWYgSlNW
YWx1ZUNyZWF0ZUpTT05TdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiBhcGlWYWx1
ZSwgdW5zaWcKICAgICAgICAgKmV4Y2VwdGlvbiA9IDA7CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlv
bklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlk
VGhyb3cpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3Jl
YXRlKHJlc3VsdCkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3Jl
YXRlKHJlc3VsdCkubGVha1JlZigpOwogfQogCiBib29sIEpTVmFsdWVUb0Jvb2xlYW4oSlNDb250
ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKQEAgLTQzNCw3ICs0MzQsNyBAQCBKU1N0cmlu
Z1JlZiBKU1ZhbHVlVG9TdHJpbmdDb3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFs
dWUsIEpTVmFsdWVSZWYqCiAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVl
KTsKICAgICAKLSAgICBhdXRvIHN0cmluZ1JlZihPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGpzVmFs
dWUudG9XVEZTdHJpbmcoZXhlYykpKTsKKyAgICBhdXRvIHN0cmluZ1JlZihPcGFxdWVKU1N0cmlu
Zzo6dHJ5Q3JlYXRlKGpzVmFsdWUudG9XVEZTdHJpbmcoZXhlYykpKTsKICAgICBpZiAoaGFuZGxl
RXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3Rh
dHVzOjpEaWRUaHJvdykKICAgICAgICAgc3RyaW5nUmVmID0gbnVsbHB0cjsKICAgICByZXR1cm4g
c3RyaW5nUmVmLmxlYWtSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvT3BhcXVlSlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVK
U1N0cmluZy5jcHAKaW5kZXggOTgxZGM4NWIwODVmMTg5N2U1Y2VkYmQ4MTI1OTczYTBiYzA0ZDQ5
ZS4uNzdhMmUxYzdmMTM1NDVjYzA4ZGQwODJiM2ZkMjk0MWQzZTA4NWUyNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAK
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBPcGFxdWVK
U1N0cmluZzo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPE9wYXF1ZUpTU3Ry
aW5nPiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewog
ICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDIs
NyArNDIsNyBAQCBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPcGFxdWVKU1N0
cmluZyhzdHJpbmcpKTsKIH0KIAotUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBPcGFxdWVKU1N0cmlu
Zzo6Y3JlYXRlKFN0cmluZyYmIHN0cmluZykKK1JlZlB0cjxPcGFxdWVKU1N0cmluZz4gT3BhcXVl
SlNTdHJpbmc6OnRyeUNyZWF0ZShTdHJpbmcmJiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL09wYXF1ZUpTU3RyaW5nLmgKaW5kZXggYWQyZmZjZGU1NzEyNWU4YWY3MmYyMzkxNDNlZGJj
MDcyNTI0NjE2MC4uNGE0YjVlZGZiYTIwMTQ2Yzg5MzIwMTQzZjliNWY0ZDFkZDEwZDY3NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaApAQCAtNTEsOCArNTEs
OCBAQCBzdHJ1Y3QgT3BhcXVlSlNTdHJpbmcgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
T3BhcXVlSlNTdHJpbmc+IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3BhcXVlSlNT
dHJpbmcoY2hhcmFjdGVycywgbGVuZ3RoKSk7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IGNyZWF0
ZShTdHJpbmcmJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxPcGFxdWVK
U1N0cmluZz4gdHJ5Q3JlYXRlKGNvbnN0IFN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHRyeUNyZWF0ZShTdHJpbmcmJik7CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSB+T3BhcXVlSlNTdHJpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCmluZGV4IGI1NDhlZmJmZjY5NmE1ZWFm
YTc0Y2VlZDg1NTcyMmMzMjJiOTJhNDQuLjQwZWE1YzE0OTE3YjNjZGQ0ZjdlZWMwYTI0YmUyMDBm
N2NjMDc3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0ND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4
dC5jcHAKQEAgLTgxOSw3ICs4MTksNyBAQCBKU0NWYWx1ZSoganNjX2NvbnRleHRfZXZhbHVhdGUo
SlNDQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogY29kZSwgZ3NzaXplIGxlbgogCiBzdGF0
aWMgSlNWYWx1ZVJlZiBldmFsdWF0ZVNjcmlwdEluQ29udGV4dChKU0dsb2JhbENvbnRleHRSZWYg
anNDb250ZXh0LCBTdHJpbmcmJiBzY3JpcHQsIGNvbnN0IGNoYXIqIHVyaSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBzY3JpcHRKUyhBZG9wdCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShXVEZNb3ZlKHNj
cmlwdCkpLmxlYWtSZWYoKSk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHNjcmlwdEpT
KEFkb3B0LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKFdURk1vdmUoc2NyaXB0KSkubGVha1Jl
ZigpKTsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc291cmNlVVJJID0gdXJpID8gYWRv
cHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXJpKSkgOiBudWxscHRyOwogICAgIHJl
dHVybiBKU0V2YWx1YXRlU2NyaXB0KGpzQ29udGV4dCwgc2NyaXB0SlMuZ2V0KCksIG51bGxwdHIs
IHNvdXJjZVVSSS5nZXQoKSwgbGluZU51bWJlciwgZXhjZXB0aW9uKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmFsdWUuY3BwCmluZGV4IDc5ZTUzMTZmZDM2MjkzYzhk
ZDAyMzM2MjNiYWQwM2JhYTg1ZDljM2IuLjZlMjc0Zjg5ZjQzN2I2M2M5NTkyNTcyMzQyZjk3MDUz
OWNhYWUxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NW
YWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmNw
cApAQCAtMzY3LDcgKzM2Nyw3IEBAIEpTQ1ZhbHVlKiBqc2NfdmFsdWVfbmV3X3N0cmluZ19mcm9t
X2J5dGVzKEpTQ0NvbnRleHQqIGNvbnRleHQsIEdCeXRlcyogYnl0ZXMpCiAgICAgZ3NpemUgZGF0
YVNpemU7CiAgICAgY29uc3QgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihn
X2J5dGVzX2dldF9kYXRhKGJ5dGVzLCAmZGF0YVNpemUpKTsKICAgICBhdXRvIHN0cmluZyA9IFN0
cmluZzo6ZnJvbVVURjgoZGF0YSwgZGF0YVNpemUpOwotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBqc1N0cmluZyhBZG9wdCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShXVEZNb3ZlKHN0cmlu
ZykpLmxlYWtSZWYoKSk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGpzU3RyaW5nKEFk
b3B0LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKFdURk1vdmUoc3RyaW5nKSkubGVha1JlZigp
KTsKICAgICByZXR1cm4ganNjQ29udGV4dEdldE9yQ3JlYXRlVmFsdWUoY29udGV4dCwgSlNWYWx1
ZU1ha2VTdHJpbmcoanNjQ29udGV4dEdldEpTQ29udGV4dChjb250ZXh0KSwganNTdHJpbmcuZ2V0
KCkpKS5sZWFrUmVmKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGF6eVNsb3dQYXRoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExhenlT
bG93UGF0aC5oCmluZGV4IDlhNmU2MDFhZDMxOWJkZGZjM2E5OGUwNWQ5OTMwYjgxZGFlMWRhZGQu
LmE1YjNhNzI1MmE0MTM3NzY4NTJmNDFmYTI1MTI0YjkwODM3OGRiMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGF6eVNsb3dQYXRoLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1BhdGguaApAQCAtNTksNyArNTksNyBAQCBjbGFz
cyBMYXp5U2xvd1BhdGggewogICAgIHR5cGVkZWYgU2hhcmVkVGFzazxHZW5lcmF0b3JGdW5jdGlv
bj4gR2VuZXJhdG9yOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBzdGF0
aWMgUmVmUHRyPEdlbmVyYXRvcj4gY3JlYXRlR2VuZXJhdG9yKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCisgICAgc3RhdGljIFJlZjxHZW5lcmF0b3I+IGNyZWF0ZUdlbmVyYXRvcihjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgcmV0dXJuIGNyZWF0ZVNoYXJlZFRhc2s8R2Vu
ZXJhdG9yRnVuY3Rpb24+KGZ1bmN0b3IpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTGF6eVNsb3dQYXRoQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMYXp5U2xvd1BhdGhDYWxsLmgKaW5kZXggYmZiMmFjZWM4NmVkODY3NzZmMWIx
MTY1NTI4ZGM1MjIxNzYxYWU2Ni4uNzRmZDZlYzdiNzJmMzIyMzQyMWFhNjY0YmExYjZhNjdiYzc3
MjkzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1Bh
dGhDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1BhdGhD
YWxsLmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRUeXBl
cz4KLVJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0
b3IoCitSZWY8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9y
KAogICAgIFZNJiB2bSwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbiwgUmVz
dWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQogewogICAgIHJldHVy
biBMYXp5U2xvd1BhdGg6OmNyZWF0ZUdlbmVyYXRvcigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9TUkV4aXQuY3BwCmluZGV4IDMyOGYwYzgxODI4YmZjYjk2YjExYTk0OWVkYTE5ZDFlMDY3
MWQxNTQuLjA5OTU4ZDJjNGY5YTVkODliNWZiYmI2NWY4NmJiNmRhYmNkZjE4ZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0LmNwcApAQCAtNjMsMTcgKzYzLDE3IEBAIHZv
aWQgT1NSRXhpdERlc2NyaXB0b3I6OnZhbGlkYXRlUmVmZXJlbmNlcyhjb25zdCBUcmFja2VkUmVm
ZXJlbmNlcyYgdHJhY2tlZFJlZmVyCiAgICAgICAgIG1hdGVyaWFsaXphdGlvbi0+dmFsaWRhdGVS
ZWZlcmVuY2VzKHRyYWNrZWRSZWZlcmVuY2VzKTsKIH0KIAotUmVmUHRyPE9TUkV4aXRIYW5kbGU+
IE9TUkV4aXREZXNjcmlwdG9yOjplbWl0T1NSRXhpdCgKK1JlZjxPU1JFeGl0SGFuZGxlPiBPU1JF
eGl0RGVzY3JpcHRvcjo6ZW1pdE9TUkV4aXQoCiAgICAgU3RhdGUmIHN0YXRlLCBFeGl0S2luZCBl
eGl0S2luZCwgY29uc3QgTm9kZU9yaWdpbiYgbm9kZU9yaWdpbiwgQ0NhbGxIZWxwZXJzJiBqaXQs
CiAgICAgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMsIHVuc2lnbmVkIG9m
ZnNldCkKIHsKLSAgICBSZWZQdHI8T1NSRXhpdEhhbmRsZT4gaGFuZGxlID0KKyAgICBSZWY8T1NS
RXhpdEhhbmRsZT4gaGFuZGxlID0KICAgICAgICAgcHJlcGFyZU9TUkV4aXRIYW5kbGUoc3RhdGUs
IGV4aXRLaW5kLCBub2RlT3JpZ2luLCBwYXJhbXMsIG9mZnNldCk7CiAgICAgaGFuZGxlLT5lbWl0
RXhpdFRodW5rKHN0YXRlLCBqaXQpOwogICAgIHJldHVybiBoYW5kbGU7CiB9CiAKLVJlZlB0cjxP
U1JFeGl0SGFuZGxlPiBPU1JFeGl0RGVzY3JpcHRvcjo6ZW1pdE9TUkV4aXRMYXRlcigKK1JlZjxP
U1JFeGl0SGFuZGxlPiBPU1JFeGl0RGVzY3JpcHRvcjo6ZW1pdE9TUkV4aXRMYXRlcigKICAgICBT
dGF0ZSYgc3RhdGUsIEV4aXRLaW5kIGV4aXRLaW5kLCBjb25zdCBOb2RlT3JpZ2luJiBub2RlT3Jp
Z2luLAogICAgIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zLCB1bnNpZ25l
ZCBvZmZzZXQpCiB7CkBAIC04MywxNyArODMsMTcgQEAgUmVmUHRyPE9TUkV4aXRIYW5kbGU+IE9T
UkV4aXREZXNjcmlwdG9yOjplbWl0T1NSRXhpdExhdGVyKAogICAgICAgICBbaGFuZGxlLCAmc3Rh
dGVdIChDQ2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAgICAgaGFuZGxlLT5lbWl0RXhpdFRo
dW5rKHN0YXRlLCBqaXQpOwogICAgICAgICB9KTsKLSAgICByZXR1cm4gaGFuZGxlOworICAgIHJl
dHVybiBoYW5kbGUucmVsZWFzZU5vbk51bGwoKTsKIH0KIAotUmVmUHRyPE9TUkV4aXRIYW5kbGU+
IE9TUkV4aXREZXNjcmlwdG9yOjpwcmVwYXJlT1NSRXhpdEhhbmRsZSgKK1JlZjxPU1JFeGl0SGFu
ZGxlPiBPU1JFeGl0RGVzY3JpcHRvcjo6cHJlcGFyZU9TUkV4aXRIYW5kbGUoCiAgICAgU3RhdGUm
IHN0YXRlLCBFeGl0S2luZCBleGl0S2luZCwgY29uc3QgTm9kZU9yaWdpbiYgbm9kZU9yaWdpbiwK
ICAgICBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcywgdW5zaWduZWQgb2Zm
c2V0KQogewogICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGUuaml0Q29kZS0+b3NyRXhpdC5zaXpl
KCk7CiAgICAgT1NSRXhpdCYgZXhpdCA9IHN0YXRlLmppdENvZGUtPm9zckV4aXQuYWxsb2MoCiAg
ICAgICAgIHRoaXMsIGV4aXRLaW5kLCBub2RlT3JpZ2luLmZvckV4aXQsIG5vZGVPcmlnaW4uc2Vt
YW50aWMsIG5vZGVPcmlnaW4ud2FzSG9pc3RlZCk7Ci0gICAgUmVmUHRyPE9TUkV4aXRIYW5kbGU+
IGhhbmRsZSA9IGFkb3B0UmVmKG5ldyBPU1JFeGl0SGFuZGxlKGluZGV4LCBleGl0KSk7CisgICAg
UmVmPE9TUkV4aXRIYW5kbGU+IGhhbmRsZSA9IGFkb3B0UmVmKCpuZXcgT1NSRXhpdEhhbmRsZShp
bmRleCwgZXhpdCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG9mZnNldDsgaSA8IHBhcmFtcy5z
aXplKCk7ICsraSkKICAgICAgICAgZXhpdC5tX3ZhbHVlUmVwcy5hcHBlbmQocGFyYW1zW2ldKTsK
ICAgICBleGl0Lm1fdmFsdWVSZXBzLnNocmlua1RvRml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT1NSRXhpdC5oCmluZGV4IDdjMDJmYjEwZGEwZjFiOGMzZjU2NmY0NTlhZGNiZWMyNWRk
NGM5YjcuLmRhODdjY2YzMjczZmU0YmUzNjA2ODNiOGFmM2JiZjUxNmQ2MjI1ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCkBAIC05MCw3ICs5MCw3IEBAIHN0cnVjdCBP
U1JFeGl0RGVzY3JpcHRvciB7CiAgICAgLy8gdXAgdG8gdGhlIE9TUkV4aXQgb2JqZWN0LCB3aGlj
aCB0aGlzIGNyZWF0ZXMuIE5vdGUgdGhhdCBpdCdzIE9LIHRvIGRyb3AgdGhlIE9TUkV4aXRIYW5k
bGUgb2JqZWN0CiAgICAgLy8gb24gdGhlIGdyb3VuZC4gSXQgY29udGFpbnMgaW5mb3JtYXRpb24g
dGhhdCBpcyBtb3N0bHkgbm90IHVzZWZ1bCBpZiB5b3UgdXNlIHRoaXMgQVBJLCBzaW5jZSBhZnRl
cgogICAgIC8vIHRoaXMgY2FsbCwgdGhlIE9TUkV4aXQgaXMgc2ltcGx5IHJlYWR5IHRvIGdvLgot
ICAgIFJlZlB0cjxPU1JFeGl0SGFuZGxlPiBlbWl0T1NSRXhpdCgKKyAgICBSZWY8T1NSRXhpdEhh
bmRsZT4gZW1pdE9TUkV4aXQoCiAgICAgICAgIFN0YXRlJiwgRXhpdEtpbmQsIGNvbnN0IERGRzo6
Tm9kZU9yaWdpbiYsIENDYWxsSGVscGVycyYsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmLAogICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSAwKTsKIApAQCAtMTAyLDcgKzEwMiw3
IEBAIHN0cnVjdCBPU1JFeGl0RGVzY3JpcHRvciB7CiAgICAgLy8gVGhpcyBBUEkgaXMgbWVhbnQg
dG8gYmUgdXNlZCBmb3IgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nLCB3aGVyZSBzb21l
IHBhdGNocG9pbnQgd2FudHMgdG8KICAgICAvLyBoYXZlIGEgcGxhY2UgdG8ganVtcCB0byBmb3Ig
T1NSIGV4aXQuIEl0IGRvZXNuJ3QgY2FyZSB3aGVyZSB0aGF0IE9TUiBleGl0IGlzIGVtaXR0ZWQg
c28gbG9uZyBhcyBpdAogICAgIC8vIGV2ZW50dWFsbHkgZ2V0cyBhY2Nlc3MgdG8gaXRzIGxhYmVs
LgotICAgIFJlZlB0cjxPU1JFeGl0SGFuZGxlPiBlbWl0T1NSRXhpdExhdGVyKAorICAgIFJlZjxP
U1JFeGl0SGFuZGxlPiBlbWl0T1NSRXhpdExhdGVyKAogICAgICAgICBTdGF0ZSYsIEV4aXRLaW5k
LCBjb25zdCBERkc6Ok5vZGVPcmlnaW4mLCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiwKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMCk7CiAKQEAgLTExMCw3ICsxMTAsNyBA
QCBzdHJ1Y3QgT1NSRXhpdERlc2NyaXB0b3IgewogICAgIC8vIFRoaXMgaXMgdGhlIGxvdy1sZXZl
bCBpbnRlcmZhY2UuIEl0IHdpbGwgY3JlYXRlIGEgaGFuZGxlIHJlcHJlc2VudGluZyB0aGUgZGVz
aXJlIHRvIGVtaXQgY29kZSBmb3IKICAgICAvLyBhbiBPU1IgZXhpdC4gWW91IGNhbiBjYWxsIE9T
UkV4aXRIYW5kbGU6OmVtaXRFeGl0VGh1bmsoKSBvbmNlIHlvdSBoYXZlIGEgcGxhY2UgdG8gZW1p
dCBpdC4gTm90ZQogICAgIC8vIHRoYXQgdGhlIGFib3ZlIHR3byBBUElzIGFyZSB3cml0dGVuIGlu
IHRlcm1zIG9mIHRoaXMgYW5kIE9TUkV4aXRIYW5kbGU6OmVtaXRFeGl0VGh1bmsoKS4KLSAgICBS
ZWZQdHI8T1NSRXhpdEhhbmRsZT4gcHJlcGFyZU9TUkV4aXRIYW5kbGUoCisgICAgUmVmPE9TUkV4
aXRIYW5kbGU+IHByZXBhcmVPU1JFeGl0SGFuZGxlKAogICAgICAgICBTdGF0ZSYsIEV4aXRLaW5k
LCBjb25zdCBERkc6Ok5vZGVPcmlnaW4mLCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiwKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5j
cHAKaW5kZXggNzI5NGIxYjVmNmJhZWU2MWM1NzRjZmU1MTBjZTIzOGM5MzMzNzAyMS4uZmFlZjQx
N2I5ODIzNTRmM2U2NDdhYWQyOWJhMDZjODI3MGNlMDlkMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUuY3Bw
CkBAIC0zOCwxMSArMzgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiB1
c2luZyBuYW1lc3BhY2UgREZHOwogCi1SZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4g
UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZTo6Y3JlYXRlKAorUmVmPFBhdGNocG9pbnRFeGNlcHRp
b25IYW5kbGU+IFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU6OmNyZWF0ZSgKICAgICBTdGF0ZSYg
c3RhdGUsIE9TUkV4aXREZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOb2RlT3JpZ2luIG9yaWdpbiwg
dW5zaWduZWQgb2Zmc2V0LAogICAgIGNvbnN0IEhhbmRsZXJJbmZvJiBoYW5kbGVyKQogewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZShzdGF0ZSwgZGVz
Y3JpcHRvciwgb3JpZ2luLCBvZmZzZXQsIGhhbmRsZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlKHN0YXRlLCBkZXNjcmlwdG9yLCBvcmlnaW4s
IG9mZnNldCwgaGFuZGxlcikpOwogfQogCiBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZT4gUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZTo6ZGVmYXVsdEhhbmRsZShTdGF0ZSYgc3RhdGUp
CkBAIC0xMDgsNyArMTA4LDcgQEAgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZTo6UGF0Y2hwb2lu
dEV4Y2VwdGlvbkhhbmRsZSgKIHsKIH0KIAotUmVmUHRyPE9TUkV4aXRIYW5kbGU+IFBhdGNocG9p
bnRFeGNlcHRpb25IYW5kbGU6OmNyZWF0ZUhhbmRsZSgKK1JlZjxPU1JFeGl0SGFuZGxlPiBQYXRj
aHBvaW50RXhjZXB0aW9uSGFuZGxlOjpjcmVhdGVIYW5kbGUoCiAgICAgRXhpdEtpbmQga2luZCwg
Y29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKQogewogICAgIHJldHVy
biBtX2Rlc2NyaXB0b3ItPmVtaXRPU1JFeGl0TGF0ZXIoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5oCmluZGV4IDFi
MjY2ZDJlMWZlOTc4ODhlYThmNzhkMmM4YzQzYjRlMzY0NjlmZWMuLjQ0OGUxY2Y1ZjA1ZGY1NTgz
YjIzMDI3ZGZlY2U2MTQyN2EyMzIyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5oCkBAIC01MSw3ICs1MSw3
IEBAIHN0cnVjdCBPU1JFeGl0SGFuZGxlOwogCiBjbGFzcyBQYXRjaHBvaW50RXhjZXB0aW9uSGFu
ZGxlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGU+IGNyZWF0ZSgKKyAgICBzdGF0aWMgUmVmPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGNy
ZWF0ZSgKICAgICAgICAgU3RhdGUmLCBPU1JFeGl0RGVzY3JpcHRvciosIERGRzo6Tm9kZU9yaWdp
biwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBIYW5kbGVySW5mbyYpOwogCiAgICAgc3RhdGljIFJl
ZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBkZWZhdWx0SGFuZGxlKFN0YXRlJik7CkBA
IC04OSw3ICs4OSw3IEBAIGNsYXNzIFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGF0Y2hwb2ludEV4Y2VwdGlvCiAgICAgUGF0Y2hwb2ludEV4
Y2VwdGlvbkhhbmRsZSgKICAgICAgICAgU3RhdGUmLCBPU1JFeGl0RGVzY3JpcHRvciosIERGRzo6
Tm9kZU9yaWdpbiwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBIYW5kbGVySW5mbyYpOwogCi0gICAg
UmVmUHRyPE9TUkV4aXRIYW5kbGU+IGNyZWF0ZUhhbmRsZShFeGl0S2luZCwgY29uc3QgQjM6OlN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpOworICAgIFJlZjxPU1JFeGl0SGFuZGxlPiBjcmVhdGVI
YW5kbGUoRXhpdEtpbmQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKTsKIAog
ICAgIFN0YXRlJiBtX3N0YXRlOwogICAgIE9TUkV4aXREZXNjcmlwdG9yKiBtX2Rlc2NyaXB0b3I7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNh
bGxiYWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxi
YWNrLmgKaW5kZXggNTJlMGEyOGZlM2M5MGNmOWYyZjgxODU3NzlhNzZmZjE5MjUzNzVjYy4uMDVj
ZjI4MjBmMzI0YWE1YzA5YTM0ZDIwMTI2MDY2NmM1MmUzNjg4NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaApAQCAtNDEsNyAr
NDEsNyBAQCBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrIDog
cHVibGljIEdDQWN0aXZpdHlDYWxsYmFjayB7CiAgICAgZG91YmxlIGRlYXRoUmF0ZShIZWFwJikg
b3ZlcnJpZGU7CiB9OwogCi1pbmxpbmUgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rp
dml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIoSGVhcCogaGVhcCkKK2lubGluZSBSZWZQdHI8
R0NBY3Rpdml0eUNhbGxiYWNrPiBHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVkZW5UaW1l
cihIZWFwKiBoZWFwKQogewogICAgIHJldHVybiBzX3Nob3VsZENyZWF0ZUdDVGltZXIgPyBhZG9w
dFJlZihuZXcgRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKSkgOiBudWxscHRyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFj
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5o
CmluZGV4IDVjZTAzNGEwY2Q4MWY1NWQyOThmMTI4OTgyNmRlNmY4YmVmNjJiYmEuLjY1MGFlMTM4
N2YxNmFhMDAzZDdkZGI5ODZmMDc1OGZjOWYxZWM0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRnVsbEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1Ymxp
YyBHQ0FjdGl2aXR5Q2FsbGJhY2sgewogICAgIGJvb2wgbV9kaWRHQ1JlY2VudGx5IHsgZmFsc2Ug
fTsKIH07CiAKLWlubGluZSBSZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rpdml0
eUNhbGxiYWNrOjpjcmVhdGVGdWxsVGltZXIoSGVhcCogaGVhcCkKK2lubGluZSBSZWZQdHI8RnVs
bEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVhdGVGdWxsVGlt
ZXIoSGVhcCogaGVhcCkKIHsKICAgICByZXR1cm4gc19zaG91bGRDcmVhdGVHQ1RpbWVyID8gYWRv
cHRSZWYobmV3IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkpIDogbnVsbHB0cjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgKaW5kZXgg
OWRmZGQwZjcwMDdkMjEzYjRmYjk1NDQ5YjE2ZWZlZGQ4ZTRjM2EzNi4uYzM3MWY3N2QyYjY0YjQz
ZGFjNzQ2MzE0ZDdjMWQ5ZDI1ZjM5ZmIwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgKQEAgLTQzLDggKzQzLDggQEAgY2xhc3MgSGVhcDsK
IGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBKU1J1
bkxvb3BUaW1lciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTUnVuTG9vcFRpbWVyOwot
ICAgIHN0YXRpYyBSZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlRnVsbFRpbWVy
KEhlYXAqKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlRWRl
blRpbWVyKEhlYXAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s+
IHRyeUNyZWF0ZUZ1bGxUaW1lcihIZWFwKik7CisgICAgc3RhdGljIFJlZlB0cjxHQ0FjdGl2aXR5
Q2FsbGJhY2s+IHRyeUNyZWF0ZUVkZW5UaW1lcihIZWFwKik7CiAKICAgICBHQ0FjdGl2aXR5Q2Fs
bGJhY2soSGVhcCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IGNjNGEz
MzY1MWEyZjE5NmZjYWZiMzJhY2MwYTYwM2Q5ODg4MjNmMDguLmY0NjhkNDFlNGZmYzdhNmFjN2Q0
Mjk1ZmNiZmE3NzcyMjE3YmJjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBA
IC0zMDQsOCArMzA0LDggQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQog
ICAgIC8vIHNjaGVkdWxlIHRoZSB0aW1lciBpZiB3ZSd2ZSBuZXZlciBkb25lIGEgY29sbGVjdGlv
bi4KICAgICAsIG1fbGFzdEZ1bGxHQ0xlbmd0aCgwLjAxKQogICAgICwgbV9sYXN0RWRlbkdDTGVu
Z3RoKDAuMDEpCi0gICAgLCBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFj
azo6Y3JlYXRlRnVsbFRpbWVyKHRoaXMpKQotICAgICwgbV9lZGVuQWN0aXZpdHlDYWxsYmFjayhH
Q0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZUVkZW5UaW1lcih0aGlzKSkKKyAgICAsIG1fZnVsbEFj
dGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVhdGVGdWxsVGltZXIodGhp
cykpCisgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5
Q3JlYXRlRWRlblRpbWVyKHRoaXMpKQogICAgICwgbV9zd2VlcGVyKGFkb3B0UmVmKG5ldyBJbmNy
ZW1lbnRhbFN3ZWVwZXIodGhpcykpKQogICAgICwgbV9zdG9wSWZOZWNlc3NhcnlUaW1lcihhZG9w
dFJlZihuZXcgU3RvcElmTmVjZXNzYXJ5VGltZXIodm0pKSkKICAgICAsIG1fZGVmZXJyYWxEZXB0
aCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0
YWNrVHJhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNr
VHJhY2UuY3BwCmluZGV4IDMxNGI4N2M2ODdiODBlZGE4NGE2NmM4N2E2YTVhOGIxOWQwMjE0NjYu
LjhjYjA5Nzk2ZjEyODIxNjU3N2IyZjkwYWQyZTJjZTBjNGQyYmMzODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQXN5bmNTdGFja1RyYWNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHAKQEAgLTMx
LDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLVJlZlB0cjxBc3luY1N0YWNr
VHJhY2U+IEFzeW5jU3RhY2tUcmFjZTo6Y3JlYXRlKFJlZjxTY3JpcHRDYWxsU3RhY2s+JiYgY2Fs
bFN0YWNrLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxBc3luY1N0YWNrVHJhY2U+IHBhcmVudCkK
K1JlZjxBc3luY1N0YWNrVHJhY2U+IEFzeW5jU3RhY2tUcmFjZTo6Y3JlYXRlKFJlZjxTY3JpcHRD
YWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxBc3luY1N0YWNr
VHJhY2U+IHBhcmVudCkKIHsKICAgICBBU1NFUlQoY2FsbFN0YWNrLT5zaXplKCkpOwogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEFzeW5jU3RhY2tUcmFjZShXVEZNb3ZlKGNhbGxTdGFjayksIHNp
bmdsZVNob3QsIFdURk1vdmUocGFyZW50KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvQXN5bmNTdGFja1RyYWNlLmgKaW5kZXggMWMzY2NmNDgzN2FiMTU3MjEwYzAz
ZmM4M2ZiZGQ3Yzc5Nzg1MTkyNC4uMjJiM2ZlNzQ5NWIxOGU0YTViZTA3Mzc5MzUyMDllZDk1NTFh
Y2RlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0
YWNrVHJhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3Rh
Y2tUcmFjZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEFzeW5j
U3RhY2tUcmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPEFzeW5jU3RhY2tUcmFjZT4gewogICAgICAg
ICBDYW5jZWxlZCwKICAgICB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxBc3luY1N0YWNrVHJhY2U+
IGNyZWF0ZShSZWY8U2NyaXB0Q2FsbFN0YWNrPiYmLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxB
c3luY1N0YWNrVHJhY2U+IHBhcmVudCk7CisgICAgc3RhdGljIFJlZjxBc3luY1N0YWNrVHJhY2U+
IGNyZWF0ZShSZWY8U2NyaXB0Q2FsbFN0YWNrPiYmLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxB
c3luY1N0YWNrVHJhY2U+IHBhcmVudCk7CiAKICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0Owog
ICAgIGJvb2wgaXNMb2NrZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMzhhMDBh
NzFiNjE4ZTcxNDdlMzFhYmFmY2ZmMzNjYzRkYTBkMGQ1ZC4uOTJhNWYyMDhhZjRjYzJiM2Y1YTg0
NDJiODI4MDVlNzFmMjZhMGM1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTg4Nyw3ICs4ODcs
OSBAQCBzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZp
bGUoRklMRSogZmlsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKGZzZWVrKGZp
bGUsIDAsIFNFRUtfU0VUKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUmVm
UHRyPFVpbnQ4QXJyYXk+IHJlc3VsdCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShidWZmZXJDYXBhY2l0
eSk7CisgICAgYXV0byByZXN1bHQgPSBVaW50OEFycmF5Ojp0cnlDcmVhdGUoYnVmZmVyQ2FwYWNp
dHkpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBzaXpl
X3QgcmVhZFNpemUgPSBmcmVhZChyZXN1bHQtPmRhdGEoKSwgMSwgYnVmZmVyQ2FwYWNpdHksIGZp
bGUpOwogICAgIGlmIChyZWFkU2l6ZSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZmZlckNhcGFj
aXR5KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBkZWVhMjU0NTA5NmNiNTk2YzE4MWFlYzc2ODUxNWZj
MWMxYTA4MDUxLi5lYjM2N2MxNGNkMTkzMDFjNTNkNjdmMmEwZTA5NGQ2MjM0MWZjMWM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTExMSw3ICsx
MTEsNyBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxB
cnJheUJ1ZmZlcj4gewogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlC
dWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpOwogCi0gICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBl
ZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkIGFuZCBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFy
cmF5QnVmZmVyLgorICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZl
ci4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZTVmZDRiYjc0MTZmM2UyNTBmZjhhNjg5NTE1
N2VmZDg2ZjVkYzQ5OC4uZWYyZTgwZjRlYTAzYmRlNjQ5MWNmNzMzM2EyN2I3YzU3N2YwZWI1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVk
QXJyYXlWaWV3LmgKQEAgLTM2LDExICszNiwxNSBAQCBjbGFzcyBHZW5lcmljVHlwZWRBcnJheVZp
ZXcgZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKICAgICBHZW5lcmljVHlwZWRBcnJh
eVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+
IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0
ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0
ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRy
eUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCk7CiAgICAgCi0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVm
PEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAgICAgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUqPihiYXNlQWRkcmVzcygpKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
CmluZGV4IDFiNmRhNTYxZWI3Y2ViMTMxMmFhNjQ4Y2QyZTQ5M2I1ODJiOWI2YjUuLmU2NjBjZmNk
ZDQ4OTQ1NjJkMTc0ZjY0NjU3NWQ1NjIyYjEyMjM3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKQEAgLTM5LDI1ICszOSw1MyBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46Okdl
bmVyaWNUeXBlZEFycmF5VmlldygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlTm9u
TnVsbCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgorUmVmPEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUoCisgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxl
bmd0aCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShhcnJheSwgbGVuZ3RoKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQucmVsZWFzZU5vbk51
bGwoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KK1JlZjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KAorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CisgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0
KTsKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CitSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgp
CiB7CiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aCwgc2l6
ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxl
bmd0aCk7CisgICAgcmV0dXJuIHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgK
K1JlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAogICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5Vmlldz4gcmVzdWx0ID0gY3JlYXRlKGxlbmd0aCk7CisgICAgUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5Vmlldz4gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQp
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIG1lbWNweShyZXN1bHQtPmRhdGEoKSwgYXJy
YXksIGxlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Y3JlYXRlKAorUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoCiAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IEFTU0VSVChidWZmZXIpOwpAQCAtNzAsMTQgKzk4LDIzIEBAIFJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4KK1JlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+CiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoKQoreworICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChs
ZW5ndGgpOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlTm9uTnVsbCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgorUmVmUHRy
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KK0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPQogICAgICAgICBBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBj
cmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOworICAgIHJldHVybiB0cnlDcmVhdGUo
V1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgpAQCAtOTYsNyArMTMzLDcgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpz
dWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0CiAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZl
ciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgQVNTRVJUKGJ1ZmZlcik7CiAgICAgY2xh
bXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBlPigqYnVmZmVyLCBieXRlT2Zmc2V0
KCksICZvZmZzZXQsICZsZW5ndGgpOwotICAgIHJldHVybiBjcmVhdGUoYnVmZmVyLCBvZmZzZXQs
IGxlbmd0aCk7CisgICAgcmV0dXJuIHRyeUNyZWF0ZShidWZmZXIsIG9mZnNldCwgbGVuZ3RoKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCBiMzAzOWEyMzZiYzdk
OTI2MmIzZWUwYmM5ZjRmYWVlZjYzYjczNTdjLi5jMmRlMDAzZmY2YjcxMGRkZTdkZGJiZTgxOTk0
YTU4MjhlNDU3MmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0zMDIsNyArMzAyLDcgQEAgUmVmUHRyPEFycmF5QnVm
ZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCgpCiAgICAgc3dp
dGNoICh0eXBlKCkpIHsKICNkZWZpbmUgRkFDVE9SWSh0eXBlKSBcCiAgICAgY2FzZSB0eXBlICMj
IEFycmF5VHlwZTogXAotICAgICAgICByZXR1cm4gdHlwZSAjIyBBcnJheTo6Y3JlYXRlKGJ1ZmZl
ciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHR5cGUgIyMgQXJyYXk6OnRy
eUNyZWF0ZShidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CiAgICAgRk9SX0VBQ0hfVFlQRURf
QVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKEZBQ1RPUlkpCiAjdW5kZWYgRkFDVE9SWQog
ICAgIGNhc2UgRGF0YVZpZXdUeXBlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBj
YTE4ODQ0NzcyODEwMGM1YWYzN2E1N2Q2ZDdlMTRjNmY4NzkyYjA1Li4yZTU2Y2UxNjViNTk2NGNh
NGRkMDRmNTdlNDc5ODZiNDc0ZGU1YzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApA
QCAtMzE0LDEzICszMTQsMTMgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6c2V0KAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjx0eXBlbmFtZSBBZGFw
dG9yOjpWaWV3VHlwZT4gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnBvc3NpYmx5
U2hhcmVkVHlwZWRJbXBsKCkKIHsKLSAgICByZXR1cm4gQWRhcHRvcjo6Vmlld1R5cGU6OmNyZWF0
ZShwb3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsKKyAgICBy
ZXR1cm4gQWRhcHRvcjo6Vmlld1R5cGU6OnRyeUNyZWF0ZShwb3NzaWJseVNoYXJlZEJ1ZmZlcigp
LCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnVuc2hhcmVkVHlwZWRJbXBsKCkKIHsKLSAgICByZXR1cm4gQWRhcHRv
cjo6Vmlld1R5cGU6OmNyZWF0ZSh1bnNoYXJlZEJ1ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0
aCgpKTsKKyAgICByZXR1cm4gQWRhcHRvcjo6Vmlld1R5cGU6OnRyeUNyZWF0ZSh1bnNoYXJlZEJ1
ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1v
cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKaW5kZXgg
YTY4NWYwZWEzZTRmY2Y5MDVkYjJjYzM2ZDUwMGFhNzU5Y2I3N2IzZi4uMzhiYmU4OTQ4NDdhZjc5
MmE4YjMwZWMxZTAxNjcxMDM1OTJjMjQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU1lbW9yeS5jcHAKQEAgLTI2OSwxMiArMjY5LDEyIEBAIE1lbW9yeTo6TWVtb3J5KHZvaWQq
IG1lbW9yeSwgUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBzaXplX3QgbWFw
cGVkCiAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1lbW9yeTo6TWVtb3J5IGFsbG9jYXRpbmcg
IiwgKnRoaXMpOwogfQogCi1SZWZQdHI8TWVtb3J5PiBNZW1vcnk6OmNyZWF0ZSgpCitSZWY8TWVt
b3J5PiBNZW1vcnk6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZW1vcnko
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVtb3J5KCkpOwogfQogCi1SZWZQdHI8TWVt
b3J5PiBNZW1vcnk6OmNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0s
IFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1
cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNs
YWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFn
ZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQorUmVmUHRyPE1lbW9yeT4gTWVtb3J5Ojp0
cnlDcmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwg
V1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYg
Z3Jvd1N1Y2Nlc3NDYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaW5pdGlhbCk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoIW1heGltdW0gfHwgbWF4aW11bSA+PSBpbml0aWFsKTsgLy8gVGhpcyBzaG91bGQg
YmUgZ3VhcmFudGVlZCBieSBvdXIgY2FsbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU1lbW9yeS5oCmluZGV4IGMzNjU4MGY3OWVmNzMzZDg2MThkY2ZkYjNmNjcyMTczODVmMmYyNDEu
LjAwNzM3ZmMxZTY1ZTJiMjhkMGIwMDhhOWUzOTUzZGM3NzJjOTkxMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmgKQEAgLTU5LDggKzU5LDggQEAgY2xhc3MgTWVtb3J5
IDogcHVibGljIFJlZkNvdW50ZWQ8TWVtb3J5PiB7CiAgICAgZW51bSBTeW5jVHJ5VG9SZWNsYWlt
IHsgU3luY1RyeVRvUmVjbGFpbVRhZyB9OwogICAgIGVudW0gR3Jvd1N1Y2Nlc3MgeyBHcm93U3Vj
Y2Vzc1RhZyB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxNZW1vcnk+IGNyZWF0ZSgpOwotICAgIHN0
YXRpYyBSZWZQdHI8TWVtb3J5PiBjcmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBt
YXhpbXVtLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9y
eVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1Ry
eVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291
bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayk7CisgICAgc3RhdGljIFJlZjxN
ZW1vcnk+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWZQdHI8TWVtb3J5PiB0cnlDcmVhdGUoUGFn
ZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90
aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
U3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlv
bjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3ND
YWxsYmFjayk7CiAKICAgICB+TWVtb3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtVGFibGUuY3BwCmluZGV4IDA0YWMwNjUyNTU5YTZkOTM4ZjA5YjA2YWVlMjAxZjkxMmU5ZTRj
NjguLmViYjYzMjUyMGZhZjMwODNkZjRjNmYyNzEwMDFmZDU1NzE0NWU4ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIFRh
YmxlOjpzZXRMZW5ndGgodWludDMyX3QgbGVuZ3RoKQogICAgIEFTU0VSVChtX21hc2sgPT0gV1RG
OjptYXNrRm9yU2l6ZShhbGxvY2F0ZWRMZW5ndGgobGVuZ3RoKSkpOwogfQogCi1SZWZQdHI8VGFi
bGU+IFRhYmxlOjpjcmVhdGUodWludDMyX3QgaW5pdGlhbCwgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gbWF4aW11bSkKK1JlZlB0cjxUYWJsZT4gVGFibGU6OnRyeUNyZWF0ZSh1aW50MzJfdCBpbml0
aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKQogewogICAgIGlmICghaXNWYWxp
ZExlbmd0aChpbml0aWFsKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21UYWJsZS5oCmluZGV4IDRlMTVlMjkwMTQ0ZjIzMjgzN2M2Yjg1MzBhMjdk
M2YzNWE3NjA5ZmIuLjJmNTQ4M2M2MThmYTQ1OGJjZTBlZDg1MGRhNTU5NGE5MWU2MmI5ZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNs
YXNzIEluc3RhbmNlOwogCiBjbGFzcyBUYWJsZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxUYWJsZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8VGFibGU+IGNyZWF0ZSh1aW50
MzJfdCBpbml0aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKTsKKyAgICBzdGF0
aWMgUmVmUHRyPFRhYmxlPiB0cnlDcmVhdGUodWludDMyX3QgaW5pdGlhbCwgc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gbWF4aW11bSk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB+VGFibGUoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlJbnN0YW5jZS5jcHAKaW5kZXggYWJjN2ZhZTQ4ZWY3OGJhZTdlZjM0Y2JlNGYzNTZhYmY4NGVh
MDNhMy4uYmQ3MDNmZGIyNmIyNDM4MzYxM2E2YjRjZjgzOWI3MjQ2NTAxOTgwOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFu
Y2UuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFz
c2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAg
ICAgICAgIGF1dG8qIGpzTWVtb3J5ID0gSlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlKGV4ZWMs
IHZtLCBnbG9iYWxPYmplY3QtPldlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJlKCkpOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKIAotICAgICAg
ICAgICAgUmVmUHRyPFdhc206Ok1lbW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5OjpjcmVhdGUo
bW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5LmluaXRpYWwoKSwgbW9kdWxlSW5mb3JtYXRpb24ubWVt
b3J5Lm1heGltdW0oKSwKKyAgICAgICAgICAgIFJlZlB0cjxXYXNtOjpNZW1vcnk+IG1lbW9yeSA9
IFdhc206Ok1lbW9yeTo6dHJ5Q3JlYXRlKG1vZHVsZUluZm9ybWF0aW9uLm1lbW9yeS5pbml0aWFs
KCksIG1vZHVsZUluZm9ybWF0aW9uLm1lbW9yeS5tYXhpbXVtKCksCiAgICAgICAgICAgICAgICAg
WyZ2bV0gKFdhc206Ok1lbW9yeTo6Tm90aWZ5UHJlc3N1cmUpIHsgdm0uaGVhcC5jb2xsZWN0QXN5
bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtXSAoV2Fz
bTo6TWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVj
dGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtLCBqc01lbW9yeV0gKFdh
c206Ok1lbW9yeTo6R3Jvd1N1Y2Nlc3MsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdh
c206OlBhZ2VDb3VudCBuZXdQYWdlQ291bnQpIHsganNNZW1vcnktPmdyb3dTdWNjZXNzQ2FsbGJh
Y2sodm0sIG9sZFBhZ2VDb3VudCwgbmV3UGFnZUNvdW50KTsgfSk7CkBAIC0yOTcsNyArMjk3LDcg
QEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShW
TSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICBpZiAoIWpzSW5zdGFuY2UtPm1lbW9yeSgp
KSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGEgZHVtbXkgbWVtb3J5LCBzbyB0aGF0
IHdhc20gLT4gd2FzbSB0aHVua3MgYXZvaWQgY2hlY2tpbmcgZm9yIGEgbnVsbHB0ciBNZW1vcnkg
d2hlbiB0cnlpbmcgdG8gc2V0IHBpbm5lZCByZWdpc3RlcnMuCiAgICAgICAgIGF1dG8qIGpzTWVt
b3J5ID0gSlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlKGV4ZWMsIHZtLCBnbG9iYWxPYmplY3Qt
PldlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJlKCkpOwotICAgICAgICBqc01lbW9yeS0+YWRvcHQo
V2FzbTo6TWVtb3J5OjpjcmVhdGUoKS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAganNNZW1v
cnktPmFkb3B0KFdhc206Ok1lbW9yeTo6Y3JlYXRlKCkpOwogICAgICAgICBqc0luc3RhbmNlLT5z
ZXRNZW1vcnkodm0sIGpzTWVtb3J5KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBudWxscHRyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCmluZGV4IDU2NTYyNTI2Y2ZlNzE3OGIy
NzM4ZTkyNjVkN2IyODVhM2U0NzY0NmYuLjdhNmE1ZjAzOThmODYwYTEwMTM4YjZiM2JkNTk1NjJj
MDA3ZDllMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlNZW1vcnkuY3BwCkBAIC02OSw3ICs2OSw3IEBAIFN0cnVjdHVyZSogSlNXZWJB
c3NlbWJseU1lbW9yeTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iCiAKIEpTV2ViQXNzZW1ibHlNZW1vcnk6OkpTV2ViQXNzZW1ibHlNZW1vcnkoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKLSAgICAs
IG1fbWVtb3J5KFdhc206Ok1lbW9yeTo6Y3JlYXRlKCkucmVsZWFzZU5vbk51bGwoKSkKKyAgICAs
IG1fbWVtb3J5KFdhc206Ok1lbW9yeTo6Y3JlYXRlKCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggNGYyNjAyNDJkNmZiNTcwN2Y3NWRlNzFkMTM2ZDZhNjliMDEyYWZm
OC4uMTQwNGU2NzgyYTliNjJmYzBhMWJjMzZlN2I1NDQ4NDdlMjJlNmQyYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1v
cnlDb25zdHJ1Y3Rvci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeShFeGVjU3RhdGUqIGV4
ZWMKICAgICBhdXRvKiBqc01lbW9yeSA9IEpTV2ViQXNzZW1ibHlNZW1vcnk6OmNyZWF0ZShleGVj
LCB2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5XZWJBc3NlbWJseU1lbW9yeVN0cnVj
dHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCi0gICAgUmVmUHRyPFdhc206Ok1lbW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5
OjpjcmVhdGUoaW5pdGlhbFBhZ2VDb3VudCwgbWF4aW11bVBhZ2VDb3VudCwKKyAgICBSZWZQdHI8
V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OnRyeUNyZWF0ZShpbml0aWFsUGFn
ZUNvdW50LCBtYXhpbXVtUGFnZUNvdW50LAogICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpO
b3RpZnlQcmVzc3VyZSkgeyB2bS5oZWFwLmNvbGxlY3RBc3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1
bGwpOyB9LAogICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7
IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAg
WyZ2bSwganNNZW1vcnldIChXYXNtOjpNZW1vcnk6Okdyb3dTdWNjZXNzLCBXYXNtOjpQYWdlQ291
bnQgb2xkUGFnZUNvdW50LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KSB7IGpzTWVtb3J5
LT5ncm93U3VjY2Vzc0NhbGxiYWNrKHZtLCBvbGRQYWdlQ291bnQsIG5ld1BhZ2VDb3VudCk7IH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IGU4Y2E1OGNiZjYwYWM0NmFiMjMwZWUzZGYwNGE1ZjRh
MzAyOGYyZjIuLjM5YTY2ZmFmNjYzODZmN2NkYzhlNjNlNjQ0YWUwZmNmNzA5ODEyYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1v
ZHVsZVJlY29yZC5jcHAKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9i
agogICAgICAgICBpZiAoISFtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0aW9uICYmICFo
YXNUYWJsZUltcG9ydCkgewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1vZHVsZUluZm9y
bWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaXNJbXBvcnQoKSk7CiAgICAgICAgICAgICAvLyBXZSBj
cmVhdGUgYSBUYWJsZSB3aGVuIGl0J3MgYSBUYWJsZSBkZWZpbml0aW9uLgotICAgICAgICAgICAg
UmVmUHRyPFdhc206OlRhYmxlPiB3YXNtVGFibGUgPSBXYXNtOjpUYWJsZTo6Y3JlYXRlKG1vZHVs
ZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaW5pdGlhbCgpLCBtb2R1bGVJbmZvcm1hdGlv
bi50YWJsZUluZm9ybWF0aW9uLm1heGltdW0oKSk7CisgICAgICAgICAgICBSZWZQdHI8V2FzbTo6
VGFibGU+IHdhc21UYWJsZSA9IFdhc206OlRhYmxlOjp0cnlDcmVhdGUobW9kdWxlSW5mb3JtYXRp
b24udGFibGVJbmZvcm1hdGlvbi5pbml0aWFsKCksIG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5m
b3JtYXRpb24ubWF4aW11bSgpKTsKICAgICAgICAgICAgIGlmICghd2FzbVRhYmxlKQogICAgICAg
ICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihl
eGVjLCB2bSwgImNvdWxkbid0IGNyZWF0ZSBUYWJsZSIpKTsKICAgICAgICAgICAgIEpTV2ViQXNz
ZW1ibHlUYWJsZSogdGFibGUgPSBKU1dlYkFzc2VtYmx5VGFibGU6OmNyZWF0ZShleGVjLCB2bSwg
Z2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseVRhYmxlU3RydWN0dXJlKCksIHdhc21UYWJsZS5yZWxl
YXNlTm9uTnVsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwCmluZGV4IDA3NmM3ODc4ZjVk
ZTI2ZWNiMDE3YmY4NTc4OGIwMDE5N2VhMzJiMTUuLjVhNjk1MjA4NTBkZTAxOTFhZTI3M2I0N2Zi
OTliMzM3YzE3ZTg2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcApAQCAtOTAsNyArOTAs
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFz
c2VtYmx5VGFibGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9CiAgICAgfQogCi0gICAgUmVm
UHRyPFdhc206OlRhYmxlPiB3YXNtVGFibGUgPSBXYXNtOjpUYWJsZTo6Y3JlYXRlKGluaXRpYWws
IG1heGltdW0pOworICAgIFJlZlB0cjxXYXNtOjpUYWJsZT4gd2FzbVRhYmxlID0gV2FzbTo6VGFi
bGU6OnRyeUNyZWF0ZShpbml0aWFsLCBtYXhpbXVtKTsKICAgICBpZiAoIXdhc21UYWJsZSkgewog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93
U2NvcGUsCiAgICAgICAgICAgICBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJjb3VsZG4ndCBjcmVh
dGUgVGFibGUiX3MpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFy
S2V5LmNwcAppbmRleCA0NzZkMmU1ZTM3N2E1OTQwMGE2NTU0MjYyNTg3NzU4YTdlZTk3MmYyLi5k
MGZiM2UwNTM2ZmVkYzkyNzFjZTFkZTkzMGFiNDdjYjU3N2E0OTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9u
Q2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCBS
ZWZQdHI8QXJyYXlCdWZmZXI+IENETVNlc3Npb25DbGVhcktleTo6Y2FjaGVkS2V5Rm9yS2V5SUQo
Y29uc3QgU3RyaW5nJiBrZXlJZCkgYwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1
dG8ga2V5RGF0YSA9IG1fY2FjaGVkS2V5cy5nZXQoa2V5SWQpOwotICAgIFJlZlB0cjxVaW50OEFy
cmF5PiBrZXlEYXRhQXJyYXkgPSBVaW50OEFycmF5OjpjcmVhdGUoa2V5RGF0YS5kYXRhKCksIGtl
eURhdGEuc2l6ZSgpKTsKKyAgICBhdXRvIGtleURhdGFBcnJheSA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShrZXlEYXRhLmRhdGEoKSwga2V5RGF0YS5zaXplKCkpOwogICAgIHJldHVybiBrZXlEYXRhQXJy
YXktPnVuc2hhcmVkQnVmZmVyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCA3
OWVjODkxZDgxM2NkOTFiNzA4NzE5Zjc0MmQ5NjlhN2ZmMjFmNzA5Li42MmIzMTkyYTJmNjM4Y2M5
NGQ5MzJhZThiNWNmYmE0NDBhYzFlNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC0z
MDgsNyArMzA4LDcgQEAgc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29u
dGV4dChOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnksIEpTQ29udGUKICAgICAgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbmFtZSA9IE9wYXF1ZUpT
U3RyaW5nOjpjcmVhdGUoa2V5KTsKKyAgICAgICAgYXV0byBuYW1lID0gT3BhcXVlSlNTdHJpbmc6
OnRyeUNyZWF0ZShrZXkpOwogICAgICAgICBKU09iamVjdFNldFByb3BlcnR5KFtjb250ZXh0IEpT
R2xvYmFsQ29udGV4dFJlZl0sIHJlc3VsdE9iamVjdCwgbmFtZS5nZXQoKSwgW3ZhbHVlIEpTVmFs
dWVSZWZdLCAwLCAmZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAg
ICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyLmNwcAppbmRleCA5ZjBhMjVmZDNmYmM4YjMyZGY5ODY0MTFmNGExNTVjZmI2MTk0OTQ5
Li41NmExM2NhZWFiZDRlM2ZkNGI4YmMzYWU2ZjdhNjgxZTMyZGQyODRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcApAQCAtNjcsNyArNjcs
NyBAQCBBdWRpb0J1ZmZlcjo6QXVkaW9CdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywg
c2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdAogICAgIG1fY2hhbm5lbHMucmVzZXJ2ZUNhcGFj
aXR5KG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bWJlck9mQ2hhbm5lbHM7ICsraSkgewotICAgICAgICBhdXRvIGNoYW5uZWxEYXRhQXJyYXkgPSBG
bG9hdDMyQXJyYXk6OmNyZWF0ZShtX2xlbmd0aCk7CisgICAgICAgIGF1dG8gY2hhbm5lbERhdGFB
cnJheSA9IEZsb2F0MzJBcnJheTo6dHJ5Q3JlYXRlKG1fbGVuZ3RoKTsKICAgICAgICAgaWYgKCFj
aGFubmVsRGF0YUFycmF5KSB7CiAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTg2LDcgKzg2LDcgQEAgQXVkaW9CdWZmZXI6OkF1ZGlvQnVmZmVyKEF1ZGlv
QnVzJiBidXMpCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyA9IGJ1cy5udW1iZXJPZkNo
YW5uZWxzKCk7CiAgICAgbV9jaGFubmVscy5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZDaGFubmVs
cyk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkg
ewotICAgICAgICBhdXRvIGNoYW5uZWxEYXRhQXJyYXkgPSBGbG9hdDMyQXJyYXk6OmNyZWF0ZSht
X2xlbmd0aCk7CisgICAgICAgIGF1dG8gY2hhbm5lbERhdGFBcnJheSA9IEZsb2F0MzJBcnJheTo6
dHJ5Q3JlYXRlKG1fbGVuZ3RoKTsKICAgICAgICAgaWYgKCFjaGFubmVsRGF0YUFycmF5KSB7CiAg
ICAgICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTExNSw5ICsx
MTUsNyBAQCBFeGNlcHRpb25PcjxSZWY8RmxvYXQzMkFycmF5Pj4gQXVkaW9CdWZmZXI6OmdldENo
YW5uZWxEYXRhKHVuc2lnbmVkIGNoYW5uZWxJbmRleAogICAgIGlmIChjaGFubmVsSW5kZXggPj0g
bV9jaGFubmVscy5zaXplKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJv
ciB9OwogICAgIGF1dG8mIGNoYW5uZWxEYXRhID0gKm1fY2hhbm5lbHNbY2hhbm5lbEluZGV4XTsK
LSAgICBhdXRvIGFycmF5ID0gRmxvYXQzMkFycmF5OjpjcmVhdGUoY2hhbm5lbERhdGEudW5zaGFy
ZWRCdWZmZXIoKSwgY2hhbm5lbERhdGEuYnl0ZU9mZnNldCgpLCBjaGFubmVsRGF0YS5sZW5ndGgo
KSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOwotICAgIHJldHVybiBhcnJheS5yZWxlYXNl
Tm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShjaGFubmVsRGF0YS51
bnNoYXJlZEJ1ZmZlcigpLCBjaGFubmVsRGF0YS5ieXRlT2Zmc2V0KCksIGNoYW5uZWxEYXRhLmxl
bmd0aCgpKTsKIH0KIAogRmxvYXQzMkFycmF5KiBBdWRpb0J1ZmZlcjo6Y2hhbm5lbERhdGEodW5z
aWduZWQgY2hhbm5lbEluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ2ci9WUkV5ZVBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9W
UkV5ZVBhcmFtZXRlcnMuY3BwCmluZGV4IDI1ZmI4ZThiN2Q1NTVkN2FkMGQzNDkxNzQ5OTdkYjMy
OTcwY2M5YTkuLjAxMjY0YmQ4NjkyNGZjZmNjYzhjMmM1ZTNhNzhmNzIwNjM5MTE2YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJFeWVQYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRXllUGFyYW1ldGVycy5jcHAKQEAg
LTM5LDEyICszOSwxMSBAQCBWUkV5ZVBhcmFtZXRlcnM6OlZSRXllUGFyYW1ldGVycyhjb25zdCBG
bG9hdFBvaW50M0QmIG9mZnNldCwgY29uc3QgVlJQbGF0Zm9ybURpcwogUmVmPEZsb2F0MzJBcnJh
eT4gVlJFeWVQYXJhbWV0ZXJzOjpvZmZzZXQoKSBjb25zdAogewogICAgIGF1dG8gb2Zmc2V0ID0g
RmxvYXQzMkFycmF5OjpjcmVhdGUoMyk7Ci0gICAgUkVMRUFTRV9BU1NFUlQob2Zmc2V0KTsKICAg
ICBmbG9hdCogb2Zmc2V0RGF0YSA9IG9mZnNldC0+ZGF0YSgpOwogICAgIG9mZnNldERhdGFbMF0g
PSBtX29mZnNldC54KCk7CiAgICAgb2Zmc2V0RGF0YVsxXSA9IG1fb2Zmc2V0LnkoKTsKICAgICBv
ZmZzZXREYXRhWzJdID0gbV9vZmZzZXQueigpOwotICAgIHJldHVybiBvZmZzZXQucmVsZWFzZU5v
bk51bGwoKTsKKyAgICByZXR1cm4gb2Zmc2V0OwogfQogCiBjb25zdCBWUkZpZWxkT2ZWaWV3JiBW
UkV5ZVBhcmFtZXRlcnM6OmZpZWxkT2ZWaWV3KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VidnIvVlJGcmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHAKaW5kZXggNjVjM2RiYWQ2OGRjMmU4NGExMzYxYzY2
MGExZjdlZWU4OThjMWZiZC4uYjIxNWI1NWZjNmMwMzFiMDdkNjljNzJkNWZhMGQ5ZTVlYmE3MWMw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAgVlJGcmFtZURhdGE6OlZSRnJhbWVEYXRhKCkKIHN0YXRpYyBSZWY8Rmxv
YXQzMkFycmF5PiBtYXRyaXhUb0FycmF5KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRy
aXgpCiB7CiAgICAgYXV0byBjb2x1bW5NYWpvck1hdHJpeCA9IG1hdHJpeC50b0NvbHVtbk1ham9y
RmxvYXRBcnJheSgpOwotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShjb2x1bW5NYWpv
ck1hdHJpeC5kYXRhKCksIDE2KS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMy
QXJyYXk6OmNyZWF0ZShjb2x1bW5NYWpvck1hdHJpeC5kYXRhKCksIDE2KTsKIH0KIAogUmVmPEZs
b2F0MzJBcnJheT4gVlJGcmFtZURhdGE6OmxlZnRQcm9qZWN0aW9uTWF0cml4KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJQb3NlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJQb3NlLmNwcAppbmRleCA4ZTNiYWY1YTJmMDg0NTA5
NTY0OGI4MWRhMjlkZGJkZTlmZWY2NDRiLi4xNjg2YjlhNWFiN2RmN2MzN2FlM2NlMjIzNTcwZDA0
OWI1MGU5NzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSUG9z
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUlBvc2UuY3BwCkBAIC0z
Miw3ICszMiw3IEBAIHN0YXRpYyBSZWZQdHI8RmxvYXQzMkFycmF5PiBvcHRpb25hbEZsb2F0M1Rv
SlNDQXJyYXkoY29uc3Qgc3RkOjpvcHRpb25hbDxWUlBsYXRmCiAgICAgaWYgKCFkYXRhKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShk
YXRhLT5kYXRhLCAzKS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMyQXJyYXk6
OmNyZWF0ZShkYXRhLT5kYXRhLCAzKTsKIH0KIAogUmVmUHRyPEZsb2F0MzJBcnJheT4gVlJQb3Nl
Ojpwb3NpdGlvbigpIGNvbnN0CkBAIC00Miw3ICs0Miw3IEBAIFJlZlB0cjxGbG9hdDMyQXJyYXk+
IFZSUG9zZTo6cG9zaXRpb24oKSBjb25zdAogCiAgICAgYXV0byYgcG9zaXRpb24gPSAqbV90cmFj
a2luZ0luZm8ucG9zaXRpb247CiAgICAgZmxvYXQgcG9zaXRpb25EYXRhWzNdID0geyBwb3NpdGlv
bi54KCksIHBvc2l0aW9uLnkoKSwgcG9zaXRpb24ueigpIH07Ci0gICAgcmV0dXJuIEZsb2F0MzJB
cnJheTo6Y3JlYXRlKHBvc2l0aW9uRGF0YSwgMykucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1
cm4gRmxvYXQzMkFycmF5OjpjcmVhdGUocG9zaXRpb25EYXRhLCAzKTsKIH0KIAogUmVmUHRyPEZs
b2F0MzJBcnJheT4gVlJQb3NlOjpsaW5lYXJWZWxvY2l0eSgpIGNvbnN0CkBAIC02Miw3ICs2Miw3
IEBAIFJlZlB0cjxGbG9hdDMyQXJyYXk+IFZSUG9zZTo6b3JpZW50YXRpb24oKSBjb25zdAogCiAg
ICAgYXV0byYgb3JpZW50YXRpb24gPSAqbV90cmFja2luZ0luZm8ub3JpZW50YXRpb247CiAgICAg
ZmxvYXQgb3JpZW50YXRpb25EYXRhWzRdID0geyBvcmllbnRhdGlvbi54LCBvcmllbnRhdGlvbi55
LCBvcmllbnRhdGlvbi56LCBvcmllbnRhdGlvbi53IH07Ci0gICAgcmV0dXJuIEZsb2F0MzJBcnJh
eTo6Y3JlYXRlKG9yaWVudGF0aW9uRGF0YSwgNCkucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1
cm4gRmxvYXQzMkFycmF5OjpjcmVhdGUob3JpZW50YXRpb25EYXRhLCA0KTsKIH0KIAogUmVmUHRy
PEZsb2F0MzJBcnJheT4gVlJQb3NlOjphbmd1bGFyVmVsb2NpdHkoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUlN0YWdlUGFyYW1ldGVycy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSU3RhZ2VQYXJhbWV0ZXJzLmNwcAppbmRleCAy
ZGEwNzQzYjQ0YzdlYzhmODMwOTI1OWJmNGRhMjU4N2FkZjI4NmUyLi5iNmU1NzMyNmM1MjRhNTc2
OTczYmMzYjZhN2M4NjRkODE4ODIyNTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnZyL1ZSU3RhZ2VQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnZyL1ZSU3RhZ2VQYXJhbWV0ZXJzLmNwcApAQCAtNDEsNyArNDEsNyBAQCBWUlN0YWdl
UGFyYW1ldGVyczo6VlJTdGFnZVBhcmFtZXRlcnMoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHNpdHRpbmdUb1N0YW5kaQogUmVmPEZsb2F0MzJBcnJheT4gVlJTdGFnZVBhcmFtZXRlcnM6OnNp
dHRpbmdUb1N0YW5kaW5nVHJhbnNmb3JtKCkgY29uc3QKIHsKICAgICBhdXRvIGNvbHVtbk1ham9y
TWF0cml4ID0gbV9zaXR0aW5nVG9TdGFuZGluZ1RyYW5zZm9ybS50b0NvbHVtbk1ham9yRmxvYXRB
cnJheSgpOwotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShjb2x1bW5NYWpvck1hdHJp
eC5kYXRhKCksIDE2KS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMyQXJyYXk6
OmNyZWF0ZShjb2x1bW5NYWpvck1hdHJpeC5kYXRhKCksIDE2KTsKIH0KIAogZmxvYXQgVlJTdGFn
ZVBhcmFtZXRlcnM6OnNpemVYKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaAppbmRleCA2
NGNlZGMxNjhmZDBlMmNhMDA0ODQwMDAzNmY4MzQxMGJiZmZkMjFiLi40ODRjOGQ4MWU3YmM2MWFh
ZTM5NmJhYzU4Y2E2YzIzNGNiZmQ5OWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCkBAIC05
OSw4ICs5OSw3IEBAIGlubGluZSBib29sIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6
OmVucXVldWUoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+JiYKICAgICB9CiAgICAgYXV0byBsZW5n
dGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICBhdXRvIGNodW5rID0gSlNDOjpVaW50OEFy
cmF5OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwotICAgIEFTU0VSVChjaHVu
ayk7Ci0gICAgZW5xdWV1ZShzdGF0ZSwgdG9KUygmc3RhdGUsICZnbG9iYWxPYmplY3QsIGNodW5r
LmdldCgpKSk7CisgICAgZW5xdWV1ZShzdGF0ZSwgdG9KUygmc3RhdGUsICZnbG9iYWxPYmplY3Qs
IGNodW5rLnB0cigpKSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGJhOTQ1Y2Q3NzFlNGFmOWU4NWY2N2Y4NTcyMDQ4NjI5
NTc0NGM2MDkuLmFmN2FiM2E2YzdlNGIyN2NjMzcyZDZkZjIwYWI2MTJhNDcxNTY1MzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcApAQCAtMjA5NiwzMSArMjA5NiwzMSBAQCBjbGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENs
b25lQmFzZSB7CiAgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSBnZXRKU1ZhbHVlKERhdGFW
aWV3OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgSW50OEFycmF5VGFn
OgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2Jq
ZWN0LCBJbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwg
bGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhl
YywgbV9nbG9iYWxPYmplY3QsIEludDhBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZm
ZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIFVpbnQ4QXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZp
ZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZN
b3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAg
ICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQ4QXJy
YXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5n
ZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBVaW50OENsYW1w
ZWRBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBt
X2dsb2JhbE9iamVjdCwgVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVm
ZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZl
clZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQ4Q2xhbXBlZEFycmF5Ojp0
cnlDcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgSW50MTZBcnJheVRhZzoK
LSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVj
dCwgSW50MTZBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBs
ZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVj
LCBtX2dsb2JhbE9iamVjdCwgSW50MTZBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZm
ZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIFVpbnQxNkFycmF5VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZmZXJW
aWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBVaW50MTZBcnJheTo6Y3JlYXRlKFdU
Rk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAg
ICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDE2
QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3Ro
KS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBJbnQzMkFy
cmF5VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xv
YmFsT2JqZWN0LCBJbnQzMkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVP
ZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9K
UyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBJbnQzMkFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShh
cnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIGNhc2UgVWludDMyQXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJh
eUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQzMkFycmF5Ojpj
cmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwor
ICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0
LCBVaW50MzJBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0
LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNl
IEZsb2F0MzJBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9l
eGVjLCBtX2dsb2JhbE9iamVjdCwgRmxvYXQzMkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1
ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAgYXJyYXlCdWZm
ZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBGbG9hdDMyQXJyYXk6OnRyeUNy
ZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBGbG9hdDY0QXJyYXlUYWc6Ci0g
ICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3Qs
IEZsb2F0NjRBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBs
ZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVj
LCBtX2dsb2JhbE9iamVjdCwgRmxvYXQ2NEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShhcnJheUJ1
ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKaW5k
ZXggMDgwMjA5OTU0NGM4NGQzZGIxODM3MDYzYjQ5N2U1OWRiZGZiNmZlNS4uM2Q4MDAyYzlhOTU0
OWEzMmIxMThhMGZjNGUyOWJjZDljN2FiZDJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcApAQCAtNjI5LDcgKzYyOSw3IEBA
IGF1dG8gQ3J5cHRvS2V5UlNBOjphbGdvcml0aG0oKSBjb25zdCAtPiBLZXlBbGdvcml0aG0KICAg
ICAgICAgQ3J5cHRvUnNhSGFzaGVkS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICAgICAgcmVzdWx0
Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShhbGdvcml0
aG1JZGVudGlmaWVyKCkpOwogICAgICAgICByZXN1bHQubW9kdWx1c0xlbmd0aCA9IG1vZHVsdXNM
ZW5ndGg7Ci0gICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgICAg
IHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShwdWJsaWNFeHBv
bmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CiAgICAgICAgIHJlc3VsdC5oYXNo
Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShtX2hhc2gp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTYzNyw3ICs2MzcsNyBAQCBhdXRv
IENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkgY29uc3QgLT4gS2V5QWxnb3JpdGhtCiAgICAgQ3J5
cHRvUnNhS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICByZXN1bHQubmFtZSA9IENyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKGFsZ29yaXRobUlkZW50aWZpZXIoKSk7CiAg
ICAgcmVzdWx0Lm1vZHVsdXNMZW5ndGggPSBtb2R1bHVzTGVuZ3RoOwotICAgIHJlc3VsdC5wdWJs
aWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1
YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgcmVzdWx0LnB1YmxpY0V4cG9uZW50ID0gVWludDhB
cnJheTo6dHJ5Q3JlYXRlKHB1YmxpY0V4cG9uZW50LmRhdGEoKSwgcHVibGljRXhwb25lbnQuc2l6
ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0tleVJTQU1hYy5jcHAKaW5kZXggZThlYjg0ZWEwZTUyNDYwZTJkNTc4YTZiODc4
OWQ5N2YzZTIwNDE1YS4uOTRmYzFhNzYyOTMzMmY3ZTgxZDAxMWY5MGYxNTM2MDRkNjJmNjBmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcApAQCAt
MjIyLDcgKzIyMiw3IEBAIGF1dG8gQ3J5cHRvS2V5UlNBOjphbGdvcml0aG0oKSBjb25zdCAtPiBL
ZXlBbGdvcml0aG0KICAgICAgICAgQ3J5cHRvUnNhS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICAg
ICAgcmVzdWx0Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFt
ZShhbGdvcml0aG1JZGVudGlmaWVyKCkpOwogICAgICAgICByZXN1bHQubW9kdWx1c0xlbmd0aCA9
IDA7Ci0gICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZSgw
KTsKKyAgICAgICAgcmVzdWx0LnB1YmxpY0V4cG9uZW50ID0gVWludDhBcnJheTo6dHJ5Q3JlYXRl
KDApOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMjMyLDcgKzIzMiw3IEBA
IGF1dG8gQ3J5cHRvS2V5UlNBOjphbGdvcml0aG0oKSBjb25zdCAtPiBLZXlBbGdvcml0aG0KICAg
ICAgICAgQ3J5cHRvUnNhSGFzaGVkS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICAgICAgcmVzdWx0
Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShhbGdvcml0
aG1JZGVudGlmaWVyKCkpOwogICAgICAgICByZXN1bHQubW9kdWx1c0xlbmd0aCA9IG1vZHVsdXNM
ZW5ndGg7Ci0gICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgICAg
IHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShwdWJsaWNFeHBv
bmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CiAgICAgICAgIHJlc3VsdC5oYXNo
Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShtX2hhc2gp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTI0MCw3ICsyNDAsNyBAQCBhdXRv
IENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkgY29uc3QgLT4gS2V5QWxnb3JpdGhtCiAgICAgQ3J5
cHRvUnNhS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICByZXN1bHQubmFtZSA9IENyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKGFsZ29yaXRobUlkZW50aWZpZXIoKSk7CiAg
ICAgcmVzdWx0Lm1vZHVsdXNMZW5ndGggPSBtb2R1bHVzTGVuZ3RoOwotICAgIHJlc3VsdC5wdWJs
aWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1
YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgcmVzdWx0LnB1YmxpY0V4cG9uZW50ID0gVWludDhB
cnJheTo6dHJ5Q3JlYXRlKHB1YmxpY0V4cG9uZW50LmRhdGEoKSwgcHVibGljRXhwb25lbnQuc2l6
ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJp
eFJlYWRPbmx5LmNwcAppbmRleCBkZWFhZGZhN2Y4MTFlNzQ4ZjNlYjEzNzE0Yjk1ZTcwNzZkOGIy
YzRlLi43MzE3NTRlNDY2ZjM3MzZlOWNjNDdkNzMwNDc1MjU3ZjdlYTViZmU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5jcHAKQEAgLTM0NSw3ICszNDUsNyBAQCBSZWY8
RE9NUG9pbnQ+IERPTU1hdHJpeFJlYWRPbmx5Ojp0cmFuc2Zvcm1Qb2ludChET01Qb2ludEluaXQm
JiBwb2ludEluaXQpCiAKIEV4Y2VwdGlvbk9yPFJlZjxGbG9hdDMyQXJyYXk+PiBET01NYXRyaXhS
ZWFkT25seTo6dG9GbG9hdDMyQXJyYXkoKSBjb25zdAogewotICAgIGF1dG8gYXJyYXkzMiA9IEZs
b2F0MzJBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgxNik7CisgICAgYXV0byBhcnJheTMyID0g
RmxvYXQzMkFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKDE2KTsKICAgICBpZiAoIWFycmF5
MzIpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJPdXQgb2YgbWVt
b3J5Il9zIH07CiAKQEAgLTM3MSw3ICszNzEsNyBAQCBFeGNlcHRpb25PcjxSZWY8RmxvYXQzMkFy
cmF5Pj4gRE9NTWF0cml4UmVhZE9ubHk6OnRvRmxvYXQzMkFycmF5KCkgY29uc3QKIAogRXhjZXB0
aW9uT3I8UmVmPEZsb2F0NjRBcnJheT4+IERPTU1hdHJpeFJlYWRPbmx5Ojp0b0Zsb2F0NjRBcnJh
eSgpIGNvbnN0CiB7Ci0gICAgYXV0byBhcnJheTY0ID0gRmxvYXQ2NEFycmF5OjpjcmVhdGVVbmlu
aXRpYWxpemVkKDE2KTsKKyAgICBhdXRvIGFycmF5NjQgPSBGbG9hdDY0QXJyYXk6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQoMTYpOwogICAgIGlmICghYXJyYXk2NCkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIk91dCBvZiBtZW1vcnkiX3MgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5jcHAKaW5kZXggMmViNDFjOWMxMTQ0NGQ2MWJkZGYzYWIxNDJiOTViZTM4NDE5NWM3
OC4uYTI0YTUzNjI2ODkwYThhOTFkMTE3MzhjYTlhNThhNDUzNzFiYjhiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuY3BwCkBAIC03OCw3ICs3OCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxGb250RmFjZT4+
IEZvbnRGYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGZhCiAg
ICAgICAgIFsmXSAoUmVmUHRyPEFycmF5QnVmZmVyPiYgYXJyYXlCdWZmZXIpIC0+IEV4Y2VwdGlv
bk9yPHZvaWQ+IHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpOwogICAgICAgICAgICAgYXV0byBhcnJheUJ1ZmZlclZpZXcgPSBKU0M6
OlVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7
Ci0gICAgICAgICAgICBkYXRhUmVxdWlyZXNBc3luY2hyb25vdXNMb2FkaW5nID0gcG9wdWxhdGVG
b250RmFjZVdpdGhBcnJheUJ1ZmZlcihyZXN1bHQtPmJhY2tpbmcoKSwgYXJyYXlCdWZmZXJWaWV3
LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgZGF0YVJlcXVpcmVzQXN5bmNocm9ub3Vz
TG9hZGluZyA9IHBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIocmVzdWx0LT5iYWNraW5n
KCksIFdURk1vdmUoYXJyYXlCdWZmZXJWaWV3KSk7CiAgICAgICAgICAgICByZXR1cm4geyB9Owog
ICAgICAgICB9CiAgICAgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5j
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXIuY3BwCmluZGV4IDllZWI3
Nzk0NWFlOTIxNGZkYjgwMGMwYmUwY2EzOTA1ODUzNTRmYjUuLmIwNDljYzFlMzRhNzJiYjkyMmY0
MTNkM2I0ZDJmYzI0ZjExODQ5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0
RW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmNwcApAQCAt
NDAsNyArNDAsNyBAQCBSZWZQdHI8VWludDhBcnJheT4gVGV4dEVuY29kZXI6OmVuY29kZShTdHJp
bmcmJiBpbnB1dCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBuZWVkIHRv
IGFsbG9jYXRlIGEgQ1N0cmluZyB0byBlbmNvZGUgaW50byBhIFVpbnQ4QXJyYXkuCiAgICAgQ1N0
cmluZyB1dGY4ID0gaW5wdXQudXRmOCgpOwotICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0
aCgpKTsKKyAgICByZXR1cm4gVWludDhBcnJheTo6dHJ5Q3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAppbmRleCA5ZmZjNDA4ZWY2MDI1ZDJlZTJjNTYxMzNjYjc1
ZWVlOGI4NjA5ZWU5Li4zYjJhMjM2NjNkMTA3NzMxZDMyNzFiNjQzODEzNDUxYTEzMTg3NTZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCkBAIC05OSwxNSArOTksMTMgQEAgSW1hZ2VEYXRh
OjpJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICA6IG1fc2l6ZShzaXplKQogICAg
ICwgbV9kYXRhKFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKChzaXplLmFy
ZWEoKSAqIDQpLnVuc2FmZUdldCgpKSkKIHsKLSAgICBBU1NFUlQobV9kYXRhKTsKIH0KIAogSW1h
Z2VEYXRhOjpJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSwgUmVmPFVpbnQ4Q2xhbXBlZEFy
cmF5PiYmIGJ5dGVBcnJheSkKICAgICA6IG1fc2l6ZShzaXplKQogICAgICwgbV9kYXRhKFdURk1v
dmUoYnl0ZUFycmF5KSkKIHsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTighbV9kYXRhIHx8IChzaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdl
dCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oKHNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkgPD0gbV9kYXRhLT5s
ZW5ndGgoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCmluZGV4IDk4YjFmMTA4Zjk2
ZjFlYmFmODdjMGFkZjQ3ODdmNjViZTRkNmNhNzYuLmEwZmZhMjk4NzE4YmYyNzdlOGExNmI2MTNl
NTc1OGE3ODcyYzIyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaApAQCAtMzQsMjUgKzM0LDI1
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSW1hZ2VE
YXRhIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VEYXRhPiB7CitjbGFzcyBJbWFnZURhdGEgOiBw
dWJsaWMgUmVmQ291bnRlZDxJbWFnZURhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gpOwot
ICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYpOwotICAg
IHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIFJlZjxVaW50
OENsYW1wZWRBcnJheT4mJik7Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURh
dGE+PiBjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmLCB1bnNpZ25lZCBzdywgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gc2gpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRp
b25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlKHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZShjb25zdCBJ
bnRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNy
ZWF0ZShjb25zdCBJbnRTaXplJiwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IGNyZWF0ZShS
ZWY8VWludDhDbGFtcGVkQXJyYXk+JiYsIHVuc2lnbmVkIHN3LCBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBzaCk7CiAKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0K
ICAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NpemUud2lkdGgoKTsgfQogICAgIGlu
dCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NpemUuaGVpZ2h0KCk7IH0KIAotICAgIFVpbnQ4
Q2xhbXBlZEFycmF5KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAg
VWludDhDbGFtcGVkQXJyYXkqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEucHRyKCk7IH0K
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYpOwogICAg
IEltYWdlRGF0YShjb25zdCBJbnRTaXplJiwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmKTsKIAog
ICAgIEludFNpemUgbV9zaXplOwotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gbV9kYXRh
OworICAgIFJlZjxVaW50OENsYW1wZWRBcnJheT4gbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA3YzA0NTU1MDhkNTQ0YmE1OGZlNGU3NDNlYTViMmZj
MmEwNTMyOTMyLi4wNzY2ODM1MDdlODkyZDkzOWUwMzM1MzVmZWJkMDhkYWM3MGYwYjdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250
ZXh0LmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIGNvbnN0IEFycmF5QnVmZmVyVmlldyYKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gc2xpY2UgPSBVaW50OEFycmF5OjpjcmVhdGUo
ZGF0YS5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBkYXRhLmJ5dGVPZmZzZXQoKSArIGNoZWNrZWRC
eXRlU3JjT2Zmc2V0LnVuc2FmZUdldCgpLCBjaGVja2VkQnl0ZUxlbmd0aC51bnNhZmVHZXQoKSk7
CisgICAgYXV0byBzbGljZSA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShkYXRhLnBvc3NpYmx5U2hh
cmVkQnVmZmVyKCksIGRhdGEuYnl0ZU9mZnNldCgpICsgY2hlY2tlZEJ5dGVTcmNPZmZzZXQudW5z
YWZlR2V0KCksIGNoZWNrZWRCeXRlTGVuZ3RoLnVuc2FmZUdldCgpKTsKICAgICBpZiAoIXNsaWNl
KSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpPVVRfT0Zf
TUVNT1JZLCAiYnVmZmVyRGF0YSIsICJDb3VsZCBub3QgY3JlYXRlIGludGVybWVkaWF0ZSBBcnJh
eUJ1ZmZlclZpZXciKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxv
bmcgbG9uZyBvZmZzZXQsIGNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHNs
aWNlID0gVWludDhBcnJheTo6Y3JlYXRlKGRhdGEucG9zc2libHlTaGFyZWRCdWZmZXIoKSwgZGF0
YS5ieXRlT2Zmc2V0KCkgKyBjaGVja2VkQnl0ZVNyY09mZnNldC51bnNhZmVHZXQoKSwgY2hlY2tl
ZEJ5dGVMZW5ndGgudW5zYWZlR2V0KCkpOworICAgIGF1dG8gc2xpY2UgPSBVaW50OEFycmF5Ojp0
cnlDcmVhdGUoZGF0YS5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBkYXRhLmJ5dGVPZmZzZXQoKSAr
IGNoZWNrZWRCeXRlU3JjT2Zmc2V0LnVuc2FmZUdldCgpLCBjaGVja2VkQnl0ZUxlbmd0aC51bnNh
ZmVHZXQoKSk7CiAgICAgaWYgKCFzbGljZSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6T1VUX09GX01FTU9SWSwgImJ1ZmZlclN1YkRhdGEiLCAiQ291bGQg
bm90IGNyZWF0ZSBpbnRlcm1lZGlhdGUgQXJyYXlCdWZmZXJWaWV3Iik7CiAgICAgICAgIHJldHVy
bjsKQEAgLTQxMiw3ICs0MTIsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRJbnRlcm5hbGZvcm1hdFBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDMwogICAgICAgICBw
YXJhbXNbaV0gPSBzYW1wbGVzW2ldOwogI2VuZGlmCiAKLSAgICByZXR1cm4gSW50MzJBcnJheTo6
Y3JlYXRlKHBhcmFtcywgbnVtVmFsdWVzKTsKKyAgICByZXR1cm4gSW50MzJBcnJheTo6dHJ5Q3Jl
YXRlKHBhcmFtcywgbnVtVmFsdWVzKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0MzRGVudW0sIGNvbnN0IFZlY3RvcjxHQzNEZW51bT4m
KQpAQCAtMTc5NCw3ICsxNzk0LDcgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkNPTE9SX1dSSVRFTUFTSzoKICAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5BcnJheVBhcmFtZXRl
cihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09NUFJFU1NFRF9URVhUVVJF
X0ZPUk1BVFM6Ci0gICAgICAgIHJldHVybiBVaW50MzJBcnJheTo6Y3JlYXRlKG1fY29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXRzLmRhdGEoKSwgbV9jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMuc2l6ZSgp
KTsKKyAgICAgICAgcmV0dXJuIFVpbnQzMkFycmF5Ojp0cnlDcmVhdGUobV9jb21wcmVzc2VkVGV4
dHVyZUZvcm1hdHMuZGF0YSgpLCBtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5zaXplKCkpOwog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNVTExfRkFDRToKICAgICAgICAgcmV0dXJuIGdl
dEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNV
TExfRkFDRV9NT0RFOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNjIwYmRiMzBhMWI2MjkwNWMxMDI4YWMxYzMyZWRh
OGVjZGE2NjBhOC4uYWY3YTc3ZmRjMzg2MzYwYTUzY2I3YTU1YTQ4NDg0ZGJmYjU1ODRmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCkBAIC00NDQsNyArNDQ0LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRQYXJhbWV0ZXIoR0MzRGVudW0gcG5hbWUpCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6Q09MT1JfV1JJVEVNQVNLOgogICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhbkFycmF5UGFyYW1l
dGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT01QUkVTU0VEX1RFWFRV
UkVfRk9STUFUUzoKLSAgICAgICAgcmV0dXJuIFVpbnQzMkFycmF5OjpjcmVhdGUobV9jb21wcmVz
c2VkVGV4dHVyZUZvcm1hdHMuZGF0YSgpLCBtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5zaXpl
KCkpOworICAgICAgICByZXR1cm4gVWludDMyQXJyYXk6OnRyeUNyZWF0ZShtX2NvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0cy5kYXRhKCksIG1fY29tcHJlc3NlZFRleHR1cmVGb3JtYXRzLnNpemUoKSk7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q1VMTF9GQUNFOgogICAgICAgICByZXR1cm4g
Z2V0Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
Q1VMTF9GQUNFX01PREU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDg1NzRmY2ViZjk5MzMyZjIzNTEz
ZGIwYTdjMmQzZWEwYmVjODVjNjkuLmYxOGE4ZmJkMDkwZmI5NTRjOGRmZGM1OTI3NDc4MWZjYjNi
ZTllMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0yOTIyLDcgKzI5MjIsNyBAQCBXZWJHTEFueSBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3Jh
bSwgY29uc3QgV2ViRwogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtZnYob2JqZWN0
T3JaZXJvKHByb2dyYW0pLCBsb2NhdGlvbiwgdmFsdWUpOwogICAgICAgICBpZiAobGVuZ3RoID09
IDEpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWVbMF07Ci0gICAgICAgIHJldHVybiBGbG9hdDMy
QXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJh
eTo6dHJ5Q3JlYXRlKHZhbHVlLCBsZW5ndGgpOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlQ6IHsKICAgICAgICAgR0MzRGludCB2YWx1ZVs0XSA9IHswfTsKQEAgLTI5MzIs
NyArMjkzMiw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZv
cm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBjb25zdCBXZWJHCiAgICAgICAgICAgICBtX2NvbnRl
eHQtPmdldFVuaWZvcm1pdihvYmplY3RPclplcm8ocHJvZ3JhbSksIGxvY2F0aW9uLCB2YWx1ZSk7
CiAgICAgICAgIGlmIChsZW5ndGggPT0gMSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZVswXTsK
LSAgICAgICAgcmV0dXJuIEludDMyQXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKKyAgICAg
ICAgcmV0dXJuIEludDMyQXJyYXk6OnRyeUNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKICAgICB9CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTDogewogICAgICAgICBHQzNEaW50IHZhbHVl
WzRdID0gezB9OwpAQCAtMzAyOCw3ICszMDI4LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VmVydGV4QXR0cmliKEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmEK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfQVRUUklCX0FSUkFZX1RZUEU6CiAg
ICAgICAgIHJldHVybiBzdGF0ZS50eXBlOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNV
UlJFTlRfVkVSVEVYX0FUVFJJQjoKLSAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJheTo6Y3JlYXRl
KG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnZhbHVlLCA0KTsKKyAgICAgICAgcmV0dXJuIEZs
b2F0MzJBcnJheTo6dHJ5Q3JlYXRlKG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnZhbHVlLCA0
KTsKICAgICBkZWZhdWx0OgogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9FTlVNLCAiZ2V0VmVydGV4QXR0cmliIiwgImludmFsaWQgcGFyYW1ldGVy
IG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MjM1LDcgKzUyMzUsNyBAQCBS
ZWZQdHI8RmxvYXQzMkFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRXZWJHTEZs
b2F0QXJyYXlQYXJhbWV0ZXIoR0MzRAogICAgIGRlZmF1bHQ6CiAgICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAgICAgfQotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVu
Z3RoKTsKKyAgICByZXR1cm4gRmxvYXQzMkFycmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7
CiB9CiAKIFJlZlB0cjxJbnQzMkFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRX
ZWJHTEludEFycmF5UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQpAQCAtNTI1NCw3ICs1MjU0LDcg
QEAgUmVmUHRyPEludDMyQXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFdlYkdM
SW50QXJyYXlQYXJhbWV0ZXIoR0MzRGVudW0KICAgICBkZWZhdWx0OgogICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgIH0KLSAgICByZXR1cm4gSW50MzJBcnJheTo6Y3JlYXRlKHZhbHVlLCBs
ZW5ndGgpOworICAgIHJldHVybiBJbnQzMkFycmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7
CiB9CiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y2hlY2tUZXh0dXJlQ29tcGxl
dGVuZXNzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgYm9vbCBwcmVwYXJlVG9EcmF3KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNw
cAppbmRleCA1OTE1YTc3MzE2ZWQ4YTAzMGE0ZTZkM2FkNzQxMDRjMTc4Y2FkOWQyLi5iMzQwNDYz
YTM5YjM5NzNkZGI4MjNjMDBhMGMxNzNlNTUxZmM4ZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtMTAxNCw3ICsx
MDE0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmV4dHJhY3RLZXlV
UklLZXlJREFuZENlcnRpZmljYXRlRnJvbUluaXREYXQKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGluaXREYXRhQnVmZmVyID0gaW5pdERhdGEtPnVuc2hhcmVkQnVmZmVyKCk7CiAKICAgICAvLyBV
c2UgYSBEYXRhVmlldyB0byByZWFkIHVpbnQzMiB2YWx1ZXMgZnJvbSB0aGUgYnVmZmVyLCBhcyBV
aW50MzJBcnJheSByZXF1aXJlcyB0aGUgcmVhZHMgYmUgYWxpZ25lZCBvbiA0LWJ5dGUgYm91bmRh
cmllcy4gCi0gICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRhVmlldyA9IEpTQzo6RGF0
YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGluaXREYXRhQnVmZmVy
LT5ieXRlTGVuZ3RoKCkpOworICAgIGF1dG8gaW5pdERhdGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6
Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVM
ZW5ndGgoKSk7CiAgICAgdWludDMyX3Qgb2Zmc2V0ID0gMDsKICAgICBib29sIHN0YXR1cyA9IHRy
dWU7CiAKQEAgLTEwMjMsNyArMTAyMyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAg
aWYgKCFzdGF0dXMgfHwgb2Zmc2V0ICsga2V5VVJJTGVuZ3RoID4gaW5pdERhdGEtPmxlbmd0aCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWZQdHI8VWludDE2QXJyYXk+IGtleVVS
SUFycmF5ID0gVWludDE2QXJyYXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIG9m
ZnNldCwga2V5VVJJTGVuZ3RoKTsKKyAgICBhdXRvIGtleVVSSUFycmF5ID0gVWludDE2QXJyYXk6
OnRyeUNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIG9mZnNldCwga2V5VVJJTGVuZ3Ro
KTsKICAgICBpZiAoIWtleVVSSUFycmF5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEw
MzUsNyArMTAzNSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRy
YWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAgaWYgKCFzdGF0dXMg
fHwgb2Zmc2V0ICsga2V5SURMZW5ndGggPiBpbml0RGF0YS0+bGVuZ3RoKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxVaW50OEFycmF5PiBrZXlJREFycmF5ID0gVWludDhB
cnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgb2Zmc2V0LCBrZXlJRExlbmd0
aCk7CisgICAgYXV0byBrZXlJREFycmF5ID0gVWludDhBcnJheTo6dHJ5Q3JlYXRlKGluaXREYXRh
QnVmZmVyLmNvcHlSZWYoKSwgb2Zmc2V0LCBrZXlJRExlbmd0aCk7CiAgICAgaWYgKCFrZXlJREFy
cmF5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0
aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAgaWYgKCFzdGF0dXMgfHwgb2Zmc2V0ICsgY2VydGlmaWNh
dGVMZW5ndGggPiBpbml0RGF0YS0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGNlcnRpZmljYXRlID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZm
ZXIpLCBvZmZzZXQsIGNlcnRpZmljYXRlTGVuZ3RoKTsKKyAgICBjZXJ0aWZpY2F0ZSA9IFVpbnQ4
QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwgb2Zmc2V0LCBjZXJ0aWZp
Y2F0ZUxlbmd0aCk7CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Yu
Y3BwCmluZGV4IDMyMzJiNzM1YTMzMWFhZWRhZTRkMTcyMDg2NWIxODQwMjBhNmNjNDUuLjcwOWMw
ODBkNGZmYjAyMTNjOGRiNmZkZDRjOGJmNzhhN2UxMjU2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC05OSw3ICs5OSw3IEBA
IFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5
UmVxdWVzdChjb25zdCBTdHJpbmcmLCBVCiAgICAgZGVzdGluYXRpb25VUkwgPSBTdHJpbmcoKTsK
IAogICAgIGF1dG8ga2V5UmVxdWVzdEJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoQ0ZEYXRh
R2V0Qnl0ZVB0cihrZXlSZXF1ZXN0LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGtleVJlcXVlc3Qu
Z2V0KCkpKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoa2V5UmVxdWVz
dEJ1ZmZlciksIDAsIGtleVJlcXVlc3RCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgcmV0dXJu
IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGtleVJlcXVlc3RCdWZmZXIpLCAwLCBrZXlS
ZXF1ZXN0QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CmluZGV4IGU4MjQ0OWE1MGZjYzhlOWI4MTdmYzc3ZTJhYTNhMDE5NWY2YTEyMjYuLmE5MjYwMmZk
NjljZDM3ZjE4OWFkMzRjYmNjMWE0YzJkZWU3NDQ1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAt
MTg5MywxMiArMTg5MywxMiBAQCBib29sIEFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5n
T2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UgogICAgICAgICBSZWZQ
dHI8SlNDOjpEYXRhVmlldz4gaW5pdERhdGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGlu
aXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7
CiAgICAgICAgIGluaXREYXRhVmlldy0+c2V0PHVpbnQzMl90PigwLCBrZXlVUklTaXplLCB0cnVl
KTsKIAotICAgICAgICBSZWZQdHI8VWludDE2QXJyYXk+IGtleVVSSUFycmF5ID0gVWludDE2QXJy
YXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDQsIGtleVVSSS5sZW5ndGgoKSk7
CisgICAgICAgIGF1dG8ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRh
QnVmZmVyLmNvcHlSZWYoKSwgNCwga2V5VVJJLmxlbmd0aCgpKTsKICAgICAgICAga2V5VVJJQXJy
YXktPnNldFJhbmdlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihTdHJpbmdWaWV3
KGtleVVSSSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0KCkpLCBrZXlVUkkubGVuZ3RoKCkg
LyBzaXplb2YodW5zaWduZWQgY2hhciksIDApOwogCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5n
dGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwotICAgICAgICBSZWZQdHI8VWludDhB
cnJheT4gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShpbml0RGF0YUJ1ZmZl
ciksIDAsIGJ5dGVMZW5ndGgpOwotICAgICAgICBpZiAoIW1fb3duZXItPnBsYXllcigpLT5rZXlO
ZWVkZWQoaW5pdERhdGEuZ2V0KCkpKQorICAgICAgICBhdXRvIGluaXREYXRhID0gVWludDhBcnJh
eTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKKyAgICAg
ICAgaWYgKCFtX293bmVyLT5wbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBzZXRSZXF1ZXN0Rm9yS2V5KGtleVVS
SSwgYXZSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXggNWVkYWM0NjNjZGQyOWZlY2I4MDkyZjQ5
MTM3ZjhmMmM2MjZlMDMyYy4uZThkZDNiNWFlYzgyOTNjZDVlZDk2ZTk4ZjEwMzVlZTUzZTI4Yzdi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24ubW0KQEAgLTE2NSwxMCArMTY1LDEwIEBAIFJlZlB0cjxVaW50OEFycmF5
PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluCiAKICAgICBpZiAoIW1fY2VydGlmaWNhdGUpIHsKICAgICAgICAgU3RyaW5nIGNlcnRp
ZmljYXRlU3RyaW5nKCJjZXJ0aWZpY2F0ZSJfcyk7Ci0gICAgICAgIFJlZlB0cjxVaW50OEFycmF5
PiBhcnJheSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShjZXJ0aWZpY2F0ZVN0cmluZy5sZW5ndGgoKSk7
CisgICAgICAgIGF1dG8gYXJyYXkgPSBVaW50OEFycmF5OjpjcmVhdGUoY2VydGlmaWNhdGVTdHJp
bmcubGVuZ3RoKCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBsZW5ndGggPSBjZXJ0
aWZpY2F0ZVN0cmluZy5sZW5ndGgoKTsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgICAgICAgYXJy
YXktPnNldChpLCBjZXJ0aWZpY2F0ZVN0cmluZ1tpXSk7Ci0gICAgICAgIHJldHVybiBhcnJheTsK
KyAgICAgICAgcmV0dXJuIFdURk1vdmUoYXJyYXkpOwogICAgIH0KIAogICAgIGlmICghbV9rZXlS
ZXF1ZXN0KSB7CkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZDb250ZW50S2V5
U2Vzc2lvbjo6cmVsZWFzZUtleXMoKQogICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbklkID09IFN0
cmluZyhwbGF5YmFja1Nlc3Npb25JZFZhbHVlKSkgewogICAgICAgICAgICAgICAgIExPRyhNZWRp
YSwgIkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpyZWxlYXNlS2V5cyglcCkgLSBmb3Vu
ZCBzZXNzaW9uLCBzZW5kaW5nIGV4cGlyYXRpb24gbWVzc2FnZSIpOwogICAgICAgICAgICAgICAg
IG1fZXhwaXJlZFNlc3Npb24gPSBleHBpcmVkU2Vzc2lvbkRhdGE7Ci0gICAgICAgICAgICAgICAg
bV9jbGllbnQtPnNlbmRNZXNzYWdlKFVpbnQ4QXJyYXk6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oW21fZXhwaXJlZFNlc3Npb24gYnl0ZXNdKSwgW21fZXhwaXJlZFNlc3Npb24g
bGVuZ3RoXSkuZ2V0KCksIGVtcHR5U3RyaW5nKCkpOworICAgICAgICAgICAgICAgIG1fY2xpZW50
LT5zZW5kTWVzc2FnZShVaW50OEFycmF5OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KFttX2V4cGlyZWRTZXNzaW9uIGJ5dGVzXSksIFttX2V4cGlyZWRTZXNzaW9uIGxlbmd0aF0p
LnB0cigpLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpAQCAtMzAwLDcgKzMwMCw3IEBAIGJvb2wgQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5
PiYKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIG5leHRN
ZXNzYWdlID0gVWludDhBcnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihb
cmVxdWVzdERhdGEgYnl0ZXNdKSwgW3JlcXVlc3REYXRhIGxlbmd0aF0pOworICAgICAgICBuZXh0
TWVzc2FnZSA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oW3JlcXVlc3REYXRhIGJ5dGVzXSksIFtyZXF1ZXN0RGF0YSBsZW5ndGhdKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMzUwLDcgKzM1MCw3IEBAIFJlZlB0cjxVaW50OEFy
cmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVz
c2FnZSh1bnNpCiAgICAgZXJyb3JDb2RlID0gMDsKICAgICBzeXN0ZW1Db2RlID0gMDsKICAgICBt
X2V4cGlyZWRTZXNzaW9uID0gW2V4cGlyZWRTZXNzaW9ucyBmaXJzdE9iamVjdF07Ci0gICAgcmV0
dXJuIFVpbnQ4QXJyYXk6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW21fZXhw
aXJlZFNlc3Npb24gYnl0ZXNdKSwgW21fZXhwaXJlZFNlc3Npb24gbGVuZ3RoXSk7CisgICAgcmV0
dXJuIFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW21f
ZXhwaXJlZFNlc3Npb24gYnl0ZXNdKSwgW21fZXhwaXJlZFNlc3Npb24gbGVuZ3RoXSk7CiB9CiAK
IHZvaWQgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmRpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICprZXlSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA4MmY0
Y2RjMDcwZjUzYWQwN2U2YjliNWYyYzgzNDRmODgyNjNiMmFhLi5jYTE5YmFlMDhmZWM1ZmNjYmE1
N2U0OWFhMGY0ZWFmODcxM2U1Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtOTksOSArOTksOSBAQCBSZWZQdHI8
VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmVxdWVz
dChjb25zdCBTdHJpbmcmCiAgICAgc3lzdGVtQ29kZSA9IDA7CiAgICAgZGVzdGluYXRpb25VUkwg
PSBTdHJpbmcoKTsKIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2V5UmVxdWVzdEJ1ZmZlciA9
IEFycmF5QnVmZmVyOjpjcmVhdGUoW2tleVJlcXVlc3QuZ2V0KCkgYnl0ZXNdLCBba2V5UmVxdWVz
dC5nZXQoKSBsZW5ndGhdKTsKKyAgICBhdXRvIGtleVJlcXVlc3RCdWZmZXIgPSBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKFtrZXlSZXF1ZXN0LmdldCgpIGJ5dGVzXSwgW2tleVJlcXVlc3QuZ2V0KCkgbGVu
Z3RoXSk7CiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGtleVJlcXVlc3RCdWZmZXItPmJ5dGVM
ZW5ndGgoKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoa2V5UmVxdWVz
dEJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOworICAgIHJldHVybiBVaW50OEFycmF5Ojp0cnlDcmVh
dGUoV1RGTW92ZShrZXlSZXF1ZXN0QnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7CiB9CiAKIHZvaWQg
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OnJlbGVhc2VLZXlzKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVlN0cmVhbVNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCmluZGV4IDdiMjAy
ODEyMTA3MmRiNTcxMTdlYTYxMGUzM2FjMzQ0ZjEyZTExNDguLmUwMGY5NGRiNzc3MDY4YjM5ZDE1
NTg1MDg2ZDFkOTMwZWU5ZWVhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQpAQCAtMTIyLDEwICsxMjIsMTAgQEAgUmVmUHRy
PFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVz
dChjb25zdCBTdHJpbmcmIG0KICAgICB9CiAKICAgICBTdHJpbmcgY2VydGlmaWNhdGVTdHJpbmco
ImNlcnRpZmljYXRlIl9zKTsKLSAgICBSZWZQdHI8VWludDhBcnJheT4gYXJyYXkgPSBVaW50OEFy
cmF5OjpjcmVhdGUoY2VydGlmaWNhdGVTdHJpbmcubGVuZ3RoKCkpOworICAgIGF1dG8gYXJyYXkg
PSBVaW50OEFycmF5OjpjcmVhdGUoY2VydGlmaWNhdGVTdHJpbmcubGVuZ3RoKCkpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDAsIGxlbmd0aCA9IGNlcnRpZmljYXRlU3RyaW5nLmxlbmd0aCgpOyBp
IDwgbGVuZ3RoOyArK2kpCiAgICAgICAgIGFycmF5LT5zZXQoaSwgY2VydGlmaWNhdGVTdHJpbmdb
aV0pOwotICAgIHJldHVybiBhcnJheTsKKyAgICByZXR1cm4gV1RGTW92ZShhcnJheSk7CiB9CiAK
IHZvaWQgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMoKQpAQCAtMTU2LDcg
KzE1Niw3IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMoKQog
ICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbklkID09IFN0cmluZyhwbGF5YmFja1Nlc3Npb25JZFZh
bHVlKSkgewogICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVlN0cmVhbVNl
c3Npb246OnJlbGVhc2VLZXlzKCVwKSAtIGZvdW5kIHNlc3Npb24sIHNlbmRpbmcgZXhwaXJhdGlv
biBtZXNzYWdlIik7CiAgICAgICAgICAgICAgICAgbV9leHBpcmVkU2Vzc2lvbiA9IGV4cGlyZWRT
ZXNzaW9uRGF0YTsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UoVWludDhB
cnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbbV9leHBpcmVkU2Vzc2lv
biBieXRlc10pLCBbbV9leHBpcmVkU2Vzc2lvbiBsZW5ndGhdKS5nZXQoKSwgZW1wdHlTdHJpbmco
KSk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNlbmRNZXNzYWdlKFVpbnQ4QXJyYXk6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW21fZXhwaXJlZFNlc3Npb24gYnl0ZXNd
KSwgW21fZXhwaXJlZFNlc3Npb24gbGVuZ3RoXSkucHRyKCksIGVtcHR5U3RyaW5nKCkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zMzUsNyAr
MzM1LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246Omdl
bmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5zaWduZWQKICAgICBlcnJvckNvZGUgPSAwOwogICAg
IHN5c3RlbUNvZGUgPSAwOwogICAgIG1fZXhwaXJlZFNlc3Npb24gPSBbZXhwaXJlZFNlc3Npb25z
IGZpcnN0T2JqZWN0XTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihbbV9leHBpcmVkU2Vzc2lvbiBieXRlc10pLCBbbV9leHBpcmVkU2Vz
c2lvbiBsZW5ndGhdKTsKKyAgICByZXR1cm4gVWludDhBcnJheTo6dHJ5Q3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihbbV9leHBpcmVkU2Vzc2lvbiBieXRlc10pLCBbbV9leHBpcmVk
U2Vzc2lvbiBsZW5ndGhdKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZDQ0
YTA4N2E0Mjk5YWI2NTg1NmI4MjQ1NmE2MDlhYmIzMDhkNWMxYy4uZTAwYWUyZjJmZGU4YzE3YzIw
OWQ0NGYxOWQ4ZDY0YTZkZDAwMmY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xNzY0
LDE2ICsxNzY0LDE2IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgIC8vIENyZWF0
ZSBhbiBpbml0RGF0YSB3aXRoIHRoZSBmb2xsb3dpbmcgbGF5b3V0OgogICAgICAgICAvLyBbNCBi
eXRlczoga2V5VVJJIHNpemVdLCBba2V5VVJJIHNpemUgYnl0ZXM6IGtleVVSSV0KICAgICAgICAg
dW5zaWduZWQga2V5VVJJU2l6ZSA9IGtleVVSSS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcik7Ci0g
ICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gaW5pdERhdGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAxKTsKKyAgICAgICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9
IEFycmF5QnVmZmVyOjpjcmVhdGUoNCArIGtleVVSSVNpemUsIDEpOwogICAgICAgICB1bnNpZ25l
ZCBieXRlTGVuZ3RoID0gaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKTsKLSAgICAgICAgUmVm
UHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShp
bml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGJ5dGVMZW5ndGgpOworICAgICAgICBhdXRvIGlu
aXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVm
KCksIDAsIGJ5dGVMZW5ndGgpOwogICAgICAgICBpbml0RGF0YVZpZXctPnNldDx1aW50MzJfdD4o
MCwga2V5VVJJU2l6ZSwgdHJ1ZSk7CiAKLSAgICAgICAgUmVmUHRyPFVpbnQxNkFycmF5PiBrZXlV
UklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCA0
LCBrZXlVUkkubGVuZ3RoKCkpOworICAgICAgICBhdXRvIGtleVVSSUFycmF5ID0gVWludDE2QXJy
YXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDQsIGtleVVSSS5sZW5ndGgoKSk7
CiAgICAgICAgIGtleVVSSUFycmF5LT5zZXRSYW5nZShTdHJpbmdWaWV3KGtleVVSSSkudXBjb252
ZXJ0ZWRDaGFyYWN0ZXJzKCksIGtleVVSSS5sZW5ndGgoKSAvIHNpemVvZih1bnNpZ25lZCBjaGFy
KSwgMCk7CiAKLSAgICAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGluaXREYXRhID0gVWludDhBcnJh
eTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKLSAgICAg
ICAgaWYgKCFwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLmdldCgpKSkKKyAgICAgICAgYXV0
byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwg
MCwgYnl0ZUxlbmd0aCk7CisgICAgICAgIGlmICghcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0
YS5wdHIoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICAgICAgICAgbV9r
ZXlVUklUb1JlcXVlc3RNYXAuc2V0KGtleVVSSSwgYXZSZXF1ZXN0KTsKQEAgLTE4MDMsNyArMTgw
Myw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2Fp
dEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEu
Z2V0KCkpKQorICAgICAgICBpZiAoIXBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIG1fa2V5VVJJVG9SZXF1ZXN0
TWFwLnNldChrZXlJRCwgYXZSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U2FtcGxlQVZGT2JqQy5tbQppbmRleCAxODk4ZGNiNDgwN2RjM2Q0ZGVjYjRjMDNkZWJlNGVkZjg2
NzEyYjlmLi5jM2JjYTYxMDkwNTU0ZjgyOGI4NDgzOWFkNDA1NDlhNjI3YmZlNzQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCkBAIC0yOTQsNyArMjk0
LDcgQEAgUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IE1lZGlhU2FtcGxlQVZGT2JqQzo6
Z2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0CiAKICAgICB2b2lkKiBkYXRhID0gQ1ZQaXhlbEJ1ZmZl
ckdldEJhc2VBZGRyZXNzT2ZQbGFuZShyZ2JhUGl4ZWxCdWZmZXIuZ2V0KCksIDApOwogICAgIHNp
emVfdCBieXRlTGVuZ3RoID0gQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcikgKiBD
VlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZmZXIpICogNDsKLSAgICBhdXRvIHJlc3VsdCA9
IEpTQzo6VWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUo
ZGF0YSwgYnl0ZUxlbmd0aCksIDAsIGJ5dGVMZW5ndGgpOworICAgIGF1dG8gcmVzdWx0ID0gSlND
OjpVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZShk
YXRhLCBieXRlTGVuZ3RoKSwgMCwgYnl0ZUxlbmd0aCk7CiAKICAgICBzdGF0dXMgPSBDVlBpeGVs
QnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MocmdiYVBpeGVsQnVmZmVyLmdldCgpLCBrQ1ZQaXhlbEJ1
ZmZlckxvY2tfUmVhZE9ubHkpOwogICAgIEFTU0VSVChzdGF0dXMgPT0gbm9FcnIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpp
bmRleCBjZDM1NDc1OWVlNDRlMmYyMWI2M2JmYzI0MjliMDMyYWI1ZDNhZDM2Li40NWUwMzhiMzgy
OGI4MzhmZDdkZGM2M2E5Y2M3N2RmM2RiYTEwOWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNjUwLDcgKzY1MCw3
IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURf
TUVESUEpCiAgICAgTE9HKE1lZGlhU291cmNlLCAiU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQo
JXApIC0gdHJhY2s6JWQiLCB0aGlzLCB0cmFja0lEKTsKICAgICBtX3Byb3RlY3RlZFRyYWNrSUQg
PSB0cmFja0lEOwotICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YUFycmF5ID0gVWludDhB
cnJheTo6Y3JlYXRlKFtpbml0RGF0YSBsZW5ndGhdKTsKKyAgICBhdXRvIGluaXREYXRhQXJyYXkg
PSBVaW50OEFycmF5OjpjcmVhdGUoW2luaXREYXRhIGxlbmd0aF0pOwogICAgIFtpbml0RGF0YSBn
ZXRCeXRlczppbml0RGF0YUFycmF5LT5kYXRhKCkgbGVuZ3RoOmluaXREYXRhQXJyYXktPmxlbmd0
aCgpXTsKICAgICBtX21lZGlhU291cmNlLT5zb3VyY2VCdWZmZXJLZXlOZWVkZWQodGhpcywgaW5p
dERhdGFBcnJheS5nZXQoKSk7CiAgICAgaWYgKGF1dG8gc2Vzc2lvbiA9IG1fbWVkaWFTb3VyY2Ut
PnBsYXllcigpLT5jZG1TZXNzaW9uKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggNDU2
YWY3ODZkMDkyNTkwMTdjNDMxNzVkMmQ2NDA4NzE3NjJlOGE0ZS4uY2NiYmUxZjE1NmUwZjllM2Ew
ZjAzMWRhN2NjZTQyOGE2ZmVlOTRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTQxMiw3
ICs0MTIsNyBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBJbnRSZWN0JiBsb2dpYwogICAgIGlmIChhcmVhLmhhc092ZXJm
bG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHJlc3VsdCA9IFVp
bnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKGFyZWEudW5zYWZlR2V0KCkpOwor
ICAgIGF1dG8gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQoYXJlYS51bnNhZmVHZXQoKSk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKaW5kZXggZDQyYWEzNDQ4YjBiYzM3ZGU2ZTVmMDg5
NjM2ZDE3OTdkNTRmYTM3Ni4uODQ3OWQ1ZDNhMjNhMDdlODlkZmNiOGJiMjA1MjBmYTkwM2ViNzI5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJEYXRhQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyRGF0YUNHLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIFJlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKEFscGhhUHJlbXVsdGlwbGljYXRp
b24gb3V0cHV0CiAgICAgaWYgKGFyZWEuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGF1dG8gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQoYXJlYS51bnNhZmVHZXQoKSk7CisgICAgYXV0byByZXN1bHQgPSBVaW50OENs
YW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChhcmVhLnVuc2FmZUdldCgpKTsKICAg
ICB1aW50OF90KiByZXN1bHREYXRhID0gcmVzdWx0ID8gcmVzdWx0LT5kYXRhKCkgOiBudWxscHRy
OwogICAgIGlmICghcmVzdWx0RGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5C
bHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVz
c2lhbkJsdXIuY3BwCmluZGV4IDlhNzk5OGQxMzk1OTMwOTM3ODQ3NDI2MTg3NjYyYTc4MTA1NjAx
ZjIuLjExODAyMzExZTlhZWMxYzliNWYyZDA3YWZhMjlkNDcxMzA2MmI2N2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVz
c2lhbkJsdXIuY3BwCkBAIC01MzEsNyArNTMxLDcgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIEludFNpemUgcGFpbnRTaXplID0gYWJzb2x1dGVQ
YWludFJlY3QoKS5zaXplKCk7CiAgICAgcGFpbnRTaXplLnNjYWxlKGZpbHRlcigpLmZpbHRlclNj
YWxlKCkpOwotICAgIGF1dG8gdG1wSW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQoKHBhaW50U2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CisgICAg
YXV0byB0bXBJbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFs
aXplZCgocGFpbnRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKICAgICBpZiAoIXRtcElt
YWdlRGF0YSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggNjZjMzBh
OThjMjhhZWQyZmNmZjUxOTYwMmQyYzQ3MTM5Zjc2YWVhOC4uNmU5ODZkNGVjMmE5NzkyOTY2Mzg0
ZmM1NTA3NGEyZjk3MmI1OTBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcApAQCAtMjkwLDcgKzI5MCw3
IEBAIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojp1bm11bHRpcGxpZWRS
ZXN1bHQoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBJbnRTaXplIHNjYWxlZFNpemUocmVjdC5z
aXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHNjYWxl
ZFNpemUpKTsKICAgICBzY2FsZWRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwot
ICAgIGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQoKHNjYWxlZFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOworICAgIGF1dG8gaW1hZ2VE
YXRhID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoKHNjYWxlZFNp
emUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAgIGlmICghaW1hZ2VEYXRhKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMzAzLDcgKzMwMyw3IEBAIFJlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gRmlsdGVyRWZmZWN0OjpwcmVtdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJlY3Qm
IHJlY3QpCiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAgICBBU1NFUlQo
IUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXplKSk7CiAgICAgc2NhbGVk
U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBhdXRvIGltYWdlRGF0YSA9
IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKChzY2FsZWRTaXplLmFyZWEo
KSAqIDQpLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFy
cmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKChzY2FsZWRTaXplLmFyZWEoKSAqIDQpLnVuc2Fm
ZUdldCgpKTsKICAgICBpZiAoIWltYWdlRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgY29weVByZW11bHRpcGxpZWRSZXN1bHQoKmltYWdlRGF0YSwgcmVjdCk7CkBAIC00NTAsNyAr
NDUwLDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRSZXN1bHQoVWludDhD
bGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdAogICAgICAgICAgICAgSW50U2l6ZSBpbnB1
dFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFJ
bWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoaW5wdXRTaXplKSk7CiAgICAgICAgICAgICBp
bnB1dFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgICAgICAgICBtX3Vu
bXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoKGlucHV0U2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CisgICAgICAgICAgICBt
X3VubXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWQoKGlucHV0U2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CiAgICAgICAg
ICAgICBpZiAoIW1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgCkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6
OmNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwg
Y29uc3QKICAgICAgICAgICAgIEludFNpemUgaW5wdXRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Qu
c2l6ZSgpKTsKICAgICAgICAgICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1w
aW5nKGlucHV0U2l6ZSkpOwogICAgICAgICAgICAgaW5wdXRTaXplLnNjYWxlKG1fZmlsdGVyLmZp
bHRlclNjYWxlKCkpOwotICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBV
aW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgoaW5wdXRTaXplLmFyZWEoKSAq
IDQpLnVuc2FmZUdldCgpKTsKKyAgICAgICAgICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0
ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoKGlucHV0U2l6ZS5h
cmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CiAgICAgICAgICAgICBpZiAoIW1fcHJlbXVsdGlwbGll
ZEltYWdlUmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIApAQCAt
NTE1LDcgKzUxNSw3IEBAIFVpbnQ4Q2xhbXBlZEFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVVu
bXVsdGlwbGllZEltYWdlUmVzdWx0KCkKICAgICBJbnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0
ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0Ns
YW1waW5nKHJlc3VsdFNpemUpKTsKICAgICByZXN1bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRl
clNjYWxlKCkpOwotICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRB
cnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgocmVzdWx0U2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVH
ZXQoKSk7CisgICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKChyZXN1bHRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdl
dCgpKTsKICAgICByZXR1cm4gbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC5nZXQoKTsKIH0KIApA
QCAtNTMxLDcgKzUzMSw3IEBAIFVpbnQ4Q2xhbXBlZEFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0
ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiAgICAgSW50U2l6ZSByZXN1bHRTaXplKG1fYWJz
b2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVl
ZHNDbGFtcGluZyhyZXN1bHRTaXplKSk7CiAgICAgcmVzdWx0U2l6ZS5zY2FsZShtX2ZpbHRlci5m
aWx0ZXJTY2FsZSgpKTsKLSAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xh
bXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKChyZXN1bHRTaXplLmFyZWEoKSAqIDQpLnVu
c2FmZUdldCgpKTsKKyAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBl
ZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKChyZXN1bHRTaXplLmFyZWEoKSAqIDQpLnVu
c2FmZUdldCgpKTsKICAgICByZXR1cm4gbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwCmluZGV4IGYwZTI1ODA5MjA1Mzg1
NGNkNTE1OTZjN2UwNzE3NTllZjdjYmY1YTguLjAyNzVmOWRjOWJlOTY4ZjA3MDY2MzRlYzJiM2Nl
ODVkMDI5ZGU1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmNwcApAQCAtNTAsNyAr
NTAsNyBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyRGF0YTo6Z2V0RGF0
YShBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBjb25zdAogICAgIGlmIChudW1CeXRlcy5oYXNPdmVy
Zmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byByZXN1bHQgPSBV
aW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChudW1CeXRlcy51bnNhZmVHZXQo
KSk7CisgICAgYXV0byByZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0
aWFsaXplZChudW1CeXRlcy51bnNhZmVHZXQoKSk7CiAgICAgdW5zaWduZWQgY2hhciogcmVzdWx0
RGF0YSA9IHJlc3VsdCA/IHJlc3VsdC0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICBpZiAoIXJlc3Vs
dERhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0
aW9uTWFjLm1tCmluZGV4IGRjMGQ0MWMwMWYwYzgxMzMwYzhiNWNlMGIxYWRkZjhhNGQ1ZTU3OWUu
LmU5OTdiMzZhN2I0YTUwYTE2MzNhYjBhZWFhZjZhYTFiNzhmNWRiNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlv
bk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWMubW0KQEAgLTE5MCw3ICsxOTAsNyBAQCBzdGF0aWMgSlNWYWx1
ZSAqanNWYWx1ZVdpdGhEaWN0aW9uYXJ5SW5Db250ZXh0KE5TRGljdGlvbmFyeSAqZGljdGlvbmFy
eSwgSlNDb250ZQogICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgYXV0byBuYW1lID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShrZXkpOworICAgICAg
ICBhdXRvIG5hbWUgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGtleSk7CiAgICAgICAgIEpT
T2JqZWN0U2V0UHJvcGVydHkoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgcmVzdWx0T2Jq
ZWN0LCBuYW1lLmdldCgpLCBbdmFsdWUgSlNWYWx1ZVJlZl0sIDAsICZleGNlcHRpb24pOwogICAg
ICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcAppbmRleCBk
NGFhMjA1NDYzZTg4ZmU3NTA3NmYyYTgwN2VmOTJkMjAzZTliZTkxLi5lNTRiYTM3NmRhNjE2NjQ1
N2MyMzI4OTcxODE0Y2ZmMzg1ZmE2ZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgTW9j
a0JveDo6TW9ja0JveChBcnJheUJ1ZmZlciogZGF0YSkKIFN0cmluZyBNb2NrQm94OjpwZWVrVHlw
ZShBcnJheUJ1ZmZlciogZGF0YSkKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAg
UmVmUHRyPEludDhBcnJheT4gYXJyYXkgPSBKU0M6OkludDhBcnJheTo6Y3JlYXRlKGRhdGEsIDAs
IDQpOworICAgIGF1dG8gYXJyYXkgPSBKU0M6OkludDhBcnJheTo6Y3JlYXRlKGRhdGEsIDAsIDQp
OwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKQogICAgICAgICBidWlsZGVyLmFwcGVu
ZChhcnJheS0+aXRlbShpKSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTU3
LDcgKzU3LDcgQEAgU3RyaW5nIE1vY2tCb3g6OnBlZWtUeXBlKEFycmF5QnVmZmVyKiBkYXRhKQog
CiBzaXplX3QgTW9ja0JveDo6cGVla0xlbmd0aChBcnJheUJ1ZmZlciogZGF0YSkKIHsKLSAgICBS
ZWZQdHI8SlNDOjpEYXRhVmlldz4gdmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShkYXRhLCAw
LCBkYXRhLT5ieXRlTGVuZ3RoKCkpOworICAgIGF1dG8gdmlldyA9IEpTQzo6RGF0YVZpZXc6OmNy
ZWF0ZShkYXRhLCAwLCBkYXRhLT5ieXRlTGVuZ3RoKCkpOwogICAgIHJldHVybiB2aWV3LT5nZXQ8
dWludDMyX3Q+KDQsIHRydWUpOwogfQogCkBAIC02NiwxMSArNjYsMTEgQEAgTW9ja1RyYWNrQm94
OjpNb2NrVHJhY2tCb3goQXJyYXlCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fbGVuZ3Ro
ID09IDE3KTsKIAotICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3PiB2aWV3ID0gSlNDOjpEYXRhVmll
dzo6Y3JlYXRlKGRhdGEsIDAsIGRhdGEtPmJ5dGVMZW5ndGgoKSk7CisgICAgYXV0byB2aWV3ID0g
SlNDOjpEYXRhVmlldzo6Y3JlYXRlKGRhdGEsIDAsIGRhdGEtPmJ5dGVMZW5ndGgoKSk7CiAgICAg
bV90cmFja0lEID0gdmlldy0+Z2V0PGludDMyX3Q+KDgsIHRydWUpOwogCiAgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwotICAgIFJlZlB0cjxJbnQ4QXJyYXk+IGFycmF5ID0gSlNDOjpJbnQ4QXJy
YXk6OmNyZWF0ZShkYXRhLCAxMiwgNCk7CisgICAgYXV0byBhcnJheSA9IEpTQzo6SW50OEFycmF5
OjpjcmVhdGUoZGF0YSwgMTIsIDQpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKQog
ICAgICAgICBidWlsZGVyLmFwcGVuZChhcnJheS0+aXRlbShpKSk7CiAgICAgbV9jb2RlYyA9IGJ1
aWxkZXIudG9TdHJpbmcoKTsKQEAgLTg5LDcgKzg5LDcgQEAgTW9ja0luaXRpYWxpemF0aW9uQm94
OjpNb2NrSW5pdGlhbGl6YXRpb25Cb3goQXJyYXlCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJU
KG1fbGVuZ3RoID49IDEzKTsKIAotICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3PiB2aWV3ID0gSlND
OjpEYXRhVmlldzo6Y3JlYXRlKGRhdGEsIDAsIGRhdGEtPmJ5dGVMZW5ndGgoKSk7CisgICAgYXV0
byB2aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGRhdGEsIDAsIGRhdGEtPmJ5dGVMZW5ndGgo
KSk7CiAgICAgaW50MzJfdCB0aW1lVmFsdWUgPSB2aWV3LT5nZXQ8aW50MzJfdD4oOCwgdHJ1ZSk7
CiAgICAgaW50MzJfdCB0aW1lU2NhbGUgPSB2aWV3LT5nZXQ8aW50MzJfdD4oMTIsIHRydWUpOwog
ICAgIG1fZHVyYXRpb24gPSBNZWRpYVRpbWUodGltZVZhbHVlLCB0aW1lU2NhbGUpOwpAQCAtMTE4
LDcgKzExOCw3IEBAIE1vY2tTYW1wbGVCb3g6Ok1vY2tTYW1wbGVCb3goQXJyYXlCdWZmZXIqIGRh
dGEpCiB7CiAgICAgQVNTRVJUKG1fbGVuZ3RoID09IDMwKTsKIAotICAgIFJlZlB0cjxKU0M6OkRh
dGFWaWV3PiB2aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGRhdGEsIDAsIGRhdGEtPmJ5dGVM
ZW5ndGgoKSk7CisgICAgYXV0byB2aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGRhdGEsIDAs
IGRhdGEtPmJ5dGVMZW5ndGgoKSk7CiAgICAgaW50MzJfdCB0aW1lU2NhbGUgPSB2aWV3LT5nZXQ8
aW50MzJfdD4oOCwgdHJ1ZSk7CiAKICAgICBpbnQzMl90IHRpbWVWYWx1ZSA9IHZpZXctPmdldDxp
bnQzMl90PigxMiwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUu
Y3BwCmluZGV4IDY4MzJkMDliODc1YmUzZDQ3MDg4Y2JkNmNlZTVlOWVjNzFmNTEyNDEuLmI3NTdm
OWY5NWQ2Yzk1OTUxOWFjMDY1YjRlMGYwM2ViYTUxZDY3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0xODksNiArMTg5LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0
aHJlc2hvbGQsIGMKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdl
LCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsKIAogICAgICAgICBSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IHBpeGVsQXJyYXkgPSBpbWFnZUJ1ZmZlci0+Z2V0VW5tdWx0
aXBsaWVkSW1hZ2VEYXRhKEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChwaXhlbEFycmF5KTsKICAgICAgICAgdW5zaWduZWQgcGl4
ZWxBcnJheUxlbmd0aCA9IHBpeGVsQXJyYXktPmxlbmd0aCgpOwogICAgICAgICB1bnNpZ25lZCBw
aXhlbEFycmF5T2Zmc2V0ID0gMzsgLy8gRWFjaCBwaXhlbCBpcyBmb3VyIGJ5dGVzOiBSR0JBLgog
ICAgICAgICB1aW50OF90IGFscGhhUGl4ZWxUaHJlc2hvbGQgPSB0aHJlc2hvbGQgKiAyNTU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcAppbmRleCAzODkwYzBmYWJjNDdl
NTkwZTViMWFiYmQzNWQyZjk5MmM0NjVhNzQ3Li42NDI4N2QyMzlhZjU3M2U5MjAzZDI1ODQzMWIy
NzNjN2I4NzQ5MDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1v
Y2tDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAK
QEAgLTc5LDI1ICs3OSwyNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTGVn
YWN5TW9ja0NETTo6Y3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQwogc3RhdGljIFVpbnQ4
QXJyYXkqIGluaXREYXRhUHJlZml4KCkKIHsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIHByZWZp
eERhdGFbXSA9IHsgJ20nLCAnbycsICdjJywgJ2snIH07Ci0gICAgc3RhdGljIFVpbnQ4QXJyYXkq
IHByZWZpeCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShwcmVmaXhEYXRhLCBXVEZfQVJSQVlfTEVOR1RI
KHByZWZpeERhdGEpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIFVpbnQ4QXJyYXkmIHByZWZpeCB7
IFVpbnQ4QXJyYXk6OmNyZWF0ZShwcmVmaXhEYXRhLCBXVEZfQVJSQVlfTEVOR1RIKHByZWZpeERh
dGEpKS5sZWFrUmVmKCkgfTsKIAotICAgIHJldHVybiBwcmVmaXg7CisgICAgcmV0dXJuICZwcmVm
aXg7CiB9CiAKIHN0YXRpYyBVaW50OEFycmF5KiBrZXlQcmVmaXgoKQogewogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBjaGFyIHByZWZpeERhdGFbXSA9IHsnaycsICdlJywgJ3knfTsKLSAgICBz
dGF0aWMgVWludDhBcnJheSogcHJlZml4ID0gVWludDhBcnJheTo6Y3JlYXRlKHByZWZpeERhdGEs
IFdURl9BUlJBWV9MRU5HVEgocHJlZml4RGF0YSkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgVWlu
dDhBcnJheSYgcHJlZml4IHsgVWludDhBcnJheTo6Y3JlYXRlKHByZWZpeERhdGEsIFdURl9BUlJB
WV9MRU5HVEgocHJlZml4RGF0YSkpLmxlYWtSZWYoKSB9OwogCi0gICAgcmV0dXJuIHByZWZpeDsK
KyAgICByZXR1cm4gJnByZWZpeDsKIH0KIAogc3RhdGljIFVpbnQ4QXJyYXkqIGtleVJlcXVlc3Qo
KQogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHJlcXVlc3REYXRhW10gPSB7J3In
LCAnZScsICdxJywgJ3UnLCAnZScsICdzJywgJ3QnfTsKLSAgICBzdGF0aWMgVWludDhBcnJheSog
cmVxdWVzdCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShyZXF1ZXN0RGF0YSwgV1RGX0FSUkFZX0xFTkdU
SChyZXF1ZXN0RGF0YSkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgVWludDhBcnJheSYgcmVxdWVz
dCB7IFVpbnQ4QXJyYXk6OmNyZWF0ZShyZXF1ZXN0RGF0YSwgV1RGX0FSUkFZX0xFTkdUSChyZXF1
ZXN0RGF0YSkpLmxlYWtSZWYoKSB9OwogCi0gICAgcmV0dXJuIHJlcXVlc3Q7CisgICAgcmV0dXJu
ICZyZXF1ZXN0OwogfQogCiBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlU2Vzc2lvbklkKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcAppbmRleCA3OGRlNjFlOThhNzc5Mjc4MmM1
MDJhNDA0NzhjYjNhZGQyMTViMTA1Li43NjdhYThkOTE0YjBjZjc1MTk2ZTIwYzM2M2I4MDYzOGZm
ZDdkM2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwCkBAIC0xMzYs
NSArMTM2LDUgQEAgV0tTdHJpbmdSZWYgV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoSlNTdHJp
bmdSZWYganNTdHJpbmdSZWYpCiBKU1N0cmluZ1JlZiBXS1N0cmluZ0NvcHlKU1N0cmluZyhXS1N0
cmluZ1JlZiBzdHJpbmdSZWYpCiB7CiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7Ci0g
ICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUodG9JbXBsKHN0cmluZ1JlZiktPnN0cmlu
ZygpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUodG9J
bXBsKHN0cmluZ1JlZiktPnN0cmluZygpKS5sZWFrUmVmKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkuY3BwCmluZGV4IDI5ZmIwMWUyMGM0MDA4NGYzOWE5Mzk3NjE5N2VkYTg1NTQz
YzlmYzEuLmVmYTAzNDE0MDJhMGFmMzdiYjEyZTNlOWY0MzRmY2YyYzUyMzNmYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyBKU09i
amVjdFJlZiB0b0pTQXJyYXkoSlNDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxUPiYg
ZGF0YSwgSlNWYWx1CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZVJlZiB0b0pTVmFsdWUoSlNDb250
ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIHJldHVybiBKU1Zh
bHVlTWFrZVN0cmluZyhjb250ZXh0LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHN0cmluZykuZ2V0
KCkpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBPcGFxdWVKU1N0cmlu
Zzo6dHJ5Q3JlYXRlKHN0cmluZykuZ2V0KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWVS
ZWYgY2FsbFByb3BlcnR5RnVuY3Rpb24oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IG9iamVjdCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIHNpemVfdCBhcmd1bWVudENvdW50
LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBA
IC05Niw3ICs5Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZVJlZiBjYWxsUHJvcGVydHlGdW5j
dGlvbihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYKICAgICBBU1NFUlRfQVJHKG9i
amVjdCwgb2JqZWN0KTsKICAgICBBU1NFUlRfQVJHKG9iamVjdCwgSlNWYWx1ZUlzT2JqZWN0KGNv
bnRleHQsIG9iamVjdCkpOwogCi0gICAgSlNPYmplY3RSZWYgZnVuY3Rpb24gPSBjb25zdF9jYXN0
PEpTT2JqZWN0UmVmPihKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIG9iamVjdCwgT3BhcXVl
SlNTdHJpbmc6OmNyZWF0ZShwcm9wZXJ0eU5hbWUpLmdldCgpLCBleGNlcHRpb24pKTsKKyAgICBK
U09iamVjdFJlZiBmdW5jdGlvbiA9IGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KEpTT2JqZWN0R2V0
UHJvcGVydHkoY29udGV4dCwgb2JqZWN0LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHByb3Bl
cnR5TmFtZSkuZ2V0KCksIGV4Y2VwdGlvbikpOwogICAgIEFTU0VSVChKU09iamVjdElzRnVuY3Rp
b24oY29udGV4dCwgZnVuY3Rpb24pKTsKIAogICAgIHJldHVybiBKU09iamVjdENhbGxBc0Z1bmN0
aW9uKGNvbnRleHQsIGZ1bmN0aW9uLCBvYmplY3QsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywg
ZXhjZXB0aW9uKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBKU09iamVjdFJlZiBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjpzY3JpcHRPYmplY3RGb3JGcmFtZShXZWJGcmFtZSYgZnJhbWUpCiAKICAg
ICBTdHJpbmcgc2NyaXB0ID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZSwgc2l6ZW9mKFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHlTY3JpcHRTb3VyY2UpKTsKIAotICAgIEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdEZ1
bmN0aW9uID0gY29uc3RfY2FzdDxKU09iamVjdFJlZj4oSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0
LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHNjcmlwdCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIs
IDAsICZleGNlcHRpb24pKTsKKyAgICBKU09iamVjdFJlZiBzY3JpcHRPYmplY3RGdW5jdGlvbiA9
IGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgT3BhcXVl
SlNTdHJpbmc6OnRyeUNyZWF0ZShzY3JpcHQpLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAwLCAm
ZXhjZXB0aW9uKSk7CiAgICAgQVNTRVJUKEpTVmFsdWVJc09iamVjdChjb250ZXh0LCBzY3JpcHRP
YmplY3RGdW5jdGlvbikpOwogCiAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSA9IHsgc2Vzc2lv
bklkZW50aWZpZXIsIGV2YWx1YXRlRnVuY3Rpb24sIGNyZWF0ZVVVSURGdW5jdGlvbiB9OwpAQCAt
MjgwLDcgKzI4MCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZXZhbHVhdGVK
YXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgcGFnZUlELCB1aW50CiAKICAgICBTdHJpbmcgZXhj
ZXB0aW9uTWVzc2FnZTsKICAgICBpZiAoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIGV4Y2VwdGlv
bikpIHsKLSAgICAgICAgSlNWYWx1ZVJlZiBuYW1lVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5
KGNvbnRleHQsIGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KGV4Y2VwdGlvbiksIE9wYXF1ZUpTU3Ry
aW5nOjpjcmVhdGUoIm5hbWUiX3MpLmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgSlNWYWx1ZVJl
ZiBuYW1lVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGNvbnN0X2Nhc3Q8SlNP
YmplY3RSZWY+KGV4Y2VwdGlvbiksIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoIm5hbWUiX3Mp
LmdldCgpLCBudWxscHRyKTsKICAgICAgICAgYXV0byBleGNlcHRpb25OYW1lID0gYWRvcHRSZWYo
SlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBuYW1lVmFsdWUsIG51bGxwdHIpKS0+c3RyaW5n
KCk7CiAgICAgICAgIGlmIChleGNlcHRpb25OYW1lID09ICJOb2RlTm90Rm91bmQiKQogICAgICAg
ICAgICAgZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6
OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVy
cm9yTWVzc2FnZTo6Tm9kZU5vdEZvdW5kKTsKQEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90
IHBhZ2VJRCwgdWludAogICAgICAgICBlbHNlIGlmIChleGNlcHRpb25OYW1lID09ICJJbnZhbGlk
U2VsZWN0b3IiKQogICAgICAgICAgICAgZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6SW52YWxpZFNlbGVjdG9yKTsKIAotICAgICAg
ICBKU1ZhbHVlUmVmIG1lc3NhZ2VWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwg
Y29uc3RfY2FzdDxKU09iamVjdFJlZj4oZXhjZXB0aW9uKSwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0
ZSgibWVzc2FnZSJfcykuZ2V0KCksIG51bGxwdHIpOworICAgICAgICBKU1ZhbHVlUmVmIG1lc3Nh
Z2VWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgY29uc3RfY2FzdDxKU09iamVj
dFJlZj4oZXhjZXB0aW9uKSwgT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSgibWVzc2FnZSJfcyku
Z2V0KCksIG51bGxwdHIpOwogICAgICAgICBleGNlcHRpb25NZXNzYWdlID0gYWRvcHRSZWYoSlNW
YWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBtZXNzYWdlVmFsdWUsIG51bGxwdHIpKS0+c3RyaW5n
KCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGV4Y2VwdGlvbk1lc3NhZ2UgPSBhZG9wdFJlZihKU1Zh
bHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGV4Y2VwdGlvbiwgbnVsbHB0cikpLT5zdHJpbmcoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
CmluZGV4IDNkMWZlNzVhOTAwYjdiMjU2YzdlMjUzOWUwMjNiM2E3M2Y3MWY5NjUuLjQ5YjIyMjU0
MDViODJmODE4ZDNlZmMwMjc1NDllNDM5ZWJkOTE3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTExOCw3ICsxMTE4LDcg
QEAgdm9pZCBQREZQbHVnaW46OnJ1blNjcmlwdHNJblBERkRvY3VtZW50KCkKICAgICBKU0dsb2Jh
bENvbnRleHRSZWYgY3R4ID0gSlNHbG9iYWxDb250ZXh0Q3JlYXRlKDApOwogICAgIEpTT2JqZWN0
UmVmIGpzUERGRG9jID0gbWFrZUpTUERGRG9jKGN0eCk7CiAgICAgZm9yIChhdXRvJiBzY3JpcHQg
OiBzY3JpcHRzKQotICAgICAgICBKU0V2YWx1YXRlU2NyaXB0KGN0eCwgT3BhcXVlSlNTdHJpbmc6
OmNyZWF0ZShzY3JpcHQuZ2V0KCkpLmdldCgpLCBqc1BERkRvYywgbnVsbHB0ciwgMCwgbnVsbHB0
cik7CisgICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3Jl
YXRlKHNjcmlwdC5nZXQoKSkuZ2V0KCksIGpzUERGRG9jLCBudWxscHRyLCAwLCBudWxscHRyKTsK
ICAgICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKGN0eCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQppbmRleCAxODQxYjk4NWM4NTBj
YWYwNDM3NGFhODEzYTIwNTBiZGYwMDQ1N2E3Li5mOGI2NmEzYjc0Y2UxZjMyNTAxNWM5NWY3YWRj
Yzk5NWQ3ZmU4ZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3
L1dlYlBERlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9X
ZWJQREZWaWV3SU9TLm1tCkBAIC0zMjYsNyArMzI2LDcgQEAgLSAodm9pZClmaW5pc2hlZExvYWRp
bmdXaXRoRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKICAgICBKU0dsb2Jh
bENvbnRleHRSZWYgY3R4ID0gSlNHbG9iYWxDb250ZXh0Q3JlYXRlKDApOwogICAgIEpTT2JqZWN0
UmVmIGpzUERGRG9jID0gbWFrZUpTUERGRG9jKGN0eCwgZGF0YVNvdXJjZSk7CiAgICAgZm9yIChO
U1N0cmluZyAqc2NyaXB0IGluIHNjcmlwdHMpCi0gICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4
LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHNjcmlwdCkuZ2V0KCksIGpzUERGRG9jLCBudWxscHRy
LCAwLCBudWxscHRyKTsKKyAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIE9wYXF1ZUpTU3Ry
aW5nOjp0cnlDcmVhdGUoc2NyaXB0KS5nZXQoKSwganNQREZEb2MsIG51bGxwdHIsIDAsIG51bGxw
dHIpOwogICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoY3R4KTsKIAogICAgIFtzZWxmIHNldE5l
ZWRzRGlzcGxheTpZRVNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Vmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQppbmRleCAxZTg2YmEwNzQ0YjQ0ZmY2NGQy
NDE2N2JlNzg0OGFhZjdlOTU3ZTMzLi5lOGVhNTJjMGU1ZGQ1N2Q4YmViYjYxNzY5NjQzN2UzZTIy
NWRiOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBE
RlZpZXdQbGFjZWhvbGRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3
L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQpAQCAtMzA3LDcgKzMwNyw3IEBAIC0gKHZvaWQpX2V2
YWx1YXRlSlNGb3JEb2N1bWVudDooQ0dQREZEb2N1bWVudFJlZilwZGZEb2N1bWVudAogICAgICAg
ICBKU0dsb2JhbENvbnRleHRSZWYgY3R4ID0gSlNHbG9iYWxDb250ZXh0Q3JlYXRlKDApOwogICAg
ICAgICBKU09iamVjdFJlZiBqc1BERkRvYyA9IG1ha2VKU1BERkRvYyhjdHgsIF9kYXRhU291cmNl
KTsKICAgICAgICAgZm9yIChOU1N0cmluZyAqc2NyaXB0IGluIHNjcmlwdHMpCi0gICAgICAgICAg
ICBKU0V2YWx1YXRlU2NyaXB0KGN0eCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShzY3JpcHQpLmdl
dCgpLCBqc1BERkRvYywgbnVsbHB0ciwgMCwgbnVsbHB0cik7CisgICAgICAgICAgICBKU0V2YWx1
YXRlU2NyaXB0KGN0eCwgT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShzY3JpcHQpLmdldCgpLCBq
c1BERkRvYywgbnVsbHB0ciwgMCwgbnVsbHB0cik7CiAgICAgICAgIEpTR2xvYmFsQ29udGV4dFJl
bGVhc2UoY3R4KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbQppbmRleCBhYWRmZWQyMThmY2VmNGIx
MmZiODlhYTc3N2ExOTRmNWZkMjdhMDQ1Li4zNDY4ZGRkY2Q0YTc3YmJhNzM4NjlhODc5NzQ3NTkx
MDhjZWYzNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlBERlJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUERGUmVwcmVzZW50YXRpb24ubW0KQEAgLTEzNCw3ICsxMzQsNyBAQCAtICh2b2lkKWZp
bmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQog
ICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjdHggPSBKU0dsb2JhbENvbnRleHRDcmVhdGUoMCk7CiAg
ICAgSlNPYmplY3RSZWYganNQREZEb2MgPSBtYWtlSlNQREZEb2MoY3R4LCBkYXRhU291cmNlKTsK
ICAgICBmb3IgKE5TU3RyaW5nICpzY3JpcHQgaW4gc2NyaXB0cykKLSAgICAgICAgSlNFdmFsdWF0
ZVNjcmlwdChjdHgsIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoc2NyaXB0KS5nZXQoKSwganNQREZE
b2MsIG51bGxwdHIsIDAsIG51bGxwdHIpOworICAgICAgICBKU0V2YWx1YXRlU2NyaXB0KGN0eCwg
T3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShzY3JpcHQpLmdldCgpLCBqc1BERkRvYywgbnVsbHB0
ciwgMCwgbnVsbHB0cik7CiAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShjdHgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351968</attachid>
            <date>2018-10-10 09:38:47 -0700</date>
            <delta_ts>2018-10-10 09:38:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190429-20181011013846.patch</filename>
            <type>text/plain</type>
            <size>125952</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NWRkYTc3YTg1YTkxNzUyZTZkNjZjM2U4MGI2NGEwZjE4YzRhNzIyLi44ZWU5ODNjZTJmNDUzNmRj
NWMxOGZhZmQ4NWY2ODAxMGZmMmFkYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjQgQEAKKzIwMTgtMTAtMTAgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xv
d3N0YXJ0Lm9yZz4KKworICAgICAgICBbSlNDXSBSZW5hbWUgY3JlYXRlWFhYIHRvIHRyeUNyZWF0
ZVhYWCBpZiBpdCBjYW4gcmV0dXJuIFJlZlB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU29tZSBjcmVhdGVYWFggZnVuY3Rpb25zIGNhbiBmYWlsLiBC
dXQgc29tZXRpbWVzIHRoZSBjYWxsZXIgZG9lcyBub3QgcGVyZm9ybSBlcnJvciBjaGVja2luZy4K
KyAgICAgICAgVG8gbWFrZSBpdCBleHBsaWNpdCB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBjYW4gZmFp
bCwgd2UgcmVuYW1lIHRoZXNlIGZ1bmN0aW9ucyBmcm9tIGNyZWF0ZVhYWAorICAgICAgICB0byB0
cnlDcmVhdGVYWFguIEluIHRoaXMgcGF0Y2gsIHdlIGZvY3VzIG9uIG5vbi1KUy1tYW5hZ2VkIGZh
Y3RvcnkgZnVuY3Rpb25zLiBJZiB0aGUgZmFjdG9yeQorICAgICAgICBmdW5jdGlvbiBkb2VzIG5v
dCBmYWlsLCBpdCBzaG91bGQgcmV0dXJuIFJlZjw+LiBPdGhlcndpc2UsIGl0IHNob3VsZCBiZSBu
YW1lZCBhcyB0cnlDcmVhdGVYWFgKKyAgICAgICAgYW5kIGl0IHNob3VsZCByZXR1cm4gUmVmUHRy
PD4uCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWlubHkgZm9jdXNlcyBvbiBUeXBlZEFycmF5IGZh
Y3RvcnkgZnVuY3Rpb25zLiBQcmV2aW91c2x5LCB0aGVzZSBmdW5jdGlvbnMgYXJlCisgICAgICAg
IGBSZWZQdHI8WFhYQXJyYXk+IGNyZWF0ZSguLi4pYC4gVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZW0g
dG8gYFJlZlB0cjxYWFhBcnJheT4gdHJ5Q3JlYXRlKC4uLilgLgorICAgICAgICBBbmQgd2UgYWxz
byBpbnRyb2R1Y2UgYFJlZjxYWFhBcnJheT4gY3JlYXRlKC4uLilgIGZ1bmN0aW9uIHdoaWNoIGlu
dGVybmFsbHkgcGVyZm9ybXMKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQgb24gdGhlIHJlc3VsdCBv
ZiBgdHJ5Q3JlYXRlKC4uLilgLgorCisgICAgICAgIEFuZCB3ZSBhbHNvIGNvbnZlcnQgT3BhcXVl
SlNTdHJpbmc6OmNyZWF0ZSB0byBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlIHNpbmNlIGl0IGNh
biBmYWlsLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFjdHVhbGx5IGZpbmRzIG9uZSBwbGFjZSB3
aGljaCBkb2VzIG5vdCBwZXJmb3JtIGFueSBudWxsIGNoZWNraW5ncyB3aGlsZSBpdCB1c2VzCisg
ICAgICAgIGBSZWZQdHI8PiBjcmVhdGUoLi4uKWAgZnVuY3Rpb24uCisKKyAgICAgICAgKiBBUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpwdXRCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Y2FsbGJhY2tHZXR0ZXIpOgorICAgICAgICAqIEFQSS9KU0NsYXNzUmVmLmg6CisgICAg
ICAgIChTdGF0aWNWYWx1ZUVudHJ5OjpTdGF0aWNWYWx1ZUVudHJ5KToKKyAgICAgICAgKiBBUEkv
SlNDb250ZXh0Lm1tOgorICAgICAgICAoLVtKU0NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6d2l0aFNv
dXJjZVVSTDpdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IHNldE5hbWU6XSk6CisgICAgICAgICog
QVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRDb3B5TmFtZSk6
CisgICAgICAgIChKU0NvbnRleHRDcmVhdGVCYWNrdHJhY2UpOgorICAgICAgICAqIEFQSS9KU09i
amVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAqIEFQSS9KU1N0cmluZ1JlZi5jcHA6
CisgICAgICAgIChKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KToKKyAgICAgICAg
KiBBUEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdSZWd1bGFy
RXhwcmVzc2lvbkZyb21QYXR0ZXJuOmZsYWdzOmluQ29udGV4dDpdKToKKyAgICAgICAgKCtbSlNW
YWx1ZSB2YWx1ZVdpdGhOZXdFcnJvckZyb21NZXNzYWdlOmluQ29udGV4dDpdKToKKyAgICAgICAg
KCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246aW5Db250ZXh0Ol0p
OgorICAgICAgICAocGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uKToKKyAgICAgICAgKC1bSlNWYWx1
ZSBpbnZva2VNZXRob2Q6d2l0aEFyZ3VtZW50czpdKToKKyAgICAgICAgKGNvbnRhaW5lclZhbHVl
VG9PYmplY3QpOgorICAgICAgICAob2JqZWN0VG9WYWx1ZVdpdGhvdXRDb3B5KToKKyAgICAgICAg
KG9iamVjdFRvVmFsdWUpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmNwcDoKKyAgICAgICAg
KEpTVmFsdWVDcmVhdGVKU09OU3RyaW5nKToKKyAgICAgICAgKEpTVmFsdWVUb1N0cmluZ0NvcHkp
OgorICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmluZy5jcHA6CisgICAgICAgIChPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUpOiBEZWxl
dGVkLgorICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmluZy5oOgorICAgICAgICAqIEFQSS9nbGli
L0pTQ0NvbnRleHQuY3BwOgorICAgICAgICAoZXZhbHVhdGVTY3JpcHRJbkNvbnRleHQpOgorICAg
ICAgICAqIEFQSS9nbGliL0pTQ1ZhbHVlLmNwcDoKKyAgICAgICAgKGpzY192YWx1ZV9uZXdfc3Ry
aW5nX2Zyb21fYnl0ZXMpOgorICAgICAgICAqIGZ0bC9GVExMYXp5U2xvd1BhdGguaDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpMYXp5U2xvd1BhdGg6OmNyZWF0ZUdlbmVyYXRvcik6CisgICAgICAgICog
ZnRsL0ZUTExhenlTbG93UGF0aENhbGwuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpjcmVhdGVMYXp5
Q2FsbEdlbmVyYXRvcik6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXQuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6Ok9TUkV4aXREZXNjcmlwdG9yOjplbWl0T1NSRXhpdCk6CisgICAgICAgIChKU0M6
OkZUTDo6T1NSRXhpdERlc2NyaXB0b3I6OmVtaXRPU1JFeGl0TGF0ZXIpOgorICAgICAgICAoSlND
OjpGVEw6Ok9TUkV4aXREZXNjcmlwdG9yOjpwcmVwYXJlT1NSRXhpdEhhbmRsZSk6CisgICAgICAg
ICogZnRsL0ZUTE9TUkV4aXQuaDoKKyAgICAgICAgKiBmdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlv
bkhhbmRsZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxl
OjpjcmVhdGVIYW5kbGUpOgorICAgICAgICAqIGZ0bC9GVExQYXRjaHBvaW50RXhjZXB0aW9uSGFu
ZGxlLmg6CisgICAgICAgICogaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg6CisgICAgICAg
IChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRWRlblRpbWVyKToKKyAgICAgICAg
KEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIGhlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oOgorICAgICAgICAoSlNDOjpHQ0Fj
dGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUZ1bGxUaW1lcik6CisgICAgICAgIChKU0M6OkdDQWN0
aXZpdHlDYWxsYmFjazo6Y3JlYXRlRnVsbFRpbWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFw
L0dDQWN0aXZpdHlDYWxsYmFjay5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAg
IChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAqIGluc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2Uu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpBc3luY1N0YWNrVHJhY2U6OmNyZWF0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5oOgorICAgICAgICAqIGpzYy5jcHA6Cisg
ICAgICAgIChmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKiBydW50aW1l
L0FycmF5QnVmZmVyLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcu
aDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0
aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2li
bHlTaGFyZWRJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6cG9zc2libHlTaGFyZWRUeXBlZEltcGwpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBlZEltcGwpOgorICAgICAgICAqIHdhc20v
V2FzbU1lbW9yeS5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAqIHdhc20vV2Fz
bU1lbW9yeS5oOgorICAgICAgICAqIHdhc20vV2FzbVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6VGFibGU6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6Oldhc206OlRhYmxlOjpjcmVh
dGUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbVRhYmxlLmg6CisgICAgICAgICogd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVt
b3J5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6SlNXZWJBc3NlbWJs
eU1lbW9yeSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeSk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6
OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2Vi
QXNzZW1ibHlUYWJsZSk6CisKIDIwMTgtMTAtMDkgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNob3cgcmVkaXJlY3QgcmVxdWVzdHMg
aW4gTmV0d29yayBhbmQgVGltZWxpbmVzIHRhYnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NjMzYTRjNTQ3MGM0
YWVhY2NkMTRlOWJiODQ2NjM1OTZkMGZiMTliLi5mMWJlYmJhYWZhOTJiMjhiMWQ3NTc1OGMxZDI3
MWNmMjI2MWM5ZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE0IEBACisyMDE4LTEwLTEwICBZ
dXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgW0pT
Q10gUmVuYW1lIGNyZWF0ZVhYWCB0byB0cnlDcmVhdGVYWFggaWYgaXQgY2FuIHJldHVybiBSZWZQ
dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDQy
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBg
dHJ5Q3JlYXRlYCBvciBuZXcgYGNyZWF0ZWAuIElmIHdlIHVzZSBuZXcgYGNyZWF0ZWAsIHdlIGNh
biB1c2UgUmVmPD4gYW5kIHJlbW92ZSBudWxsIGNoZWNrLgorCisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVNlc3Npb25DbGVhcktleTo6Y2FjaGVkS2V5Rm9yS2V5SUQgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0J1ZmZlcjo6QXVkaW9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9C
dWZmZXI6OmdldENoYW5uZWxEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSRXllUGFy
YW1ldGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWUkV5ZVBhcmFtZXRlcnM6Om9mZnNldCBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjptYXRyaXhUb0FycmF5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSUG9z
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcHRpb25hbEZsb2F0M1RvSlNDQXJyYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6VlJQb3NlOjpwb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWUlBvc2U6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZS
U3RhZ2VQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZSU3RhZ2VQYXJhbWV0ZXJz
OjpzaXR0aW5nVG9TdGFuZGluZ1RyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6ZW5xdWV1ZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNs
b25lRGVzZXJpYWxpemVyOjpyZWFkQXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBjcnlwdG8v
Z2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9L
ZXlSU0E6OmFsZ29yaXRobSBjb25zdCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9LZXlS
U0FNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjphbGdvcml0aG0gY29u
c3QpOgorICAgICAgICAqIGNzcy9ET01NYXRyaXhSZWFkT25seS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01NYXRyaXhSZWFkT25seTo6dG9GbG9hdDMyQXJyYXkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NTWF0cml4UmVhZE9ubHk6OnRvRmxvYXQ2NEFycmF5IGNvbnN0KToKKyAgICAg
ICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmNyZWF0
ZSk6CisgICAgICAgICogZG9tL1RleHRFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRFbmNvZGVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6SW1hZ2VEYXRhKToKKyAgICAgICAgKiBodG1s
L0ltYWdlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRWZXJ0ZXhBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFdlYkdMSW50QXJyYXlQ
YXJhbWV0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0
ZUZyb21Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JM
b2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAgICAgIChXZWJD
b3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpyZWxlYXNl
S2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6
dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
OjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpnZW5lcmF0ZUtleVJlcXVl
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVlN0cmVhbVNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZT
dHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
U2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1w
bGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpnZXRS
R0JBSW1hZ2VEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldElt
YWdlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRh
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRSZXN1bHQpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdl
UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlw
bGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEYXRhRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRh
OjpnZXREYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpqc1ZhbHVlV2l0aERp
Y3Rpb25hcnlJbkNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tUcmFja0JveDo6TW9ja1RyYWNrQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJbml0aWFs
aXphdGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9uQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tTYW1wbGVCb3g6Ok1vY2tTYW1wbGVCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMv
U2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKToK
KyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aW5pdERhdGFQcmVmaXgpOgorICAgICAgICAoV2ViQ29yZTo6a2V5UHJlZml4KToKKyAgICAgICAg
KFdlYkNvcmU6OmtleVJlcXVlc3QpOgorCiAyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8eXVz
dWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CiAKICAgICAgICAgWE1MSHR0cFJlcXVlc3Qgc2hvdWxk
IHVzZSByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZC9yZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQg
aW5zdGVhZCBvZiBkZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmVmMDUw
YTA4NGFkODVkYmFjMDg3N2MwMWVhNTkzMjk1NDg0MGQ1OS4uMGEzYzg0ZmMwMzA3MGNlM2ZjMTlj
MzdkZjk3Yjk3M2JkZTdiN2YwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0xMC0x
MCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAg
IFtKU0NdIFJlbmFtZSBjcmVhdGVYWFggdG8gdHJ5Q3JlYXRlWFhYIGlmIGl0IGNhbiByZXR1cm4g
UmVmUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTA0MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgYHRyeUNyZWF0ZWAgb3IgbmV3IGBjcmVhdGVgLiBJZiB3ZSB1c2UgbmV3IGBjcmVhdGVgLCB3
ZSBjYW4gdXNlIFJlZjw+IGFuZCByZW1vdmUgbnVsbCBjaGVjay4KKworICAgICAgICAqIFNoYXJl
ZC9BUEkvYy9XS1N0cmluZy5jcHA6CisgICAgICAgIChXS1N0cmluZ0NvcHlKU1N0cmluZyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0Ojp0b0pTVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpjYWxs
UHJvcGVydHlGdW5jdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OnNjcmlwdE9iamVjdEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OnJ1blNjcmlwdHNJblBERkRvY3VtZW50KToKKwogMjAxOC0xMC0wOSAgQW50b2lu
ZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgZnJhbWVz
KCkgdGltaW5nIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggOGFmM2Mz
Y2Q1NWNlYTZmNTBkMzc1ODAxZGI3ZmI5MWRmZTljNjdkNS4uNmU2YTNlMzM3MDM5MjdmZDRmMGY5
MjgwNmEwODc1ZDQ4MzQ4MjJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dz
dGFydC5vcmc+CisKKyAgICAgICAgW0pTQ10gUmVuYW1lIGNyZWF0ZVhYWCB0byB0cnlDcmVhdGVY
WFggaWYgaXQgY2FuIHJldHVybiBSZWZQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBgdHJ5Q3JlYXRlYCBvciBuZXcgYGNyZWF0ZWAuIElmIHdl
IHVzZSBuZXcgYGNyZWF0ZWAsIHdlIGNhbiB1c2UgUmVmPD4gYW5kIHJlbW92ZSBudWxsIGNoZWNr
LgorCisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tOgorICAgICAgICAoLVtXZWJQ
REZWaWV3IGZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOl0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3UGxhY2Vo
b2xkZXIgX2V2YWx1YXRlSlNGb3JEb2N1bWVudDpdKToKKwogMjAxOC0xMC0wMiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bnVz
ZWQgbGlua2VkLW9uLW9yLWJlZm9yZS1pT1M1IGNoZWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggZDU0YTI3YzZmZGJiMGRjZDdlMTA1MDZlNTk3ZjVmZWQxMDM1YjVlNC4uMzhhNjlm
ZjZiZDAzMWQ3OTFiZWVjZDYwOTVjYjAzYTdiYTI5MTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8eXVz
dWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgW0pTQ10gUmVuYW1lIGNyZWF0ZVhY
WCB0byB0cnlDcmVhdGVYWFggaWYgaXQgY2FuIHJldHVybiBSZWZQdHIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDQyOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBgdHJ5Q3JlYXRlYCBvciBuZXcg
YGNyZWF0ZWAuIElmIHdlIHVzZSBuZXcgYGNyZWF0ZWAsIHdlIGNhbiB1c2UgUmVmPD4gYW5kIHJl
bW92ZSBudWxsIGNoZWNrLgorCisgICAgICAgICogV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlv
bi5tbToKKyAgICAgICAgKC1bV2ViUERGUmVwcmVzZW50YXRpb24gZmluaXNoZWRMb2FkaW5nV2l0
aERhdGFTb3VyY2U6XSk6CisKIDIwMTgtMTAtMDggIEp1c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWJHUFU6IFJlbmFtZSBvbGQgV2ViR1BVIHByb3RvdHlwZSB0
byBXZWJNZXRhbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCAxNWI4NjA4NjZkZWE5MjI4NGI3OGEwZDcwN2Q4MDE2
NjU5ODc3MWQxLi40ZjRiN2Q3MWVlMDkyOTU1N2MyOGUyMGI4YWQ4N2MzZGI1ZTdjYmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5j
dGlvbnMuaApAQCAtMTU1LDcgKzE1NSw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBlCiAgICAg
ICAgICAgICAvLyBvcHRpb25hbCBvcHRpbWl6YXRpb24gdG8gYnlwYXNzIGdldFByb3BlcnR5IGlu
IGNhc2VzIHdoZW4gd2Ugb25seSBuZWVkIHRvIGtub3cgaWYgdGhlIHByb3BlcnR5IGV4aXN0cwog
ICAgICAgICAgICAgaWYgKEpTT2JqZWN0SGFzUHJvcGVydHlDYWxsYmFjayBoYXNQcm9wZXJ0eSA9
IGpzQ2xhc3MtPmhhc1Byb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5h
bWVSZWYpCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3Ry
aW5nOjpjcmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9
IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobmFtZSk7CiAgICAgICAgICAgICAgICAgSlNMb2Nr
OjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGV4ZWMpOwogICAgICAgICAgICAgICAgIGlmICho
YXNQcm9wZXJ0eShjdHgsIHRoaXNSZWYsIHByb3BlcnR5TmFtZVJlZi5nZXQoKSkpIHsKICAgICAg
ICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBjYWxsYmFja0dldHRl
cik7CkBAIC0xNjMsNyArMTYzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGUKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgaWYgKEpTT2JqZWN0R2V0UHJvcGVydHlDYWxs
YmFjayBnZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPmdldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYpCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFt
ZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAg
IHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobmFtZSk7CiAgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWYgdmFsdWU7CiAgICAgICAgICAgICAgICAgewpAQCAtMjUyLDcgKzI1Miw3IEBAIGJv
b2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0g
dGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVu
dENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIHNl
dFByb3BlcnR5ID0ganNDbGFzcy0+c2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAo
IXByb3BlcnR5TmFtZVJlZikKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lUmVmID0g
T3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVy
dHlOYW1lUmVmID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShuYW1lKTsKICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgYm9vbCByZXN1
bHQ7CiAgICAgICAgICAgICAgICAgewpAQCAtMzE2LDcgKzMxNiw3IEBAIGJvb2wgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lCiAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFz
c1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAg
ICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBzZXRQcm9wZXJ0eSA9IGpzQ2xhc3Mt
PnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKLSAgICAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWYgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHByb3Bl
cnR5TmFtZS5pbXBsKCkpOworICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1
ZUpTU3RyaW5nOjp0cnlDcmVhdGUocHJvcGVydHlOYW1lLmltcGwoKSk7CiAgICAgICAgICAgICBK
U1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICBib29sIHJlc3VsdDsKICAgICAg
ICAgICAgIHsKQEAgLTM3NSw3ICszNzUsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBybwogICAg
ICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpz
Q2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgaWYg
KEpTT2JqZWN0RGVsZXRlUHJvcGVydHlDYWxsYmFjayBkZWxldGVQcm9wZXJ0eSA9IGpzQ2xhc3Mt
PmRlbGV0ZVByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYp
Ci0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjpj
cmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1
ZUpTU3RyaW5nOjp0cnlDcmVhdGUobmFtZSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBl
eGNlcHRpb24gPSAwOwogICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0OwogICAgICAgICAgICAg
ICAgIHsKQEAgLTY3OSw3ICs2NzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZAogICAgICAg
ICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmotPmNsYXNzUmVmKCk7IGpzQ2xhc3M7
IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2Jq
ZWN0R2V0UHJvcGVydHlDYWxsYmFjayBnZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPmdldFByb3BlcnR5
KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYpCi0gICAgICAgICAgICAg
ICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUobmFtZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlD
cmVhdGUobmFtZSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwog
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgdmFsdWU7CiAgICAgICAgICAgICAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaAppbmRleCBmYTAyNGQzNDRmNDZjNTFiYWQy
MGUxNTQwZmFmZTkyYWE1YWNjMTk1Li45MGM0ZjUzOTAwNWM4MmIwZTIzYWI5MTIwNzY5OWFlYTRh
MDM5YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaApAQCAtMzcsNyAr
MzcsMTAgQEAgc3RydWN0IFN0YXRpY1ZhbHVlRW50cnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFN0YXRpY1ZhbHVlRW50cnkoSlNPYmplY3RHZXRQcm9wZXJ0
eUNhbGxiYWNrIF9nZXRQcm9wZXJ0eSwgSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIF9zZXRQ
cm9wZXJ0eSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgX2F0dHJpYnV0ZXMsIFN0cmluZyYgcHJvcGVy
dHlOYW1lKQotICAgIDogZ2V0UHJvcGVydHkoX2dldFByb3BlcnR5KSwgc2V0UHJvcGVydHkoX3Nl
dFByb3BlcnR5KSwgYXR0cmlidXRlcyhfYXR0cmlidXRlcyksIHByb3BlcnR5TmFtZVJlZihPcGFx
dWVKU1N0cmluZzo6Y3JlYXRlKHByb3BlcnR5TmFtZSkpCisgICAgICAgIDogZ2V0UHJvcGVydHko
X2dldFByb3BlcnR5KQorICAgICAgICAsIHNldFByb3BlcnR5KF9zZXRQcm9wZXJ0eSkKKyAgICAg
ICAgLCBhdHRyaWJ1dGVzKF9hdHRyaWJ1dGVzKQorICAgICAgICAsIHByb3BlcnR5TmFtZVJlZihP
cGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHByb3BlcnR5TmFtZSkpCiAgICAgewogICAgIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggN2Y4NTY5NjVlMjg3
NzExNzlhYjQ4ZmJlMDNiMzgxZTI3YjM4OTkxNS4uMjc1NjZmNDFiOTdlMWIzOWJkZGU5YjQ4YWFh
NTU5ZjE0Y2I3MzllYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHQubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAg
LTEwMCw4ICsxMDAsOCBAQCAtIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICop
c2NyaXB0CiAtIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0IHdp
dGhTb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMCiB7CiAgICAgSlNWYWx1ZVJlZiBleGNlcHRp
b25WYWx1ZSA9IG51bGxwdHI7Ci0gICAgYXV0byBzY3JpcHRKUyA9IE9wYXF1ZUpTU3RyaW5nOjpj
cmVhdGUoc2NyaXB0KTsKLSAgICBhdXRvIHNvdXJjZVVSTEpTID0gT3BhcXVlSlNTdHJpbmc6OmNy
ZWF0ZShbc291cmNlVVJMIGFic29sdXRlU3RyaW5nXSk7CisgICAgYXV0byBzY3JpcHRKUyA9IE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoc2NyaXB0KTsKKyAgICBhdXRvIHNvdXJjZVVSTEpTID0g
T3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShbc291cmNlVVJMIGFic29sdXRlU3RyaW5nXSk7CiAg
ICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU0V2YWx1YXRlU2NyaXB0KG1fY29udGV4dCwgc2NyaXB0
SlMuZ2V0KCksIG51bGxwdHIsIHNvdXJjZVVSTEpTLmdldCgpLCAwLCAmZXhjZXB0aW9uVmFsdWUp
OwogCiAgICAgaWYgKGV4Y2VwdGlvblZhbHVlKQpAQCAtMjAwLDcgKzIwMCw3IEBAIC0gKE5TU3Ry
aW5nICopbmFtZQogCiAtICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIEpT
R2xvYmFsQ29udGV4dFNldE5hbWUobV9jb250ZXh0LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKG5h
bWUpLmdldCgpKTsKKyAgICBKU0dsb2JhbENvbnRleHRTZXROYW1lKG1fY29udGV4dCwgT3BhcXVl
SlNTdHJpbmc6OnRyeUNyZWF0ZShuYW1lKS5nZXQoKSk7CiB9CiAKIC0gKEJPT0wpX3JlbW90ZUlu
c3BlY3Rpb25FbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5j
cHAKaW5kZXggZjNjMGZkMWM3ZTA2ZDM0MzAwMmMxNGUzZWNhYTMwNjQzZDI3MmFkNy4uZTE4ZGZk
MjFmZjI4NDAwN2QwMDM5ZTY0MzJkOWVjM2M0ZjFmMzE3NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIEpTU3RyaW5nUmVm
IEpTR2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCiAgICAgaWYg
KG5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIE9wYXF1ZUpT
U3RyaW5nOjpjcmVhdGUobmFtZSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmlu
Zzo6dHJ5Q3JlYXRlKG5hbWUpLmxlYWtSZWYoKTsKIH0KIAogdm9pZCBKU0dsb2JhbENvbnRleHRT
ZXROYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUpCkBAIC0zMTYs
NyArMzE2LDcgQEAgSlNTdHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQ29udGV4
dFJlZiBjdHgsIHVuc2lnbmVkIG1heFN0YWNrU2l6ZSkKICAgICBCYWNrdHJhY2VGdW5jdG9yIGZ1
bmN0b3IoYnVpbGRlciwgbWF4U3RhY2tTaXplKTsKICAgICBmcmFtZS0+aXRlcmF0ZShmdW5jdG9y
KTsKIAotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGJ1aWxkZXIudG9TdHJpbmco
KSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGJ1aWxk
ZXIudG9TdHJpbmcoKSkubGVha1JlZigpOwogfQogCiBib29sIEpTR2xvYmFsQ29udGV4dEdldFJl
bW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IGQ4ZDJkZjEwMDRhYTMzZWU5MWM3
NDJhOWIxMDY3ZDU4ZDA1ZTBjYWYuLjUxMTY5YzRkNGQ4YjU4YjRkNDY1NWJiMWY1YzU4NmVmZTM5
MzRkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC04
MjAsNyArODIwLDcgQEAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBKU09iamVjdENvcHlQcm9wZXJ0
eU5hbWVzKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG8KICAgICBzaXplX3Qgc2l6ZSA9
IGFycmF5LnNpemUoKTsKICAgICBwcm9wZXJ0eU5hbWVzLT5hcnJheS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHNpemUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAg
ICAgICBwcm9wZXJ0eU5hbWVzLT5hcnJheS51bmNoZWNrZWRBcHBlbmQoT3BhcXVlSlNTdHJpbmc6
OmNyZWF0ZShhcnJheVtpXS5zdHJpbmcoKSkucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIHBy
b3BlcnR5TmFtZXMtPmFycmF5LnVuY2hlY2tlZEFwcGVuZChPcGFxdWVKU1N0cmluZzo6dHJ5Q3Jl
YXRlKGFycmF5W2ldLnN0cmluZygpKS5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgIHJldHVybiBK
U1Byb3BlcnR5TmFtZUFycmF5UmV0YWluKHByb3BlcnR5TmFtZXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAppbmRleCAzM2Y1OWEzNjMzNDE3MWIxNDU1NmM2
YmUzMzQ4ZjZjMTIwMTJmMTcyLi5iYjcyMGRiZThkNzFhODI4ZGQ4NmQ4ZmQ3OGE5ZTM1OGRmM2E3
MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtOTks
NyArOTksNyBAQCBKU1NjcmlwdFJlZiBKU1NjcmlwdENyZWF0ZVJlZmVyZW5jaW5nSW1tb3J0YWxB
U0NJSVRleHQoSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dAogICAgIFBhcnNlckVycm9yIGVycm9y
OwogICAgIGlmICghcGFyc2VTY3JpcHQodm0sIFNvdXJjZUNvZGUocmVzdWx0LmNvcHlSZWYoKSks
IGVycm9yKSkgewogICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKQotICAgICAgICAgICAgKmVycm9y
TWVzc2FnZSA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoZXJyb3IubWVzc2FnZSgpKS5sZWFrUmVm
KCk7CisgICAgICAgICAgICAqZXJyb3JNZXNzYWdlID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0
ZShlcnJvci5tZXNzYWdlKCkpLmxlYWtSZWYoKTsKICAgICAgICAgaWYgKGVycm9yTGluZSkKICAg
ICAgICAgICAgICplcnJvckxpbmUgPSBlcnJvci5saW5lKCk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMTIxLDcgKzEyMSw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0
cmluZyhKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0R3JvdXAsIEpTU3RyaW5nUmVmCiAgICAgUGFy
c2VyRXJyb3IgZXJyb3I7CiAgICAgaWYgKCFwYXJzZVNjcmlwdCh2bSwgU291cmNlQ29kZShyZXN1
bHQuY29weVJlZigpKSwgZXJyb3IpKSB7CiAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpCi0gICAg
ICAgICAgICAqZXJyb3JNZXNzYWdlID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShlcnJvci5tZXNz
YWdlKCkpLmxlYWtSZWYoKTsKKyAgICAgICAgICAgICplcnJvck1lc3NhZ2UgPSBPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKGVycm9yLm1lc3NhZ2UoKSkubGVha1JlZigpOwogICAgICAgICBpZiAo
ZXJyb3JMaW5lKQogICAgICAgICAgICAgKmVycm9yTGluZSA9IGVycm9yLmxpbmUoKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTU3RyaW5nUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYu
Y3BwCmluZGV4IDE2ODNhYWU1OTUyOTM5MDI0NWFhZmFjMGJhMzFiYjg3MjAwYjlmMzYuLmU2NDRm
MWFiN2E3ZjRmYmUxZjY5YjIwYjcxZjMxNGEyZjAyNTU0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwCkBAIC02Miw3ICs2Miw3IEBAIEpTU3RyaW5nUmVmIEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnN0IGNoYXIqIHN0cmluZykKIEpTU3RyaW5n
UmVmIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoY29uc3QgSlNDaGFyKiBjaGFy
cywgc2l6ZV90IG51bUNoYXJzKQogewogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBy
ZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY2hhcnMpLCBudW1DaGFycykpLmxl
YWtSZWYoKTsKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShTdHJpbmdJbXBs
OjpjcmVhdGVXaXRob3V0Q29weWluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY2hh
cnMpLCBudW1DaGFycykpLmxlYWtSZWYoKTsKIH0KIAogSlNTdHJpbmdSZWYgSlNTdHJpbmdSZXRh
aW4oSlNTdHJpbmdSZWYgc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCmlu
ZGV4IGQ3OTc0MmFmMzc0ZmI4NTVlZTk0ZWU2M2Y0ZTkxZWQ0MzY0ZmUwNTAuLjllNTM0YjBhZWIw
NTFmMzQ2YjM0YWQxYzY3NzQ0OWMzYWVkMzAyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWUubW0KQEAgLTEyNiwxNSArMTI2LDE1IEBAICsgKEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdB
cnJheUluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogCiArIChKU1ZhbHVlICopdmFsdWVX
aXRoTmV3UmVndWxhckV4cHJlc3Npb25Gcm9tUGF0dGVybjooTlNTdHJpbmcgKilwYXR0ZXJuIGZs
YWdzOihOU1N0cmluZyAqKWZsYWdzIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogewot
ICAgIGF1dG8gcGF0dGVyblN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocGF0dGVybik7
Ci0gICAgYXV0byBmbGFnc1N0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoZmxhZ3MpOwor
ICAgIGF1dG8gcGF0dGVyblN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUocGF0dGVy
bik7CisgICAgYXV0byBmbGFnc1N0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoZmxh
Z3MpOwogICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzWzJdID0geyBKU1ZhbHVlTWFrZVN0cmluZyhb
Y29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBwYXR0ZXJuU3RyaW5nLmdldCgpKSwgSlNWYWx1
ZU1ha2VTdHJpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgZmxhZ3NTdHJpbmcuZ2V0
KCkpIH07CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6SlNPYmplY3RN
YWtlUmVnRXhwKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIDIsIGFyZ3VtZW50cywgMCkg
aW5Db250ZXh0OmNvbnRleHRdOwogfQogCiArIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3RXJyb3JG
cm9tTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGluQ29udGV4dDooSlNDb250ZXh0ICopY29u
dGV4dAogewotICAgIGF1dG8gc3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShtZXNzYWdl
KTsKKyAgICBhdXRvIHN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobWVzc2FnZSk7
CiAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudCA9IEpTVmFsdWVNYWtlU3RyaW5nKFtjb250ZXh0IEpT
R2xvYmFsQ29udGV4dFJlZl0sIHN0cmluZy5nZXQoKSk7CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZh
bHVlV2l0aEpTVmFsdWVSZWY6SlNPYmplY3RNYWtlRXJyb3IoW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSwgMSwgJmFyZ3VtZW50LCAwKSBpbkNvbnRleHQ6Y29udGV4dF07CiB9CkBAIC0xNTEs
NyArMTUxLDcgQEAgKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDooSlND
b250ZXh0ICopY29udGV4dAogCiArIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURl
c2NyaXB0aW9uOihOU1N0cmluZyAqKWRlc2NyaXB0aW9uIGluQ29udGV4dDooSlNDb250ZXh0ICop
Y29udGV4dAogewotICAgIGF1dG8gc3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShkZXNj
cmlwdGlvbik7CisgICAgYXV0byBzdHJpbmcgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGRl
c2NyaXB0aW9uKTsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpKU1Zh
bHVlTWFrZVN5bWJvbChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBzdHJpbmcuZ2V0KCkp
IGluQ29udGV4dDpjb250ZXh0XTsKIH0KIApAQCAtMjkyLDcgKzI5Miw3IEBAIGlubGluZSBFeHBl
Y3RlZDxSZXN1bHQsIEpTVmFsdWVSZWY+IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbihOU1N0cmlu
Z0Z1bmN0aW9uIHN0CiAgICAgUmVzdWx0IHJlc3VsdDsKICAgICAvLyBJZiBpdCdzIGEgTlNTdHJp
bmcgYWxyZWFkeSwgcmVkdWNlIGluZGlyZWN0aW9uIGFuZCBqdXN0IHBhc3MgdGhlIE5TU3RyaW5n
LgogICAgIGlmIChbcHJvcGVydHlLZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkg
ewotICAgICAgICBhdXRvIG5hbWUgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKChOU1N0cmluZyAq
KXByb3BlcnR5S2V5KTsKKyAgICAgICAgYXV0byBuYW1lID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNy
ZWF0ZSgoTlNTdHJpbmcgKilwcm9wZXJ0eUtleSk7CiAgICAgICAgIHJlc3VsdCA9IHN0cmluZ0Z1
bmN0aW9uKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZS5nZXQoKSwg
YXJndW1lbnRzLi4uLCAmZXhjZXB0aW9uKTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzdWx0ID0g
anNGdW5jdGlvbihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIFtbSlNWYWx1
ZSB2YWx1ZVdpdGhPYmplY3Q6cHJvcGVydHlLZXkgaW5Db250ZXh0OmNvbnRleHRdIEpTVmFsdWVS
ZWZdLCBhcmd1bWVudHMuLi4sICZleGNlcHRpb24pOwpAQCAtNTIwLDcgKzUyMCw3IEBAIC0gKEpT
VmFsdWUgKilpbnZva2VNZXRob2Q6KE5TU3RyaW5nICopbWV0aG9kIHdpdGhBcmd1bWVudHM6KE5T
QXJyYXkgKilhcmd1bWVudHMKICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gW19j
b250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogCi0gICAgYXV0byBu
YW1lID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShtZXRob2QpOworICAgIGF1dG8gbmFtZSA9IE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobWV0aG9kKTsKICAgICBKU1ZhbHVlUmVmIGZ1bmN0aW9u
ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgdGhp
c09iamVjdCwgbmFtZS5nZXQoKSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKICAg
ICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9u
XTsKQEAgLTc3NCw3ICs3NzQsNyBAQCBzdGF0aWMgaWQgY29udGFpbmVyVmFsdWVUb09iamVjdChK
U0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNDb250YWluZXJDb252ZXJ0bwogICAgICAgICAg
ICAgQVNTRVJUKFtjdXJyZW50Lm9iamMgaXNLaW5kT2ZDbGFzczpbTlNNdXRhYmxlQXJyYXkgY2xh
c3NdXSk7CiAgICAgICAgICAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSAoTlNNdXRhYmxlQXJy
YXkgKiljdXJyZW50Lm9iamM7CiAgICAgICAgIAotICAgICAgICAgICAgYXV0byBsZW5ndGhTdHJp
bmcgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKCJsZW5ndGgiX3MpOworICAgICAgICAgICAgYXV0
byBsZW5ndGhTdHJpbmcgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCJsZW5ndGgiX3MpOwog
ICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gSlNDOjp0b1VJbnQzMihKU1ZhbHVlVG9OdW1i
ZXIoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBqcywgbGVuZ3RoU3RyaW5n
LmdldCgpLCAwKSwgMCkpOwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKQEAgLTk4NCw3ICs5ODQsNyBAQCBzdGF0aWMgT2JqY0NvbnRhaW5lckNv
bnZlcnRvcjo6VGFzayBvYmplY3RUb1ZhbHVlV2l0aG91dENvcHkoSlNDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgcmV0dXJuIHsgb2JqZWN0LCAoKEpTVmFsdWUgKilvYmplY3QpLT5tX3Zh
bHVlLCBDb250YWluZXJOb25lIH07CiAKICAgICAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSkgewotICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBPcGFxdWVK
U1N0cmluZzo6Y3JlYXRlKChOU1N0cmluZyAqKW9iamVjdCk7CisgICAgICAgICAgICBhdXRvIHN0
cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoKE5TU3RyaW5nICopb2JqZWN0KTsKICAg
ICAgICAgICAgIHJldHVybiB7IG9iamVjdCwgSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dFJlZiwg
c3RyaW5nLmdldCgpKSwgQ29udGFpbmVyTm9uZSB9OwogICAgICAgICB9CiAKQEAgLTEwNDEsNyAr
MTA0MSw3IEBAIEpTVmFsdWVSZWYgb2JqZWN0VG9WYWx1ZShKU0NvbnRleHQgKmNvbnRleHQsIGlk
IG9iamVjdCkKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IChOU0RpY3Rp
b25hcnkgKiljdXJyZW50Lm9iamM7CiAgICAgICAgICAgICBmb3IgKGlkIGtleSBpbiBbZGljdGlv
bmFyeSBrZXlFbnVtZXJhdG9yXSkgewogICAgICAgICAgICAgICAgIGlmIChba2V5IGlzS2luZE9m
Q2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKChOU1N0cmluZyAqKWtleSk7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNy
ZWF0ZSgoTlNTdHJpbmcgKilrZXkpOwogICAgICAgICAgICAgICAgICAgICBKU09iamVjdFNldFBy
b3BlcnR5KGNvbnRleHRSZWYsIGpzLCBwcm9wZXJ0eU5hbWUuZ2V0KCksIGNvbnZlcnRvci5jb252
ZXJ0KFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTprZXldKSwgMCwgMCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5j
cHAKaW5kZXggMjNmMTdiYzIxYmIzYzA4MjlkZTBhNTYwNDMzNzA2ODUwZmMxZWMwNS4uNGMxMmI5
NmNmZGQ2OTIzZmI3YzMyYmY4NDgzMTAyYzM2MTQ2YzQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWVSZWYuY3BwCkBAIC0zODYsNyArMzg2LDcgQEAgSlNTdHJpbmdSZWYgSlNW
YWx1ZUNyZWF0ZUpTT05TdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiBhcGlWYWx1
ZSwgdW5zaWcKICAgICAgICAgKmV4Y2VwdGlvbiA9IDA7CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlv
bklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlk
VGhyb3cpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3Jl
YXRlKHJlc3VsdCkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3Jl
YXRlKHJlc3VsdCkubGVha1JlZigpOwogfQogCiBib29sIEpTVmFsdWVUb0Jvb2xlYW4oSlNDb250
ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKQEAgLTQzNCw3ICs0MzQsNyBAQCBKU1N0cmlu
Z1JlZiBKU1ZhbHVlVG9TdHJpbmdDb3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFs
dWUsIEpTVmFsdWVSZWYqCiAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVl
KTsKICAgICAKLSAgICBhdXRvIHN0cmluZ1JlZihPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGpzVmFs
dWUudG9XVEZTdHJpbmcoZXhlYykpKTsKKyAgICBhdXRvIHN0cmluZ1JlZihPcGFxdWVKU1N0cmlu
Zzo6dHJ5Q3JlYXRlKGpzVmFsdWUudG9XVEZTdHJpbmcoZXhlYykpKTsKICAgICBpZiAoaGFuZGxl
RXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3Rh
dHVzOjpEaWRUaHJvdykKICAgICAgICAgc3RyaW5nUmVmID0gbnVsbHB0cjsKICAgICByZXR1cm4g
c3RyaW5nUmVmLmxlYWtSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvT3BhcXVlSlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVK
U1N0cmluZy5jcHAKaW5kZXggOTgxZGM4NWIwODVmMTg5N2U1Y2VkYmQ4MTI1OTczYTBiYzA0ZDQ5
ZS4uNzdhMmUxYzdmMTM1NDVjYzA4ZGQwODJiM2ZkMjk0MWQzZTA4NWUyNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAK
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBPcGFxdWVK
U1N0cmluZzo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPE9wYXF1ZUpTU3Ry
aW5nPiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewog
ICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDIs
NyArNDIsNyBAQCBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPcGFxdWVKU1N0
cmluZyhzdHJpbmcpKTsKIH0KIAotUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBPcGFxdWVKU1N0cmlu
Zzo6Y3JlYXRlKFN0cmluZyYmIHN0cmluZykKK1JlZlB0cjxPcGFxdWVKU1N0cmluZz4gT3BhcXVl
SlNTdHJpbmc6OnRyeUNyZWF0ZShTdHJpbmcmJiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL09wYXF1ZUpTU3RyaW5nLmgKaW5kZXggYWQyZmZjZGU1NzEyNWU4YWY3MmYyMzkxNDNlZGJj
MDcyNTI0NjE2MC4uNGE0YjVlZGZiYTIwMTQ2Yzg5MzIwMTQzZjliNWY0ZDFkZDEwZDY3NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaApAQCAtNTEsOCArNTEs
OCBAQCBzdHJ1Y3QgT3BhcXVlSlNTdHJpbmcgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
T3BhcXVlSlNTdHJpbmc+IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3BhcXVlSlNT
dHJpbmcoY2hhcmFjdGVycywgbGVuZ3RoKSk7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IGNyZWF0
ZShTdHJpbmcmJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxPcGFxdWVK
U1N0cmluZz4gdHJ5Q3JlYXRlKGNvbnN0IFN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHRyeUNyZWF0ZShTdHJpbmcmJik7CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSB+T3BhcXVlSlNTdHJpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCmluZGV4IGI1NDhlZmJmZjY5NmE1ZWFm
YTc0Y2VlZDg1NTcyMmMzMjJiOTJhNDQuLjQwZWE1YzE0OTE3YjNjZGQ0ZjdlZWMwYTI0YmUyMDBm
N2NjMDc3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0ND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4
dC5jcHAKQEAgLTgxOSw3ICs4MTksNyBAQCBKU0NWYWx1ZSoganNjX2NvbnRleHRfZXZhbHVhdGUo
SlNDQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogY29kZSwgZ3NzaXplIGxlbgogCiBzdGF0
aWMgSlNWYWx1ZVJlZiBldmFsdWF0ZVNjcmlwdEluQ29udGV4dChKU0dsb2JhbENvbnRleHRSZWYg
anNDb250ZXh0LCBTdHJpbmcmJiBzY3JpcHQsIGNvbnN0IGNoYXIqIHVyaSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBzY3JpcHRKUyhBZG9wdCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShXVEZNb3ZlKHNj
cmlwdCkpLmxlYWtSZWYoKSk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHNjcmlwdEpT
KEFkb3B0LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKFdURk1vdmUoc2NyaXB0KSkubGVha1Jl
ZigpKTsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc291cmNlVVJJID0gdXJpID8gYWRv
cHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXJpKSkgOiBudWxscHRyOwogICAgIHJl
dHVybiBKU0V2YWx1YXRlU2NyaXB0KGpzQ29udGV4dCwgc2NyaXB0SlMuZ2V0KCksIG51bGxwdHIs
IHNvdXJjZVVSSS5nZXQoKSwgbGluZU51bWJlciwgZXhjZXB0aW9uKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmFsdWUuY3BwCmluZGV4IDc5ZTUzMTZmZDM2MjkzYzhk
ZDAyMzM2MjNiYWQwM2JhYTg1ZDljM2IuLjZlMjc0Zjg5ZjQzN2I2M2M5NTkyNTcyMzQyZjk3MDUz
OWNhYWUxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NW
YWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmNw
cApAQCAtMzY3LDcgKzM2Nyw3IEBAIEpTQ1ZhbHVlKiBqc2NfdmFsdWVfbmV3X3N0cmluZ19mcm9t
X2J5dGVzKEpTQ0NvbnRleHQqIGNvbnRleHQsIEdCeXRlcyogYnl0ZXMpCiAgICAgZ3NpemUgZGF0
YVNpemU7CiAgICAgY29uc3QgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihn
X2J5dGVzX2dldF9kYXRhKGJ5dGVzLCAmZGF0YVNpemUpKTsKICAgICBhdXRvIHN0cmluZyA9IFN0
cmluZzo6ZnJvbVVURjgoZGF0YSwgZGF0YVNpemUpOwotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBqc1N0cmluZyhBZG9wdCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShXVEZNb3ZlKHN0cmlu
ZykpLmxlYWtSZWYoKSk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGpzU3RyaW5nKEFk
b3B0LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKFdURk1vdmUoc3RyaW5nKSkubGVha1JlZigp
KTsKICAgICByZXR1cm4ganNjQ29udGV4dEdldE9yQ3JlYXRlVmFsdWUoY29udGV4dCwgSlNWYWx1
ZU1ha2VTdHJpbmcoanNjQ29udGV4dEdldEpTQ29udGV4dChjb250ZXh0KSwganNTdHJpbmcuZ2V0
KCkpKS5sZWFrUmVmKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGF6eVNsb3dQYXRoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExhenlT
bG93UGF0aC5oCmluZGV4IDlhNmU2MDFhZDMxOWJkZGZjM2E5OGUwNWQ5OTMwYjgxZGFlMWRhZGQu
LmE1YjNhNzI1MmE0MTM3NzY4NTJmNDFmYTI1MTI0YjkwODM3OGRiMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGF6eVNsb3dQYXRoLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1BhdGguaApAQCAtNTksNyArNTksNyBAQCBjbGFz
cyBMYXp5U2xvd1BhdGggewogICAgIHR5cGVkZWYgU2hhcmVkVGFzazxHZW5lcmF0b3JGdW5jdGlv
bj4gR2VuZXJhdG9yOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBzdGF0
aWMgUmVmUHRyPEdlbmVyYXRvcj4gY3JlYXRlR2VuZXJhdG9yKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCisgICAgc3RhdGljIFJlZjxHZW5lcmF0b3I+IGNyZWF0ZUdlbmVyYXRvcihjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgcmV0dXJuIGNyZWF0ZVNoYXJlZFRhc2s8R2Vu
ZXJhdG9yRnVuY3Rpb24+KGZ1bmN0b3IpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTGF6eVNsb3dQYXRoQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMYXp5U2xvd1BhdGhDYWxsLmgKaW5kZXggYmZiMmFjZWM4NmVkODY3NzZmMWIx
MTY1NTI4ZGM1MjIxNzYxYWU2Ni4uNzRmZDZlYzdiNzJmMzIyMzQyMWFhNjY0YmExYjZhNjdiYzc3
MjkzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1Bh
dGhDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1BhdGhD
YWxsLmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRUeXBl
cz4KLVJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0
b3IoCitSZWY8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9y
KAogICAgIFZNJiB2bSwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbiwgUmVz
dWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQogewogICAgIHJldHVy
biBMYXp5U2xvd1BhdGg6OmNyZWF0ZUdlbmVyYXRvcigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9TUkV4aXQuY3BwCmluZGV4IDMyOGYwYzgxODI4YmZjYjk2YjExYTk0OWVkYTE5ZDFlMDY3
MWQxNTQuLjA5OTU4ZDJjNGY5YTVkODliNWZiYmI2NWY4NmJiNmRhYmNkZjE4ZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0LmNwcApAQCAtNjMsMTcgKzYzLDE3IEBAIHZv
aWQgT1NSRXhpdERlc2NyaXB0b3I6OnZhbGlkYXRlUmVmZXJlbmNlcyhjb25zdCBUcmFja2VkUmVm
ZXJlbmNlcyYgdHJhY2tlZFJlZmVyCiAgICAgICAgIG1hdGVyaWFsaXphdGlvbi0+dmFsaWRhdGVS
ZWZlcmVuY2VzKHRyYWNrZWRSZWZlcmVuY2VzKTsKIH0KIAotUmVmUHRyPE9TUkV4aXRIYW5kbGU+
IE9TUkV4aXREZXNjcmlwdG9yOjplbWl0T1NSRXhpdCgKK1JlZjxPU1JFeGl0SGFuZGxlPiBPU1JF
eGl0RGVzY3JpcHRvcjo6ZW1pdE9TUkV4aXQoCiAgICAgU3RhdGUmIHN0YXRlLCBFeGl0S2luZCBl
eGl0S2luZCwgY29uc3QgTm9kZU9yaWdpbiYgbm9kZU9yaWdpbiwgQ0NhbGxIZWxwZXJzJiBqaXQs
CiAgICAgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMsIHVuc2lnbmVkIG9m
ZnNldCkKIHsKLSAgICBSZWZQdHI8T1NSRXhpdEhhbmRsZT4gaGFuZGxlID0KKyAgICBSZWY8T1NS
RXhpdEhhbmRsZT4gaGFuZGxlID0KICAgICAgICAgcHJlcGFyZU9TUkV4aXRIYW5kbGUoc3RhdGUs
IGV4aXRLaW5kLCBub2RlT3JpZ2luLCBwYXJhbXMsIG9mZnNldCk7CiAgICAgaGFuZGxlLT5lbWl0
RXhpdFRodW5rKHN0YXRlLCBqaXQpOwogICAgIHJldHVybiBoYW5kbGU7CiB9CiAKLVJlZlB0cjxP
U1JFeGl0SGFuZGxlPiBPU1JFeGl0RGVzY3JpcHRvcjo6ZW1pdE9TUkV4aXRMYXRlcigKK1JlZjxP
U1JFeGl0SGFuZGxlPiBPU1JFeGl0RGVzY3JpcHRvcjo6ZW1pdE9TUkV4aXRMYXRlcigKICAgICBT
dGF0ZSYgc3RhdGUsIEV4aXRLaW5kIGV4aXRLaW5kLCBjb25zdCBOb2RlT3JpZ2luJiBub2RlT3Jp
Z2luLAogICAgIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zLCB1bnNpZ25l
ZCBvZmZzZXQpCiB7CkBAIC04MywxNyArODMsMTcgQEAgUmVmUHRyPE9TUkV4aXRIYW5kbGU+IE9T
UkV4aXREZXNjcmlwdG9yOjplbWl0T1NSRXhpdExhdGVyKAogICAgICAgICBbaGFuZGxlLCAmc3Rh
dGVdIChDQ2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAgICAgaGFuZGxlLT5lbWl0RXhpdFRo
dW5rKHN0YXRlLCBqaXQpOwogICAgICAgICB9KTsKLSAgICByZXR1cm4gaGFuZGxlOworICAgIHJl
dHVybiBoYW5kbGUucmVsZWFzZU5vbk51bGwoKTsKIH0KIAotUmVmUHRyPE9TUkV4aXRIYW5kbGU+
IE9TUkV4aXREZXNjcmlwdG9yOjpwcmVwYXJlT1NSRXhpdEhhbmRsZSgKK1JlZjxPU1JFeGl0SGFu
ZGxlPiBPU1JFeGl0RGVzY3JpcHRvcjo6cHJlcGFyZU9TUkV4aXRIYW5kbGUoCiAgICAgU3RhdGUm
IHN0YXRlLCBFeGl0S2luZCBleGl0S2luZCwgY29uc3QgTm9kZU9yaWdpbiYgbm9kZU9yaWdpbiwK
ICAgICBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcywgdW5zaWduZWQgb2Zm
c2V0KQogewogICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGUuaml0Q29kZS0+b3NyRXhpdC5zaXpl
KCk7CiAgICAgT1NSRXhpdCYgZXhpdCA9IHN0YXRlLmppdENvZGUtPm9zckV4aXQuYWxsb2MoCiAg
ICAgICAgIHRoaXMsIGV4aXRLaW5kLCBub2RlT3JpZ2luLmZvckV4aXQsIG5vZGVPcmlnaW4uc2Vt
YW50aWMsIG5vZGVPcmlnaW4ud2FzSG9pc3RlZCk7Ci0gICAgUmVmUHRyPE9TUkV4aXRIYW5kbGU+
IGhhbmRsZSA9IGFkb3B0UmVmKG5ldyBPU1JFeGl0SGFuZGxlKGluZGV4LCBleGl0KSk7CisgICAg
UmVmPE9TUkV4aXRIYW5kbGU+IGhhbmRsZSA9IGFkb3B0UmVmKCpuZXcgT1NSRXhpdEhhbmRsZShp
bmRleCwgZXhpdCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG9mZnNldDsgaSA8IHBhcmFtcy5z
aXplKCk7ICsraSkKICAgICAgICAgZXhpdC5tX3ZhbHVlUmVwcy5hcHBlbmQocGFyYW1zW2ldKTsK
ICAgICBleGl0Lm1fdmFsdWVSZXBzLnNocmlua1RvRml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT1NSRXhpdC5oCmluZGV4IDdjMDJmYjEwZGEwZjFiOGMzZjU2NmY0NTlhZGNiZWMyNWRk
NGM5YjcuLmRhODdjY2YzMjczZmU0YmUzNjA2ODNiOGFmM2JiZjUxNmQ2MjI1ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCkBAIC05MCw3ICs5MCw3IEBAIHN0cnVjdCBP
U1JFeGl0RGVzY3JpcHRvciB7CiAgICAgLy8gdXAgdG8gdGhlIE9TUkV4aXQgb2JqZWN0LCB3aGlj
aCB0aGlzIGNyZWF0ZXMuIE5vdGUgdGhhdCBpdCdzIE9LIHRvIGRyb3AgdGhlIE9TUkV4aXRIYW5k
bGUgb2JqZWN0CiAgICAgLy8gb24gdGhlIGdyb3VuZC4gSXQgY29udGFpbnMgaW5mb3JtYXRpb24g
dGhhdCBpcyBtb3N0bHkgbm90IHVzZWZ1bCBpZiB5b3UgdXNlIHRoaXMgQVBJLCBzaW5jZSBhZnRl
cgogICAgIC8vIHRoaXMgY2FsbCwgdGhlIE9TUkV4aXQgaXMgc2ltcGx5IHJlYWR5IHRvIGdvLgot
ICAgIFJlZlB0cjxPU1JFeGl0SGFuZGxlPiBlbWl0T1NSRXhpdCgKKyAgICBSZWY8T1NSRXhpdEhh
bmRsZT4gZW1pdE9TUkV4aXQoCiAgICAgICAgIFN0YXRlJiwgRXhpdEtpbmQsIGNvbnN0IERGRzo6
Tm9kZU9yaWdpbiYsIENDYWxsSGVscGVycyYsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmLAogICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSAwKTsKIApAQCAtMTAyLDcgKzEwMiw3
IEBAIHN0cnVjdCBPU1JFeGl0RGVzY3JpcHRvciB7CiAgICAgLy8gVGhpcyBBUEkgaXMgbWVhbnQg
dG8gYmUgdXNlZCBmb3IgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nLCB3aGVyZSBzb21l
IHBhdGNocG9pbnQgd2FudHMgdG8KICAgICAvLyBoYXZlIGEgcGxhY2UgdG8ganVtcCB0byBmb3Ig
T1NSIGV4aXQuIEl0IGRvZXNuJ3QgY2FyZSB3aGVyZSB0aGF0IE9TUiBleGl0IGlzIGVtaXR0ZWQg
c28gbG9uZyBhcyBpdAogICAgIC8vIGV2ZW50dWFsbHkgZ2V0cyBhY2Nlc3MgdG8gaXRzIGxhYmVs
LgotICAgIFJlZlB0cjxPU1JFeGl0SGFuZGxlPiBlbWl0T1NSRXhpdExhdGVyKAorICAgIFJlZjxP
U1JFeGl0SGFuZGxlPiBlbWl0T1NSRXhpdExhdGVyKAogICAgICAgICBTdGF0ZSYsIEV4aXRLaW5k
LCBjb25zdCBERkc6Ok5vZGVPcmlnaW4mLCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiwKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMCk7CiAKQEAgLTExMCw3ICsxMTAsNyBA
QCBzdHJ1Y3QgT1NSRXhpdERlc2NyaXB0b3IgewogICAgIC8vIFRoaXMgaXMgdGhlIGxvdy1sZXZl
bCBpbnRlcmZhY2UuIEl0IHdpbGwgY3JlYXRlIGEgaGFuZGxlIHJlcHJlc2VudGluZyB0aGUgZGVz
aXJlIHRvIGVtaXQgY29kZSBmb3IKICAgICAvLyBhbiBPU1IgZXhpdC4gWW91IGNhbiBjYWxsIE9T
UkV4aXRIYW5kbGU6OmVtaXRFeGl0VGh1bmsoKSBvbmNlIHlvdSBoYXZlIGEgcGxhY2UgdG8gZW1p
dCBpdC4gTm90ZQogICAgIC8vIHRoYXQgdGhlIGFib3ZlIHR3byBBUElzIGFyZSB3cml0dGVuIGlu
IHRlcm1zIG9mIHRoaXMgYW5kIE9TUkV4aXRIYW5kbGU6OmVtaXRFeGl0VGh1bmsoKS4KLSAgICBS
ZWZQdHI8T1NSRXhpdEhhbmRsZT4gcHJlcGFyZU9TUkV4aXRIYW5kbGUoCisgICAgUmVmPE9TUkV4
aXRIYW5kbGU+IHByZXBhcmVPU1JFeGl0SGFuZGxlKAogICAgICAgICBTdGF0ZSYsIEV4aXRLaW5k
LCBjb25zdCBERkc6Ok5vZGVPcmlnaW4mLCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiwKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5j
cHAKaW5kZXggNzI5NGIxYjVmNmJhZWU2MWM1NzRjZmU1MTBjZTIzOGM5MzMzNzAyMS4uZmFlZjQx
N2I5ODIzNTRmM2U2NDdhYWQyOWJhMDZjODI3MGNlMDlkMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUuY3Bw
CkBAIC0zOCwxMSArMzgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiB1
c2luZyBuYW1lc3BhY2UgREZHOwogCi1SZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4g
UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZTo6Y3JlYXRlKAorUmVmPFBhdGNocG9pbnRFeGNlcHRp
b25IYW5kbGU+IFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU6OmNyZWF0ZSgKICAgICBTdGF0ZSYg
c3RhdGUsIE9TUkV4aXREZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOb2RlT3JpZ2luIG9yaWdpbiwg
dW5zaWduZWQgb2Zmc2V0LAogICAgIGNvbnN0IEhhbmRsZXJJbmZvJiBoYW5kbGVyKQogewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZShzdGF0ZSwgZGVz
Y3JpcHRvciwgb3JpZ2luLCBvZmZzZXQsIGhhbmRsZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlKHN0YXRlLCBkZXNjcmlwdG9yLCBvcmlnaW4s
IG9mZnNldCwgaGFuZGxlcikpOwogfQogCiBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZT4gUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZTo6ZGVmYXVsdEhhbmRsZShTdGF0ZSYgc3RhdGUp
CkBAIC0xMDgsNyArMTA4LDcgQEAgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZTo6UGF0Y2hwb2lu
dEV4Y2VwdGlvbkhhbmRsZSgKIHsKIH0KIAotUmVmUHRyPE9TUkV4aXRIYW5kbGU+IFBhdGNocG9p
bnRFeGNlcHRpb25IYW5kbGU6OmNyZWF0ZUhhbmRsZSgKK1JlZjxPU1JFeGl0SGFuZGxlPiBQYXRj
aHBvaW50RXhjZXB0aW9uSGFuZGxlOjpjcmVhdGVIYW5kbGUoCiAgICAgRXhpdEtpbmQga2luZCwg
Y29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKQogewogICAgIHJldHVy
biBtX2Rlc2NyaXB0b3ItPmVtaXRPU1JFeGl0TGF0ZXIoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5oCmluZGV4IDFi
MjY2ZDJlMWZlOTc4ODhlYThmNzhkMmM4YzQzYjRlMzY0NjlmZWMuLjQ0OGUxY2Y1ZjA1ZGY1NTgz
YjIzMDI3ZGZlY2U2MTQyN2EyMzIyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5oCkBAIC01MSw3ICs1MSw3
IEBAIHN0cnVjdCBPU1JFeGl0SGFuZGxlOwogCiBjbGFzcyBQYXRjaHBvaW50RXhjZXB0aW9uSGFu
ZGxlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGU+IGNyZWF0ZSgKKyAgICBzdGF0aWMgUmVmPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGNy
ZWF0ZSgKICAgICAgICAgU3RhdGUmLCBPU1JFeGl0RGVzY3JpcHRvciosIERGRzo6Tm9kZU9yaWdp
biwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBIYW5kbGVySW5mbyYpOwogCiAgICAgc3RhdGljIFJl
ZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBkZWZhdWx0SGFuZGxlKFN0YXRlJik7CkBA
IC04OSw3ICs4OSw3IEBAIGNsYXNzIFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGF0Y2hwb2ludEV4Y2VwdGlvCiAgICAgUGF0Y2hwb2ludEV4
Y2VwdGlvbkhhbmRsZSgKICAgICAgICAgU3RhdGUmLCBPU1JFeGl0RGVzY3JpcHRvciosIERGRzo6
Tm9kZU9yaWdpbiwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBIYW5kbGVySW5mbyYpOwogCi0gICAg
UmVmUHRyPE9TUkV4aXRIYW5kbGU+IGNyZWF0ZUhhbmRsZShFeGl0S2luZCwgY29uc3QgQjM6OlN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpOworICAgIFJlZjxPU1JFeGl0SGFuZGxlPiBjcmVhdGVI
YW5kbGUoRXhpdEtpbmQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKTsKIAog
ICAgIFN0YXRlJiBtX3N0YXRlOwogICAgIE9TUkV4aXREZXNjcmlwdG9yKiBtX2Rlc2NyaXB0b3I7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNh
bGxiYWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxi
YWNrLmgKaW5kZXggNTJlMGEyOGZlM2M5MGNmOWYyZjgxODU3NzlhNzZmZjE5MjUzNzVjYy4uMDVj
ZjI4MjBmMzI0YWE1YzA5YTM0ZDIwMTI2MDY2NmM1MmUzNjg4NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaApAQCAtNDEsNyAr
NDEsNyBAQCBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrIDog
cHVibGljIEdDQWN0aXZpdHlDYWxsYmFjayB7CiAgICAgZG91YmxlIGRlYXRoUmF0ZShIZWFwJikg
b3ZlcnJpZGU7CiB9OwogCi1pbmxpbmUgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rp
dml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIoSGVhcCogaGVhcCkKK2lubGluZSBSZWZQdHI8
R0NBY3Rpdml0eUNhbGxiYWNrPiBHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVkZW5UaW1l
cihIZWFwKiBoZWFwKQogewogICAgIHJldHVybiBzX3Nob3VsZENyZWF0ZUdDVGltZXIgPyBhZG9w
dFJlZihuZXcgRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKSkgOiBudWxscHRyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFj
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5o
CmluZGV4IDVjZTAzNGEwY2Q4MWY1NWQyOThmMTI4OTgyNmRlNmY4YmVmNjJiYmEuLjY1MGFlMTM4
N2YxNmFhMDAzZDdkZGI5ODZmMDc1OGZjOWYxZWM0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRnVsbEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1Ymxp
YyBHQ0FjdGl2aXR5Q2FsbGJhY2sgewogICAgIGJvb2wgbV9kaWRHQ1JlY2VudGx5IHsgZmFsc2Ug
fTsKIH07CiAKLWlubGluZSBSZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rpdml0
eUNhbGxiYWNrOjpjcmVhdGVGdWxsVGltZXIoSGVhcCogaGVhcCkKK2lubGluZSBSZWZQdHI8RnVs
bEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVhdGVGdWxsVGlt
ZXIoSGVhcCogaGVhcCkKIHsKICAgICByZXR1cm4gc19zaG91bGRDcmVhdGVHQ1RpbWVyID8gYWRv
cHRSZWYobmV3IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkpIDogbnVsbHB0cjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgKaW5kZXgg
OWRmZGQwZjcwMDdkMjEzYjRmYjk1NDQ5YjE2ZWZlZGQ4ZTRjM2EzNi4uYzM3MWY3N2QyYjY0YjQz
ZGFjNzQ2MzE0ZDdjMWQ5ZDI1ZjM5ZmIwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgKQEAgLTQzLDggKzQzLDggQEAgY2xhc3MgSGVhcDsK
IGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBKU1J1
bkxvb3BUaW1lciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTUnVuTG9vcFRpbWVyOwot
ICAgIHN0YXRpYyBSZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlRnVsbFRpbWVy
KEhlYXAqKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlRWRl
blRpbWVyKEhlYXAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s+
IHRyeUNyZWF0ZUZ1bGxUaW1lcihIZWFwKik7CisgICAgc3RhdGljIFJlZlB0cjxHQ0FjdGl2aXR5
Q2FsbGJhY2s+IHRyeUNyZWF0ZUVkZW5UaW1lcihIZWFwKik7CiAKICAgICBHQ0FjdGl2aXR5Q2Fs
bGJhY2soSGVhcCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IGNjNGEz
MzY1MWEyZjE5NmZjYWZiMzJhY2MwYTYwM2Q5ODg4MjNmMDguLmY0NjhkNDFlNGZmYzdhNmFjN2Q0
Mjk1ZmNiZmE3NzcyMjE3YmJjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBA
IC0zMDQsOCArMzA0LDggQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQog
ICAgIC8vIHNjaGVkdWxlIHRoZSB0aW1lciBpZiB3ZSd2ZSBuZXZlciBkb25lIGEgY29sbGVjdGlv
bi4KICAgICAsIG1fbGFzdEZ1bGxHQ0xlbmd0aCgwLjAxKQogICAgICwgbV9sYXN0RWRlbkdDTGVu
Z3RoKDAuMDEpCi0gICAgLCBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFj
azo6Y3JlYXRlRnVsbFRpbWVyKHRoaXMpKQotICAgICwgbV9lZGVuQWN0aXZpdHlDYWxsYmFjayhH
Q0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZUVkZW5UaW1lcih0aGlzKSkKKyAgICAsIG1fZnVsbEFj
dGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVhdGVGdWxsVGltZXIodGhp
cykpCisgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5
Q3JlYXRlRWRlblRpbWVyKHRoaXMpKQogICAgICwgbV9zd2VlcGVyKGFkb3B0UmVmKG5ldyBJbmNy
ZW1lbnRhbFN3ZWVwZXIodGhpcykpKQogICAgICwgbV9zdG9wSWZOZWNlc3NhcnlUaW1lcihhZG9w
dFJlZihuZXcgU3RvcElmTmVjZXNzYXJ5VGltZXIodm0pKSkKICAgICAsIG1fZGVmZXJyYWxEZXB0
aCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0
YWNrVHJhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNr
VHJhY2UuY3BwCmluZGV4IDMxNGI4N2M2ODdiODBlZGE4NGE2NmM4N2E2YTVhOGIxOWQwMjE0NjYu
LjhjYjA5Nzk2ZjEyODIxNjU3N2IyZjkwYWQyZTJjZTBjNGQyYmMzODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQXN5bmNTdGFja1RyYWNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHAKQEAgLTMx
LDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLVJlZlB0cjxBc3luY1N0YWNr
VHJhY2U+IEFzeW5jU3RhY2tUcmFjZTo6Y3JlYXRlKFJlZjxTY3JpcHRDYWxsU3RhY2s+JiYgY2Fs
bFN0YWNrLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxBc3luY1N0YWNrVHJhY2U+IHBhcmVudCkK
K1JlZjxBc3luY1N0YWNrVHJhY2U+IEFzeW5jU3RhY2tUcmFjZTo6Y3JlYXRlKFJlZjxTY3JpcHRD
YWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxBc3luY1N0YWNr
VHJhY2U+IHBhcmVudCkKIHsKICAgICBBU1NFUlQoY2FsbFN0YWNrLT5zaXplKCkpOwogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEFzeW5jU3RhY2tUcmFjZShXVEZNb3ZlKGNhbGxTdGFjayksIHNp
bmdsZVNob3QsIFdURk1vdmUocGFyZW50KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvQXN5bmNTdGFja1RyYWNlLmgKaW5kZXggMWMzY2NmNDgzN2FiMTU3MjEwYzAz
ZmM4M2ZiZGQ3Yzc5Nzg1MTkyNC4uMjJiM2ZlNzQ5NWIxOGU0YTViZTA3Mzc5MzUyMDllZDk1NTFh
Y2RlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0
YWNrVHJhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3Rh
Y2tUcmFjZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEFzeW5j
U3RhY2tUcmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPEFzeW5jU3RhY2tUcmFjZT4gewogICAgICAg
ICBDYW5jZWxlZCwKICAgICB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxBc3luY1N0YWNrVHJhY2U+
IGNyZWF0ZShSZWY8U2NyaXB0Q2FsbFN0YWNrPiYmLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxB
c3luY1N0YWNrVHJhY2U+IHBhcmVudCk7CisgICAgc3RhdGljIFJlZjxBc3luY1N0YWNrVHJhY2U+
IGNyZWF0ZShSZWY8U2NyaXB0Q2FsbFN0YWNrPiYmLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxB
c3luY1N0YWNrVHJhY2U+IHBhcmVudCk7CiAKICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0Owog
ICAgIGJvb2wgaXNMb2NrZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMzhhMDBh
NzFiNjE4ZTcxNDdlMzFhYmFmY2ZmMzNjYzRkYTBkMGQ1ZC4uOTJhNWYyMDhhZjRjYzJiM2Y1YTg0
NDJiODI4MDVlNzFmMjZhMGM1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTg4Nyw3ICs4ODcs
OSBAQCBzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZp
bGUoRklMRSogZmlsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKGZzZWVrKGZp
bGUsIDAsIFNFRUtfU0VUKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUmVm
UHRyPFVpbnQ4QXJyYXk+IHJlc3VsdCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShidWZmZXJDYXBhY2l0
eSk7CisgICAgYXV0byByZXN1bHQgPSBVaW50OEFycmF5Ojp0cnlDcmVhdGUoYnVmZmVyQ2FwYWNp
dHkpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBzaXpl
X3QgcmVhZFNpemUgPSBmcmVhZChyZXN1bHQtPmRhdGEoKSwgMSwgYnVmZmVyQ2FwYWNpdHksIGZp
bGUpOwogICAgIGlmIChyZWFkU2l6ZSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZmZlckNhcGFj
aXR5KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBkZWVhMjU0NTA5NmNiNTk2YzE4MWFlYzc2ODUxNWZj
MWMxYTA4MDUxLi5lYjM2N2MxNGNkMTkzMDFjNTNkNjdmMmEwZTA5NGQ2MjM0MWZjMWM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTExMSw3ICsx
MTEsNyBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxB
cnJheUJ1ZmZlcj4gewogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlC
dWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpOwogCi0gICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBl
ZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkIGFuZCBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFy
cmF5QnVmZmVyLgorICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZl
ci4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZTVmZDRiYjc0MTZmM2UyNTBmZjhhNjg5NTE1
N2VmZDg2ZjVkYzQ5OC4uZWYyZTgwZjRlYTAzYmRlNjQ5MWNmNzMzM2EyN2I3YzU3N2YwZWI1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVk
QXJyYXlWaWV3LmgKQEAgLTM2LDExICszNiwxNSBAQCBjbGFzcyBHZW5lcmljVHlwZWRBcnJheVZp
ZXcgZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKICAgICBHZW5lcmljVHlwZWRBcnJh
eVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+
IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0
ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0
ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRy
eUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCk7CiAgICAgCi0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVm
PEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAgICAgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUqPihiYXNlQWRkcmVzcygpKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
CmluZGV4IDFiNmRhNTYxZWI3Y2ViMTMxMmFhNjQ4Y2QyZTQ5M2I1ODJiOWI2YjUuLmU2NjBjZmNk
ZDQ4OTQ1NjJkMTc0ZjY0NjU3NWQ1NjIyYjEyMjM3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKQEAgLTM5LDI1ICszOSw1MyBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46Okdl
bmVyaWNUeXBlZEFycmF5VmlldygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlTm9u
TnVsbCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgorUmVmPEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUoCisgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxl
bmd0aCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShhcnJheSwgbGVuZ3RoKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQucmVsZWFzZU5vbk51
bGwoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KK1JlZjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KAorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CisgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0
KTsKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CitSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgp
CiB7CiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aCwgc2l6
ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxl
bmd0aCk7CisgICAgcmV0dXJuIHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgK
K1JlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAogICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5Vmlldz4gcmVzdWx0ID0gY3JlYXRlKGxlbmd0aCk7CisgICAgUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5Vmlldz4gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQp
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIG1lbWNweShyZXN1bHQtPmRhdGEoKSwgYXJy
YXksIGxlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Y3JlYXRlKAorUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoCiAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IEFTU0VSVChidWZmZXIpOwpAQCAtNzAsMTQgKzk4LDIzIEBAIFJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4KK1JlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+CiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoKQoreworICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChs
ZW5ndGgpOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlTm9uTnVsbCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgorUmVmUHRy
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KK0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPQogICAgICAgICBBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBj
cmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOworICAgIHJldHVybiB0cnlDcmVhdGUo
V1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgpAQCAtOTYsNyArMTMzLDcgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpz
dWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0CiAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZl
ciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgQVNTRVJUKGJ1ZmZlcik7CiAgICAgY2xh
bXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBlPigqYnVmZmVyLCBieXRlT2Zmc2V0
KCksICZvZmZzZXQsICZsZW5ndGgpOwotICAgIHJldHVybiBjcmVhdGUoYnVmZmVyLCBvZmZzZXQs
IGxlbmd0aCk7CisgICAgcmV0dXJuIHRyeUNyZWF0ZShidWZmZXIsIG9mZnNldCwgbGVuZ3RoKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCBiMzAzOWEyMzZiYzdk
OTI2MmIzZWUwYmM5ZjRmYWVlZjYzYjczNTdjLi5jMmRlMDAzZmY2YjcxMGRkZTdkZGJiZTgxOTk0
YTU4MjhlNDU3MmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0zMDIsNyArMzAyLDcgQEAgUmVmUHRyPEFycmF5QnVm
ZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCgpCiAgICAgc3dp
dGNoICh0eXBlKCkpIHsKICNkZWZpbmUgRkFDVE9SWSh0eXBlKSBcCiAgICAgY2FzZSB0eXBlICMj
IEFycmF5VHlwZTogXAotICAgICAgICByZXR1cm4gdHlwZSAjIyBBcnJheTo6Y3JlYXRlKGJ1ZmZl
ciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHR5cGUgIyMgQXJyYXk6OnRy
eUNyZWF0ZShidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CiAgICAgRk9SX0VBQ0hfVFlQRURf
QVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKEZBQ1RPUlkpCiAjdW5kZWYgRkFDVE9SWQog
ICAgIGNhc2UgRGF0YVZpZXdUeXBlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBj
YTE4ODQ0NzcyODEwMGM1YWYzN2E1N2Q2ZDdlMTRjNmY4NzkyYjA1Li4yZTU2Y2UxNjViNTk2NGNh
NGRkMDRmNTdlNDc5ODZiNDc0ZGU1YzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApA
QCAtMzE0LDEzICszMTQsMTMgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6c2V0KAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjx0eXBlbmFtZSBBZGFw
dG9yOjpWaWV3VHlwZT4gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnBvc3NpYmx5
U2hhcmVkVHlwZWRJbXBsKCkKIHsKLSAgICByZXR1cm4gQWRhcHRvcjo6Vmlld1R5cGU6OmNyZWF0
ZShwb3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsKKyAgICBy
ZXR1cm4gQWRhcHRvcjo6Vmlld1R5cGU6OnRyeUNyZWF0ZShwb3NzaWJseVNoYXJlZEJ1ZmZlcigp
LCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnVuc2hhcmVkVHlwZWRJbXBsKCkKIHsKLSAgICByZXR1cm4gQWRhcHRv
cjo6Vmlld1R5cGU6OmNyZWF0ZSh1bnNoYXJlZEJ1ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0
aCgpKTsKKyAgICByZXR1cm4gQWRhcHRvcjo6Vmlld1R5cGU6OnRyeUNyZWF0ZSh1bnNoYXJlZEJ1
ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1v
cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKaW5kZXgg
YTY4NWYwZWEzZTRmY2Y5MDVkYjJjYzM2ZDUwMGFhNzU5Y2I3N2IzZi4uMzhiYmU4OTQ4NDdhZjc5
MmE4YjMwZWMxZTAxNjcxMDM1OTJjMjQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU1lbW9yeS5jcHAKQEAgLTI2OSwxMiArMjY5LDEyIEBAIE1lbW9yeTo6TWVtb3J5KHZvaWQq
IG1lbW9yeSwgUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBzaXplX3QgbWFw
cGVkCiAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1lbW9yeTo6TWVtb3J5IGFsbG9jYXRpbmcg
IiwgKnRoaXMpOwogfQogCi1SZWZQdHI8TWVtb3J5PiBNZW1vcnk6OmNyZWF0ZSgpCitSZWY8TWVt
b3J5PiBNZW1vcnk6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZW1vcnko
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVtb3J5KCkpOwogfQogCi1SZWZQdHI8TWVt
b3J5PiBNZW1vcnk6OmNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0s
IFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1
cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNs
YWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFn
ZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQorUmVmUHRyPE1lbW9yeT4gTWVtb3J5Ojp0
cnlDcmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwg
V1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYg
Z3Jvd1N1Y2Nlc3NDYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaW5pdGlhbCk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoIW1heGltdW0gfHwgbWF4aW11bSA+PSBpbml0aWFsKTsgLy8gVGhpcyBzaG91bGQg
YmUgZ3VhcmFudGVlZCBieSBvdXIgY2FsbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU1lbW9yeS5oCmluZGV4IGMzNjU4MGY3OWVmNzMzZDg2MThkY2ZkYjNmNjcyMTczODVmMmYyNDEu
LjAwNzM3ZmMxZTY1ZTJiMjhkMGIwMDhhOWUzOTUzZGM3NzJjOTkxMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmgKQEAgLTU5LDggKzU5LDggQEAgY2xhc3MgTWVtb3J5
IDogcHVibGljIFJlZkNvdW50ZWQ8TWVtb3J5PiB7CiAgICAgZW51bSBTeW5jVHJ5VG9SZWNsYWlt
IHsgU3luY1RyeVRvUmVjbGFpbVRhZyB9OwogICAgIGVudW0gR3Jvd1N1Y2Nlc3MgeyBHcm93U3Vj
Y2Vzc1RhZyB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxNZW1vcnk+IGNyZWF0ZSgpOwotICAgIHN0
YXRpYyBSZWZQdHI8TWVtb3J5PiBjcmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBt
YXhpbXVtLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9y
eVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1Ry
eVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291
bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayk7CisgICAgc3RhdGljIFJlZjxN
ZW1vcnk+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWZQdHI8TWVtb3J5PiB0cnlDcmVhdGUoUGFn
ZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90
aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
U3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlv
bjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3ND
YWxsYmFjayk7CiAKICAgICB+TWVtb3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtVGFibGUuY3BwCmluZGV4IDA0YWMwNjUyNTU5YTZkOTM4ZjA5YjA2YWVlMjAxZjkxMmU5ZTRj
NjguLmViYjYzMjUyMGZhZjMwODNkZjRjNmYyNzEwMDFmZDU1NzE0NWU4ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIFRh
YmxlOjpzZXRMZW5ndGgodWludDMyX3QgbGVuZ3RoKQogICAgIEFTU0VSVChtX21hc2sgPT0gV1RG
OjptYXNrRm9yU2l6ZShhbGxvY2F0ZWRMZW5ndGgobGVuZ3RoKSkpOwogfQogCi1SZWZQdHI8VGFi
bGU+IFRhYmxlOjpjcmVhdGUodWludDMyX3QgaW5pdGlhbCwgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gbWF4aW11bSkKK1JlZlB0cjxUYWJsZT4gVGFibGU6OnRyeUNyZWF0ZSh1aW50MzJfdCBpbml0
aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKQogewogICAgIGlmICghaXNWYWxp
ZExlbmd0aChpbml0aWFsKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21UYWJsZS5oCmluZGV4IDRlMTVlMjkwMTQ0ZjIzMjgzN2M2Yjg1MzBhMjdk
M2YzNWE3NjA5ZmIuLjJmNTQ4M2M2MThmYTQ1OGJjZTBlZDg1MGRhNTU5NGE5MWU2MmI5ZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNs
YXNzIEluc3RhbmNlOwogCiBjbGFzcyBUYWJsZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxUYWJsZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8VGFibGU+IGNyZWF0ZSh1aW50
MzJfdCBpbml0aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKTsKKyAgICBzdGF0
aWMgUmVmUHRyPFRhYmxlPiB0cnlDcmVhdGUodWludDMyX3QgaW5pdGlhbCwgc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gbWF4aW11bSk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB+VGFibGUoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlJbnN0YW5jZS5jcHAKaW5kZXggYWJjN2ZhZTQ4ZWY3OGJhZTdlZjM0Y2JlNGYzNTZhYmY4NGVh
MDNhMy4uYmQ3MDNmZGIyNmIyNDM4MzYxM2E2YjRjZjgzOWI3MjQ2NTAxOTgwOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFu
Y2UuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFz
c2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAg
ICAgICAgIGF1dG8qIGpzTWVtb3J5ID0gSlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlKGV4ZWMs
IHZtLCBnbG9iYWxPYmplY3QtPldlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJlKCkpOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKIAotICAgICAg
ICAgICAgUmVmUHRyPFdhc206Ok1lbW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5OjpjcmVhdGUo
bW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5LmluaXRpYWwoKSwgbW9kdWxlSW5mb3JtYXRpb24ubWVt
b3J5Lm1heGltdW0oKSwKKyAgICAgICAgICAgIFJlZlB0cjxXYXNtOjpNZW1vcnk+IG1lbW9yeSA9
IFdhc206Ok1lbW9yeTo6dHJ5Q3JlYXRlKG1vZHVsZUluZm9ybWF0aW9uLm1lbW9yeS5pbml0aWFs
KCksIG1vZHVsZUluZm9ybWF0aW9uLm1lbW9yeS5tYXhpbXVtKCksCiAgICAgICAgICAgICAgICAg
WyZ2bV0gKFdhc206Ok1lbW9yeTo6Tm90aWZ5UHJlc3N1cmUpIHsgdm0uaGVhcC5jb2xsZWN0QXN5
bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtXSAoV2Fz
bTo6TWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVj
dGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtLCBqc01lbW9yeV0gKFdh
c206Ok1lbW9yeTo6R3Jvd1N1Y2Nlc3MsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdh
c206OlBhZ2VDb3VudCBuZXdQYWdlQ291bnQpIHsganNNZW1vcnktPmdyb3dTdWNjZXNzQ2FsbGJh
Y2sodm0sIG9sZFBhZ2VDb3VudCwgbmV3UGFnZUNvdW50KTsgfSk7CkBAIC0yOTcsNyArMjk3LDcg
QEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShW
TSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICBpZiAoIWpzSW5zdGFuY2UtPm1lbW9yeSgp
KSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGEgZHVtbXkgbWVtb3J5LCBzbyB0aGF0
IHdhc20gLT4gd2FzbSB0aHVua3MgYXZvaWQgY2hlY2tpbmcgZm9yIGEgbnVsbHB0ciBNZW1vcnkg
d2hlbiB0cnlpbmcgdG8gc2V0IHBpbm5lZCByZWdpc3RlcnMuCiAgICAgICAgIGF1dG8qIGpzTWVt
b3J5ID0gSlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlKGV4ZWMsIHZtLCBnbG9iYWxPYmplY3Qt
PldlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJlKCkpOwotICAgICAgICBqc01lbW9yeS0+YWRvcHQo
V2FzbTo6TWVtb3J5OjpjcmVhdGUoKS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAganNNZW1v
cnktPmFkb3B0KFdhc206Ok1lbW9yeTo6Y3JlYXRlKCkpOwogICAgICAgICBqc0luc3RhbmNlLT5z
ZXRNZW1vcnkodm0sIGpzTWVtb3J5KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBudWxscHRyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCmluZGV4IDU2NTYyNTI2Y2ZlNzE3OGIy
NzM4ZTkyNjVkN2IyODVhM2U0NzY0NmYuLjdhNmE1ZjAzOThmODYwYTEwMTM4YjZiM2JkNTk1NjJj
MDA3ZDllMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlNZW1vcnkuY3BwCkBAIC02OSw3ICs2OSw3IEBAIFN0cnVjdHVyZSogSlNXZWJB
c3NlbWJseU1lbW9yeTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iCiAKIEpTV2ViQXNzZW1ibHlNZW1vcnk6OkpTV2ViQXNzZW1ibHlNZW1vcnkoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKLSAgICAs
IG1fbWVtb3J5KFdhc206Ok1lbW9yeTo6Y3JlYXRlKCkucmVsZWFzZU5vbk51bGwoKSkKKyAgICAs
IG1fbWVtb3J5KFdhc206Ok1lbW9yeTo6Y3JlYXRlKCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggNGYyNjAyNDJkNmZiNTcwN2Y3NWRlNzFkMTM2ZDZhNjliMDEyYWZm
OC4uMTQwNGU2NzgyYTliNjJmYzBhMWJjMzZlN2I1NDQ4NDdlMjJlNmQyYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1v
cnlDb25zdHJ1Y3Rvci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeShFeGVjU3RhdGUqIGV4
ZWMKICAgICBhdXRvKiBqc01lbW9yeSA9IEpTV2ViQXNzZW1ibHlNZW1vcnk6OmNyZWF0ZShleGVj
LCB2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5XZWJBc3NlbWJseU1lbW9yeVN0cnVj
dHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCi0gICAgUmVmUHRyPFdhc206Ok1lbW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5
OjpjcmVhdGUoaW5pdGlhbFBhZ2VDb3VudCwgbWF4aW11bVBhZ2VDb3VudCwKKyAgICBSZWZQdHI8
V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OnRyeUNyZWF0ZShpbml0aWFsUGFn
ZUNvdW50LCBtYXhpbXVtUGFnZUNvdW50LAogICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpO
b3RpZnlQcmVzc3VyZSkgeyB2bS5oZWFwLmNvbGxlY3RBc3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1
bGwpOyB9LAogICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7
IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAg
WyZ2bSwganNNZW1vcnldIChXYXNtOjpNZW1vcnk6Okdyb3dTdWNjZXNzLCBXYXNtOjpQYWdlQ291
bnQgb2xkUGFnZUNvdW50LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KSB7IGpzTWVtb3J5
LT5ncm93U3VjY2Vzc0NhbGxiYWNrKHZtLCBvbGRQYWdlQ291bnQsIG5ld1BhZ2VDb3VudCk7IH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IGU4Y2E1OGNiZjYwYWM0NmFiMjMwZWUzZGYwNGE1ZjRh
MzAyOGYyZjIuLjM5YTY2ZmFmNjYzODZmN2NkYzhlNjNlNjQ0YWUwZmNmNzA5ODEyYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1v
ZHVsZVJlY29yZC5jcHAKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9i
agogICAgICAgICBpZiAoISFtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0aW9uICYmICFo
YXNUYWJsZUltcG9ydCkgewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1vZHVsZUluZm9y
bWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaXNJbXBvcnQoKSk7CiAgICAgICAgICAgICAvLyBXZSBj
cmVhdGUgYSBUYWJsZSB3aGVuIGl0J3MgYSBUYWJsZSBkZWZpbml0aW9uLgotICAgICAgICAgICAg
UmVmUHRyPFdhc206OlRhYmxlPiB3YXNtVGFibGUgPSBXYXNtOjpUYWJsZTo6Y3JlYXRlKG1vZHVs
ZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaW5pdGlhbCgpLCBtb2R1bGVJbmZvcm1hdGlv
bi50YWJsZUluZm9ybWF0aW9uLm1heGltdW0oKSk7CisgICAgICAgICAgICBSZWZQdHI8V2FzbTo6
VGFibGU+IHdhc21UYWJsZSA9IFdhc206OlRhYmxlOjp0cnlDcmVhdGUobW9kdWxlSW5mb3JtYXRp
b24udGFibGVJbmZvcm1hdGlvbi5pbml0aWFsKCksIG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5m
b3JtYXRpb24ubWF4aW11bSgpKTsKICAgICAgICAgICAgIGlmICghd2FzbVRhYmxlKQogICAgICAg
ICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihl
eGVjLCB2bSwgImNvdWxkbid0IGNyZWF0ZSBUYWJsZSIpKTsKICAgICAgICAgICAgIEpTV2ViQXNz
ZW1ibHlUYWJsZSogdGFibGUgPSBKU1dlYkFzc2VtYmx5VGFibGU6OmNyZWF0ZShleGVjLCB2bSwg
Z2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseVRhYmxlU3RydWN0dXJlKCksIHdhc21UYWJsZS5yZWxl
YXNlTm9uTnVsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwCmluZGV4IDA3NmM3ODc4ZjVk
ZTI2ZWNiMDE3YmY4NTc4OGIwMDE5N2VhMzJiMTUuLjVhNjk1MjA4NTBkZTAxOTFhZTI3M2I0N2Zi
OTliMzM3YzE3ZTg2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcApAQCAtOTAsNyArOTAs
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFz
c2VtYmx5VGFibGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9CiAgICAgfQogCi0gICAgUmVm
UHRyPFdhc206OlRhYmxlPiB3YXNtVGFibGUgPSBXYXNtOjpUYWJsZTo6Y3JlYXRlKGluaXRpYWws
IG1heGltdW0pOworICAgIFJlZlB0cjxXYXNtOjpUYWJsZT4gd2FzbVRhYmxlID0gV2FzbTo6VGFi
bGU6OnRyeUNyZWF0ZShpbml0aWFsLCBtYXhpbXVtKTsKICAgICBpZiAoIXdhc21UYWJsZSkgewog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93
U2NvcGUsCiAgICAgICAgICAgICBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJjb3VsZG4ndCBjcmVh
dGUgVGFibGUiX3MpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFy
S2V5LmNwcAppbmRleCA0NzZkMmU1ZTM3N2E1OTQwMGE2NTU0MjYyNTg3NzU4YTdlZTk3MmYyLi5k
MGZiM2UwNTM2ZmVkYzkyNzFjZTFkZTkzMGFiNDdjYjU3N2E0OTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9u
Q2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCBS
ZWZQdHI8QXJyYXlCdWZmZXI+IENETVNlc3Npb25DbGVhcktleTo6Y2FjaGVkS2V5Rm9yS2V5SUQo
Y29uc3QgU3RyaW5nJiBrZXlJZCkgYwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1
dG8ga2V5RGF0YSA9IG1fY2FjaGVkS2V5cy5nZXQoa2V5SWQpOwotICAgIFJlZlB0cjxVaW50OEFy
cmF5PiBrZXlEYXRhQXJyYXkgPSBVaW50OEFycmF5OjpjcmVhdGUoa2V5RGF0YS5kYXRhKCksIGtl
eURhdGEuc2l6ZSgpKTsKKyAgICBhdXRvIGtleURhdGFBcnJheSA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShrZXlEYXRhLmRhdGEoKSwga2V5RGF0YS5zaXplKCkpOwogICAgIHJldHVybiBrZXlEYXRhQXJy
YXktPnVuc2hhcmVkQnVmZmVyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCA3
OWVjODkxZDgxM2NkOTFiNzA4NzE5Zjc0MmQ5NjlhN2ZmMjFmNzA5Li42MmIzMTkyYTJmNjM4Y2M5
NGQ5MzJhZThiNWNmYmE0NDBhYzFlNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC0z
MDgsNyArMzA4LDcgQEAgc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29u
dGV4dChOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnksIEpTQ29udGUKICAgICAgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbmFtZSA9IE9wYXF1ZUpT
U3RyaW5nOjpjcmVhdGUoa2V5KTsKKyAgICAgICAgYXV0byBuYW1lID0gT3BhcXVlSlNTdHJpbmc6
OnRyeUNyZWF0ZShrZXkpOwogICAgICAgICBKU09iamVjdFNldFByb3BlcnR5KFtjb250ZXh0IEpT
R2xvYmFsQ29udGV4dFJlZl0sIHJlc3VsdE9iamVjdCwgbmFtZS5nZXQoKSwgW3ZhbHVlIEpTVmFs
dWVSZWZdLCAwLCAmZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAg
ICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyLmNwcAppbmRleCA5ZjBhMjVmZDNmYmM4YjMyZGY5ODY0MTFmNGExNTVjZmI2MTk0OTQ5
Li41NmExM2NhZWFiZDRlM2ZkNGI4YmMzYWU2ZjdhNjgxZTMyZGQyODRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcApAQCAtNjcsNyArNjcs
NyBAQCBBdWRpb0J1ZmZlcjo6QXVkaW9CdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywg
c2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdAogICAgIG1fY2hhbm5lbHMucmVzZXJ2ZUNhcGFj
aXR5KG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bWJlck9mQ2hhbm5lbHM7ICsraSkgewotICAgICAgICBhdXRvIGNoYW5uZWxEYXRhQXJyYXkgPSBG
bG9hdDMyQXJyYXk6OmNyZWF0ZShtX2xlbmd0aCk7CisgICAgICAgIGF1dG8gY2hhbm5lbERhdGFB
cnJheSA9IEZsb2F0MzJBcnJheTo6dHJ5Q3JlYXRlKG1fbGVuZ3RoKTsKICAgICAgICAgaWYgKCFj
aGFubmVsRGF0YUFycmF5KSB7CiAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTg2LDcgKzg2LDcgQEAgQXVkaW9CdWZmZXI6OkF1ZGlvQnVmZmVyKEF1ZGlv
QnVzJiBidXMpCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyA9IGJ1cy5udW1iZXJPZkNo
YW5uZWxzKCk7CiAgICAgbV9jaGFubmVscy5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZDaGFubmVs
cyk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkg
ewotICAgICAgICBhdXRvIGNoYW5uZWxEYXRhQXJyYXkgPSBGbG9hdDMyQXJyYXk6OmNyZWF0ZSht
X2xlbmd0aCk7CisgICAgICAgIGF1dG8gY2hhbm5lbERhdGFBcnJheSA9IEZsb2F0MzJBcnJheTo6
dHJ5Q3JlYXRlKG1fbGVuZ3RoKTsKICAgICAgICAgaWYgKCFjaGFubmVsRGF0YUFycmF5KSB7CiAg
ICAgICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTExNSw5ICsx
MTUsNyBAQCBFeGNlcHRpb25PcjxSZWY8RmxvYXQzMkFycmF5Pj4gQXVkaW9CdWZmZXI6OmdldENo
YW5uZWxEYXRhKHVuc2lnbmVkIGNoYW5uZWxJbmRleAogICAgIGlmIChjaGFubmVsSW5kZXggPj0g
bV9jaGFubmVscy5zaXplKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJv
ciB9OwogICAgIGF1dG8mIGNoYW5uZWxEYXRhID0gKm1fY2hhbm5lbHNbY2hhbm5lbEluZGV4XTsK
LSAgICBhdXRvIGFycmF5ID0gRmxvYXQzMkFycmF5OjpjcmVhdGUoY2hhbm5lbERhdGEudW5zaGFy
ZWRCdWZmZXIoKSwgY2hhbm5lbERhdGEuYnl0ZU9mZnNldCgpLCBjaGFubmVsRGF0YS5sZW5ndGgo
KSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOwotICAgIHJldHVybiBhcnJheS5yZWxlYXNl
Tm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShjaGFubmVsRGF0YS51
bnNoYXJlZEJ1ZmZlcigpLCBjaGFubmVsRGF0YS5ieXRlT2Zmc2V0KCksIGNoYW5uZWxEYXRhLmxl
bmd0aCgpKTsKIH0KIAogRmxvYXQzMkFycmF5KiBBdWRpb0J1ZmZlcjo6Y2hhbm5lbERhdGEodW5z
aWduZWQgY2hhbm5lbEluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ2ci9WUkV5ZVBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9W
UkV5ZVBhcmFtZXRlcnMuY3BwCmluZGV4IDI1ZmI4ZThiN2Q1NTVkN2FkMGQzNDkxNzQ5OTdkYjMy
OTcwY2M5YTkuLjAxMjY0YmQ4NjkyNGZjZmNjYzhjMmM1ZTNhNzhmNzIwNjM5MTE2YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJFeWVQYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRXllUGFyYW1ldGVycy5jcHAKQEAg
LTM5LDEyICszOSwxMSBAQCBWUkV5ZVBhcmFtZXRlcnM6OlZSRXllUGFyYW1ldGVycyhjb25zdCBG
bG9hdFBvaW50M0QmIG9mZnNldCwgY29uc3QgVlJQbGF0Zm9ybURpcwogUmVmPEZsb2F0MzJBcnJh
eT4gVlJFeWVQYXJhbWV0ZXJzOjpvZmZzZXQoKSBjb25zdAogewogICAgIGF1dG8gb2Zmc2V0ID0g
RmxvYXQzMkFycmF5OjpjcmVhdGUoMyk7Ci0gICAgUkVMRUFTRV9BU1NFUlQob2Zmc2V0KTsKICAg
ICBmbG9hdCogb2Zmc2V0RGF0YSA9IG9mZnNldC0+ZGF0YSgpOwogICAgIG9mZnNldERhdGFbMF0g
PSBtX29mZnNldC54KCk7CiAgICAgb2Zmc2V0RGF0YVsxXSA9IG1fb2Zmc2V0LnkoKTsKICAgICBv
ZmZzZXREYXRhWzJdID0gbV9vZmZzZXQueigpOwotICAgIHJldHVybiBvZmZzZXQucmVsZWFzZU5v
bk51bGwoKTsKKyAgICByZXR1cm4gb2Zmc2V0OwogfQogCiBjb25zdCBWUkZpZWxkT2ZWaWV3JiBW
UkV5ZVBhcmFtZXRlcnM6OmZpZWxkT2ZWaWV3KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VidnIvVlJGcmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHAKaW5kZXggNjVjM2RiYWQ2OGRjMmU4NGExMzYxYzY2
MGExZjdlZWU4OThjMWZiZC4uYjIxNWI1NWZjNmMwMzFiMDdkNjljNzJkNWZhMGQ5ZTVlYmE3MWMw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAgVlJGcmFtZURhdGE6OlZSRnJhbWVEYXRhKCkKIHN0YXRpYyBSZWY8Rmxv
YXQzMkFycmF5PiBtYXRyaXhUb0FycmF5KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRy
aXgpCiB7CiAgICAgYXV0byBjb2x1bW5NYWpvck1hdHJpeCA9IG1hdHJpeC50b0NvbHVtbk1ham9y
RmxvYXRBcnJheSgpOwotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShjb2x1bW5NYWpv
ck1hdHJpeC5kYXRhKCksIDE2KS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMy
QXJyYXk6OmNyZWF0ZShjb2x1bW5NYWpvck1hdHJpeC5kYXRhKCksIDE2KTsKIH0KIAogUmVmPEZs
b2F0MzJBcnJheT4gVlJGcmFtZURhdGE6OmxlZnRQcm9qZWN0aW9uTWF0cml4KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJQb3NlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJQb3NlLmNwcAppbmRleCA4ZTNiYWY1YTJmMDg0NTA5
NTY0OGI4MWRhMjlkZGJkZTlmZWY2NDRiLi4xNjg2YjlhNWFiN2RmN2MzN2FlM2NlMjIzNTcwZDA0
OWI1MGU5NzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSUG9z
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUlBvc2UuY3BwCkBAIC0z
Miw3ICszMiw3IEBAIHN0YXRpYyBSZWZQdHI8RmxvYXQzMkFycmF5PiBvcHRpb25hbEZsb2F0M1Rv
SlNDQXJyYXkoY29uc3Qgc3RkOjpvcHRpb25hbDxWUlBsYXRmCiAgICAgaWYgKCFkYXRhKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShk
YXRhLT5kYXRhLCAzKS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMyQXJyYXk6
OmNyZWF0ZShkYXRhLT5kYXRhLCAzKTsKIH0KIAogUmVmUHRyPEZsb2F0MzJBcnJheT4gVlJQb3Nl
Ojpwb3NpdGlvbigpIGNvbnN0CkBAIC00Miw3ICs0Miw3IEBAIFJlZlB0cjxGbG9hdDMyQXJyYXk+
IFZSUG9zZTo6cG9zaXRpb24oKSBjb25zdAogCiAgICAgYXV0byYgcG9zaXRpb24gPSAqbV90cmFj
a2luZ0luZm8ucG9zaXRpb247CiAgICAgZmxvYXQgcG9zaXRpb25EYXRhWzNdID0geyBwb3NpdGlv
bi54KCksIHBvc2l0aW9uLnkoKSwgcG9zaXRpb24ueigpIH07Ci0gICAgcmV0dXJuIEZsb2F0MzJB
cnJheTo6Y3JlYXRlKHBvc2l0aW9uRGF0YSwgMykucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1
cm4gRmxvYXQzMkFycmF5OjpjcmVhdGUocG9zaXRpb25EYXRhLCAzKTsKIH0KIAogUmVmUHRyPEZs
b2F0MzJBcnJheT4gVlJQb3NlOjpsaW5lYXJWZWxvY2l0eSgpIGNvbnN0CkBAIC02Miw3ICs2Miw3
IEBAIFJlZlB0cjxGbG9hdDMyQXJyYXk+IFZSUG9zZTo6b3JpZW50YXRpb24oKSBjb25zdAogCiAg
ICAgYXV0byYgb3JpZW50YXRpb24gPSAqbV90cmFja2luZ0luZm8ub3JpZW50YXRpb247CiAgICAg
ZmxvYXQgb3JpZW50YXRpb25EYXRhWzRdID0geyBvcmllbnRhdGlvbi54LCBvcmllbnRhdGlvbi55
LCBvcmllbnRhdGlvbi56LCBvcmllbnRhdGlvbi53IH07Ci0gICAgcmV0dXJuIEZsb2F0MzJBcnJh
eTo6Y3JlYXRlKG9yaWVudGF0aW9uRGF0YSwgNCkucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1
cm4gRmxvYXQzMkFycmF5OjpjcmVhdGUob3JpZW50YXRpb25EYXRhLCA0KTsKIH0KIAogUmVmUHRy
PEZsb2F0MzJBcnJheT4gVlJQb3NlOjphbmd1bGFyVmVsb2NpdHkoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUlN0YWdlUGFyYW1ldGVycy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSU3RhZ2VQYXJhbWV0ZXJzLmNwcAppbmRleCAy
ZGEwNzQzYjQ0YzdlYzhmODMwOTI1OWJmNGRhMjU4N2FkZjI4NmUyLi5iNmU1NzMyNmM1MjRhNTc2
OTczYmMzYjZhN2M4NjRkODE4ODIyNTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnZyL1ZSU3RhZ2VQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnZyL1ZSU3RhZ2VQYXJhbWV0ZXJzLmNwcApAQCAtNDEsNyArNDEsNyBAQCBWUlN0YWdl
UGFyYW1ldGVyczo6VlJTdGFnZVBhcmFtZXRlcnMoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHNpdHRpbmdUb1N0YW5kaQogUmVmPEZsb2F0MzJBcnJheT4gVlJTdGFnZVBhcmFtZXRlcnM6OnNp
dHRpbmdUb1N0YW5kaW5nVHJhbnNmb3JtKCkgY29uc3QKIHsKICAgICBhdXRvIGNvbHVtbk1ham9y
TWF0cml4ID0gbV9zaXR0aW5nVG9TdGFuZGluZ1RyYW5zZm9ybS50b0NvbHVtbk1ham9yRmxvYXRB
cnJheSgpOwotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShjb2x1bW5NYWpvck1hdHJp
eC5kYXRhKCksIDE2KS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMyQXJyYXk6
OmNyZWF0ZShjb2x1bW5NYWpvck1hdHJpeC5kYXRhKCksIDE2KTsKIH0KIAogZmxvYXQgVlJTdGFn
ZVBhcmFtZXRlcnM6OnNpemVYKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaAppbmRleCA2
NGNlZGMxNjhmZDBlMmNhMDA0ODQwMDAzNmY4MzQxMGJiZmZkMjFiLi40ODRjOGQ4MWU3YmM2MWFh
ZTM5NmJhYzU4Y2E2YzIzNGNiZmQ5OWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCkBAIC05
OSw4ICs5OSw3IEBAIGlubGluZSBib29sIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6
OmVucXVldWUoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+JiYKICAgICB9CiAgICAgYXV0byBsZW5n
dGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICBhdXRvIGNodW5rID0gSlNDOjpVaW50OEFy
cmF5OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwotICAgIEFTU0VSVChjaHVu
ayk7Ci0gICAgZW5xdWV1ZShzdGF0ZSwgdG9KUygmc3RhdGUsICZnbG9iYWxPYmplY3QsIGNodW5r
LmdldCgpKSk7CisgICAgZW5xdWV1ZShzdGF0ZSwgdG9KUygmc3RhdGUsICZnbG9iYWxPYmplY3Qs
IGNodW5rLnB0cigpKSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGJhOTQ1Y2Q3NzFlNGFmOWU4NWY2N2Y4NTcyMDQ4NjI5
NTc0NGM2MDkuLmFmN2FiM2E2YzdlNGIyN2NjMzcyZDZkZjIwYWI2MTJhNDcxNTY1MzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcApAQCAtMjA5NiwzMSArMjA5NiwzMSBAQCBjbGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENs
b25lQmFzZSB7CiAgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSBnZXRKU1ZhbHVlKERhdGFW
aWV3OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgSW50OEFycmF5VGFn
OgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2Jq
ZWN0LCBJbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwg
bGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhl
YywgbV9nbG9iYWxPYmplY3QsIEludDhBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZm
ZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIFVpbnQ4QXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZp
ZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZN
b3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAg
ICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQ4QXJy
YXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5n
ZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBVaW50OENsYW1w
ZWRBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBt
X2dsb2JhbE9iamVjdCwgVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVm
ZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZl
clZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQ4Q2xhbXBlZEFycmF5Ojp0
cnlDcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgSW50MTZBcnJheVRhZzoK
LSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVj
dCwgSW50MTZBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBs
ZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVj
LCBtX2dsb2JhbE9iamVjdCwgSW50MTZBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZm
ZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIFVpbnQxNkFycmF5VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZmZXJW
aWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBVaW50MTZBcnJheTo6Y3JlYXRlKFdU
Rk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAg
ICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDE2
QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3Ro
KS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBJbnQzMkFy
cmF5VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xv
YmFsT2JqZWN0LCBJbnQzMkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVP
ZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9K
UyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBJbnQzMkFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShh
cnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIGNhc2UgVWludDMyQXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJh
eUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQzMkFycmF5Ojpj
cmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwor
ICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0
LCBVaW50MzJBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0
LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNl
IEZsb2F0MzJBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9l
eGVjLCBtX2dsb2JhbE9iamVjdCwgRmxvYXQzMkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1
ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAgYXJyYXlCdWZm
ZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBGbG9hdDMyQXJyYXk6OnRyeUNy
ZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBGbG9hdDY0QXJyYXlUYWc6Ci0g
ICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3Qs
IEZsb2F0NjRBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBs
ZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVj
LCBtX2dsb2JhbE9iamVjdCwgRmxvYXQ2NEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShhcnJheUJ1
ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKaW5k
ZXggMDgwMjA5OTU0NGM4NGQzZGIxODM3MDYzYjQ5N2U1OWRiZGZiNmZlNS4uM2Q4MDAyYzlhOTU0
OWEzMmIxMThhMGZjNGUyOWJjZDljN2FiZDJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcApAQCAtNjI5LDcgKzYyOSw3IEBA
IGF1dG8gQ3J5cHRvS2V5UlNBOjphbGdvcml0aG0oKSBjb25zdCAtPiBLZXlBbGdvcml0aG0KICAg
ICAgICAgQ3J5cHRvUnNhSGFzaGVkS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICAgICAgcmVzdWx0
Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShhbGdvcml0
aG1JZGVudGlmaWVyKCkpOwogICAgICAgICByZXN1bHQubW9kdWx1c0xlbmd0aCA9IG1vZHVsdXNM
ZW5ndGg7Ci0gICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgICAg
IHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShwdWJsaWNFeHBv
bmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CiAgICAgICAgIHJlc3VsdC5oYXNo
Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShtX2hhc2gp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTYzNyw3ICs2MzcsNyBAQCBhdXRv
IENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkgY29uc3QgLT4gS2V5QWxnb3JpdGhtCiAgICAgQ3J5
cHRvUnNhS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICByZXN1bHQubmFtZSA9IENyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKGFsZ29yaXRobUlkZW50aWZpZXIoKSk7CiAg
ICAgcmVzdWx0Lm1vZHVsdXNMZW5ndGggPSBtb2R1bHVzTGVuZ3RoOwotICAgIHJlc3VsdC5wdWJs
aWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1
YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgcmVzdWx0LnB1YmxpY0V4cG9uZW50ID0gVWludDhB
cnJheTo6dHJ5Q3JlYXRlKHB1YmxpY0V4cG9uZW50LmRhdGEoKSwgcHVibGljRXhwb25lbnQuc2l6
ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0tleVJTQU1hYy5jcHAKaW5kZXggZThlYjg0ZWEwZTUyNDYwZTJkNTc4YTZiODc4
OWQ5N2YzZTIwNDE1YS4uOTRmYzFhNzYyOTMzMmY3ZTgxZDAxMWY5MGYxNTM2MDRkNjJmNjBmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcApAQCAt
MjIyLDcgKzIyMiw3IEBAIGF1dG8gQ3J5cHRvS2V5UlNBOjphbGdvcml0aG0oKSBjb25zdCAtPiBL
ZXlBbGdvcml0aG0KICAgICAgICAgQ3J5cHRvUnNhS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICAg
ICAgcmVzdWx0Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFt
ZShhbGdvcml0aG1JZGVudGlmaWVyKCkpOwogICAgICAgICByZXN1bHQubW9kdWx1c0xlbmd0aCA9
IDA7Ci0gICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZSgw
KTsKKyAgICAgICAgcmVzdWx0LnB1YmxpY0V4cG9uZW50ID0gVWludDhBcnJheTo6dHJ5Q3JlYXRl
KDApOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMjMyLDcgKzIzMiw3IEBA
IGF1dG8gQ3J5cHRvS2V5UlNBOjphbGdvcml0aG0oKSBjb25zdCAtPiBLZXlBbGdvcml0aG0KICAg
ICAgICAgQ3J5cHRvUnNhSGFzaGVkS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICAgICAgcmVzdWx0
Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShhbGdvcml0
aG1JZGVudGlmaWVyKCkpOwogICAgICAgICByZXN1bHQubW9kdWx1c0xlbmd0aCA9IG1vZHVsdXNM
ZW5ndGg7Ci0gICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgICAg
IHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShwdWJsaWNFeHBv
bmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CiAgICAgICAgIHJlc3VsdC5oYXNo
Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShtX2hhc2gp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTI0MCw3ICsyNDAsNyBAQCBhdXRv
IENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkgY29uc3QgLT4gS2V5QWxnb3JpdGhtCiAgICAgQ3J5
cHRvUnNhS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICByZXN1bHQubmFtZSA9IENyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKGFsZ29yaXRobUlkZW50aWZpZXIoKSk7CiAg
ICAgcmVzdWx0Lm1vZHVsdXNMZW5ndGggPSBtb2R1bHVzTGVuZ3RoOwotICAgIHJlc3VsdC5wdWJs
aWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1
YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgcmVzdWx0LnB1YmxpY0V4cG9uZW50ID0gVWludDhB
cnJheTo6dHJ5Q3JlYXRlKHB1YmxpY0V4cG9uZW50LmRhdGEoKSwgcHVibGljRXhwb25lbnQuc2l6
ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJp
eFJlYWRPbmx5LmNwcAppbmRleCBkZWFhZGZhN2Y4MTFlNzQ4ZjNlYjEzNzE0Yjk1ZTcwNzZkOGIy
YzRlLi43MzE3NTRlNDY2ZjM3MzZlOWNjNDdkNzMwNDc1MjU3ZjdlYTViZmU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5jcHAKQEAgLTM0NSw3ICszNDUsNyBAQCBSZWY8
RE9NUG9pbnQ+IERPTU1hdHJpeFJlYWRPbmx5Ojp0cmFuc2Zvcm1Qb2ludChET01Qb2ludEluaXQm
JiBwb2ludEluaXQpCiAKIEV4Y2VwdGlvbk9yPFJlZjxGbG9hdDMyQXJyYXk+PiBET01NYXRyaXhS
ZWFkT25seTo6dG9GbG9hdDMyQXJyYXkoKSBjb25zdAogewotICAgIGF1dG8gYXJyYXkzMiA9IEZs
b2F0MzJBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgxNik7CisgICAgYXV0byBhcnJheTMyID0g
RmxvYXQzMkFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKDE2KTsKICAgICBpZiAoIWFycmF5
MzIpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJPdXQgb2YgbWVt
b3J5Il9zIH07CiAKQEAgLTM3MSw3ICszNzEsNyBAQCBFeGNlcHRpb25PcjxSZWY8RmxvYXQzMkFy
cmF5Pj4gRE9NTWF0cml4UmVhZE9ubHk6OnRvRmxvYXQzMkFycmF5KCkgY29uc3QKIAogRXhjZXB0
aW9uT3I8UmVmPEZsb2F0NjRBcnJheT4+IERPTU1hdHJpeFJlYWRPbmx5Ojp0b0Zsb2F0NjRBcnJh
eSgpIGNvbnN0CiB7Ci0gICAgYXV0byBhcnJheTY0ID0gRmxvYXQ2NEFycmF5OjpjcmVhdGVVbmlu
aXRpYWxpemVkKDE2KTsKKyAgICBhdXRvIGFycmF5NjQgPSBGbG9hdDY0QXJyYXk6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQoMTYpOwogICAgIGlmICghYXJyYXk2NCkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIk91dCBvZiBtZW1vcnkiX3MgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5jcHAKaW5kZXggMmViNDFjOWMxMTQ0NGQ2MWJkZGYzYWIxNDJiOTViZTM4NDE5NWM3
OC4uYTI0YTUzNjI2ODkwYThhOTFkMTE3MzhjYTlhNThhNDUzNzFiYjhiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuY3BwCkBAIC03OCw3ICs3OCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxGb250RmFjZT4+
IEZvbnRGYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGZhCiAg
ICAgICAgIFsmXSAoUmVmUHRyPEFycmF5QnVmZmVyPiYgYXJyYXlCdWZmZXIpIC0+IEV4Y2VwdGlv
bk9yPHZvaWQ+IHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpOwogICAgICAgICAgICAgYXV0byBhcnJheUJ1ZmZlclZpZXcgPSBKU0M6
OlVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7
Ci0gICAgICAgICAgICBkYXRhUmVxdWlyZXNBc3luY2hyb25vdXNMb2FkaW5nID0gcG9wdWxhdGVG
b250RmFjZVdpdGhBcnJheUJ1ZmZlcihyZXN1bHQtPmJhY2tpbmcoKSwgYXJyYXlCdWZmZXJWaWV3
LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgZGF0YVJlcXVpcmVzQXN5bmNocm9ub3Vz
TG9hZGluZyA9IHBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIocmVzdWx0LT5iYWNraW5n
KCksIFdURk1vdmUoYXJyYXlCdWZmZXJWaWV3KSk7CiAgICAgICAgICAgICByZXR1cm4geyB9Owog
ICAgICAgICB9CiAgICAgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5j
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXIuY3BwCmluZGV4IDllZWI3
Nzk0NWFlOTIxNGZkYjgwMGMwYmUwY2EzOTA1ODUzNTRmYjUuLmIwNDljYzFlMzRhNzJiYjkyMmY0
MTNkM2I0ZDJmYzI0ZjExODQ5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0
RW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmNwcApAQCAt
NDAsNyArNDAsNyBAQCBSZWZQdHI8VWludDhBcnJheT4gVGV4dEVuY29kZXI6OmVuY29kZShTdHJp
bmcmJiBpbnB1dCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBuZWVkIHRv
IGFsbG9jYXRlIGEgQ1N0cmluZyB0byBlbmNvZGUgaW50byBhIFVpbnQ4QXJyYXkuCiAgICAgQ1N0
cmluZyB1dGY4ID0gaW5wdXQudXRmOCgpOwotICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0
aCgpKTsKKyAgICByZXR1cm4gVWludDhBcnJheTo6dHJ5Q3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAppbmRleCA5ZmZjNDA4ZWY2MDI1ZDJlZTJjNTYxMzNjYjc1
ZWVlOGI4NjA5ZWU5Li4zYjJhMjM2NjNkMTA3NzMxZDMyNzFiNjQzODEzNDUxYTEzMTg3NTZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCkBAIC05OSwxNSArOTksMTMgQEAgSW1hZ2VEYXRh
OjpJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICA6IG1fc2l6ZShzaXplKQogICAg
ICwgbV9kYXRhKFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKChzaXplLmFy
ZWEoKSAqIDQpLnVuc2FmZUdldCgpKSkKIHsKLSAgICBBU1NFUlQobV9kYXRhKTsKIH0KIAogSW1h
Z2VEYXRhOjpJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSwgUmVmPFVpbnQ4Q2xhbXBlZEFy
cmF5PiYmIGJ5dGVBcnJheSkKICAgICA6IG1fc2l6ZShzaXplKQogICAgICwgbV9kYXRhKFdURk1v
dmUoYnl0ZUFycmF5KSkKIHsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTighbV9kYXRhIHx8IChzaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdl
dCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oKHNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkgPD0gbV9kYXRhLT5s
ZW5ndGgoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCmluZGV4IDk4YjFmMTA4Zjk2
ZjFlYmFmODdjMGFkZjQ3ODdmNjViZTRkNmNhNzYuLmEwZmZhMjk4NzE4YmYyNzdlOGExNmI2MTNl
NTc1OGE3ODcyYzIyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaApAQCAtMzQsMjUgKzM0LDI1
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSW1hZ2VE
YXRhIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VEYXRhPiB7CitjbGFzcyBJbWFnZURhdGEgOiBw
dWJsaWMgUmVmQ291bnRlZDxJbWFnZURhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gpOwot
ICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYpOwotICAg
IHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIFJlZjxVaW50
OENsYW1wZWRBcnJheT4mJik7Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURh
dGE+PiBjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmLCB1bnNpZ25lZCBzdywgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gc2gpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRp
b25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlKHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZShjb25zdCBJ
bnRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNy
ZWF0ZShjb25zdCBJbnRTaXplJiwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IGNyZWF0ZShS
ZWY8VWludDhDbGFtcGVkQXJyYXk+JiYsIHVuc2lnbmVkIHN3LCBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBzaCk7CiAKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0K
ICAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NpemUud2lkdGgoKTsgfQogICAgIGlu
dCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NpemUuaGVpZ2h0KCk7IH0KIAotICAgIFVpbnQ4
Q2xhbXBlZEFycmF5KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAg
VWludDhDbGFtcGVkQXJyYXkqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEucHRyKCk7IH0K
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYpOwogICAg
IEltYWdlRGF0YShjb25zdCBJbnRTaXplJiwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmKTsKIAog
ICAgIEludFNpemUgbV9zaXplOwotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gbV9kYXRh
OworICAgIFJlZjxVaW50OENsYW1wZWRBcnJheT4gbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA3YzA0NTU1MDhkNTQ0YmE1OGZlNGU3NDNlYTViMmZj
MmEwNTMyOTMyLi4wNzY2ODM1MDdlODkyZDkzOWUwMzM1MzVmZWJkMDhkYWM3MGYwYjdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250
ZXh0LmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIGNvbnN0IEFycmF5QnVmZmVyVmlldyYKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gc2xpY2UgPSBVaW50OEFycmF5OjpjcmVhdGUo
ZGF0YS5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBkYXRhLmJ5dGVPZmZzZXQoKSArIGNoZWNrZWRC
eXRlU3JjT2Zmc2V0LnVuc2FmZUdldCgpLCBjaGVja2VkQnl0ZUxlbmd0aC51bnNhZmVHZXQoKSk7
CisgICAgYXV0byBzbGljZSA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShkYXRhLnBvc3NpYmx5U2hh
cmVkQnVmZmVyKCksIGRhdGEuYnl0ZU9mZnNldCgpICsgY2hlY2tlZEJ5dGVTcmNPZmZzZXQudW5z
YWZlR2V0KCksIGNoZWNrZWRCeXRlTGVuZ3RoLnVuc2FmZUdldCgpKTsKICAgICBpZiAoIXNsaWNl
KSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpPVVRfT0Zf
TUVNT1JZLCAiYnVmZmVyRGF0YSIsICJDb3VsZCBub3QgY3JlYXRlIGludGVybWVkaWF0ZSBBcnJh
eUJ1ZmZlclZpZXciKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxv
bmcgbG9uZyBvZmZzZXQsIGNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHNs
aWNlID0gVWludDhBcnJheTo6Y3JlYXRlKGRhdGEucG9zc2libHlTaGFyZWRCdWZmZXIoKSwgZGF0
YS5ieXRlT2Zmc2V0KCkgKyBjaGVja2VkQnl0ZVNyY09mZnNldC51bnNhZmVHZXQoKSwgY2hlY2tl
ZEJ5dGVMZW5ndGgudW5zYWZlR2V0KCkpOworICAgIGF1dG8gc2xpY2UgPSBVaW50OEFycmF5Ojp0
cnlDcmVhdGUoZGF0YS5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBkYXRhLmJ5dGVPZmZzZXQoKSAr
IGNoZWNrZWRCeXRlU3JjT2Zmc2V0LnVuc2FmZUdldCgpLCBjaGVja2VkQnl0ZUxlbmd0aC51bnNh
ZmVHZXQoKSk7CiAgICAgaWYgKCFzbGljZSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6T1VUX09GX01FTU9SWSwgImJ1ZmZlclN1YkRhdGEiLCAiQ291bGQg
bm90IGNyZWF0ZSBpbnRlcm1lZGlhdGUgQXJyYXlCdWZmZXJWaWV3Iik7CiAgICAgICAgIHJldHVy
bjsKQEAgLTQxMiw3ICs0MTIsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRJbnRlcm5hbGZvcm1hdFBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDMwogICAgICAgICBw
YXJhbXNbaV0gPSBzYW1wbGVzW2ldOwogI2VuZGlmCiAKLSAgICByZXR1cm4gSW50MzJBcnJheTo6
Y3JlYXRlKHBhcmFtcywgbnVtVmFsdWVzKTsKKyAgICByZXR1cm4gSW50MzJBcnJheTo6dHJ5Q3Jl
YXRlKHBhcmFtcywgbnVtVmFsdWVzKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0MzRGVudW0sIGNvbnN0IFZlY3RvcjxHQzNEZW51bT4m
KQpAQCAtMTc5NCw3ICsxNzk0LDcgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkNPTE9SX1dSSVRFTUFTSzoKICAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5BcnJheVBhcmFtZXRl
cihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09NUFJFU1NFRF9URVhUVVJF
X0ZPUk1BVFM6Ci0gICAgICAgIHJldHVybiBVaW50MzJBcnJheTo6Y3JlYXRlKG1fY29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXRzLmRhdGEoKSwgbV9jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMuc2l6ZSgp
KTsKKyAgICAgICAgcmV0dXJuIFVpbnQzMkFycmF5Ojp0cnlDcmVhdGUobV9jb21wcmVzc2VkVGV4
dHVyZUZvcm1hdHMuZGF0YSgpLCBtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5zaXplKCkpOwog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNVTExfRkFDRToKICAgICAgICAgcmV0dXJuIGdl
dEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNV
TExfRkFDRV9NT0RFOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNjIwYmRiMzBhMWI2MjkwNWMxMDI4YWMxYzMyZWRh
OGVjZGE2NjBhOC4uYWY3YTc3ZmRjMzg2MzYwYTUzY2I3YTU1YTQ4NDg0ZGJmYjU1ODRmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCkBAIC00NDQsNyArNDQ0LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRQYXJhbWV0ZXIoR0MzRGVudW0gcG5hbWUpCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6Q09MT1JfV1JJVEVNQVNLOgogICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhbkFycmF5UGFyYW1l
dGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT01QUkVTU0VEX1RFWFRV
UkVfRk9STUFUUzoKLSAgICAgICAgcmV0dXJuIFVpbnQzMkFycmF5OjpjcmVhdGUobV9jb21wcmVz
c2VkVGV4dHVyZUZvcm1hdHMuZGF0YSgpLCBtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5zaXpl
KCkpOworICAgICAgICByZXR1cm4gVWludDMyQXJyYXk6OnRyeUNyZWF0ZShtX2NvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0cy5kYXRhKCksIG1fY29tcHJlc3NlZFRleHR1cmVGb3JtYXRzLnNpemUoKSk7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q1VMTF9GQUNFOgogICAgICAgICByZXR1cm4g
Z2V0Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
Q1VMTF9GQUNFX01PREU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDg1NzRmY2ViZjk5MzMyZjIzNTEz
ZGIwYTdjMmQzZWEwYmVjODVjNjkuLmYxOGE4ZmJkMDkwZmI5NTRjOGRmZGM1OTI3NDc4MWZjYjNi
ZTllMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0yOTIyLDcgKzI5MjIsNyBAQCBXZWJHTEFueSBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3Jh
bSwgY29uc3QgV2ViRwogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtZnYob2JqZWN0
T3JaZXJvKHByb2dyYW0pLCBsb2NhdGlvbiwgdmFsdWUpOwogICAgICAgICBpZiAobGVuZ3RoID09
IDEpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWVbMF07Ci0gICAgICAgIHJldHVybiBGbG9hdDMy
QXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJh
eTo6dHJ5Q3JlYXRlKHZhbHVlLCBsZW5ndGgpOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlQ6IHsKICAgICAgICAgR0MzRGludCB2YWx1ZVs0XSA9IHswfTsKQEAgLTI5MzIs
NyArMjkzMiw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZv
cm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBjb25zdCBXZWJHCiAgICAgICAgICAgICBtX2NvbnRl
eHQtPmdldFVuaWZvcm1pdihvYmplY3RPclplcm8ocHJvZ3JhbSksIGxvY2F0aW9uLCB2YWx1ZSk7
CiAgICAgICAgIGlmIChsZW5ndGggPT0gMSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZVswXTsK
LSAgICAgICAgcmV0dXJuIEludDMyQXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKKyAgICAg
ICAgcmV0dXJuIEludDMyQXJyYXk6OnRyeUNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKICAgICB9CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTDogewogICAgICAgICBHQzNEaW50IHZhbHVl
WzRdID0gezB9OwpAQCAtMzAyOCw3ICszMDI4LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VmVydGV4QXR0cmliKEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmEK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfQVRUUklCX0FSUkFZX1RZUEU6CiAg
ICAgICAgIHJldHVybiBzdGF0ZS50eXBlOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNV
UlJFTlRfVkVSVEVYX0FUVFJJQjoKLSAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJheTo6Y3JlYXRl
KG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnZhbHVlLCA0KTsKKyAgICAgICAgcmV0dXJuIEZs
b2F0MzJBcnJheTo6dHJ5Q3JlYXRlKG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnZhbHVlLCA0
KTsKICAgICBkZWZhdWx0OgogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9FTlVNLCAiZ2V0VmVydGV4QXR0cmliIiwgImludmFsaWQgcGFyYW1ldGVy
IG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MjM1LDcgKzUyMzUsNyBAQCBS
ZWZQdHI8RmxvYXQzMkFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRXZWJHTEZs
b2F0QXJyYXlQYXJhbWV0ZXIoR0MzRAogICAgIGRlZmF1bHQ6CiAgICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAgICAgfQotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVu
Z3RoKTsKKyAgICByZXR1cm4gRmxvYXQzMkFycmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7
CiB9CiAKIFJlZlB0cjxJbnQzMkFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRX
ZWJHTEludEFycmF5UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQpAQCAtNTI1NCw3ICs1MjU0LDcg
QEAgUmVmUHRyPEludDMyQXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFdlYkdM
SW50QXJyYXlQYXJhbWV0ZXIoR0MzRGVudW0KICAgICBkZWZhdWx0OgogICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgIH0KLSAgICByZXR1cm4gSW50MzJBcnJheTo6Y3JlYXRlKHZhbHVlLCBs
ZW5ndGgpOworICAgIHJldHVybiBJbnQzMkFycmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7
CiB9CiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y2hlY2tUZXh0dXJlQ29tcGxl
dGVuZXNzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgYm9vbCBwcmVwYXJlVG9EcmF3KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNw
cAppbmRleCA1OTE1YTc3MzE2ZWQ4YTAzMGE0ZTZkM2FkNzQxMDRjMTc4Y2FkOWQyLi5iMzQwNDYz
YTM5YjM5NzNkZGI4MjNjMDBhMGMxNzNlNTUxZmM4ZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtMTAxNCw3ICsx
MDE0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmV4dHJhY3RLZXlV
UklLZXlJREFuZENlcnRpZmljYXRlRnJvbUluaXREYXQKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGluaXREYXRhQnVmZmVyID0gaW5pdERhdGEtPnVuc2hhcmVkQnVmZmVyKCk7CiAKICAgICAvLyBV
c2UgYSBEYXRhVmlldyB0byByZWFkIHVpbnQzMiB2YWx1ZXMgZnJvbSB0aGUgYnVmZmVyLCBhcyBV
aW50MzJBcnJheSByZXF1aXJlcyB0aGUgcmVhZHMgYmUgYWxpZ25lZCBvbiA0LWJ5dGUgYm91bmRh
cmllcy4gCi0gICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRhVmlldyA9IEpTQzo6RGF0
YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGluaXREYXRhQnVmZmVy
LT5ieXRlTGVuZ3RoKCkpOworICAgIGF1dG8gaW5pdERhdGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6
Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVM
ZW5ndGgoKSk7CiAgICAgdWludDMyX3Qgb2Zmc2V0ID0gMDsKICAgICBib29sIHN0YXR1cyA9IHRy
dWU7CiAKQEAgLTEwMjMsNyArMTAyMyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAg
aWYgKCFzdGF0dXMgfHwgb2Zmc2V0ICsga2V5VVJJTGVuZ3RoID4gaW5pdERhdGEtPmxlbmd0aCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWZQdHI8VWludDE2QXJyYXk+IGtleVVS
SUFycmF5ID0gVWludDE2QXJyYXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIG9m
ZnNldCwga2V5VVJJTGVuZ3RoKTsKKyAgICBhdXRvIGtleVVSSUFycmF5ID0gVWludDE2QXJyYXk6
OnRyeUNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIG9mZnNldCwga2V5VVJJTGVuZ3Ro
KTsKICAgICBpZiAoIWtleVVSSUFycmF5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEw
MzUsNyArMTAzNSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRy
YWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAgaWYgKCFzdGF0dXMg
fHwgb2Zmc2V0ICsga2V5SURMZW5ndGggPiBpbml0RGF0YS0+bGVuZ3RoKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxVaW50OEFycmF5PiBrZXlJREFycmF5ID0gVWludDhB
cnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgb2Zmc2V0LCBrZXlJRExlbmd0
aCk7CisgICAgYXV0byBrZXlJREFycmF5ID0gVWludDhBcnJheTo6dHJ5Q3JlYXRlKGluaXREYXRh
QnVmZmVyLmNvcHlSZWYoKSwgb2Zmc2V0LCBrZXlJRExlbmd0aCk7CiAgICAgaWYgKCFrZXlJREFy
cmF5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0
aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAgaWYgKCFzdGF0dXMgfHwgb2Zmc2V0ICsgY2VydGlmaWNh
dGVMZW5ndGggPiBpbml0RGF0YS0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGNlcnRpZmljYXRlID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZm
ZXIpLCBvZmZzZXQsIGNlcnRpZmljYXRlTGVuZ3RoKTsKKyAgICBjZXJ0aWZpY2F0ZSA9IFVpbnQ4
QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwgb2Zmc2V0LCBjZXJ0aWZp
Y2F0ZUxlbmd0aCk7CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Yu
Y3BwCmluZGV4IDMyMzJiNzM1YTMzMWFhZWRhZTRkMTcyMDg2NWIxODQwMjBhNmNjNDUuLjcwOWMw
ODBkNGZmYjAyMTNjOGRiNmZkZDRjOGJmNzhhN2UxMjU2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC05OSw3ICs5OSw3IEBA
IFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5
UmVxdWVzdChjb25zdCBTdHJpbmcmLCBVCiAgICAgZGVzdGluYXRpb25VUkwgPSBTdHJpbmcoKTsK
IAogICAgIGF1dG8ga2V5UmVxdWVzdEJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoQ0ZEYXRh
R2V0Qnl0ZVB0cihrZXlSZXF1ZXN0LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGtleVJlcXVlc3Qu
Z2V0KCkpKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoa2V5UmVxdWVz
dEJ1ZmZlciksIDAsIGtleVJlcXVlc3RCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgcmV0dXJu
IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGtleVJlcXVlc3RCdWZmZXIpLCAwLCBrZXlS
ZXF1ZXN0QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CmluZGV4IGU4MjQ0OWE1MGZjYzhlOWI4MTdmYzc3ZTJhYTNhMDE5NWY2YTEyMjYuLmE5MjYwMmZk
NjljZDM3ZjE4OWFkMzRjYmNjMWE0YzJkZWU3NDQ1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAt
MTg5MywxMiArMTg5MywxMiBAQCBib29sIEFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5n
T2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UgogICAgICAgICBSZWZQ
dHI8SlNDOjpEYXRhVmlldz4gaW5pdERhdGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGlu
aXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7
CiAgICAgICAgIGluaXREYXRhVmlldy0+c2V0PHVpbnQzMl90PigwLCBrZXlVUklTaXplLCB0cnVl
KTsKIAotICAgICAgICBSZWZQdHI8VWludDE2QXJyYXk+IGtleVVSSUFycmF5ID0gVWludDE2QXJy
YXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDQsIGtleVVSSS5sZW5ndGgoKSk7
CisgICAgICAgIGF1dG8ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRh
QnVmZmVyLmNvcHlSZWYoKSwgNCwga2V5VVJJLmxlbmd0aCgpKTsKICAgICAgICAga2V5VVJJQXJy
YXktPnNldFJhbmdlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihTdHJpbmdWaWV3
KGtleVVSSSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0KCkpLCBrZXlVUkkubGVuZ3RoKCkg
LyBzaXplb2YodW5zaWduZWQgY2hhciksIDApOwogCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5n
dGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwotICAgICAgICBSZWZQdHI8VWludDhB
cnJheT4gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShpbml0RGF0YUJ1ZmZl
ciksIDAsIGJ5dGVMZW5ndGgpOwotICAgICAgICBpZiAoIW1fb3duZXItPnBsYXllcigpLT5rZXlO
ZWVkZWQoaW5pdERhdGEuZ2V0KCkpKQorICAgICAgICBhdXRvIGluaXREYXRhID0gVWludDhBcnJh
eTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKKyAgICAg
ICAgaWYgKCFtX293bmVyLT5wbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBzZXRSZXF1ZXN0Rm9yS2V5KGtleVVS
SSwgYXZSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXggNWVkYWM0NjNjZGQyOWZlY2I4MDkyZjQ5
MTM3ZjhmMmM2MjZlMDMyYy4uZThkZDNiNWFlYzgyOTNjZDVlZDk2ZTk4ZjEwMzVlZTUzZTI4Yzdi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24ubW0KQEAgLTE2NSwxMCArMTY1LDEwIEBAIFJlZlB0cjxVaW50OEFycmF5
PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluCiAKICAgICBpZiAoIW1fY2VydGlmaWNhdGUpIHsKICAgICAgICAgU3RyaW5nIGNlcnRp
ZmljYXRlU3RyaW5nKCJjZXJ0aWZpY2F0ZSJfcyk7Ci0gICAgICAgIFJlZlB0cjxVaW50OEFycmF5
PiBhcnJheSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShjZXJ0aWZpY2F0ZVN0cmluZy5sZW5ndGgoKSk7
CisgICAgICAgIGF1dG8gYXJyYXkgPSBVaW50OEFycmF5OjpjcmVhdGUoY2VydGlmaWNhdGVTdHJp
bmcubGVuZ3RoKCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBsZW5ndGggPSBjZXJ0
aWZpY2F0ZVN0cmluZy5sZW5ndGgoKTsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgICAgICAgYXJy
YXktPnNldChpLCBjZXJ0aWZpY2F0ZVN0cmluZ1tpXSk7Ci0gICAgICAgIHJldHVybiBhcnJheTsK
KyAgICAgICAgcmV0dXJuIFdURk1vdmUoYXJyYXkpOwogICAgIH0KIAogICAgIGlmICghbV9rZXlS
ZXF1ZXN0KSB7CkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZDb250ZW50S2V5
U2Vzc2lvbjo6cmVsZWFzZUtleXMoKQogICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbklkID09IFN0
cmluZyhwbGF5YmFja1Nlc3Npb25JZFZhbHVlKSkgewogICAgICAgICAgICAgICAgIExPRyhNZWRp
YSwgIkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpyZWxlYXNlS2V5cyglcCkgLSBmb3Vu
ZCBzZXNzaW9uLCBzZW5kaW5nIGV4cGlyYXRpb24gbWVzc2FnZSIpOwogICAgICAgICAgICAgICAg
IG1fZXhwaXJlZFNlc3Npb24gPSBleHBpcmVkU2Vzc2lvbkRhdGE7Ci0gICAgICAgICAgICAgICAg
bV9jbGllbnQtPnNlbmRNZXNzYWdlKFVpbnQ4QXJyYXk6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oW21fZXhwaXJlZFNlc3Npb24gYnl0ZXNdKSwgW21fZXhwaXJlZFNlc3Npb24g
bGVuZ3RoXSkuZ2V0KCksIGVtcHR5U3RyaW5nKCkpOworICAgICAgICAgICAgICAgIG1fY2xpZW50
LT5zZW5kTWVzc2FnZShVaW50OEFycmF5OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KFttX2V4cGlyZWRTZXNzaW9uIGJ5dGVzXSksIFttX2V4cGlyZWRTZXNzaW9uIGxlbmd0aF0p
LnB0cigpLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpAQCAtMzAwLDcgKzMwMCw3IEBAIGJvb2wgQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5
PiYKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIG5leHRN
ZXNzYWdlID0gVWludDhBcnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihb
cmVxdWVzdERhdGEgYnl0ZXNdKSwgW3JlcXVlc3REYXRhIGxlbmd0aF0pOworICAgICAgICBuZXh0
TWVzc2FnZSA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oW3JlcXVlc3REYXRhIGJ5dGVzXSksIFtyZXF1ZXN0RGF0YSBsZW5ndGhdKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMzUwLDcgKzM1MCw3IEBAIFJlZlB0cjxVaW50OEFy
cmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVz
c2FnZSh1bnNpCiAgICAgZXJyb3JDb2RlID0gMDsKICAgICBzeXN0ZW1Db2RlID0gMDsKICAgICBt
X2V4cGlyZWRTZXNzaW9uID0gW2V4cGlyZWRTZXNzaW9ucyBmaXJzdE9iamVjdF07Ci0gICAgcmV0
dXJuIFVpbnQ4QXJyYXk6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW21fZXhw
aXJlZFNlc3Npb24gYnl0ZXNdKSwgW21fZXhwaXJlZFNlc3Npb24gbGVuZ3RoXSk7CisgICAgcmV0
dXJuIFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW21f
ZXhwaXJlZFNlc3Npb24gYnl0ZXNdKSwgW21fZXhwaXJlZFNlc3Npb24gbGVuZ3RoXSk7CiB9CiAK
IHZvaWQgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmRpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICprZXlSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA4MmY0
Y2RjMDcwZjUzYWQwN2U2YjliNWYyYzgzNDRmODgyNjNiMmFhLi5jYTE5YmFlMDhmZWM1ZmNjYmE1
N2U0OWFhMGY0ZWFmODcxM2U1Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtOTksOSArOTksOSBAQCBSZWZQdHI8
VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmVxdWVz
dChjb25zdCBTdHJpbmcmCiAgICAgc3lzdGVtQ29kZSA9IDA7CiAgICAgZGVzdGluYXRpb25VUkwg
PSBTdHJpbmcoKTsKIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2V5UmVxdWVzdEJ1ZmZlciA9
IEFycmF5QnVmZmVyOjpjcmVhdGUoW2tleVJlcXVlc3QuZ2V0KCkgYnl0ZXNdLCBba2V5UmVxdWVz
dC5nZXQoKSBsZW5ndGhdKTsKKyAgICBhdXRvIGtleVJlcXVlc3RCdWZmZXIgPSBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKFtrZXlSZXF1ZXN0LmdldCgpIGJ5dGVzXSwgW2tleVJlcXVlc3QuZ2V0KCkgbGVu
Z3RoXSk7CiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGtleVJlcXVlc3RCdWZmZXItPmJ5dGVM
ZW5ndGgoKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoa2V5UmVxdWVz
dEJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOworICAgIHJldHVybiBVaW50OEFycmF5Ojp0cnlDcmVh
dGUoV1RGTW92ZShrZXlSZXF1ZXN0QnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7CiB9CiAKIHZvaWQg
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OnJlbGVhc2VLZXlzKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVlN0cmVhbVNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCmluZGV4IDdiMjAy
ODEyMTA3MmRiNTcxMTdlYTYxMGUzM2FjMzQ0ZjEyZTExNDguLmUwMGY5NGRiNzc3MDY4YjM5ZDE1
NTg1MDg2ZDFkOTMwZWU5ZWVhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQpAQCAtMTIyLDEwICsxMjIsMTAgQEAgUmVmUHRy
PFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVz
dChjb25zdCBTdHJpbmcmIG0KICAgICB9CiAKICAgICBTdHJpbmcgY2VydGlmaWNhdGVTdHJpbmco
ImNlcnRpZmljYXRlIl9zKTsKLSAgICBSZWZQdHI8VWludDhBcnJheT4gYXJyYXkgPSBVaW50OEFy
cmF5OjpjcmVhdGUoY2VydGlmaWNhdGVTdHJpbmcubGVuZ3RoKCkpOworICAgIGF1dG8gYXJyYXkg
PSBVaW50OEFycmF5OjpjcmVhdGUoY2VydGlmaWNhdGVTdHJpbmcubGVuZ3RoKCkpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDAsIGxlbmd0aCA9IGNlcnRpZmljYXRlU3RyaW5nLmxlbmd0aCgpOyBp
IDwgbGVuZ3RoOyArK2kpCiAgICAgICAgIGFycmF5LT5zZXQoaSwgY2VydGlmaWNhdGVTdHJpbmdb
aV0pOwotICAgIHJldHVybiBhcnJheTsKKyAgICByZXR1cm4gV1RGTW92ZShhcnJheSk7CiB9CiAK
IHZvaWQgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMoKQpAQCAtMTU2LDcg
KzE1Niw3IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMoKQog
ICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbklkID09IFN0cmluZyhwbGF5YmFja1Nlc3Npb25JZFZh
bHVlKSkgewogICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVlN0cmVhbVNl
c3Npb246OnJlbGVhc2VLZXlzKCVwKSAtIGZvdW5kIHNlc3Npb24sIHNlbmRpbmcgZXhwaXJhdGlv
biBtZXNzYWdlIik7CiAgICAgICAgICAgICAgICAgbV9leHBpcmVkU2Vzc2lvbiA9IGV4cGlyZWRT
ZXNzaW9uRGF0YTsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UoVWludDhB
cnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbbV9leHBpcmVkU2Vzc2lv
biBieXRlc10pLCBbbV9leHBpcmVkU2Vzc2lvbiBsZW5ndGhdKS5nZXQoKSwgZW1wdHlTdHJpbmco
KSk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNlbmRNZXNzYWdlKFVpbnQ4QXJyYXk6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW21fZXhwaXJlZFNlc3Npb24gYnl0ZXNd
KSwgW21fZXhwaXJlZFNlc3Npb24gbGVuZ3RoXSkucHRyKCksIGVtcHR5U3RyaW5nKCkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zMzUsNyAr
MzM1LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246Omdl
bmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5zaWduZWQKICAgICBlcnJvckNvZGUgPSAwOwogICAg
IHN5c3RlbUNvZGUgPSAwOwogICAgIG1fZXhwaXJlZFNlc3Npb24gPSBbZXhwaXJlZFNlc3Npb25z
IGZpcnN0T2JqZWN0XTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihbbV9leHBpcmVkU2Vzc2lvbiBieXRlc10pLCBbbV9leHBpcmVkU2Vz
c2lvbiBsZW5ndGhdKTsKKyAgICByZXR1cm4gVWludDhBcnJheTo6dHJ5Q3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihbbV9leHBpcmVkU2Vzc2lvbiBieXRlc10pLCBbbV9leHBpcmVk
U2Vzc2lvbiBsZW5ndGhdKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZDQ0
YTA4N2E0Mjk5YWI2NTg1NmI4MjQ1NmE2MDlhYmIzMDhkNWMxYy4uZTAwYWUyZjJmZGU4YzE3YzIw
OWQ0NGYxOWQ4ZDY0YTZkZDAwMmY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xNzY0
LDE2ICsxNzY0LDE2IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgIC8vIENyZWF0
ZSBhbiBpbml0RGF0YSB3aXRoIHRoZSBmb2xsb3dpbmcgbGF5b3V0OgogICAgICAgICAvLyBbNCBi
eXRlczoga2V5VVJJIHNpemVdLCBba2V5VVJJIHNpemUgYnl0ZXM6IGtleVVSSV0KICAgICAgICAg
dW5zaWduZWQga2V5VVJJU2l6ZSA9IGtleVVSSS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcik7Ci0g
ICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gaW5pdERhdGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAxKTsKKyAgICAgICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9
IEFycmF5QnVmZmVyOjpjcmVhdGUoNCArIGtleVVSSVNpemUsIDEpOwogICAgICAgICB1bnNpZ25l
ZCBieXRlTGVuZ3RoID0gaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKTsKLSAgICAgICAgUmVm
UHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShp
bml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGJ5dGVMZW5ndGgpOworICAgICAgICBhdXRvIGlu
aXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVm
KCksIDAsIGJ5dGVMZW5ndGgpOwogICAgICAgICBpbml0RGF0YVZpZXctPnNldDx1aW50MzJfdD4o
MCwga2V5VVJJU2l6ZSwgdHJ1ZSk7CiAKLSAgICAgICAgUmVmUHRyPFVpbnQxNkFycmF5PiBrZXlV
UklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCA0
LCBrZXlVUkkubGVuZ3RoKCkpOworICAgICAgICBhdXRvIGtleVVSSUFycmF5ID0gVWludDE2QXJy
YXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDQsIGtleVVSSS5sZW5ndGgoKSk7
CiAgICAgICAgIGtleVVSSUFycmF5LT5zZXRSYW5nZShTdHJpbmdWaWV3KGtleVVSSSkudXBjb252
ZXJ0ZWRDaGFyYWN0ZXJzKCksIGtleVVSSS5sZW5ndGgoKSAvIHNpemVvZih1bnNpZ25lZCBjaGFy
KSwgMCk7CiAKLSAgICAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGluaXREYXRhID0gVWludDhBcnJh
eTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKLSAgICAg
ICAgaWYgKCFwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLmdldCgpKSkKKyAgICAgICAgYXV0
byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwg
MCwgYnl0ZUxlbmd0aCk7CisgICAgICAgIGlmICghcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0
YS5wdHIoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICAgICAgICAgbV9r
ZXlVUklUb1JlcXVlc3RNYXAuc2V0KGtleVVSSSwgYXZSZXF1ZXN0KTsKQEAgLTE4MDMsNyArMTgw
Myw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2Fp
dEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEu
Z2V0KCkpKQorICAgICAgICBpZiAoIXBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIG1fa2V5VVJJVG9SZXF1ZXN0
TWFwLnNldChrZXlJRCwgYXZSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U2FtcGxlQVZGT2JqQy5tbQppbmRleCAxODk4ZGNiNDgwN2RjM2Q0ZGVjYjRjMDNkZWJlNGVkZjg2
NzEyYjlmLi5jM2JjYTYxMDkwNTU0ZjgyOGI4NDgzOWFkNDA1NDlhNjI3YmZlNzQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCkBAIC0yOTQsNyArMjk0
LDcgQEAgUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IE1lZGlhU2FtcGxlQVZGT2JqQzo6
Z2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0CiAKICAgICB2b2lkKiBkYXRhID0gQ1ZQaXhlbEJ1ZmZl
ckdldEJhc2VBZGRyZXNzT2ZQbGFuZShyZ2JhUGl4ZWxCdWZmZXIuZ2V0KCksIDApOwogICAgIHNp
emVfdCBieXRlTGVuZ3RoID0gQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcikgKiBD
VlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZmZXIpICogNDsKLSAgICBhdXRvIHJlc3VsdCA9
IEpTQzo6VWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUo
ZGF0YSwgYnl0ZUxlbmd0aCksIDAsIGJ5dGVMZW5ndGgpOworICAgIGF1dG8gcmVzdWx0ID0gSlND
OjpVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZShk
YXRhLCBieXRlTGVuZ3RoKSwgMCwgYnl0ZUxlbmd0aCk7CiAKICAgICBzdGF0dXMgPSBDVlBpeGVs
QnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MocmdiYVBpeGVsQnVmZmVyLmdldCgpLCBrQ1ZQaXhlbEJ1
ZmZlckxvY2tfUmVhZE9ubHkpOwogICAgIEFTU0VSVChzdGF0dXMgPT0gbm9FcnIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpp
bmRleCBjZDM1NDc1OWVlNDRlMmYyMWI2M2JmYzI0MjliMDMyYWI1ZDNhZDM2Li4yMWY0YmM5YTUz
MDk1N2ZmOTg4MTQ4M2U0MjU2ZDUxZjNlYjBhMDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNjUwLDkgKzY1MCw5
IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURf
TUVESUEpCiAgICAgTE9HKE1lZGlhU291cmNlLCAiU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQo
JXApIC0gdHJhY2s6JWQiLCB0aGlzLCB0cmFja0lEKTsKICAgICBtX3Byb3RlY3RlZFRyYWNrSUQg
PSB0cmFja0lEOwotICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YUFycmF5ID0gVWludDhB
cnJheTo6Y3JlYXRlKFtpbml0RGF0YSBsZW5ndGhdKTsKKyAgICBhdXRvIGluaXREYXRhQXJyYXkg
PSBVaW50OEFycmF5OjpjcmVhdGUoW2luaXREYXRhIGxlbmd0aF0pOwogICAgIFtpbml0RGF0YSBn
ZXRCeXRlczppbml0RGF0YUFycmF5LT5kYXRhKCkgbGVuZ3RoOmluaXREYXRhQXJyYXktPmxlbmd0
aCgpXTsKLSAgICBtX21lZGlhU291cmNlLT5zb3VyY2VCdWZmZXJLZXlOZWVkZWQodGhpcywgaW5p
dERhdGFBcnJheS5nZXQoKSk7CisgICAgbV9tZWRpYVNvdXJjZS0+c291cmNlQnVmZmVyS2V5TmVl
ZGVkKHRoaXMsIGluaXREYXRhQXJyYXkucHRyKCkpOwogICAgIGlmIChhdXRvIHNlc3Npb24gPSBt
X21lZGlhU291cmNlLT5wbGF5ZXIoKS0+Y2RtU2Vzc2lvbigpKSB7CiAgICAgICAgIHNlc3Npb24t
PmFkZFBhcnNlcihtX3BhcnNlci5nZXQoKSk7CiAgICAgICAgIGhhc1Nlc3Npb25TZW1hcGhvcmUt
PnNpZ25hbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCA0NTZhZjc4NmQwOTI1OTAxN2M0
MzE3NWQyZDY0MDg3MTc2MmU4YTRlLi5jY2JiZTFmMTU2ZTBmOWUzYTBmMDMxZGE3Y2NlNDI4YTZm
ZWU5NGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtNDEyLDcgKzQxMiw3IEBAIFJlZlB0
cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IEludFJlY3QmIGxvZ2ljCiAgICAgaWYgKGFyZWEuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYXJlYS51bnNhZmVHZXQoKSk7CisgICAgYXV0byByZXN1bHQg
PSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChhcmVhLnVuc2FmZUdl
dCgpKTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0
YUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
RGF0YUNHLmNwcAppbmRleCBkNDJhYTM0NDhiMGJjMzdkZTZlNWYwODk2MzZkMTc5N2Q1NGZhMzc2
Li44NDc5ZDVkM2EyM2EwN2U4OWRmY2I4YmIyMDUyMGZhOTAzZWI3Mjk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRh
Q0cuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFn
ZUJ1ZmZlckRhdGE6OmdldERhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXQKICAgICBp
ZiAoYXJlYS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
YXV0byByZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChhcmVh
LnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKGFyZWEudW5zYWZlR2V0KCkpOwogICAgIHVpbnQ4X3QqIHJlc3Vs
dERhdGEgPSByZXN1bHQgPyByZXN1bHQtPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFyZXN1
bHREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKaW5k
ZXggOWE3OTk4ZDEzOTU5MzA5Mzc4NDc0MjYxODc2NjJhNzgxMDU2MDFmMi4uMTE4MDIzMTFlOWFl
YzFjOWI1ZjJkMDdhZmEyOWQ0NzEzMDYyYjY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKQEAg
LTUzMSw3ICs1MzEsNyBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQogCiAgICAgSW50U2l6ZSBwYWludFNpemUgPSBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUo
KTsKICAgICBwYWludFNpemUuc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7Ci0gICAgYXV0
byB0bXBJbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgo
cGFpbnRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIHRtcEltYWdlRGF0
YSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKChwYWludFNpemUu
YXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAgIGlmICghdG1wSW1hZ2VEYXRhKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCA2NmMzMGE5OGMyOGFlZDJmY2ZmNTE5
NjAyZDJjNDcxMzlmNzZhZWE4Li42ZTk4NmQ0ZWMyYTk3OTI5NjYzODRmYzU1MDc0YTJmOTcyYjU5
MGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnVubXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRS
ZWN0JiByZWN0KQogICAgIEludFNpemUgc2NhbGVkU2l6ZShyZWN0LnNpemUoKSk7CiAgICAgQVNT
RVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2NhbGVkU2l6ZSkpOwogICAgIHNj
YWxlZFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgYXV0byBpbWFnZURh
dGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgoc2NhbGVkU2l6ZS5h
cmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CisgICAgYXV0byBpbWFnZURhdGEgPSBVaW50OENsYW1w
ZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCgoc2NhbGVkU2l6ZS5hcmVhKCkgKiA0KS51
bnNhZmVHZXQoKSk7CiAgICAgaWYgKCFpbWFnZURhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCkBAIC0zMDMsNyArMzAzLDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJF
ZmZlY3Q6OnByZW11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBJbnRT
aXplIHNjYWxlZFNpemUocmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNp
emVOZWVkc0NsYW1waW5nKHNjYWxlZFNpemUpKTsKICAgICBzY2FsZWRTaXplLnNjYWxlKG1fZmls
dGVyLmZpbHRlclNjYWxlKCkpOwotICAgIGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJy
YXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoKHNjYWxlZFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0
KCkpOworICAgIGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWQoKHNjYWxlZFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAgIGlm
ICghaW1hZ2VEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjb3B5UHJlbXVsdGlw
bGllZFJlc3VsdCgqaW1hZ2VEYXRhLCByZWN0KTsKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIEZp
bHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVz
dGluYXRpb24sIGNvbnN0CiAgICAgICAgICAgICBJbnRTaXplIGlucHV0U2l6ZShtX2Fic29sdXRl
UGFpbnRSZWN0LnNpemUoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXpl
TmVlZHNDbGFtcGluZyhpbnB1dFNpemUpKTsKICAgICAgICAgICAgIGlucHV0U2l6ZS5zY2FsZSht
X2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgoaW5wdXRTaXpl
LmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKKyAgICAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1h
Z2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCgoaW5w
dXRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKICAgICAgICAgICAgIGlmICghbV91bm11
bHRpcGxpZWRJbWFnZVJlc3VsdCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxp
ZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdAogICAgICAgICAg
ICAgSW50U2l6ZSBpbnB1dFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgICAg
ICAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoaW5wdXRTaXplKSk7
CiAgICAgICAgICAgICBpbnB1dFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0g
ICAgICAgICAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5
OjpjcmVhdGVVbmluaXRpYWxpemVkKChpbnB1dFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkp
OworICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRB
cnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCgoaW5wdXRTaXplLmFyZWEoKSAqIDQpLnVuc2Fm
ZUdldCgpKTsKICAgICAgICAgICAgIGlmICghbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCkBAIC01MTUsNyArNTE1LDcgQEAg
VWludDhDbGFtcGVkQXJyYXkqIEZpbHRlckVmZmVjdDo6Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQoKQogICAgIEludFNpemUgcmVzdWx0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUo
KSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcocmVzdWx0U2l6
ZSkpOwogICAgIHJlc3VsdFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAg
bV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmlu
aXRpYWxpemVkKChyZXN1bHRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKKyAgICBtX3Vu
bXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQoKHJlc3VsdFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAgIHJldHVy
biBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgpOwogfQogCkBAIC01MzEsNyArNTMxLDcg
QEAgVWludDhDbGFtcGVkQXJyYXkqIEZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZElt
YWdlUmVzdWx0KCkKICAgICBJbnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5z
aXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJlc3Vs
dFNpemUpKTsKICAgICByZXN1bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwot
ICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQoKHJlc3VsdFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOworICAg
IG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQoKHJlc3VsdFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAg
IHJldHVybiBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURp
cmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRhdGFEaXJlY3QyRC5jcHAKaW5kZXggZjBlMjU4MDkyMDUzODU0Y2Q1MTU5NmM3ZTA3MTc1
OWVmN2NiZjVhOC4uMDI3NWY5ZGM5YmU5NjhmMDcwNjYzNGVjMmIzY2U4NWQwMjlkZTU1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVy
RGF0YURpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKEFscGhhUHJlbXVsdGlw
bGljYXRpb24sIGNvbnN0CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5
OjpjcmVhdGVVbmluaXRpYWxpemVkKG51bUJ5dGVzLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIHJl
c3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKG51bUJ5dGVz
LnVuc2FmZUdldCgpKTsKICAgICB1bnNpZ25lZCBjaGFyKiByZXN1bHREYXRhID0gcmVzdWx0ID8g
cmVzdWx0LT5kYXRhKCkgOiBudWxscHRyOwogICAgIGlmICghcmVzdWx0RGF0YSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0KaW5kZXgg
ZGMwZDQxYzAxZjBjODEzMzBjOGI1Y2UwYjFhZGRmOGE0ZDVlNTc5ZS4uZTk5N2IzNmE3YjRhNTBh
MTYzM2FiMGFlYWFmNmFhMWI3OGY1ZGI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlv
bk1hYy5tbQpAQCAtMTkwLDcgKzE5MCw3IEBAIHN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aERp
Y3Rpb25hcnlJbkNvbnRleHQoTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5LCBKU0NvbnRlCiAgICAg
ICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIG5h
bWUgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGtleSk7CisgICAgICAgIGF1dG8gbmFtZSA9IE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoa2V5KTsKICAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0
eShbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCByZXN1bHRPYmplY3QsIG5hbWUuZ2V0KCks
IFt2YWx1ZSBKU1ZhbHVlUmVmXSwgMCwgJmV4Y2VwdGlvbik7CiAgICAgICAgIGlmIChleGNlcHRp
b24pCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCmluZGV4IGQ0YWEyMDU0NjNlODhmZTc1
MDc2ZjJhODA3ZWY5MmQyMDNlOWJlOTEuLmU1NGJhMzc2ZGE2MTY2NDU3YzIzMjg5NzE4MTRjZmYz
ODVmYTZlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrQm94LmNwcApAQCAtNDksNyArNDksNyBAQCBNb2NrQm94OjpNb2NrQm94KEFy
cmF5QnVmZmVyKiBkYXRhKQogU3RyaW5nIE1vY2tCb3g6OnBlZWtUeXBlKEFycmF5QnVmZmVyKiBk
YXRhKQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBSZWZQdHI8SW50OEFycmF5
PiBhcnJheSA9IEpTQzo6SW50OEFycmF5OjpjcmVhdGUoZGF0YSwgMCwgNCk7CisgICAgYXV0byBh
cnJheSA9IEpTQzo6SW50OEFycmF5OjpjcmVhdGUoZGF0YSwgMCwgNCk7CiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCA0OyArK2kpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFycmF5LT5pdGVtKGkp
KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpAQCAtNTcsNyArNTcsNyBAQCBTdHJp
bmcgTW9ja0JveDo6cGVla1R5cGUoQXJyYXlCdWZmZXIqIGRhdGEpCiAKIHNpemVfdCBNb2NrQm94
OjpwZWVrTGVuZ3RoKEFycmF5QnVmZmVyKiBkYXRhKQogewotICAgIFJlZlB0cjxKU0M6OkRhdGFW
aWV3PiB2aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGRhdGEsIDAsIGRhdGEtPmJ5dGVMZW5n
dGgoKSk7CisgICAgYXV0byB2aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGRhdGEsIDAsIGRh
dGEtPmJ5dGVMZW5ndGgoKSk7CiAgICAgcmV0dXJuIHZpZXctPmdldDx1aW50MzJfdD4oNCwgdHJ1
ZSk7CiB9CiAKQEAgLTY2LDExICs2NiwxMSBAQCBNb2NrVHJhY2tCb3g6Ok1vY2tUcmFja0JveChB
cnJheUJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQobV9sZW5ndGggPT0gMTcpOwogCi0gICAg
UmVmUHRyPEpTQzo6RGF0YVZpZXc+IHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoZGF0YSwg
MCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBhdXRvIHZpZXcgPSBKU0M6OkRhdGFWaWV3Ojpj
cmVhdGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3RyYWNrSUQgPSB2aWV3
LT5nZXQ8aW50MzJfdD4oOCwgdHJ1ZSk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0g
ICAgUmVmUHRyPEludDhBcnJheT4gYXJyYXkgPSBKU0M6OkludDhBcnJheTo6Y3JlYXRlKGRhdGEs
IDEyLCA0KTsKKyAgICBhdXRvIGFycmF5ID0gSlNDOjpJbnQ4QXJyYXk6OmNyZWF0ZShkYXRhLCAx
MiwgNCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpCiAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGFycmF5LT5pdGVtKGkpKTsKICAgICBtX2NvZGVjID0gYnVpbGRlci50b1N0cmluZygp
OwpAQCAtODksNyArODksNyBAQCBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6Ok1vY2tJbml0aWFsaXph
dGlvbkJveChBcnJheUJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQobV9sZW5ndGggPj0gMTMp
OwogCi0gICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVh
dGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBhdXRvIHZpZXcgPSBKU0M6OkRh
dGFWaWV3OjpjcmVhdGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpbnQzMl90
IHRpbWVWYWx1ZSA9IHZpZXctPmdldDxpbnQzMl90Pig4LCB0cnVlKTsKICAgICBpbnQzMl90IHRp
bWVTY2FsZSA9IHZpZXctPmdldDxpbnQzMl90PigxMiwgdHJ1ZSk7CiAgICAgbV9kdXJhdGlvbiA9
IE1lZGlhVGltZSh0aW1lVmFsdWUsIHRpbWVTY2FsZSk7CkBAIC0xMTgsNyArMTE4LDcgQEAgTW9j
a1NhbXBsZUJveDo6TW9ja1NhbXBsZUJveChBcnJheUJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NF
UlQobV9sZW5ndGggPT0gMzApOwogCi0gICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IHZpZXcgPSBK
U0M6OkRhdGFWaWV3OjpjcmVhdGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBh
dXRvIHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0
aCgpKTsKICAgICBpbnQzMl90IHRpbWVTY2FsZSA9IHZpZXctPmdldDxpbnQzMl90Pig4LCB0cnVl
KTsKIAogICAgIGludDMyX3QgdGltZVZhbHVlID0gdmlldy0+Z2V0PGludDMyX3Q+KDEyLCB0cnVl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggNjgzMmQw
OWI4NzViZTNkNDcwODhjYmQ2Y2VlNWU5ZWM3MWY1MTI0MS4uYjc1N2Y5Zjk1ZDZjOTU5NTE5YWMw
NjViNGUwZjAzZWJhNTFkNjc2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZS5jcHAKQEAgLTE4OSw2ICsxODksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBl
OjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIEludFJlY3QoSW50UG9p
bnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOwogCiAgICAgICAgIFJlZlB0cjxVaW50OENsYW1wZWRB
cnJheT4gcGl4ZWxBcnJheSA9IGltYWdlQnVmZmVyLT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEo
SW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHBpeGVsQXJyYXkpOwogICAgICAgICB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoID0g
cGl4ZWxBcnJheS0+bGVuZ3RoKCk7CiAgICAgICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlPZmZzZXQg
PSAzOyAvLyBFYWNoIHBpeGVsIGlzIGZvdXIgYnl0ZXM6IFJHQkEuCiAgICAgICAgIHVpbnQ4X3Qg
YWxwaGFQaXhlbFRocmVzaG9sZCA9IHRocmVzaG9sZCAqIDI1NTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCmluZGV4IDM4OTBjMGZhYmM0N2U1OTBlNWIxYWJiZDM1ZDJm
OTkyYzQ2NWE3NDcuLjY0Mjg3ZDIzOWFmNTczZTkyMDNkMjU4NDMxYjI3M2M3Yjg3NDkwMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcApAQCAtNzksMjUgKzc5LDI1
IEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lNb2NrQ0RNOjpjcmVh
dGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DCiBzdGF0aWMgVWludDhBcnJheSogaW5pdERhdGFQ
cmVmaXgoKQogewogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgcHJlZml4RGF0YVtdID0geyAnbScs
ICdvJywgJ2MnLCAnaycgfTsKLSAgICBzdGF0aWMgVWludDhBcnJheSogcHJlZml4ID0gVWludDhB
cnJheTo6Y3JlYXRlKHByZWZpeERhdGEsIFdURl9BUlJBWV9MRU5HVEgocHJlZml4RGF0YSkpLmxl
YWtSZWYoKTsKKyAgICBzdGF0aWMgVWludDhBcnJheSYgcHJlZml4IHsgVWludDhBcnJheTo6Y3Jl
YXRlKHByZWZpeERhdGEsIFdURl9BUlJBWV9MRU5HVEgocHJlZml4RGF0YSkpLmxlYWtSZWYoKSB9
OwogCi0gICAgcmV0dXJuIHByZWZpeDsKKyAgICByZXR1cm4gJnByZWZpeDsKIH0KIAogc3RhdGlj
IFVpbnQ4QXJyYXkqIGtleVByZWZpeCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo
YXIgcHJlZml4RGF0YVtdID0geydrJywgJ2UnLCAneSd9OwotICAgIHN0YXRpYyBVaW50OEFycmF5
KiBwcmVmaXggPSBVaW50OEFycmF5OjpjcmVhdGUocHJlZml4RGF0YSwgV1RGX0FSUkFZX0xFTkdU
SChwcmVmaXhEYXRhKSkubGVha1JlZigpOworICAgIHN0YXRpYyBVaW50OEFycmF5JiBwcmVmaXgg
eyBVaW50OEFycmF5OjpjcmVhdGUocHJlZml4RGF0YSwgV1RGX0FSUkFZX0xFTkdUSChwcmVmaXhE
YXRhKSkubGVha1JlZigpIH07CiAKLSAgICByZXR1cm4gcHJlZml4OworICAgIHJldHVybiAmcHJl
Zml4OwogfQogCiBzdGF0aWMgVWludDhBcnJheSoga2V5UmVxdWVzdCgpCiB7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGNoYXIgcmVxdWVzdERhdGFbXSA9IHsncicsICdlJywgJ3EnLCAndScs
ICdlJywgJ3MnLCAndCd9OwotICAgIHN0YXRpYyBVaW50OEFycmF5KiByZXF1ZXN0ID0gVWludDhB
cnJheTo6Y3JlYXRlKHJlcXVlc3REYXRhLCBXVEZfQVJSQVlfTEVOR1RIKHJlcXVlc3REYXRhKSku
bGVha1JlZigpOworICAgIHN0YXRpYyBVaW50OEFycmF5JiByZXF1ZXN0IHsgVWludDhBcnJheTo6
Y3JlYXRlKHJlcXVlc3REYXRhLCBXVEZfQVJSQVlfTEVOR1RIKHJlcXVlc3REYXRhKSkubGVha1Jl
ZigpIH07CiAKLSAgICByZXR1cm4gcmVxdWVzdDsKKyAgICByZXR1cm4gJnJlcXVlc3Q7CiB9CiAK
IHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVTZXNzaW9uSWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tTdHJpbmcuY3BwCmluZGV4IDc4ZGU2MWU5OGE3NzkyNzgyYzUwMmE0MDQ3OGNiM2FkZDIx
NWIxMDUuLjc2N2FhOGQ5MTRiMGNmNzUxOTZlMjBjMzYzYjgwNjM4ZmZkN2QzZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAKQEAgLTEzNiw1ICsxMzYsNSBAQCBXS1N0
cmluZ1JlZiBXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhKU1N0cmluZ1JlZiBqc1N0cmluZ1Jl
ZikKIEpTU3RyaW5nUmVmIFdLU3RyaW5nQ29weUpTU3RyaW5nKFdLU3RyaW5nUmVmIHN0cmluZ1Jl
ZikKIHsKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICByZXR1cm4gT3BhcXVl
SlNTdHJpbmc6OmNyZWF0ZSh0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nKCkpLmxlYWtSZWYoKTsK
KyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSh0b0ltcGwoc3RyaW5nUmVmKS0+
c3RyaW5nKCkpLmxlYWtSZWYoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAK
aW5kZXggMjlmYjAxZTIwYzQwMDg0ZjM5YTkzOTc2MTk3ZWRhODU1NDNjOWZjMS4uZWZhMDM0MTQw
MmEwYWYzN2JiMTJlM2U5ZjQzNGZjZjJjNTIzM2ZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIEpTT2JqZWN0UmVmIHRvSlNBcnJh
eShKU0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgVmVjdG9yPFQ+JiBkYXRhLCBKU1ZhbHUKIAog
c3RhdGljIGlubGluZSBKU1ZhbHVlUmVmIHRvSlNWYWx1ZShKU0NvbnRleHRSZWYgY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNv
bnRleHQsIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoc3RyaW5nKS5nZXQoKSk7CisgICAgcmV0dXJu
IEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoc3Ry
aW5nKS5nZXQoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZVJlZiBjYWxsUHJvcGVydHlG
dW5jdGlvbihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0LCBjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTk2LDcgKzk2LDcgQEAg
c3RhdGljIGlubGluZSBKU1ZhbHVlUmVmIGNhbGxQcm9wZXJ0eUZ1bmN0aW9uKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZgogICAgIEFTU0VSVF9BUkcob2JqZWN0LCBvYmplY3QpOwog
ICAgIEFTU0VSVF9BUkcob2JqZWN0LCBKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgb2JqZWN0KSk7
CiAKLSAgICBKU09iamVjdFJlZiBmdW5jdGlvbiA9IGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KEpT
T2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgb2JqZWN0LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRl
KHByb3BlcnR5TmFtZSkuZ2V0KCksIGV4Y2VwdGlvbikpOworICAgIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uID0gY29uc3RfY2FzdDxKU09iamVjdFJlZj4oSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0
LCBvYmplY3QsIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUocHJvcGVydHlOYW1lKS5nZXQoKSwg
ZXhjZXB0aW9uKSk7CiAgICAgQVNTRVJUKEpTT2JqZWN0SXNGdW5jdGlvbihjb250ZXh0LCBmdW5j
dGlvbikpOwogCiAgICAgcmV0dXJuIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgZnVu
Y3Rpb24sIG9iamVjdCwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLCBleGNlcHRpb24pOwpAQCAt
MTc3LDcgKzE3Nyw3IEBAIEpTT2JqZWN0UmVmIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNj
cmlwdE9iamVjdEZvckZyYW1lKFdlYkZyYW1lJiBmcmFtZSkKIAogICAgIFN0cmluZyBzY3JpcHQg
PSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5U2NyaXB0U291cmNlLCBzaXplb2YoV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlwdFNv
dXJjZSkpOwogCi0gICAgSlNPYmplY3RSZWYgc2NyaXB0T2JqZWN0RnVuY3Rpb24gPSBjb25zdF9j
YXN0PEpTT2JqZWN0UmVmPihKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIE9wYXF1ZUpTU3RyaW5n
OjpjcmVhdGUoc2NyaXB0KS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgJmV4Y2VwdGlvbikp
OworICAgIEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdEZ1bmN0aW9uID0gY29uc3RfY2FzdDxKU09i
amVjdFJlZj4oSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3Jl
YXRlKHNjcmlwdCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIDAsICZleGNlcHRpb24pKTsKICAg
ICBBU1NFUlQoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHNjcmlwdE9iamVjdEZ1bmN0aW9uKSk7
CiAKICAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdID0geyBzZXNzaW9uSWRlbnRpZmllciwgZXZh
bHVhdGVGdW5jdGlvbiwgY3JlYXRlVVVJREZ1bmN0aW9uIH07CkBAIC0yODAsNyArMjgwLDcgQEAg
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
bih1aW50NjRfdCBwYWdlSUQsIHVpbnQKIAogICAgIFN0cmluZyBleGNlcHRpb25NZXNzYWdlOwog
ICAgIGlmIChKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgZXhjZXB0aW9uKSkgewotICAgICAgICBK
U1ZhbHVlUmVmIG5hbWVWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgY29uc3Rf
Y2FzdDxKU09iamVjdFJlZj4oZXhjZXB0aW9uKSwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZSgibmFt
ZSJfcykuZ2V0KCksIG51bGxwdHIpOworICAgICAgICBKU1ZhbHVlUmVmIG5hbWVWYWx1ZSA9IEpT
T2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgY29uc3RfY2FzdDxKU09iamVjdFJlZj4oZXhjZXB0
aW9uKSwgT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSgibmFtZSJfcykuZ2V0KCksIG51bGxwdHIp
OwogICAgICAgICBhdXRvIGV4Y2VwdGlvbk5hbWUgPSBhZG9wdFJlZihKU1ZhbHVlVG9TdHJpbmdD
b3B5KGNvbnRleHQsIG5hbWVWYWx1ZSwgbnVsbHB0cikpLT5zdHJpbmcoKTsKICAgICAgICAgaWYg
KGV4Y2VwdGlvbk5hbWUgPT0gIk5vZGVOb3RGb3VuZCIpCiAgICAgICAgICAgICBlcnJvclR5cGUg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50
VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpOb2Rl
Tm90Rm91bmQpOwpAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgcGFnZUlELCB1aW50CiAg
ICAgICAgIGVsc2UgaWYgKGV4Y2VwdGlvbk5hbWUgPT0gIkludmFsaWRTZWxlY3RvciIpCiAgICAg
ICAgICAgICBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVy
czo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
RXJyb3JNZXNzYWdlOjpJbnZhbGlkU2VsZWN0b3IpOwogCi0gICAgICAgIEpTVmFsdWVSZWYgbWVz
c2FnZVZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBjb25zdF9jYXN0PEpTT2Jq
ZWN0UmVmPihleGNlcHRpb24pLCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKCJtZXNzYWdlIl9zKS5n
ZXQoKSwgbnVsbHB0cik7CisgICAgICAgIEpTVmFsdWVSZWYgbWVzc2FnZVZhbHVlID0gSlNPYmpl
Y3RHZXRQcm9wZXJ0eShjb250ZXh0LCBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihleGNlcHRpb24p
LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCJtZXNzYWdlIl9zKS5nZXQoKSwgbnVsbHB0cik7
CiAgICAgICAgIGV4Y2VwdGlvbk1lc3NhZ2UgPSBhZG9wdFJlZihKU1ZhbHVlVG9TdHJpbmdDb3B5
KGNvbnRleHQsIG1lc3NhZ2VWYWx1ZSwgbnVsbHB0cikpLT5zdHJpbmcoKTsKICAgICB9IGVsc2UK
ICAgICAgICAgZXhjZXB0aW9uTWVzc2FnZSA9IGFkb3B0UmVmKEpTVmFsdWVUb1N0cmluZ0NvcHko
Y29udGV4dCwgZXhjZXB0aW9uLCBudWxscHRyKSktPnN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggM2QxZmU3NWE5
MDBiN2IyNTZjN2UyNTM5ZTAyM2IzYTczZjcxZjk2NS4uNDliMjIyNTQwNWI4MmY4MThkM2VmYzAy
NzU0OWU0MzllYmQ5MTdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xMTE4LDcgKzExMTgsNyBAQCB2b2lkIFBERlBsdWdp
bjo6cnVuU2NyaXB0c0luUERGRG9jdW1lbnQoKQogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjdHgg
PSBKU0dsb2JhbENvbnRleHRDcmVhdGUoMCk7CiAgICAgSlNPYmplY3RSZWYganNQREZEb2MgPSBt
YWtlSlNQREZEb2MoY3R4KTsKICAgICBmb3IgKGF1dG8mIHNjcmlwdCA6IHNjcmlwdHMpCi0gICAg
ICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHNjcmlwdC5n
ZXQoKSkuZ2V0KCksIGpzUERGRG9jLCBudWxscHRyLCAwLCBudWxscHRyKTsKKyAgICAgICAgSlNF
dmFsdWF0ZVNjcmlwdChjdHgsIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoc2NyaXB0LmdldCgp
KS5nZXQoKSwganNQREZEb2MsIG51bGxwdHIsIDAsIG51bGxwdHIpOwogICAgIEpTR2xvYmFsQ29u
dGV4dFJlbGVhc2UoY3R4KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Vmlldy9XZWJQREZWaWV3SU9TLm1tCmluZGV4IDE4NDFiOTg1Yzg1MGNhZjA0Mzc0YWE4MTNhMjA1
MGJkZjAwNDU3YTcuLmY4YjY2YTNiNzRjZTFmMzI1MDE1Yzk1ZjdhZGNjOTk1ZDdmZThmNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0K
QEAgLTMyNiw3ICszMjYsNyBAQCAtICh2b2lkKWZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNl
OihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjdHgg
PSBKU0dsb2JhbENvbnRleHRDcmVhdGUoMCk7CiAgICAgSlNPYmplY3RSZWYganNQREZEb2MgPSBt
YWtlSlNQREZEb2MoY3R4LCBkYXRhU291cmNlKTsKICAgICBmb3IgKE5TU3RyaW5nICpzY3JpcHQg
aW4gc2NyaXB0cykKLSAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIE9wYXF1ZUpTU3RyaW5n
OjpjcmVhdGUoc2NyaXB0KS5nZXQoKSwganNQREZEb2MsIG51bGxwdHIsIDAsIG51bGxwdHIpOwor
ICAgICAgICBKU0V2YWx1YXRlU2NyaXB0KGN0eCwgT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShz
Y3JpcHQpLmdldCgpLCBqc1BERkRvYywgbnVsbHB0ciwgMCwgbnVsbHB0cik7CiAgICAgSlNHbG9i
YWxDb250ZXh0UmVsZWFzZShjdHgpOwogCiAgICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5OllFU107
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQ
bGFjZWhvbGRlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmll
d1BsYWNlaG9sZGVyLm1tCmluZGV4IDFlODZiYTA3NDRiNDRmZjY0ZDI0MTY3YmU3ODQ4YWFmN2U5
NTdlMzMuLmU4ZWE1MmMwZTVkZDU3ZDhiZWJiNjE3Njk2NDM3ZTNlMjI1ZGI5ZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNl
aG9sZGVyLm1tCkBAIC0zMDcsNyArMzA3LDcgQEAgLSAodm9pZClfZXZhbHVhdGVKU0ZvckRvY3Vt
ZW50OihDR1BERkRvY3VtZW50UmVmKXBkZkRvY3VtZW50CiAgICAgICAgIEpTR2xvYmFsQ29udGV4
dFJlZiBjdHggPSBKU0dsb2JhbENvbnRleHRDcmVhdGUoMCk7CiAgICAgICAgIEpTT2JqZWN0UmVm
IGpzUERGRG9jID0gbWFrZUpTUERGRG9jKGN0eCwgX2RhdGFTb3VyY2UpOwogICAgICAgICBmb3Ig
KE5TU3RyaW5nICpzY3JpcHQgaW4gc2NyaXB0cykKLSAgICAgICAgICAgIEpTRXZhbHVhdGVTY3Jp
cHQoY3R4LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHNjcmlwdCkuZ2V0KCksIGpzUERGRG9jLCBu
dWxscHRyLCAwLCBudWxscHRyKTsKKyAgICAgICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4LCBP
cGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHNjcmlwdCkuZ2V0KCksIGpzUERGRG9jLCBudWxscHRy
LCAwLCBudWxscHRyKTsKICAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShjdHgpOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERG
UmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBE
RlJlcHJlc2VudGF0aW9uLm1tCmluZGV4IGFhZGZlZDIxOGZjZWY0YjEyZmI4OWFhNzc3YTE5NGY1
ZmQyN2EwNDUuLjM0NjhkZGRjZDRhNzdiYmE3Mzg2OWE4Nzk3NDc1OTEwOGNlZjM2NWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNl
bnRhdGlvbi5tbQpAQCAtMTM0LDcgKzEzNCw3IEBAIC0gKHZvaWQpZmluaXNoZWRMb2FkaW5nV2l0
aERhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCiAgICAgSlNHbG9iYWxDb250
ZXh0UmVmIGN0eCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZSgwKTsKICAgICBKU09iamVjdFJlZiBq
c1BERkRvYyA9IG1ha2VKU1BERkRvYyhjdHgsIGRhdGFTb3VyY2UpOwogICAgIGZvciAoTlNTdHJp
bmcgKnNjcmlwdCBpbiBzY3JpcHRzKQotICAgICAgICBKU0V2YWx1YXRlU2NyaXB0KGN0eCwgT3Bh
cXVlSlNTdHJpbmc6OmNyZWF0ZShzY3JpcHQpLmdldCgpLCBqc1BERkRvYywgbnVsbHB0ciwgMCwg
bnVsbHB0cik7CisgICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4LCBPcGFxdWVKU1N0cmluZzo6
dHJ5Q3JlYXRlKHNjcmlwdCkuZ2V0KCksIGpzUERGRG9jLCBudWxscHRyLCAwLCBudWxscHRyKTsK
ICAgICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKGN0eCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351969</attachid>
            <date>2018-10-10 09:58:49 -0700</date>
            <delta_ts>2018-10-10 09:58:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190429-20181011015847.patch</filename>
            <type>text/plain</type>
            <size>127247</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NWRkYTc3YTg1YTkxNzUyZTZkNjZjM2U4MGI2NGEwZjE4YzRhNzIyLi44ZWU5ODNjZTJmNDUzNmRj
NWMxOGZhZmQ4NWY2ODAxMGZmMmFkYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjQgQEAKKzIwMTgtMTAtMTAgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xv
d3N0YXJ0Lm9yZz4KKworICAgICAgICBbSlNDXSBSZW5hbWUgY3JlYXRlWFhYIHRvIHRyeUNyZWF0
ZVhYWCBpZiBpdCBjYW4gcmV0dXJuIFJlZlB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU29tZSBjcmVhdGVYWFggZnVuY3Rpb25zIGNhbiBmYWlsLiBC
dXQgc29tZXRpbWVzIHRoZSBjYWxsZXIgZG9lcyBub3QgcGVyZm9ybSBlcnJvciBjaGVja2luZy4K
KyAgICAgICAgVG8gbWFrZSBpdCBleHBsaWNpdCB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBjYW4gZmFp
bCwgd2UgcmVuYW1lIHRoZXNlIGZ1bmN0aW9ucyBmcm9tIGNyZWF0ZVhYWAorICAgICAgICB0byB0
cnlDcmVhdGVYWFguIEluIHRoaXMgcGF0Y2gsIHdlIGZvY3VzIG9uIG5vbi1KUy1tYW5hZ2VkIGZh
Y3RvcnkgZnVuY3Rpb25zLiBJZiB0aGUgZmFjdG9yeQorICAgICAgICBmdW5jdGlvbiBkb2VzIG5v
dCBmYWlsLCBpdCBzaG91bGQgcmV0dXJuIFJlZjw+LiBPdGhlcndpc2UsIGl0IHNob3VsZCBiZSBu
YW1lZCBhcyB0cnlDcmVhdGVYWFgKKyAgICAgICAgYW5kIGl0IHNob3VsZCByZXR1cm4gUmVmUHRy
PD4uCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWlubHkgZm9jdXNlcyBvbiBUeXBlZEFycmF5IGZh
Y3RvcnkgZnVuY3Rpb25zLiBQcmV2aW91c2x5LCB0aGVzZSBmdW5jdGlvbnMgYXJlCisgICAgICAg
IGBSZWZQdHI8WFhYQXJyYXk+IGNyZWF0ZSguLi4pYC4gVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZW0g
dG8gYFJlZlB0cjxYWFhBcnJheT4gdHJ5Q3JlYXRlKC4uLilgLgorICAgICAgICBBbmQgd2UgYWxz
byBpbnRyb2R1Y2UgYFJlZjxYWFhBcnJheT4gY3JlYXRlKC4uLilgIGZ1bmN0aW9uIHdoaWNoIGlu
dGVybmFsbHkgcGVyZm9ybXMKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQgb24gdGhlIHJlc3VsdCBv
ZiBgdHJ5Q3JlYXRlKC4uLilgLgorCisgICAgICAgIEFuZCB3ZSBhbHNvIGNvbnZlcnQgT3BhcXVl
SlNTdHJpbmc6OmNyZWF0ZSB0byBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlIHNpbmNlIGl0IGNh
biBmYWlsLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFjdHVhbGx5IGZpbmRzIG9uZSBwbGFjZSB3
aGljaCBkb2VzIG5vdCBwZXJmb3JtIGFueSBudWxsIGNoZWNraW5ncyB3aGlsZSBpdCB1c2VzCisg
ICAgICAgIGBSZWZQdHI8PiBjcmVhdGUoLi4uKWAgZnVuY3Rpb24uCisKKyAgICAgICAgKiBBUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpwdXRCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Y2FsbGJhY2tHZXR0ZXIpOgorICAgICAgICAqIEFQSS9KU0NsYXNzUmVmLmg6CisgICAg
ICAgIChTdGF0aWNWYWx1ZUVudHJ5OjpTdGF0aWNWYWx1ZUVudHJ5KToKKyAgICAgICAgKiBBUEkv
SlNDb250ZXh0Lm1tOgorICAgICAgICAoLVtKU0NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6d2l0aFNv
dXJjZVVSTDpdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IHNldE5hbWU6XSk6CisgICAgICAgICog
QVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRDb3B5TmFtZSk6
CisgICAgICAgIChKU0NvbnRleHRDcmVhdGVCYWNrdHJhY2UpOgorICAgICAgICAqIEFQSS9KU09i
amVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAqIEFQSS9KU1N0cmluZ1JlZi5jcHA6
CisgICAgICAgIChKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KToKKyAgICAgICAg
KiBBUEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdSZWd1bGFy
RXhwcmVzc2lvbkZyb21QYXR0ZXJuOmZsYWdzOmluQ29udGV4dDpdKToKKyAgICAgICAgKCtbSlNW
YWx1ZSB2YWx1ZVdpdGhOZXdFcnJvckZyb21NZXNzYWdlOmluQ29udGV4dDpdKToKKyAgICAgICAg
KCtbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdTeW1ib2xGcm9tRGVzY3JpcHRpb246aW5Db250ZXh0Ol0p
OgorICAgICAgICAocGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uKToKKyAgICAgICAgKC1bSlNWYWx1
ZSBpbnZva2VNZXRob2Q6d2l0aEFyZ3VtZW50czpdKToKKyAgICAgICAgKGNvbnRhaW5lclZhbHVl
VG9PYmplY3QpOgorICAgICAgICAob2JqZWN0VG9WYWx1ZVdpdGhvdXRDb3B5KToKKyAgICAgICAg
KG9iamVjdFRvVmFsdWUpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmNwcDoKKyAgICAgICAg
KEpTVmFsdWVDcmVhdGVKU09OU3RyaW5nKToKKyAgICAgICAgKEpTVmFsdWVUb1N0cmluZ0NvcHkp
OgorICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmluZy5jcHA6CisgICAgICAgIChPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUpOiBEZWxl
dGVkLgorICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmluZy5oOgorICAgICAgICAqIEFQSS9nbGli
L0pTQ0NvbnRleHQuY3BwOgorICAgICAgICAoZXZhbHVhdGVTY3JpcHRJbkNvbnRleHQpOgorICAg
ICAgICAqIEFQSS9nbGliL0pTQ1ZhbHVlLmNwcDoKKyAgICAgICAgKGpzY192YWx1ZV9uZXdfc3Ry
aW5nX2Zyb21fYnl0ZXMpOgorICAgICAgICAqIGZ0bC9GVExMYXp5U2xvd1BhdGguaDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpMYXp5U2xvd1BhdGg6OmNyZWF0ZUdlbmVyYXRvcik6CisgICAgICAgICog
ZnRsL0ZUTExhenlTbG93UGF0aENhbGwuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpjcmVhdGVMYXp5
Q2FsbEdlbmVyYXRvcik6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXQuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6Ok9TUkV4aXREZXNjcmlwdG9yOjplbWl0T1NSRXhpdCk6CisgICAgICAgIChKU0M6
OkZUTDo6T1NSRXhpdERlc2NyaXB0b3I6OmVtaXRPU1JFeGl0TGF0ZXIpOgorICAgICAgICAoSlND
OjpGVEw6Ok9TUkV4aXREZXNjcmlwdG9yOjpwcmVwYXJlT1NSRXhpdEhhbmRsZSk6CisgICAgICAg
ICogZnRsL0ZUTE9TUkV4aXQuaDoKKyAgICAgICAgKiBmdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlv
bkhhbmRsZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxl
OjpjcmVhdGVIYW5kbGUpOgorICAgICAgICAqIGZ0bC9GVExQYXRjaHBvaW50RXhjZXB0aW9uSGFu
ZGxlLmg6CisgICAgICAgICogaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg6CisgICAgICAg
IChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRWRlblRpbWVyKToKKyAgICAgICAg
KEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIGhlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oOgorICAgICAgICAoSlNDOjpHQ0Fj
dGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUZ1bGxUaW1lcik6CisgICAgICAgIChKU0M6OkdDQWN0
aXZpdHlDYWxsYmFjazo6Y3JlYXRlRnVsbFRpbWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFw
L0dDQWN0aXZpdHlDYWxsYmFjay5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAg
IChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAqIGluc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2Uu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpBc3luY1N0YWNrVHJhY2U6OmNyZWF0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5oOgorICAgICAgICAqIGpzYy5jcHA6Cisg
ICAgICAgIChmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKiBydW50aW1l
L0FycmF5QnVmZmVyLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcu
aDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0
aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6cG9zc2li
bHlTaGFyZWRJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6cG9zc2libHlTaGFyZWRUeXBlZEltcGwpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBlZEltcGwpOgorICAgICAgICAqIHdhc20v
V2FzbU1lbW9yeS5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAqIHdhc20vV2Fz
bU1lbW9yeS5oOgorICAgICAgICAqIHdhc20vV2FzbVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6VGFibGU6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6Oldhc206OlRhYmxlOjpjcmVh
dGUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbVRhYmxlLmg6CisgICAgICAgICogd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVt
b3J5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1lbW9yeTo6SlNXZWJBc3NlbWJs
eU1lbW9yeSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeSk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6
OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2Vi
QXNzZW1ibHlUYWJsZSk6CisKIDIwMTgtMTAtMDkgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNob3cgcmVkaXJlY3QgcmVxdWVzdHMg
aW4gTmV0d29yayBhbmQgVGltZWxpbmVzIHRhYnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NjMzYTRjNTQ3MGM0
YWVhY2NkMTRlOWJiODQ2NjM1OTZkMGZiMTliLi5mMWJlYmJhYWZhOTJiMjhiMWQ3NTc1OGMxZDI3
MWNmMjI2MWM5ZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE0IEBACisyMDE4LTEwLTEwICBZ
dXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgW0pT
Q10gUmVuYW1lIGNyZWF0ZVhYWCB0byB0cnlDcmVhdGVYWFggaWYgaXQgY2FuIHJldHVybiBSZWZQ
dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDQy
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBg
dHJ5Q3JlYXRlYCBvciBuZXcgYGNyZWF0ZWAuIElmIHdlIHVzZSBuZXcgYGNyZWF0ZWAsIHdlIGNh
biB1c2UgUmVmPD4gYW5kIHJlbW92ZSBudWxsIGNoZWNrLgorCisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVNlc3Npb25DbGVhcktleTo6Y2FjaGVkS2V5Rm9yS2V5SUQgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0J1ZmZlcjo6QXVkaW9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9C
dWZmZXI6OmdldENoYW5uZWxEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSRXllUGFy
YW1ldGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWUkV5ZVBhcmFtZXRlcnM6Om9mZnNldCBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjptYXRyaXhUb0FycmF5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSUG9z
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcHRpb25hbEZsb2F0M1RvSlNDQXJyYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6VlJQb3NlOjpwb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWUlBvc2U6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZS
U3RhZ2VQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZSU3RhZ2VQYXJhbWV0ZXJz
OjpzaXR0aW5nVG9TdGFuZGluZ1RyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6ZW5xdWV1ZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNs
b25lRGVzZXJpYWxpemVyOjpyZWFkQXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBjcnlwdG8v
Z2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9L
ZXlSU0E6OmFsZ29yaXRobSBjb25zdCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9LZXlS
U0FNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjphbGdvcml0aG0gY29u
c3QpOgorICAgICAgICAqIGNzcy9ET01NYXRyaXhSZWFkT25seS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01NYXRyaXhSZWFkT25seTo6dG9GbG9hdDMyQXJyYXkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NTWF0cml4UmVhZE9ubHk6OnRvRmxvYXQ2NEFycmF5IGNvbnN0KToKKyAgICAg
ICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmNyZWF0
ZSk6CisgICAgICAgICogZG9tL1RleHRFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRFbmNvZGVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6SW1hZ2VEYXRhKToKKyAgICAgICAgKiBodG1s
L0ltYWdlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRWZXJ0ZXhBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFdlYkdMSW50QXJyYXlQ
YXJhbWV0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0
ZUZyb21Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JM
b2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAgICAgIChXZWJD
b3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpyZWxlYXNl
S2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6
dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
OjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpnZW5lcmF0ZUtleVJlcXVl
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVlN0cmVhbVNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZT
dHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
U2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1w
bGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpnZXRS
R0JBSW1hZ2VEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldElt
YWdlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRh
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRSZXN1bHQpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdl
UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlw
bGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEYXRhRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRh
OjpnZXREYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpqc1ZhbHVlV2l0aERp
Y3Rpb25hcnlJbkNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tUcmFja0JveDo6TW9ja1RyYWNrQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJbml0aWFs
aXphdGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9uQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tTYW1wbGVCb3g6Ok1vY2tTYW1wbGVCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMv
U2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKToK
KyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aW5pdERhdGFQcmVmaXgpOgorICAgICAgICAoV2ViQ29yZTo6a2V5UHJlZml4KToKKyAgICAgICAg
KFdlYkNvcmU6OmtleVJlcXVlc3QpOgorCiAyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8eXVz
dWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CiAKICAgICAgICAgWE1MSHR0cFJlcXVlc3Qgc2hvdWxk
IHVzZSByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZC9yZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQg
aW5zdGVhZCBvZiBkZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmVmMDUw
YTA4NGFkODVkYmFjMDg3N2MwMWVhNTkzMjk1NDg0MGQ1OS4uMGEzYzg0ZmMwMzA3MGNlM2ZjMTlj
MzdkZjk3Yjk3M2JkZTdiN2YwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0xMC0x
MCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAg
IFtKU0NdIFJlbmFtZSBjcmVhdGVYWFggdG8gdHJ5Q3JlYXRlWFhYIGlmIGl0IGNhbiByZXR1cm4g
UmVmUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTA0MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgYHRyeUNyZWF0ZWAgb3IgbmV3IGBjcmVhdGVgLiBJZiB3ZSB1c2UgbmV3IGBjcmVhdGVgLCB3
ZSBjYW4gdXNlIFJlZjw+IGFuZCByZW1vdmUgbnVsbCBjaGVjay4KKworICAgICAgICAqIFNoYXJl
ZC9BUEkvYy9XS1N0cmluZy5jcHA6CisgICAgICAgIChXS1N0cmluZ0NvcHlKU1N0cmluZyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0Ojp0b0pTVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpjYWxs
UHJvcGVydHlGdW5jdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OnNjcmlwdE9iamVjdEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OnJ1blNjcmlwdHNJblBERkRvY3VtZW50KToKKwogMjAxOC0xMC0wOSAgQW50b2lu
ZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgZnJhbWVz
KCkgdGltaW5nIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggOGFmM2Mz
Y2Q1NWNlYTZmNTBkMzc1ODAxZGI3ZmI5MWRmZTljNjdkNS4uNmU2YTNlMzM3MDM5MjdmZDRmMGY5
MjgwNmEwODc1ZDQ4MzQ4MjJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dz
dGFydC5vcmc+CisKKyAgICAgICAgW0pTQ10gUmVuYW1lIGNyZWF0ZVhYWCB0byB0cnlDcmVhdGVY
WFggaWYgaXQgY2FuIHJldHVybiBSZWZQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBgdHJ5Q3JlYXRlYCBvciBuZXcgYGNyZWF0ZWAuIElmIHdl
IHVzZSBuZXcgYGNyZWF0ZWAsIHdlIGNhbiB1c2UgUmVmPD4gYW5kIHJlbW92ZSBudWxsIGNoZWNr
LgorCisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tOgorICAgICAgICAoLVtXZWJQ
REZWaWV3IGZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOl0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3UGxhY2Vo
b2xkZXIgX2V2YWx1YXRlSlNGb3JEb2N1bWVudDpdKToKKwogMjAxOC0xMC0wMiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bnVz
ZWQgbGlua2VkLW9uLW9yLWJlZm9yZS1pT1M1IGNoZWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggZDU0YTI3YzZmZGJiMGRjZDdlMTA1MDZlNTk3ZjVmZWQxMDM1YjVlNC4uMzhhNjlm
ZjZiZDAzMWQ3OTFiZWVjZDYwOTVjYjAzYTdiYTI5MTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8eXVz
dWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgW0pTQ10gUmVuYW1lIGNyZWF0ZVhY
WCB0byB0cnlDcmVhdGVYWFggaWYgaXQgY2FuIHJldHVybiBSZWZQdHIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDQyOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBgdHJ5Q3JlYXRlYCBvciBuZXcg
YGNyZWF0ZWAuIElmIHdlIHVzZSBuZXcgYGNyZWF0ZWAsIHdlIGNhbiB1c2UgUmVmPD4gYW5kIHJl
bW92ZSBudWxsIGNoZWNrLgorCisgICAgICAgICogV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlv
bi5tbToKKyAgICAgICAgKC1bV2ViUERGUmVwcmVzZW50YXRpb24gZmluaXNoZWRMb2FkaW5nV2l0
aERhdGFTb3VyY2U6XSk6CisKIDIwMTgtMTAtMDggIEp1c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWJHUFU6IFJlbmFtZSBvbGQgV2ViR1BVIHByb3RvdHlwZSB0
byBXZWJNZXRhbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCAxNWI4NjA4NjZkZWE5MjI4NGI3OGEwZDcwN2Q4MDE2
NjU5ODc3MWQxLi40ZjRiN2Q3MWVlMDkyOTU1N2MyOGUyMGI4YWQ4N2MzZGI1ZTdjYmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5j
dGlvbnMuaApAQCAtMTU1LDcgKzE1NSw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBlCiAgICAg
ICAgICAgICAvLyBvcHRpb25hbCBvcHRpbWl6YXRpb24gdG8gYnlwYXNzIGdldFByb3BlcnR5IGlu
IGNhc2VzIHdoZW4gd2Ugb25seSBuZWVkIHRvIGtub3cgaWYgdGhlIHByb3BlcnR5IGV4aXN0cwog
ICAgICAgICAgICAgaWYgKEpTT2JqZWN0SGFzUHJvcGVydHlDYWxsYmFjayBoYXNQcm9wZXJ0eSA9
IGpzQ2xhc3MtPmhhc1Byb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5h
bWVSZWYpCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3Ry
aW5nOjpjcmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9
IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobmFtZSk7CiAgICAgICAgICAgICAgICAgSlNMb2Nr
OjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGV4ZWMpOwogICAgICAgICAgICAgICAgIGlmICho
YXNQcm9wZXJ0eShjdHgsIHRoaXNSZWYsIHByb3BlcnR5TmFtZVJlZi5nZXQoKSkpIHsKICAgICAg
ICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBjYWxsYmFja0dldHRl
cik7CkBAIC0xNjMsNyArMTYzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGUKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgaWYgKEpTT2JqZWN0R2V0UHJvcGVydHlDYWxs
YmFjayBnZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPmdldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYpCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFt
ZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAg
IHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobmFtZSk7CiAgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWYgdmFsdWU7CiAgICAgICAgICAgICAgICAgewpAQCAtMjUyLDcgKzI1Miw3IEBAIGJv
b2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0g
dGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVu
dENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIHNl
dFByb3BlcnR5ID0ganNDbGFzcy0+c2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAo
IXByb3BlcnR5TmFtZVJlZikKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lUmVmID0g
T3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVy
dHlOYW1lUmVmID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShuYW1lKTsKICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgYm9vbCByZXN1
bHQ7CiAgICAgICAgICAgICAgICAgewpAQCAtMzE2LDcgKzMxNiw3IEBAIGJvb2wgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lCiAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFz
c1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAg
ICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBzZXRQcm9wZXJ0eSA9IGpzQ2xhc3Mt
PnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKLSAgICAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWYgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHByb3Bl
cnR5TmFtZS5pbXBsKCkpOworICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1
ZUpTU3RyaW5nOjp0cnlDcmVhdGUocHJvcGVydHlOYW1lLmltcGwoKSk7CiAgICAgICAgICAgICBK
U1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICBib29sIHJlc3VsdDsKICAgICAg
ICAgICAgIHsKQEAgLTM3NSw3ICszNzUsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBybwogICAg
ICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpz
Q2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgaWYg
KEpTT2JqZWN0RGVsZXRlUHJvcGVydHlDYWxsYmFjayBkZWxldGVQcm9wZXJ0eSA9IGpzQ2xhc3Mt
PmRlbGV0ZVByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYp
Ci0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjpj
cmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1
ZUpTU3RyaW5nOjp0cnlDcmVhdGUobmFtZSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBl
eGNlcHRpb24gPSAwOwogICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0OwogICAgICAgICAgICAg
ICAgIHsKQEAgLTY3OSw3ICs2NzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZAogICAgICAg
ICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmotPmNsYXNzUmVmKCk7IGpzQ2xhc3M7
IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2Jq
ZWN0R2V0UHJvcGVydHlDYWxsYmFjayBnZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPmdldFByb3BlcnR5
KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYpCi0gICAgICAgICAgICAg
ICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUobmFtZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlD
cmVhdGUobmFtZSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwog
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgdmFsdWU7CiAgICAgICAgICAgICAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaAppbmRleCBmYTAyNGQzNDRmNDZjNTFiYWQy
MGUxNTQwZmFmZTkyYWE1YWNjMTk1Li45MGM0ZjUzOTAwNWM4MmIwZTIzYWI5MTIwNzY5OWFlYTRh
MDM5YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaApAQCAtMzcsNyAr
MzcsMTAgQEAgc3RydWN0IFN0YXRpY1ZhbHVlRW50cnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFN0YXRpY1ZhbHVlRW50cnkoSlNPYmplY3RHZXRQcm9wZXJ0
eUNhbGxiYWNrIF9nZXRQcm9wZXJ0eSwgSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIF9zZXRQ
cm9wZXJ0eSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgX2F0dHJpYnV0ZXMsIFN0cmluZyYgcHJvcGVy
dHlOYW1lKQotICAgIDogZ2V0UHJvcGVydHkoX2dldFByb3BlcnR5KSwgc2V0UHJvcGVydHkoX3Nl
dFByb3BlcnR5KSwgYXR0cmlidXRlcyhfYXR0cmlidXRlcyksIHByb3BlcnR5TmFtZVJlZihPcGFx
dWVKU1N0cmluZzo6Y3JlYXRlKHByb3BlcnR5TmFtZSkpCisgICAgICAgIDogZ2V0UHJvcGVydHko
X2dldFByb3BlcnR5KQorICAgICAgICAsIHNldFByb3BlcnR5KF9zZXRQcm9wZXJ0eSkKKyAgICAg
ICAgLCBhdHRyaWJ1dGVzKF9hdHRyaWJ1dGVzKQorICAgICAgICAsIHByb3BlcnR5TmFtZVJlZihP
cGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHByb3BlcnR5TmFtZSkpCiAgICAgewogICAgIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggN2Y4NTY5NjVlMjg3
NzExNzlhYjQ4ZmJlMDNiMzgxZTI3YjM4OTkxNS4uMjc1NjZmNDFiOTdlMWIzOWJkZGU5YjQ4YWFh
NTU5ZjE0Y2I3MzllYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHQubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAg
LTEwMCw4ICsxMDAsOCBAQCAtIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICop
c2NyaXB0CiAtIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0IHdp
dGhTb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMCiB7CiAgICAgSlNWYWx1ZVJlZiBleGNlcHRp
b25WYWx1ZSA9IG51bGxwdHI7Ci0gICAgYXV0byBzY3JpcHRKUyA9IE9wYXF1ZUpTU3RyaW5nOjpj
cmVhdGUoc2NyaXB0KTsKLSAgICBhdXRvIHNvdXJjZVVSTEpTID0gT3BhcXVlSlNTdHJpbmc6OmNy
ZWF0ZShbc291cmNlVVJMIGFic29sdXRlU3RyaW5nXSk7CisgICAgYXV0byBzY3JpcHRKUyA9IE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoc2NyaXB0KTsKKyAgICBhdXRvIHNvdXJjZVVSTEpTID0g
T3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShbc291cmNlVVJMIGFic29sdXRlU3RyaW5nXSk7CiAg
ICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU0V2YWx1YXRlU2NyaXB0KG1fY29udGV4dCwgc2NyaXB0
SlMuZ2V0KCksIG51bGxwdHIsIHNvdXJjZVVSTEpTLmdldCgpLCAwLCAmZXhjZXB0aW9uVmFsdWUp
OwogCiAgICAgaWYgKGV4Y2VwdGlvblZhbHVlKQpAQCAtMjAwLDcgKzIwMCw3IEBAIC0gKE5TU3Ry
aW5nICopbmFtZQogCiAtICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIEpT
R2xvYmFsQ29udGV4dFNldE5hbWUobV9jb250ZXh0LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKG5h
bWUpLmdldCgpKTsKKyAgICBKU0dsb2JhbENvbnRleHRTZXROYW1lKG1fY29udGV4dCwgT3BhcXVl
SlNTdHJpbmc6OnRyeUNyZWF0ZShuYW1lKS5nZXQoKSk7CiB9CiAKIC0gKEJPT0wpX3JlbW90ZUlu
c3BlY3Rpb25FbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5j
cHAKaW5kZXggZjNjMGZkMWM3ZTA2ZDM0MzAwMmMxNGUzZWNhYTMwNjQzZDI3MmFkNy4uZTE4ZGZk
MjFmZjI4NDAwN2QwMDM5ZTY0MzJkOWVjM2M0ZjFmMzE3NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIEpTU3RyaW5nUmVm
IEpTR2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCiAgICAgaWYg
KG5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIE9wYXF1ZUpT
U3RyaW5nOjpjcmVhdGUobmFtZSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmlu
Zzo6dHJ5Q3JlYXRlKG5hbWUpLmxlYWtSZWYoKTsKIH0KIAogdm9pZCBKU0dsb2JhbENvbnRleHRT
ZXROYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUpCkBAIC0zMTYs
NyArMzE2LDcgQEAgSlNTdHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQ29udGV4
dFJlZiBjdHgsIHVuc2lnbmVkIG1heFN0YWNrU2l6ZSkKICAgICBCYWNrdHJhY2VGdW5jdG9yIGZ1
bmN0b3IoYnVpbGRlciwgbWF4U3RhY2tTaXplKTsKICAgICBmcmFtZS0+aXRlcmF0ZShmdW5jdG9y
KTsKIAotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGJ1aWxkZXIudG9TdHJpbmco
KSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGJ1aWxk
ZXIudG9TdHJpbmcoKSkubGVha1JlZigpOwogfQogCiBib29sIEpTR2xvYmFsQ29udGV4dEdldFJl
bW90ZUluc3BlY3Rpb25FbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IGQ4ZDJkZjEwMDRhYTMzZWU5MWM3
NDJhOWIxMDY3ZDU4ZDA1ZTBjYWYuLjUxMTY5YzRkNGQ4YjU4YjRkNDY1NWJiMWY1YzU4NmVmZTM5
MzRkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC04
MjAsNyArODIwLDcgQEAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBKU09iamVjdENvcHlQcm9wZXJ0
eU5hbWVzKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG8KICAgICBzaXplX3Qgc2l6ZSA9
IGFycmF5LnNpemUoKTsKICAgICBwcm9wZXJ0eU5hbWVzLT5hcnJheS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHNpemUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAg
ICAgICBwcm9wZXJ0eU5hbWVzLT5hcnJheS51bmNoZWNrZWRBcHBlbmQoT3BhcXVlSlNTdHJpbmc6
OmNyZWF0ZShhcnJheVtpXS5zdHJpbmcoKSkucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIHBy
b3BlcnR5TmFtZXMtPmFycmF5LnVuY2hlY2tlZEFwcGVuZChPcGFxdWVKU1N0cmluZzo6dHJ5Q3Jl
YXRlKGFycmF5W2ldLnN0cmluZygpKS5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgIHJldHVybiBK
U1Byb3BlcnR5TmFtZUFycmF5UmV0YWluKHByb3BlcnR5TmFtZXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAppbmRleCAzM2Y1OWEzNjMzNDE3MWIxNDU1NmM2
YmUzMzQ4ZjZjMTIwMTJmMTcyLi5iYjcyMGRiZThkNzFhODI4ZGQ4NmQ4ZmQ3OGE5ZTM1OGRmM2E3
MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtOTks
NyArOTksNyBAQCBKU1NjcmlwdFJlZiBKU1NjcmlwdENyZWF0ZVJlZmVyZW5jaW5nSW1tb3J0YWxB
U0NJSVRleHQoSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dAogICAgIFBhcnNlckVycm9yIGVycm9y
OwogICAgIGlmICghcGFyc2VTY3JpcHQodm0sIFNvdXJjZUNvZGUocmVzdWx0LmNvcHlSZWYoKSks
IGVycm9yKSkgewogICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKQotICAgICAgICAgICAgKmVycm9y
TWVzc2FnZSA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoZXJyb3IubWVzc2FnZSgpKS5sZWFrUmVm
KCk7CisgICAgICAgICAgICAqZXJyb3JNZXNzYWdlID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0
ZShlcnJvci5tZXNzYWdlKCkpLmxlYWtSZWYoKTsKICAgICAgICAgaWYgKGVycm9yTGluZSkKICAg
ICAgICAgICAgICplcnJvckxpbmUgPSBlcnJvci5saW5lKCk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMTIxLDcgKzEyMSw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0
cmluZyhKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0R3JvdXAsIEpTU3RyaW5nUmVmCiAgICAgUGFy
c2VyRXJyb3IgZXJyb3I7CiAgICAgaWYgKCFwYXJzZVNjcmlwdCh2bSwgU291cmNlQ29kZShyZXN1
bHQuY29weVJlZigpKSwgZXJyb3IpKSB7CiAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpCi0gICAg
ICAgICAgICAqZXJyb3JNZXNzYWdlID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShlcnJvci5tZXNz
YWdlKCkpLmxlYWtSZWYoKTsKKyAgICAgICAgICAgICplcnJvck1lc3NhZ2UgPSBPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKGVycm9yLm1lc3NhZ2UoKSkubGVha1JlZigpOwogICAgICAgICBpZiAo
ZXJyb3JMaW5lKQogICAgICAgICAgICAgKmVycm9yTGluZSA9IGVycm9yLmxpbmUoKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTU3RyaW5nUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYu
Y3BwCmluZGV4IDE2ODNhYWU1OTUyOTM5MDI0NWFhZmFjMGJhMzFiYjg3MjAwYjlmMzYuLmU2NDRm
MWFiN2E3ZjRmYmUxZjY5YjIwYjcxZjMxNGEyZjAyNTU0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwCkBAIC02Miw3ICs2Miw3IEBAIEpTU3RyaW5nUmVmIEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnN0IGNoYXIqIHN0cmluZykKIEpTU3RyaW5n
UmVmIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoY29uc3QgSlNDaGFyKiBjaGFy
cywgc2l6ZV90IG51bUNoYXJzKQogewogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBy
ZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY2hhcnMpLCBudW1DaGFycykpLmxl
YWtSZWYoKTsKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShTdHJpbmdJbXBs
OjpjcmVhdGVXaXRob3V0Q29weWluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY2hh
cnMpLCBudW1DaGFycykpLmxlYWtSZWYoKTsKIH0KIAogSlNTdHJpbmdSZWYgSlNTdHJpbmdSZXRh
aW4oSlNTdHJpbmdSZWYgc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCmlu
ZGV4IGQ3OTc0MmFmMzc0ZmI4NTVlZTk0ZWU2M2Y0ZTkxZWQ0MzY0ZmUwNTAuLjllNTM0YjBhZWIw
NTFmMzQ2YjM0YWQxYzY3NzQ0OWMzYWVkMzAyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWUubW0KQEAgLTEyNiwxNSArMTI2LDE1IEBAICsgKEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdB
cnJheUluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogCiArIChKU1ZhbHVlICopdmFsdWVX
aXRoTmV3UmVndWxhckV4cHJlc3Npb25Gcm9tUGF0dGVybjooTlNTdHJpbmcgKilwYXR0ZXJuIGZs
YWdzOihOU1N0cmluZyAqKWZsYWdzIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogewot
ICAgIGF1dG8gcGF0dGVyblN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocGF0dGVybik7
Ci0gICAgYXV0byBmbGFnc1N0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoZmxhZ3MpOwor
ICAgIGF1dG8gcGF0dGVyblN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUocGF0dGVy
bik7CisgICAgYXV0byBmbGFnc1N0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoZmxh
Z3MpOwogICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzWzJdID0geyBKU1ZhbHVlTWFrZVN0cmluZyhb
Y29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBwYXR0ZXJuU3RyaW5nLmdldCgpKSwgSlNWYWx1
ZU1ha2VTdHJpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgZmxhZ3NTdHJpbmcuZ2V0
KCkpIH07CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6SlNPYmplY3RN
YWtlUmVnRXhwKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIDIsIGFyZ3VtZW50cywgMCkg
aW5Db250ZXh0OmNvbnRleHRdOwogfQogCiArIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3RXJyb3JG
cm9tTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGluQ29udGV4dDooSlNDb250ZXh0ICopY29u
dGV4dAogewotICAgIGF1dG8gc3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShtZXNzYWdl
KTsKKyAgICBhdXRvIHN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobWVzc2FnZSk7
CiAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudCA9IEpTVmFsdWVNYWtlU3RyaW5nKFtjb250ZXh0IEpT
R2xvYmFsQ29udGV4dFJlZl0sIHN0cmluZy5nZXQoKSk7CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZh
bHVlV2l0aEpTVmFsdWVSZWY6SlNPYmplY3RNYWtlRXJyb3IoW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSwgMSwgJmFyZ3VtZW50LCAwKSBpbkNvbnRleHQ6Y29udGV4dF07CiB9CkBAIC0xNTEs
NyArMTUxLDcgQEAgKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDooSlND
b250ZXh0ICopY29udGV4dAogCiArIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3U3ltYm9sRnJvbURl
c2NyaXB0aW9uOihOU1N0cmluZyAqKWRlc2NyaXB0aW9uIGluQ29udGV4dDooSlNDb250ZXh0ICop
Y29udGV4dAogewotICAgIGF1dG8gc3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShkZXNj
cmlwdGlvbik7CisgICAgYXV0byBzdHJpbmcgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGRl
c2NyaXB0aW9uKTsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpKU1Zh
bHVlTWFrZVN5bWJvbChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBzdHJpbmcuZ2V0KCkp
IGluQ29udGV4dDpjb250ZXh0XTsKIH0KIApAQCAtMjkyLDcgKzI5Miw3IEBAIGlubGluZSBFeHBl
Y3RlZDxSZXN1bHQsIEpTVmFsdWVSZWY+IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbihOU1N0cmlu
Z0Z1bmN0aW9uIHN0CiAgICAgUmVzdWx0IHJlc3VsdDsKICAgICAvLyBJZiBpdCdzIGEgTlNTdHJp
bmcgYWxyZWFkeSwgcmVkdWNlIGluZGlyZWN0aW9uIGFuZCBqdXN0IHBhc3MgdGhlIE5TU3RyaW5n
LgogICAgIGlmIChbcHJvcGVydHlLZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkg
ewotICAgICAgICBhdXRvIG5hbWUgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKChOU1N0cmluZyAq
KXByb3BlcnR5S2V5KTsKKyAgICAgICAgYXV0byBuYW1lID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNy
ZWF0ZSgoTlNTdHJpbmcgKilwcm9wZXJ0eUtleSk7CiAgICAgICAgIHJlc3VsdCA9IHN0cmluZ0Z1
bmN0aW9uKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZS5nZXQoKSwg
YXJndW1lbnRzLi4uLCAmZXhjZXB0aW9uKTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzdWx0ID0g
anNGdW5jdGlvbihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIFtbSlNWYWx1
ZSB2YWx1ZVdpdGhPYmplY3Q6cHJvcGVydHlLZXkgaW5Db250ZXh0OmNvbnRleHRdIEpTVmFsdWVS
ZWZdLCBhcmd1bWVudHMuLi4sICZleGNlcHRpb24pOwpAQCAtNTIwLDcgKzUyMCw3IEBAIC0gKEpT
VmFsdWUgKilpbnZva2VNZXRob2Q6KE5TU3RyaW5nICopbWV0aG9kIHdpdGhBcmd1bWVudHM6KE5T
QXJyYXkgKilhcmd1bWVudHMKICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gW19j
b250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogCi0gICAgYXV0byBu
YW1lID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShtZXRob2QpOworICAgIGF1dG8gbmFtZSA9IE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobWV0aG9kKTsKICAgICBKU1ZhbHVlUmVmIGZ1bmN0aW9u
ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgdGhp
c09iamVjdCwgbmFtZS5nZXQoKSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKICAg
ICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9u
XTsKQEAgLTc3NCw3ICs3NzQsNyBAQCBzdGF0aWMgaWQgY29udGFpbmVyVmFsdWVUb09iamVjdChK
U0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNDb250YWluZXJDb252ZXJ0bwogICAgICAgICAg
ICAgQVNTRVJUKFtjdXJyZW50Lm9iamMgaXNLaW5kT2ZDbGFzczpbTlNNdXRhYmxlQXJyYXkgY2xh
c3NdXSk7CiAgICAgICAgICAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSAoTlNNdXRhYmxlQXJy
YXkgKiljdXJyZW50Lm9iamM7CiAgICAgICAgIAotICAgICAgICAgICAgYXV0byBsZW5ndGhTdHJp
bmcgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKCJsZW5ndGgiX3MpOworICAgICAgICAgICAgYXV0
byBsZW5ndGhTdHJpbmcgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCJsZW5ndGgiX3MpOwog
ICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gSlNDOjp0b1VJbnQzMihKU1ZhbHVlVG9OdW1i
ZXIoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBqcywgbGVuZ3RoU3RyaW5n
LmdldCgpLCAwKSwgMCkpOwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKQEAgLTk4NCw3ICs5ODQsNyBAQCBzdGF0aWMgT2JqY0NvbnRhaW5lckNv
bnZlcnRvcjo6VGFzayBvYmplY3RUb1ZhbHVlV2l0aG91dENvcHkoSlNDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgcmV0dXJuIHsgb2JqZWN0LCAoKEpTVmFsdWUgKilvYmplY3QpLT5tX3Zh
bHVlLCBDb250YWluZXJOb25lIH07CiAKICAgICAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSkgewotICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBPcGFxdWVK
U1N0cmluZzo6Y3JlYXRlKChOU1N0cmluZyAqKW9iamVjdCk7CisgICAgICAgICAgICBhdXRvIHN0
cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoKE5TU3RyaW5nICopb2JqZWN0KTsKICAg
ICAgICAgICAgIHJldHVybiB7IG9iamVjdCwgSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dFJlZiwg
c3RyaW5nLmdldCgpKSwgQ29udGFpbmVyTm9uZSB9OwogICAgICAgICB9CiAKQEAgLTEwNDEsNyAr
MTA0MSw3IEBAIEpTVmFsdWVSZWYgb2JqZWN0VG9WYWx1ZShKU0NvbnRleHQgKmNvbnRleHQsIGlk
IG9iamVjdCkKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IChOU0RpY3Rp
b25hcnkgKiljdXJyZW50Lm9iamM7CiAgICAgICAgICAgICBmb3IgKGlkIGtleSBpbiBbZGljdGlv
bmFyeSBrZXlFbnVtZXJhdG9yXSkgewogICAgICAgICAgICAgICAgIGlmIChba2V5IGlzS2luZE9m
Q2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKChOU1N0cmluZyAqKWtleSk7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNy
ZWF0ZSgoTlNTdHJpbmcgKilrZXkpOwogICAgICAgICAgICAgICAgICAgICBKU09iamVjdFNldFBy
b3BlcnR5KGNvbnRleHRSZWYsIGpzLCBwcm9wZXJ0eU5hbWUuZ2V0KCksIGNvbnZlcnRvci5jb252
ZXJ0KFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTprZXldKSwgMCwgMCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5j
cHAKaW5kZXggMjNmMTdiYzIxYmIzYzA4MjlkZTBhNTYwNDMzNzA2ODUwZmMxZWMwNS4uNGMxMmI5
NmNmZGQ2OTIzZmI3YzMyYmY4NDgzMTAyYzM2MTQ2YzQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWVSZWYuY3BwCkBAIC0zODYsNyArMzg2LDcgQEAgSlNTdHJpbmdSZWYgSlNW
YWx1ZUNyZWF0ZUpTT05TdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiBhcGlWYWx1
ZSwgdW5zaWcKICAgICAgICAgKmV4Y2VwdGlvbiA9IDA7CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlv
bklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlk
VGhyb3cpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3Jl
YXRlKHJlc3VsdCkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3Jl
YXRlKHJlc3VsdCkubGVha1JlZigpOwogfQogCiBib29sIEpTVmFsdWVUb0Jvb2xlYW4oSlNDb250
ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkKQEAgLTQzNCw3ICs0MzQsNyBAQCBKU1N0cmlu
Z1JlZiBKU1ZhbHVlVG9TdHJpbmdDb3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFs
dWUsIEpTVmFsdWVSZWYqCiAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVl
KTsKICAgICAKLSAgICBhdXRvIHN0cmluZ1JlZihPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGpzVmFs
dWUudG9XVEZTdHJpbmcoZXhlYykpKTsKKyAgICBhdXRvIHN0cmluZ1JlZihPcGFxdWVKU1N0cmlu
Zzo6dHJ5Q3JlYXRlKGpzVmFsdWUudG9XVEZTdHJpbmcoZXhlYykpKTsKICAgICBpZiAoaGFuZGxl
RXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3Rh
dHVzOjpEaWRUaHJvdykKICAgICAgICAgc3RyaW5nUmVmID0gbnVsbHB0cjsKICAgICByZXR1cm4g
c3RyaW5nUmVmLmxlYWtSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvT3BhcXVlSlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVK
U1N0cmluZy5jcHAKaW5kZXggOTgxZGM4NWIwODVmMTg5N2U1Y2VkYmQ4MTI1OTczYTBiYzA0ZDQ5
ZS4uNzdhMmUxYzdmMTM1NDVjYzA4ZGQwODJiM2ZkMjk0MWQzZTA4NWUyNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAK
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBPcGFxdWVK
U1N0cmluZzo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPE9wYXF1ZUpTU3Ry
aW5nPiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewog
ICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDIs
NyArNDIsNyBAQCBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPcGFxdWVKU1N0
cmluZyhzdHJpbmcpKTsKIH0KIAotUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBPcGFxdWVKU1N0cmlu
Zzo6Y3JlYXRlKFN0cmluZyYmIHN0cmluZykKK1JlZlB0cjxPcGFxdWVKU1N0cmluZz4gT3BhcXVl
SlNTdHJpbmc6OnRyeUNyZWF0ZShTdHJpbmcmJiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL09wYXF1ZUpTU3RyaW5nLmgKaW5kZXggYWQyZmZjZGU1NzEyNWU4YWY3MmYyMzkxNDNlZGJj
MDcyNTI0NjE2MC4uNGE0YjVlZGZiYTIwMTQ2Yzg5MzIwMTQzZjliNWY0ZDFkZDEwZDY3NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaApAQCAtNTEsOCArNTEs
OCBAQCBzdHJ1Y3QgT3BhcXVlSlNTdHJpbmcgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
T3BhcXVlSlNTdHJpbmc+IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3BhcXVlSlNT
dHJpbmcoY2hhcmFjdGVycywgbGVuZ3RoKSk7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IGNyZWF0
ZShTdHJpbmcmJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxPcGFxdWVK
U1N0cmluZz4gdHJ5Q3JlYXRlKGNvbnN0IFN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHRyeUNyZWF0ZShTdHJpbmcmJik7CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSB+T3BhcXVlSlNTdHJpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCmluZGV4IGI1NDhlZmJmZjY5NmE1ZWFm
YTc0Y2VlZDg1NTcyMmMzMjJiOTJhNDQuLjQwZWE1YzE0OTE3YjNjZGQ0ZjdlZWMwYTI0YmUyMDBm
N2NjMDc3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0ND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4
dC5jcHAKQEAgLTgxOSw3ICs4MTksNyBAQCBKU0NWYWx1ZSoganNjX2NvbnRleHRfZXZhbHVhdGUo
SlNDQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogY29kZSwgZ3NzaXplIGxlbgogCiBzdGF0
aWMgSlNWYWx1ZVJlZiBldmFsdWF0ZVNjcmlwdEluQ29udGV4dChKU0dsb2JhbENvbnRleHRSZWYg
anNDb250ZXh0LCBTdHJpbmcmJiBzY3JpcHQsIGNvbnN0IGNoYXIqIHVyaSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBzY3JpcHRKUyhBZG9wdCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShXVEZNb3ZlKHNj
cmlwdCkpLmxlYWtSZWYoKSk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHNjcmlwdEpT
KEFkb3B0LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKFdURk1vdmUoc2NyaXB0KSkubGVha1Jl
ZigpKTsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc291cmNlVVJJID0gdXJpID8gYWRv
cHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXJpKSkgOiBudWxscHRyOwogICAgIHJl
dHVybiBKU0V2YWx1YXRlU2NyaXB0KGpzQ29udGV4dCwgc2NyaXB0SlMuZ2V0KCksIG51bGxwdHIs
IHNvdXJjZVVSSS5nZXQoKSwgbGluZU51bWJlciwgZXhjZXB0aW9uKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmFsdWUuY3BwCmluZGV4IDc5ZTUzMTZmZDM2MjkzYzhk
ZDAyMzM2MjNiYWQwM2JhYTg1ZDljM2IuLjZlMjc0Zjg5ZjQzN2I2M2M5NTkyNTcyMzQyZjk3MDUz
OWNhYWUxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NW
YWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmNw
cApAQCAtMzY3LDcgKzM2Nyw3IEBAIEpTQ1ZhbHVlKiBqc2NfdmFsdWVfbmV3X3N0cmluZ19mcm9t
X2J5dGVzKEpTQ0NvbnRleHQqIGNvbnRleHQsIEdCeXRlcyogYnl0ZXMpCiAgICAgZ3NpemUgZGF0
YVNpemU7CiAgICAgY29uc3QgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihn
X2J5dGVzX2dldF9kYXRhKGJ5dGVzLCAmZGF0YVNpemUpKTsKICAgICBhdXRvIHN0cmluZyA9IFN0
cmluZzo6ZnJvbVVURjgoZGF0YSwgZGF0YVNpemUpOwotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBqc1N0cmluZyhBZG9wdCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShXVEZNb3ZlKHN0cmlu
ZykpLmxlYWtSZWYoKSk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGpzU3RyaW5nKEFk
b3B0LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKFdURk1vdmUoc3RyaW5nKSkubGVha1JlZigp
KTsKICAgICByZXR1cm4ganNjQ29udGV4dEdldE9yQ3JlYXRlVmFsdWUoY29udGV4dCwgSlNWYWx1
ZU1ha2VTdHJpbmcoanNjQ29udGV4dEdldEpTQ29udGV4dChjb250ZXh0KSwganNTdHJpbmcuZ2V0
KCkpKS5sZWFrUmVmKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGF6eVNsb3dQYXRoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExhenlT
bG93UGF0aC5oCmluZGV4IDlhNmU2MDFhZDMxOWJkZGZjM2E5OGUwNWQ5OTMwYjgxZGFlMWRhZGQu
LmE1YjNhNzI1MmE0MTM3NzY4NTJmNDFmYTI1MTI0YjkwODM3OGRiMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGF6eVNsb3dQYXRoLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1BhdGguaApAQCAtNTksNyArNTksNyBAQCBjbGFz
cyBMYXp5U2xvd1BhdGggewogICAgIHR5cGVkZWYgU2hhcmVkVGFzazxHZW5lcmF0b3JGdW5jdGlv
bj4gR2VuZXJhdG9yOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBzdGF0
aWMgUmVmUHRyPEdlbmVyYXRvcj4gY3JlYXRlR2VuZXJhdG9yKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCisgICAgc3RhdGljIFJlZjxHZW5lcmF0b3I+IGNyZWF0ZUdlbmVyYXRvcihjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgcmV0dXJuIGNyZWF0ZVNoYXJlZFRhc2s8R2Vu
ZXJhdG9yRnVuY3Rpb24+KGZ1bmN0b3IpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTGF6eVNsb3dQYXRoQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMYXp5U2xvd1BhdGhDYWxsLmgKaW5kZXggYmZiMmFjZWM4NmVkODY3NzZmMWIx
MTY1NTI4ZGM1MjIxNzYxYWU2Ni4uNzRmZDZlYzdiNzJmMzIyMzQyMWFhNjY0YmExYjZhNjdiYzc3
MjkzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1Bh
dGhDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1BhdGhD
YWxsLmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRUeXBl
cz4KLVJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0
b3IoCitSZWY8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9y
KAogICAgIFZNJiB2bSwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbiwgUmVz
dWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQogewogICAgIHJldHVy
biBMYXp5U2xvd1BhdGg6OmNyZWF0ZUdlbmVyYXRvcigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9TUkV4aXQuY3BwCmluZGV4IDMyOGYwYzgxODI4YmZjYjk2YjExYTk0OWVkYTE5ZDFlMDY3
MWQxNTQuLjA5OTU4ZDJjNGY5YTVkODliNWZiYmI2NWY4NmJiNmRhYmNkZjE4ZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0LmNwcApAQCAtNjMsMTcgKzYzLDE3IEBAIHZv
aWQgT1NSRXhpdERlc2NyaXB0b3I6OnZhbGlkYXRlUmVmZXJlbmNlcyhjb25zdCBUcmFja2VkUmVm
ZXJlbmNlcyYgdHJhY2tlZFJlZmVyCiAgICAgICAgIG1hdGVyaWFsaXphdGlvbi0+dmFsaWRhdGVS
ZWZlcmVuY2VzKHRyYWNrZWRSZWZlcmVuY2VzKTsKIH0KIAotUmVmUHRyPE9TUkV4aXRIYW5kbGU+
IE9TUkV4aXREZXNjcmlwdG9yOjplbWl0T1NSRXhpdCgKK1JlZjxPU1JFeGl0SGFuZGxlPiBPU1JF
eGl0RGVzY3JpcHRvcjo6ZW1pdE9TUkV4aXQoCiAgICAgU3RhdGUmIHN0YXRlLCBFeGl0S2luZCBl
eGl0S2luZCwgY29uc3QgTm9kZU9yaWdpbiYgbm9kZU9yaWdpbiwgQ0NhbGxIZWxwZXJzJiBqaXQs
CiAgICAgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMsIHVuc2lnbmVkIG9m
ZnNldCkKIHsKLSAgICBSZWZQdHI8T1NSRXhpdEhhbmRsZT4gaGFuZGxlID0KKyAgICBSZWY8T1NS
RXhpdEhhbmRsZT4gaGFuZGxlID0KICAgICAgICAgcHJlcGFyZU9TUkV4aXRIYW5kbGUoc3RhdGUs
IGV4aXRLaW5kLCBub2RlT3JpZ2luLCBwYXJhbXMsIG9mZnNldCk7CiAgICAgaGFuZGxlLT5lbWl0
RXhpdFRodW5rKHN0YXRlLCBqaXQpOwogICAgIHJldHVybiBoYW5kbGU7CiB9CiAKLVJlZlB0cjxP
U1JFeGl0SGFuZGxlPiBPU1JFeGl0RGVzY3JpcHRvcjo6ZW1pdE9TUkV4aXRMYXRlcigKK1JlZjxP
U1JFeGl0SGFuZGxlPiBPU1JFeGl0RGVzY3JpcHRvcjo6ZW1pdE9TUkV4aXRMYXRlcigKICAgICBT
dGF0ZSYgc3RhdGUsIEV4aXRLaW5kIGV4aXRLaW5kLCBjb25zdCBOb2RlT3JpZ2luJiBub2RlT3Jp
Z2luLAogICAgIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zLCB1bnNpZ25l
ZCBvZmZzZXQpCiB7CkBAIC04MywxNyArODMsMTcgQEAgUmVmUHRyPE9TUkV4aXRIYW5kbGU+IE9T
UkV4aXREZXNjcmlwdG9yOjplbWl0T1NSRXhpdExhdGVyKAogICAgICAgICBbaGFuZGxlLCAmc3Rh
dGVdIChDQ2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAgICAgaGFuZGxlLT5lbWl0RXhpdFRo
dW5rKHN0YXRlLCBqaXQpOwogICAgICAgICB9KTsKLSAgICByZXR1cm4gaGFuZGxlOworICAgIHJl
dHVybiBoYW5kbGUucmVsZWFzZU5vbk51bGwoKTsKIH0KIAotUmVmUHRyPE9TUkV4aXRIYW5kbGU+
IE9TUkV4aXREZXNjcmlwdG9yOjpwcmVwYXJlT1NSRXhpdEhhbmRsZSgKK1JlZjxPU1JFeGl0SGFu
ZGxlPiBPU1JFeGl0RGVzY3JpcHRvcjo6cHJlcGFyZU9TUkV4aXRIYW5kbGUoCiAgICAgU3RhdGUm
IHN0YXRlLCBFeGl0S2luZCBleGl0S2luZCwgY29uc3QgTm9kZU9yaWdpbiYgbm9kZU9yaWdpbiwK
ICAgICBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcywgdW5zaWduZWQgb2Zm
c2V0KQogewogICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGUuaml0Q29kZS0+b3NyRXhpdC5zaXpl
KCk7CiAgICAgT1NSRXhpdCYgZXhpdCA9IHN0YXRlLmppdENvZGUtPm9zckV4aXQuYWxsb2MoCiAg
ICAgICAgIHRoaXMsIGV4aXRLaW5kLCBub2RlT3JpZ2luLmZvckV4aXQsIG5vZGVPcmlnaW4uc2Vt
YW50aWMsIG5vZGVPcmlnaW4ud2FzSG9pc3RlZCk7Ci0gICAgUmVmUHRyPE9TUkV4aXRIYW5kbGU+
IGhhbmRsZSA9IGFkb3B0UmVmKG5ldyBPU1JFeGl0SGFuZGxlKGluZGV4LCBleGl0KSk7CisgICAg
UmVmPE9TUkV4aXRIYW5kbGU+IGhhbmRsZSA9IGFkb3B0UmVmKCpuZXcgT1NSRXhpdEhhbmRsZShp
bmRleCwgZXhpdCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG9mZnNldDsgaSA8IHBhcmFtcy5z
aXplKCk7ICsraSkKICAgICAgICAgZXhpdC5tX3ZhbHVlUmVwcy5hcHBlbmQocGFyYW1zW2ldKTsK
ICAgICBleGl0Lm1fdmFsdWVSZXBzLnNocmlua1RvRml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT1NSRXhpdC5oCmluZGV4IDdjMDJmYjEwZGEwZjFiOGMzZjU2NmY0NTlhZGNiZWMyNWRk
NGM5YjcuLmRhODdjY2YzMjczZmU0YmUzNjA2ODNiOGFmM2JiZjUxNmQ2MjI1ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCkBAIC05MCw3ICs5MCw3IEBAIHN0cnVjdCBP
U1JFeGl0RGVzY3JpcHRvciB7CiAgICAgLy8gdXAgdG8gdGhlIE9TUkV4aXQgb2JqZWN0LCB3aGlj
aCB0aGlzIGNyZWF0ZXMuIE5vdGUgdGhhdCBpdCdzIE9LIHRvIGRyb3AgdGhlIE9TUkV4aXRIYW5k
bGUgb2JqZWN0CiAgICAgLy8gb24gdGhlIGdyb3VuZC4gSXQgY29udGFpbnMgaW5mb3JtYXRpb24g
dGhhdCBpcyBtb3N0bHkgbm90IHVzZWZ1bCBpZiB5b3UgdXNlIHRoaXMgQVBJLCBzaW5jZSBhZnRl
cgogICAgIC8vIHRoaXMgY2FsbCwgdGhlIE9TUkV4aXQgaXMgc2ltcGx5IHJlYWR5IHRvIGdvLgot
ICAgIFJlZlB0cjxPU1JFeGl0SGFuZGxlPiBlbWl0T1NSRXhpdCgKKyAgICBSZWY8T1NSRXhpdEhh
bmRsZT4gZW1pdE9TUkV4aXQoCiAgICAgICAgIFN0YXRlJiwgRXhpdEtpbmQsIGNvbnN0IERGRzo6
Tm9kZU9yaWdpbiYsIENDYWxsSGVscGVycyYsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmLAogICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSAwKTsKIApAQCAtMTAyLDcgKzEwMiw3
IEBAIHN0cnVjdCBPU1JFeGl0RGVzY3JpcHRvciB7CiAgICAgLy8gVGhpcyBBUEkgaXMgbWVhbnQg
dG8gYmUgdXNlZCBmb3IgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nLCB3aGVyZSBzb21l
IHBhdGNocG9pbnQgd2FudHMgdG8KICAgICAvLyBoYXZlIGEgcGxhY2UgdG8ganVtcCB0byBmb3Ig
T1NSIGV4aXQuIEl0IGRvZXNuJ3QgY2FyZSB3aGVyZSB0aGF0IE9TUiBleGl0IGlzIGVtaXR0ZWQg
c28gbG9uZyBhcyBpdAogICAgIC8vIGV2ZW50dWFsbHkgZ2V0cyBhY2Nlc3MgdG8gaXRzIGxhYmVs
LgotICAgIFJlZlB0cjxPU1JFeGl0SGFuZGxlPiBlbWl0T1NSRXhpdExhdGVyKAorICAgIFJlZjxP
U1JFeGl0SGFuZGxlPiBlbWl0T1NSRXhpdExhdGVyKAogICAgICAgICBTdGF0ZSYsIEV4aXRLaW5k
LCBjb25zdCBERkc6Ok5vZGVPcmlnaW4mLCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiwKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMCk7CiAKQEAgLTExMCw3ICsxMTAsNyBA
QCBzdHJ1Y3QgT1NSRXhpdERlc2NyaXB0b3IgewogICAgIC8vIFRoaXMgaXMgdGhlIGxvdy1sZXZl
bCBpbnRlcmZhY2UuIEl0IHdpbGwgY3JlYXRlIGEgaGFuZGxlIHJlcHJlc2VudGluZyB0aGUgZGVz
aXJlIHRvIGVtaXQgY29kZSBmb3IKICAgICAvLyBhbiBPU1IgZXhpdC4gWW91IGNhbiBjYWxsIE9T
UkV4aXRIYW5kbGU6OmVtaXRFeGl0VGh1bmsoKSBvbmNlIHlvdSBoYXZlIGEgcGxhY2UgdG8gZW1p
dCBpdC4gTm90ZQogICAgIC8vIHRoYXQgdGhlIGFib3ZlIHR3byBBUElzIGFyZSB3cml0dGVuIGlu
IHRlcm1zIG9mIHRoaXMgYW5kIE9TUkV4aXRIYW5kbGU6OmVtaXRFeGl0VGh1bmsoKS4KLSAgICBS
ZWZQdHI8T1NSRXhpdEhhbmRsZT4gcHJlcGFyZU9TUkV4aXRIYW5kbGUoCisgICAgUmVmPE9TUkV4
aXRIYW5kbGU+IHByZXBhcmVPU1JFeGl0SGFuZGxlKAogICAgICAgICBTdGF0ZSYsIEV4aXRLaW5k
LCBjb25zdCBERkc6Ok5vZGVPcmlnaW4mLCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiwKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5j
cHAKaW5kZXggNzI5NGIxYjVmNmJhZWU2MWM1NzRjZmU1MTBjZTIzOGM5MzMzNzAyMS4uZmFlZjQx
N2I5ODIzNTRmM2U2NDdhYWQyOWJhMDZjODI3MGNlMDlkMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUuY3Bw
CkBAIC0zOCwxMSArMzgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiB1
c2luZyBuYW1lc3BhY2UgREZHOwogCi1SZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4g
UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZTo6Y3JlYXRlKAorUmVmPFBhdGNocG9pbnRFeGNlcHRp
b25IYW5kbGU+IFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU6OmNyZWF0ZSgKICAgICBTdGF0ZSYg
c3RhdGUsIE9TUkV4aXREZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOb2RlT3JpZ2luIG9yaWdpbiwg
dW5zaWduZWQgb2Zmc2V0LAogICAgIGNvbnN0IEhhbmRsZXJJbmZvJiBoYW5kbGVyKQogewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZShzdGF0ZSwgZGVz
Y3JpcHRvciwgb3JpZ2luLCBvZmZzZXQsIGhhbmRsZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlKHN0YXRlLCBkZXNjcmlwdG9yLCBvcmlnaW4s
IG9mZnNldCwgaGFuZGxlcikpOwogfQogCiBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZT4gUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZTo6ZGVmYXVsdEhhbmRsZShTdGF0ZSYgc3RhdGUp
CkBAIC0xMDgsNyArMTA4LDcgQEAgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZTo6UGF0Y2hwb2lu
dEV4Y2VwdGlvbkhhbmRsZSgKIHsKIH0KIAotUmVmUHRyPE9TUkV4aXRIYW5kbGU+IFBhdGNocG9p
bnRFeGNlcHRpb25IYW5kbGU6OmNyZWF0ZUhhbmRsZSgKK1JlZjxPU1JFeGl0SGFuZGxlPiBQYXRj
aHBvaW50RXhjZXB0aW9uSGFuZGxlOjpjcmVhdGVIYW5kbGUoCiAgICAgRXhpdEtpbmQga2luZCwg
Y29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKQogewogICAgIHJldHVy
biBtX2Rlc2NyaXB0b3ItPmVtaXRPU1JFeGl0TGF0ZXIoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5oCmluZGV4IDFi
MjY2ZDJlMWZlOTc4ODhlYThmNzhkMmM4YzQzYjRlMzY0NjlmZWMuLjQ0OGUxY2Y1ZjA1ZGY1NTgz
YjIzMDI3ZGZlY2U2MTQyN2EyMzIyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5oCkBAIC01MSw3ICs1MSw3
IEBAIHN0cnVjdCBPU1JFeGl0SGFuZGxlOwogCiBjbGFzcyBQYXRjaHBvaW50RXhjZXB0aW9uSGFu
ZGxlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGU+IGNyZWF0ZSgKKyAgICBzdGF0aWMgUmVmPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGNy
ZWF0ZSgKICAgICAgICAgU3RhdGUmLCBPU1JFeGl0RGVzY3JpcHRvciosIERGRzo6Tm9kZU9yaWdp
biwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBIYW5kbGVySW5mbyYpOwogCiAgICAgc3RhdGljIFJl
ZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBkZWZhdWx0SGFuZGxlKFN0YXRlJik7CkBA
IC04OSw3ICs4OSw3IEBAIGNsYXNzIFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGF0Y2hwb2ludEV4Y2VwdGlvCiAgICAgUGF0Y2hwb2ludEV4
Y2VwdGlvbkhhbmRsZSgKICAgICAgICAgU3RhdGUmLCBPU1JFeGl0RGVzY3JpcHRvciosIERGRzo6
Tm9kZU9yaWdpbiwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBIYW5kbGVySW5mbyYpOwogCi0gICAg
UmVmUHRyPE9TUkV4aXRIYW5kbGU+IGNyZWF0ZUhhbmRsZShFeGl0S2luZCwgY29uc3QgQjM6OlN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpOworICAgIFJlZjxPU1JFeGl0SGFuZGxlPiBjcmVhdGVI
YW5kbGUoRXhpdEtpbmQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKTsKIAog
ICAgIFN0YXRlJiBtX3N0YXRlOwogICAgIE9TUkV4aXREZXNjcmlwdG9yKiBtX2Rlc2NyaXB0b3I7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNh
bGxiYWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxi
YWNrLmgKaW5kZXggNTJlMGEyOGZlM2M5MGNmOWYyZjgxODU3NzlhNzZmZjE5MjUzNzVjYy4uMDVj
ZjI4MjBmMzI0YWE1YzA5YTM0ZDIwMTI2MDY2NmM1MmUzNjg4NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaApAQCAtNDEsNyAr
NDEsNyBAQCBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrIDog
cHVibGljIEdDQWN0aXZpdHlDYWxsYmFjayB7CiAgICAgZG91YmxlIGRlYXRoUmF0ZShIZWFwJikg
b3ZlcnJpZGU7CiB9OwogCi1pbmxpbmUgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rp
dml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIoSGVhcCogaGVhcCkKK2lubGluZSBSZWZQdHI8
R0NBY3Rpdml0eUNhbGxiYWNrPiBHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVkZW5UaW1l
cihIZWFwKiBoZWFwKQogewogICAgIHJldHVybiBzX3Nob3VsZENyZWF0ZUdDVGltZXIgPyBhZG9w
dFJlZihuZXcgRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKSkgOiBudWxscHRyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFj
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5o
CmluZGV4IDVjZTAzNGEwY2Q4MWY1NWQyOThmMTI4OTgyNmRlNmY4YmVmNjJiYmEuLjY1MGFlMTM4
N2YxNmFhMDAzZDdkZGI5ODZmMDc1OGZjOWYxZWM0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRnVsbEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1Ymxp
YyBHQ0FjdGl2aXR5Q2FsbGJhY2sgewogICAgIGJvb2wgbV9kaWRHQ1JlY2VudGx5IHsgZmFsc2Ug
fTsKIH07CiAKLWlubGluZSBSZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rpdml0
eUNhbGxiYWNrOjpjcmVhdGVGdWxsVGltZXIoSGVhcCogaGVhcCkKK2lubGluZSBSZWZQdHI8RnVs
bEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVhdGVGdWxsVGlt
ZXIoSGVhcCogaGVhcCkKIHsKICAgICByZXR1cm4gc19zaG91bGRDcmVhdGVHQ1RpbWVyID8gYWRv
cHRSZWYobmV3IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkpIDogbnVsbHB0cjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgKaW5kZXgg
OWRmZGQwZjcwMDdkMjEzYjRmYjk1NDQ5YjE2ZWZlZGQ4ZTRjM2EzNi4uYzM3MWY3N2QyYjY0YjQz
ZGFjNzQ2MzE0ZDdjMWQ5ZDI1ZjM5ZmIwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgKQEAgLTQzLDggKzQzLDggQEAgY2xhc3MgSGVhcDsK
IGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBKU1J1
bkxvb3BUaW1lciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTUnVuTG9vcFRpbWVyOwot
ICAgIHN0YXRpYyBSZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlRnVsbFRpbWVy
KEhlYXAqKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlRWRl
blRpbWVyKEhlYXAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s+
IHRyeUNyZWF0ZUZ1bGxUaW1lcihIZWFwKik7CisgICAgc3RhdGljIFJlZlB0cjxHQ0FjdGl2aXR5
Q2FsbGJhY2s+IHRyeUNyZWF0ZUVkZW5UaW1lcihIZWFwKik7CiAKICAgICBHQ0FjdGl2aXR5Q2Fs
bGJhY2soSGVhcCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IGNjNGEz
MzY1MWEyZjE5NmZjYWZiMzJhY2MwYTYwM2Q5ODg4MjNmMDguLmY0NjhkNDFlNGZmYzdhNmFjN2Q0
Mjk1ZmNiZmE3NzcyMjE3YmJjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBA
IC0zMDQsOCArMzA0LDggQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQog
ICAgIC8vIHNjaGVkdWxlIHRoZSB0aW1lciBpZiB3ZSd2ZSBuZXZlciBkb25lIGEgY29sbGVjdGlv
bi4KICAgICAsIG1fbGFzdEZ1bGxHQ0xlbmd0aCgwLjAxKQogICAgICwgbV9sYXN0RWRlbkdDTGVu
Z3RoKDAuMDEpCi0gICAgLCBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFj
azo6Y3JlYXRlRnVsbFRpbWVyKHRoaXMpKQotICAgICwgbV9lZGVuQWN0aXZpdHlDYWxsYmFjayhH
Q0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZUVkZW5UaW1lcih0aGlzKSkKKyAgICAsIG1fZnVsbEFj
dGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVhdGVGdWxsVGltZXIodGhp
cykpCisgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5
Q3JlYXRlRWRlblRpbWVyKHRoaXMpKQogICAgICwgbV9zd2VlcGVyKGFkb3B0UmVmKG5ldyBJbmNy
ZW1lbnRhbFN3ZWVwZXIodGhpcykpKQogICAgICwgbV9zdG9wSWZOZWNlc3NhcnlUaW1lcihhZG9w
dFJlZihuZXcgU3RvcElmTmVjZXNzYXJ5VGltZXIodm0pKSkKICAgICAsIG1fZGVmZXJyYWxEZXB0
aCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0
YWNrVHJhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNr
VHJhY2UuY3BwCmluZGV4IDMxNGI4N2M2ODdiODBlZGE4NGE2NmM4N2E2YTVhOGIxOWQwMjE0NjYu
LjhjYjA5Nzk2ZjEyODIxNjU3N2IyZjkwYWQyZTJjZTBjNGQyYmMzODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQXN5bmNTdGFja1RyYWNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHAKQEAgLTMx
LDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLVJlZlB0cjxBc3luY1N0YWNr
VHJhY2U+IEFzeW5jU3RhY2tUcmFjZTo6Y3JlYXRlKFJlZjxTY3JpcHRDYWxsU3RhY2s+JiYgY2Fs
bFN0YWNrLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxBc3luY1N0YWNrVHJhY2U+IHBhcmVudCkK
K1JlZjxBc3luY1N0YWNrVHJhY2U+IEFzeW5jU3RhY2tUcmFjZTo6Y3JlYXRlKFJlZjxTY3JpcHRD
YWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxBc3luY1N0YWNr
VHJhY2U+IHBhcmVudCkKIHsKICAgICBBU1NFUlQoY2FsbFN0YWNrLT5zaXplKCkpOwogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEFzeW5jU3RhY2tUcmFjZShXVEZNb3ZlKGNhbGxTdGFjayksIHNp
bmdsZVNob3QsIFdURk1vdmUocGFyZW50KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvQXN5bmNTdGFja1RyYWNlLmgKaW5kZXggMWMzY2NmNDgzN2FiMTU3MjEwYzAz
ZmM4M2ZiZGQ3Yzc5Nzg1MTkyNC4uMjJiM2ZlNzQ5NWIxOGU0YTViZTA3Mzc5MzUyMDllZDk1NTFh
Y2RlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0
YWNrVHJhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3Rh
Y2tUcmFjZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEFzeW5j
U3RhY2tUcmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPEFzeW5jU3RhY2tUcmFjZT4gewogICAgICAg
ICBDYW5jZWxlZCwKICAgICB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxBc3luY1N0YWNrVHJhY2U+
IGNyZWF0ZShSZWY8U2NyaXB0Q2FsbFN0YWNrPiYmLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxB
c3luY1N0YWNrVHJhY2U+IHBhcmVudCk7CisgICAgc3RhdGljIFJlZjxBc3luY1N0YWNrVHJhY2U+
IGNyZWF0ZShSZWY8U2NyaXB0Q2FsbFN0YWNrPiYmLCBib29sIHNpbmdsZVNob3QsIFJlZlB0cjxB
c3luY1N0YWNrVHJhY2U+IHBhcmVudCk7CiAKICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0Owog
ICAgIGJvb2wgaXNMb2NrZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMzhhMDBh
NzFiNjE4ZTcxNDdlMzFhYmFmY2ZmMzNjYzRkYTBkMGQ1ZC4uOTJhNWYyMDhhZjRjYzJiM2Y1YTg0
NDJiODI4MDVlNzFmMjZhMGM1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTg4Nyw3ICs4ODcs
OSBAQCBzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZp
bGUoRklMRSogZmlsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKGZzZWVrKGZp
bGUsIDAsIFNFRUtfU0VUKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUmVm
UHRyPFVpbnQ4QXJyYXk+IHJlc3VsdCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShidWZmZXJDYXBhY2l0
eSk7CisgICAgYXV0byByZXN1bHQgPSBVaW50OEFycmF5Ojp0cnlDcmVhdGUoYnVmZmVyQ2FwYWNp
dHkpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBzaXpl
X3QgcmVhZFNpemUgPSBmcmVhZChyZXN1bHQtPmRhdGEoKSwgMSwgYnVmZmVyQ2FwYWNpdHksIGZp
bGUpOwogICAgIGlmIChyZWFkU2l6ZSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZmZlckNhcGFj
aXR5KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBkZWVhMjU0NTA5NmNiNTk2YzE4MWFlYzc2ODUxNWZj
MWMxYTA4MDUxLi5lYjM2N2MxNGNkMTkzMDFjNTNkNjdmMmEwZTA5NGQ2MjM0MWZjMWM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTExMSw3ICsx
MTEsNyBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxB
cnJheUJ1ZmZlcj4gewogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlC
dWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVu
c2lnbmVkIGJ5dGVMZW5ndGgpOwogCi0gICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBl
ZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkIGFuZCBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFy
cmF5QnVmZmVyLgorICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZl
ci4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZTVmZDRiYjc0MTZmM2UyNTBmZjhhNjg5NTE1
N2VmZDg2ZjVkYzQ5OC4uZWYyZTgwZjRlYTAzYmRlNjQ5MWNmNzMzM2EyN2I3YzU3N2YwZWI1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVk
QXJyYXlWaWV3LmgKQEAgLTM2LDExICszNiwxNSBAQCBjbGFzcyBHZW5lcmljVHlwZWRBcnJheVZp
ZXcgZmluYWwgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKICAgICBHZW5lcmljVHlwZWRBcnJh
eVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+
IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWY8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PiBjcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0
ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRyeUNyZWF0
ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlW
aWV3PiB0cnlDcmVhdGUoY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHRy
eUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCk7CiAgICAgCi0gICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVm
PEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiB0cnlDcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAgICAgdHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUqPihiYXNlQWRkcmVzcygpKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
CmluZGV4IDFiNmRhNTYxZWI3Y2ViMTMxMmFhNjQ4Y2QyZTQ5M2I1ODJiOWI2YjUuLmU2NjBjZmNk
ZDQ4OTQ1NjJkMTc0ZjY0NjU3NWQ1NjIyYjEyMjM3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKQEAgLTM5LDI1ICszOSw1MyBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46Okdl
bmVyaWNUeXBlZEFycmF5VmlldygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJl
ZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKK1JlZjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShsZW5ndGgpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlTm9u
TnVsbCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgorUmVmPEdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUoCisgICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxl
bmd0aCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShhcnJheSwgbGVuZ3RoKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQucmVsZWFzZU5vbk51
bGwoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KK1JlZjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KAorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHRyeUNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CisgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0
KTsKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CitSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgp
CiB7CiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aCwgc2l6
ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxl
bmd0aCk7CisgICAgcmV0dXJuIHRyeUNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1SZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgK
K1JlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKAogICAgIGNvbnN0IHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5Vmlldz4gcmVzdWx0ID0gY3JlYXRlKGxlbmd0aCk7CisgICAgUmVmUHRyPEdlbmVyaWNUeXBl
ZEFycmF5Vmlldz4gcmVzdWx0ID0gdHJ5Q3JlYXRlKGxlbmd0aCk7CisgICAgaWYgKCFyZXN1bHQp
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIG1lbWNweShyZXN1bHQtPmRhdGEoKSwgYXJy
YXksIGxlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Y3JlYXRlKAorUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0cnlDcmVhdGUoCiAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IEFTU0VSVChidWZmZXIpOwpAQCAtNzAsMTQgKzk4LDIzIEBAIFJlZlB0cjxHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4KK1JlZjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+CiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoKQoreworICAgIGF1dG8gcmVzdWx0ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChs
ZW5ndGgpOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlTm9uTnVsbCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgorUmVmUHRy
PEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4KK0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPQogICAgICAgICBBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBj
cmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOworICAgIHJldHVybiB0cnlDcmVhdGUo
V1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgpAQCAtOTYsNyArMTMzLDcgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpz
dWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0CiAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZl
ciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgQVNTRVJUKGJ1ZmZlcik7CiAgICAgY2xh
bXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBlPigqYnVmZmVyLCBieXRlT2Zmc2V0
KCksICZvZmZzZXQsICZsZW5ndGgpOwotICAgIHJldHVybiBjcmVhdGUoYnVmZmVyLCBvZmZzZXQs
IGxlbmd0aCk7CisgICAgcmV0dXJuIHRyeUNyZWF0ZShidWZmZXIsIG9mZnNldCwgbGVuZ3RoKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCBiMzAzOWEyMzZiYzdk
OTI2MmIzZWUwYmM5ZjRmYWVlZjYzYjczNTdjLi5jMmRlMDAzZmY2YjcxMGRkZTdkZGJiZTgxOTk0
YTU4MjhlNDU3MmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0zMDIsNyArMzAyLDcgQEAgUmVmUHRyPEFycmF5QnVm
ZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCgpCiAgICAgc3dp
dGNoICh0eXBlKCkpIHsKICNkZWZpbmUgRkFDVE9SWSh0eXBlKSBcCiAgICAgY2FzZSB0eXBlICMj
IEFycmF5VHlwZTogXAotICAgICAgICByZXR1cm4gdHlwZSAjIyBBcnJheTo6Y3JlYXRlKGJ1ZmZl
ciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHR5cGUgIyMgQXJyYXk6OnRy
eUNyZWF0ZShidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CiAgICAgRk9SX0VBQ0hfVFlQRURf
QVJSQVlfVFlQRV9FWENMVURJTkdfREFUQV9WSUVXKEZBQ1RPUlkpCiAjdW5kZWYgRkFDVE9SWQog
ICAgIGNhc2UgRGF0YVZpZXdUeXBlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBj
YTE4ODQ0NzcyODEwMGM1YWYzN2E1N2Q2ZDdlMTRjNmY4NzkyYjA1Li4yZTU2Y2UxNjViNTk2NGNh
NGRkMDRmNTdlNDc5ODZiNDc0ZGU1YzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApA
QCAtMzE0LDEzICszMTQsMTMgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6c2V0KAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIFJlZlB0cjx0eXBlbmFtZSBBZGFw
dG9yOjpWaWV3VHlwZT4gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnBvc3NpYmx5
U2hhcmVkVHlwZWRJbXBsKCkKIHsKLSAgICByZXR1cm4gQWRhcHRvcjo6Vmlld1R5cGU6OmNyZWF0
ZShwb3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsKKyAgICBy
ZXR1cm4gQWRhcHRvcjo6Vmlld1R5cGU6OnRyeUNyZWF0ZShwb3NzaWJseVNoYXJlZEJ1ZmZlcigp
LCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnVuc2hhcmVkVHlwZWRJbXBsKCkKIHsKLSAgICByZXR1cm4gQWRhcHRv
cjo6Vmlld1R5cGU6OmNyZWF0ZSh1bnNoYXJlZEJ1ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0
aCgpKTsKKyAgICByZXR1cm4gQWRhcHRvcjo6Vmlld1R5cGU6OnRyeUNyZWF0ZSh1bnNoYXJlZEJ1
ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1v
cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKaW5kZXgg
YTY4NWYwZWEzZTRmY2Y5MDVkYjJjYzM2ZDUwMGFhNzU5Y2I3N2IzZi4uMzhiYmU4OTQ4NDdhZjc5
MmE4YjMwZWMxZTAxNjcxMDM1OTJjMjQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU1lbW9yeS5jcHAKQEAgLTI2OSwxMiArMjY5LDEyIEBAIE1lbW9yeTo6TWVtb3J5KHZvaWQq
IG1lbW9yeSwgUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBzaXplX3QgbWFw
cGVkCiAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1lbW9yeTo6TWVtb3J5IGFsbG9jYXRpbmcg
IiwgKnRoaXMpOwogfQogCi1SZWZQdHI8TWVtb3J5PiBNZW1vcnk6OmNyZWF0ZSgpCitSZWY8TWVt
b3J5PiBNZW1vcnk6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZW1vcnko
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVtb3J5KCkpOwogfQogCi1SZWZQdHI8TWVt
b3J5PiBNZW1vcnk6OmNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0s
IFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1
cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNs
YWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFn
ZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKQorUmVmUHRyPE1lbW9yeT4gTWVtb3J5Ojp0
cnlDcmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwg
V1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYg
Z3Jvd1N1Y2Nlc3NDYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaW5pdGlhbCk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoIW1heGltdW0gfHwgbWF4aW11bSA+PSBpbml0aWFsKTsgLy8gVGhpcyBzaG91bGQg
YmUgZ3VhcmFudGVlZCBieSBvdXIgY2FsbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU1lbW9yeS5oCmluZGV4IGMzNjU4MGY3OWVmNzMzZDg2MThkY2ZkYjNmNjcyMTczODVmMmYyNDEu
LjAwNzM3ZmMxZTY1ZTJiMjhkMGIwMDhhOWUzOTUzZGM3NzJjOTkxMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmgKQEAgLTU5LDggKzU5LDggQEAgY2xhc3MgTWVtb3J5
IDogcHVibGljIFJlZkNvdW50ZWQ8TWVtb3J5PiB7CiAgICAgZW51bSBTeW5jVHJ5VG9SZWNsYWlt
IHsgU3luY1RyeVRvUmVjbGFpbVRhZyB9OwogICAgIGVudW0gR3Jvd1N1Y2Nlc3MgeyBHcm93U3Vj
Y2Vzc1RhZyB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxNZW1vcnk+IGNyZWF0ZSgpOwotICAgIHN0
YXRpYyBSZWZQdHI8TWVtb3J5PiBjcmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBt
YXhpbXVtLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9y
eVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1Ry
eVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlvbjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291
bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3NDYWxsYmFjayk7CisgICAgc3RhdGljIFJlZjxN
ZW1vcnk+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWZQdHI8TWVtb3J5PiB0cnlDcmVhdGUoUGFn
ZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTm90
aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
U3luY1RyeVRvUmVjbGFpbSk+JiYgc3luY1RyeVRvUmVjbGFpbU1lbW9yeSwgV1RGOjpGdW5jdGlv
bjx2b2lkKEdyb3dTdWNjZXNzLCBQYWdlQ291bnQsIFBhZ2VDb3VudCk+JiYgZ3Jvd1N1Y2Nlc3ND
YWxsYmFjayk7CiAKICAgICB+TWVtb3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtVGFibGUuY3BwCmluZGV4IDA0YWMwNjUyNTU5YTZkOTM4ZjA5YjA2YWVlMjAxZjkxMmU5ZTRj
NjguLmViYjYzMjUyMGZhZjMwODNkZjRjNmYyNzEwMDFmZDU1NzE0NWU4ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIFRh
YmxlOjpzZXRMZW5ndGgodWludDMyX3QgbGVuZ3RoKQogICAgIEFTU0VSVChtX21hc2sgPT0gV1RG
OjptYXNrRm9yU2l6ZShhbGxvY2F0ZWRMZW5ndGgobGVuZ3RoKSkpOwogfQogCi1SZWZQdHI8VGFi
bGU+IFRhYmxlOjpjcmVhdGUodWludDMyX3QgaW5pdGlhbCwgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gbWF4aW11bSkKK1JlZlB0cjxUYWJsZT4gVGFibGU6OnRyeUNyZWF0ZSh1aW50MzJfdCBpbml0
aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKQogewogICAgIGlmICghaXNWYWxp
ZExlbmd0aChpbml0aWFsKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21UYWJsZS5oCmluZGV4IDRlMTVlMjkwMTQ0ZjIzMjgzN2M2Yjg1MzBhMjdk
M2YzNWE3NjA5ZmIuLjJmNTQ4M2M2MThmYTQ1OGJjZTBlZDg1MGRhNTU5NGE5MWU2MmI5ZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNs
YXNzIEluc3RhbmNlOwogCiBjbGFzcyBUYWJsZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxUYWJsZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8VGFibGU+IGNyZWF0ZSh1aW50
MzJfdCBpbml0aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKTsKKyAgICBzdGF0
aWMgUmVmUHRyPFRhYmxlPiB0cnlDcmVhdGUodWludDMyX3QgaW5pdGlhbCwgc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gbWF4aW11bSk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB+VGFibGUoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlJbnN0YW5jZS5jcHAKaW5kZXggYWJjN2ZhZTQ4ZWY3OGJhZTdlZjM0Y2JlNGYzNTZhYmY4NGVh
MDNhMy4uYmQ3MDNmZGIyNmIyNDM4MzYxM2E2YjRjZjgzOWI3MjQ2NTAxOTgwOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFu
Y2UuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFz
c2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAg
ICAgICAgIGF1dG8qIGpzTWVtb3J5ID0gSlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlKGV4ZWMs
IHZtLCBnbG9iYWxPYmplY3QtPldlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJlKCkpOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKIAotICAgICAg
ICAgICAgUmVmUHRyPFdhc206Ok1lbW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5OjpjcmVhdGUo
bW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5LmluaXRpYWwoKSwgbW9kdWxlSW5mb3JtYXRpb24ubWVt
b3J5Lm1heGltdW0oKSwKKyAgICAgICAgICAgIFJlZlB0cjxXYXNtOjpNZW1vcnk+IG1lbW9yeSA9
IFdhc206Ok1lbW9yeTo6dHJ5Q3JlYXRlKG1vZHVsZUluZm9ybWF0aW9uLm1lbW9yeS5pbml0aWFs
KCksIG1vZHVsZUluZm9ybWF0aW9uLm1lbW9yeS5tYXhpbXVtKCksCiAgICAgICAgICAgICAgICAg
WyZ2bV0gKFdhc206Ok1lbW9yeTo6Tm90aWZ5UHJlc3N1cmUpIHsgdm0uaGVhcC5jb2xsZWN0QXN5
bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtXSAoV2Fz
bTo6TWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVj
dGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtLCBqc01lbW9yeV0gKFdh
c206Ok1lbW9yeTo6R3Jvd1N1Y2Nlc3MsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdh
c206OlBhZ2VDb3VudCBuZXdQYWdlQ291bnQpIHsganNNZW1vcnktPmdyb3dTdWNjZXNzQ2FsbGJh
Y2sodm0sIG9sZFBhZ2VDb3VudCwgbmV3UGFnZUNvdW50KTsgfSk7CkBAIC0yOTcsNyArMjk3LDcg
QEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShW
TSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICBpZiAoIWpzSW5zdGFuY2UtPm1lbW9yeSgp
KSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGEgZHVtbXkgbWVtb3J5LCBzbyB0aGF0
IHdhc20gLT4gd2FzbSB0aHVua3MgYXZvaWQgY2hlY2tpbmcgZm9yIGEgbnVsbHB0ciBNZW1vcnkg
d2hlbiB0cnlpbmcgdG8gc2V0IHBpbm5lZCByZWdpc3RlcnMuCiAgICAgICAgIGF1dG8qIGpzTWVt
b3J5ID0gSlNXZWJBc3NlbWJseU1lbW9yeTo6Y3JlYXRlKGV4ZWMsIHZtLCBnbG9iYWxPYmplY3Qt
PldlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJlKCkpOwotICAgICAgICBqc01lbW9yeS0+YWRvcHQo
V2FzbTo6TWVtb3J5OjpjcmVhdGUoKS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAganNNZW1v
cnktPmFkb3B0KFdhc206Ok1lbW9yeTo6Y3JlYXRlKCkpOwogICAgICAgICBqc0luc3RhbmNlLT5z
ZXRNZW1vcnkodm0sIGpzTWVtb3J5KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBudWxscHRyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCmluZGV4IDU2NTYyNTI2Y2ZlNzE3OGIy
NzM4ZTkyNjVkN2IyODVhM2U0NzY0NmYuLjdhNmE1ZjAzOThmODYwYTEwMTM4YjZiM2JkNTk1NjJj
MDA3ZDllMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlNZW1vcnkuY3BwCkBAIC02OSw3ICs2OSw3IEBAIFN0cnVjdHVyZSogSlNXZWJB
c3NlbWJseU1lbW9yeTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iCiAKIEpTV2ViQXNzZW1ibHlNZW1vcnk6OkpTV2ViQXNzZW1ibHlNZW1vcnkoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKLSAgICAs
IG1fbWVtb3J5KFdhc206Ok1lbW9yeTo6Y3JlYXRlKCkucmVsZWFzZU5vbk51bGwoKSkKKyAgICAs
IG1fbWVtb3J5KFdhc206Ok1lbW9yeTo6Y3JlYXRlKCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggNGYyNjAyNDJkNmZiNTcwN2Y3NWRlNzFkMTM2ZDZhNjliMDEyYWZm
OC4uMTQwNGU2NzgyYTliNjJmYzBhMWJjMzZlN2I1NDQ4NDdlMjJlNmQyYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1v
cnlDb25zdHJ1Y3Rvci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeShFeGVjU3RhdGUqIGV4
ZWMKICAgICBhdXRvKiBqc01lbW9yeSA9IEpTV2ViQXNzZW1ibHlNZW1vcnk6OmNyZWF0ZShleGVj
LCB2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5XZWJBc3NlbWJseU1lbW9yeVN0cnVj
dHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCi0gICAgUmVmUHRyPFdhc206Ok1lbW9yeT4gbWVtb3J5ID0gV2FzbTo6TWVtb3J5
OjpjcmVhdGUoaW5pdGlhbFBhZ2VDb3VudCwgbWF4aW11bVBhZ2VDb3VudCwKKyAgICBSZWZQdHI8
V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OnRyeUNyZWF0ZShpbml0aWFsUGFn
ZUNvdW50LCBtYXhpbXVtUGFnZUNvdW50LAogICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpO
b3RpZnlQcmVzc3VyZSkgeyB2bS5oZWFwLmNvbGxlY3RBc3luYyhDb2xsZWN0aW9uU2NvcGU6OkZ1
bGwpOyB9LAogICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7
IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAg
WyZ2bSwganNNZW1vcnldIChXYXNtOjpNZW1vcnk6Okdyb3dTdWNjZXNzLCBXYXNtOjpQYWdlQ291
bnQgb2xkUGFnZUNvdW50LCBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50KSB7IGpzTWVtb3J5
LT5ncm93U3VjY2Vzc0NhbGxiYWNrKHZtLCBvbGRQYWdlQ291bnQsIG5ld1BhZ2VDb3VudCk7IH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IGU4Y2E1OGNiZjYwYWM0NmFiMjMwZWUzZGYwNGE1ZjRh
MzAyOGYyZjIuLjM5YTY2ZmFmNjYzODZmN2NkYzhlNjNlNjQ0YWUwZmNmNzA5ODEyYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1v
ZHVsZVJlY29yZC5jcHAKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9i
agogICAgICAgICBpZiAoISFtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0aW9uICYmICFo
YXNUYWJsZUltcG9ydCkgewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1vZHVsZUluZm9y
bWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaXNJbXBvcnQoKSk7CiAgICAgICAgICAgICAvLyBXZSBj
cmVhdGUgYSBUYWJsZSB3aGVuIGl0J3MgYSBUYWJsZSBkZWZpbml0aW9uLgotICAgICAgICAgICAg
UmVmUHRyPFdhc206OlRhYmxlPiB3YXNtVGFibGUgPSBXYXNtOjpUYWJsZTo6Y3JlYXRlKG1vZHVs
ZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaW5pdGlhbCgpLCBtb2R1bGVJbmZvcm1hdGlv
bi50YWJsZUluZm9ybWF0aW9uLm1heGltdW0oKSk7CisgICAgICAgICAgICBSZWZQdHI8V2FzbTo6
VGFibGU+IHdhc21UYWJsZSA9IFdhc206OlRhYmxlOjp0cnlDcmVhdGUobW9kdWxlSW5mb3JtYXRp
b24udGFibGVJbmZvcm1hdGlvbi5pbml0aWFsKCksIG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5m
b3JtYXRpb24ubWF4aW11bSgpKTsKICAgICAgICAgICAgIGlmICghd2FzbVRhYmxlKQogICAgICAg
ICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihl
eGVjLCB2bSwgImNvdWxkbid0IGNyZWF0ZSBUYWJsZSIpKTsKICAgICAgICAgICAgIEpTV2ViQXNz
ZW1ibHlUYWJsZSogdGFibGUgPSBKU1dlYkFzc2VtYmx5VGFibGU6OmNyZWF0ZShleGVjLCB2bSwg
Z2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseVRhYmxlU3RydWN0dXJlKCksIHdhc21UYWJsZS5yZWxl
YXNlTm9uTnVsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwCmluZGV4IDA3NmM3ODc4ZjVk
ZTI2ZWNiMDE3YmY4NTc4OGIwMDE5N2VhMzJiMTUuLjVhNjk1MjA4NTBkZTAxOTFhZTI3M2I0N2Zi
OTliMzM3YzE3ZTg2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcApAQCAtOTAsNyArOTAs
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFz
c2VtYmx5VGFibGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9CiAgICAgfQogCi0gICAgUmVm
UHRyPFdhc206OlRhYmxlPiB3YXNtVGFibGUgPSBXYXNtOjpUYWJsZTo6Y3JlYXRlKGluaXRpYWws
IG1heGltdW0pOworICAgIFJlZlB0cjxXYXNtOjpUYWJsZT4gd2FzbVRhYmxlID0gV2FzbTo6VGFi
bGU6OnRyeUNyZWF0ZShpbml0aWFsLCBtYXhpbXVtKTsKICAgICBpZiAoIXdhc21UYWJsZSkgewog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93
U2NvcGUsCiAgICAgICAgICAgICBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJjb3VsZG4ndCBjcmVh
dGUgVGFibGUiX3MpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFy
S2V5LmNwcAppbmRleCA0NzZkMmU1ZTM3N2E1OTQwMGE2NTU0MjYyNTg3NzU4YTdlZTk3MmYyLi5k
MGZiM2UwNTM2ZmVkYzkyNzFjZTFkZTkzMGFiNDdjYjU3N2E0OTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9u
Q2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCBS
ZWZQdHI8QXJyYXlCdWZmZXI+IENETVNlc3Npb25DbGVhcktleTo6Y2FjaGVkS2V5Rm9yS2V5SUQo
Y29uc3QgU3RyaW5nJiBrZXlJZCkgYwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1
dG8ga2V5RGF0YSA9IG1fY2FjaGVkS2V5cy5nZXQoa2V5SWQpOwotICAgIFJlZlB0cjxVaW50OEFy
cmF5PiBrZXlEYXRhQXJyYXkgPSBVaW50OEFycmF5OjpjcmVhdGUoa2V5RGF0YS5kYXRhKCksIGtl
eURhdGEuc2l6ZSgpKTsKKyAgICBhdXRvIGtleURhdGFBcnJheSA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShrZXlEYXRhLmRhdGEoKSwga2V5RGF0YS5zaXplKCkpOwogICAgIHJldHVybiBrZXlEYXRhQXJy
YXktPnVuc2hhcmVkQnVmZmVyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCA3
OWVjODkxZDgxM2NkOTFiNzA4NzE5Zjc0MmQ5NjlhN2ZmMjFmNzA5Li42MmIzMTkyYTJmNjM4Y2M5
NGQ5MzJhZThiNWNmYmE0NDBhYzFlNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC0z
MDgsNyArMzA4LDcgQEAgc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29u
dGV4dChOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnksIEpTQ29udGUKICAgICAgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbmFtZSA9IE9wYXF1ZUpT
U3RyaW5nOjpjcmVhdGUoa2V5KTsKKyAgICAgICAgYXV0byBuYW1lID0gT3BhcXVlSlNTdHJpbmc6
OnRyeUNyZWF0ZShrZXkpOwogICAgICAgICBKU09iamVjdFNldFByb3BlcnR5KFtjb250ZXh0IEpT
R2xvYmFsQ29udGV4dFJlZl0sIHJlc3VsdE9iamVjdCwgbmFtZS5nZXQoKSwgW3ZhbHVlIEpTVmFs
dWVSZWZdLCAwLCAmZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAg
ICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyLmNwcAppbmRleCA5ZjBhMjVmZDNmYmM4YjMyZGY5ODY0MTFmNGExNTVjZmI2MTk0OTQ5
Li41NmExM2NhZWFiZDRlM2ZkNGI4YmMzYWU2ZjdhNjgxZTMyZGQyODRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcApAQCAtNjcsNyArNjcs
NyBAQCBBdWRpb0J1ZmZlcjo6QXVkaW9CdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywg
c2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdAogICAgIG1fY2hhbm5lbHMucmVzZXJ2ZUNhcGFj
aXR5KG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bWJlck9mQ2hhbm5lbHM7ICsraSkgewotICAgICAgICBhdXRvIGNoYW5uZWxEYXRhQXJyYXkgPSBG
bG9hdDMyQXJyYXk6OmNyZWF0ZShtX2xlbmd0aCk7CisgICAgICAgIGF1dG8gY2hhbm5lbERhdGFB
cnJheSA9IEZsb2F0MzJBcnJheTo6dHJ5Q3JlYXRlKG1fbGVuZ3RoKTsKICAgICAgICAgaWYgKCFj
aGFubmVsRGF0YUFycmF5KSB7CiAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTg2LDcgKzg2LDcgQEAgQXVkaW9CdWZmZXI6OkF1ZGlvQnVmZmVyKEF1ZGlv
QnVzJiBidXMpCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyA9IGJ1cy5udW1iZXJPZkNo
YW5uZWxzKCk7CiAgICAgbV9jaGFubmVscy5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZDaGFubmVs
cyk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkg
ewotICAgICAgICBhdXRvIGNoYW5uZWxEYXRhQXJyYXkgPSBGbG9hdDMyQXJyYXk6OmNyZWF0ZSht
X2xlbmd0aCk7CisgICAgICAgIGF1dG8gY2hhbm5lbERhdGFBcnJheSA9IEZsb2F0MzJBcnJheTo6
dHJ5Q3JlYXRlKG1fbGVuZ3RoKTsKICAgICAgICAgaWYgKCFjaGFubmVsRGF0YUFycmF5KSB7CiAg
ICAgICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTExNSw5ICsx
MTUsNyBAQCBFeGNlcHRpb25PcjxSZWY8RmxvYXQzMkFycmF5Pj4gQXVkaW9CdWZmZXI6OmdldENo
YW5uZWxEYXRhKHVuc2lnbmVkIGNoYW5uZWxJbmRleAogICAgIGlmIChjaGFubmVsSW5kZXggPj0g
bV9jaGFubmVscy5zaXplKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJv
ciB9OwogICAgIGF1dG8mIGNoYW5uZWxEYXRhID0gKm1fY2hhbm5lbHNbY2hhbm5lbEluZGV4XTsK
LSAgICBhdXRvIGFycmF5ID0gRmxvYXQzMkFycmF5OjpjcmVhdGUoY2hhbm5lbERhdGEudW5zaGFy
ZWRCdWZmZXIoKSwgY2hhbm5lbERhdGEuYnl0ZU9mZnNldCgpLCBjaGFubmVsRGF0YS5sZW5ndGgo
KSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOwotICAgIHJldHVybiBhcnJheS5yZWxlYXNl
Tm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShjaGFubmVsRGF0YS51
bnNoYXJlZEJ1ZmZlcigpLCBjaGFubmVsRGF0YS5ieXRlT2Zmc2V0KCksIGNoYW5uZWxEYXRhLmxl
bmd0aCgpKTsKIH0KIAogRmxvYXQzMkFycmF5KiBBdWRpb0J1ZmZlcjo6Y2hhbm5lbERhdGEodW5z
aWduZWQgY2hhbm5lbEluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ2ci9WUkV5ZVBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9W
UkV5ZVBhcmFtZXRlcnMuY3BwCmluZGV4IDI1ZmI4ZThiN2Q1NTVkN2FkMGQzNDkxNzQ5OTdkYjMy
OTcwY2M5YTkuLjAxMjY0YmQ4NjkyNGZjZmNjYzhjMmM1ZTNhNzhmNzIwNjM5MTE2YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJFeWVQYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRXllUGFyYW1ldGVycy5jcHAKQEAg
LTM5LDEyICszOSwxMSBAQCBWUkV5ZVBhcmFtZXRlcnM6OlZSRXllUGFyYW1ldGVycyhjb25zdCBG
bG9hdFBvaW50M0QmIG9mZnNldCwgY29uc3QgVlJQbGF0Zm9ybURpcwogUmVmPEZsb2F0MzJBcnJh
eT4gVlJFeWVQYXJhbWV0ZXJzOjpvZmZzZXQoKSBjb25zdAogewogICAgIGF1dG8gb2Zmc2V0ID0g
RmxvYXQzMkFycmF5OjpjcmVhdGUoMyk7Ci0gICAgUkVMRUFTRV9BU1NFUlQob2Zmc2V0KTsKICAg
ICBmbG9hdCogb2Zmc2V0RGF0YSA9IG9mZnNldC0+ZGF0YSgpOwogICAgIG9mZnNldERhdGFbMF0g
PSBtX29mZnNldC54KCk7CiAgICAgb2Zmc2V0RGF0YVsxXSA9IG1fb2Zmc2V0LnkoKTsKICAgICBv
ZmZzZXREYXRhWzJdID0gbV9vZmZzZXQueigpOwotICAgIHJldHVybiBvZmZzZXQucmVsZWFzZU5v
bk51bGwoKTsKKyAgICByZXR1cm4gb2Zmc2V0OwogfQogCiBjb25zdCBWUkZpZWxkT2ZWaWV3JiBW
UkV5ZVBhcmFtZXRlcnM6OmZpZWxkT2ZWaWV3KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VidnIvVlJGcmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHAKaW5kZXggNjVjM2RiYWQ2OGRjMmU4NGExMzYxYzY2
MGExZjdlZWU4OThjMWZiZC4uYjIxNWI1NWZjNmMwMzFiMDdkNjljNzJkNWZhMGQ5ZTVlYmE3MWMw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAgVlJGcmFtZURhdGE6OlZSRnJhbWVEYXRhKCkKIHN0YXRpYyBSZWY8Rmxv
YXQzMkFycmF5PiBtYXRyaXhUb0FycmF5KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRy
aXgpCiB7CiAgICAgYXV0byBjb2x1bW5NYWpvck1hdHJpeCA9IG1hdHJpeC50b0NvbHVtbk1ham9y
RmxvYXRBcnJheSgpOwotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShjb2x1bW5NYWpv
ck1hdHJpeC5kYXRhKCksIDE2KS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMy
QXJyYXk6OmNyZWF0ZShjb2x1bW5NYWpvck1hdHJpeC5kYXRhKCksIDE2KTsKIH0KIAogUmVmPEZs
b2F0MzJBcnJheT4gVlJGcmFtZURhdGE6OmxlZnRQcm9qZWN0aW9uTWF0cml4KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJQb3NlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJQb3NlLmNwcAppbmRleCA4ZTNiYWY1YTJmMDg0NTA5
NTY0OGI4MWRhMjlkZGJkZTlmZWY2NDRiLi4xNjg2YjlhNWFiN2RmN2MzN2FlM2NlMjIzNTcwZDA0
OWI1MGU5NzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSUG9z
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUlBvc2UuY3BwCkBAIC0z
Miw3ICszMiw3IEBAIHN0YXRpYyBSZWZQdHI8RmxvYXQzMkFycmF5PiBvcHRpb25hbEZsb2F0M1Rv
SlNDQXJyYXkoY29uc3Qgc3RkOjpvcHRpb25hbDxWUlBsYXRmCiAgICAgaWYgKCFkYXRhKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShk
YXRhLT5kYXRhLCAzKS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMyQXJyYXk6
OmNyZWF0ZShkYXRhLT5kYXRhLCAzKTsKIH0KIAogUmVmUHRyPEZsb2F0MzJBcnJheT4gVlJQb3Nl
Ojpwb3NpdGlvbigpIGNvbnN0CkBAIC00Miw3ICs0Miw3IEBAIFJlZlB0cjxGbG9hdDMyQXJyYXk+
IFZSUG9zZTo6cG9zaXRpb24oKSBjb25zdAogCiAgICAgYXV0byYgcG9zaXRpb24gPSAqbV90cmFj
a2luZ0luZm8ucG9zaXRpb247CiAgICAgZmxvYXQgcG9zaXRpb25EYXRhWzNdID0geyBwb3NpdGlv
bi54KCksIHBvc2l0aW9uLnkoKSwgcG9zaXRpb24ueigpIH07Ci0gICAgcmV0dXJuIEZsb2F0MzJB
cnJheTo6Y3JlYXRlKHBvc2l0aW9uRGF0YSwgMykucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1
cm4gRmxvYXQzMkFycmF5OjpjcmVhdGUocG9zaXRpb25EYXRhLCAzKTsKIH0KIAogUmVmUHRyPEZs
b2F0MzJBcnJheT4gVlJQb3NlOjpsaW5lYXJWZWxvY2l0eSgpIGNvbnN0CkBAIC02Miw3ICs2Miw3
IEBAIFJlZlB0cjxGbG9hdDMyQXJyYXk+IFZSUG9zZTo6b3JpZW50YXRpb24oKSBjb25zdAogCiAg
ICAgYXV0byYgb3JpZW50YXRpb24gPSAqbV90cmFja2luZ0luZm8ub3JpZW50YXRpb247CiAgICAg
ZmxvYXQgb3JpZW50YXRpb25EYXRhWzRdID0geyBvcmllbnRhdGlvbi54LCBvcmllbnRhdGlvbi55
LCBvcmllbnRhdGlvbi56LCBvcmllbnRhdGlvbi53IH07Ci0gICAgcmV0dXJuIEZsb2F0MzJBcnJh
eTo6Y3JlYXRlKG9yaWVudGF0aW9uRGF0YSwgNCkucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1
cm4gRmxvYXQzMkFycmF5OjpjcmVhdGUob3JpZW50YXRpb25EYXRhLCA0KTsKIH0KIAogUmVmUHRy
PEZsb2F0MzJBcnJheT4gVlJQb3NlOjphbmd1bGFyVmVsb2NpdHkoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUlN0YWdlUGFyYW1ldGVycy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSU3RhZ2VQYXJhbWV0ZXJzLmNwcAppbmRleCAy
ZGEwNzQzYjQ0YzdlYzhmODMwOTI1OWJmNGRhMjU4N2FkZjI4NmUyLi5iNmU1NzMyNmM1MjRhNTc2
OTczYmMzYjZhN2M4NjRkODE4ODIyNTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnZyL1ZSU3RhZ2VQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnZyL1ZSU3RhZ2VQYXJhbWV0ZXJzLmNwcApAQCAtNDEsNyArNDEsNyBAQCBWUlN0YWdl
UGFyYW1ldGVyczo6VlJTdGFnZVBhcmFtZXRlcnMoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHNpdHRpbmdUb1N0YW5kaQogUmVmPEZsb2F0MzJBcnJheT4gVlJTdGFnZVBhcmFtZXRlcnM6OnNp
dHRpbmdUb1N0YW5kaW5nVHJhbnNmb3JtKCkgY29uc3QKIHsKICAgICBhdXRvIGNvbHVtbk1ham9y
TWF0cml4ID0gbV9zaXR0aW5nVG9TdGFuZGluZ1RyYW5zZm9ybS50b0NvbHVtbk1ham9yRmxvYXRB
cnJheSgpOwotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZShjb2x1bW5NYWpvck1hdHJp
eC5kYXRhKCksIDE2KS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBGbG9hdDMyQXJyYXk6
OmNyZWF0ZShjb2x1bW5NYWpvck1hdHJpeC5kYXRhKCksIDE2KTsKIH0KIAogZmxvYXQgVlJTdGFn
ZVBhcmFtZXRlcnM6OnNpemVYKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaAppbmRleCA2
NGNlZGMxNjhmZDBlMmNhMDA0ODQwMDAzNmY4MzQxMGJiZmZkMjFiLi40ODRjOGQ4MWU3YmM2MWFh
ZTM5NmJhYzU4Y2E2YzIzNGNiZmQ5OWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCkBAIC05
OSw4ICs5OSw3IEBAIGlubGluZSBib29sIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6
OmVucXVldWUoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+JiYKICAgICB9CiAgICAgYXV0byBsZW5n
dGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICBhdXRvIGNodW5rID0gSlNDOjpVaW50OEFy
cmF5OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwotICAgIEFTU0VSVChjaHVu
ayk7Ci0gICAgZW5xdWV1ZShzdGF0ZSwgdG9KUygmc3RhdGUsICZnbG9iYWxPYmplY3QsIGNodW5r
LmdldCgpKSk7CisgICAgZW5xdWV1ZShzdGF0ZSwgdG9KUygmc3RhdGUsICZnbG9iYWxPYmplY3Qs
IGNodW5rLnB0cigpKSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGJhOTQ1Y2Q3NzFlNGFmOWU4NWY2N2Y4NTcyMDQ4NjI5
NTc0NGM2MDkuLmFmN2FiM2E2YzdlNGIyN2NjMzcyZDZkZjIwYWI2MTJhNDcxNTY1MzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcApAQCAtMjA5NiwzMSArMjA5NiwzMSBAQCBjbGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENs
b25lQmFzZSB7CiAgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSBnZXRKU1ZhbHVlKERhdGFW
aWV3OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgSW50OEFycmF5VGFn
OgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2Jq
ZWN0LCBJbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwg
bGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhl
YywgbV9nbG9iYWxPYmplY3QsIEludDhBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZm
ZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIFVpbnQ4QXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZp
ZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZN
b3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAg
ICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQ4QXJy
YXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5n
ZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBVaW50OENsYW1w
ZWRBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBt
X2dsb2JhbE9iamVjdCwgVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVm
ZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZl
clZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQ4Q2xhbXBlZEFycmF5Ojp0
cnlDcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgSW50MTZBcnJheVRhZzoK
LSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVj
dCwgSW50MTZBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBs
ZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVj
LCBtX2dsb2JhbE9iamVjdCwgSW50MTZBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZm
ZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIFVpbnQxNkFycmF5VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZmZXJW
aWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBVaW50MTZBcnJheTo6Y3JlYXRlKFdU
Rk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAg
ICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDE2
QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3Ro
KS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBJbnQzMkFy
cmF5VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xv
YmFsT2JqZWN0LCBJbnQzMkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVP
ZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9K
UyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBJbnQzMkFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShh
cnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIGNhc2UgVWludDMyQXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJh
eUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQzMkFycmF5Ojpj
cmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwor
ICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0
LCBVaW50MzJBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0
LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNl
IEZsb2F0MzJBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9l
eGVjLCBtX2dsb2JhbE9iamVjdCwgRmxvYXQzMkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1
ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAgYXJyYXlCdWZm
ZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBGbG9hdDMyQXJyYXk6OnRyeUNy
ZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBGbG9hdDY0QXJyYXlUYWc6Ci0g
ICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3Qs
IEZsb2F0NjRBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBs
ZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVj
LCBtX2dsb2JhbE9iamVjdCwgRmxvYXQ2NEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShhcnJheUJ1
ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKaW5k
ZXggMDgwMjA5OTU0NGM4NGQzZGIxODM3MDYzYjQ5N2U1OWRiZGZiNmZlNS4uM2Q4MDAyYzlhOTU0
OWEzMmIxMThhMGZjNGUyOWJjZDljN2FiZDJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcApAQCAtNjI5LDcgKzYyOSw3IEBA
IGF1dG8gQ3J5cHRvS2V5UlNBOjphbGdvcml0aG0oKSBjb25zdCAtPiBLZXlBbGdvcml0aG0KICAg
ICAgICAgQ3J5cHRvUnNhSGFzaGVkS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICAgICAgcmVzdWx0
Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShhbGdvcml0
aG1JZGVudGlmaWVyKCkpOwogICAgICAgICByZXN1bHQubW9kdWx1c0xlbmd0aCA9IG1vZHVsdXNM
ZW5ndGg7Ci0gICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgICAg
IHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShwdWJsaWNFeHBv
bmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CiAgICAgICAgIHJlc3VsdC5oYXNo
Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShtX2hhc2gp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTYzNyw3ICs2MzcsNyBAQCBhdXRv
IENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkgY29uc3QgLT4gS2V5QWxnb3JpdGhtCiAgICAgQ3J5
cHRvUnNhS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICByZXN1bHQubmFtZSA9IENyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKGFsZ29yaXRobUlkZW50aWZpZXIoKSk7CiAg
ICAgcmVzdWx0Lm1vZHVsdXNMZW5ndGggPSBtb2R1bHVzTGVuZ3RoOwotICAgIHJlc3VsdC5wdWJs
aWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1
YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgcmVzdWx0LnB1YmxpY0V4cG9uZW50ID0gVWludDhB
cnJheTo6dHJ5Q3JlYXRlKHB1YmxpY0V4cG9uZW50LmRhdGEoKSwgcHVibGljRXhwb25lbnQuc2l6
ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0tleVJTQU1hYy5jcHAKaW5kZXggZThlYjg0ZWEwZTUyNDYwZTJkNTc4YTZiODc4
OWQ5N2YzZTIwNDE1YS4uOTRmYzFhNzYyOTMzMmY3ZTgxZDAxMWY5MGYxNTM2MDRkNjJmNjBmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcApAQCAt
MjIyLDcgKzIyMiw3IEBAIGF1dG8gQ3J5cHRvS2V5UlNBOjphbGdvcml0aG0oKSBjb25zdCAtPiBL
ZXlBbGdvcml0aG0KICAgICAgICAgQ3J5cHRvUnNhS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICAg
ICAgcmVzdWx0Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFt
ZShhbGdvcml0aG1JZGVudGlmaWVyKCkpOwogICAgICAgICByZXN1bHQubW9kdWx1c0xlbmd0aCA9
IDA7Ci0gICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZSgw
KTsKKyAgICAgICAgcmVzdWx0LnB1YmxpY0V4cG9uZW50ID0gVWludDhBcnJheTo6dHJ5Q3JlYXRl
KDApOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMjMyLDcgKzIzMiw3IEBA
IGF1dG8gQ3J5cHRvS2V5UlNBOjphbGdvcml0aG0oKSBjb25zdCAtPiBLZXlBbGdvcml0aG0KICAg
ICAgICAgQ3J5cHRvUnNhSGFzaGVkS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICAgICAgcmVzdWx0
Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShhbGdvcml0
aG1JZGVudGlmaWVyKCkpOwogICAgICAgICByZXN1bHQubW9kdWx1c0xlbmd0aCA9IG1vZHVsdXNM
ZW5ndGg7Ci0gICAgICAgIHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgICAg
IHJlc3VsdC5wdWJsaWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShwdWJsaWNFeHBv
bmVudC5kYXRhKCksIHB1YmxpY0V4cG9uZW50LnNpemUoKSk7CiAgICAgICAgIHJlc3VsdC5oYXNo
Lm5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShtX2hhc2gp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTI0MCw3ICsyNDAsNyBAQCBhdXRv
IENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkgY29uc3QgLT4gS2V5QWxnb3JpdGhtCiAgICAgQ3J5
cHRvUnNhS2V5QWxnb3JpdGhtIHJlc3VsdDsKICAgICByZXN1bHQubmFtZSA9IENyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKGFsZ29yaXRobUlkZW50aWZpZXIoKSk7CiAg
ICAgcmVzdWx0Lm1vZHVsdXNMZW5ndGggPSBtb2R1bHVzTGVuZ3RoOwotICAgIHJlc3VsdC5wdWJs
aWNFeHBvbmVudCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShwdWJsaWNFeHBvbmVudC5kYXRhKCksIHB1
YmxpY0V4cG9uZW50LnNpemUoKSk7CisgICAgcmVzdWx0LnB1YmxpY0V4cG9uZW50ID0gVWludDhB
cnJheTo6dHJ5Q3JlYXRlKHB1YmxpY0V4cG9uZW50LmRhdGEoKSwgcHVibGljRXhwb25lbnQuc2l6
ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJp
eFJlYWRPbmx5LmNwcAppbmRleCBkZWFhZGZhN2Y4MTFlNzQ4ZjNlYjEzNzE0Yjk1ZTcwNzZkOGIy
YzRlLi43MzE3NTRlNDY2ZjM3MzZlOWNjNDdkNzMwNDc1MjU3ZjdlYTViZmU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5jcHAKQEAgLTM0NSw3ICszNDUsNyBAQCBSZWY8
RE9NUG9pbnQ+IERPTU1hdHJpeFJlYWRPbmx5Ojp0cmFuc2Zvcm1Qb2ludChET01Qb2ludEluaXQm
JiBwb2ludEluaXQpCiAKIEV4Y2VwdGlvbk9yPFJlZjxGbG9hdDMyQXJyYXk+PiBET01NYXRyaXhS
ZWFkT25seTo6dG9GbG9hdDMyQXJyYXkoKSBjb25zdAogewotICAgIGF1dG8gYXJyYXkzMiA9IEZs
b2F0MzJBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgxNik7CisgICAgYXV0byBhcnJheTMyID0g
RmxvYXQzMkFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKDE2KTsKICAgICBpZiAoIWFycmF5
MzIpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJPdXQgb2YgbWVt
b3J5Il9zIH07CiAKQEAgLTM3MSw3ICszNzEsNyBAQCBFeGNlcHRpb25PcjxSZWY8RmxvYXQzMkFy
cmF5Pj4gRE9NTWF0cml4UmVhZE9ubHk6OnRvRmxvYXQzMkFycmF5KCkgY29uc3QKIAogRXhjZXB0
aW9uT3I8UmVmPEZsb2F0NjRBcnJheT4+IERPTU1hdHJpeFJlYWRPbmx5Ojp0b0Zsb2F0NjRBcnJh
eSgpIGNvbnN0CiB7Ci0gICAgYXV0byBhcnJheTY0ID0gRmxvYXQ2NEFycmF5OjpjcmVhdGVVbmlu
aXRpYWxpemVkKDE2KTsKKyAgICBhdXRvIGFycmF5NjQgPSBGbG9hdDY0QXJyYXk6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQoMTYpOwogICAgIGlmICghYXJyYXk2NCkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIk91dCBvZiBtZW1vcnkiX3MgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5jcHAKaW5kZXggMmViNDFjOWMxMTQ0NGQ2MWJkZGYzYWIxNDJiOTViZTM4NDE5NWM3
OC4uYTI0YTUzNjI2ODkwYThhOTFkMTE3MzhjYTlhNThhNDUzNzFiYjhiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuY3BwCkBAIC03OCw3ICs3OCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxGb250RmFjZT4+
IEZvbnRGYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGZhCiAg
ICAgICAgIFsmXSAoUmVmUHRyPEFycmF5QnVmZmVyPiYgYXJyYXlCdWZmZXIpIC0+IEV4Y2VwdGlv
bk9yPHZvaWQ+IHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpOwogICAgICAgICAgICAgYXV0byBhcnJheUJ1ZmZlclZpZXcgPSBKU0M6
OlVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7
Ci0gICAgICAgICAgICBkYXRhUmVxdWlyZXNBc3luY2hyb25vdXNMb2FkaW5nID0gcG9wdWxhdGVG
b250RmFjZVdpdGhBcnJheUJ1ZmZlcihyZXN1bHQtPmJhY2tpbmcoKSwgYXJyYXlCdWZmZXJWaWV3
LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgZGF0YVJlcXVpcmVzQXN5bmNocm9ub3Vz
TG9hZGluZyA9IHBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIocmVzdWx0LT5iYWNraW5n
KCksIFdURk1vdmUoYXJyYXlCdWZmZXJWaWV3KSk7CiAgICAgICAgICAgICByZXR1cm4geyB9Owog
ICAgICAgICB9CiAgICAgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5j
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXIuY3BwCmluZGV4IDllZWI3
Nzk0NWFlOTIxNGZkYjgwMGMwYmUwY2EzOTA1ODUzNTRmYjUuLmIwNDljYzFlMzRhNzJiYjkyMmY0
MTNkM2I0ZDJmYzI0ZjExODQ5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0
RW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmNwcApAQCAt
NDAsNyArNDAsNyBAQCBSZWZQdHI8VWludDhBcnJheT4gVGV4dEVuY29kZXI6OmVuY29kZShTdHJp
bmcmJiBpbnB1dCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBuZWVkIHRv
IGFsbG9jYXRlIGEgQ1N0cmluZyB0byBlbmNvZGUgaW50byBhIFVpbnQ4QXJyYXkuCiAgICAgQ1N0
cmluZyB1dGY4ID0gaW5wdXQudXRmOCgpOwotICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0
aCgpKTsKKyAgICByZXR1cm4gVWludDhBcnJheTo6dHJ5Q3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAppbmRleCA5ZmZjNDA4ZWY2MDI1ZDJlZTJjNTYxMzNjYjc1
ZWVlOGI4NjA5ZWU5Li4zYjJhMjM2NjNkMTA3NzMxZDMyNzFiNjQzODEzNDUxYTEzMTg3NTZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCkBAIC05OSwxNSArOTksMTMgQEAgSW1hZ2VEYXRh
OjpJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICA6IG1fc2l6ZShzaXplKQogICAg
ICwgbV9kYXRhKFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKChzaXplLmFy
ZWEoKSAqIDQpLnVuc2FmZUdldCgpKSkKIHsKLSAgICBBU1NFUlQobV9kYXRhKTsKIH0KIAogSW1h
Z2VEYXRhOjpJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSwgUmVmPFVpbnQ4Q2xhbXBlZEFy
cmF5PiYmIGJ5dGVBcnJheSkKICAgICA6IG1fc2l6ZShzaXplKQogICAgICwgbV9kYXRhKFdURk1v
dmUoYnl0ZUFycmF5KSkKIHsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTighbV9kYXRhIHx8IChzaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdl
dCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oKHNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkgPD0gbV9kYXRhLT5s
ZW5ndGgoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCmluZGV4IDk4YjFmMTA4Zjk2
ZjFlYmFmODdjMGFkZjQ3ODdmNjViZTRkNmNhNzYuLmEwZmZhMjk4NzE4YmYyNzdlOGExNmI2MTNl
NTc1OGE3ODcyYzIyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaApAQCAtMzQsMjUgKzM0LDI1
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSW1hZ2VE
YXRhIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VEYXRhPiB7CitjbGFzcyBJbWFnZURhdGEgOiBw
dWJsaWMgUmVmQ291bnRlZDxJbWFnZURhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gpOwot
ICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYpOwotICAg
IHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIFJlZjxVaW50
OENsYW1wZWRBcnJheT4mJik7Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURh
dGE+PiBjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmLCB1bnNpZ25lZCBzdywgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gc2gpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRp
b25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlKHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZShjb25zdCBJ
bnRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNy
ZWF0ZShjb25zdCBJbnRTaXplJiwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IGNyZWF0ZShS
ZWY8VWludDhDbGFtcGVkQXJyYXk+JiYsIHVuc2lnbmVkIHN3LCBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBzaCk7CiAKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0K
ICAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NpemUud2lkdGgoKTsgfQogICAgIGlu
dCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NpemUuaGVpZ2h0KCk7IH0KIAotICAgIFVpbnQ4
Q2xhbXBlZEFycmF5KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAg
VWludDhDbGFtcGVkQXJyYXkqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEucHRyKCk7IH0K
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYpOwogICAg
IEltYWdlRGF0YShjb25zdCBJbnRTaXplJiwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmKTsKIAog
ICAgIEludFNpemUgbV9zaXplOwotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gbV9kYXRh
OworICAgIFJlZjxVaW50OENsYW1wZWRBcnJheT4gbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA3YzA0NTU1MDhkNTQ0YmE1OGZlNGU3NDNlYTViMmZj
MmEwNTMyOTMyLi4wNzY2ODM1MDdlODkyZDkzOWUwMzM1MzVmZWJkMDhkYWM3MGYwYjdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250
ZXh0LmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIGNvbnN0IEFycmF5QnVmZmVyVmlldyYKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gc2xpY2UgPSBVaW50OEFycmF5OjpjcmVhdGUo
ZGF0YS5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBkYXRhLmJ5dGVPZmZzZXQoKSArIGNoZWNrZWRC
eXRlU3JjT2Zmc2V0LnVuc2FmZUdldCgpLCBjaGVja2VkQnl0ZUxlbmd0aC51bnNhZmVHZXQoKSk7
CisgICAgYXV0byBzbGljZSA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShkYXRhLnBvc3NpYmx5U2hh
cmVkQnVmZmVyKCksIGRhdGEuYnl0ZU9mZnNldCgpICsgY2hlY2tlZEJ5dGVTcmNPZmZzZXQudW5z
YWZlR2V0KCksIGNoZWNrZWRCeXRlTGVuZ3RoLnVuc2FmZUdldCgpKTsKICAgICBpZiAoIXNsaWNl
KSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpPVVRfT0Zf
TUVNT1JZLCAiYnVmZmVyRGF0YSIsICJDb3VsZCBub3QgY3JlYXRlIGludGVybWVkaWF0ZSBBcnJh
eUJ1ZmZlclZpZXciKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxv
bmcgbG9uZyBvZmZzZXQsIGNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHNs
aWNlID0gVWludDhBcnJheTo6Y3JlYXRlKGRhdGEucG9zc2libHlTaGFyZWRCdWZmZXIoKSwgZGF0
YS5ieXRlT2Zmc2V0KCkgKyBjaGVja2VkQnl0ZVNyY09mZnNldC51bnNhZmVHZXQoKSwgY2hlY2tl
ZEJ5dGVMZW5ndGgudW5zYWZlR2V0KCkpOworICAgIGF1dG8gc2xpY2UgPSBVaW50OEFycmF5Ojp0
cnlDcmVhdGUoZGF0YS5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBkYXRhLmJ5dGVPZmZzZXQoKSAr
IGNoZWNrZWRCeXRlU3JjT2Zmc2V0LnVuc2FmZUdldCgpLCBjaGVja2VkQnl0ZUxlbmd0aC51bnNh
ZmVHZXQoKSk7CiAgICAgaWYgKCFzbGljZSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6T1VUX09GX01FTU9SWSwgImJ1ZmZlclN1YkRhdGEiLCAiQ291bGQg
bm90IGNyZWF0ZSBpbnRlcm1lZGlhdGUgQXJyYXlCdWZmZXJWaWV3Iik7CiAgICAgICAgIHJldHVy
bjsKQEAgLTQxMiw3ICs0MTIsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRJbnRlcm5hbGZvcm1hdFBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDMwogICAgICAgICBw
YXJhbXNbaV0gPSBzYW1wbGVzW2ldOwogI2VuZGlmCiAKLSAgICByZXR1cm4gSW50MzJBcnJheTo6
Y3JlYXRlKHBhcmFtcywgbnVtVmFsdWVzKTsKKyAgICByZXR1cm4gSW50MzJBcnJheTo6dHJ5Q3Jl
YXRlKHBhcmFtcywgbnVtVmFsdWVzKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0MzRGVudW0sIGNvbnN0IFZlY3RvcjxHQzNEZW51bT4m
KQpAQCAtMTc5NCw3ICsxNzk0LDcgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkNPTE9SX1dSSVRFTUFTSzoKICAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5BcnJheVBhcmFtZXRl
cihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09NUFJFU1NFRF9URVhUVVJF
X0ZPUk1BVFM6Ci0gICAgICAgIHJldHVybiBVaW50MzJBcnJheTo6Y3JlYXRlKG1fY29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXRzLmRhdGEoKSwgbV9jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMuc2l6ZSgp
KTsKKyAgICAgICAgcmV0dXJuIFVpbnQzMkFycmF5Ojp0cnlDcmVhdGUobV9jb21wcmVzc2VkVGV4
dHVyZUZvcm1hdHMuZGF0YSgpLCBtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5zaXplKCkpOwog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNVTExfRkFDRToKICAgICAgICAgcmV0dXJuIGdl
dEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNV
TExfRkFDRV9NT0RFOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNjIwYmRiMzBhMWI2MjkwNWMxMDI4YWMxYzMyZWRh
OGVjZGE2NjBhOC4uYWY3YTc3ZmRjMzg2MzYwYTUzY2I3YTU1YTQ4NDg0ZGJmYjU1ODRmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCkBAIC00NDQsNyArNDQ0LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRQYXJhbWV0ZXIoR0MzRGVudW0gcG5hbWUpCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6Q09MT1JfV1JJVEVNQVNLOgogICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhbkFycmF5UGFyYW1l
dGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT01QUkVTU0VEX1RFWFRV
UkVfRk9STUFUUzoKLSAgICAgICAgcmV0dXJuIFVpbnQzMkFycmF5OjpjcmVhdGUobV9jb21wcmVz
c2VkVGV4dHVyZUZvcm1hdHMuZGF0YSgpLCBtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5zaXpl
KCkpOworICAgICAgICByZXR1cm4gVWludDMyQXJyYXk6OnRyeUNyZWF0ZShtX2NvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0cy5kYXRhKCksIG1fY29tcHJlc3NlZFRleHR1cmVGb3JtYXRzLnNpemUoKSk7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q1VMTF9GQUNFOgogICAgICAgICByZXR1cm4g
Z2V0Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
Q1VMTF9GQUNFX01PREU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDg1NzRmY2ViZjk5MzMyZjIzNTEz
ZGIwYTdjMmQzZWEwYmVjODVjNjkuLmYxOGE4ZmJkMDkwZmI5NTRjOGRmZGM1OTI3NDc4MWZjYjNi
ZTllMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0yOTIyLDcgKzI5MjIsNyBAQCBXZWJHTEFueSBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3Jh
bSwgY29uc3QgV2ViRwogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtZnYob2JqZWN0
T3JaZXJvKHByb2dyYW0pLCBsb2NhdGlvbiwgdmFsdWUpOwogICAgICAgICBpZiAobGVuZ3RoID09
IDEpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWVbMF07Ci0gICAgICAgIHJldHVybiBGbG9hdDMy
QXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJh
eTo6dHJ5Q3JlYXRlKHZhbHVlLCBsZW5ndGgpOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlQ6IHsKICAgICAgICAgR0MzRGludCB2YWx1ZVs0XSA9IHswfTsKQEAgLTI5MzIs
NyArMjkzMiw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZv
cm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBjb25zdCBXZWJHCiAgICAgICAgICAgICBtX2NvbnRl
eHQtPmdldFVuaWZvcm1pdihvYmplY3RPclplcm8ocHJvZ3JhbSksIGxvY2F0aW9uLCB2YWx1ZSk7
CiAgICAgICAgIGlmIChsZW5ndGggPT0gMSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZVswXTsK
LSAgICAgICAgcmV0dXJuIEludDMyQXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKKyAgICAg
ICAgcmV0dXJuIEludDMyQXJyYXk6OnRyeUNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKTsKICAgICB9CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTDogewogICAgICAgICBHQzNEaW50IHZhbHVl
WzRdID0gezB9OwpAQCAtMzAyOCw3ICszMDI4LDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VmVydGV4QXR0cmliKEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmEK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfQVRUUklCX0FSUkFZX1RZUEU6CiAg
ICAgICAgIHJldHVybiBzdGF0ZS50eXBlOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNV
UlJFTlRfVkVSVEVYX0FUVFJJQjoKLSAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJheTo6Y3JlYXRl
KG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnZhbHVlLCA0KTsKKyAgICAgICAgcmV0dXJuIEZs
b2F0MzJBcnJheTo6dHJ5Q3JlYXRlKG1fdmVydGV4QXR0cmliVmFsdWVbaW5kZXhdLnZhbHVlLCA0
KTsKICAgICBkZWZhdWx0OgogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9FTlVNLCAiZ2V0VmVydGV4QXR0cmliIiwgImludmFsaWQgcGFyYW1ldGVy
IG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MjM1LDcgKzUyMzUsNyBAQCBS
ZWZQdHI8RmxvYXQzMkFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRXZWJHTEZs
b2F0QXJyYXlQYXJhbWV0ZXIoR0MzRAogICAgIGRlZmF1bHQ6CiAgICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAgICAgfQotICAgIHJldHVybiBGbG9hdDMyQXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVu
Z3RoKTsKKyAgICByZXR1cm4gRmxvYXQzMkFycmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7
CiB9CiAKIFJlZlB0cjxJbnQzMkFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRX
ZWJHTEludEFycmF5UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQpAQCAtNTI1NCw3ICs1MjU0LDcg
QEAgUmVmUHRyPEludDMyQXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFdlYkdM
SW50QXJyYXlQYXJhbWV0ZXIoR0MzRGVudW0KICAgICBkZWZhdWx0OgogICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgIH0KLSAgICByZXR1cm4gSW50MzJBcnJheTo6Y3JlYXRlKHZhbHVlLCBs
ZW5ndGgpOworICAgIHJldHVybiBJbnQzMkFycmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7
CiB9CiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y2hlY2tUZXh0dXJlQ29tcGxl
dGVuZXNzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgYm9vbCBwcmVwYXJlVG9EcmF3KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNw
cAppbmRleCA1OTE1YTc3MzE2ZWQ4YTAzMGE0ZTZkM2FkNzQxMDRjMTc4Y2FkOWQyLi5iMzQwNDYz
YTM5YjM5NzNkZGI4MjNjMDBhMGMxNzNlNTUxZmM4ZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtMTAxNCw3ICsx
MDE0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmV4dHJhY3RLZXlV
UklLZXlJREFuZENlcnRpZmljYXRlRnJvbUluaXREYXQKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGluaXREYXRhQnVmZmVyID0gaW5pdERhdGEtPnVuc2hhcmVkQnVmZmVyKCk7CiAKICAgICAvLyBV
c2UgYSBEYXRhVmlldyB0byByZWFkIHVpbnQzMiB2YWx1ZXMgZnJvbSB0aGUgYnVmZmVyLCBhcyBV
aW50MzJBcnJheSByZXF1aXJlcyB0aGUgcmVhZHMgYmUgYWxpZ25lZCBvbiA0LWJ5dGUgYm91bmRh
cmllcy4gCi0gICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRhVmlldyA9IEpTQzo6RGF0
YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGluaXREYXRhQnVmZmVy
LT5ieXRlTGVuZ3RoKCkpOworICAgIGF1dG8gaW5pdERhdGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6
Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVM
ZW5ndGgoKSk7CiAgICAgdWludDMyX3Qgb2Zmc2V0ID0gMDsKICAgICBib29sIHN0YXR1cyA9IHRy
dWU7CiAKQEAgLTEwMjMsNyArMTAyMyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAg
aWYgKCFzdGF0dXMgfHwgb2Zmc2V0ICsga2V5VVJJTGVuZ3RoID4gaW5pdERhdGEtPmxlbmd0aCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWZQdHI8VWludDE2QXJyYXk+IGtleVVS
SUFycmF5ID0gVWludDE2QXJyYXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIG9m
ZnNldCwga2V5VVJJTGVuZ3RoKTsKKyAgICBhdXRvIGtleVVSSUFycmF5ID0gVWludDE2QXJyYXk6
OnRyeUNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIG9mZnNldCwga2V5VVJJTGVuZ3Ro
KTsKICAgICBpZiAoIWtleVVSSUFycmF5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEw
MzUsNyArMTAzNSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRy
YWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAgaWYgKCFzdGF0dXMg
fHwgb2Zmc2V0ICsga2V5SURMZW5ndGggPiBpbml0RGF0YS0+bGVuZ3RoKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxVaW50OEFycmF5PiBrZXlJREFycmF5ID0gVWludDhB
cnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgb2Zmc2V0LCBrZXlJRExlbmd0
aCk7CisgICAgYXV0byBrZXlJREFycmF5ID0gVWludDhBcnJheTo6dHJ5Q3JlYXRlKGluaXREYXRh
QnVmZmVyLmNvcHlSZWYoKSwgb2Zmc2V0LCBrZXlJRExlbmd0aCk7CiAgICAgaWYgKCFrZXlJREFy
cmF5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0
aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAgaWYgKCFzdGF0dXMgfHwgb2Zmc2V0ICsgY2VydGlmaWNh
dGVMZW5ndGggPiBpbml0RGF0YS0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGNlcnRpZmljYXRlID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZm
ZXIpLCBvZmZzZXQsIGNlcnRpZmljYXRlTGVuZ3RoKTsKKyAgICBjZXJ0aWZpY2F0ZSA9IFVpbnQ4
QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwgb2Zmc2V0LCBjZXJ0aWZp
Y2F0ZUxlbmd0aCk7CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Yu
Y3BwCmluZGV4IDMyMzJiNzM1YTMzMWFhZWRhZTRkMTcyMDg2NWIxODQwMjBhNmNjNDUuLjcwOWMw
ODBkNGZmYjAyMTNjOGRiNmZkZDRjOGJmNzhhN2UxMjU2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC05OSw3ICs5OSw3IEBA
IFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5
UmVxdWVzdChjb25zdCBTdHJpbmcmLCBVCiAgICAgZGVzdGluYXRpb25VUkwgPSBTdHJpbmcoKTsK
IAogICAgIGF1dG8ga2V5UmVxdWVzdEJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoQ0ZEYXRh
R2V0Qnl0ZVB0cihrZXlSZXF1ZXN0LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGtleVJlcXVlc3Qu
Z2V0KCkpKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoa2V5UmVxdWVz
dEJ1ZmZlciksIDAsIGtleVJlcXVlc3RCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgcmV0dXJu
IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGtleVJlcXVlc3RCdWZmZXIpLCAwLCBrZXlS
ZXF1ZXN0QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CmluZGV4IGU4MjQ0OWE1MGZjYzhlOWI4MTdmYzc3ZTJhYTNhMDE5NWY2YTEyMjYuLmE5MjYwMmZk
NjljZDM3ZjE4OWFkMzRjYmNjMWE0YzJkZWU3NDQ1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAt
MTg5MywxMiArMTg5MywxMiBAQCBib29sIEFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5n
T2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UgogICAgICAgICBSZWZQ
dHI8SlNDOjpEYXRhVmlldz4gaW5pdERhdGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGlu
aXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7
CiAgICAgICAgIGluaXREYXRhVmlldy0+c2V0PHVpbnQzMl90PigwLCBrZXlVUklTaXplLCB0cnVl
KTsKIAotICAgICAgICBSZWZQdHI8VWludDE2QXJyYXk+IGtleVVSSUFycmF5ID0gVWludDE2QXJy
YXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDQsIGtleVVSSS5sZW5ndGgoKSk7
CisgICAgICAgIGF1dG8ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRh
QnVmZmVyLmNvcHlSZWYoKSwgNCwga2V5VVJJLmxlbmd0aCgpKTsKICAgICAgICAga2V5VVJJQXJy
YXktPnNldFJhbmdlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihTdHJpbmdWaWV3
KGtleVVSSSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0KCkpLCBrZXlVUkkubGVuZ3RoKCkg
LyBzaXplb2YodW5zaWduZWQgY2hhciksIDApOwogCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5n
dGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwotICAgICAgICBSZWZQdHI8VWludDhB
cnJheT4gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShpbml0RGF0YUJ1ZmZl
ciksIDAsIGJ5dGVMZW5ndGgpOwotICAgICAgICBpZiAoIW1fb3duZXItPnBsYXllcigpLT5rZXlO
ZWVkZWQoaW5pdERhdGEuZ2V0KCkpKQorICAgICAgICBhdXRvIGluaXREYXRhID0gVWludDhBcnJh
eTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKKyAgICAg
ICAgaWYgKCFtX293bmVyLT5wbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBzZXRSZXF1ZXN0Rm9yS2V5KGtleVVS
SSwgYXZSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXggNWVkYWM0NjNjZGQyOWZlY2I4MDkyZjQ5
MTM3ZjhmMmM2MjZlMDMyYy4uZThkZDNiNWFlYzgyOTNjZDVlZDk2ZTk4ZjEwMzVlZTUzZTI4Yzdi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24ubW0KQEAgLTE2NSwxMCArMTY1LDEwIEBAIFJlZlB0cjxVaW50OEFycmF5
PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluCiAKICAgICBpZiAoIW1fY2VydGlmaWNhdGUpIHsKICAgICAgICAgU3RyaW5nIGNlcnRp
ZmljYXRlU3RyaW5nKCJjZXJ0aWZpY2F0ZSJfcyk7Ci0gICAgICAgIFJlZlB0cjxVaW50OEFycmF5
PiBhcnJheSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShjZXJ0aWZpY2F0ZVN0cmluZy5sZW5ndGgoKSk7
CisgICAgICAgIGF1dG8gYXJyYXkgPSBVaW50OEFycmF5OjpjcmVhdGUoY2VydGlmaWNhdGVTdHJp
bmcubGVuZ3RoKCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBsZW5ndGggPSBjZXJ0
aWZpY2F0ZVN0cmluZy5sZW5ndGgoKTsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgICAgICAgYXJy
YXktPnNldChpLCBjZXJ0aWZpY2F0ZVN0cmluZ1tpXSk7Ci0gICAgICAgIHJldHVybiBhcnJheTsK
KyAgICAgICAgcmV0dXJuIFdURk1vdmUoYXJyYXkpOwogICAgIH0KIAogICAgIGlmICghbV9rZXlS
ZXF1ZXN0KSB7CkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZDb250ZW50S2V5
U2Vzc2lvbjo6cmVsZWFzZUtleXMoKQogICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbklkID09IFN0
cmluZyhwbGF5YmFja1Nlc3Npb25JZFZhbHVlKSkgewogICAgICAgICAgICAgICAgIExPRyhNZWRp
YSwgIkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpyZWxlYXNlS2V5cyglcCkgLSBmb3Vu
ZCBzZXNzaW9uLCBzZW5kaW5nIGV4cGlyYXRpb24gbWVzc2FnZSIpOwogICAgICAgICAgICAgICAg
IG1fZXhwaXJlZFNlc3Npb24gPSBleHBpcmVkU2Vzc2lvbkRhdGE7Ci0gICAgICAgICAgICAgICAg
bV9jbGllbnQtPnNlbmRNZXNzYWdlKFVpbnQ4QXJyYXk6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oW21fZXhwaXJlZFNlc3Npb24gYnl0ZXNdKSwgW21fZXhwaXJlZFNlc3Npb24g
bGVuZ3RoXSkuZ2V0KCksIGVtcHR5U3RyaW5nKCkpOworICAgICAgICAgICAgICAgIG1fY2xpZW50
LT5zZW5kTWVzc2FnZShVaW50OEFycmF5OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KFttX2V4cGlyZWRTZXNzaW9uIGJ5dGVzXSksIFttX2V4cGlyZWRTZXNzaW9uIGxlbmd0aF0p
LnB0cigpLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpAQCAtMzAwLDcgKzMwMCw3IEBAIGJvb2wgQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5
PiYKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIG5leHRN
ZXNzYWdlID0gVWludDhBcnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihb
cmVxdWVzdERhdGEgYnl0ZXNdKSwgW3JlcXVlc3REYXRhIGxlbmd0aF0pOworICAgICAgICBuZXh0
TWVzc2FnZSA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oW3JlcXVlc3REYXRhIGJ5dGVzXSksIFtyZXF1ZXN0RGF0YSBsZW5ndGhdKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMzUwLDcgKzM1MCw3IEBAIFJlZlB0cjxVaW50OEFy
cmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVz
c2FnZSh1bnNpCiAgICAgZXJyb3JDb2RlID0gMDsKICAgICBzeXN0ZW1Db2RlID0gMDsKICAgICBt
X2V4cGlyZWRTZXNzaW9uID0gW2V4cGlyZWRTZXNzaW9ucyBmaXJzdE9iamVjdF07Ci0gICAgcmV0
dXJuIFVpbnQ4QXJyYXk6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW21fZXhw
aXJlZFNlc3Npb24gYnl0ZXNdKSwgW21fZXhwaXJlZFNlc3Npb24gbGVuZ3RoXSk7CisgICAgcmV0
dXJuIFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW21f
ZXhwaXJlZFNlc3Npb24gYnl0ZXNdKSwgW21fZXhwaXJlZFNlc3Npb24gbGVuZ3RoXSk7CiB9CiAK
IHZvaWQgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmRpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICprZXlSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA4MmY0
Y2RjMDcwZjUzYWQwN2U2YjliNWYyYzgzNDRmODgyNjNiMmFhLi5jYTE5YmFlMDhmZWM1ZmNjYmE1
N2U0OWFhMGY0ZWFmODcxM2U1Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtOTksOSArOTksOSBAQCBSZWZQdHI8
VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmVxdWVz
dChjb25zdCBTdHJpbmcmCiAgICAgc3lzdGVtQ29kZSA9IDA7CiAgICAgZGVzdGluYXRpb25VUkwg
PSBTdHJpbmcoKTsKIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2V5UmVxdWVzdEJ1ZmZlciA9
IEFycmF5QnVmZmVyOjpjcmVhdGUoW2tleVJlcXVlc3QuZ2V0KCkgYnl0ZXNdLCBba2V5UmVxdWVz
dC5nZXQoKSBsZW5ndGhdKTsKKyAgICBhdXRvIGtleVJlcXVlc3RCdWZmZXIgPSBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKFtrZXlSZXF1ZXN0LmdldCgpIGJ5dGVzXSwgW2tleVJlcXVlc3QuZ2V0KCkgbGVu
Z3RoXSk7CiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGtleVJlcXVlc3RCdWZmZXItPmJ5dGVM
ZW5ndGgoKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoa2V5UmVxdWVz
dEJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOworICAgIHJldHVybiBVaW50OEFycmF5Ojp0cnlDcmVh
dGUoV1RGTW92ZShrZXlSZXF1ZXN0QnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7CiB9CiAKIHZvaWQg
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OnJlbGVhc2VLZXlzKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVlN0cmVhbVNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCmluZGV4IDdiMjAy
ODEyMTA3MmRiNTcxMTdlYTYxMGUzM2FjMzQ0ZjEyZTExNDguLmUwMGY5NGRiNzc3MDY4YjM5ZDE1
NTg1MDg2ZDFkOTMwZWU5ZWVhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQpAQCAtMTIyLDEwICsxMjIsMTAgQEAgUmVmUHRy
PFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVz
dChjb25zdCBTdHJpbmcmIG0KICAgICB9CiAKICAgICBTdHJpbmcgY2VydGlmaWNhdGVTdHJpbmco
ImNlcnRpZmljYXRlIl9zKTsKLSAgICBSZWZQdHI8VWludDhBcnJheT4gYXJyYXkgPSBVaW50OEFy
cmF5OjpjcmVhdGUoY2VydGlmaWNhdGVTdHJpbmcubGVuZ3RoKCkpOworICAgIGF1dG8gYXJyYXkg
PSBVaW50OEFycmF5OjpjcmVhdGUoY2VydGlmaWNhdGVTdHJpbmcubGVuZ3RoKCkpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDAsIGxlbmd0aCA9IGNlcnRpZmljYXRlU3RyaW5nLmxlbmd0aCgpOyBp
IDwgbGVuZ3RoOyArK2kpCiAgICAgICAgIGFycmF5LT5zZXQoaSwgY2VydGlmaWNhdGVTdHJpbmdb
aV0pOwotICAgIHJldHVybiBhcnJheTsKKyAgICByZXR1cm4gV1RGTW92ZShhcnJheSk7CiB9CiAK
IHZvaWQgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMoKQpAQCAtMTU2LDcg
KzE1Niw3IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMoKQog
ICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbklkID09IFN0cmluZyhwbGF5YmFja1Nlc3Npb25JZFZh
bHVlKSkgewogICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVlN0cmVhbVNl
c3Npb246OnJlbGVhc2VLZXlzKCVwKSAtIGZvdW5kIHNlc3Npb24sIHNlbmRpbmcgZXhwaXJhdGlv
biBtZXNzYWdlIik7CiAgICAgICAgICAgICAgICAgbV9leHBpcmVkU2Vzc2lvbiA9IGV4cGlyZWRT
ZXNzaW9uRGF0YTsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UoVWludDhB
cnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbbV9leHBpcmVkU2Vzc2lv
biBieXRlc10pLCBbbV9leHBpcmVkU2Vzc2lvbiBsZW5ndGhdKS5nZXQoKSwgZW1wdHlTdHJpbmco
KSk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNlbmRNZXNzYWdlKFVpbnQ4QXJyYXk6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW21fZXhwaXJlZFNlc3Npb24gYnl0ZXNd
KSwgW21fZXhwaXJlZFNlc3Npb24gbGVuZ3RoXSkucHRyKCksIGVtcHR5U3RyaW5nKCkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zMzUsNyAr
MzM1LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246Omdl
bmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5zaWduZWQKICAgICBlcnJvckNvZGUgPSAwOwogICAg
IHN5c3RlbUNvZGUgPSAwOwogICAgIG1fZXhwaXJlZFNlc3Npb24gPSBbZXhwaXJlZFNlc3Npb25z
IGZpcnN0T2JqZWN0XTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihbbV9leHBpcmVkU2Vzc2lvbiBieXRlc10pLCBbbV9leHBpcmVkU2Vz
c2lvbiBsZW5ndGhdKTsKKyAgICByZXR1cm4gVWludDhBcnJheTo6dHJ5Q3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihbbV9leHBpcmVkU2Vzc2lvbiBieXRlc10pLCBbbV9leHBpcmVk
U2Vzc2lvbiBsZW5ndGhdKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZDQ0
YTA4N2E0Mjk5YWI2NTg1NmI4MjQ1NmE2MDlhYmIzMDhkNWMxYy4uZTAwYWUyZjJmZGU4YzE3YzIw
OWQ0NGYxOWQ4ZDY0YTZkZDAwMmY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xNzY0
LDE2ICsxNzY0LDE2IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgIC8vIENyZWF0
ZSBhbiBpbml0RGF0YSB3aXRoIHRoZSBmb2xsb3dpbmcgbGF5b3V0OgogICAgICAgICAvLyBbNCBi
eXRlczoga2V5VVJJIHNpemVdLCBba2V5VVJJIHNpemUgYnl0ZXM6IGtleVVSSV0KICAgICAgICAg
dW5zaWduZWQga2V5VVJJU2l6ZSA9IGtleVVSSS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcik7Ci0g
ICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gaW5pdERhdGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAxKTsKKyAgICAgICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9
IEFycmF5QnVmZmVyOjpjcmVhdGUoNCArIGtleVVSSVNpemUsIDEpOwogICAgICAgICB1bnNpZ25l
ZCBieXRlTGVuZ3RoID0gaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKTsKLSAgICAgICAgUmVm
UHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShp
bml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGJ5dGVMZW5ndGgpOworICAgICAgICBhdXRvIGlu
aXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVm
KCksIDAsIGJ5dGVMZW5ndGgpOwogICAgICAgICBpbml0RGF0YVZpZXctPnNldDx1aW50MzJfdD4o
MCwga2V5VVJJU2l6ZSwgdHJ1ZSk7CiAKLSAgICAgICAgUmVmUHRyPFVpbnQxNkFycmF5PiBrZXlV
UklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCA0
LCBrZXlVUkkubGVuZ3RoKCkpOworICAgICAgICBhdXRvIGtleVVSSUFycmF5ID0gVWludDE2QXJy
YXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDQsIGtleVVSSS5sZW5ndGgoKSk7
CiAgICAgICAgIGtleVVSSUFycmF5LT5zZXRSYW5nZShTdHJpbmdWaWV3KGtleVVSSSkudXBjb252
ZXJ0ZWRDaGFyYWN0ZXJzKCksIGtleVVSSS5sZW5ndGgoKSAvIHNpemVvZih1bnNpZ25lZCBjaGFy
KSwgMCk7CiAKLSAgICAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGluaXREYXRhID0gVWludDhBcnJh
eTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKLSAgICAg
ICAgaWYgKCFwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLmdldCgpKSkKKyAgICAgICAgYXV0
byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwg
MCwgYnl0ZUxlbmd0aCk7CisgICAgICAgIGlmICghcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0
YS5wdHIoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICAgICAgICAgbV9r
ZXlVUklUb1JlcXVlc3RNYXAuc2V0KGtleVVSSSwgYXZSZXF1ZXN0KTsKQEAgLTE4MDMsNyArMTgw
Myw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2Fp
dEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEu
Z2V0KCkpKQorICAgICAgICBpZiAoIXBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIG1fa2V5VVJJVG9SZXF1ZXN0
TWFwLnNldChrZXlJRCwgYXZSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U2FtcGxlQVZGT2JqQy5tbQppbmRleCAxODk4ZGNiNDgwN2RjM2Q0ZGVjYjRjMDNkZWJlNGVkZjg2
NzEyYjlmLi5jM2JjYTYxMDkwNTU0ZjgyOGI4NDgzOWFkNDA1NDlhNjI3YmZlNzQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCkBAIC0yOTQsNyArMjk0
LDcgQEAgUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IE1lZGlhU2FtcGxlQVZGT2JqQzo6
Z2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0CiAKICAgICB2b2lkKiBkYXRhID0gQ1ZQaXhlbEJ1ZmZl
ckdldEJhc2VBZGRyZXNzT2ZQbGFuZShyZ2JhUGl4ZWxCdWZmZXIuZ2V0KCksIDApOwogICAgIHNp
emVfdCBieXRlTGVuZ3RoID0gQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcikgKiBD
VlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZmZXIpICogNDsKLSAgICBhdXRvIHJlc3VsdCA9
IEpTQzo6VWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUo
ZGF0YSwgYnl0ZUxlbmd0aCksIDAsIGJ5dGVMZW5ndGgpOworICAgIGF1dG8gcmVzdWx0ID0gSlND
OjpVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZShk
YXRhLCBieXRlTGVuZ3RoKSwgMCwgYnl0ZUxlbmd0aCk7CiAKICAgICBzdGF0dXMgPSBDVlBpeGVs
QnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MocmdiYVBpeGVsQnVmZmVyLmdldCgpLCBrQ1ZQaXhlbEJ1
ZmZlckxvY2tfUmVhZE9ubHkpOwogICAgIEFTU0VSVChzdGF0dXMgPT0gbm9FcnIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpp
bmRleCBjZDM1NDc1OWVlNDRlMmYyMWI2M2JmYzI0MjliMDMyYWI1ZDNhZDM2Li4yMWY0YmM5YTUz
MDk1N2ZmOTg4MTQ4M2U0MjU2ZDUxZjNlYjBhMDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNjUwLDkgKzY1MCw5
IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURf
TUVESUEpCiAgICAgTE9HKE1lZGlhU291cmNlLCAiU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQo
JXApIC0gdHJhY2s6JWQiLCB0aGlzLCB0cmFja0lEKTsKICAgICBtX3Byb3RlY3RlZFRyYWNrSUQg
PSB0cmFja0lEOwotICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YUFycmF5ID0gVWludDhB
cnJheTo6Y3JlYXRlKFtpbml0RGF0YSBsZW5ndGhdKTsKKyAgICBhdXRvIGluaXREYXRhQXJyYXkg
PSBVaW50OEFycmF5OjpjcmVhdGUoW2luaXREYXRhIGxlbmd0aF0pOwogICAgIFtpbml0RGF0YSBn
ZXRCeXRlczppbml0RGF0YUFycmF5LT5kYXRhKCkgbGVuZ3RoOmluaXREYXRhQXJyYXktPmxlbmd0
aCgpXTsKLSAgICBtX21lZGlhU291cmNlLT5zb3VyY2VCdWZmZXJLZXlOZWVkZWQodGhpcywgaW5p
dERhdGFBcnJheS5nZXQoKSk7CisgICAgbV9tZWRpYVNvdXJjZS0+c291cmNlQnVmZmVyS2V5TmVl
ZGVkKHRoaXMsIGluaXREYXRhQXJyYXkucHRyKCkpOwogICAgIGlmIChhdXRvIHNlc3Npb24gPSBt
X21lZGlhU291cmNlLT5wbGF5ZXIoKS0+Y2RtU2Vzc2lvbigpKSB7CiAgICAgICAgIHNlc3Npb24t
PmFkZFBhcnNlcihtX3BhcnNlci5nZXQoKSk7CiAgICAgICAgIGhhc1Nlc3Npb25TZW1hcGhvcmUt
PnNpZ25hbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCA0NTZhZjc4NmQwOTI1OTAxN2M0
MzE3NWQyZDY0MDg3MTc2MmU4YTRlLi5jY2JiZTFmMTU2ZTBmOWUzYTBmMDMxZGE3Y2NlNDI4YTZm
ZWU5NGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtNDEyLDcgKzQxMiw3IEBAIFJlZlB0
cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IEludFJlY3QmIGxvZ2ljCiAgICAgaWYgKGFyZWEuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYXJlYS51bnNhZmVHZXQoKSk7CisgICAgYXV0byByZXN1bHQg
PSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChhcmVhLnVuc2FmZUdl
dCgpKTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0
YUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
RGF0YUNHLmNwcAppbmRleCBkNDJhYTM0NDhiMGJjMzdkZTZlNWYwODk2MzZkMTc5N2Q1NGZhMzc2
Li44NDc5ZDVkM2EyM2EwN2U4OWRmY2I4YmIyMDUyMGZhOTAzZWI3Mjk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRh
Q0cuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFn
ZUJ1ZmZlckRhdGE6OmdldERhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXQKICAgICBp
ZiAoYXJlYS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
YXV0byByZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChhcmVh
LnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKGFyZWEudW5zYWZlR2V0KCkpOwogICAgIHVpbnQ4X3QqIHJlc3Vs
dERhdGEgPSByZXN1bHQgPyByZXN1bHQtPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFyZXN1
bHREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKaW5k
ZXggOWE3OTk4ZDEzOTU5MzA5Mzc4NDc0MjYxODc2NjJhNzgxMDU2MDFmMi4uMTE4MDIzMTFlOWFl
YzFjOWI1ZjJkMDdhZmEyOWQ0NzEzMDYyYjY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKQEAg
LTUzMSw3ICs1MzEsNyBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQogCiAgICAgSW50U2l6ZSBwYWludFNpemUgPSBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUo
KTsKICAgICBwYWludFNpemUuc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7Ci0gICAgYXV0
byB0bXBJbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgo
cGFpbnRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIHRtcEltYWdlRGF0
YSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKChwYWludFNpemUu
YXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAgIGlmICghdG1wSW1hZ2VEYXRhKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCA2NmMzMGE5OGMyOGFlZDJmY2ZmNTE5
NjAyZDJjNDcxMzlmNzZhZWE4Li42ZTk4NmQ0ZWMyYTk3OTI5NjYzODRmYzU1MDc0YTJmOTcyYjU5
MGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnVubXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRS
ZWN0JiByZWN0KQogICAgIEludFNpemUgc2NhbGVkU2l6ZShyZWN0LnNpemUoKSk7CiAgICAgQVNT
RVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2NhbGVkU2l6ZSkpOwogICAgIHNj
YWxlZFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgYXV0byBpbWFnZURh
dGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgoc2NhbGVkU2l6ZS5h
cmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CisgICAgYXV0byBpbWFnZURhdGEgPSBVaW50OENsYW1w
ZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCgoc2NhbGVkU2l6ZS5hcmVhKCkgKiA0KS51
bnNhZmVHZXQoKSk7CiAgICAgaWYgKCFpbWFnZURhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCkBAIC0zMDMsNyArMzAzLDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJF
ZmZlY3Q6OnByZW11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBJbnRT
aXplIHNjYWxlZFNpemUocmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNp
emVOZWVkc0NsYW1waW5nKHNjYWxlZFNpemUpKTsKICAgICBzY2FsZWRTaXplLnNjYWxlKG1fZmls
dGVyLmZpbHRlclNjYWxlKCkpOwotICAgIGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJy
YXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoKHNjYWxlZFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0
KCkpOworICAgIGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWQoKHNjYWxlZFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAgIGlm
ICghaW1hZ2VEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjb3B5UHJlbXVsdGlw
bGllZFJlc3VsdCgqaW1hZ2VEYXRhLCByZWN0KTsKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIEZp
bHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVz
dGluYXRpb24sIGNvbnN0CiAgICAgICAgICAgICBJbnRTaXplIGlucHV0U2l6ZShtX2Fic29sdXRl
UGFpbnRSZWN0LnNpemUoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXpl
TmVlZHNDbGFtcGluZyhpbnB1dFNpemUpKTsKICAgICAgICAgICAgIGlucHV0U2l6ZS5zY2FsZSht
X2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZCgoaW5wdXRTaXpl
LmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKKyAgICAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1h
Z2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCgoaW5w
dXRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKICAgICAgICAgICAgIGlmICghbV91bm11
bHRpcGxpZWRJbWFnZVJlc3VsdCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxp
ZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdAogICAgICAgICAg
ICAgSW50U2l6ZSBpbnB1dFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgICAg
ICAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoaW5wdXRTaXplKSk7
CiAgICAgICAgICAgICBpbnB1dFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0g
ICAgICAgICAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5
OjpjcmVhdGVVbmluaXRpYWxpemVkKChpbnB1dFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkp
OworICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRB
cnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCgoaW5wdXRTaXplLmFyZWEoKSAqIDQpLnVuc2Fm
ZUdldCgpKTsKICAgICAgICAgICAgIGlmICghbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCkBAIC01MTUsNyArNTE1LDcgQEAg
VWludDhDbGFtcGVkQXJyYXkqIEZpbHRlckVmZmVjdDo6Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQoKQogICAgIEludFNpemUgcmVzdWx0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUo
KSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcocmVzdWx0U2l6
ZSkpOwogICAgIHJlc3VsdFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAg
bV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmlu
aXRpYWxpemVkKChyZXN1bHRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKKyAgICBtX3Vu
bXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQoKHJlc3VsdFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAgIHJldHVy
biBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgpOwogfQogCkBAIC01MzEsNyArNTMxLDcg
QEAgVWludDhDbGFtcGVkQXJyYXkqIEZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZElt
YWdlUmVzdWx0KCkKICAgICBJbnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5z
aXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJlc3Vs
dFNpemUpKTsKICAgICByZXN1bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwot
ICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQoKHJlc3VsdFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOworICAg
IG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQoKHJlc3VsdFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAg
IHJldHVybiBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURp
cmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRhdGFEaXJlY3QyRC5jcHAKaW5kZXggZjBlMjU4MDkyMDUzODU0Y2Q1MTU5NmM3ZTA3MTc1
OWVmN2NiZjVhOC4uMDI3NWY5ZGM5YmU5NjhmMDcwNjYzNGVjMmIzY2U4NWQwMjlkZTU1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVy
RGF0YURpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKEFscGhhUHJlbXVsdGlw
bGljYXRpb24sIGNvbnN0CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5
OjpjcmVhdGVVbmluaXRpYWxpemVkKG51bUJ5dGVzLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIHJl
c3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKG51bUJ5dGVz
LnVuc2FmZUdldCgpKTsKICAgICB1bnNpZ25lZCBjaGFyKiByZXN1bHREYXRhID0gcmVzdWx0ID8g
cmVzdWx0LT5kYXRhKCkgOiBudWxscHRyOwogICAgIGlmICghcmVzdWx0RGF0YSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0KaW5kZXgg
ZGMwZDQxYzAxZjBjODEzMzBjOGI1Y2UwYjFhZGRmOGE0ZDVlNTc5ZS4uZTk5N2IzNmE3YjRhNTBh
MTYzM2FiMGFlYWFmNmFhMWI3OGY1ZGI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlv
bk1hYy5tbQpAQCAtMTkwLDcgKzE5MCw3IEBAIHN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aERp
Y3Rpb25hcnlJbkNvbnRleHQoTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5LCBKU0NvbnRlCiAgICAg
ICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIG5h
bWUgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGtleSk7CisgICAgICAgIGF1dG8gbmFtZSA9IE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoa2V5KTsKICAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0
eShbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCByZXN1bHRPYmplY3QsIG5hbWUuZ2V0KCks
IFt2YWx1ZSBKU1ZhbHVlUmVmXSwgMCwgJmV4Y2VwdGlvbik7CiAgICAgICAgIGlmIChleGNlcHRp
b24pCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCmluZGV4IGQ0YWEyMDU0NjNlODhmZTc1
MDc2ZjJhODA3ZWY5MmQyMDNlOWJlOTEuLmU1NGJhMzc2ZGE2MTY2NDU3YzIzMjg5NzE4MTRjZmYz
ODVmYTZlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrQm94LmNwcApAQCAtNDksNyArNDksNyBAQCBNb2NrQm94OjpNb2NrQm94KEFy
cmF5QnVmZmVyKiBkYXRhKQogU3RyaW5nIE1vY2tCb3g6OnBlZWtUeXBlKEFycmF5QnVmZmVyKiBk
YXRhKQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBSZWZQdHI8SW50OEFycmF5
PiBhcnJheSA9IEpTQzo6SW50OEFycmF5OjpjcmVhdGUoZGF0YSwgMCwgNCk7CisgICAgYXV0byBh
cnJheSA9IEpTQzo6SW50OEFycmF5OjpjcmVhdGUoZGF0YSwgMCwgNCk7CiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCA0OyArK2kpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFycmF5LT5pdGVtKGkp
KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpAQCAtNTcsNyArNTcsNyBAQCBTdHJp
bmcgTW9ja0JveDo6cGVla1R5cGUoQXJyYXlCdWZmZXIqIGRhdGEpCiAKIHNpemVfdCBNb2NrQm94
OjpwZWVrTGVuZ3RoKEFycmF5QnVmZmVyKiBkYXRhKQogewotICAgIFJlZlB0cjxKU0M6OkRhdGFW
aWV3PiB2aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGRhdGEsIDAsIGRhdGEtPmJ5dGVMZW5n
dGgoKSk7CisgICAgYXV0byB2aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGRhdGEsIDAsIGRh
dGEtPmJ5dGVMZW5ndGgoKSk7CiAgICAgcmV0dXJuIHZpZXctPmdldDx1aW50MzJfdD4oNCwgdHJ1
ZSk7CiB9CiAKQEAgLTY2LDExICs2NiwxMSBAQCBNb2NrVHJhY2tCb3g6Ok1vY2tUcmFja0JveChB
cnJheUJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQobV9sZW5ndGggPT0gMTcpOwogCi0gICAg
UmVmUHRyPEpTQzo6RGF0YVZpZXc+IHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoZGF0YSwg
MCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBhdXRvIHZpZXcgPSBKU0M6OkRhdGFWaWV3Ojpj
cmVhdGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3RyYWNrSUQgPSB2aWV3
LT5nZXQ8aW50MzJfdD4oOCwgdHJ1ZSk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0g
ICAgUmVmUHRyPEludDhBcnJheT4gYXJyYXkgPSBKU0M6OkludDhBcnJheTo6Y3JlYXRlKGRhdGEs
IDEyLCA0KTsKKyAgICBhdXRvIGFycmF5ID0gSlNDOjpJbnQ4QXJyYXk6OmNyZWF0ZShkYXRhLCAx
MiwgNCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpCiAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGFycmF5LT5pdGVtKGkpKTsKICAgICBtX2NvZGVjID0gYnVpbGRlci50b1N0cmluZygp
OwpAQCAtODksNyArODksNyBAQCBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6Ok1vY2tJbml0aWFsaXph
dGlvbkJveChBcnJheUJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQobV9sZW5ndGggPj0gMTMp
OwogCi0gICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVh
dGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBhdXRvIHZpZXcgPSBKU0M6OkRh
dGFWaWV3OjpjcmVhdGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpbnQzMl90
IHRpbWVWYWx1ZSA9IHZpZXctPmdldDxpbnQzMl90Pig4LCB0cnVlKTsKICAgICBpbnQzMl90IHRp
bWVTY2FsZSA9IHZpZXctPmdldDxpbnQzMl90PigxMiwgdHJ1ZSk7CiAgICAgbV9kdXJhdGlvbiA9
IE1lZGlhVGltZSh0aW1lVmFsdWUsIHRpbWVTY2FsZSk7CkBAIC0xMTgsNyArMTE4LDcgQEAgTW9j
a1NhbXBsZUJveDo6TW9ja1NhbXBsZUJveChBcnJheUJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NF
UlQobV9sZW5ndGggPT0gMzApOwogCi0gICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IHZpZXcgPSBK
U0M6OkRhdGFWaWV3OjpjcmVhdGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBh
dXRvIHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0
aCgpKTsKICAgICBpbnQzMl90IHRpbWVTY2FsZSA9IHZpZXctPmdldDxpbnQzMl90Pig4LCB0cnVl
KTsKIAogICAgIGludDMyX3QgdGltZVZhbHVlID0gdmlldy0+Z2V0PGludDMyX3Q+KDEyLCB0cnVl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggNjgzMmQw
OWI4NzViZTNkNDcwODhjYmQ2Y2VlNWU5ZWM3MWY1MTI0MS4uYjc1N2Y5Zjk1ZDZjOTU5NTE5YWMw
NjViNGUwZjAzZWJhNTFkNjc2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZS5jcHAKQEAgLTE4OSw2ICsxODksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBl
OjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIEludFJlY3QoSW50UG9p
bnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOwogCiAgICAgICAgIFJlZlB0cjxVaW50OENsYW1wZWRB
cnJheT4gcGl4ZWxBcnJheSA9IGltYWdlQnVmZmVyLT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEo
SW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHBpeGVsQXJyYXkpOwogICAgICAgICB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoID0g
cGl4ZWxBcnJheS0+bGVuZ3RoKCk7CiAgICAgICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlPZmZzZXQg
PSAzOyAvLyBFYWNoIHBpeGVsIGlzIGZvdXIgYnl0ZXM6IFJHQkEuCiAgICAgICAgIHVpbnQ4X3Qg
YWxwaGFQaXhlbFRocmVzaG9sZCA9IHRocmVzaG9sZCAqIDI1NTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCmluZGV4IDM4OTBjMGZhYmM0N2U1OTBlNWIxYWJiZDM1ZDJm
OTkyYzQ2NWE3NDcuLjY0Mjg3ZDIzOWFmNTczZTkyMDNkMjU4NDMxYjI3M2M3Yjg3NDkwMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcApAQCAtNzksMjUgKzc5LDI1
IEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lNb2NrQ0RNOjpjcmVh
dGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DCiBzdGF0aWMgVWludDhBcnJheSogaW5pdERhdGFQ
cmVmaXgoKQogewogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgcHJlZml4RGF0YVtdID0geyAnbScs
ICdvJywgJ2MnLCAnaycgfTsKLSAgICBzdGF0aWMgVWludDhBcnJheSogcHJlZml4ID0gVWludDhB
cnJheTo6Y3JlYXRlKHByZWZpeERhdGEsIFdURl9BUlJBWV9MRU5HVEgocHJlZml4RGF0YSkpLmxl
YWtSZWYoKTsKKyAgICBzdGF0aWMgVWludDhBcnJheSYgcHJlZml4IHsgVWludDhBcnJheTo6Y3Jl
YXRlKHByZWZpeERhdGEsIFdURl9BUlJBWV9MRU5HVEgocHJlZml4RGF0YSkpLmxlYWtSZWYoKSB9
OwogCi0gICAgcmV0dXJuIHByZWZpeDsKKyAgICByZXR1cm4gJnByZWZpeDsKIH0KIAogc3RhdGlj
IFVpbnQ4QXJyYXkqIGtleVByZWZpeCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo
YXIgcHJlZml4RGF0YVtdID0geydrJywgJ2UnLCAneSd9OwotICAgIHN0YXRpYyBVaW50OEFycmF5
KiBwcmVmaXggPSBVaW50OEFycmF5OjpjcmVhdGUocHJlZml4RGF0YSwgV1RGX0FSUkFZX0xFTkdU
SChwcmVmaXhEYXRhKSkubGVha1JlZigpOworICAgIHN0YXRpYyBVaW50OEFycmF5JiBwcmVmaXgg
eyBVaW50OEFycmF5OjpjcmVhdGUocHJlZml4RGF0YSwgV1RGX0FSUkFZX0xFTkdUSChwcmVmaXhE
YXRhKSkubGVha1JlZigpIH07CiAKLSAgICByZXR1cm4gcHJlZml4OworICAgIHJldHVybiAmcHJl
Zml4OwogfQogCiBzdGF0aWMgVWludDhBcnJheSoga2V5UmVxdWVzdCgpCiB7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGNoYXIgcmVxdWVzdERhdGFbXSA9IHsncicsICdlJywgJ3EnLCAndScs
ICdlJywgJ3MnLCAndCd9OwotICAgIHN0YXRpYyBVaW50OEFycmF5KiByZXF1ZXN0ID0gVWludDhB
cnJheTo6Y3JlYXRlKHJlcXVlc3REYXRhLCBXVEZfQVJSQVlfTEVOR1RIKHJlcXVlc3REYXRhKSku
bGVha1JlZigpOworICAgIHN0YXRpYyBVaW50OEFycmF5JiByZXF1ZXN0IHsgVWludDhBcnJheTo6
Y3JlYXRlKHJlcXVlc3REYXRhLCBXVEZfQVJSQVlfTEVOR1RIKHJlcXVlc3REYXRhKSkubGVha1Jl
ZigpIH07CiAKLSAgICByZXR1cm4gcmVxdWVzdDsKKyAgICByZXR1cm4gJnJlcXVlc3Q7CiB9CiAK
IHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVTZXNzaW9uSWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tTdHJpbmcuY3BwCmluZGV4IDc4ZGU2MWU5OGE3NzkyNzgyYzUwMmE0MDQ3OGNiM2FkZDIx
NWIxMDUuLjc2N2FhOGQ5MTRiMGNmNzUxOTZlMjBjMzYzYjgwNjM4ZmZkN2QzZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAKQEAgLTEzNiw1ICsxMzYsNSBAQCBXS1N0
cmluZ1JlZiBXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhKU1N0cmluZ1JlZiBqc1N0cmluZ1Jl
ZikKIEpTU3RyaW5nUmVmIFdLU3RyaW5nQ29weUpTU3RyaW5nKFdLU3RyaW5nUmVmIHN0cmluZ1Jl
ZikKIHsKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICByZXR1cm4gT3BhcXVl
SlNTdHJpbmc6OmNyZWF0ZSh0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nKCkpLmxlYWtSZWYoKTsK
KyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSh0b0ltcGwoc3RyaW5nUmVmKS0+
c3RyaW5nKCkpLmxlYWtSZWYoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAK
aW5kZXggMjlmYjAxZTIwYzQwMDg0ZjM5YTkzOTc2MTk3ZWRhODU1NDNjOWZjMS4uZWZhMDM0MTQw
MmEwYWYzN2JiMTJlM2U5ZjQzNGZjZjJjNTIzM2ZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIEpTT2JqZWN0UmVmIHRvSlNBcnJh
eShKU0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgVmVjdG9yPFQ+JiBkYXRhLCBKU1ZhbHUKIAog
c3RhdGljIGlubGluZSBKU1ZhbHVlUmVmIHRvSlNWYWx1ZShKU0NvbnRleHRSZWYgY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNv
bnRleHQsIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoc3RyaW5nKS5nZXQoKSk7CisgICAgcmV0dXJu
IEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoc3Ry
aW5nKS5nZXQoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZVJlZiBjYWxsUHJvcGVydHlG
dW5jdGlvbihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0LCBjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTk2LDcgKzk2LDcgQEAg
c3RhdGljIGlubGluZSBKU1ZhbHVlUmVmIGNhbGxQcm9wZXJ0eUZ1bmN0aW9uKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZgogICAgIEFTU0VSVF9BUkcob2JqZWN0LCBvYmplY3QpOwog
ICAgIEFTU0VSVF9BUkcob2JqZWN0LCBKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgb2JqZWN0KSk7
CiAKLSAgICBKU09iamVjdFJlZiBmdW5jdGlvbiA9IGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KEpT
T2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgb2JqZWN0LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRl
KHByb3BlcnR5TmFtZSkuZ2V0KCksIGV4Y2VwdGlvbikpOworICAgIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uID0gY29uc3RfY2FzdDxKU09iamVjdFJlZj4oSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0
LCBvYmplY3QsIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUocHJvcGVydHlOYW1lKS5nZXQoKSwg
ZXhjZXB0aW9uKSk7CiAgICAgQVNTRVJUKEpTT2JqZWN0SXNGdW5jdGlvbihjb250ZXh0LCBmdW5j
dGlvbikpOwogCiAgICAgcmV0dXJuIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgZnVu
Y3Rpb24sIG9iamVjdCwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLCBleGNlcHRpb24pOwpAQCAt
MTc3LDcgKzE3Nyw3IEBAIEpTT2JqZWN0UmVmIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNj
cmlwdE9iamVjdEZvckZyYW1lKFdlYkZyYW1lJiBmcmFtZSkKIAogICAgIFN0cmluZyBzY3JpcHQg
PSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5U2NyaXB0U291cmNlLCBzaXplb2YoV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlwdFNv
dXJjZSkpOwogCi0gICAgSlNPYmplY3RSZWYgc2NyaXB0T2JqZWN0RnVuY3Rpb24gPSBjb25zdF9j
YXN0PEpTT2JqZWN0UmVmPihKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIE9wYXF1ZUpTU3RyaW5n
OjpjcmVhdGUoc2NyaXB0KS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgJmV4Y2VwdGlvbikp
OworICAgIEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdEZ1bmN0aW9uID0gY29uc3RfY2FzdDxKU09i
amVjdFJlZj4oSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3Jl
YXRlKHNjcmlwdCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIDAsICZleGNlcHRpb24pKTsKICAg
ICBBU1NFUlQoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHNjcmlwdE9iamVjdEZ1bmN0aW9uKSk7
CiAKICAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdID0geyBzZXNzaW9uSWRlbnRpZmllciwgZXZh
bHVhdGVGdW5jdGlvbiwgY3JlYXRlVVVJREZ1bmN0aW9uIH07CkBAIC0yODAsNyArMjgwLDcgQEAg
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
bih1aW50NjRfdCBwYWdlSUQsIHVpbnQKIAogICAgIFN0cmluZyBleGNlcHRpb25NZXNzYWdlOwog
ICAgIGlmIChKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgZXhjZXB0aW9uKSkgewotICAgICAgICBK
U1ZhbHVlUmVmIG5hbWVWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgY29uc3Rf
Y2FzdDxKU09iamVjdFJlZj4oZXhjZXB0aW9uKSwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZSgibmFt
ZSJfcykuZ2V0KCksIG51bGxwdHIpOworICAgICAgICBKU1ZhbHVlUmVmIG5hbWVWYWx1ZSA9IEpT
T2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgY29uc3RfY2FzdDxKU09iamVjdFJlZj4oZXhjZXB0
aW9uKSwgT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSgibmFtZSJfcykuZ2V0KCksIG51bGxwdHIp
OwogICAgICAgICBhdXRvIGV4Y2VwdGlvbk5hbWUgPSBhZG9wdFJlZihKU1ZhbHVlVG9TdHJpbmdD
b3B5KGNvbnRleHQsIG5hbWVWYWx1ZSwgbnVsbHB0cikpLT5zdHJpbmcoKTsKICAgICAgICAgaWYg
KGV4Y2VwdGlvbk5hbWUgPT0gIk5vZGVOb3RGb3VuZCIpCiAgICAgICAgICAgICBlcnJvclR5cGUg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50
VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpOb2Rl
Tm90Rm91bmQpOwpAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgcGFnZUlELCB1aW50CiAg
ICAgICAgIGVsc2UgaWYgKGV4Y2VwdGlvbk5hbWUgPT0gIkludmFsaWRTZWxlY3RvciIpCiAgICAg
ICAgICAgICBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVy
czo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
RXJyb3JNZXNzYWdlOjpJbnZhbGlkU2VsZWN0b3IpOwogCi0gICAgICAgIEpTVmFsdWVSZWYgbWVz
c2FnZVZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBjb25zdF9jYXN0PEpTT2Jq
ZWN0UmVmPihleGNlcHRpb24pLCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKCJtZXNzYWdlIl9zKS5n
ZXQoKSwgbnVsbHB0cik7CisgICAgICAgIEpTVmFsdWVSZWYgbWVzc2FnZVZhbHVlID0gSlNPYmpl
Y3RHZXRQcm9wZXJ0eShjb250ZXh0LCBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihleGNlcHRpb24p
LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCJtZXNzYWdlIl9zKS5nZXQoKSwgbnVsbHB0cik7
CiAgICAgICAgIGV4Y2VwdGlvbk1lc3NhZ2UgPSBhZG9wdFJlZihKU1ZhbHVlVG9TdHJpbmdDb3B5
KGNvbnRleHQsIG1lc3NhZ2VWYWx1ZSwgbnVsbHB0cikpLT5zdHJpbmcoKTsKICAgICB9IGVsc2UK
ICAgICAgICAgZXhjZXB0aW9uTWVzc2FnZSA9IGFkb3B0UmVmKEpTVmFsdWVUb1N0cmluZ0NvcHko
Y29udGV4dCwgZXhjZXB0aW9uLCBudWxscHRyKSktPnN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggM2QxZmU3NWE5
MDBiN2IyNTZjN2UyNTM5ZTAyM2IzYTczZjcxZjk2NS4uNDliMjIyNTQwNWI4MmY4MThkM2VmYzAy
NzU0OWU0MzllYmQ5MTdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xMTE4LDcgKzExMTgsNyBAQCB2b2lkIFBERlBsdWdp
bjo6cnVuU2NyaXB0c0luUERGRG9jdW1lbnQoKQogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjdHgg
PSBKU0dsb2JhbENvbnRleHRDcmVhdGUoMCk7CiAgICAgSlNPYmplY3RSZWYganNQREZEb2MgPSBt
YWtlSlNQREZEb2MoY3R4KTsKICAgICBmb3IgKGF1dG8mIHNjcmlwdCA6IHNjcmlwdHMpCi0gICAg
ICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHNjcmlwdC5n
ZXQoKSkuZ2V0KCksIGpzUERGRG9jLCBudWxscHRyLCAwLCBudWxscHRyKTsKKyAgICAgICAgSlNF
dmFsdWF0ZVNjcmlwdChjdHgsIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoc2NyaXB0LmdldCgp
KS5nZXQoKSwganNQREZEb2MsIG51bGxwdHIsIDAsIG51bGxwdHIpOwogICAgIEpTR2xvYmFsQ29u
dGV4dFJlbGVhc2UoY3R4KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Vmlldy9XZWJQREZWaWV3SU9TLm1tCmluZGV4IDE4NDFiOTg1Yzg1MGNhZjA0Mzc0YWE4MTNhMjA1
MGJkZjAwNDU3YTcuLmY4YjY2YTNiNzRjZTFmMzI1MDE1Yzk1ZjdhZGNjOTk1ZDdmZThmNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0K
QEAgLTMyNiw3ICszMjYsNyBAQCAtICh2b2lkKWZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNl
OihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjdHgg
PSBKU0dsb2JhbENvbnRleHRDcmVhdGUoMCk7CiAgICAgSlNPYmplY3RSZWYganNQREZEb2MgPSBt
YWtlSlNQREZEb2MoY3R4LCBkYXRhU291cmNlKTsKICAgICBmb3IgKE5TU3RyaW5nICpzY3JpcHQg
aW4gc2NyaXB0cykKLSAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIE9wYXF1ZUpTU3RyaW5n
OjpjcmVhdGUoc2NyaXB0KS5nZXQoKSwganNQREZEb2MsIG51bGxwdHIsIDAsIG51bGxwdHIpOwor
ICAgICAgICBKU0V2YWx1YXRlU2NyaXB0KGN0eCwgT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShz
Y3JpcHQpLmdldCgpLCBqc1BERkRvYywgbnVsbHB0ciwgMCwgbnVsbHB0cik7CiAgICAgSlNHbG9i
YWxDb250ZXh0UmVsZWFzZShjdHgpOwogCiAgICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5OllFU107
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQ
bGFjZWhvbGRlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmll
d1BsYWNlaG9sZGVyLm1tCmluZGV4IDFlODZiYTA3NDRiNDRmZjY0ZDI0MTY3YmU3ODQ4YWFmN2U5
NTdlMzMuLmU4ZWE1MmMwZTVkZDU3ZDhiZWJiNjE3Njk2NDM3ZTNlMjI1ZGI5ZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNl
aG9sZGVyLm1tCkBAIC0zMDcsNyArMzA3LDcgQEAgLSAodm9pZClfZXZhbHVhdGVKU0ZvckRvY3Vt
ZW50OihDR1BERkRvY3VtZW50UmVmKXBkZkRvY3VtZW50CiAgICAgICAgIEpTR2xvYmFsQ29udGV4
dFJlZiBjdHggPSBKU0dsb2JhbENvbnRleHRDcmVhdGUoMCk7CiAgICAgICAgIEpTT2JqZWN0UmVm
IGpzUERGRG9jID0gbWFrZUpTUERGRG9jKGN0eCwgX2RhdGFTb3VyY2UpOwogICAgICAgICBmb3Ig
KE5TU3RyaW5nICpzY3JpcHQgaW4gc2NyaXB0cykKLSAgICAgICAgICAgIEpTRXZhbHVhdGVTY3Jp
cHQoY3R4LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHNjcmlwdCkuZ2V0KCksIGpzUERGRG9jLCBu
dWxscHRyLCAwLCBudWxscHRyKTsKKyAgICAgICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4LCBP
cGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHNjcmlwdCkuZ2V0KCksIGpzUERGRG9jLCBudWxscHRy
LCAwLCBudWxscHRyKTsKICAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShjdHgpOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERG
UmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBE
RlJlcHJlc2VudGF0aW9uLm1tCmluZGV4IGFhZGZlZDIxOGZjZWY0YjEyZmI4OWFhNzc3YTE5NGY1
ZmQyN2EwNDUuLjM0NjhkZGRjZDRhNzdiYmE3Mzg2OWE4Nzk3NDc1OTEwOGNlZjM2NWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNl
bnRhdGlvbi5tbQpAQCAtMTM0LDcgKzEzNCw3IEBAIC0gKHZvaWQpZmluaXNoZWRMb2FkaW5nV2l0
aERhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCiAgICAgSlNHbG9iYWxDb250
ZXh0UmVmIGN0eCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZSgwKTsKICAgICBKU09iamVjdFJlZiBq
c1BERkRvYyA9IG1ha2VKU1BERkRvYyhjdHgsIGRhdGFTb3VyY2UpOwogICAgIGZvciAoTlNTdHJp
bmcgKnNjcmlwdCBpbiBzY3JpcHRzKQotICAgICAgICBKU0V2YWx1YXRlU2NyaXB0KGN0eCwgT3Bh
cXVlSlNTdHJpbmc6OmNyZWF0ZShzY3JpcHQpLmdldCgpLCBqc1BERkRvYywgbnVsbHB0ciwgMCwg
bnVsbHB0cik7CisgICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4LCBPcGFxdWVKU1N0cmluZzo6
dHJ5Q3JlYXRlKHNjcmlwdCkuZ2V0KCksIGpzUERGRG9jLCBudWxscHRyLCAwLCBudWxscHRyKTsK
ICAgICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKGN0eCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNjczODMxYjMyMTNmMGIzNThhMWNl
NzM5ZGFmZjFkMDBmZGY3ZDIyLi41YjVkODAwNTY1NGQzNmVmNmZlYzg1MTRmYjBkYzMzNjFjZjIx
ZGFlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTgtMTAtMTAgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lA
c2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBbSlNDXSBSZW5hbWUgY3JlYXRlWFhYIHRvIHRyeUNy
ZWF0ZVhYWCBpZiBpdCBjYW4gcmV0dXJuIFJlZlB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFj
L0dQVUJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMTgt
MTAtMDkgIEd1aWxsYXVtZSBFbW9udCAgPGd1aWplbW9udEBpZ2FsaWEuY29tPgogCiAgICAgICAg
IEFsbG93IHJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyB0byBkaXN0cmlidXRlIHRlc3RzIGJldHdl
ZW4gZGV2aWNlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L21hYy9HUFVCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFj
L0dQVUJ1ZmZlci5tbQppbmRleCA3N2FjNTllNmNjZjJkM2YzOTgyMzY3MjZmMjc1OWNmZjYxMDBl
MzIwLi45Y2QyYWFhNzQ0OTI4YWMzOTNjYzIzMzI2MzkzM2Y2OWVmMDIzMDJiIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVUJ1ZmZlci5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvbWFjL0dQVUJ1ZmZlci5tbQpAQCAt
NTksNyArNTksNyBAQCBURVNUX0YoR1BVLCBCdWZmZXJDcmVhdGUpCiAgICAgYXV0byBkYXRhID0g
YnVmZmVyVmlldy0+ZGF0YSgpOwogICAgIG1lbXNldChkYXRhLCAxLCBidWZmZXJWaWV3LT5ieXRl
TGVuZ3RoKCkpOwogCi0gICAgR1BVQnVmZmVyIGJ1ZmZlciB7IGRldmljZSwgKmJ1ZmZlclZpZXcg
fTsKKyAgICBHUFVCdWZmZXIgYnVmZmVyIHsgZGV2aWNlLCBidWZmZXJWaWV3LmdldCgpIH07CiAg
ICAgRVhQRUNUX0VRKDEwMjRVLCBidWZmZXIubGVuZ3RoKCkpOwogCiAgICAgYXV0byBjb250ZW50
cyA9IGJ1ZmZlci5jb250ZW50cygpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>