<?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>238187</bug_id>
          
          <creation_ts>2022-03-21 22:41:10 -0700</creation_ts>
          <short_desc>Add a debug overlay for interaction regions</short_desc>
          <delta_ts>2022-04-01 01:18:54 -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="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1853536</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-03-21 22:41:10 -0700</bug_when>
    <thetext>Add a debug overlay for interaction regions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853538</commentid>
    <comment_count>1</comment_count>
      <attachid>455334</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-03-21 22:42:20 -0700</bug_when>
    <thetext>Created attachment 455334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853563</commentid>
    <comment_count>2</comment_count>
      <attachid>455345</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-03-22 01:06:20 -0700</bug_when>
    <thetext>Created attachment 455345
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855914</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-28 22:42:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/90964948&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856618</commentid>
    <comment_count>4</comment_count>
      <attachid>455345</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-03-30 17:03:09 -0700</bug_when>
    <thetext>Comment on attachment 455345
Patch

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

r=me (with a build fix for CMake)

&gt; Source/WebCore/dom/Node.cpp:2519
&gt; +    for (const auto&amp; eventType : eventTypes()) {
&gt; +        if (eventNames().isTouchRelatedEventType(eventType, *this))
&gt; +            return true;
&gt; +    }
&gt; +    return false;

(Could consider using `containsIf` here — might be a tiny bit cleaner)

&gt; Source/WebCore/page/DebugPageOverlays.cpp:265
&gt; +    Vector&lt;Setting&gt; m_settings {

FixedVector?

&gt; Source/WebCore/page/FrameSnapshotting.cpp:189
&gt; +    for (; !!renderer; renderer = renderer-&gt;parent()) {

Could we use `ancestorsOfType&lt;RenderElement&gt;` here?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h:40
&gt; +    _WKInteractionRegion = 1 &lt;&lt; 4,

Does this need availability information too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856669</commentid>
    <comment_count>5</comment_count>
      <attachid>455345</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-30 20:50:22 -0700</bug_when>
    <thetext>Comment on attachment 455345
Patch

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

&gt;&gt; Source/WebCore/page/DebugPageOverlays.cpp:265
&gt;&gt; +    Vector&lt;Setting&gt; m_settings {
&gt; 
&gt; FixedVector?

std::array?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856997</commentid>
    <comment_count>6</comment_count>
      <attachid>456285</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-03-31 14:45:30 -0700</bug_when>
    <thetext>Created attachment 456285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857108</commentid>
    <comment_count>7</comment_count>
      <attachid>456310</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-03-31 19:43:52 -0700</bug_when>
    <thetext>Created attachment 456310
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857109</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-03-31 19:45:22 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 455345 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=455345&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/page/DebugPageOverlays.cpp:265
&gt; &gt;&gt; +    Vector&lt;Setting&gt; m_settings {
&gt; &gt; 
&gt; &gt; FixedVector?
&gt; 
&gt; std::array?

FixedVector seems like std::array with less steps? (unless we have another way to construct one from an initializer list without specifying the size?)

(In reply to Wenson Hsieh from comment #4)
&gt; Comment on attachment 455345 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=455345&amp;action=review
&gt; 
&gt; r=me (with a build fix for CMake)
&gt; 
&gt; &gt; Source/WebCore/dom/Node.cpp:2519
&gt; &gt; +    for (const auto&amp; eventType : eventTypes()) {
&gt; &gt; +        if (eventNames().isTouchRelatedEventType(eventType, *this))
&gt; &gt; +            return true;
&gt; &gt; +    }
&gt; &gt; +    return false;
&gt; 
&gt; (Could consider using `containsIf` here — might be a tiny bit cleaner)

Way cleaner!

&gt; &gt; Source/WebCore/page/FrameSnapshotting.cpp:189
&gt; &gt; +    for (; !!renderer; renderer = renderer-&gt;parent()) {
&gt; 
&gt; Could we use `ancestorsOfType&lt;RenderElement&gt;` here?

lineageOfType, apparently, so that we visit self.

&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h:40
&gt; &gt; +    _WKInteractionRegion = 1 &lt;&lt; 4,
&gt; 
&gt; Does this need availability information too?

Of course!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857140</commentid>
    <comment_count>9</comment_count>
      <attachid>456310</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-31 21:31:24 -0700</bug_when>
    <thetext>Comment on attachment 456310
Patch

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

&gt; Source/WebCore/page/DebugPageOverlays.cpp:266
&gt; +        { &quot;constrain&quot;, &quot;Constrain to Regions&quot;, true },

Need a bunch of _s here if you don’t want to mess things up for Chris.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857143</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-03-31 21:42:58 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #9)
&gt; Comment on attachment 456310 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456310&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/DebugPageOverlays.cpp:266
&gt; &gt; +        { &quot;constrain&quot;, &quot;Constrain to Regions&quot;, true },
&gt; 
&gt; Need a bunch of _s here if you don’t want to mess things up for Chris.

I don&apos;t want to mess things up for Chris! I think I see what you&apos;re referring to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857161</commentid>
    <comment_count>11</comment_count>
      <attachid>456322</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-03-31 22:45:24 -0700</bug_when>
    <thetext>Created attachment 456322
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857189</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-01 01:18:48 -0700</bug_when>
    <thetext>Committed r292208 (249111@main): &lt;https://commits.webkit.org/249111@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 456322.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455334</attachid>
            <date>2022-03-21 22:42:20 -0700</date>
            <delta_ts>2022-03-22 01:06:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238187-20220321224219.patch</filename>
            <type>text/plain</type>
            <size>63738</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjI1M2FhZDA5N2VhYjgz
YTM0MTE2OGI1ZGRiODQwOWZlODgwNWVhNS4uOGZhNzVkNTYxYzE3MDUyMThiODM3ZGZkYTY3YWRh
ZTRlZGVmNmVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIyLTAzLTIxICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGRlYnVn
IG92ZXJsYXkgZm9yIGludGVyYWN0aW9uIHJlZ2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODE4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6OndpbGxSZXNwb25kVG9Ub3VjaEV2ZW50cyk6CisgICAgICAg
ICogZG9tL05vZGUuaDoKKyAgICAgICAgRXhwb3NlIGB3aWxsUmVzcG9uZFRvVG91Y2hFdmVudHNg
LCBzaW1pbGFyIHRvIGB3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzYC4KKworICAgICAgICAq
IHBhZ2UvRGVidWdPdmVybGF5UmVnaW9ucy5oOgorICAgICAgICAqIHBhZ2UvRGVidWdQYWdlT3Zl
cmxheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp1
cGRhdGVSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6cGF0aHNGb3JSZWdpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjphY3RpdmVSZWdpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0NoZWNrYm94KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVyYWN0
aW9uUmVnaW9uT3ZlcmxheTo6cmVjdEZvclNldHRpbmdBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1NldHRpbmdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3VzZUV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlZ2lvbk92ZXJsYXk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
ZWJ1Z1BhZ2VPdmVybGF5czo6dXBkYXRlT3ZlcmxheVJlZ2lvblZpc2liaWxpdHkpOgorICAgICAg
ICAqIHBhZ2UvRGVidWdQYWdlT3ZlcmxheXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlYnVnUGFn
ZU92ZXJsYXlzOjpkaWRMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RGVidWdQYWdlT3Zlcmxh
eXM6OmRpZENoYW5nZUV2ZW50SGFuZGxlcnMpOgorICAgICAgICAoV2ViQ29yZTo6RGVidWdQYWdl
T3ZlcmxheXM6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcpOgorICAgICAgICBBZGQgYW4gb3Zlcmxh
eSBmb3IgaW5kaWNhdGluZyBpbnRlcmFjdGlvbiByZWdpb25zLgorCisgICAgICAgICogcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZUNvbnRhaW5zQ29t
cGxleEJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXN0aW1hdGVkQmFja2dyb3VuZENv
bG9yRm9yUmFuZ2UpOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaDoKKyAgICAg
ICAgKiBwYWdlL1RleHRJbmRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVDb250
YWluc0NvbXBsZXhCYWNrZ3JvdW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmVzdGlt
YXRlZEJhY2tncm91bmRDb2xvckZvclJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZSBgZXN0
aW1hdGVkQmFja2dyb3VuZENvbG9yRm9yUmFuZ2VgIGZyb20gVGV4dEluZGljYXRvciB0bworICAg
ICAgICBGcmFtZVNuYXBzaG90dGluZyBmb3IgZWFzZSBvZiByZXVzZS4KKyAgICAgICAgCisgICAg
ICAgICogcGFnZS9JbnRlcmFjdGlvblJlZ2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6YWJzb2x1dGVCb3VuZGluZ1JlY3RGb3JSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpyZWdp
b25Gb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmN1cnNvclR5cGVGb3JFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmludGVyYWN0aW9uUmVnaW9ucyk6CisgICAgICAgICogcGFnZS9J
bnRlcmFjdGlvblJlZ2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkludGVyYWN0aW9u
UmVnaW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdp
b246OmRlY29kZSk6CisgICAgICAgIEFkZCBJbnRlcmFjdGlvblJlZ2lvbiwgd2hpY2gga2VlcHMg
dHJhY2sgb2YgdGhlIGxvY2F0aW9uIG9mIGFuZCBtZXRhZGF0YQorICAgICAgICBhYm91dCBpbnRl
cmFjdGlvbiByZWdpb25zLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U2l6ZTo6bWluRGltZW5zaW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dFNpemU6Om1heERpbWVuc2lvbiBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJvdW5kZWRSZWN0OjpSYWRpaTo6bWluaW11bVJhZGl1cyBjb25zdCk6CisgICAgICAgIEFkZCBt
aW5pbXVtUmFkaXVzKCkgdG8gUmFkaWkuCisKIDIwMjItMDMtMTcgIEFsZWphbmRybyBHLiBDYXN0
cm8gIDxhbGV4QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBtX2NvbXBvc2l0b3JU
aHJlYWQgQVNTRVJUIGluIFRleHR1cmVNYXBwZXIgY2xhc3NlcyBjYW4ganVzdCBiZSB1c2VkIGlu
IGRlYnVnIG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDc5N2M4NDI0MmU4MjVkOGIwYTU1NWYyYjM5OWU1OTQ0
NWQ0ZTI1Zi4uMTIwNzUyY2UzOTIxMDZiZWI1ZTMzMmZjZTZiN2NkNmMyMmQyMmI5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNCBAQAorMjAyMi0wMy0yMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9y
dG9uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBkZWJ1ZyBvdmVybGF5IGZvciBpbnRlcmFj
dGlvbiByZWdpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzgxODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3Bw
OgorICAgICAgICBVbmlmaWVkIHNvdXJjZSBmaXhlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAgQWRkIHBsdW1iaW5nIGZv
ciBhIG5ldyBkZWJ1ZyBvdmVybGF5LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW50ZXJhY3Rpb25SZWdpb25z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnRlcmFjdGFibGVSZWdpb25zSW5S
b290Vmlld0Nvb3JkaW5hdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW50ZXJhY3Rpb25SZWdpb25zRm9ySG92
ZXJQbGF0dGVyOmluUmVjdDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBpbnRlcmFjdGFibGVSZWdpb25zRm9ySG92ZXJQbGF0dGVyOmluUmVjdDpjb21wbGV0
aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLSG92ZXJQ
bGF0dGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5tbToKKyAg
ICAgICAgKC1bV0tIb3ZlclBsYXR0ZXIgdXBkYXRlRGVidWdJbmRpY2F0b3JdKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmludGVyYWN0aW9uUmVnaW9ucyk6CisgICAgICAgIE1vdmUgaW50ZXJhY3Rpb25SZWdpb25z
KCkgZnJvbSBXZWJQYWdlIHRvIFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uLgorCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmludGVyYWN0YWJsZVJlZ2lvbnNJblJvb3RWaWV3Q29vcmRpbmF0
ZXMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjIt
MDMtMTcgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtp
T1NdIFN1cHBvcnQgUERGIHNlYXJjaCB3aGVuIHVzaW5nIGEgZmluZCBpbnRlcmFjdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAppbmRleCA0M2NjMTJmN2MyNTlhNTA2NmZiMzMzOWZmOGYyMjRlZjZhODZjZmI5Li5m
ZTQ5ZjI4MjhhMTJmMDAzNWQ1ZWZhYzNmMWY3MWY5ZGY1YTRlZjcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApA
QCAtMTc0NSw2ICsxNzQ1LDcgQEAgcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAogcGFn
ZS9IaXN0b3J5LmNwcAogcGFnZS9JbWFnZUFuYWx5c2lzUXVldWUuY3BwCiBwYWdlL0ltYWdlT3Zl
cmxheUNvbnRyb2xsZXIuY3BwCitwYWdlL0ludGVyYWN0aW9uUmVnaW9uLmNwcAogcGFnZS9JbnRl
cnNlY3Rpb25PYnNlcnZlci5jcHAKIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5jcHAK
IHBhZ2UvTG9jYXRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGRjMDc0NGJkOWFhY2I1ZDkzMTI3NjNmODE2ZTExY2Fj
ODhjNjI3Mi4uZDE1ODg4N2JkZTE1NzlhYmU5MmViM2M1ZjFlYzA5NmU3NzdmMDYwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
ODg3LDYgKzg4Nyw3IEBACiAJCTJEOUYwRTEzMTRGRjFDQkYwMEJBMEZGNyAvKiBsaW5lYXJTUkdC
LmljYyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ5
RjBFMTIxNEZGMUNCRjAwQkEwRkY3IC8qIGxpbmVhclNSR0IuaWNjICovOyB9OwogCQkyREEzOTdF
NTI2NUM3Mzc1MDA0NjhGMzMgLyogTnVsbEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBMzk3RTMyNjVDNzM3NDAwNDY4RjMz
IC8qIE51bGxHcmFwaGljc0NvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkyREFGMzQzRDFFQTdFMEYxMDAzODJDRDMgLyogQ29uc3RhbnRQ
cm9wZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkRBRjM0M0IxRUE3RTBGMTAwMzgyQ0QzIC8qIENvbnN0YW50UHJvcGVydHlNYXAuaCAqLzsg
fTsKKwkJMkRDMDVDQTgyN0Q4MDk1NjAwNEVENDAzIC8qIEludGVyYWN0aW9uUmVnaW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREMwNUNBMzI3RDdG
NkI1MDA0RUQ0MDMgLyogSW50ZXJhY3Rpb25SZWdpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyREM4RDM5ODI1RjJGRTk3MDBDRkNCQUIgLyog
TW9kZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
QzhEMzk3MjVGMkZFOTQwMENGQ0JBQiAvKiBNb2RlbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJERDVBNzI3MUVCRUU0N0QwMDlCQTU5NyAvKiBD
b21wb3NpdGlvblVuZGVybGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkRENUE3MjYxRUJFRTQ3RDAwOUJBNTk3IC8qIENvbXBvc2l0aW9uVW5kZXJs
aW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MkREODcxNEIyNjVGNDM2NjAwNUY5OTdDIC8qIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDg3MTQ5MjY1
RjQzNjUwMDVGOTk3QyAvKiBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgxNjYsNiArODE2Nyw4IEBA
CiAJCTJEQUFFMzJEMTlEQ0FGNjAwMEUwMDJEMiAvKiBNb2NrUGFnZU92ZXJsYXlDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1BhZ2VPdmVybGF5Q2xpZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQUYzNDNBMUVBN0UwRjEwMDM4MkNEMyAv
KiBDb25zdGFudFByb3BlcnR5TWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvbnN0YW50UHJvcGVydHlNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyREFGMzQzQjFFQTdFMEYxMDAzODJDRDMgLyogQ29uc3RhbnRQcm9wZXJ0eU1hcC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25zdGFudFByb3BlcnR5TWFwLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEQzA1Q0EzMjdEN0Y2QjUwMDRFRDQwMyAvKiBJ
bnRlcmFjdGlvblJlZ2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcmFjdGlvblJlZ2lvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREMwNUNBNzI3RDgwMjE3MDA0RUQ0MDMgLyog
SW50ZXJhY3Rpb25SZWdpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZXJhY3Rpb25SZWdp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREM4RDM5NjI1RjJGRTkzMDBD
RkNCQUIgLyogTW9kZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kZWwuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyREM4RDM5NzI1RjJGRTk0MDBDRkNCQUIgLyogTW9kZWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTW9kZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkRENUE3MjYxRUJFRTQ3RDAwOUJBNTk3IC8qIENvbXBvc2l0aW9uVW5kZXJsaW5lLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBvc2l0aW9uVW5kZXJsaW5lLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDE4NCw2ICsyNDE4Nyw4IEBACiAJCQkJRjQ2RDUz
OUQyNzNFRUNGNzAwMDlGQTgwIC8qIEltYWdlQW5hbHlzaXNRdWV1ZS5oICovLAogCQkJCUY0ODI0
MzRBMjYwQzMyRjEwMDIyNDk3QyAvKiBJbWFnZU92ZXJsYXlDb250cm9sbGVyLmNwcCAqLywKIAkJ
CQlGNDgyNDM0ODI2MEMzMkYxMDAyMjQ5N0MgLyogSW1hZ2VPdmVybGF5Q29udHJvbGxlci5oICov
LAorCQkJCTJEQzA1Q0E3MjdEODAyMTcwMDRFRDQwMyAvKiBJbnRlcmFjdGlvblJlZ2lvbi5jcHAg
Ki8sCisJCQkJMkRDMDVDQTMyN0Q3RjZCNTAwNEVENDAzIC8qIEludGVyYWN0aW9uUmVnaW9uLmgg
Ki8sCiAJCQkJMEY0NzEwRDUxREI2RkUyMjAwMkRDRUMzIC8qIEludGVyc2VjdGlvbk9ic2VydmVy
LmNwcCAqLywKIAkJCQkwRjQ3MTBENjFEQjZGRTIyMDAyRENFQzMgLyogSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXIuaCAqLywKIAkJCQkwRjQ3MTBENzFEQjZGRTIyMDAyRENFQzMgLyogSW50ZXJzZWN0aW9u
T2JzZXJ2ZXIuaWRsICovLApAQCAtMzUxODQsNiArMzUxODksNyBAQAogCQkJCUE1OTNDRjhCMTg0
MDUzNTIwMEJGQ0UyNyAvKiBJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1QjgxQ0I0MUZBQTQ0NjIwMDM3RDFFNiAvKiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRjNBQkZFMEMxMzBFOURBMDAwRTdGN0QxIC8qIEluc3RydW1lbnRp
bmdBZ2VudHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEQzA1Q0E4MjdEODA5NTYwMDRFRDQwMyAv
KiBJbnRlcmFjdGlvblJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NzEwREMxREI2RkUy
MjAwMkRDRUMzIC8qIEludGVyc2VjdGlvbk9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjhCNDU3MjFEQzNGQkEzMDA0NDNDM0YgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NzEwREYxREI2RkUyMjAwMkRDRUMzIC8qIEludGVyc2Vj
dGlvbk9ic2VydmVyRW50cnkuaCBpbiBIZWFkZXJzICovLApAQCAtMzc5NDMsNiArMzc5NDksNyBA
QAogCQkJCTQxRUI3OTdFMjdDM0U0NUUwMDFDM0UzRSAvKiBWaWRlb0ZyYW1lTGliV2ViUlRDLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MURFRUZCNjI3MTlCQTFBMDBDQjhENzQgLyogVmlkZW9GcmFt
ZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURFRUZCMDI3MTlCMjkwMDBDQjhENzQg
LyogVmlkZW9GcmFtZVJlcXVlc3RDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2MDQ5
MzMyNzQzQjBFODAwQTg2RkEwIC8qIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUyQjBENEMwMUM1N0ZENjYwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0ZCQzRBRjQxODk4ODE1NjAwNDZFRTM4
IC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MkIwRDRDMjFDNTdGRjkxMDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmgg
aW4gSGVhZGVycyAqLywKQEAgLTM3OTUzLDcgKzM3OTYwLDYgQEAKIAkJCQlDREU4M0RCMjE4M0M0
NDA2MDAzMUVBQTMgLyogVmlkZW9QbGF5YmFja1F1YWxpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA3NTAzM0E4MjUyQkQzNjgwMEY3MENFMyAvKiBWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA3NTdCMTNFMjE0QUU3OTkwMDc5NEIwRCAvKiBWaWRlb1By
ZXNldC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE2MDQ5MzMyNzQzQjBFODAwQTg2RkEwIC8qIFZp
ZGVvRnJhbWVUaW1lTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzkzOUE4MUU5QkRG
QjEwMEJCNzY4RCAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkU4OEUwREYxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCUNEMUY5QjE4MjcwMjNBMkEwMDYxN0VCNiAvKiBWaWRlb1RyYWNrQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBiMWFmNDVmN2VjMmYxMGQyZTBkMjRjYzgwYzU3
MGE2MWMzZGQ5MWM2Li5jM2ZlOGE5ZjMwYzJlZTBmNDc0ZmUzOGMwM2U5YTdhODE1Nzg5YTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCkBAIC0yNTEwLDYgKzI1MTAsMTUgQEAgYm9vbCBOb2RlOjp3aWxsUmVz
cG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkKICAgICByZXR1cm4gaGFzRXZlbnRMaXN0ZW5lcnMoZXZl
bnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVz
KCkubW91c2VvdmVyRXZlbnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3Vz
ZW91dEV2ZW50KTsKIH0KIAorYm9vbCBOb2RlOjp3aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMoKQor
eworICAgIGZvciAoY29uc3QgYXV0byYgZXZlbnRUeXBlIDogZXZlbnRUeXBlcygpKSB7CisgICAg
ICAgIGlmIChldmVudE5hbWVzKCkuaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoZXZlbnRUeXBlLCAq
dGhpcykpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNl
OworfQorCiBib29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKIHsKICAg
ICAvLyBGSVhNRTogV2h5IGlzIHRoZSBpT1MgY29kZSBwYXRoIGRpZmZlcmVudCBmcm9tIHRoZSBu
b24taU9TIGNvZGUgcGF0aD8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDNlZGMwMzBiM2M1NjMxN2Q2Yjc0OTA4
MDk1ZjA2OThlNjU5ZTY0Y2YuLjUzYzU4ZmI3MjMwNzk0ODAxNTE3ODNmOTI3MmEwYjczMDk0NDJi
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaApAQCAtMjc1LDcgKzI3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0ZShib29sIGZsYWcpIHsgc2V0Tm9kZUZs
YWcoTm9kZUZsYWc6OlNlbGZPckFuY2VzdG9ySGFzRGlyQXV0bywgZmxhZyk7IH0KIAogICAgIC8v
IFJldHVybnMgdGhlIGVuY2xvc2luZyBldmVudCBwYXJlbnQgRWxlbWVudCAob3Igc2VsZikgdGhh
dCwgd2hlbiBjbGlja2VkLCB3b3VsZCB0cmlnZ2VyIGEgbmF2aWdhdGlvbi4KLSAgICBFbGVtZW50
KiBlbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBF
bGVtZW50KiBlbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKTsKIAogICAgIC8vIFRoZXNl
IGxvdy1sZXZlbCBjYWxscyBnaXZlIHRoZSBjYWxsZXIgcmVzcG9uc2liaWxpdHkgZm9yIG1haW50
YWluaW5nIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIHRyZWUuCiAgICAgdm9pZCBzZXRQcmV2aW91c1Np
YmxpbmcoTm9kZSogcHJldmlvdXMpIHsgbV9wcmV2aW91cyA9IHByZXZpb3VzOyB9CkBAIC00NTcs
NiArNDU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VN
b3ZlRXZlbnRzKCk7CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZl
bnRzKCk7CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZVdoZWVsRXZlbnRzKCk7
CisgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Ub3VjaEV2ZW50cygpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdW5zaWduZWQgc2hvcnQgY29tcGFyZURvY3VtZW50UG9zaXRpb24oTm9kZSYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnT3ZlcmxheVJlZ2lvbnMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdPdmVybGF5UmVnaW9ucy5oCmluZGV4IDBmZGM4
M2MzYWRhZjEwNjI1ZDRhMjg3OTRmNjA2OTc4Njc0MzgxNjQuLmNlNjJkNDhlNjYzOTJmNjU3MGRm
MTM5ZGM2NTYxNDE0ZTczMWMxZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVi
dWdPdmVybGF5UmVnaW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdPdmVybGF5
UmVnaW9ucy5oCkBAIC0zNCw2ICszNCw3IEBAIGVudW0gY2xhc3MgRGVidWdPdmVybGF5UmVnaW9u
cyA6IHVpbnQ4X3QgewogICAgIFdoZWVsRXZlbnRIYW5kbGVyUmVnaW9uID0gMSA8PCAxLAogICAg
IFRvdWNoQWN0aW9uUmVnaW9uID0gMSA8PCAyLAogICAgIEVkaXRhYmxlRWxlbWVudFJlZ2lvbiA9
IDEgPDwgMywKKyAgICBJbnRlcmFjdGlvblJlZ2lvbiA9IDEgPDwgNCwKIH07CiAKIH0KQEAgLTQ2
LDcgKzQ3LDggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEZWJ1Z092
ZXJsYXlSZWdpb25zPiB7CiAgICAgICAgIFdlYkNvcmU6OkRlYnVnT3ZlcmxheVJlZ2lvbnM6Ok5v
bkZhc3RTY3JvbGxhYmxlUmVnaW9uLAogICAgICAgICBXZWJDb3JlOjpEZWJ1Z092ZXJsYXlSZWdp
b25zOjpXaGVlbEV2ZW50SGFuZGxlclJlZ2lvbiwKICAgICAgICAgV2ViQ29yZTo6RGVidWdPdmVy
bGF5UmVnaW9uczo6VG91Y2hBY3Rpb25SZWdpb24sCi0gICAgICAgIFdlYkNvcmU6OkRlYnVnT3Zl
cmxheVJlZ2lvbnM6OkVkaXRhYmxlRWxlbWVudFJlZ2lvbgorICAgICAgICBXZWJDb3JlOjpEZWJ1
Z092ZXJsYXlSZWdpb25zOjpFZGl0YWJsZUVsZW1lbnRSZWdpb24sCisgICAgICAgIFdlYkNvcmU6
OkRlYnVnT3ZlcmxheVJlZ2lvbnM6OkludGVyYWN0aW9uUmVnaW9uCiAgICAgPjsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggN2IzZWM3OGYzZGFm
NGE3YWMzNTc2MzllYmJkY2I1ZTMwMjE0ZDhkNy4uMmNlNjZlZDljMmNjZGQ3NzY4YjhlMTAyZDVk
NWM0NWZmZTMwNzBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VP
dmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5j
cHAKQEAgLTI3LDEyICsyNywxOCBAQAogI2luY2x1ZGUgIkRlYnVnUGFnZU92ZXJsYXlzLmgiCiAK
ICNpbmNsdWRlICJDb2xvckhhc2guaCIKKyNpbmNsdWRlICJDdXJzb3IuaCIKICNpbmNsdWRlICJF
bGVtZW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbnRlcmFjdGlvblJlZ2lvbi5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJQYWdlT3ZlcmxheS5oIgogI2luY2x1ZGUgIlBhZ2VPdmVybGF5Q29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIlBhdGhVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJTY3JvbGxpbmdD
b29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC01OSw4ICs2NSw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB3aWxsTW92ZVRvUGFnZShQYWdlT3ZlcmxheSYsIFBhZ2UqKSBmaW5h
bDsKICAgICB2b2lkIGRpZE1vdmVUb1BhZ2UoUGFnZU92ZXJsYXkmLCBQYWdlKikgZmluYWw7CiAg
ICAgdm9pZCBkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVy
bGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmluYWw7Ci0gICAgdm9pZCBkaWRTY3Jv
bGxGcmFtZShQYWdlT3ZlcmxheSYsIEZyYW1lJikgZmluYWw7CisgICAgYm9vbCBtb3VzZUV2ZW50
KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRTY3JvbGxGcmFtZShQYWdlT3ZlcmxheSYsIEZyYW1lJikgb3ZlcnJpZGU7CiAKIHBy
b3RlY3RlZDoKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHJlZ2lvbiBjaGFuZ2VkLgpAQCAt
NzQsNiArODAsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX3JlZ2lvbkNoYW5nZWQgeyB0cnVl
IH07CiB9OwogCisjcHJhZ21hIG1hcmsgLSBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheQorCiBjbGFz
cyBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheSBmaW5hbCA6IHB1YmxpYyBSZWdpb25PdmVybGF5IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1vdXNlV2hlZWxSZWdpb25PdmVybGF5PiBjcmVhdGUo
UGFnZSYgcGFnZSkKQEAgLTExNSw2ICsxMjMsOCBAQCBib29sIE1vdXNlV2hlZWxSZWdpb25PdmVy
bGF5Ojp1cGRhdGVSZWdpb24oKQogI2VuZGlmCiB9CiAKKyNwcmFnbWEgbWFyayAtIE5vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uT3ZlcmxheQorCiBjbGFzcyBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92
ZXJsYXkgZmluYWwgOiBwdWJsaWMgUmVnaW9uT3ZlcmxheSB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk+IGNyZWF0ZShQYWdlJiBwYWdlKQpA
QCAtMjE5LDYgKzIyOSwzMTUgQEAgdm9pZCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6
OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSwgR3JhcGhpY3MKICAgICBkcmF3UmVn
aW9uKGNvbnRleHQsIG1fZXZlbnRUcmFja2luZ1JlZ2lvbnMuYXN5bmNocm9ub3VzRGlzcGF0Y2hS
ZWdpb24sIG1fY29sb3IsIGJvdW5kcyk7CiB9CiAKKyNwcmFnbWEgbWFyayAtIEludGVyYWN0aW9u
UmVnaW9uT3ZlcmxheQorCitjbGFzcyBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXkgZmluYWwgOiBw
dWJsaWMgUmVnaW9uT3ZlcmxheSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxJbnRlcmFjdGlv
blJlZ2lvbk92ZXJsYXk+IGNyZWF0ZShQYWdlJiBwYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5KHBhZ2UpKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5KFBhZ2UmIHBh
Z2UpCisgICAgICAgIDogUmVnaW9uT3ZlcmxheShwYWdlLCBDb2xvcjo6Z3JlZW4uY29sb3JXaXRo
QWxwaGFCeXRlKDEwMikpCisgICAgeworICAgIH0KKworICAgIGJvb2wgdXBkYXRlUmVnaW9uKCkg
ZmluYWw7CisgICAgdm9pZCBkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgZmluYWw7CisKKyAgICB2b2lkIGRyYXdTZXR0aW5n
cyhHcmFwaGljc0NvbnRleHQmKTsKKworICAgIGJvb2wgbW91c2VFdmVudChQYWdlT3ZlcmxheSYs
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOworCisgICAgRmxvYXRSZWN0IHJlY3RG
b3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoY29u
c3QgU3RyaW5nJik7CisgICAgICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdp
b24+IGFjdGl2ZVJlZ2lvbigpOworCisgICAgc3RydWN0IFNldHRpbmcgeworICAgICAgICBTdHJp
bmcga2V5OworICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgYm9vbCB2YWx1ZTsKKyAgICB9
OyAgICAKKworICAgIFZlY3RvcjxTZXR0aW5nPiBtX3NldHRpbmdzIHsKKyAgICAgICAgeyAiY29u
c3RyYWluIiwgIkNvbnN0cmFpbiB0byBSZWdpb25zIiwgdHJ1ZSB9LAorICAgICAgICB7ICJjbGlw
IiwgIkNsaXAgdG8gUmVnaW9ucyIsIHRydWUgfSwKKyAgICAgICAgeyAid2FzaCIsICJEcmF3IFdh
c2giLCB0cnVlIH0sCisgICAgICAgIHsgImNvbnRleHR1YWxDb2xvciIsICJDb250ZXh0dWFsIENv
bG9yIiwgdHJ1ZSB9LAorICAgICAgICB7ICJjb250ZXh0dWFsU2l6ZSIsICJDb250ZXh0dWFsIFNp
emUiLCB0cnVlIH0sCisgICAgICAgIHsgImN1cnNvciIsICJTaG93IEN1cnNvciIsIHRydWUgfSwK
KyAgICAgICAgeyAiaG92ZXIiLCAiQ1NTIEhvdmVyIiwgZmFsc2UgfSwKKyAgICAgICAgeyAicmVn
aW9ucyIsICJTaG93IFJlZ2lvbnMiLCBmYWxzZSB9CisgICAgfTsKKyAgICAKKyAgICBWZWN0b3I8
SW50ZXJhY3Rpb25SZWdpb24+IG1fcmVnaW9uczsKKyAgICBJbnRQb2ludCBtX21vdXNlTG9jYXRp
b25JbkNvbnRlbnRDb29yZGluYXRlczsKK307CisKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVy
bGF5Ojp1cGRhdGVSZWdpb24oKQoreworICAgIG1fb3ZlcmxheS0+c2V0TmVlZHNEaXNwbGF5KCk7
CisgICAgbV9yZWdpb25zID0gaW50ZXJhY3Rpb25SZWdpb25zKG1fcGFnZSwgeyB7IDAsIDAgfSwg
bV9wYWdlLm1haW5GcmFtZSgpLnZpZXcoKS0+Y29udGVudHNTaXplKCkgfSk7CisgICAgCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBWZWN0b3I8UGF0aD4gcGF0aHNGb3JSZWdpb24oY29u
c3QgSW50ZXJhY3Rpb25SZWdpb24mIHJlZ2lvbikKK3sKKyAgICBzdGF0aWMgY29uc3RleHByIGZs
b2F0IHBhZGRpbmcgPSAzOworICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgcmFkaXVzID0gNDsK
KworICAgIFZlY3RvcjxGbG9hdFJlY3Q+IHJlY3RzOworICAgIGZvciAoYXV0byByZWN0IDogcmVn
aW9uLnJlY3RzSW5Db250ZW50Q29vcmRpbmF0ZXMpIHsKKyAgICAgICAgaWYgKHJlZ2lvbi5pc0lu
bGluZSkKKyAgICAgICAgICAgIHJlY3QuaW5mbGF0ZShwYWRkaW5nKTsKKyAgICAgICAgcmVjdHMu
YXBwZW5kKHJlY3QpOworICAgIH0KKyAgICByZXR1cm4gUGF0aFV0aWxpdGllczo6cGF0aHNXaXRo
U2hyaW5rV3JhcHBlZFJlY3RzKHJlY3RzLCBzdGQ6Om1heChyZWdpb24uYm9yZGVyUmFkaXVzLCBy
YWRpdXMpKTsKK30KKworc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJlZ2lvbj4gSW50ZXJhY3Rp
b25SZWdpb25PdmVybGF5OjphY3RpdmVSZWdpb24oKQoreworICAgIHN0ZDo6b3B0aW9uYWw8SW50
ZXJhY3Rpb25SZWdpb24+IGhpdFJlZ2lvbjsKKyAgICBmbG9hdCBoaXRSZWdpb25BcmVhID0gMDsK
KyAgICAKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHJlZ2lvbiA6IG1fcmVnaW9ucykgeworICAgICAg
ICBmbG9hdCBhcmVhID0gMDsKKyAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nUmVjdDsKKyAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiByZWN0IDogcmVnaW9uLnJlY3RzSW5Db250ZW50Q29vcmRpbmF0
ZXMpIHsKKyAgICAgICAgICAgIGlmIChib3VuZGluZ1JlY3QuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgIGJvdW5kaW5nUmVjdCA9IHJlY3Q7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgYm91bmRpbmdSZWN0LnVuaXRlKHJlY3QpOworICAgICAgICAgICAgYXJlYSArPSByZWN0
LmFyZWEoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghYm91bmRpbmdSZWN0LmNvbnRhaW5z
KG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIGF1dG8gcGF0aHMgPSBwYXRoc0ZvclJlZ2lvbihyZWdpb24pOworICAg
ICAgICBib29sIGRpZEhpdFJlZ2lvbiA9IGZhbHNlOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IHBhdGggOiBwYXRocykgeworICAgICAgICAgICAgaWYgKHBhdGguY29udGFpbnMobV9tb3VzZUxv
Y2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMpKSB7CisgICAgICAgICAgICAgICAgZGlkSGl0UmVn
aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCFkaWRIaXRSZWdpb24pCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBpZiAoYXJlYSA+IG1fcGFnZS5tYWluRnJhbWUoKS52aWV3KCkt
PmxheW91dFNpemUoKS5hcmVhKCkgLyAyKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgaWYgKGRpZEhpdFJlZ2lvbiAmJiAoIWhpdFJlZ2lvbiB8fCBhcmVhIDwgaGl0UmVnaW9uQXJl
YSkpIHsKKyAgICAgICAgICAgIGhpdFJlZ2lvbiA9IHJlZ2lvbjsKKyAgICAgICAgICAgIGhpdFJl
Z2lvbkFyZWEgPSBhcmVhOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBoaXRS
ZWdpb247Cit9CisKK3N0YXRpYyB2b2lkIGRyYXdDaGVja2JveChjb25zdCBTdHJpbmcmIHRleHQs
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0
IEZsb2F0UmVjdCYgYm94LCBib29sIHN0YXRlKQoreworICAgIHN0YXRpYyBjb25zdGV4cHIgZmxv
YXQgbGluZUhlaWdodCA9IDE0OworICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgY2hlY2tib3hW
ZXJ0aWNhbFBhZGRpbmcgPSAyOworICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgdGV4dEhvcml6
b250YWxQYWRkaW5nID0gNDsKKworICAgIEZsb2F0UmVjdCBjaGVja2JveFJlY3QgeyBib3gubG9j
YXRpb24oKSArIEZsb2F0U2l6ZSB7IDAsIGNoZWNrYm94VmVydGljYWxQYWRkaW5nIH0sIEZsb2F0
U2l6ZSB7IGxpbmVIZWlnaHQsIGxpbmVIZWlnaHQgfSB9OworCisgICAgVGV4dFJ1biB0ZXh0UnVu
ID0gVGV4dFJ1bih0ZXh0KTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2sp
OworICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgYm94LmxvY2F0aW9uKCkgKyBG
bG9hdFNpemUgeyBjaGVja2JveFJlY3Qud2lkdGgoKSArIHRleHRIb3Jpem9udGFsUGFkZGluZywg
bGluZUhlaWdodCB9KTsKKworICAgIFBhdGggY2hlY2tib3hQYXRoOworICAgIGNoZWNrYm94UGF0
aC5hZGRSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0IHsgY2hlY2tib3hSZWN0LCBGbG9hdFJv
dW5kZWRSZWN0OjpSYWRpaSB7IDMgfSB9KTsKKworICAgIGlmIChzdGF0ZSkgeworICAgICAgICBj
b250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6ZGFya0dyYXkpOworICAgICAgICBjb250ZXh0LmZp
bGxQYXRoKGNoZWNrYm94UGF0aCk7CisgICAgfQorCisgICAgY29udGV4dC5zZXRTdHJva2VDb2xv
cihDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGFCeXRlKDEyNykpOworICAgIGNvbnRleHQuc2V0
U3Ryb2tlVGhpY2tuZXNzKDEpOworICAgIGNvbnRleHQuc3Ryb2tlUGF0aChjaGVja2JveFBhdGgp
OworfQorCitGbG9hdFJlY3QgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpyZWN0Rm9yU2V0dGlu
Z0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgYXV0byB2aWV3U2l6ZSA9IG1fcGFnZS5t
YWluRnJhbWUoKS52aWV3KCktPmxheW91dFNpemUoKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGZs
b2F0IHNldHRpbmdzV2lkdGggPSAxNTA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdCByb3dI
ZWlnaHQgPSAxNjsKKyAgICByZXR1cm4geworICAgICAgICBGbG9hdFBvaW50IHsgdmlld1NpemUu
d2lkdGgoKSAtIHNldHRpbmdzV2lkdGggLSAxNCwgMTAgfQorICAgICAgICAgICAgKyBGbG9hdFNp
emUgeyA0LCByb3dIZWlnaHQgKiBpbmRleCArIDIgfSwKKyAgICAgICAgRmxvYXRTaXplIHsgc2V0
dGluZ3NXaWR0aCwgcm93SGVpZ2h0IH0KKyAgICB9OworfQorCitib29sIEludGVyYWN0aW9uUmVn
aW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIHNldHRpbmcgOiBtX3NldHRpbmdzKSB7CisgICAgICAgIGlmIChuYW1l
ID09IHNldHRpbmcua2V5KQorICAgICAgICAgICAgcmV0dXJuIHNldHRpbmcudmFsdWU7CisgICAg
fQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1NldHRpbmdzKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKK3sKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
Y29udGV4dCk7CisKKyAgICBGbG9hdFJlY3QgcmVjdCA9IHJlY3RGb3JTZXR0aW5nQXRJbmRleCgw
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgbV9zZXR0aW5ncy5zaXplKCk7IGkrKykK
KyAgICAgICAgcmVjdC51bml0ZShyZWN0Rm9yU2V0dGluZ0F0SW5kZXgoaSkpOworCisgICAgcmVj
dC5leHBhbmQoRmxvYXRCb3hFeHRlbnQgeyA0LCA0LCA0LCA0IH0pOworCisgICAgeworICAgICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgICAg
IGNvbnRleHQuc2V0U2hhZG93KHsgfSwgNSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhB
bHBoYSgwLjUpKTsKKyAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVk
UmVjdCB7IHJlY3QsIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpIHsgNiB9IH0sIENvbG9yKENvbG9y
Ojp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC44NSkpOworICAgIH0KKworICAgIEZvbnRDYXNjYWRl
RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVG
YW1pbHkoIkhlbHZldGljYSIpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXpl
KDEyKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDEyKTsKKyAgICBmb250
RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSg1MDApKTsKKyAgICBGb250
Q2FzY2FkZSBmb250KFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSwgMCwgMCk7CisgICAgZm9udC51
cGRhdGUobnVsbHB0cik7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zZXR0aW5n
cy5zaXplKCk7IGkrKykgeworICAgICAgICBjb25zdCBhdXRvJiBzZXR0aW5nID0gbV9zZXR0aW5n
c1tpXTsKKyAgICAgICAgZHJhd0NoZWNrYm94KHNldHRpbmcubmFtZSwgY29udGV4dCwgZm9udCwg
cmVjdEZvclNldHRpbmdBdEluZGV4KGkpLCBzZXR0aW5nLnZhbHVlKTsKKyAgICB9Cit9CisKK3Zv
aWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQoreworICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICAKKyAgICBj
b250ZXh0LmNsZWFyUmVjdChkaXJ0eVJlY3QpOworCisgICAgaWYgKHZhbHVlRm9yU2V0dGluZygi
cmVnaW9ucyIpKSB7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOworICAg
ICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CisKKyAgICAgICAgZm9y
IChjb25zdCBhdXRvJiByZWdpb24gOiBtX3JlZ2lvbnMpIHsKKyAgICAgICAgICAgIGZvciAoY29u
c3QgYXV0byYgcmVjdCA6IHJlZ2lvbi5yZWN0c0luQ29udGVudENvb3JkaW5hdGVzKQorICAgICAg
ICAgICAgY29udGV4dC5zdHJva2VSZWN0KHJlY3QsIDIpOworICAgICAgICB9CisgICAgfQorCisg
ICAgYXV0byByZWdpb24gPSBhY3RpdmVSZWdpb24oKTsKKworICAgIGlmIChyZWdpb24gfHwgIXZh
bHVlRm9yU2V0dGluZygiY29uc3RyYWluIikpIHsKKyAgICAgICAgYXV0byBncmFkaWVudERhdGEg
PSBbJl0gKGZsb2F0IHJhZGl1cykgeworICAgICAgICAgICAgR3JhZGllbnQ6OlJhZGlhbERhdGEg
Z3JhZGllbnREYXRhOworICAgICAgICAgICAgZ3JhZGllbnREYXRhLnBvaW50MCA9IG1fbW91c2VM
b2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzOworICAgICAgICAgICAgZ3JhZGllbnREYXRhLnBv
aW50MSA9IG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzOworICAgICAgICAgICAg
Z3JhZGllbnREYXRhLnN0YXJ0UmFkaXVzID0gMDsKKyAgICAgICAgICAgIGdyYWRpZW50RGF0YS5l
bmRSYWRpdXMgPSByYWRpdXM7CisgICAgICAgICAgICBncmFkaWVudERhdGEuYXNwZWN0UmF0aW8g
PSAxOworICAgICAgICAgICAgcmV0dXJuIGdyYWRpZW50RGF0YTsKKyAgICAgICAgfTsKKworICAg
ICAgICBhdXRvIG1ha2VHcmFkaWVudCA9IFsmXSAoYm9vbCBoYXNMaWdodEJhY2tncm91bmQsIEdy
YWRpZW50OjpSYWRpYWxEYXRhIGdyYWRpZW50RGF0YSkgeworICAgICAgICAgICAgYXV0byBncmFk
aWVudCA9IEdyYWRpZW50OjpjcmVhdGUoV1RGTW92ZShncmFkaWVudERhdGEpLCB7IENvbG9ySW50
ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJl
bXVsdGlwbGllZCB9KTsKKyAgICAgICAgICAgIGlmIChyZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5n
KCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpIHsKKyAgICAgICAgICAgICAgICBn
cmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0
aEFscGhhKDAuNSkgfSk7CisgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7
IDEsIGhhc0xpZ2h0QmFja2dyb3VuZCA/IENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxw
aGEoMC4wNSkgOiBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMSkgfSk7Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiKSB8fCAhdmFsdWVG
b3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRD
b2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4yKSB9
KTsKKyAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgQ29sb3IoQ29s
b3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwKSB9KTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6
OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjUpIH0pOworICAgICAgICAgICAgICAgIGdyYWRpZW50
LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAp
IH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gZ3JhZGllbnQ7CisgICAg
ICAgIH07CisgICAgICAgIAorICAgICAgICBmbG9hdCByYWRpdXMgPSA1MDsKKworICAgICAgICBp
ZiAoIXZhbHVlRm9yU2V0dGluZygiY2xpcCIpIHx8ICFyZWdpb24pIHsKKyAgICAgICAgICAgIGF1
dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKGdyYWRpZW50RGF0YShyYWRpdXMgKiAyKSwg
eyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CisgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7Cisg
ICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgQ29sb3IoQ29sb3I6OmJsYWNr
KS5jb2xvcldpdGhBbHBoYSgwKSB9KTsKKworICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsR3Jh
ZGllbnQoV1RGTW92ZShncmFkaWVudCkpOworICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChk
aXJ0eVJlY3QpOworCisgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChtYWtlR3Jh
ZGllbnQoZmFsc2UsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CisgICAgICAgICAgICBjb250ZXh0
LmZpbGxSZWN0KGRpcnR5UmVjdCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBib29s
IGhhc0xpZ2h0QmFja2dyb3VuZCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKHZhbHVlRm9yU2V0
dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAgICAgICAgICAgaGFzTGlnaHRCYWNrZ3Jv
dW5kID0gcmVnaW9uLT5oYXNMaWdodEJhY2tncm91bmQ7CisKKyAgICAgICAgICAgIGlmICh2YWx1
ZUZvclNldHRpbmcoImNsaXAiKSkgeworICAgICAgICAgICAgICAgIGF1dG8gcGF0aHMgPSBwYXRo
c0ZvclJlZ2lvbigqcmVnaW9uKTsKKyAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBwYXRocykgeworICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVGb3JTZXR0aW5nKCJj
b250ZXh0dWFsU2l6ZSIpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFkaXVzID0gMS41ICog
cGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tn
cm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQuZmlsbFBhdGgocGF0aCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChtYWtlR3JhZGllbnQo
aGFzTGlnaHRCYWNrZ3JvdW5kLCBncmFkaWVudERhdGEocmFkaXVzKSkpOworICAgICAgICAgICAg
ICAgIGNvbnRleHQuZmlsbFJlY3QoZGlydHlSZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOworCisgICAgZHJhd1NldHRpbmdz
KGNvbnRleHQpOworfQorCitib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVu
dChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkK
K3sKKyAgICBhdXRvIG1haW5GcmFtZVZpZXcgPSBtX3BhZ2UubWFpbkZyYW1lKCkudmlldygpOwor
CisgICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OworCisgICAgaWYgKCF2YWx1
ZUZvclNldHRpbmcoImN1cnNvciIpKQorICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3Io
KTsKKyAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgICAgICBjdXJz
b3JUb1NldCA9IHBvaW50ZXJDdXJzb3IoKTsKKworICAgIGF1dG8gZXZlbnRJbkNvbnRlbnRzQ29v
cmRpbmF0ZXMgPSBtYWluRnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9u
KCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NldHRpbmdzLnNpemUoKTsgaSsr
KSB7CisgICAgICAgIGlmICghcmVjdEZvclNldHRpbmdBdEluZGV4KGkpLmNvbnRhaW5zKGV2ZW50
SW5Db250ZW50c0Nvb3JkaW5hdGVzKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBj
dXJzb3JUb1NldCA9IGhhbmRDdXJzb3IoKTsKKyAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbigpID09
IExlZnRCdXR0b24gJiYgZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3Nl
ZCkgeworICAgICAgICAgICAgbV9zZXR0aW5nc1tpXS52YWx1ZSA9ICFtX3NldHRpbmdzW2ldLnZh
bHVlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAoY3Vyc29yVG9TZXQpCisgICAgICAgIG1haW5GcmFtZVZpZXctPnNldEN1cnNvcigqY3Vyc29y
VG9TZXQpOworCisgICAgbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMgPSBldmVu
dEluQ29udGVudHNDb29yZGluYXRlczsKKyAgICBvdmVybGF5LnNldE5lZWRzRGlzcGxheSgpOwor
CisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFl
dmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNwcmFnbWEgbWFyayAtIFJlZ2lv
bk92ZXJsYXkKKwogUmVmPFJlZ2lvbk92ZXJsYXk+IFJlZ2lvbk92ZXJsYXk6OmNyZWF0ZShQYWdl
JiBwYWdlLCBEZWJ1Z1BhZ2VPdmVybGF5czo6UmVnaW9uVHlwZSByZWdpb25UeXBlKQogewogICAg
IHN3aXRjaCAocmVnaW9uVHlwZSkgewpAQCAtMjI2LDYgKzU0NSw4IEBAIFJlZjxSZWdpb25PdmVy
bGF5PiBSZWdpb25PdmVybGF5OjpjcmVhdGUoUGFnZSYgcGFnZSwgRGVidWdQYWdlT3ZlcmxheXM6
OlJlZ2lvblR5CiAgICAgICAgIHJldHVybiBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheTo6Y3JlYXRl
KHBhZ2UpOwogICAgIGNhc2UgRGVidWdQYWdlT3ZlcmxheXM6OlJlZ2lvblR5cGU6Ok5vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uOgogICAgICAgICByZXR1cm4gTm9uRmFzdFNjcm9sbGFibGVSZWdpb25P
dmVybGF5OjpjcmVhdGUocGFnZSk7CisgICAgY2FzZSBEZWJ1Z1BhZ2VPdmVybGF5czo6UmVnaW9u
VHlwZTo6SW50ZXJhY3Rpb25SZWdpb246CisgICAgICAgIHJldHVybiBJbnRlcmFjdGlvblJlZ2lv
bk92ZXJsYXk6OmNyZWF0ZShwYWdlKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIE1vdXNlV2hlZWxSZWdpb25PdmVybGF5OjpjcmVhdGUocGFnZSk7CkBAIC0y
OTYsNiArNjE3LDggQEAgdm9pZCBSZWdpb25PdmVybGF5OjpyZWNvbXB1dGVSZWdpb24oKQogICAg
IG1fcmVnaW9uQ2hhbmdlZCA9IGZhbHNlOwogfQogCisjcHJhZ21hIG1hcmsgLSBEZWJ1Z1BhZ2VP
dmVybGF5cworCiBEZWJ1Z1BhZ2VPdmVybGF5cyYgRGVidWdQYWdlT3ZlcmxheXM6OnNpbmdsZXRv
bigpCiB7CiAgICAgaWYgKCFzaGFyZWREZWJ1Z092ZXJsYXlzKQpAQCAtMzc5LDYgKzcwMiwxMSBA
QCB2b2lkIERlYnVnUGFnZU92ZXJsYXlzOjp1cGRhdGVPdmVybGF5UmVnaW9uVmlzaWJpbGl0eShQ
YWdlJiBwYWdlLCBPcHRpb25TZXQ8RGVidQogICAgICAgICBzaG93UmVnaW9uT3ZlcmxheShwYWdl
LCBSZWdpb25UeXBlOjpXaGVlbEV2ZW50SGFuZGxlcnMpOwogICAgIGVsc2UKICAgICAgICAgaGlk
ZVJlZ2lvbk92ZXJsYXkocGFnZSwgUmVnaW9uVHlwZTo6V2hlZWxFdmVudEhhbmRsZXJzKTsKKyAg
ICAKKyAgICBpZiAodmlzaWJsZVJlZ2lvbnMuY29udGFpbnMoRGVidWdPdmVybGF5UmVnaW9uczo6
SW50ZXJhY3Rpb25SZWdpb24pKQorICAgICAgICBzaG93UmVnaW9uT3ZlcmxheShwYWdlLCBSZWdp
b25UeXBlOjpJbnRlcmFjdGlvblJlZ2lvbik7CisgICAgZWxzZQorICAgICAgICBoaWRlUmVnaW9u
T3ZlcmxheShwYWdlLCBSZWdpb25UeXBlOjpJbnRlcmFjdGlvblJlZ2lvbik7CiB9CiAKIHZvaWQg
RGVidWdQYWdlT3ZlcmxheXM6OnNldHRpbmdzQ2hhbmdlZChQYWdlJiBwYWdlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5oCmluZGV4IDZkMmQ4NGVhMDYzZTliNzdlNGNjODcy
Njg4NTA4YWJkYzk0NmZlZDcuLjM2ZmVjMjE4Y2NlZDAzMzQyM2ZhMjg0Y2E4Yzg2NzAyYTIzOTYx
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmgKQEAgLTQzLDggKzQz
LDkgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgUmVnaW9uVHlwZSB7CiAgICAgICAgIFdoZWVs
RXZlbnRIYW5kbGVycywKICAgICAgICAgTm9uRmFzdFNjcm9sbGFibGVSZWdpb24sCisgICAgICAg
IEludGVyYWN0aW9uUmVnaW9uLAogICAgIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBOdW1iZXJPZlJlZ2lvblR5cGVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlZ2lvblR5cGU6
Ok5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKSArIDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBOdW1iZXJPZlJlZ2lvblR5cGVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlZ2lvblR5
cGU6OkludGVyYWN0aW9uUmVnaW9uKSArIDE7CiAKICAgICBzdGF0aWMgdm9pZCBkaWRMYXlvdXQo
RnJhbWUmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VFdmVudEhhbmRsZXJzKEZyYW1lJik7
CkBAIC05Myw2ICs5NCw3IEBAIGlubGluZSB2b2lkIERlYnVnUGFnZU92ZXJsYXlzOjpkaWRMYXlv
dXQoRnJhbWUmIGZyYW1lKQogCiAgICAgc2hhcmVkRGVidWdPdmVybGF5cy0+cmVnaW9uQ2hhbmdl
ZChmcmFtZSwgUmVnaW9uVHlwZTo6V2hlZWxFdmVudEhhbmRsZXJzKTsKICAgICBzaGFyZWREZWJ1
Z092ZXJsYXlzLT5yZWdpb25DaGFuZ2VkKGZyYW1lLCBSZWdpb25UeXBlOjpOb25GYXN0U2Nyb2xs
YWJsZVJlZ2lvbik7CisgICAgc2hhcmVkRGVidWdPdmVybGF5cy0+cmVnaW9uQ2hhbmdlZChmcmFt
ZSwgUmVnaW9uVHlwZTo6SW50ZXJhY3Rpb25SZWdpb24pOwogfQogCiBpbmxpbmUgdm9pZCBEZWJ1
Z1BhZ2VPdmVybGF5czo6ZGlkQ2hhbmdlRXZlbnRIYW5kbGVycyhGcmFtZSYgZnJhbWUpCkBAIC0x
MDEsNiArMTAzLDcgQEAgaW5saW5lIHZvaWQgRGVidWdQYWdlT3ZlcmxheXM6OmRpZENoYW5nZUV2
ZW50SGFuZGxlcnMoRnJhbWUmIGZyYW1lKQogCiAgICAgc2hhcmVkRGVidWdPdmVybGF5cy0+cmVn
aW9uQ2hhbmdlZChmcmFtZSwgUmVnaW9uVHlwZTo6V2hlZWxFdmVudEhhbmRsZXJzKTsKICAgICBz
aGFyZWREZWJ1Z092ZXJsYXlzLT5yZWdpb25DaGFuZ2VkKGZyYW1lLCBSZWdpb25UeXBlOjpOb25G
YXN0U2Nyb2xsYWJsZVJlZ2lvbik7CisgICAgc2hhcmVkRGVidWdPdmVybGF5cy0+cmVnaW9uQ2hh
bmdlZChmcmFtZSwgUmVnaW9uVHlwZTo6SW50ZXJhY3Rpb25SZWdpb24pOwogfQogCiBpbmxpbmUg
dm9pZCBEZWJ1Z1BhZ2VPdmVybGF5czo6ZG9BZnRlclVwZGF0ZVJlbmRlcmluZyhQYWdlJiBwYWdl
KQpAQCAtMTEwLDYgKzExMyw3IEBAIGlubGluZSB2b2lkIERlYnVnUGFnZU92ZXJsYXlzOjpkb0Fm
dGVyVXBkYXRlUmVuZGVyaW5nKFBhZ2UmIHBhZ2UpCiAKICAgICBzaGFyZWREZWJ1Z092ZXJsYXlz
LT51cGRhdGVSZWdpb25JZk5lY2Vzc2FyeShwYWdlLCBSZWdpb25UeXBlOjpXaGVlbEV2ZW50SGFu
ZGxlcnMpOwogICAgIHNoYXJlZERlYnVnT3ZlcmxheXMtPnVwZGF0ZVJlZ2lvbklmTmVjZXNzYXJ5
KHBhZ2UsIFJlZ2lvblR5cGU6Ok5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKTsKKyAgICBzaGFyZWRE
ZWJ1Z092ZXJsYXlzLT51cGRhdGVSZWdpb25JZk5lY2Vzc2FyeShwYWdlLCBSZWdpb25UeXBlOjpJ
bnRlcmFjdGlvblJlZ2lvbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKaW5kZXggODI3M2E2NGZjZGZiN2QzNGVh
YTc2Zjk4YmE3YTIxMTdlYWZiZmJlNi4uYjM1MjQxOTkwZjUyZGFlOWY5Zjg4NWNmMzU2OTFhYmNi
MmZmNDNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGlu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAg
LTMxLDExICszMSwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZyYW1lU25h
cHNob3R0aW5nLmgiCiAKKyNpbmNsdWRlICJDb2xvckJsZW5kaW5nLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVk
ZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNp
bmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTE1OCw0ICsxNjAs
NTAgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdE5vZGUoRnJhbWUmIGZyYW1lLCBOb2Rl
JiBub2RlLCBTbmFwc2hvdE9wdGlvbnMmJiBvcHQKICAgICByZXR1cm4gc25hcHNob3RGcmFtZVJl
Y3QoZnJhbWUsIHNuYXBwZWRJbnRSZWN0KG5vZGUucmVuZGVyZXIoKS0+cGFpbnRpbmdSb290UmVj
dCh0b3BMZXZlbFJlY3QpKSwgV1RGTW92ZShvcHRpb25zKSk7CiB9CiAKK3N0YXRpYyBib29sIHN0
eWxlQ29udGFpbnNDb21wbGV4QmFja2dyb3VuZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCit7
CisgICAgcmV0dXJuIHN0eWxlLmhhc0JsZW5kTW9kZSgpIHx8IHN0eWxlLmhhc0JhY2tncm91bmRJ
bWFnZSgpIHx8IHN0eWxlLmhhc0JhY2tkcm9wRmlsdGVyKCk7Cit9CisKK0NvbG9yIGVzdGltYXRl
ZEJhY2tncm91bmRDb2xvckZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgY29uc3Qg
RnJhbWUmIGZyYW1lKQoreworICAgIGF1dG8gZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yID0gZnJh
bWUudmlldygpID8gZnJhbWUudmlldygpLT5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpIDogQ29s
b3I6OnRyYW5zcGFyZW50QmxhY2s7CisKKyAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IG51
bGxwdHI7CisgICAgYXV0byBjb21tb25BbmNlc3RvciA9IGNvbW1vbkluY2x1c2l2ZUFuY2VzdG9y
PENvbXBvc2VkVHJlZT4ocmFuZ2UpOworICAgIHdoaWxlIChjb21tb25BbmNlc3RvcikgeworICAg
ICAgICBpZiAoaXM8UmVuZGVyRWxlbWVudD4oY29tbW9uQW5jZXN0b3ItPnJlbmRlcmVyKCkpKSB7
CisgICAgICAgICAgICByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGNvbW1vbkFu
Y2VzdG9yLT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNvbW1vbkFuY2VzdG9yID0gY29tbW9uQW5jZXN0b3ItPnBhcmVudE9yU2hhZG93SG9zdEVs
ZW1lbnQoKTsKKyAgICB9CisgICAgCisgICAgYXV0byBib3VuZGluZ1JlY3RGb3JSYW5nZSA9IGVu
Y2xvc2luZ0ludFJlY3QodW5pb25SZWN0SWdub3JpbmdaZXJvUmVjdHMoUmVuZGVyT2JqZWN0Ojph
YnNvbHV0ZUJvcmRlckFuZFRleHRSZWN0cyhyYW5nZSwgeworICAgICAgICBSZW5kZXJPYmplY3Q6
OkJvdW5kaW5nUmVjdEJlaGF2aW9yOjpSZXNwZWN0Q2xpcHBpbmcsCisgICAgICAgIFJlbmRlck9i
amVjdDo6Qm91bmRpbmdSZWN0QmVoYXZpb3I6OlVzZVZpc2libGVCb3VuZHMsCisgICAgICAgIFJl
bmRlck9iamVjdDo6Qm91bmRpbmdSZWN0QmVoYXZpb3I6Oklnbm9yZVRpbnlSZWN0cywKKyAgICB9
KSkpOworCisgICAgVmVjdG9yPENvbG9yPiBwYXJlbnRSZW5kZXJlckJhY2tncm91bmRDb2xvcnM7
CisgICAgZm9yICg7ICEhcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpKSB7
CisgICAgICAgIGF1dG8gYWJzb2x1dGVCb3VuZGluZ0JveCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdCgpOworICAgICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgp
OworICAgICAgICBpZiAoIWFic29sdXRlQm91bmRpbmdCb3guY29udGFpbnMoYm91bmRpbmdSZWN0
Rm9yUmFuZ2UpIHx8ICFzdHlsZS5oYXNCYWNrZ3JvdW5kKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBpZiAoc3R5bGVDb250YWluc0NvbXBsZXhCYWNrZ3JvdW5kKHN0eWxlKSkK
KyAgICAgICAgICAgIHJldHVybiBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3I7CisKKyAgICAgICAg
YXV0byB2aXNpdGVkRGVwZW5kZW50QmFja2dyb3VuZENvbG9yID0gc3R5bGUudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgaWYgKHZpc2l0
ZWREZXBlbmRlbnRCYWNrZ3JvdW5kQ29sb3IgIT0gQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spCisg
ICAgICAgICAgICBwYXJlbnRSZW5kZXJlckJhY2tncm91bmRDb2xvcnMuYXBwZW5kKHZpc2l0ZWRE
ZXBlbmRlbnRCYWNrZ3JvdW5kQ29sb3IpOworICAgIH0KKyAgICBwYXJlbnRSZW5kZXJlckJhY2tn
cm91bmRDb2xvcnMucmV2ZXJzZSgpOworICAgIGZvciAoY29uc3QgYXV0byYgYmFja2dyb3VuZENv
bG9yIDogcGFyZW50UmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3JzKQorICAgICAgICBlc3RpbWF0ZWRC
YWNrZ3JvdW5kQ29sb3IgPSBibGVuZFNvdXJjZU92ZXIoZXN0aW1hdGVkQmFja2dyb3VuZENvbG9y
LCBiYWNrZ3JvdW5kQ29sb3IpOworCisgICAgcmV0dXJuIGVzdGltYXRlZEJhY2tncm91bmRDb2xv
cjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5oCmluZGV4IDFiNzcwMjZmNTEwOTIwMDFjZGE4NmUzMjQ4MDg5MDM5NWIxNDVi
MmUuLmY0ZWRlMjJiNWRjMjU5NDgzYzhkNTEwZDdiMWJlMTFiM2I4NDFlY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgKQEAgLTYzLDQgKzYzLDYgQEAgUmVmUHRyPElt
YWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKEZyYW1lJiwgY29uc3QgSW50UmVj
dCYsIGNvbnN0IFZlY3QKIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiwg
Tm9kZSYsIFNuYXBzaG90T3B0aW9ucyYmKTsKIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gc25hcHNob3RTZWxlY3Rpb24oRnJhbWUmLCBTbmFwc2hvdE9wdGlvbnMmJik7CiAKK0Nv
bG9yIGVzdGltYXRlZEJhY2tncm91bmRDb2xvckZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwg
Y29uc3QgRnJhbWUmKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9JbnRlcmFjdGlvblJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ludGVyYWN0aW9uUmVnaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWYxNWEzZTZhZjgzMzY2ZWQz
OGU0ZjcwNzg1YTU0NzM4ZjExZDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9JbnRlcmFjdGlvblJlZ2lvbi5jcHAKQEAgLTAsMCArMSwxNzUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50ZXJhY3Rpb25SZWdpb24uaCIKKwor
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFt
ZVNuYXBzaG90dGluZy5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdlb21l
dHJ5VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgiCisjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgor
I2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYXRoVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbnRlcmFj
dGlvblJlZ2lvbjo6fkludGVyYWN0aW9uUmVnaW9uKCkgPSBkZWZhdWx0OworCitzdGF0aWMgRmxv
YXRSZWN0IGFic29sdXRlQm91bmRpbmdSZWN0Rm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJh
bmdlKQoreworICAgIHJldHVybiB1bmlvblJlY3RJZ25vcmluZ1plcm9SZWN0cyhSZW5kZXJPYmpl
Y3Q6OmFic29sdXRlQm9yZGVyQW5kVGV4dFJlY3RzKHJhbmdlLCB7CisgICAgICAgIFJlbmRlck9i
amVjdDo6Qm91bmRpbmdSZWN0QmVoYXZpb3I6OlJlc3BlY3RDbGlwcGluZywKKyAgICAgICAgUmVu
ZGVyT2JqZWN0OjpCb3VuZGluZ1JlY3RCZWhhdmlvcjo6VXNlVmlzaWJsZUJvdW5kcywKKyAgICAg
ICAgUmVuZGVyT2JqZWN0OjpCb3VuZGluZ1JlY3RCZWhhdmlvcjo6SWdub3JlVGlueVJlY3RzLAor
ICAgIH0pKTsKK30KKworc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdpb24+IHJl
Z2lvbkZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBhdXRvJiBmcmFtZVZpZXcg
PSAqZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCktPnZpZXcoKTsKKyAgICBhdXRvJiBtYWluRnJh
bWVWaWV3ID0gKmVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpLT5tYWluRnJhbWUoKS52aWV3KCk7
CisgICAgCisgICAgSW50UmVjdCBmcmFtZUNsaXBSZWN0OworI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgZnJhbWVDbGlwUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoZnJhbWVWaWV3LmV4cG9z
ZWRDb250ZW50UmVjdCgpKTsKKyNlbHNlCisgICAgaWYgKGF1dG8gdmlld0V4cG9zZWRSZWN0ID0g
ZnJhbWVWaWV3LnZpZXdFeHBvc2VkUmVjdCgpKQorICAgICAgICBmcmFtZUNsaXBSZWN0ID0gZW5j
bG9zaW5nSW50UmVjdCgqdmlld0V4cG9zZWRSZWN0KTsKKyAgICBlbHNlCisgICAgICAgIGZyYW1l
Q2xpcFJlY3QgPSBmcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0KCk7CisjZW5kaWYKKworICAg
IGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8RmxvYXRSZWN0PiBy
ZWN0c0luQ29udGVudHNDb29yZGluYXRlczsKKyAgICAKKyAgICBJbnRlcmFjdGlvblJlZ2lvbiBy
ZWdpb247CisKKyAgICBhdXRvIGxpbmtSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoZWxl
bWVudCk7CisgICAgCisgICAgaWYgKGxpbmtSYW5nZSkKKyAgICAgICAgcmVnaW9uLmhhc0xpZ2h0
QmFja2dyb3VuZCA9IGVzdGltYXRlZEJhY2tncm91bmRDb2xvckZvclJhbmdlKCpsaW5rUmFuZ2Us
ICplbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKSkubHVtaW5hbmNlKCkgPiAwLjU7CisgICAgCisg
ICAgaWYgKGxpbmtSYW5nZSAmJiByZW5kZXJlci0+aXNJbmxpbmUoKSAmJiAhcmVuZGVyZXItPmlz
UmVwbGFjZWRPcklubGluZUJsb2NrKCkpIHsKKyAgICAgICAgcmVnaW9uLmlzSW5saW5lID0gdHJ1
ZTsKKworICAgICAgICBPcHRpb25TZXQ8UmVuZGVyT2JqZWN0OjpCb3VuZGluZ1JlY3RCZWhhdmlv
cj4gYmVoYXZpb3IgeyBSZW5kZXJPYmplY3Q6OkJvdW5kaW5nUmVjdEJlaGF2aW9yOjpSZXNwZWN0
Q2xpcHBpbmcgfTsKKyAgICAgICAgcmVjdHNJbkNvbnRlbnRzQ29vcmRpbmF0ZXMgPSBSZW5kZXJP
YmplY3Q6OmFic29sdXRlVGV4dFJlY3RzKCpsaW5rUmFuZ2UsIGJlaGF2aW9yKS5tYXAoWyZdKGF1
dG8gcmVjdCkgLT4gRmxvYXRSZWN0IHsKKyAgICAgICAgICAgIHJldHVybiByZWN0OworICAgICAg
ICB9KTsKKworICAgICAgICBpZiAocmVjdHNJbkNvbnRlbnRzQ29vcmRpbmF0ZXMuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICBhdXRvIGJvdW5kaW5nUmVjdEZvclJhbmdlID0gYWJzb2x1dGVCb3Vu
ZGluZ1JlY3RGb3JSYW5nZSgqbGlua1JhbmdlKTsKKyAgICAgICAgICAgIGlmICghYm91bmRpbmdS
ZWN0Rm9yUmFuZ2UuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJlY3RzSW5Db250ZW50c0Nv
b3JkaW5hdGVzID0geyBib3VuZGluZ1JlY3RGb3JSYW5nZSB9OworICAgICAgICB9CisgICAgfQor
CisgICAgaWYgKHJlY3RzSW5Db250ZW50c0Nvb3JkaW5hdGVzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmVjdHNJbkNvbnRlbnRzQ29vcmRpbmF0ZXMgPSB7IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5n
Qm94UmVjdCgpIH07CisgICAgCisgICAgaWYgKGlzPFJlbmRlckJveD4oKnJlbmRlcmVyKSkgewor
ICAgICAgICBSb3VuZGVkUmVjdDo6UmFkaWkgYm9yZGVyUmFkaWkgPSBkb3duY2FzdDxSZW5kZXJC
b3g+KCpyZW5kZXJlcikuYm9yZGVyUmFkaWkoKTsKKyAgICAgICAgcmVnaW9uLmJvcmRlclJhZGl1
cyA9IGJvcmRlclJhZGlpLm1pbmltdW1SYWRpdXMoKTsKKyAgICB9CisKKyAgICByZWdpb24ucmVj
dHNJbkNvbnRlbnRDb29yZGluYXRlcyA9IHJlY3RzSW5Db250ZW50c0Nvb3JkaW5hdGVzLm1hcChb
Jl0oYXV0byByZWN0KSB7CisgICAgICAgIGF1dG8gY29udGVudHNSZWN0ID0gcmVjdDsKKworICAg
ICAgICBpZiAoJmZyYW1lVmlldyAhPSAmbWFpbkZyYW1lVmlldykKKyAgICAgICAgICAgIGNvbnRl
bnRzUmVjdC5pbnRlcnNlY3QoZnJhbWVDbGlwUmVjdCk7CisKKyAgICAgICAgcmV0dXJuIGNvbnRl
bnRzUmVjdDsKKyAgICB9KTsKKyAgICAgICAgCisgICAgcmV0dXJuIFdURk1vdmUocmVnaW9uKTsK
K30KKworc3RhdGljIEN1cnNvclR5cGUgY3Vyc29yVHlwZUZvckVsZW1lbnQoRWxlbWVudCYgZWxl
bWVudCkKK3sKKyAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKKyAgICBh
dXRvKiBzdHlsZSA9IHJlbmRlcmVyID8gJnJlbmRlcmVyLT5zdHlsZSgpIDogbnVsbHB0cjsKKyAg
ICBhdXRvIGN1cnNvclR5cGUgPSBzdHlsZSA/IHN0eWxlLT5jdXJzb3IoKSA6IEN1cnNvclR5cGU6
OkF1dG87CisKKyAgICBpZiAoY3Vyc29yVHlwZSA9PSBDdXJzb3JUeXBlOjpBdXRvICYmIGVsZW1l
bnQuZW5jbG9zaW5nTGlua0V2ZW50UGFyZW50T3JTZWxmKCkgJiYgZWxlbWVudC5pc0xpbmsoKSkK
KyAgICAgICAgY3Vyc29yVHlwZSA9IEN1cnNvclR5cGU6OlBvaW50ZXI7CisKKyAgICByZXR1cm4g
Y3Vyc29yVHlwZTsKK30KKworVmVjdG9yPEludGVyYWN0aW9uUmVnaW9uPiBpbnRlcmFjdGlvblJl
Z2lvbnMoUGFnZSYgcGFnZSwgRmxvYXRSZWN0IHJlY3QpCit7CisgICAgUmVmIGZyYW1lKHBhZ2Uu
bWFpbkZyYW1lKCkpOworICAgIFJlZlB0ciBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpOworICAg
IAorICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgZnJhbWVW
aWV3LT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CisgICAgCisgICAg
UmVmUHRyIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7
IExheW91dFJlY3QocmVjdCkgfTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KHsKKyAgICAg
ICAgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LAorICAgICAgICBIaXRUZXN0UmVxdWVz
dDo6VHlwZTo6QWN0aXZlLAorICAgICAgICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWxsb3dWaXNp
YmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5LAorICAgICAgICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6
Q29sbGVjdE11bHRpcGxlRWxlbWVudHMKKyAgICB9KTsKKyAgICBkb2N1bWVudC0+aGl0VGVzdChy
ZXF1ZXN0LCByZXN1bHQpOworCisgICAgVmVjdG9yPEludGVyYWN0aW9uUmVnaW9uPiByZWdpb25z
OworCisgICAgZm9yIChjb25zdCBhdXRvJiBub2RlIDogcmVzdWx0Lmxpc3RCYXNlZFRlc3RSZXN1
bHQoKSkgeworICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUuZ2V0KCkpKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pihu
b2RlLmdldCgpKTsKKworICAgICAgICBpZiAoIWVsZW1lbnQud2lsbFJlc3BvbmRUb01vdXNlQ2xp
Y2tFdmVudHMoKSAmJiAhZWxlbWVudC53aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMoKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChjdXJzb3JUeXBlRm9yRWxlbWVudChlbGVt
ZW50KSAhPSBDdXJzb3JUeXBlOjpQb2ludGVyICYmICFpczxIVE1MRm9ybUNvbnRyb2xFbGVtZW50
PihlbGVtZW50KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gcmVnaW9u
ID0gcmVnaW9uRm9yRWxlbWVudChlbGVtZW50KTsKKyAgICAgICAgaWYgKHJlZ2lvbikKKyAgICAg
ICAgICAgIHJlZ2lvbnMuYXBwZW5kKCpyZWdpb24pOworICAgIH0KKworICAgIHJldHVybiByZWdp
b25zOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyYWN0aW9u
UmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyYWN0aW9uUmVnaW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTZmOTA2MjJhNDJiYTU3NTAzYzhhMTA4NWE0NTczMmQyY2IxN2ZhMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJhY3Rpb25SZWdpb24uaApAQCAtMCww
ICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5jb2RlcjsK
K30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYWdlOworCitzdHJ1Y3QgSW50ZXJh
Y3Rpb25SZWdpb24geworICAgIFZlY3RvcjxGbG9hdFJlY3Q+IHJlY3RzSW5Db250ZW50Q29vcmRp
bmF0ZXM7CisgICAgYm9vbCBpc0lubGluZSB7IGZhbHNlIH07CisgICAgYm9vbCBoYXNMaWdodEJh
Y2tncm91bmQgeyBmYWxzZSB9OworICAgIGZsb2F0IGJvcmRlclJhZGl1cyB7IDAgfTsKKyAgICAK
KyAgICBXRUJDT1JFX0VYUE9SVCB+SW50ZXJhY3Rpb25SZWdpb24oKTsKKyAgICAKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdp
b24+IGRlY29kZShEZWNvZGVyJik7Cit9OworCitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8SW50ZXJh
Y3Rpb25SZWdpb24+IGludGVyYWN0aW9uUmVnaW9ucyhQYWdlJiwgRmxvYXRSZWN0IHJlY3RJbkNv
bnRlbnRDb29yZGluYXRlcyk7CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEludGVy
YWN0aW9uUmVnaW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNv
ZGVyIDw8IHJlY3RzSW5Db250ZW50Q29vcmRpbmF0ZXM7CisgICAgZW5jb2RlciA8PCBpc0lubGlu
ZTsKKyAgICBlbmNvZGVyIDw8IGhhc0xpZ2h0QmFja2dyb3VuZDsKKyAgICBlbmNvZGVyIDw8IGJv
cmRlclJhZGl1czsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8
SW50ZXJhY3Rpb25SZWdpb24+IEludGVyYWN0aW9uUmVnaW9uOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGbG9hdFJlY3Q+PiByZWN0c0luQ29u
dGVudENvb3JkaW5hdGVzOworICAgIGRlY29kZXIgPj4gcmVjdHNJbkNvbnRlbnRDb29yZGluYXRl
czsKKyAgICBpZiAoIXJlY3RzSW5Db250ZW50Q29vcmRpbmF0ZXMpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc0lubGluZTsKKyAg
ICBkZWNvZGVyID4+IGlzSW5saW5lOworICAgIGlmICghaXNJbmxpbmUpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNMaWdodEJh
Y2tncm91bmQ7CisgICAgZGVjb2RlciA+PiBoYXNMaWdodEJhY2tncm91bmQ7CisgICAgaWYgKCFo
YXNMaWdodEJhY2tncm91bmQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisg
ICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gYm9yZGVyUmFkaXVzOworICAgIGRlY29kZXIgPj4gYm9y
ZGVyUmFkaXVzOworICAgIGlmICghYm9yZGVyUmFkaXVzKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgcmV0dXJuIHsgeworICAgICAgICBXVEZNb3ZlKCpyZWN0c0luQ29udGVu
dENvb3JkaW5hdGVzKSwKKyAgICAgICAgV1RGTW92ZSgqaXNJbmxpbmUpLAorICAgICAgICBXVEZN
b3ZlKCpoYXNMaWdodEJhY2tncm91bmQpLAorICAgICAgICBXVEZNb3ZlKCpib3JkZXJSYWRpdXMp
CisgICAgfSB9OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJ
bmRpY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAppbmRl
eCBjYTVmYmU2M2NjZjZjZGI5OGFmODVlZDU5MjlhMTMwMzhkNjliZmM3Li40MGQwMjA1MzhjMzky
YTQ1Mzk1NWE5MmU0YzYxZGFkMDM4MzA5ZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1RleHRJbmRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGlj
YXRvci5jcHAKQEAgLTE3NSwxMSArMTc1LDYgQEAgc3RhdGljIGJvb2wgdGFrZVNuYXBzaG90cyhU
ZXh0SW5kaWNhdG9yRGF0YSYgZGF0YSwgRnJhbWUmIGZyYW1lLCBJbnRSZWN0IHNuYXBzaG8KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgc3R5bGVDb250YWluc0NvbXBsZXhCYWNr
Z3JvdW5kKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKLXsKLSAgICByZXR1cm4gc3R5bGUuaGFz
QmxlbmRNb2RlKCkgfHwgc3R5bGUuaGFzQmFja2dyb3VuZEltYWdlKCkgfHwgc3R5bGUuaGFzQmFj
a2Ryb3BGaWx0ZXIoKTsKLX0KLQogc3RhdGljIEhhc2hTZXQ8Q29sb3I+IGVzdGltYXRlZFRleHRD
b2xvcnNGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCiB7CiAgICAgSGFzaFNldDxD
b2xvcj4gY29sb3JzOwpAQCAtMjAzLDQyICsxOTgsNiBAQCBzdGF0aWMgRmxvYXRSZWN0IGFic29s
dXRlQm91bmRpbmdSZWN0Rm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogICAgIH0p
KTsKIH0KIAotc3RhdGljIENvbG9yIGVzdGltYXRlZEJhY2tncm91bmRDb2xvckZvclJhbmdlKGNv
bnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgY29uc3QgRnJhbWUmIGZyYW1lKQotewotICAgIGF1dG8g
ZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yID0gZnJhbWUudmlldygpID8gZnJhbWUudmlldygpLT5k
b2N1bWVudEJhY2tncm91bmRDb2xvcigpIDogQ29sb3I6OnRyYW5zcGFyZW50QmxhY2s7Ci0KLSAg
ICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IG51bGxwdHI7Ci0gICAgYXV0byBjb21tb25BbmNl
c3RvciA9IGNvbW1vbkluY2x1c2l2ZUFuY2VzdG9yPENvbXBvc2VkVHJlZT4ocmFuZ2UpOwotICAg
IHdoaWxlIChjb21tb25BbmNlc3RvcikgewotICAgICAgICBpZiAoaXM8UmVuZGVyRWxlbWVudD4o
Y29tbW9uQW5jZXN0b3ItPnJlbmRlcmVyKCkpKSB7Ci0gICAgICAgICAgICByZW5kZXJlciA9IGRv
d25jYXN0PFJlbmRlckVsZW1lbnQ+KGNvbW1vbkFuY2VzdG9yLT5yZW5kZXJlcigpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNvbW1vbkFuY2VzdG9yID0gY29tbW9u
QW5jZXN0b3ItPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKTsKLSAgICB9Ci0KLSAgICBhdXRv
IGJvdW5kaW5nUmVjdEZvclJhbmdlID0gZW5jbG9zaW5nSW50UmVjdChhYnNvbHV0ZUJvdW5kaW5n
UmVjdEZvclJhbmdlKHJhbmdlKSk7Ci0gICAgVmVjdG9yPENvbG9yPiBwYXJlbnRSZW5kZXJlckJh
Y2tncm91bmRDb2xvcnM7Ci0gICAgZm9yICg7ICEhcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVy
ZXItPnBhcmVudCgpKSB7Ci0gICAgICAgIGF1dG8gYWJzb2x1dGVCb3VuZGluZ0JveCA9IHJlbmRl
cmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwotICAgICAgICBhdXRvJiBzdHlsZSA9IHJl
bmRlcmVyLT5zdHlsZSgpOwotICAgICAgICBpZiAoIWFic29sdXRlQm91bmRpbmdCb3guY29udGFp
bnMoYm91bmRpbmdSZWN0Rm9yUmFuZ2UpIHx8ICFzdHlsZS5oYXNCYWNrZ3JvdW5kKCkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoc3R5bGVDb250YWluc0NvbXBsZXhCYWNr
Z3JvdW5kKHN0eWxlKSkKLSAgICAgICAgICAgIHJldHVybiBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29s
b3I7Ci0KLSAgICAgICAgYXV0byB2aXNpdGVkRGVwZW5kZW50QmFja2dyb3VuZENvbG9yID0gc3R5
bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLSAg
ICAgICAgaWYgKHZpc2l0ZWREZXBlbmRlbnRCYWNrZ3JvdW5kQ29sb3IgIT0gQ29sb3I6OnRyYW5z
cGFyZW50QmxhY2spCi0gICAgICAgICAgICBwYXJlbnRSZW5kZXJlckJhY2tncm91bmRDb2xvcnMu
YXBwZW5kKHZpc2l0ZWREZXBlbmRlbnRCYWNrZ3JvdW5kQ29sb3IpOwotICAgIH0KLSAgICBwYXJl
bnRSZW5kZXJlckJhY2tncm91bmRDb2xvcnMucmV2ZXJzZSgpOwotICAgIGZvciAoY29uc3QgYXV0
byYgYmFja2dyb3VuZENvbG9yIDogcGFyZW50UmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3JzKQotICAg
ICAgICBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IgPSBibGVuZFNvdXJjZU92ZXIoZXN0aW1hdGVk
QmFja2dyb3VuZENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IpOwotCi0gICAgcmV0dXJuIGVzdGltYXRl
ZEJhY2tncm91bmRDb2xvcjsKLX0KLQogc3RhdGljIGJvb2wgaGFzQW55SWxsZWdpYmxlQ29sb3Jz
KFRleHRJbmRpY2F0b3JEYXRhJiBkYXRhLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yLCBI
YXNoU2V0PENvbG9yPiYmIHRleHRDb2xvcnMpCiB7CiAgICAgaWYgKGRhdGEub3B0aW9ucy5jb250
YWlucyhUZXh0SW5kaWNhdG9yT3B0aW9uOjpQYWludEFsbENvbnRlbnQpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oCmluZGV4IDRhNmQ3Nzg1MzBhZjRj
YjZiMDQ0ZmI3NzdlM2U2ZmE4ZTk3YzNhZWIuLjZiMDMyMjUyMzYyN2JlMzk5MjRkOTZjM2JkMmE2
YWRkYWY0MzMyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0xheW91dFNpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlv
dXRTaXplLmgKQEAgLTU4LDYgKzU4LDkgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgd2lkdGgo
KSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CiAgICAgTGF5b3V0VW5pdCBoZWlnaHQoKSBjb25z
dCB7IHJldHVybiBtX2hlaWdodDsgfQogCisgICAgTGF5b3V0VW5pdCBtaW5EaW1lbnNpb24oKSBj
b25zdCB7IHJldHVybiBzdGQ6Om1pbihtX3dpZHRoLCBtX2hlaWdodCk7IH0KKyAgICBMYXlvdXRV
bml0IG1heERpbWVuc2lvbigpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWF4KG1fd2lkdGgsIG1faGVp
Z2h0KTsgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZXRXaWR0aChUIHdpZHRo
KSB7IG1fd2lkdGggPSB3aWR0aDsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2V0
SGVpZ2h0KFQgaGVpZ2h0KSB7IG1faGVpZ2h0ID0gaGVpZ2h0OyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCmluZGV4IDExN2JlZWY3YTMzYzJm
ZWIwMTg3NTIzMDY1ZGZlNTkyNDM0ZTA1OTAuLjExMTJiODQ0ZGZiMTU2NTg1NTE4NzA4ZGZjNjUy
YzgwOWFmNzEzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JvdW5kZWRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91
bmRlZFJlY3QuaApAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAKICAgICAgICAgUmFkaWkgdHJh
bnNwb3NlZFJhZGlpKCkgY29uc3QgeyByZXR1cm4gUmFkaWkobV90b3BMZWZ0LnRyYW5zcG9zZWRT
aXplKCksIG1fdG9wUmlnaHQudHJhbnNwb3NlZFNpemUoKSwgbV9ib3R0b21MZWZ0LnRyYW5zcG9z
ZWRTaXplKCksIG1fYm90dG9tUmlnaHQudHJhbnNwb3NlZFNpemUoKSk7IH0KIAorICAgICAgICBM
YXlvdXRVbml0IG1pbmltdW1SYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om1pbih7IG1fdG9w
TGVmdC5taW5EaW1lbnNpb24oKSwgbV90b3BSaWdodC5taW5EaW1lbnNpb24oKSwgbV9ib3R0b21M
ZWZ0Lm1pbkRpbWVuc2lvbigpLCBtX2JvdHRvbVJpZ2h0Lm1pbkRpbWVuc2lvbigpIH0pOyB9CisK
ICAgICBwcml2YXRlOgogICAgICAgICBMYXlvdXRTaXplIG1fdG9wTGVmdDsKICAgICAgICAgTGF5
b3V0U2l6ZSBtX3RvcFJpZ2h0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKaW5kZXgg
YTNmYmI3NjBlNzc2MDQwNzhkOGU1MGMxNGNkZDdkN2NlYTZlYjZkMy4uZWI5ZWI1NGE4MjI3Y2Ex
ZDg4MDM3OTA0ZjBiNjk0OWQ1Mjc1MThmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIu
Y3BwCkBAIC0zNiw5ICszNiwxMSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTYW1wbGUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVm
ZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9WaWRlb1RyYWNrUHJpdmF0ZS5oPgogI2luY2x1ZGUgPHBhbC9hdmZvdW5k
YXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRp
YVNvZnRMaW5rLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2
YXRlLmgKaW5kZXggN2E3OGUyYWVlYTc1ZmVhY2UzMjc2ZmI0NDgyZWYzZGY4MjIwNTEwYS4uYzk2
YzkyNmU5YjY0MzBiYWZiZjNlNDM3MjYwZTYwNTBlYmY5YjNiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgK
QEAgLTM3LDYgKzM3LDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS0RlYnVn
T3ZlcmxheVJlZ2lvbnMpIHsKICAgICBfV0tXaGVlbEV2ZW50SGFuZGxlclJlZ2lvbiA9IDEgPDwg
MSwKICAgICBfV0tUb3VjaEFjdGlvblJlZ2lvbiA9IDEgPDwgMiwKICAgICBfV0tFZGl0YWJsZUVs
ZW1lbnRSZWdpb24gPSAxIDw8IDMsCisgICAgX1dLSW50ZXJhY3Rpb25SZWdpb24gPSAxIDw8IDQs
CiB9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4wKSk7CiAKIHR5cGVkZWYg
TlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tKYXZhU2NyaXB0UnVudGltZUZsYWdzKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmZDBiZmIyYTUxMmQ4MDU4
Mzk5NTFlN2Q4ZDU2ZjJkNjY5YjdiZWUzLi43MjE0YzkzNTY3MmMzOTMyNjU4OWY4ZjliOWYwMWUw
N2QzOThmZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTExMTgxLDkgKzExMTgxLDkgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnNob3VsZEVuYWJsZUNhcHRp
dmVQb3J0YWxNb2RlKCkgY29uc3QKICAgICByZXR1cm4gbV9jb25maWd1cmF0aW9uLT5jYXB0aXZl
UG9ydGFsTW9kZUVuYWJsZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmludGVyYWN0YWJs
ZVJlZ2lvbnNJblJvb3RWaWV3Q29vcmRpbmF0ZXMoRmxvYXRSZWN0IHJlY3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPEZsb2F0UmVjdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBXZWJQYWdlUHJveHk6OmludGVyYWN0aW9uUmVnaW9ucyhGbG9hdFJlY3QgcmVjdEluQ29udGVu
dENvb3JkaW5hdGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxJbnRlcmFjdGlvblJl
Z2lvbj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJhY3RhYmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRl
cyhyZWN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJhY3Rpb25SZWdpb25zKHJlY3RJbkNvbnRlbnRD
b29yZGluYXRlcyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogI2lmIFBMQVRG
T1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwOTRi
NDU1NjQxYWRmNGQ0ZjI0ZTRlN2I0YTRjNGJlYTcwZGMxYWFmLi5kNGU0ODRmZGIzYTA0MjdlNmM4
YjA2MzdhMzQ0ODc3Y2NlMDllNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMjk5LDYgKzI5OSw3IEBAIHN0cnVjdCBFbGVtZW50Q29udGV4dDsKIHN0cnVjdCBF
eGNlcHRpb25EZXRhaWxzOwogc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3M7CiBzdHJ1Y3QgR2xv
YmFsV2luZG93SWRlbnRpZmllcjsKK3N0cnVjdCBJbnRlcmFjdGlvblJlZ2lvbjsKIHN0cnVjdCBM
aW5rSWNvbjsKIHN0cnVjdCBNZWRpYVN0cmVhbVJlcXVlc3Q7CiBzdHJ1Y3QgTWVkaWFVc2FnZUlu
Zm87CkBAIC0yMDc1LDcgKzIwNzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGFzc2lmeU1vZGFs
Q29udGFpbmVyQ29udHJvbHMoVmVjdG9yPFN0cmluZz4mJiB0ZXh0cywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6TW9kYWxDb250YWluZXJDb250cm9sVHlwZT4mJik+JiYp
OwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTW9kYWxDb250YWluZXIoT3B0aW9uU2V0PFdlYkNv
cmU6Ok1vZGFsQ29udGFpbmVyQ29udHJvbFR5cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6Ok1vZGFsQ29udGFpbmVyRGVjaXNpb24pPiYmKTsKIAotICAgIHZvaWQgaW50ZXJhY3Rh
YmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRlcyhXZWJDb3JlOjpGbG9hdFJlY3QsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4pPiYmKTsKKyAgICB2
b2lkIGludGVyYWN0aW9uUmVnaW9ucyhXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdEluQ29udGVudENv
b3JkaW5hdGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpJbnRlcmFj
dGlvblJlZ2lvbj4pPiYmKTsKIAogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVu
dCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCmluZGV4IGUzOWYzNTY2OWUwOTMyODk5Y2Q4MjU0M2RjMTdmMzkwNGI4ZDgzZmYu
LmJlNjVlMGQxMDM1YzMzMWU5NjY1MmRmNTI3MGZkNGI2OGNmODEwMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQpAQCAtOTk0NSwxMCArOTk0NSwxMCBAQCAtICh2b2lkKXBvc2l0aW9uSW5mb3JtYXRpb25Gb3JI
b3ZlclBsYXR0ZXI6KFdLSG92ZXJQbGF0dGVyICopaG92ZXJQbGF0dGVyIHdpdGhSZQogICAgIFtz
ZWxmIGRvQWZ0ZXJQb3NpdGlvbkluZm9ybWF0aW9uVXBkYXRlOmNvbXBsZXRpb25IYW5kbGVyIGZv
clJlcXVlc3Q6cmVxdWVzdF07CiB9CiAKLS0gKHZvaWQpaW50ZXJhY3RhYmxlUmVnaW9uc0Zvckhv
dmVyUGxhdHRlcjooV0tIb3ZlclBsYXR0ZXIgKilwbGF0dGVyIGluUmVjdDooV2ViQ29yZTo6Rmxv
YXRSZWN0KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFZlY3RvcjxXZWJDb3JlOjpG
bG9hdFJlY3Q+KSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClpbnRlcmFjdGlvblJlZ2lvbnNG
b3JIb3ZlclBsYXR0ZXI6KFdLSG92ZXJQbGF0dGVyICopcGxhdHRlciBpblJlY3Q6KFdlYkNvcmU6
OkZsb2F0UmVjdClyZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKFZlY3RvcjxXZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbj4pKWNvbXBsZXRpb25IYW5k
bGVyCiB7Ci0gICAgX3BhZ2UtPmludGVyYWN0YWJsZVJlZ2lvbnNJblJvb3RWaWV3Q29vcmRpbmF0
ZXMocmVjdCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3RzKSB7Ci0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJlY3RzKTsKKyAgICBfcGFnZS0+aW50ZXJhY3Rpb25SZWdpb25zKHJlY3RJ
bkNvbnRlbnRDb29yZGluYXRlcywgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNv
bXBsZXRpb25IYW5kbGVyKV0gKFZlY3RvcjxXZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbj4gcmVn
aW9ucykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZWdpb25zKTsKICAgICB9KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIuaAppbmRleCBj
ZGJiZDgwMDZjNzUwMDUwYjUxZjE2ZjMyOTRiODUyMDljMjdjMjUyLi43Y2Y0MjMxMDFjYjA0NDBj
YWJmMjVmMWFkMGFhZDMwYzE4NTMwMWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tIb3ZlclBsYXR0ZXIuaApAQCAtMjksNiArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBGbG9hdFJlY3Q7CitzdHJ1Y3QgSW50ZXJhY3Rpb25SZWdpb247CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtNDQsNyArNDUsNyBAQCBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvblJlcXVlc3Q7CiBAcmVxdWlyZWQKIC0gKHZvaWQpcG9zaXRpb25JbmZvcm1hdGlvbkZv
ckhvdmVyUGxhdHRlcjooV0tIb3ZlclBsYXR0ZXIgKilob3ZlclBsYXR0ZXIgd2l0aFJlcXVlc3Q6
KFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmKXJlcXVlc3QgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b24pKWNvbXBsZXRpb25IYW5kbGVyOwogCi0tICh2b2lkKWludGVyYWN0YWJsZVJlZ2lvbnNGb3JI
b3ZlclBsYXR0ZXI6KFdLSG92ZXJQbGF0dGVyICopaG92ZXJQbGF0dGVyIGluUmVjdDooV2ViQ29y
ZTo6RmxvYXRSZWN0KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFZlY3RvcjxXZWJD
b3JlOjpGbG9hdFJlY3Q+KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpaW50ZXJhY3Rpb25S
ZWdpb25zRm9ySG92ZXJQbGF0dGVyOihXS0hvdmVyUGxhdHRlciAqKWhvdmVyUGxhdHRlciBpblJl
Y3Q6KFdlYkNvcmU6OkZsb2F0UmVjdClyZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKFZlY3RvcjxXZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbj4pKWNv
bXBsZXRpb25IYW5kbGVyOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0hvdmVyUGxhdHRlci5tbQppbmRleCA0MDQyNjA1MTYyYjc5MTNiODk1YTUxMzgzNWEzMTIx
OWYwZTE3ZTgxLi5hNzk5NWM0Y2E4YjJlNTc0ZGVmZDYzODFiYzgxNjIyOTZhYjg4MTMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyLm1tCkBAIC0zMCw2
ICszMCw3IEBACiAKICNpbXBvcnQgIldLSG92ZXJQbGF0dGVyUGFyYW1ldGVycy5oIgogI2ltcG9y
dCA8VUlLaXQvVUlLaXQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSW50ZXJhY3Rpb25SZWdpb24uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUGF0aFV0aWxpdGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJD
b3JlQ0FMYXllckV4dHJhcy5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJ
Lmg+CkBAIC0yNDcsMTUgKzI0OCwxNyBAQCAtICh2b2lkKXVwZGF0ZURlYnVnSW5kaWNhdG9yCiAg
ICAgW2xpbmtIaWdobGlnaHRMYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwogICAgIFtbX3Zp
ZXcgbGF5ZXJdIGFkZFN1YmxheWVyOmxpbmtIaWdobGlnaHRMYXllci5nZXQoKV07CiAKLSAgICBb
X2RlbGVnYXRlIGludGVyYWN0YWJsZVJlZ2lvbnNGb3JIb3ZlclBsYXR0ZXI6c2VsZiBpblJlY3Q6
c2VhcmNoQm91bmRpbmdSZWN0IGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbc2VsZiwg
c3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+
IHJlY3RzKSB7CisgICAgW19kZWxlZ2F0ZSBpbnRlcmFjdGlvblJlZ2lvbnNGb3JIb3ZlclBsYXR0
ZXI6c2VsZiBpblJlY3Q6c2VhcmNoQm91bmRpbmdSZWN0IGNvbXBsZXRpb25IYW5kbGVyOm1ha2VC
bG9ja1B0cihbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKFZlY3RvcjxXZWJD
b3JlOjpJbnRlcmFjdGlvblJlZ2lvbj4gcmVnaW9ucykgewogICAgICAgICBpZiAoIV9saW5rQ291
bnRMYXllciAmJiAhX2xpbmtIaWdobGlnaHRMYXllcikKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBbX2xpbmtDb3VudExheWVyIHNldFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIiV6dSIsIHJlY3RzLnNpemUoKV1dOworICAgICAgICBbX2xpbmtDb3VudExheWVyIHNl
dFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiV6dSIsIHJlZ2lvbnMuc2l6ZSgp
XV07CiAKICAgICAgICAgV2ViQ29yZTo6UGF0aCBwYXRoOwotICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIHJlY3QgOiByZWN0cykKLSAgICAgICAgICAgIHBhdGguYWRkUmVjdChyZWN0KTsKKyAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiByZWdpb24gOiByZWdpb25zKSB7CisgICAgICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHJlY3QgOiByZWdpb24ucmVjdHNJbkNvbnRlbnRDb29yZGluYXRlcykKKyAg
ICAgICAgICAgICAgICBwYXRoLmFkZFJlY3QocmVjdCk7CisgICAgICAgIH0KICAgICAgICAgW19s
aW5rSGlnaGxpZ2h0TGF5ZXIgc2V0UGF0aDpwYXRoLnBsYXRmb3JtUGF0aCgpXTsKICAgICB9KS5n
ZXQoKV07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggYjhhNTZhYjExNjJkNmVkODkxZGM5NGYzMzE3OWI0MzFhMThlMGViMC4uYWI0OTk0YzA1
YzdmYjkyZDVkNDgwMTQwNmQwMmNhNzgzZWNjMTIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTYyOTUsNDEgKzYyOTUsOSBAQCB2b2lkIFdl
YlBhZ2U6OmNhbmNlbGVkQ29tcG9zaXRpb24oKQogICAgIHNlbmRFZGl0b3JTdGF0ZVVwZGF0ZSgp
OwogfQogCi12b2lkIFdlYlBhZ2U6OmludGVyYWN0YWJsZVJlZ2lvbnNJblJvb3RWaWV3Q29vcmRp
bmF0ZXMoRmxvYXRSZWN0IHJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPEZsb2F0
UmVjdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjppbnRlcmFjdGlvblJl
Z2lvbnMoRmxvYXRSZWN0IHJlY3RJbkNvbnRlbnRDb29yZGluYXRlcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8SW50ZXJhY3Rpb25SZWdpb24+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBSZWYgZnJhbWUobV9wYWdlLT5tYWluRnJhbWUoKSk7Ci0KLSAgICBpZiAoUmVmUHRy
IGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCkpCi0gICAgICAgIGZyYW1lVmlldy0+dXBkYXRlTGF5
b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwotCi0gICAgYXV0byByZXN1bHQgPSBIaXRU
ZXN0UmVzdWx0IHsgTGF5b3V0UmVjdChyZWN0KSB9OwotICAgIFJlZlB0ciBkb2N1bWVudCA9IGZy
YW1lLT5kb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQpIHsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEhpdFRlc3RSZXF1
ZXN0IHJlcXVlc3QoewotICAgICAgICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksCi0g
ICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVu
dE9ubHksCi0gICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpDb2xsZWN0TXVsdGlwbGVFbGVt
ZW50cwotICAgIH0pOwotICAgIGRvY3VtZW50LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7Ci0K
LSAgICBWZWN0b3I8RmxvYXRSZWN0PiByZWN0czsKLQotICAgIGZvciAoY29uc3QgYXV0byYgbm9k
ZSA6IHJlc3VsdC5saXN0QmFzZWRUZXN0UmVzdWx0KCkpIHsKLSAgICAgICAgaWYgKCFpczxFbGVt
ZW50Pihub2RlLmdldCgpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvJiBl
bGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4obm9kZS5nZXQoKSk7Ci0KLSAgICAgICAgaWYgKCFu
b2RlLT53aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0KLSAgICAgICAgcmVjdHMuYXBwZW5kKGVsZW1lbnQuYm91bmRpbmdCb3hJblJvb3RWaWV3
Q29vcmRpbmF0ZXMoKSk7Ci0gICAgfQotCi0gICAgY29tcGxldGlvbkhhbmRsZXIocmVjdHMpOwor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OmludGVyYWN0aW9uUmVnaW9ucygqbV9wYWdl
LCByZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzZXRBbHdh
eXNTaG93c0hvcml6b250YWxTY3JvbGxlcihib29sIGFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9s
bGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDZh
ZWYyMGRlZjMwYzA2OTI2MTZlYzgwNTI2NDBhNDIzODE3ZDRkMzMuLjBmZWI3YWQ2YjFhNWNkNTc5
N2MzYjlhMzc5NDgyOWNlYTdiNjEyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTI1Miw2ICsyNTIsNyBAQCBzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJu
YXRpdmU7CiBzdHJ1Y3QgRWxlbWVudENvbnRleHQ7CiBzdHJ1Y3QgR2xvYmFsRnJhbWVJZGVudGlm
aWVyOwogc3RydWN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXI7CitzdHJ1Y3QgSW50ZXJhY3Rpb25S
ZWdpb247CiBzdHJ1Y3QgS2V5cHJlc3NDb21tYW5kOwogc3RydWN0IE1lZGlhVXNhZ2VJbmZvOwog
c3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm87CkBAIC05NDMsNyArOTQ0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkVXBkYXRlQ29tcG9zaXRpb24oKTsKICAgICB2b2lkIGRpZEVuZFVzZXJU
cmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCk7CiAKLSAgICB2b2lkIGludGVyYWN0YWJsZVJlZ2lv
bnNJblJvb3RWaWV3Q29vcmRpbmF0ZXMoV2ViQ29yZTo6RmxvYXRSZWN0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+KT4mJik7CisgICAgdm9pZCBpbnRl
cmFjdGlvblJlZ2lvbnMoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3RJbkNvbnRlbnRDb29yZGluYXRl
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdp
b24+KT4mJik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlh
bGl6ZUFjY2Vzc2liaWxpdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDgwZTFhNDA5MGVlMGUzZTg3YTYzYTUz
Y2E0NTczMDMzODA3MWJmMGMuLjRiNTJiOWY3Nzk0NWQzOWIwYzY4NzQ1NjA3MjljN2NkYjRlMTll
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgpAQCAtNjczLDUgKzY3Myw1IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGlu
Z0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBl
CiAKICAgICBTY3JvbGxUb1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdldFJlY3QsIFdlYkNv
cmU6OkZsb2F0UG9pbnQgb3JpZ2luKQogCi0gICAgSW50ZXJhY3RhYmxlUmVnaW9uc0luUm9vdFZp
ZXdDb29yZGluYXRlcyhXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCkgLT4gKFZlY3RvcjxXZWJDb3Jl
OjpGbG9hdFJlY3Q+IHJlY3RzKQorICAgIEludGVyYWN0aW9uUmVnaW9ucyhXZWJDb3JlOjpGbG9h
dFJlY3QgcmVjdEluQ29udGVudENvb3JkaW5hdGVzKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkludGVy
YWN0aW9uUmVnaW9uPiByZWdpb25zKQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZjZDU1NGMzNDdjMjc5YTc2OWZjNTQwYzNmYTdkYTc3YTRh
OGMzOGQuLmRkNjg0ZGU4N2UxNTQ3N2FkMDBhMTkzYzQwMzczMWRmZDQyNzA1ZjQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAyMi0wMy0yMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgYSBkZWJ1ZyBvdmVybGF5IGZvciBpbnRlcmFjdGlvbiByZWdpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgxODcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2Vy
L21hYy9TZXR0aW5nc0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvU2V0
dGluZ3NDb250cm9sbGVyLm06CisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciBfcG9wdWxh
dGVNZW51XSk6CisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciBpbnRlcmFjdGlvblJlZ2lv
bk92ZXJsYXlWaXNpYmxlXSk6CisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciBwcmVmZXJl
bmNlS2V5Rm9yUmVnaW9uT3ZlcmxheVRhZzpdKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMv
V0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIgZGlkQ2hhbmdlU2V0dGluZ3NdKToKKyAgICAgICAgQWRkIGEgc3dpdGNoIGZv
ciB0aGUgbmV3IGRlYnVnIG92ZXJsYXkgaW4gTWluaUJyb3dzZXIuCisKIDIwMjItMDMtMTcgIEJy
ZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzYWJsZSBwdXNo
IGZlYXR1cmVzIGluIENhcHRpdmVQb3J0YWwgbW9kZSAKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlC
cm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIuaCBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9T
ZXR0aW5nc0NvbnRyb2xsZXIuaAppbmRleCA0OTg1NzUwZWYyNWMxYzkyYjcwN2IzMTNjZTIwYWE1
ZjNjZGFjZjVmLi45NTQ4YTJiMzgyOTVkYzdkMDVlMjkxZmU0NTI1YWU5ODZkNDk2MTJlIDEwMDY0
NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLmgKKysrIGIv
VG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5oCkBAIC00Myw2ICs0Myw3
IEBAIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPWlzU3BhY2VSZXNlcnZl
ZEZvckJhbm5lcnMpIEJPT0wgc3BhY2VSZXNlCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIEJPT0wgcmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBCT09MIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheVZpc2libGU7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgd2hlZWxFdmVudEhhbmRsZXJS
ZWdpb25PdmVybGF5VmlzaWJsZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9P
TCBpbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXlWaXNpYmxlOwogQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBCT09MIHVzZVVJU2lkZUNvbXBvc2l0aW5nOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBCT09MIHBlcldpbmRvd1dlYlByb2Nlc3Nlc0Rpc2FibGVkOwogQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQ7
CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm0g
Yi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm0KaW5kZXggODRiZDFh
OGVmMGZhMTZhYzM4NDJlZDRiN2NiOTU4OGE0ZDA3NTNhZC4uNWY3MWJhZjBmZjJlMjQyN2RjMjIx
ZGRkZWE3ZGIxNWNiMGFlZGNmZCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1Nl
dHRpbmdzQ29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0Nv
bnRyb2xsZXIubQpAQCAtNTcsNiArNTcsNyBAQAogCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBO
b25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXlWaXNpYmxlUHJlZmVyZW5jZUtleSA9IEAiTm9u
RmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5VmlzaWJsZSI7CiBzdGF0aWMgTlNTdHJpbmcgKiBj
b25zdCBXaGVlbEV2ZW50SGFuZGxlclJlZ2lvbk92ZXJsYXlWaXNpYmxlUHJlZmVyZW5jZUtleSA9
IEAiV2hlZWxFdmVudEhhbmRsZXJSZWdpb25PdmVybGF5VmlzaWJsZSI7CitzdGF0aWMgTlNTdHJp
bmcgKiBjb25zdCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXlWaXNpYmxlUHJlZmVyZW5jZUtleSA9
IEAiSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5VmlzaWJsZSI7CiAKIHN0YXRpYyBOU1N0cmluZyAq
IGNvbnN0IFVzZVRyYW5zcGFyZW50V2luZG93c1ByZWZlcmVuY2VLZXkgPSBAIlVzZVRyYW5zcGFy
ZW50V2luZG93cyI7CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVc2VQYWdpbmF0ZWRNb2RlUHJl
ZmVyZW5jZUtleSA9IEAiVXNlUGFnaW5hdGVkTW9kZSI7CkBAIC03Nyw2ICs3OCw3IEBACiB0eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBEZWJ1Z092ZXJ5bGF5TWVudUl0ZW1UYWcpIHsKICAgICBO
b25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXlUYWcgPSAxMDAsCiAgICAgV2hlZWxFdmVudEhh
bmRsZXJSZWdpb25PdmVybGF5VGFnLAorICAgIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheVRhZywK
ICAgICBFeHBlcmltZW50YWxGZWF0dXJlVGFnLAogICAgIEludGVybmFsRGVidWdGZWF0dXJlVGFn
LAogfTsKQEAgLTE5NSw2ICsxOTcsMTIgQEAgLSAodm9pZClfcG9wdWxhdGVNZW51CiAgICAgW3do
ZWVsRXZlbnRIYW5kbGVyUmVnaW9uSXRlbSBzZXRUYWc6V2hlZWxFdmVudEhhbmRsZXJSZWdpb25P
dmVybGF5VGFnXTsKICAgICBbd2hlZWxFdmVudEhhbmRsZXJSZWdpb25JdGVtIHNldFRhcmdldDpz
ZWxmXTsKICAgICBbZGVidWdPdmVybGF5c01lbnUgYWRkSXRlbTpbd2hlZWxFdmVudEhhbmRsZXJS
ZWdpb25JdGVtIGF1dG9yZWxlYXNlXV07CisKKyAgICBOU01lbnVJdGVtICppbnRlcmFjdGlvblJl
Z2lvbkl0ZW0gPSBbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6QCJJbnRlcmFjdGlv
biBSZWdpb24iIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlRGVidWdPdmVybGF5Oikga2V5RXF1aXZh
bGVudDpAIiJdOworICAgIFtpbnRlcmFjdGlvblJlZ2lvbkl0ZW0gc2V0VGFnOkludGVyYWN0aW9u
UmVnaW9uT3ZlcmxheVRhZ107CisgICAgW2ludGVyYWN0aW9uUmVnaW9uSXRlbSBzZXRUYXJnZXQ6
c2VsZl07CisgICAgW2RlYnVnT3ZlcmxheXNNZW51IGFkZEl0ZW06W2ludGVyYWN0aW9uUmVnaW9u
SXRlbSBhdXRvcmVsZWFzZV1dOworCiAgICAgW2RlYnVnT3ZlcmxheXNNZW51IHJlbGVhc2VdOwog
ICAgIAogICAgIFtfbWVudSBhZGRJdGVtOmRlYnVnT3ZlcmxheXNTdWJtZW51SXRlbV07CkBAIC03
MTEsNiArNzE5LDExIEBAIC0gKEJPT0wpd2hlZWxFdmVudEhhbmRsZXJSZWdpb25PdmVybGF5Vmlz
aWJsZQogICAgIHJldHVybiBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBi
b29sRm9yS2V5OldoZWVsRXZlbnRIYW5kbGVyUmVnaW9uT3ZlcmxheVZpc2libGVQcmVmZXJlbmNl
S2V5XTsKIH0KIAorLSAoQk9PTClpbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXlWaXNpYmxlCit7Cisg
ICAgcmV0dXJuIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JL
ZXk6SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5VmlzaWJsZVByZWZlcmVuY2VLZXldOworfQorCiAt
IChOU1N0cmluZyAqKXByZWZlcmVuY2VLZXlGb3JSZWdpb25PdmVybGF5VGFnOihOU1VJbnRlZ2Vy
KXRhZwogewogICAgIHN3aXRjaCAodGFnKSB7CkBAIC03MTksNiArNzMyLDkgQEAgLSAoTlNTdHJp
bmcgKilwcmVmZXJlbmNlS2V5Rm9yUmVnaW9uT3ZlcmxheVRhZzooTlNVSW50ZWdlcil0YWcKIAog
ICAgIGNhc2UgV2hlZWxFdmVudEhhbmRsZXJSZWdpb25PdmVybGF5VGFnOgogICAgICAgICByZXR1
cm4gV2hlZWxFdmVudEhhbmRsZXJSZWdpb25PdmVybGF5VmlzaWJsZVByZWZlcmVuY2VLZXk7CisK
KyAgICBjYXNlIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheVRhZzoKKyAgICAgICAgcmV0dXJuIElu
dGVyYWN0aW9uUmVnaW9uT3ZlcmxheVZpc2libGVQcmVmZXJlbmNlS2V5OwogICAgIH0KICAgICBy
ZXR1cm4gbmlsOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dz
ZXJXaW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3Nlcldp
bmRvd0NvbnRyb2xsZXIubQppbmRleCA1YTE4MjFiMDAzYTgxNzZhNjNmMGI0OTVjNWU1NGUzNDc1
NTU3ZGMwLi4xZDcwYmYxZTJlN2FkMzFmNzVjY2ZhMTEyNDk5OTZiOThlMmYzMjMxIDEwMDY0NAot
LS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQor
KysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpA
QCAtNTE5LDYgKzUxOSw4IEBAIC0gKHZvaWQpZGlkQ2hhbmdlU2V0dGluZ3MKICAgICAgICAgdmlz
aWJsZU92ZXJsYXlSZWdpb25zIHw9IF9XS05vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOwogICAgIGlm
IChzZXR0aW5ncy53aGVlbEV2ZW50SGFuZGxlclJlZ2lvbk92ZXJsYXlWaXNpYmxlKQogICAgICAg
ICB2aXNpYmxlT3ZlcmxheVJlZ2lvbnMgfD0gX1dLV2hlZWxFdmVudEhhbmRsZXJSZWdpb247Cisg
ICAgaWYgKHNldHRpbmdzLmludGVyYWN0aW9uUmVnaW9uT3ZlcmxheVZpc2libGUpCisgICAgICAg
IHZpc2libGVPdmVybGF5UmVnaW9ucyB8PSBfV0tJbnRlcmFjdGlvblJlZ2lvbjsKICAgICAKICAg
ICBwcmVmZXJlbmNlcy5fdmlzaWJsZURlYnVnT3ZlcmxheVJlZ2lvbnMgPSB2aXNpYmxlT3Zlcmxh
eVJlZ2lvbnM7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455345</attachid>
            <date>2022-03-22 01:06:20 -0700</date>
            <delta_ts>2022-03-31 14:45:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238187-20220322010619.patch</filename>
            <type>text/plain</type>
            <size>62736</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBiNGM3Y2VkODZmNjlm
Njk2N2E3NjBiMzBiOGQzMzU2NjY5MGYzZS4uYTcyNTk2ZDZjZWYzYTg0YWI3MTVkYzcyMDQ0MjE0
MWIzNjlmZWQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIyLTAzLTIxICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGRlYnVn
IG92ZXJsYXkgZm9yIGludGVyYWN0aW9uIHJlZ2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODE4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6OndpbGxSZXNwb25kVG9Ub3VjaEV2ZW50cyk6CisgICAgICAg
ICogZG9tL05vZGUuaDoKKyAgICAgICAgRXhwb3NlIGB3aWxsUmVzcG9uZFRvVG91Y2hFdmVudHNg
LCBzaW1pbGFyIHRvIGB3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzYC4KKworICAgICAgICAq
IHBhZ2UvRGVidWdPdmVybGF5UmVnaW9ucy5oOgorICAgICAgICAqIHBhZ2UvRGVidWdQYWdlT3Zl
cmxheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp1
cGRhdGVSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6cGF0aHNGb3JSZWdpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjphY3RpdmVSZWdpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0NoZWNrYm94KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVyYWN0
aW9uUmVnaW9uT3ZlcmxheTo6cmVjdEZvclNldHRpbmdBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1NldHRpbmdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3VzZUV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlZ2lvbk92ZXJsYXk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
ZWJ1Z1BhZ2VPdmVybGF5czo6dXBkYXRlT3ZlcmxheVJlZ2lvblZpc2liaWxpdHkpOgorICAgICAg
ICAqIHBhZ2UvRGVidWdQYWdlT3ZlcmxheXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlYnVnUGFn
ZU92ZXJsYXlzOjpkaWRMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RGVidWdQYWdlT3Zlcmxh
eXM6OmRpZENoYW5nZUV2ZW50SGFuZGxlcnMpOgorICAgICAgICAoV2ViQ29yZTo6RGVidWdQYWdl
T3ZlcmxheXM6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcpOgorICAgICAgICBBZGQgYW4gb3Zlcmxh
eSBmb3IgaW5kaWNhdGluZyBpbnRlcmFjdGlvbiByZWdpb25zLgorCisgICAgICAgICogcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZUNvbnRhaW5zQ29t
cGxleEJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXN0aW1hdGVkQmFja2dyb3VuZENv
bG9yRm9yUmFuZ2UpOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaDoKKyAgICAg
ICAgKiBwYWdlL1RleHRJbmRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVDb250
YWluc0NvbXBsZXhCYWNrZ3JvdW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmVzdGlt
YXRlZEJhY2tncm91bmRDb2xvckZvclJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZSBgZXN0
aW1hdGVkQmFja2dyb3VuZENvbG9yRm9yUmFuZ2VgIGZyb20gVGV4dEluZGljYXRvciB0bworICAg
ICAgICBGcmFtZVNuYXBzaG90dGluZyBmb3IgZWFzZSBvZiByZXVzZS4KKyAgICAgICAgCisgICAg
ICAgICogcGFnZS9JbnRlcmFjdGlvblJlZ2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6YWJzb2x1dGVCb3VuZGluZ1JlY3RGb3JSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpyZWdp
b25Gb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmN1cnNvclR5cGVGb3JFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmludGVyYWN0aW9uUmVnaW9ucyk6CisgICAgICAgICogcGFnZS9J
bnRlcmFjdGlvblJlZ2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkludGVyYWN0aW9u
UmVnaW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdp
b246OmRlY29kZSk6CisgICAgICAgIEFkZCBJbnRlcmFjdGlvblJlZ2lvbiwgd2hpY2gga2VlcHMg
dHJhY2sgb2YgdGhlIGxvY2F0aW9uIG9mIGFuZCBtZXRhZGF0YQorICAgICAgICBhYm91dCBpbnRl
cmFjdGlvbiByZWdpb25zLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U2l6ZTo6bWluRGltZW5zaW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dFNpemU6Om1heERpbWVuc2lvbiBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJvdW5kZWRSZWN0OjpSYWRpaTo6bWluaW11bVJhZGl1cyBjb25zdCk6CisgICAgICAgIEFkZCBt
aW5pbXVtUmFkaXVzKCkgdG8gUmFkaWkuCisKIDIwMjItMDMtMjEgIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIEdyYXBoaWNz
Q29udGV4dFN0YXRlIGtlZXAgdHJhY2sgb2YgY2hhbmdlcyB0aWxsIHRoZXkgYXJlIGFwcGxpZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZDkwM2NlYTE4NGQ0OTlkZmNhZWMwMzdhMjQzZDFlMGE2MDY3YWEzZS4uZDkx
MDU0OGM3MDk1NDM1YjA5NzhlNzBlZjcxMTFkYTQ5ZDA5NDZlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNCBAQAorMjAyMi0wMy0yMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgYSBkZWJ1ZyBvdmVybGF5IGZvciBpbnRlcmFjdGlvbiByZWdpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgxODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJl
ZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwOgorICAgICAgICBV
bmlmaWVkIHNvdXJjZSBmaXhlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAgQWRkIHBsdW1iaW5nIGZvciBhIG5ldyBkZWJ1
ZyBvdmVybGF5LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW50ZXJhY3Rpb25SZWdpb25zKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnRlcmFjdGFibGVSZWdpb25zSW5Sb290Vmlld0Nvb3Jk
aW5hdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgaW50ZXJhY3Rpb25SZWdpb25zRm9ySG92ZXJQbGF0dGVyOmlu
UmVjdDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBpbnRl
cmFjdGFibGVSZWdpb25zRm9ySG92ZXJQbGF0dGVyOmluUmVjdDpjb21wbGV0aW9uSGFuZGxlcjpd
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5tbToKKyAgICAgICAgKC1bV0tI
b3ZlclBsYXR0ZXIgdXBkYXRlRGVidWdJbmRpY2F0b3JdKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmludGVyYWN0
aW9uUmVnaW9ucyk6CisgICAgICAgIE1vdmUgaW50ZXJhY3Rpb25SZWdpb25zKCkgZnJvbSBXZWJQ
YWdlIHRvIFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uLgorCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmludGVyYWN0YWJsZVJlZ2lvbnNJblJvb3RWaWV3Q29vcmRpbmF0ZXMpOiBEZWxldGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjItMDMtMjEgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBN
YWtlIEdyYXBoaWNzQ29udGV4dFN0YXRlIGtlZXAgdHJhY2sgb2YgY2hhbmdlcyB0aWxsIHRoZXkg
YXJlIGFwcGxpZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggN2VkMDAwZDYyYWVlMDM3MjhmZTY1MDZlM2Vm
MjljMDdlYWE4ZWU1My4uZGE1ODkyNjg4YjAyM2Q0NWNkZTEzMWIwNDVlNjZjM2RlNjE0MzI2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTE3NDQsNiArMTc0NCw3IEBAIHBhZ2UvRnJhbWVWaWV3TGF5b3V0
Q29udGV4dC5jcHAKIHBhZ2UvSGlzdG9yeS5jcHAKIHBhZ2UvSW1hZ2VBbmFseXNpc1F1ZXVlLmNw
cAogcGFnZS9JbWFnZU92ZXJsYXlDb250cm9sbGVyLmNwcAorcGFnZS9JbnRlcmFjdGlvblJlZ2lv
bi5jcHAKIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCiBwYWdlL0ludGVyc2VjdGlvbk9i
c2VydmVyRW50cnkuY3BwCiBwYWdlL0xvY2F0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNkNGRmYjQ3NjgzODcxZjZm
MmY5MWYzYThjNjIzNGRhMGQ3NDVhMjYuLmFiZjUyYWNlODUwN2FiNjQ0OTE5ODQ0YTczNmI3OTFk
NzY5MjE4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTg4OCw2ICs4ODgsNyBAQAogCQkyRDlGMEUxMzE0RkYxQ0JGMDBCQTBG
RjcgLyogbGluZWFyU1JHQi5pY2MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEOUYwRTEyMTRGRjFDQkYwMEJBMEZGNyAvKiBsaW5lYXJTUkdCLmljYyAq
LzsgfTsKIAkJMkRBMzk3RTUyNjVDNzM3NTAwNDY4RjMzIC8qIE51bGxHcmFwaGljc0NvbnRleHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTM5N0Uz
MjY1QzczNzQwMDQ2OEYzMyAvKiBOdWxsR3JhcGhpY3NDb250ZXh0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkRBRjM0M0QxRUE3RTBGMTAwMzgy
Q0QzIC8qIENvbnN0YW50UHJvcGVydHlNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEQUYzNDNCMUVBN0UwRjEwMDM4MkNEMyAvKiBDb25zdGFudFBy
b3BlcnR5TWFwLmggKi87IH07CisJCTJEQzA1Q0E4MjdEODA5NTYwMDRFRDQwMyAvKiBJbnRlcmFj
dGlvblJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkRDMDVDQTMyN0Q3RjZCNTAwNEVENDAzIC8qIEludGVyYWN0aW9uUmVnaW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkRDOEQzOTgyNUYy
RkU5NzAwQ0ZDQkFCIC8qIE1vZGVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyREM4RDM5NzI1RjJGRTk0MDBDRkNCQUIgLyogTW9kZWwuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyREQ1QTcyNzFFQkVF
NDdEMDA5QkE1OTcgLyogQ29tcG9zaXRpb25VbmRlcmxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDVBNzI2MUVCRUU0N0QwMDlCQTU5NyAvKiBD
b21wb3NpdGlvblVuZGVybGluZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTJERDg3MTRCMjY1RjQzNjYwMDVGOTk3QyAvKiBCaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyREQ4NzE0OTI2NUY0MzY1MDA1Rjk5N0MgLyogQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04
MTc0LDYgKzgxNzUsOCBAQAogCQkyREFBRTMyRDE5RENBRjYwMDBFMDAyRDIgLyogTW9ja1BhZ2VP
dmVybGF5Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tQYWdl
T3ZlcmxheUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREFGMzQzQTFF
QTdFMEYxMDAzODJDRDMgLyogQ29uc3RhbnRQcm9wZXJ0eU1hcC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zdGFudFByb3BlcnR5TWFwLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBRjM0M0IxRUE3RTBGMTAwMzgyQ0QzIC8qIENvbnN0YW50
UHJvcGVydHlNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RhbnRQ
cm9wZXJ0eU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREMwNUNBMzI3RDdG
NkI1MDA0RUQ0MDMgLyogSW50ZXJhY3Rpb25SZWdpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZXJh
Y3Rpb25SZWdpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRDMDVDQTcyN0Q4
MDIxNzAwNEVENDAzIC8qIEludGVyYWN0aW9uUmVnaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEludGVyYWN0aW9uUmVnaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRD
OEQzOTYyNUYyRkU5MzAwQ0ZDQkFCIC8qIE1vZGVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1v
ZGVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRDOEQzOTcyNUYyRkU5NDAw
Q0ZDQkFCIC8qIE1vZGVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGVsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJERDVBNzI2MUVCRUU0N0QwMDlCQTU5NyAvKiBDb21wb3NpdGlvblVu
ZGVybGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wb3NpdGlvblVu
ZGVybGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQyMDEsNiArMjQyMDQs
OCBAQAogCQkJCUY0NkQ1MzlEMjczRUVDRjcwMDA5RkE4MCAvKiBJbWFnZUFuYWx5c2lzUXVldWUu
aCAqLywKIAkJCQlGNDgyNDM0QTI2MEMzMkYxMDAyMjQ5N0MgLyogSW1hZ2VPdmVybGF5Q29udHJv
bGxlci5jcHAgKi8sCiAJCQkJRjQ4MjQzNDgyNjBDMzJGMTAwMjI0OTdDIC8qIEltYWdlT3Zlcmxh
eUNvbnRyb2xsZXIuaCAqLywKKwkJCQkyREMwNUNBNzI3RDgwMjE3MDA0RUQ0MDMgLyogSW50ZXJh
Y3Rpb25SZWdpb24uY3BwICovLAorCQkJCTJEQzA1Q0EzMjdEN0Y2QjUwMDRFRDQwMyAvKiBJbnRl
cmFjdGlvblJlZ2lvbi5oICovLAogCQkJCTBGNDcxMEQ1MURCNkZFMjIwMDJEQ0VDMyAvKiBJbnRl
cnNlY3Rpb25PYnNlcnZlci5jcHAgKi8sCiAJCQkJMEY0NzEwRDYxREI2RkUyMjAwMkRDRUMzIC8q
IEludGVyc2VjdGlvbk9ic2VydmVyLmggKi8sCiAJCQkJMEY0NzEwRDcxREI2RkUyMjAwMkRDRUMz
IC8qIEludGVyc2VjdGlvbk9ic2VydmVyLmlkbCAqLywKQEAgLTM1MjA1LDYgKzM1MjEwLDcgQEAK
IAkJCQlBNTkzQ0Y4QjE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNUI4MUNCNDFGQUE0NDYyMDAzN0QxRTYgLyogSW5zcGVjdG9y
V29ya2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzQUJGRTBDMTMwRTlEQTAwMEU3RjdE
MSAvKiBJbnN0cnVtZW50aW5nQWdlbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkyREMwNUNBODI3
RDgwOTU2MDA0RUQ0MDMgLyogSW50ZXJhY3Rpb25SZWdpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNDcxMERDMURCNkZFMjIwMDJEQ0VDMyAvKiBJbnRlcnNlY3Rpb25PYnNlcnZlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY4QjQ1NzIxREMzRkJBMzAwNDQzQzNGIC8qIEludGVyc2VjdGlvbk9i
c2VydmVyQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDcxMERGMURCNkZFMjIwMDJE
Q0VDMyAvKiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAppbmRleCBiMWFmNDVmN2VjMmYxMGQyZTBkMjRjYzgwYzU3MGE2MWMzZGQ5MWM2Li5j
M2ZlOGE5ZjMwYzJlZTBmNDc0ZmUzOGMwM2U5YTdhODE1Nzg5YTNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CkBAIC0yNTEwLDYgKzI1MTAsMTUgQEAgYm9vbCBOb2RlOjp3aWxsUmVzcG9uZFRvTW91c2VNb3Zl
RXZlbnRzKCkKICAgICByZXR1cm4gaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNl
bW92ZUV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2VvdmVyRXZl
bnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50KTsKIH0K
IAorYm9vbCBOb2RlOjp3aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMoKQoreworICAgIGZvciAoY29u
c3QgYXV0byYgZXZlbnRUeXBlIDogZXZlbnRUeXBlcygpKSB7CisgICAgICAgIGlmIChldmVudE5h
bWVzKCkuaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoZXZlbnRUeXBlLCAqdGhpcykpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIE5v
ZGU6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKIHsKICAgICAvLyBGSVhNRTogV2h5
IGlzIHRoZSBpT1MgY29kZSBwYXRoIGRpZmZlcmVudCBmcm9tIHRoZSBub24taU9TIGNvZGUgcGF0
aD8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCmluZGV4IDNlZGMwMzBiM2M1NjMxN2Q2Yjc0OTA4MDk1ZjA2OThlNjU5ZTY0
Y2YuLjUzYzU4ZmI3MjMwNzk0ODAxNTE3ODNmOTI3MmEwYjczMDk0NDJiYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aApAQCAtMjc1LDcgKzI3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNlbGZPckFuY2VzdG9y
SGFzRGlyQXV0b0F0dHJpYnV0ZShib29sIGZsYWcpIHsgc2V0Tm9kZUZsYWcoTm9kZUZsYWc6OlNl
bGZPckFuY2VzdG9ySGFzRGlyQXV0bywgZmxhZyk7IH0KIAogICAgIC8vIFJldHVybnMgdGhlIGVu
Y2xvc2luZyBldmVudCBwYXJlbnQgRWxlbWVudCAob3Igc2VsZikgdGhhdCwgd2hlbiBjbGlja2Vk
LCB3b3VsZCB0cmlnZ2VyIGEgbmF2aWdhdGlvbi4KLSAgICBFbGVtZW50KiBlbmNsb3NpbmdMaW5r
RXZlbnRQYXJlbnRPclNlbGYoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBlbmNsb3Np
bmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKTsKIAogICAgIC8vIFRoZXNlIGxvdy1sZXZlbCBjYWxs
cyBnaXZlIHRoZSBjYWxsZXIgcmVzcG9uc2liaWxpdHkgZm9yIG1haW50YWluaW5nIHRoZSBpbnRl
Z3JpdHkgb2YgdGhlIHRyZWUuCiAgICAgdm9pZCBzZXRQcmV2aW91c1NpYmxpbmcoTm9kZSogcHJl
dmlvdXMpIHsgbV9wcmV2aW91cyA9IHByZXZpb3VzOyB9CkBAIC00NTcsNiArNDU3LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCk7CiAg
ICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCk7CiAgICAgdmly
dHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZVdoZWVsRXZlbnRzKCk7CisgICAgdmlydHVhbCBi
b29sIHdpbGxSZXNwb25kVG9Ub3VjaEV2ZW50cygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdW5z
aWduZWQgc2hvcnQgY29tcGFyZURvY3VtZW50UG9zaXRpb24oTm9kZSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnT3ZlcmxheVJlZ2lvbnMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRGVidWdPdmVybGF5UmVnaW9ucy5oCmluZGV4IDBmZGM4M2MzYWRhZjEwNjI1ZDRh
Mjg3OTRmNjA2OTc4Njc0MzgxNjQuLmNlNjJkNDhlNjYzOTJmNjU3MGRmMTM5ZGM2NTYxNDE0ZTcz
MWMxZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdPdmVybGF5UmVnaW9u
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdPdmVybGF5UmVnaW9ucy5oCkBAIC0z
NCw2ICszNCw3IEBAIGVudW0gY2xhc3MgRGVidWdPdmVybGF5UmVnaW9ucyA6IHVpbnQ4X3Qgewog
ICAgIFdoZWVsRXZlbnRIYW5kbGVyUmVnaW9uID0gMSA8PCAxLAogICAgIFRvdWNoQWN0aW9uUmVn
aW9uID0gMSA8PCAyLAogICAgIEVkaXRhYmxlRWxlbWVudFJlZ2lvbiA9IDEgPDwgMywKKyAgICBJ
bnRlcmFjdGlvblJlZ2lvbiA9IDEgPDwgNCwKIH07CiAKIH0KQEAgLTQ2LDcgKzQ3LDggQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEZWJ1Z092ZXJsYXlSZWdpb25zPiB7
CiAgICAgICAgIFdlYkNvcmU6OkRlYnVnT3ZlcmxheVJlZ2lvbnM6Ok5vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uLAogICAgICAgICBXZWJDb3JlOjpEZWJ1Z092ZXJsYXlSZWdpb25zOjpXaGVlbEV2ZW50
SGFuZGxlclJlZ2lvbiwKICAgICAgICAgV2ViQ29yZTo6RGVidWdPdmVybGF5UmVnaW9uczo6VG91
Y2hBY3Rpb25SZWdpb24sCi0gICAgICAgIFdlYkNvcmU6OkRlYnVnT3ZlcmxheVJlZ2lvbnM6OkVk
aXRhYmxlRWxlbWVudFJlZ2lvbgorICAgICAgICBXZWJDb3JlOjpEZWJ1Z092ZXJsYXlSZWdpb25z
OjpFZGl0YWJsZUVsZW1lbnRSZWdpb24sCisgICAgICAgIFdlYkNvcmU6OkRlYnVnT3ZlcmxheVJl
Z2lvbnM6OkludGVyYWN0aW9uUmVnaW9uCiAgICAgPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggN2IzZWM3OGYzZGFmNGE3YWMzNTc2MzllYmJk
Y2I1ZTMwMjE0ZDhkNy4uMmNlNjZlZDljMmNjZGQ3NzY4YjhlMTAyZDVkNWM0NWZmZTMwNzBjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI3LDEyICsy
NywxOCBAQAogI2luY2x1ZGUgIkRlYnVnUGFnZU92ZXJsYXlzLmgiCiAKICNpbmNsdWRlICJDb2xv
ckhhc2guaCIKKyNpbmNsdWRlICJDdXJzb3IuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3Iu
aCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CisjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNp
bmNsdWRlICJJbnRlcmFjdGlvblJlZ2lvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJQYWdlT3ZlcmxheS5oIgogI2luY2x1ZGUgIlBhZ2VPdmVybGF5Q29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgIlBhdGhVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIK
ICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC01OSw4ICs2NSw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB3aWxsTW92ZVRvUGFnZShQYWdlT3ZlcmxheSYsIFBhZ2UqKSBmaW5hbDsKICAgICB2b2lkIGRp
ZE1vdmVUb1BhZ2UoUGFnZU92ZXJsYXkmLCBQYWdlKikgZmluYWw7CiAgICAgdm9pZCBkcmF3UmVj
dChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JikgZmluYWw7Ci0gICAgdm9pZCBkaWRTY3JvbGxGcmFtZShQYWdlT3Zl
cmxheSYsIEZyYW1lJikgZmluYWw7CisgICAgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5Jiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRTY3JvbGxG
cmFtZShQYWdlT3ZlcmxheSYsIEZyYW1lJikgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICAv
LyBSZXR1cm5zIHRydWUgaWYgdGhlIHJlZ2lvbiBjaGFuZ2VkLgpAQCAtNzQsNiArODAsOCBAQCBw
cm90ZWN0ZWQ6CiAgICAgYm9vbCBtX3JlZ2lvbkNoYW5nZWQgeyB0cnVlIH07CiB9OwogCisjcHJh
Z21hIG1hcmsgLSBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheQorCiBjbGFzcyBNb3VzZVdoZWVsUmVn
aW9uT3ZlcmxheSBmaW5hbCA6IHB1YmxpYyBSZWdpb25PdmVybGF5IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPE1vdXNlV2hlZWxSZWdpb25PdmVybGF5PiBjcmVhdGUoUGFnZSYgcGFnZSkKQEAg
LTExNSw2ICsxMjMsOCBAQCBib29sIE1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1cGRhdGVSZWdp
b24oKQogI2VuZGlmCiB9CiAKKyNwcmFnbWEgbWFyayAtIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9u
T3ZlcmxheQorCiBjbGFzcyBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXkgZmluYWwgOiBw
dWJsaWMgUmVnaW9uT3ZlcmxheSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxOb25GYXN0U2Ny
b2xsYWJsZVJlZ2lvbk92ZXJsYXk+IGNyZWF0ZShQYWdlJiBwYWdlKQpAQCAtMjE5LDYgKzIyOSwz
MTUgQEAgdm9pZCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VP
dmVybGF5JiBwYWdlT3ZlcmxheSwgR3JhcGhpY3MKICAgICBkcmF3UmVnaW9uKGNvbnRleHQsIG1f
ZXZlbnRUcmFja2luZ1JlZ2lvbnMuYXN5bmNocm9ub3VzRGlzcGF0Y2hSZWdpb24sIG1fY29sb3Is
IGJvdW5kcyk7CiB9CiAKKyNwcmFnbWEgbWFyayAtIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheQor
CitjbGFzcyBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXkgZmluYWwgOiBwdWJsaWMgUmVnaW9uT3Zl
cmxheSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk+
IGNyZWF0ZShQYWdlJiBwYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5KHBhZ2UpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
ZXhwbGljaXQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5KFBhZ2UmIHBhZ2UpCisgICAgICAgIDog
UmVnaW9uT3ZlcmxheShwYWdlLCBDb2xvcjo6Z3JlZW4uY29sb3JXaXRoQWxwaGFCeXRlKDEwMikp
CisgICAgeworICAgIH0KKworICAgIGJvb2wgdXBkYXRlUmVnaW9uKCkgZmluYWw7CisgICAgdm9p
ZCBkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCkgZmluYWw7CisKKyAgICB2b2lkIGRyYXdTZXR0aW5ncyhHcmFwaGljc0NvbnRl
eHQmKTsKKworICAgIGJvb2wgbW91c2VFdmVudChQYWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYpIGZpbmFsOworCisgICAgRmxvYXRSZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRl
eCh1bnNpZ25lZCk7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJik7Cisg
ICAgICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdpb24+IGFjdGl2ZVJlZ2lv
bigpOworCisgICAgc3RydWN0IFNldHRpbmcgeworICAgICAgICBTdHJpbmcga2V5OworICAgICAg
ICBTdHJpbmcgbmFtZTsKKyAgICAgICAgYm9vbCB2YWx1ZTsKKyAgICB9OyAgICAKKworICAgIFZl
Y3RvcjxTZXR0aW5nPiBtX3NldHRpbmdzIHsKKyAgICAgICAgeyAiY29uc3RyYWluIiwgIkNvbnN0
cmFpbiB0byBSZWdpb25zIiwgdHJ1ZSB9LAorICAgICAgICB7ICJjbGlwIiwgIkNsaXAgdG8gUmVn
aW9ucyIsIHRydWUgfSwKKyAgICAgICAgeyAid2FzaCIsICJEcmF3IFdhc2giLCB0cnVlIH0sCisg
ICAgICAgIHsgImNvbnRleHR1YWxDb2xvciIsICJDb250ZXh0dWFsIENvbG9yIiwgdHJ1ZSB9LAor
ICAgICAgICB7ICJjb250ZXh0dWFsU2l6ZSIsICJDb250ZXh0dWFsIFNpemUiLCB0cnVlIH0sCisg
ICAgICAgIHsgImN1cnNvciIsICJTaG93IEN1cnNvciIsIHRydWUgfSwKKyAgICAgICAgeyAiaG92
ZXIiLCAiQ1NTIEhvdmVyIiwgZmFsc2UgfSwKKyAgICAgICAgeyAicmVnaW9ucyIsICJTaG93IFJl
Z2lvbnMiLCBmYWxzZSB9CisgICAgfTsKKyAgICAKKyAgICBWZWN0b3I8SW50ZXJhY3Rpb25SZWdp
b24+IG1fcmVnaW9uczsKKyAgICBJbnRQb2ludCBtX21vdXNlTG9jYXRpb25JbkNvbnRlbnRDb29y
ZGluYXRlczsKK307CisKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp1cGRhdGVSZWdp
b24oKQoreworICAgIG1fb3ZlcmxheS0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgbV9yZWdpb25z
ID0gaW50ZXJhY3Rpb25SZWdpb25zKG1fcGFnZSwgeyB7IDAsIDAgfSwgbV9wYWdlLm1haW5GcmFt
ZSgpLnZpZXcoKS0+Y29udGVudHNTaXplKCkgfSk7CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3N0YXRpYyBWZWN0b3I8UGF0aD4gcGF0aHNGb3JSZWdpb24oY29uc3QgSW50ZXJhY3Rpb25S
ZWdpb24mIHJlZ2lvbikKK3sKKyAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0IHBhZGRpbmcgPSAz
OworICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgcmFkaXVzID0gNDsKKworICAgIFZlY3RvcjxG
bG9hdFJlY3Q+IHJlY3RzOworICAgIGZvciAoYXV0byByZWN0IDogcmVnaW9uLnJlY3RzSW5Db250
ZW50Q29vcmRpbmF0ZXMpIHsKKyAgICAgICAgaWYgKHJlZ2lvbi5pc0lubGluZSkKKyAgICAgICAg
ICAgIHJlY3QuaW5mbGF0ZShwYWRkaW5nKTsKKyAgICAgICAgcmVjdHMuYXBwZW5kKHJlY3QpOwor
ICAgIH0KKyAgICByZXR1cm4gUGF0aFV0aWxpdGllczo6cGF0aHNXaXRoU2hyaW5rV3JhcHBlZFJl
Y3RzKHJlY3RzLCBzdGQ6Om1heChyZWdpb24uYm9yZGVyUmFkaXVzLCByYWRpdXMpKTsKK30KKwor
c3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJlZ2lvbj4gSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5
OjphY3RpdmVSZWdpb24oKQoreworICAgIHN0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdpb24+
IGhpdFJlZ2lvbjsKKyAgICBmbG9hdCBoaXRSZWdpb25BcmVhID0gMDsKKyAgICAKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIHJlZ2lvbiA6IG1fcmVnaW9ucykgeworICAgICAgICBmbG9hdCBhcmVhID0g
MDsKKyAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nUmVjdDsKKyAgICAgICAgZm9yIChjb25zdCBh
dXRvJiByZWN0IDogcmVnaW9uLnJlY3RzSW5Db250ZW50Q29vcmRpbmF0ZXMpIHsKKyAgICAgICAg
ICAgIGlmIChib3VuZGluZ1JlY3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGJvdW5kaW5n
UmVjdCA9IHJlY3Q7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYm91bmRpbmdS
ZWN0LnVuaXRlKHJlY3QpOworICAgICAgICAgICAgYXJlYSArPSByZWN0LmFyZWEoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghYm91bmRpbmdSZWN0LmNvbnRhaW5zKG1fbW91c2VMb2NhdGlv
bkluQ29udGVudENvb3JkaW5hdGVzKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IGF1dG8gcGF0aHMgPSBwYXRoc0ZvclJlZ2lvbihyZWdpb24pOworICAgICAgICBib29sIGRpZEhp
dFJlZ2lvbiA9IGZhbHNlOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBwYXRocykg
eworICAgICAgICAgICAgaWYgKHBhdGguY29udGFpbnMobV9tb3VzZUxvY2F0aW9uSW5Db250ZW50
Q29vcmRpbmF0ZXMpKSB7CisgICAgICAgICAgICAgICAgZGlkSGl0UmVnaW9uID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgaWYgKCFkaWRIaXRSZWdpb24pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBpZiAoYXJlYSA+IG1fcGFnZS5tYWluRnJhbWUoKS52aWV3KCktPmxheW91dFNpemUoKS5h
cmVhKCkgLyAyKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGRpZEhpdFJl
Z2lvbiAmJiAoIWhpdFJlZ2lvbiB8fCBhcmVhIDwgaGl0UmVnaW9uQXJlYSkpIHsKKyAgICAgICAg
ICAgIGhpdFJlZ2lvbiA9IHJlZ2lvbjsKKyAgICAgICAgICAgIGhpdFJlZ2lvbkFyZWEgPSBhcmVh
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBoaXRSZWdpb247Cit9CisKK3N0
YXRpYyB2b2lkIGRyYXdDaGVja2JveChjb25zdCBTdHJpbmcmIHRleHQsIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IEZsb2F0UmVjdCYgYm94
LCBib29sIHN0YXRlKQoreworICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgbGluZUhlaWdodCA9
IDE0OworICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgY2hlY2tib3hWZXJ0aWNhbFBhZGRpbmcg
PSAyOworICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgdGV4dEhvcml6b250YWxQYWRkaW5nID0g
NDsKKworICAgIEZsb2F0UmVjdCBjaGVja2JveFJlY3QgeyBib3gubG9jYXRpb24oKSArIEZsb2F0
U2l6ZSB7IDAsIGNoZWNrYm94VmVydGljYWxQYWRkaW5nIH0sIEZsb2F0U2l6ZSB7IGxpbmVIZWln
aHQsIGxpbmVIZWlnaHQgfSB9OworCisgICAgVGV4dFJ1biB0ZXh0UnVuID0gVGV4dFJ1bih0ZXh0
KTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOworICAgIGNvbnRleHQu
ZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgYm94LmxvY2F0aW9uKCkgKyBGbG9hdFNpemUgeyBjaGVj
a2JveFJlY3Qud2lkdGgoKSArIHRleHRIb3Jpem9udGFsUGFkZGluZywgbGluZUhlaWdodCB9KTsK
KworICAgIFBhdGggY2hlY2tib3hQYXRoOworICAgIGNoZWNrYm94UGF0aC5hZGRSb3VuZGVkUmVj
dChGbG9hdFJvdW5kZWRSZWN0IHsgY2hlY2tib3hSZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRp
aSB7IDMgfSB9KTsKKworICAgIGlmIChzdGF0ZSkgeworICAgICAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcjo6ZGFya0dyYXkpOworICAgICAgICBjb250ZXh0LmZpbGxQYXRoKGNoZWNrYm94
UGF0aCk7CisgICAgfQorCisgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2su
Y29sb3JXaXRoQWxwaGFCeXRlKDEyNykpOworICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNz
KDEpOworICAgIGNvbnRleHQuc3Ryb2tlUGF0aChjaGVja2JveFBhdGgpOworfQorCitGbG9hdFJl
Y3QgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpyZWN0Rm9yU2V0dGluZ0F0SW5kZXgodW5zaWdu
ZWQgaW5kZXgpCit7CisgICAgYXV0byB2aWV3U2l6ZSA9IG1fcGFnZS5tYWluRnJhbWUoKS52aWV3
KCktPmxheW91dFNpemUoKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0IHNldHRpbmdzV2lk
dGggPSAxNTA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdCByb3dIZWlnaHQgPSAxNjsKKyAg
ICByZXR1cm4geworICAgICAgICBGbG9hdFBvaW50IHsgdmlld1NpemUud2lkdGgoKSAtIHNldHRp
bmdzV2lkdGggLSAxNCwgMTAgfQorICAgICAgICAgICAgKyBGbG9hdFNpemUgeyA0LCByb3dIZWln
aHQgKiBpbmRleCArIDIgfSwKKyAgICAgICAgRmxvYXRTaXplIHsgc2V0dGluZ3NXaWR0aCwgcm93
SGVpZ2h0IH0KKyAgICB9OworfQorCitib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFs
dWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IHNldHRpbmcgOiBtX3NldHRpbmdzKSB7CisgICAgICAgIGlmIChuYW1lID09IHNldHRpbmcua2V5
KQorICAgICAgICAgICAgcmV0dXJuIHNldHRpbmcudmFsdWU7CisgICAgfQorCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEludGVyYWN0aW9u
UmVnaW9uT3ZlcmxheTo6ZHJhd1NldHRpbmdzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3sK
KyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisKKyAg
ICBGbG9hdFJlY3QgcmVjdCA9IHJlY3RGb3JTZXR0aW5nQXRJbmRleCgwKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxOyBpIDwgbV9zZXR0aW5ncy5zaXplKCk7IGkrKykKKyAgICAgICAgcmVjdC51
bml0ZShyZWN0Rm9yU2V0dGluZ0F0SW5kZXgoaSkpOworCisgICAgcmVjdC5leHBhbmQoRmxvYXRC
b3hFeHRlbnQgeyA0LCA0LCA0LCA0IH0pOworCisgICAgeworICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgICAgIGNvbnRleHQuc2V0U2hh
ZG93KHsgfSwgNSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjUpKTsKKyAg
ICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCB7IHJlY3QsIEZs
b2F0Um91bmRlZFJlY3Q6OlJhZGlpIHsgNiB9IH0sIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC44NSkpOworICAgIH0KKworICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZm9u
dERlc2NyaXB0aW9uOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGlj
YSIpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKDEyKTsKKyAgICBmb250
RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDEyKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0
V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSg1MDApKTsKKyAgICBGb250Q2FzY2FkZSBmb250KFdU
Rk1vdmUoZm9udERlc2NyaXB0aW9uKSwgMCwgMCk7CisgICAgZm9udC51cGRhdGUobnVsbHB0cik7
CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zZXR0aW5ncy5zaXplKCk7IGkrKykg
eworICAgICAgICBjb25zdCBhdXRvJiBzZXR0aW5nID0gbV9zZXR0aW5nc1tpXTsKKyAgICAgICAg
ZHJhd0NoZWNrYm94KHNldHRpbmcubmFtZSwgY29udGV4dCwgZm9udCwgcmVjdEZvclNldHRpbmdB
dEluZGV4KGkpLCBzZXR0aW5nLnZhbHVlKTsKKyAgICB9Cit9CisKK3ZvaWQgSW50ZXJhY3Rpb25S
ZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQoreworICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICAKKyAgICBjb250ZXh0LmNsZWFyUmVj
dChkaXJ0eVJlY3QpOworCisgICAgaWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9ucyIpKSB7Cisg
ICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOworICAgICAgICBjb250ZXh0LnNl
dFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBy
ZWdpb24gOiBtX3JlZ2lvbnMpIHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjdCA6
IHJlZ2lvbi5yZWN0c0luQ29udGVudENvb3JkaW5hdGVzKQorICAgICAgICAgICAgY29udGV4dC5z
dHJva2VSZWN0KHJlY3QsIDIpOworICAgICAgICB9CisgICAgfQorCisgICAgYXV0byByZWdpb24g
PSBhY3RpdmVSZWdpb24oKTsKKworICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygi
Y29uc3RyYWluIikpIHsKKyAgICAgICAgYXV0byBncmFkaWVudERhdGEgPSBbJl0gKGZsb2F0IHJh
ZGl1cykgeworICAgICAgICAgICAgR3JhZGllbnQ6OlJhZGlhbERhdGEgZ3JhZGllbnREYXRhOwor
ICAgICAgICAgICAgZ3JhZGllbnREYXRhLnBvaW50MCA9IG1fbW91c2VMb2NhdGlvbkluQ29udGVu
dENvb3JkaW5hdGVzOworICAgICAgICAgICAgZ3JhZGllbnREYXRhLnBvaW50MSA9IG1fbW91c2VM
b2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzOworICAgICAgICAgICAgZ3JhZGllbnREYXRhLnN0
YXJ0UmFkaXVzID0gMDsKKyAgICAgICAgICAgIGdyYWRpZW50RGF0YS5lbmRSYWRpdXMgPSByYWRp
dXM7CisgICAgICAgICAgICBncmFkaWVudERhdGEuYXNwZWN0UmF0aW8gPSAxOworICAgICAgICAg
ICAgcmV0dXJuIGdyYWRpZW50RGF0YTsKKyAgICAgICAgfTsKKworICAgICAgICBhdXRvIG1ha2VH
cmFkaWVudCA9IFsmXSAoYm9vbCBoYXNMaWdodEJhY2tncm91bmQsIEdyYWRpZW50OjpSYWRpYWxE
YXRhIGdyYWRpZW50RGF0YSkgeworICAgICAgICAgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50
OjpjcmVhdGUoV1RGTW92ZShncmFkaWVudERhdGEpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsK
KyAgICAgICAgICAgIGlmIChyZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFs
dWVGb3JTZXR0aW5nKCJjbGlwIikpIHsKKyAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29s
b3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuNSkgfSk7
CisgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIGhhc0xpZ2h0QmFj
a2dyb3VuZCA/IENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxwaGEoMC4wNSkgOiBDb2xv
cihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMSkgfSk7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiKSB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25z
dHJhaW4iKSkgeworICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEs
IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4yKSB9KTsKKyAgICAgICAgICAg
ICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xv
cldpdGhBbHBoYSgwKSB9KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
Z3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldp
dGhBbHBoYSgwLjUpIH0pOworICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
eyAxLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDApIH0pOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICByZXR1cm4gZ3JhZGllbnQ7CisgICAgICAgIH07CisgICAgICAg
IAorICAgICAgICBmbG9hdCByYWRpdXMgPSA1MDsKKworICAgICAgICBpZiAoIXZhbHVlRm9yU2V0
dGluZygiY2xpcCIpIHx8ICFyZWdpb24pIHsKKyAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBH
cmFkaWVudDo6Y3JlYXRlKGdyYWRpZW50RGF0YShyYWRpdXMgKiAyKSwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQgfSk7CisgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xv
cihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CisgICAgICAgICAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBo
YSgwKSB9KTsKKworICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQoV1RGTW92ZShn
cmFkaWVudCkpOworICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChkaXJ0eVJlY3QpOworCisg
ICAgICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChtYWtlR3JhZGllbnQoZmFsc2UsIGdy
YWRpZW50RGF0YShyYWRpdXMpKSk7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5
UmVjdCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBib29sIGhhc0xpZ2h0QmFja2dy
b3VuZCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVh
bENvbG9yIikpCisgICAgICAgICAgICAgICAgaGFzTGlnaHRCYWNrZ3JvdW5kID0gcmVnaW9uLT5o
YXNMaWdodEJhY2tncm91bmQ7CisKKyAgICAgICAgICAgIGlmICh2YWx1ZUZvclNldHRpbmcoImNs
aXAiKSkgeworICAgICAgICAgICAgICAgIGF1dG8gcGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVn
aW9uKTsKKyAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBwYXRocykgewor
ICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIp
KQorICAgICAgICAgICAgICAgICAgICAgICAgcmFkaXVzID0gMS41ICogcGF0aC5ib3VuZGluZ1Jl
Y3QoKS5zaXplKCkubWluRGltZW5zaW9uKCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQu
c2V0RmlsbEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50
RGF0YShyYWRpdXMpKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFBhdGgocGF0
aCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChtYWtlR3JhZGllbnQoaGFzTGlnaHRCYWNrZ3Jv
dW5kLCBncmFkaWVudERhdGEocmFkaXVzKSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuZmls
bFJlY3QoZGlydHlSZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IHN0YXRlU2F2ZXIucmVzdG9yZSgpOworCisgICAgZHJhd1NldHRpbmdzKGNvbnRleHQpOworfQor
Citib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYg
b3ZlcmxheSwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICBhdXRvIG1h
aW5GcmFtZVZpZXcgPSBtX3BhZ2UubWFpbkZyYW1lKCkudmlldygpOworCisgICAgc3RkOjpvcHRp
b25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OworCisgICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1
cnNvciIpKQorICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKKyAgICBlbHNlIGlm
ICghdmFsdWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgICAgICBjdXJzb3JUb1NldCA9IHBvaW50
ZXJDdXJzb3IoKTsKKworICAgIGF1dG8gZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXMgPSBtYWlu
RnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NldHRpbmdzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlm
ICghcmVjdEZvclNldHRpbmdBdEluZGV4KGkpLmNvbnRhaW5zKGV2ZW50SW5Db250ZW50c0Nvb3Jk
aW5hdGVzKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjdXJzb3JUb1NldCA9IGhh
bmRDdXJzb3IoKTsKKyAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbigpID09IExlZnRCdXR0b24gJiYg
ZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCkgeworICAgICAgICAg
ICAgbV9zZXR0aW5nc1tpXS52YWx1ZSA9ICFtX3NldHRpbmdzW2ldLnZhbHVlOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoY3Vyc29yVG9TZXQp
CisgICAgICAgIG1haW5GcmFtZVZpZXctPnNldEN1cnNvcigqY3Vyc29yVG9TZXQpOworCisgICAg
bV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMgPSBldmVudEluQ29udGVudHNDb29y
ZGluYXRlczsKKyAgICBvdmVybGF5LnNldE5lZWRzRGlzcGxheSgpOworCisgICAgaWYgKGV2ZW50
LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkg
JiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKKyNwcmFnbWEgbWFyayAtIFJlZ2lvbk92ZXJsYXkKKwogUmVm
PFJlZ2lvbk92ZXJsYXk+IFJlZ2lvbk92ZXJsYXk6OmNyZWF0ZShQYWdlJiBwYWdlLCBEZWJ1Z1Bh
Z2VPdmVybGF5czo6UmVnaW9uVHlwZSByZWdpb25UeXBlKQogewogICAgIHN3aXRjaCAocmVnaW9u
VHlwZSkgewpAQCAtMjI2LDYgKzU0NSw4IEBAIFJlZjxSZWdpb25PdmVybGF5PiBSZWdpb25PdmVy
bGF5OjpjcmVhdGUoUGFnZSYgcGFnZSwgRGVidWdQYWdlT3ZlcmxheXM6OlJlZ2lvblR5CiAgICAg
ICAgIHJldHVybiBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheTo6Y3JlYXRlKHBhZ2UpOwogICAgIGNh
c2UgRGVidWdQYWdlT3ZlcmxheXM6OlJlZ2lvblR5cGU6Ok5vbkZhc3RTY3JvbGxhYmxlUmVnaW9u
OgogICAgICAgICByZXR1cm4gTm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5OjpjcmVhdGUo
cGFnZSk7CisgICAgY2FzZSBEZWJ1Z1BhZ2VPdmVybGF5czo6UmVnaW9uVHlwZTo6SW50ZXJhY3Rp
b25SZWdpb246CisgICAgICAgIHJldHVybiBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmNyZWF0
ZShwYWdlKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIE1v
dXNlV2hlZWxSZWdpb25PdmVybGF5OjpjcmVhdGUocGFnZSk7CkBAIC0yOTYsNiArNjE3LDggQEAg
dm9pZCBSZWdpb25PdmVybGF5OjpyZWNvbXB1dGVSZWdpb24oKQogICAgIG1fcmVnaW9uQ2hhbmdl
ZCA9IGZhbHNlOwogfQogCisjcHJhZ21hIG1hcmsgLSBEZWJ1Z1BhZ2VPdmVybGF5cworCiBEZWJ1
Z1BhZ2VPdmVybGF5cyYgRGVidWdQYWdlT3ZlcmxheXM6OnNpbmdsZXRvbigpCiB7CiAgICAgaWYg
KCFzaGFyZWREZWJ1Z092ZXJsYXlzKQpAQCAtMzc5LDYgKzcwMiwxMSBAQCB2b2lkIERlYnVnUGFn
ZU92ZXJsYXlzOjp1cGRhdGVPdmVybGF5UmVnaW9uVmlzaWJpbGl0eShQYWdlJiBwYWdlLCBPcHRp
b25TZXQ8RGVidQogICAgICAgICBzaG93UmVnaW9uT3ZlcmxheShwYWdlLCBSZWdpb25UeXBlOjpX
aGVlbEV2ZW50SGFuZGxlcnMpOwogICAgIGVsc2UKICAgICAgICAgaGlkZVJlZ2lvbk92ZXJsYXko
cGFnZSwgUmVnaW9uVHlwZTo6V2hlZWxFdmVudEhhbmRsZXJzKTsKKyAgICAKKyAgICBpZiAodmlz
aWJsZVJlZ2lvbnMuY29udGFpbnMoRGVidWdPdmVybGF5UmVnaW9uczo6SW50ZXJhY3Rpb25SZWdp
b24pKQorICAgICAgICBzaG93UmVnaW9uT3ZlcmxheShwYWdlLCBSZWdpb25UeXBlOjpJbnRlcmFj
dGlvblJlZ2lvbik7CisgICAgZWxzZQorICAgICAgICBoaWRlUmVnaW9uT3ZlcmxheShwYWdlLCBS
ZWdpb25UeXBlOjpJbnRlcmFjdGlvblJlZ2lvbik7CiB9CiAKIHZvaWQgRGVidWdQYWdlT3Zlcmxh
eXM6OnNldHRpbmdzQ2hhbmdlZChQYWdlJiBwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1Bh
Z2VPdmVybGF5cy5oCmluZGV4IDZkMmQ4NGVhMDYzZTliNzdlNGNjODcyNjg4NTA4YWJkYzk0NmZl
ZDcuLjM2ZmVjMjE4Y2NlZDAzMzQyM2ZhMjg0Y2E4Yzg2NzAyYTIzOTYxYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmgKQEAgLTQzLDggKzQzLDkgQEAgcHVibGljOgog
ICAgIGVudW0gY2xhc3MgUmVnaW9uVHlwZSB7CiAgICAgICAgIFdoZWVsRXZlbnRIYW5kbGVycywK
ICAgICAgICAgTm9uRmFzdFNjcm9sbGFibGVSZWdpb24sCisgICAgICAgIEludGVyYWN0aW9uUmVn
aW9uLAogICAgIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBOdW1iZXJPZlJlZ2lv
blR5cGVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlZ2lvblR5cGU6Ok5vbkZhc3RTY3JvbGxh
YmxlUmVnaW9uKSArIDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBOdW1iZXJPZlJl
Z2lvblR5cGVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlZ2lvblR5cGU6OkludGVyYWN0aW9u
UmVnaW9uKSArIDE7CiAKICAgICBzdGF0aWMgdm9pZCBkaWRMYXlvdXQoRnJhbWUmKTsKICAgICBz
dGF0aWMgdm9pZCBkaWRDaGFuZ2VFdmVudEhhbmRsZXJzKEZyYW1lJik7CkBAIC05Myw2ICs5NCw3
IEBAIGlubGluZSB2b2lkIERlYnVnUGFnZU92ZXJsYXlzOjpkaWRMYXlvdXQoRnJhbWUmIGZyYW1l
KQogCiAgICAgc2hhcmVkRGVidWdPdmVybGF5cy0+cmVnaW9uQ2hhbmdlZChmcmFtZSwgUmVnaW9u
VHlwZTo6V2hlZWxFdmVudEhhbmRsZXJzKTsKICAgICBzaGFyZWREZWJ1Z092ZXJsYXlzLT5yZWdp
b25DaGFuZ2VkKGZyYW1lLCBSZWdpb25UeXBlOjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbik7Cisg
ICAgc2hhcmVkRGVidWdPdmVybGF5cy0+cmVnaW9uQ2hhbmdlZChmcmFtZSwgUmVnaW9uVHlwZTo6
SW50ZXJhY3Rpb25SZWdpb24pOwogfQogCiBpbmxpbmUgdm9pZCBEZWJ1Z1BhZ2VPdmVybGF5czo6
ZGlkQ2hhbmdlRXZlbnRIYW5kbGVycyhGcmFtZSYgZnJhbWUpCkBAIC0xMDEsNiArMTAzLDcgQEAg
aW5saW5lIHZvaWQgRGVidWdQYWdlT3ZlcmxheXM6OmRpZENoYW5nZUV2ZW50SGFuZGxlcnMoRnJh
bWUmIGZyYW1lKQogCiAgICAgc2hhcmVkRGVidWdPdmVybGF5cy0+cmVnaW9uQ2hhbmdlZChmcmFt
ZSwgUmVnaW9uVHlwZTo6V2hlZWxFdmVudEhhbmRsZXJzKTsKICAgICBzaGFyZWREZWJ1Z092ZXJs
YXlzLT5yZWdpb25DaGFuZ2VkKGZyYW1lLCBSZWdpb25UeXBlOjpOb25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbik7CisgICAgc2hhcmVkRGVidWdPdmVybGF5cy0+cmVnaW9uQ2hhbmdlZChmcmFtZSwgUmVn
aW9uVHlwZTo6SW50ZXJhY3Rpb25SZWdpb24pOwogfQogCiBpbmxpbmUgdm9pZCBEZWJ1Z1BhZ2VP
dmVybGF5czo6ZG9BZnRlclVwZGF0ZVJlbmRlcmluZyhQYWdlJiBwYWdlKQpAQCAtMTEwLDYgKzEx
Myw3IEBAIGlubGluZSB2b2lkIERlYnVnUGFnZU92ZXJsYXlzOjpkb0FmdGVyVXBkYXRlUmVuZGVy
aW5nKFBhZ2UmIHBhZ2UpCiAKICAgICBzaGFyZWREZWJ1Z092ZXJsYXlzLT51cGRhdGVSZWdpb25J
Zk5lY2Vzc2FyeShwYWdlLCBSZWdpb25UeXBlOjpXaGVlbEV2ZW50SGFuZGxlcnMpOwogICAgIHNo
YXJlZERlYnVnT3ZlcmxheXMtPnVwZGF0ZVJlZ2lvbklmTmVjZXNzYXJ5KHBhZ2UsIFJlZ2lvblR5
cGU6Ok5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKTsKKyAgICBzaGFyZWREZWJ1Z092ZXJsYXlzLT51
cGRhdGVSZWdpb25JZk5lY2Vzc2FyeShwYWdlLCBSZWdpb25UeXBlOjpJbnRlcmFjdGlvblJlZ2lv
bik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVNuYXBzaG90dGluZy5jcHAKaW5kZXggODI3M2E2NGZjZGZiN2QzNGVhYTc2Zjk4YmE3YTIxMTdl
YWZiZmJlNi4uYjM1MjQxOTkwZjUyZGFlOWY5Zjg4NWNmMzU2OTFhYmNiMmZmNDNlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTMxLDExICszMSwxMyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZyYW1lU25hcHNob3R0aW5nLmgiCiAK
KyNpbmNsdWRlICJDb2xvckJsZW5kaW5nLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lU2Vs
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR2VvbWV0cnlVdGls
aXRpZXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZUJ1
ZmZlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTE1OCw0ICsxNjAsNTAgQEAgUmVmUHRyPElt
YWdlQnVmZmVyPiBzbmFwc2hvdE5vZGUoRnJhbWUmIGZyYW1lLCBOb2RlJiBub2RlLCBTbmFwc2hv
dE9wdGlvbnMmJiBvcHQKICAgICByZXR1cm4gc25hcHNob3RGcmFtZVJlY3QoZnJhbWUsIHNuYXBw
ZWRJbnRSZWN0KG5vZGUucmVuZGVyZXIoKS0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3Qp
KSwgV1RGTW92ZShvcHRpb25zKSk7CiB9CiAKK3N0YXRpYyBib29sIHN0eWxlQ29udGFpbnNDb21w
bGV4QmFja2dyb3VuZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCit7CisgICAgcmV0dXJuIHN0
eWxlLmhhc0JsZW5kTW9kZSgpIHx8IHN0eWxlLmhhc0JhY2tncm91bmRJbWFnZSgpIHx8IHN0eWxl
Lmhhc0JhY2tkcm9wRmlsdGVyKCk7Cit9CisKK0NvbG9yIGVzdGltYXRlZEJhY2tncm91bmRDb2xv
ckZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgY29uc3QgRnJhbWUmIGZyYW1lKQor
eworICAgIGF1dG8gZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yID0gZnJhbWUudmlldygpID8gZnJh
bWUudmlldygpLT5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpIDogQ29sb3I6OnRyYW5zcGFyZW50
QmxhY2s7CisKKyAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IG51bGxwdHI7CisgICAgYXV0
byBjb21tb25BbmNlc3RvciA9IGNvbW1vbkluY2x1c2l2ZUFuY2VzdG9yPENvbXBvc2VkVHJlZT4o
cmFuZ2UpOworICAgIHdoaWxlIChjb21tb25BbmNlc3RvcikgeworICAgICAgICBpZiAoaXM8UmVu
ZGVyRWxlbWVudD4oY29tbW9uQW5jZXN0b3ItPnJlbmRlcmVyKCkpKSB7CisgICAgICAgICAgICBy
ZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGNvbW1vbkFuY2VzdG9yLT5yZW5kZXJl
cigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNvbW1vbkFuY2Vz
dG9yID0gY29tbW9uQW5jZXN0b3ItPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKTsKKyAgICB9
CisgICAgCisgICAgYXV0byBib3VuZGluZ1JlY3RGb3JSYW5nZSA9IGVuY2xvc2luZ0ludFJlY3Qo
dW5pb25SZWN0SWdub3JpbmdaZXJvUmVjdHMoUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvcmRlckFu
ZFRleHRSZWN0cyhyYW5nZSwgeworICAgICAgICBSZW5kZXJPYmplY3Q6OkJvdW5kaW5nUmVjdEJl
aGF2aW9yOjpSZXNwZWN0Q2xpcHBpbmcsCisgICAgICAgIFJlbmRlck9iamVjdDo6Qm91bmRpbmdS
ZWN0QmVoYXZpb3I6OlVzZVZpc2libGVCb3VuZHMsCisgICAgICAgIFJlbmRlck9iamVjdDo6Qm91
bmRpbmdSZWN0QmVoYXZpb3I6Oklnbm9yZVRpbnlSZWN0cywKKyAgICB9KSkpOworCisgICAgVmVj
dG9yPENvbG9yPiBwYXJlbnRSZW5kZXJlckJhY2tncm91bmRDb2xvcnM7CisgICAgZm9yICg7ICEh
cmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpKSB7CisgICAgICAgIGF1dG8g
YWJzb2x1dGVCb3VuZGluZ0JveCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgp
OworICAgICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOworICAgICAgICBpZiAo
IWFic29sdXRlQm91bmRpbmdCb3guY29udGFpbnMoYm91bmRpbmdSZWN0Rm9yUmFuZ2UpIHx8ICFz
dHlsZS5oYXNCYWNrZ3JvdW5kKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBp
ZiAoc3R5bGVDb250YWluc0NvbXBsZXhCYWNrZ3JvdW5kKHN0eWxlKSkKKyAgICAgICAgICAgIHJl
dHVybiBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3I7CisKKyAgICAgICAgYXV0byB2aXNpdGVkRGVw
ZW5kZW50QmFja2dyb3VuZENvbG9yID0gc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1By
b3BlcnR5QmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgaWYgKHZpc2l0ZWREZXBlbmRlbnRCYWNr
Z3JvdW5kQ29sb3IgIT0gQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spCisgICAgICAgICAgICBwYXJl
bnRSZW5kZXJlckJhY2tncm91bmRDb2xvcnMuYXBwZW5kKHZpc2l0ZWREZXBlbmRlbnRCYWNrZ3Jv
dW5kQ29sb3IpOworICAgIH0KKyAgICBwYXJlbnRSZW5kZXJlckJhY2tncm91bmRDb2xvcnMucmV2
ZXJzZSgpOworICAgIGZvciAoY29uc3QgYXV0byYgYmFja2dyb3VuZENvbG9yIDogcGFyZW50UmVu
ZGVyZXJCYWNrZ3JvdW5kQ29sb3JzKQorICAgICAgICBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3Ig
PSBibGVuZFNvdXJjZU92ZXIoZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yLCBiYWNrZ3JvdW5kQ29s
b3IpOworCisgICAgcmV0dXJuIGVzdGltYXRlZEJhY2tncm91bmRDb2xvcjsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCmlu
ZGV4IDFiNzcwMjZmNTEwOTIwMDFjZGE4NmUzMjQ4MDg5MDM5NWIxNDViMmUuLmY0ZWRlMjJiNWRj
MjU5NDgzYzhkNTEwZDdiMWJlMTFiM2I4NDFlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
U25hcHNob3R0aW5nLmgKQEAgLTYzLDQgKzYzLDYgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFw
c2hvdEZyYW1lUmVjdFdpdGhDbGlwKEZyYW1lJiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IFZlY3QK
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiwgTm9kZSYsIFNuYXBzaG90
T3B0aW9ucyYmKTsKIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RT
ZWxlY3Rpb24oRnJhbWUmLCBTbmFwc2hvdE9wdGlvbnMmJik7CiAKK0NvbG9yIGVzdGltYXRlZEJh
Y2tncm91bmRDb2xvckZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgRnJhbWUmKTsK
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9JbnRlcmFjdGlvblJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyYWN0aW9u
UmVnaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWYxNWEzZTZhZjgzMzY2ZWQzOGU0ZjcwNzg1YTU0NzM4
ZjExZDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcmFjdGlv
blJlZ2lvbi5jcHAKQEAgLTAsMCArMSwxNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSW50ZXJhY3Rpb25SZWdpb24uaCIKKworI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVNuYXBzaG90dGluZy5o
IgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgi
CisjaW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmgiCisjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIlBhZ2Uu
aCIKKyNpbmNsdWRlICJQYXRoVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2
ZW50LmgiCisjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbnRlcmFjdGlvblJlZ2lvbjo6fklu
dGVyYWN0aW9uUmVnaW9uKCkgPSBkZWZhdWx0OworCitzdGF0aWMgRmxvYXRSZWN0IGFic29sdXRl
Qm91bmRpbmdSZWN0Rm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQoreworICAgIHJl
dHVybiB1bmlvblJlY3RJZ25vcmluZ1plcm9SZWN0cyhSZW5kZXJPYmplY3Q6OmFic29sdXRlQm9y
ZGVyQW5kVGV4dFJlY3RzKHJhbmdlLCB7CisgICAgICAgIFJlbmRlck9iamVjdDo6Qm91bmRpbmdS
ZWN0QmVoYXZpb3I6OlJlc3BlY3RDbGlwcGluZywKKyAgICAgICAgUmVuZGVyT2JqZWN0OjpCb3Vu
ZGluZ1JlY3RCZWhhdmlvcjo6VXNlVmlzaWJsZUJvdW5kcywKKyAgICAgICAgUmVuZGVyT2JqZWN0
OjpCb3VuZGluZ1JlY3RCZWhhdmlvcjo6SWdub3JlVGlueVJlY3RzLAorICAgIH0pKTsKK30KKwor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdpb24+IHJlZ2lvbkZvckVsZW1lbnQo
RWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBhdXRvJiBmcmFtZVZpZXcgPSAqZWxlbWVudC5kb2N1
bWVudCgpLmZyYW1lKCktPnZpZXcoKTsKKyAgICBhdXRvJiBtYWluRnJhbWVWaWV3ID0gKmVsZW1l
bnQuZG9jdW1lbnQoKS5mcmFtZSgpLT5tYWluRnJhbWUoKS52aWV3KCk7CisgICAgCisgICAgSW50
UmVjdCBmcmFtZUNsaXBSZWN0OworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgZnJhbWVD
bGlwUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoZnJhbWVWaWV3LmV4cG9zZWRDb250ZW50UmVjdCgp
KTsKKyNlbHNlCisgICAgaWYgKGF1dG8gdmlld0V4cG9zZWRSZWN0ID0gZnJhbWVWaWV3LnZpZXdF
eHBvc2VkUmVjdCgpKQorICAgICAgICBmcmFtZUNsaXBSZWN0ID0gZW5jbG9zaW5nSW50UmVjdCgq
dmlld0V4cG9zZWRSZWN0KTsKKyAgICBlbHNlCisgICAgICAgIGZyYW1lQ2xpcFJlY3QgPSBmcmFt
ZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0KCk7CisjZW5kaWYKKworICAgIGF1dG8qIHJlbmRlcmVy
ID0gZWxlbWVudC5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8RmxvYXRSZWN0PiByZWN0c0luQ29udGVudHND
b29yZGluYXRlczsKKyAgICAKKyAgICBJbnRlcmFjdGlvblJlZ2lvbiByZWdpb247CisKKyAgICBh
dXRvIGxpbmtSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoZWxlbWVudCk7CisgICAgCisg
ICAgaWYgKGxpbmtSYW5nZSkKKyAgICAgICAgcmVnaW9uLmhhc0xpZ2h0QmFja2dyb3VuZCA9IGVz
dGltYXRlZEJhY2tncm91bmRDb2xvckZvclJhbmdlKCpsaW5rUmFuZ2UsICplbGVtZW50LmRvY3Vt
ZW50KCkuZnJhbWUoKSkubHVtaW5hbmNlKCkgPiAwLjU7CisgICAgCisgICAgaWYgKGxpbmtSYW5n
ZSAmJiByZW5kZXJlci0+aXNJbmxpbmUoKSAmJiAhcmVuZGVyZXItPmlzUmVwbGFjZWRPcklubGlu
ZUJsb2NrKCkpIHsKKyAgICAgICAgcmVnaW9uLmlzSW5saW5lID0gdHJ1ZTsKKworICAgICAgICBP
cHRpb25TZXQ8UmVuZGVyT2JqZWN0OjpCb3VuZGluZ1JlY3RCZWhhdmlvcj4gYmVoYXZpb3IgeyBS
ZW5kZXJPYmplY3Q6OkJvdW5kaW5nUmVjdEJlaGF2aW9yOjpSZXNwZWN0Q2xpcHBpbmcgfTsKKyAg
ICAgICAgcmVjdHNJbkNvbnRlbnRzQ29vcmRpbmF0ZXMgPSBSZW5kZXJPYmplY3Q6OmFic29sdXRl
VGV4dFJlY3RzKCpsaW5rUmFuZ2UsIGJlaGF2aW9yKS5tYXAoWyZdKGF1dG8gcmVjdCkgLT4gRmxv
YXRSZWN0IHsKKyAgICAgICAgICAgIHJldHVybiByZWN0OworICAgICAgICB9KTsKKworICAgICAg
ICBpZiAocmVjdHNJbkNvbnRlbnRzQ29vcmRpbmF0ZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICBhdXRvIGJvdW5kaW5nUmVjdEZvclJhbmdlID0gYWJzb2x1dGVCb3VuZGluZ1JlY3RGb3JSYW5n
ZSgqbGlua1JhbmdlKTsKKyAgICAgICAgICAgIGlmICghYm91bmRpbmdSZWN0Rm9yUmFuZ2UuaXNF
bXB0eSgpKQorICAgICAgICAgICAgICAgIHJlY3RzSW5Db250ZW50c0Nvb3JkaW5hdGVzID0geyBi
b3VuZGluZ1JlY3RGb3JSYW5nZSB9OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHJlY3Rz
SW5Db250ZW50c0Nvb3JkaW5hdGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmVjdHNJbkNvbnRlbnRz
Q29vcmRpbmF0ZXMgPSB7IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpIH07Cisg
ICAgCisgICAgaWYgKGlzPFJlbmRlckJveD4oKnJlbmRlcmVyKSkgeworICAgICAgICBSb3VuZGVk
UmVjdDo6UmFkaWkgYm9yZGVyUmFkaWkgPSBkb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJlciku
Ym9yZGVyUmFkaWkoKTsKKyAgICAgICAgcmVnaW9uLmJvcmRlclJhZGl1cyA9IGJvcmRlclJhZGlp
Lm1pbmltdW1SYWRpdXMoKTsKKyAgICB9CisKKyAgICByZWdpb24ucmVjdHNJbkNvbnRlbnRDb29y
ZGluYXRlcyA9IHJlY3RzSW5Db250ZW50c0Nvb3JkaW5hdGVzLm1hcChbJl0oYXV0byByZWN0KSB7
CisgICAgICAgIGF1dG8gY29udGVudHNSZWN0ID0gcmVjdDsKKworICAgICAgICBpZiAoJmZyYW1l
VmlldyAhPSAmbWFpbkZyYW1lVmlldykKKyAgICAgICAgICAgIGNvbnRlbnRzUmVjdC5pbnRlcnNl
Y3QoZnJhbWVDbGlwUmVjdCk7CisKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRzUmVjdDsKKyAgICB9
KTsKKyAgICAgICAgCisgICAgcmV0dXJuIFdURk1vdmUocmVnaW9uKTsKK30KKworc3RhdGljIEN1
cnNvclR5cGUgY3Vyc29yVHlwZUZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBh
dXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKKyAgICBhdXRvKiBzdHlsZSA9IHJl
bmRlcmVyID8gJnJlbmRlcmVyLT5zdHlsZSgpIDogbnVsbHB0cjsKKyAgICBhdXRvIGN1cnNvclR5
cGUgPSBzdHlsZSA/IHN0eWxlLT5jdXJzb3IoKSA6IEN1cnNvclR5cGU6OkF1dG87CisKKyAgICBp
ZiAoY3Vyc29yVHlwZSA9PSBDdXJzb3JUeXBlOjpBdXRvICYmIGVsZW1lbnQuZW5jbG9zaW5nTGlu
a0V2ZW50UGFyZW50T3JTZWxmKCkgJiYgZWxlbWVudC5pc0xpbmsoKSkKKyAgICAgICAgY3Vyc29y
VHlwZSA9IEN1cnNvclR5cGU6OlBvaW50ZXI7CisKKyAgICByZXR1cm4gY3Vyc29yVHlwZTsKK30K
KworVmVjdG9yPEludGVyYWN0aW9uUmVnaW9uPiBpbnRlcmFjdGlvblJlZ2lvbnMoUGFnZSYgcGFn
ZSwgRmxvYXRSZWN0IHJlY3QpCit7CisgICAgUmVmIGZyYW1lKHBhZ2UubWFpbkZyYW1lKCkpOwor
ICAgIFJlZlB0ciBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpOworICAgIAorICAgIGlmICghZnJh
bWVWaWV3KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgZnJhbWVWaWV3LT51cGRhdGVMYXlv
dXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CisgICAgCisgICAgUmVmUHRyIGRvY3VtZW50
ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IExheW91dFJlY3QocmVj
dCkgfTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KHsKKyAgICAgICAgSGl0VGVzdFJlcXVl
c3Q6OlR5cGU6OlJlYWRPbmx5LAorICAgICAgICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZl
LAorICAgICAgICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFtZUNv
bnRlbnRPbmx5LAorICAgICAgICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6Q29sbGVjdE11bHRpcGxl
RWxlbWVudHMKKyAgICB9KTsKKyAgICBkb2N1bWVudC0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQp
OworCisgICAgVmVjdG9yPEludGVyYWN0aW9uUmVnaW9uPiByZWdpb25zOworCisgICAgZm9yIChj
b25zdCBhdXRvJiBub2RlIDogcmVzdWx0Lmxpc3RCYXNlZFRlc3RSZXN1bHQoKSkgeworICAgICAg
ICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUuZ2V0KCkpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pihub2RlLmdldCgpKTsKKwor
ICAgICAgICBpZiAoIWVsZW1lbnQud2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSAmJiAh
ZWxlbWVudC53aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMoKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIGlmIChjdXJzb3JUeXBlRm9yRWxlbWVudChlbGVtZW50KSAhPSBDdXJzb3JU
eXBlOjpQb2ludGVyICYmICFpczxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PihlbGVtZW50KSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gcmVnaW9uID0gcmVnaW9uRm9yRWxl
bWVudChlbGVtZW50KTsKKyAgICAgICAgaWYgKHJlZ2lvbikKKyAgICAgICAgICAgIHJlZ2lvbnMu
YXBwZW5kKCpyZWdpb24pOworICAgIH0KKworICAgIHJldHVybiByZWdpb25zOworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyYWN0aW9uUmVnaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ludGVyYWN0aW9uUmVnaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTZmOTA2MjJh
NDJiYTU3NTAzYzhhMTA4NWE0NTczMmQyY2IxN2ZhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvSW50ZXJhY3Rpb25SZWdpb24uaApAQCAtMCwwICsxLDkzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKworbmFtZXNw
YWNlIElQQyB7CitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5jb2RlcjsKK30KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBQYWdlOworCitzdHJ1Y3QgSW50ZXJhY3Rpb25SZWdpb24gewor
ICAgIFZlY3RvcjxGbG9hdFJlY3Q+IHJlY3RzSW5Db250ZW50Q29vcmRpbmF0ZXM7CisgICAgYm9v
bCBpc0lubGluZSB7IGZhbHNlIH07CisgICAgYm9vbCBoYXNMaWdodEJhY2tncm91bmQgeyBmYWxz
ZSB9OworICAgIGZsb2F0IGJvcmRlclJhZGl1cyB7IDAgfTsKKyAgICAKKyAgICBXRUJDT1JFX0VY
UE9SVCB+SW50ZXJhY3Rpb25SZWdpb24oKTsKKyAgICAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdpb24+IGRlY29kZShEZWNv
ZGVyJik7Cit9OworCitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8SW50ZXJhY3Rpb25SZWdpb24+IGlu
dGVyYWN0aW9uUmVnaW9ucyhQYWdlJiwgRmxvYXRSZWN0IHJlY3RJbkNvbnRlbnRDb29yZGluYXRl
cyk7CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEludGVyYWN0aW9uUmVnaW9uOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHJlY3RzSW5D
b250ZW50Q29vcmRpbmF0ZXM7CisgICAgZW5jb2RlciA8PCBpc0lubGluZTsKKyAgICBlbmNvZGVy
IDw8IGhhc0xpZ2h0QmFja2dyb3VuZDsKKyAgICBlbmNvZGVyIDw8IGJvcmRlclJhZGl1czsKK30K
KwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdp
b24+IEludGVyYWN0aW9uUmVnaW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxGbG9hdFJlY3Q+PiByZWN0c0luQ29udGVudENvb3JkaW5hdGVz
OworICAgIGRlY29kZXIgPj4gcmVjdHNJbkNvbnRlbnRDb29yZGluYXRlczsKKyAgICBpZiAoIXJl
Y3RzSW5Db250ZW50Q29vcmRpbmF0ZXMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc0lubGluZTsKKyAgICBkZWNvZGVyID4+IGlz
SW5saW5lOworICAgIGlmICghaXNJbmxpbmUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNMaWdodEJhY2tncm91bmQ7CisgICAg
ZGVjb2RlciA+PiBoYXNMaWdodEJhY2tncm91bmQ7CisgICAgaWYgKCFoYXNMaWdodEJhY2tncm91
bmQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgc3RkOjpvcHRpb25h
bDxmbG9hdD4gYm9yZGVyUmFkaXVzOworICAgIGRlY29kZXIgPj4gYm9yZGVyUmFkaXVzOworICAg
IGlmICghYm9yZGVyUmFkaXVzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
cmV0dXJuIHsgeworICAgICAgICBXVEZNb3ZlKCpyZWN0c0luQ29udGVudENvb3JkaW5hdGVzKSwK
KyAgICAgICAgV1RGTW92ZSgqaXNJbmxpbmUpLAorICAgICAgICBXVEZNb3ZlKCpoYXNMaWdodEJh
Y2tncm91bmQpLAorICAgICAgICBXVEZNb3ZlKCpib3JkZXJSYWRpdXMpCisgICAgfSB9OworfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAppbmRleCBjYTVmYmU2M2NjZjZj
ZGI5OGFmODVlZDU5MjlhMTMwMzhkNjliZmM3Li40MGQwMjA1MzhjMzkyYTQ1Mzk1NWE5MmU0YzYx
ZGFkMDM4MzA5ZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKQEAgLTE3
NSwxMSArMTc1LDYgQEAgc3RhdGljIGJvb2wgdGFrZVNuYXBzaG90cyhUZXh0SW5kaWNhdG9yRGF0
YSYgZGF0YSwgRnJhbWUmIGZyYW1lLCBJbnRSZWN0IHNuYXBzaG8KICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotc3RhdGljIGJvb2wgc3R5bGVDb250YWluc0NvbXBsZXhCYWNrZ3JvdW5kKGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSkKLXsKLSAgICByZXR1cm4gc3R5bGUuaGFzQmxlbmRNb2RlKCkgfHwg
c3R5bGUuaGFzQmFja2dyb3VuZEltYWdlKCkgfHwgc3R5bGUuaGFzQmFja2Ryb3BGaWx0ZXIoKTsK
LX0KLQogc3RhdGljIEhhc2hTZXQ8Q29sb3I+IGVzdGltYXRlZFRleHRDb2xvcnNGb3JSYW5nZShj
b25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCiB7CiAgICAgSGFzaFNldDxDb2xvcj4gY29sb3JzOwpA
QCAtMjAzLDQyICsxOTgsNiBAQCBzdGF0aWMgRmxvYXRSZWN0IGFic29sdXRlQm91bmRpbmdSZWN0
Rm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogICAgIH0pKTsKIH0KIAotc3RhdGlj
IENvbG9yIGVzdGltYXRlZEJhY2tncm91bmRDb2xvckZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdl
JiByYW5nZSwgY29uc3QgRnJhbWUmIGZyYW1lKQotewotICAgIGF1dG8gZXN0aW1hdGVkQmFja2dy
b3VuZENvbG9yID0gZnJhbWUudmlldygpID8gZnJhbWUudmlldygpLT5kb2N1bWVudEJhY2tncm91
bmRDb2xvcigpIDogQ29sb3I6OnRyYW5zcGFyZW50QmxhY2s7Ci0KLSAgICBSZW5kZXJFbGVtZW50
KiByZW5kZXJlciA9IG51bGxwdHI7Ci0gICAgYXV0byBjb21tb25BbmNlc3RvciA9IGNvbW1vbklu
Y2x1c2l2ZUFuY2VzdG9yPENvbXBvc2VkVHJlZT4ocmFuZ2UpOwotICAgIHdoaWxlIChjb21tb25B
bmNlc3RvcikgewotICAgICAgICBpZiAoaXM8UmVuZGVyRWxlbWVudD4oY29tbW9uQW5jZXN0b3It
PnJlbmRlcmVyKCkpKSB7Ci0gICAgICAgICAgICByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckVs
ZW1lbnQ+KGNvbW1vbkFuY2VzdG9yLT5yZW5kZXJlcigpKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGNvbW1vbkFuY2VzdG9yID0gY29tbW9uQW5jZXN0b3ItPnBhcmVu
dE9yU2hhZG93SG9zdEVsZW1lbnQoKTsKLSAgICB9Ci0KLSAgICBhdXRvIGJvdW5kaW5nUmVjdEZv
clJhbmdlID0gZW5jbG9zaW5nSW50UmVjdChhYnNvbHV0ZUJvdW5kaW5nUmVjdEZvclJhbmdlKHJh
bmdlKSk7Ci0gICAgVmVjdG9yPENvbG9yPiBwYXJlbnRSZW5kZXJlckJhY2tncm91bmRDb2xvcnM7
Ci0gICAgZm9yICg7ICEhcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpKSB7
Ci0gICAgICAgIGF1dG8gYWJzb2x1dGVCb3VuZGluZ0JveCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdCgpOwotICAgICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgp
OwotICAgICAgICBpZiAoIWFic29sdXRlQm91bmRpbmdCb3guY29udGFpbnMoYm91bmRpbmdSZWN0
Rm9yUmFuZ2UpIHx8ICFzdHlsZS5oYXNCYWNrZ3JvdW5kKCkpCi0gICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICBpZiAoc3R5bGVDb250YWluc0NvbXBsZXhCYWNrZ3JvdW5kKHN0eWxlKSkK
LSAgICAgICAgICAgIHJldHVybiBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3I7Ci0KLSAgICAgICAg
YXV0byB2aXNpdGVkRGVwZW5kZW50QmFja2dyb3VuZENvbG9yID0gc3R5bGUudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLSAgICAgICAgaWYgKHZpc2l0
ZWREZXBlbmRlbnRCYWNrZ3JvdW5kQ29sb3IgIT0gQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spCi0g
ICAgICAgICAgICBwYXJlbnRSZW5kZXJlckJhY2tncm91bmRDb2xvcnMuYXBwZW5kKHZpc2l0ZWRE
ZXBlbmRlbnRCYWNrZ3JvdW5kQ29sb3IpOwotICAgIH0KLSAgICBwYXJlbnRSZW5kZXJlckJhY2tn
cm91bmRDb2xvcnMucmV2ZXJzZSgpOwotICAgIGZvciAoY29uc3QgYXV0byYgYmFja2dyb3VuZENv
bG9yIDogcGFyZW50UmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3JzKQotICAgICAgICBlc3RpbWF0ZWRC
YWNrZ3JvdW5kQ29sb3IgPSBibGVuZFNvdXJjZU92ZXIoZXN0aW1hdGVkQmFja2dyb3VuZENvbG9y
LCBiYWNrZ3JvdW5kQ29sb3IpOwotCi0gICAgcmV0dXJuIGVzdGltYXRlZEJhY2tncm91bmRDb2xv
cjsKLX0KLQogc3RhdGljIGJvb2wgaGFzQW55SWxsZWdpYmxlQ29sb3JzKFRleHRJbmRpY2F0b3JE
YXRhJiBkYXRhLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yLCBIYXNoU2V0PENvbG9yPiYm
IHRleHRDb2xvcnMpCiB7CiAgICAgaWYgKGRhdGEub3B0aW9ucy5jb250YWlucyhUZXh0SW5kaWNh
dG9yT3B0aW9uOjpQYWludEFsbENvbnRlbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTGF5b3V0U2l6ZS5oCmluZGV4IDRhNmQ3Nzg1MzBhZjRjYjZiMDQ0ZmI3NzdlM2U2
ZmE4ZTk3YzNhZWIuLjZiMDMyMjUyMzYyN2JlMzk5MjRkOTZjM2JkMmE2YWRkYWY0MzMyNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmgKQEAgLTU4
LDYgKzU4LDkgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVy
biBtX3dpZHRoOyB9CiAgICAgTGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hl
aWdodDsgfQogCisgICAgTGF5b3V0VW5pdCBtaW5EaW1lbnNpb24oKSBjb25zdCB7IHJldHVybiBz
dGQ6Om1pbihtX3dpZHRoLCBtX2hlaWdodCk7IH0KKyAgICBMYXlvdXRVbml0IG1heERpbWVuc2lv
bigpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWF4KG1fd2lkdGgsIG1faGVpZ2h0KTsgfQorCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZXRXaWR0aChUIHdpZHRoKSB7IG1fd2lkdGggPSB3
aWR0aDsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2V0SGVpZ2h0KFQgaGVpZ2h0
KSB7IG1faGVpZ2h0ID0gaGVpZ2h0OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Sb3VuZGVkUmVjdC5oCmluZGV4IDExN2JlZWY3YTMzYzJmZWIwMTg3NTIzMDY1ZGZl
NTkyNDM0ZTA1OTAuLjExMTJiODQ0ZGZiMTU2NTg1NTE4NzA4ZGZjNjUyYzgwOWFmNzEzMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaApAQCAt
NzEsNiArNzEsOCBAQCBwdWJsaWM6CiAKICAgICAgICAgUmFkaWkgdHJhbnNwb3NlZFJhZGlpKCkg
Y29uc3QgeyByZXR1cm4gUmFkaWkobV90b3BMZWZ0LnRyYW5zcG9zZWRTaXplKCksIG1fdG9wUmln
aHQudHJhbnNwb3NlZFNpemUoKSwgbV9ib3R0b21MZWZ0LnRyYW5zcG9zZWRTaXplKCksIG1fYm90
dG9tUmlnaHQudHJhbnNwb3NlZFNpemUoKSk7IH0KIAorICAgICAgICBMYXlvdXRVbml0IG1pbmlt
dW1SYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om1pbih7IG1fdG9wTGVmdC5taW5EaW1lbnNp
b24oKSwgbV90b3BSaWdodC5taW5EaW1lbnNpb24oKSwgbV9ib3R0b21MZWZ0Lm1pbkRpbWVuc2lv
bigpLCBtX2JvdHRvbVJpZ2h0Lm1pbkRpbWVuc2lvbigpIH0pOyB9CisKICAgICBwcml2YXRlOgog
ICAgICAgICBMYXlvdXRTaXplIG1fdG9wTGVmdDsKICAgICAgICAgTGF5b3V0U2l6ZSBtX3RvcFJp
Z2h0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVh
ZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRp
YUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKaW5kZXggYTNmYmI3NjBlNzc2MDQw
NzhkOGU1MGMxNGNkZDdkN2NlYTZlYjZkMy4uZWI5ZWI1NGE4MjI3Y2ExZDg4MDM3OTA0ZjBiNjk0
OWQ1Mjc1MThmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9y
bWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCkBAIC0zNiw5ICsz
NiwxMSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTWVkaWFTYW1wbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Ft
cGxlQVZGT2JqQy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9W
aWRlb1RyYWNrUHJpdmF0ZS5oPgogI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1l
QVZGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAj
aW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggN2E3
OGUyYWVlYTc1ZmVhY2UzMjc2ZmI0NDgyZWYzZGY4MjIwNTEwYS4uYzk2YzkyNmU5YjY0MzBiYWZi
ZjNlNDM3MjYwZTYwNTBlYmY5YjNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTM3LDYgKzM3LDcg
QEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS0RlYnVnT3ZlcmxheVJlZ2lvbnMp
IHsKICAgICBfV0tXaGVlbEV2ZW50SGFuZGxlclJlZ2lvbiA9IDEgPDwgMSwKICAgICBfV0tUb3Vj
aEFjdGlvblJlZ2lvbiA9IDEgPDwgMiwKICAgICBfV0tFZGl0YWJsZUVsZW1lbnRSZWdpb24gPSAx
IDw8IDMsCisgICAgX1dLSW50ZXJhY3Rpb25SZWdpb24gPSAxIDw8IDQsCiB9IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4wKSk7CiAKIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJ
bnRlZ2VyLCBfV0tKYXZhU2NyaXB0UnVudGltZUZsYWdzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmNmI0NDA2NDU2MGQ1MGU2Mzc4OGNkMzdhMTJkOGE1
YzA4NDZiMmNhLi5lZDIzYmRhOGM2ZjFlYjAwNTk5NmE4NzRkYjAyYTRjMTRjNDdhMmNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTExMTgzLDkgKzExMTgz
LDkgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnNob3VsZEVuYWJsZUNhcHRpdmVQb3J0YWxNb2RlKCkg
Y29uc3QKICAgICByZXR1cm4gbV9jb25maWd1cmF0aW9uLT5jYXB0aXZlUG9ydGFsTW9kZUVuYWJs
ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmludGVyYWN0YWJsZVJlZ2lvbnNJblJvb3RW
aWV3Q29vcmRpbmF0ZXMoRmxvYXRSZWN0IHJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPEZsb2F0UmVjdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6
OmludGVyYWN0aW9uUmVnaW9ucyhGbG9hdFJlY3QgcmVjdEluQ29udGVudENvb3JkaW5hdGVzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxJbnRlcmFjdGlvblJlZ2lvbj4pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZTo6SW50ZXJhY3RhYmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRlcyhyZWN0KSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6SW50ZXJhY3Rpb25SZWdpb25zKHJlY3RJbkNvbnRlbnRDb29yZGluYXRlcyksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwOTRiNDU1NjQxYWRmNGQ0ZjI0
ZTRlN2I0YTRjNGJlYTcwZGMxYWFmLi5kNGU0ODRmZGIzYTA0MjdlNmM4YjA2MzdhMzQ0ODc3Y2Nl
MDllNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjk5LDYg
KzI5OSw3IEBAIHN0cnVjdCBFbGVtZW50Q29udGV4dDsKIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxz
Owogc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3M7CiBzdHJ1Y3QgR2xvYmFsV2luZG93SWRlbnRp
ZmllcjsKK3N0cnVjdCBJbnRlcmFjdGlvblJlZ2lvbjsKIHN0cnVjdCBMaW5rSWNvbjsKIHN0cnVj
dCBNZWRpYVN0cmVhbVJlcXVlc3Q7CiBzdHJ1Y3QgTWVkaWFVc2FnZUluZm87CkBAIC0yMDc1LDcg
KzIwNzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGFzc2lmeU1vZGFsQ29udGFpbmVyQ29udHJv
bHMoVmVjdG9yPFN0cmluZz4mJiB0ZXh0cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
V2ViQ29yZTo6TW9kYWxDb250YWluZXJDb250cm9sVHlwZT4mJik+JiYpOwogICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTW9kYWxDb250YWluZXIoT3B0aW9uU2V0PFdlYkNvcmU6Ok1vZGFsQ29udGFp
bmVyQ29udHJvbFR5cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1vZGFsQ29u
dGFpbmVyRGVjaXNpb24pPiYmKTsKIAotICAgIHZvaWQgaW50ZXJhY3RhYmxlUmVnaW9uc0luUm9v
dFZpZXdDb29yZGluYXRlcyhXZWJDb3JlOjpGbG9hdFJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4pPiYmKTsKKyAgICB2b2lkIGludGVyYWN0aW9u
UmVnaW9ucyhXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdEluQ29udGVudENvb3JkaW5hdGVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbj4pPiYm
KTsKIAogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQ
cm94eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4
IGUzOWYzNTY2OWUwOTMyODk5Y2Q4MjU0M2RjMTdmMzkwNGI4ZDgzZmYuLmJlNjVlMGQxMDM1YzMz
MWU5NjY1MmRmNTI3MGZkNGI2OGNmODEwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtOTk0NSwxMCAr
OTk0NSwxMCBAQCAtICh2b2lkKXBvc2l0aW9uSW5mb3JtYXRpb25Gb3JIb3ZlclBsYXR0ZXI6KFdL
SG92ZXJQbGF0dGVyICopaG92ZXJQbGF0dGVyIHdpdGhSZQogICAgIFtzZWxmIGRvQWZ0ZXJQb3Np
dGlvbkluZm9ybWF0aW9uVXBkYXRlOmNvbXBsZXRpb25IYW5kbGVyIGZvclJlcXVlc3Q6cmVxdWVz
dF07CiB9CiAKLS0gKHZvaWQpaW50ZXJhY3RhYmxlUmVnaW9uc0ZvckhvdmVyUGxhdHRlcjooV0tI
b3ZlclBsYXR0ZXIgKilwbGF0dGVyIGluUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KXJlY3QgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+KSljb21w
bGV0aW9uSGFuZGxlcgorLSAodm9pZClpbnRlcmFjdGlvblJlZ2lvbnNGb3JIb3ZlclBsYXR0ZXI6
KFdLSG92ZXJQbGF0dGVyICopcGxhdHRlciBpblJlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdClyZWN0
SW5Db250ZW50Q29vcmRpbmF0ZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFZlY3RvcjxX
ZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbj4pKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgX3Bh
Z2UtPmludGVyYWN0YWJsZVJlZ2lvbnNJblJvb3RWaWV3Q29vcmRpbmF0ZXMocmVjdCwgW2NvbXBs
ZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFZlY3RvcjxX
ZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3RzKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
Y3RzKTsKKyAgICBfcGFnZS0+aW50ZXJhY3Rpb25SZWdpb25zKHJlY3RJbkNvbnRlbnRDb29yZGlu
YXRlcywgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0gKFZlY3RvcjxXZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbj4gcmVnaW9ucykgeworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihyZWdpb25zKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIuaAppbmRleCBjZGJiZDgwMDZjNzUwMDUw
YjUxZjE2ZjMyOTRiODUyMDljMjdjMjUyLi43Y2Y0MjMxMDFjYjA0NDBjYWJmMjVmMWFkMGFhZDMw
YzE4NTMwMWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3Zl
clBsYXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0
ZXIuaApAQCAtMjksNiArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGbG9h
dFJlY3Q7CitzdHJ1Y3QgSW50ZXJhY3Rpb25SZWdpb247CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNDQsNyArNDUsNyBAQCBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Q7
CiBAcmVxdWlyZWQKIC0gKHZvaWQpcG9zaXRpb25JbmZvcm1hdGlvbkZvckhvdmVyUGxhdHRlcjoo
V0tIb3ZlclBsYXR0ZXIgKilob3ZlclBsYXR0ZXIgd2l0aFJlcXVlc3Q6KFdlYktpdDo6SW50ZXJh
Y3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24pKWNvbXBsZXRpb25I
YW5kbGVyOwogCi0tICh2b2lkKWludGVyYWN0YWJsZVJlZ2lvbnNGb3JIb3ZlclBsYXR0ZXI6KFdL
SG92ZXJQbGF0dGVyICopaG92ZXJQbGF0dGVyIGluUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KXJl
Y3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+
KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpaW50ZXJhY3Rpb25SZWdpb25zRm9ySG92ZXJQ
bGF0dGVyOihXS0hvdmVyUGxhdHRlciAqKWhvdmVyUGxhdHRlciBpblJlY3Q6KFdlYkNvcmU6OkZs
b2F0UmVjdClyZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKFZlY3RvcjxXZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbj4pKWNvbXBsZXRpb25IYW5kbGVy
OwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hv
dmVyUGxhdHRlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRl
ci5tbQppbmRleCA0MDQyNjA1MTYyYjc5MTNiODk1YTUxMzgzNWEzMTIxOWYwZTE3ZTgxLi5hNzk5
NWM0Y2E4YjJlNTc0ZGVmZDYzODFiYzgxNjIyOTZhYjg4MTMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyLm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNp
bXBvcnQgIldLSG92ZXJQbGF0dGVyUGFyYW1ldGVycy5oIgogI2ltcG9ydCA8VUlLaXQvVUlLaXQu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvSW50ZXJhY3Rpb25SZWdpb24uaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGF0aFV0aWxpdGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlQ0FMYXllckV4dHJh
cy5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CkBAIC0yNDcsMTUg
KzI0OCwxNyBAQCAtICh2b2lkKXVwZGF0ZURlYnVnSW5kaWNhdG9yCiAgICAgW2xpbmtIaWdobGln
aHRMYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwogICAgIFtbX3ZpZXcgbGF5ZXJdIGFkZFN1
YmxheWVyOmxpbmtIaWdobGlnaHRMYXllci5nZXQoKV07CiAKLSAgICBbX2RlbGVnYXRlIGludGVy
YWN0YWJsZVJlZ2lvbnNGb3JIb3ZlclBsYXR0ZXI6c2VsZiBpblJlY3Q6c2VhcmNoQm91bmRpbmdS
ZWN0IGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbc2VsZiwgc3Ryb25nU2VsZiA9IHJl
dGFpblB0cihzZWxmKV0gKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3RzKSB7CisgICAg
W19kZWxlZ2F0ZSBpbnRlcmFjdGlvblJlZ2lvbnNGb3JIb3ZlclBsYXR0ZXI6c2VsZiBpblJlY3Q6
c2VhcmNoQm91bmRpbmdSZWN0IGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbc2VsZiwg
c3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKFZlY3RvcjxXZWJDb3JlOjpJbnRlcmFjdGlv
blJlZ2lvbj4gcmVnaW9ucykgewogICAgICAgICBpZiAoIV9saW5rQ291bnRMYXllciAmJiAhX2xp
bmtIaWdobGlnaHRMYXllcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBbX2xpbmtD
b3VudExheWVyIHNldFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiV6dSIsIHJl
Y3RzLnNpemUoKV1dOworICAgICAgICBbX2xpbmtDb3VudExheWVyIHNldFN0cmluZzpbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIiV6dSIsIHJlZ2lvbnMuc2l6ZSgpXV07CiAKICAgICAgICAg
V2ViQ29yZTo6UGF0aCBwYXRoOwotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHJlY3QgOiByZWN0
cykKLSAgICAgICAgICAgIHBhdGguYWRkUmVjdChyZWN0KTsKKyAgICAgICAgZm9yIChjb25zdCBh
dXRvJiByZWdpb24gOiByZWdpb25zKSB7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHJl
Y3QgOiByZWdpb24ucmVjdHNJbkNvbnRlbnRDb29yZGluYXRlcykKKyAgICAgICAgICAgICAgICBw
YXRoLmFkZFJlY3QocmVjdCk7CisgICAgICAgIH0KICAgICAgICAgW19saW5rSGlnaGxpZ2h0TGF5
ZXIgc2V0UGF0aDpwYXRoLnBsYXRmb3JtUGF0aCgpXTsKICAgICB9KS5nZXQoKV07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzhlY2IzY2M3
OWJmNDBiMDZmNGY3Zjk2M2JkMjMzNGY3YmFjMzg5NC4uNGI3NjViMDhmMmNhYzFiNDRlYTZmODM1
ZmU4NjNkMmQyZTZlMGRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTYzMDQsNDEgKzYzMDQsOSBAQCB2b2lkIFdlYlBhZ2U6OmNhbmNlbGVk
Q29tcG9zaXRpb24oKQogICAgIHNlbmRFZGl0b3JTdGF0ZVVwZGF0ZSgpOwogfQogCi12b2lkIFdl
YlBhZ2U6OmludGVyYWN0YWJsZVJlZ2lvbnNJblJvb3RWaWV3Q29vcmRpbmF0ZXMoRmxvYXRSZWN0
IHJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPEZsb2F0UmVjdD4pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjppbnRlcmFjdGlvblJlZ2lvbnMoRmxvYXRSZWN0
IHJlY3RJbkNvbnRlbnRDb29yZGluYXRlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
SW50ZXJhY3Rpb25SZWdpb24+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZWYgZnJh
bWUobV9wYWdlLT5tYWluRnJhbWUoKSk7Ci0KLSAgICBpZiAoUmVmUHRyIGZyYW1lVmlldyA9IGZy
YW1lLT52aWV3KCkpCi0gICAgICAgIGZyYW1lVmlldy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5l
ZWRlZFJlY3Vyc2l2ZSgpOwotCi0gICAgYXV0byByZXN1bHQgPSBIaXRUZXN0UmVzdWx0IHsgTGF5
b3V0UmVjdChyZWN0KSB9OwotICAgIFJlZlB0ciBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgp
OwotICAgIGlmICghZG9jdW1lbnQpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3Qoewot
ICAgICAgICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksCi0gICAgICAgIEhpdFRlc3RS
ZXF1ZXN0OjpUeXBlOjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHksCi0gICAgICAg
IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpDb2xsZWN0TXVsdGlwbGVFbGVtZW50cwotICAgIH0pOwot
ICAgIGRvY3VtZW50LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7Ci0KLSAgICBWZWN0b3I8Rmxv
YXRSZWN0PiByZWN0czsKLQotICAgIGZvciAoY29uc3QgYXV0byYgbm9kZSA6IHJlc3VsdC5saXN0
QmFzZWRUZXN0UmVzdWx0KCkpIHsKLSAgICAgICAgaWYgKCFpczxFbGVtZW50Pihub2RlLmdldCgp
KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvJiBlbGVtZW50ID0gZG93bmNh
c3Q8RWxlbWVudD4obm9kZS5nZXQoKSk7Ci0KLSAgICAgICAgaWYgKCFub2RlLT53aWxsUmVzcG9u
ZFRvTW91c2VDbGlja0V2ZW50cygpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
cmVjdHMuYXBwZW5kKGVsZW1lbnQuYm91bmRpbmdCb3hJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSk7
Ci0gICAgfQotCi0gICAgY29tcGxldGlvbkhhbmRsZXIocmVjdHMpOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdlYkNvcmU6OmludGVyYWN0aW9uUmVnaW9ucygqbV9wYWdlLCByZWN0SW5Db250ZW50
Q29vcmRpbmF0ZXMpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzZXRBbHdheXNTaG93c0hvcml6b250
YWxTY3JvbGxlcihib29sIGFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDZhZWYyMGRlZjMwYzA2OTI2
MTZlYzgwNTI2NDBhNDIzODE3ZDRkMzMuLjBmZWI3YWQ2YjFhNWNkNTc5N2MzYjlhMzc5NDgyOWNl
YTdiNjEyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTI1Miw2ICsyNTIsNyBAQCBzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7CiBzdHJ1Y3Qg
RWxlbWVudENvbnRleHQ7CiBzdHJ1Y3QgR2xvYmFsRnJhbWVJZGVudGlmaWVyOwogc3RydWN0IEds
b2JhbFdpbmRvd0lkZW50aWZpZXI7CitzdHJ1Y3QgSW50ZXJhY3Rpb25SZWdpb247CiBzdHJ1Y3Qg
S2V5cHJlc3NDb21tYW5kOwogc3RydWN0IE1lZGlhVXNhZ2VJbmZvOwogc3RydWN0IFByb21pc2Vk
QXR0YWNobWVudEluZm87CkBAIC05NDMsNyArOTQ0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
VXBkYXRlQ29tcG9zaXRpb24oKTsKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rp
b25DaGFuZ2VzKCk7CiAKLSAgICB2b2lkIGludGVyYWN0YWJsZVJlZ2lvbnNJblJvb3RWaWV3Q29v
cmRpbmF0ZXMoV2ViQ29yZTo6RmxvYXRSZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxXZWJDb3JlOjpGbG9hdFJlY3Q+KT4mJik7CisgICAgdm9pZCBpbnRlcmFjdGlvblJlZ2lvbnMo
V2ViQ29yZTo6RmxvYXRSZWN0IHJlY3RJbkNvbnRlbnRDb29yZGluYXRlcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdpb24+KT4mJik7CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxp
dHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCmluZGV4IDgwZTFhNDA5MGVlMGUzZTg3YTYzYTUzY2E0NTczMDMzODA3MWJm
MGMuLjRiNTJiOWY3Nzk0NWQzOWIwYzY4NzQ1NjA3MjljN2NkYjRlMTllZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpA
QCAtNjczLDUgKzY3Myw1IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1
aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICAgICBTY3JvbGxU
b1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdldFJlY3QsIFdlYkNvcmU6OkZsb2F0UG9pbnQg
b3JpZ2luKQogCi0gICAgSW50ZXJhY3RhYmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRlcyhX
ZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJl
Y3RzKQorICAgIEludGVyYWN0aW9uUmVnaW9ucyhXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdEluQ29u
dGVudENvb3JkaW5hdGVzKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uPiBy
ZWdpb25zKQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDJmNzY4M2U1YTE4YzAzNmJhNzg1MzU1MTQxMTU3MTQ0ODhjYWRhODMuLjYwY2E5NWU3
YjJmZDc5YzJjYzZmNDM5NDI5OWY5MDJjZTliMDU4MmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wMy0yMSAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBk
ZWJ1ZyBvdmVybGF5IGZvciBpbnRlcmFjdGlvbiByZWdpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgxODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9TZXR0aW5nc0Nv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVy
Lm06CisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciBfcG9wdWxhdGVNZW51XSk6CisgICAg
ICAgICgtW1NldHRpbmdzQ29udHJvbGxlciBpbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXlWaXNpYmxl
XSk6CisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciBwcmVmZXJlbmNlS2V5Rm9yUmVnaW9u
T3ZlcmxheVRhZzpdKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgZGlk
Q2hhbmdlU2V0dGluZ3NdKToKKyAgICAgICAgQWRkIGEgc3dpdGNoIGZvciB0aGUgbmV3IGRlYnVn
IG92ZXJsYXkgaW4gTWluaUJyb3dzZXIuCisKIDIwMjItMDMtMjEgIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIEdyYXBoaWNz
Q29udGV4dFN0YXRlIGtlZXAgdHJhY2sgb2YgY2hhbmdlcyB0aWxsIHRoZXkgYXJlIGFwcGxpZWQK
ZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIuaCBi
L1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIuaAppbmRleCA0OTg1NzUw
ZWYyNWMxYzkyYjcwN2IzMTNjZTIwYWE1ZjNjZGFjZjVmLi45NTQ4YTJiMzgyOTVkYzdkMDVlMjkx
ZmU0NTI1YWU5ODZkNDk2MTJlIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0
dGluZ3NDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29u
dHJvbGxlci5oCkBAIC00Myw2ICs0Myw3IEBAIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSwgZ2V0dGVyPWlzU3BhY2VSZXNlcnZlZEZvckJhbm5lcnMpIEJPT0wgc3BhY2VSZXNlCiBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgcmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNp
YmxlOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIG5vbkZhc3RTY3JvbGxh
YmxlUmVnaW9uT3ZlcmxheVZpc2libGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IEJPT0wgd2hlZWxFdmVudEhhbmRsZXJSZWdpb25PdmVybGF5VmlzaWJsZTsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBpbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXlWaXNpYmxl
OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIHVzZVVJU2lkZUNvbXBvc2l0
aW5nOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIHBlcldpbmRvd1dlYlBy
b2Nlc3Nlc0Rpc2FibGVkOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGFj
Y2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQ7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9t
YWMvU2V0dGluZ3NDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3ND
b250cm9sbGVyLm0KaW5kZXggODRiZDFhOGVmMGZhMTZhYzM4NDJlZDRiN2NiOTU4OGE0ZDA3NTNh
ZC4uNWY3MWJhZjBmZjJlMjQyN2RjMjIxZGRkZWE3ZGIxNWNiMGFlZGNmZCAxMDA2NDQKLS0tIGEv
VG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01p
bmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubQpAQCAtNTcsNiArNTcsNyBAQAogCiBz
dGF0aWMgTlNTdHJpbmcgKiBjb25zdCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXlWaXNp
YmxlUHJlZmVyZW5jZUtleSA9IEAiTm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5VmlzaWJs
ZSI7CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXaGVlbEV2ZW50SGFuZGxlclJlZ2lvbk92ZXJs
YXlWaXNpYmxlUHJlZmVyZW5jZUtleSA9IEAiV2hlZWxFdmVudEhhbmRsZXJSZWdpb25PdmVybGF5
VmlzaWJsZSI7CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJs
YXlWaXNpYmxlUHJlZmVyZW5jZUtleSA9IEAiSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5VmlzaWJs
ZSI7CiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVzZVRyYW5zcGFyZW50V2luZG93c1ByZWZl
cmVuY2VLZXkgPSBAIlVzZVRyYW5zcGFyZW50V2luZG93cyI7CiBzdGF0aWMgTlNTdHJpbmcgKiBj
b25zdCBVc2VQYWdpbmF0ZWRNb2RlUHJlZmVyZW5jZUtleSA9IEAiVXNlUGFnaW5hdGVkTW9kZSI7
CkBAIC03Nyw2ICs3OCw3IEBACiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBEZWJ1Z092ZXJ5
bGF5TWVudUl0ZW1UYWcpIHsKICAgICBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXlUYWcg
PSAxMDAsCiAgICAgV2hlZWxFdmVudEhhbmRsZXJSZWdpb25PdmVybGF5VGFnLAorICAgIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheVRhZywKICAgICBFeHBlcmltZW50YWxGZWF0dXJlVGFnLAogICAg
IEludGVybmFsRGVidWdGZWF0dXJlVGFnLAogfTsKQEAgLTE5NSw2ICsxOTcsMTIgQEAgLSAodm9p
ZClfcG9wdWxhdGVNZW51CiAgICAgW3doZWVsRXZlbnRIYW5kbGVyUmVnaW9uSXRlbSBzZXRUYWc6
V2hlZWxFdmVudEhhbmRsZXJSZWdpb25PdmVybGF5VGFnXTsKICAgICBbd2hlZWxFdmVudEhhbmRs
ZXJSZWdpb25JdGVtIHNldFRhcmdldDpzZWxmXTsKICAgICBbZGVidWdPdmVybGF5c01lbnUgYWRk
SXRlbTpbd2hlZWxFdmVudEhhbmRsZXJSZWdpb25JdGVtIGF1dG9yZWxlYXNlXV07CisKKyAgICBO
U01lbnVJdGVtICppbnRlcmFjdGlvblJlZ2lvbkl0ZW0gPSBbW05TTWVudUl0ZW0gYWxsb2NdIGlu
aXRXaXRoVGl0bGU6QCJJbnRlcmFjdGlvbiBSZWdpb24iIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xl
RGVidWdPdmVybGF5Oikga2V5RXF1aXZhbGVudDpAIiJdOworICAgIFtpbnRlcmFjdGlvblJlZ2lv
bkl0ZW0gc2V0VGFnOkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheVRhZ107CisgICAgW2ludGVyYWN0
aW9uUmVnaW9uSXRlbSBzZXRUYXJnZXQ6c2VsZl07CisgICAgW2RlYnVnT3ZlcmxheXNNZW51IGFk
ZEl0ZW06W2ludGVyYWN0aW9uUmVnaW9uSXRlbSBhdXRvcmVsZWFzZV1dOworCiAgICAgW2RlYnVn
T3ZlcmxheXNNZW51IHJlbGVhc2VdOwogICAgIAogICAgIFtfbWVudSBhZGRJdGVtOmRlYnVnT3Zl
cmxheXNTdWJtZW51SXRlbV07CkBAIC03MTEsNiArNzE5LDExIEBAIC0gKEJPT0wpd2hlZWxFdmVu
dEhhbmRsZXJSZWdpb25PdmVybGF5VmlzaWJsZQogICAgIHJldHVybiBbW05TVXNlckRlZmF1bHRz
IHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OldoZWVsRXZlbnRIYW5kbGVyUmVnaW9u
T3ZlcmxheVZpc2libGVQcmVmZXJlbmNlS2V5XTsKIH0KIAorLSAoQk9PTClpbnRlcmFjdGlvblJl
Z2lvbk92ZXJsYXlWaXNpYmxlCit7CisgICAgcmV0dXJuIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRh
cmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5VmlzaWJs
ZVByZWZlcmVuY2VLZXldOworfQorCiAtIChOU1N0cmluZyAqKXByZWZlcmVuY2VLZXlGb3JSZWdp
b25PdmVybGF5VGFnOihOU1VJbnRlZ2VyKXRhZwogewogICAgIHN3aXRjaCAodGFnKSB7CkBAIC03
MTksNiArNzMyLDkgQEAgLSAoTlNTdHJpbmcgKilwcmVmZXJlbmNlS2V5Rm9yUmVnaW9uT3Zlcmxh
eVRhZzooTlNVSW50ZWdlcil0YWcKIAogICAgIGNhc2UgV2hlZWxFdmVudEhhbmRsZXJSZWdpb25P
dmVybGF5VGFnOgogICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsZXJSZWdpb25PdmVybGF5
VmlzaWJsZVByZWZlcmVuY2VLZXk7CisKKyAgICBjYXNlIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eVRhZzoKKyAgICAgICAgcmV0dXJuIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheVZpc2libGVQcmVm
ZXJlbmNlS2V5OwogICAgIH0KICAgICByZXR1cm4gbmlsOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
TWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQppbmRleCA1YTE4MjFiMDAz
YTgxNzZhNjNmMGI0OTVjNWU1NGUzNDc1NTU3ZGMwLi4xZDcwYmYxZTJlN2FkMzFmNzVjY2ZhMTEy
NDk5OTZiOThlMmYzMjMxIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJv
d3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJv
d3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtNTE5LDYgKzUxOSw4IEBAIC0gKHZvaWQpZGlkQ2hh
bmdlU2V0dGluZ3MKICAgICAgICAgdmlzaWJsZU92ZXJsYXlSZWdpb25zIHw9IF9XS05vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uOwogICAgIGlmIChzZXR0aW5ncy53aGVlbEV2ZW50SGFuZGxlclJlZ2lv
bk92ZXJsYXlWaXNpYmxlKQogICAgICAgICB2aXNpYmxlT3ZlcmxheVJlZ2lvbnMgfD0gX1dLV2hl
ZWxFdmVudEhhbmRsZXJSZWdpb247CisgICAgaWYgKHNldHRpbmdzLmludGVyYWN0aW9uUmVnaW9u
T3ZlcmxheVZpc2libGUpCisgICAgICAgIHZpc2libGVPdmVybGF5UmVnaW9ucyB8PSBfV0tJbnRl
cmFjdGlvblJlZ2lvbjsKICAgICAKICAgICBwcmVmZXJlbmNlcy5fdmlzaWJsZURlYnVnT3Zlcmxh
eVJlZ2lvbnMgPSB2aXNpYmxlT3ZlcmxheVJlZ2lvbnM7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456285</attachid>
            <date>2022-03-31 14:45:30 -0700</date>
            <delta_ts>2022-03-31 19:43:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238187-20220331144529.patch</filename>
            <type>text/plain</type>
            <size>64326</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDkxODcwNjJjYzkwODhh
YmNhNmQyNWQzNmQ0NjI5MzJlZWQ2MWE3Ni4uNDY5NTM1ZjU1OGNmYzQ2MTk5MDU5ZmFmNzgwMjA5
OTVjNGRiMGU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIyLTAzLTIxICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGRlYnVn
IG92ZXJsYXkgZm9yIGludGVyYWN0aW9uIHJlZ2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODE4NworCisgICAgICAgIFJldmlld2VkIGJ5IFdl
bnNvbiBIc2llaC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjp3aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMpOgorICAgICAgICAq
IGRvbS9Ob2RlLmg6CisgICAgICAgIEV4cG9zZSBgd2lsbFJlc3BvbmRUb1RvdWNoRXZlbnRzYCwg
c2ltaWxhciB0byBgd2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50c2AuCisKKyAgICAgICAgKiBw
YWdlL0RlYnVnT3ZlcmxheVJlZ2lvbnMuaDoKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJs
YXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dXBk
YXRlUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhzRm9yUmVnaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6YWN0aXZlUmVnaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRyYXdDaGVja2JveCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcmFjdGlv
blJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnZhbHVlRm9yU2V0dGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdTZXR0aW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWdpb25PdmVybGF5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVi
dWdQYWdlT3ZlcmxheXM6OnVwZGF0ZU92ZXJsYXlSZWdpb25WaXNpYmlsaXR5KToKKyAgICAgICAg
KiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmg6CisgICAgICAgIChXZWJDb3JlOjpEZWJ1Z1BhZ2VP
dmVybGF5czo6ZGlkTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkRlYnVnUGFnZU92ZXJsYXlz
OjpkaWRDaGFuZ2VFdmVudEhhbmRsZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkRlYnVnUGFnZU92
ZXJsYXlzOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKToKKyAgICAgICAgQWRkIGFuIG92ZXJsYXkg
Zm9yIGluZGljYXRpbmcgaW50ZXJhY3Rpb24gcmVnaW9ucy4KKworICAgICAgICAqIHBhZ2UvRnJh
bWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVDb250YWluc0NvbXBs
ZXhCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmVzdGltYXRlZEJhY2tncm91bmRDb2xv
ckZvclJhbmdlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lU25hcHNob3R0aW5nLmg6CisgICAgICAg
ICogcGFnZS9UZXh0SW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlQ29udGFp
bnNDb21wbGV4QmFja2dyb3VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjplc3RpbWF0
ZWRCYWNrZ3JvdW5kQ29sb3JGb3JSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIE1vdmUgYGVzdGlt
YXRlZEJhY2tncm91bmRDb2xvckZvclJhbmdlYCBmcm9tIFRleHRJbmRpY2F0b3IgdG8KKyAgICAg
ICAgRnJhbWVTbmFwc2hvdHRpbmcgZm9yIGVhc2Ugb2YgcmV1c2UuCisgICAgICAgIAorICAgICAg
ICAqIHBhZ2UvSW50ZXJhY3Rpb25SZWdpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OmFic29sdXRlQm91bmRpbmdSZWN0Rm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cmVnaW9u
Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpjdXJzb3JUeXBlRm9yRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjppbnRlcmFjdGlvblJlZ2lvbnMpOgorICAgICAgICAqIHBhZ2UvSW50
ZXJhY3Rpb25SZWdpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcmFjdGlvblJl
Z2lvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9u
OjpkZWNvZGUpOgorICAgICAgICBBZGQgSW50ZXJhY3Rpb25SZWdpb24sIHdoaWNoIGtlZXBzIHRy
YWNrIG9mIHRoZSBsb2NhdGlvbiBvZiBhbmQgbWV0YWRhdGEKKyAgICAgICAgYWJvdXQgaW50ZXJh
Y3Rpb24gcmVnaW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFNpemU6Om1pbkRpbWVuc2lvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRTaXplOjptYXhEaW1lbnNpb24gY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpS
b3VuZGVkUmVjdDo6UmFkaWk6Om1pbmltdW1SYWRpdXMgY29uc3QpOgorICAgICAgICBBZGQgbWlu
aW11bVJhZGl1cygpIHRvIFJhZGlpLgorCiAyMDIyLTAzLTMwICBBbGFuIEJ1anRhcyAgPHphbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ1NTIGNvbnRhaW5dIENvbnRhaW5tZW50IGRpc2FibGVz
IHRoZSBzcGVjaWFsIGhhbmRsaW5nIG9mIHRoZSBIVE1MIGJvZHkgZWxlbWVudCBmb3Igb3ZlcmZs
b3cgdmlld3BvcnQgcHJvcGFnYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVkMTJhMWYzZjAwMGRmZDY3YzA5
ODk2Y2RmY2M4YWY3MjFkZTBjZDIuLjA4YjU3YzI5MTNjY2ExNjkwYzIwZTI2ODFlZTliN2YxYWU3
ZDZkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjItMDMtMjEgIFRpbSBIb3J0b24g
IDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgZGVidWcgb3Zlcmxh
eSBmb3IgaW50ZXJhY3Rpb24gcmVnaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhz
aWVoLgorCisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1h
dFJlYWRlci5jcHA6CisgICAgICAgIFVuaWZpZWQgc291cmNlIGZpeGVzLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAgICBBZGQg
cGx1bWJpbmcgZm9yIGEgbmV3IGRlYnVnIG92ZXJsYXkuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnRlcmFj
dGlvblJlZ2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmludGVyYWN0YWJs
ZVJlZ2lvbnNJblJvb3RWaWV3Q29vcmRpbmF0ZXMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBpbnRlcmFjdGlvblJl
Z2lvbnNGb3JIb3ZlclBsYXR0ZXI6aW5SZWN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGludGVyYWN0YWJsZVJlZ2lvbnNGb3JIb3ZlclBsYXR0ZXI6aW5S
ZWN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV0tIb3ZlclBsYXR0ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0
dGVyLm1tOgorICAgICAgICAoLVtXS0hvdmVyUGxhdHRlciB1cGRhdGVEZWJ1Z0luZGljYXRvcl0p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6aW50ZXJhY3Rpb25SZWdpb25zKToKKyAgICAgICAgTW92ZSBpbnRlcmFj
dGlvblJlZ2lvbnMoKSBmcm9tIFdlYlBhZ2UgdG8gV2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdpb24u
CisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW50ZXJhY3RhYmxlUmVnaW9uc0luUm9vdFZp
ZXdDb29yZGluYXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bjoKKwogMjAyMi0wMy0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVzZSBkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBFX1NJR05B
TCwgU0lHVEVSTSkgaW4gc2V0T1NUcmFuc2FjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA0
MDVmNjc0ZjBiMzg2YWUxYjE3YzIxZGVmZDNmMzJlNjRiZTEzMDdlLi5lMjQ0NTc4NmJiZjYxM2U3
ZDU3NzYzMjllZTEyOTc2OGNlOGE1M2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTExMjcsNiAr
MTEyNyw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwYWdl
L0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCiAgICAgcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVy
LmgKICAgICBwYWdlL0ltYWdlQW5hbHlzaXNRdWV1ZS5oCisgICAgcGFnZS9JbnRlcmFjdGlvblJl
Z2lvbi5oCiAgICAgcGFnZS9MYXlvdXRNaWxlc3RvbmUuaAogICAgIHBhZ2UvTWVkaWFDYW5TdGFy
dExpc3RlbmVyLmgKICAgICBwYWdlL01lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0uaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAppbmRleCBjOTQyMGY1ZDQ2OWFkYTI2NDNkMGY2ZjdmYTAxODc0YWYzN2UwNTU0Li41
YjAzYjM0MzRhMWY2ZDY4MDA1NzhiMjIzNWMzY2MxMDg0MjM3NDdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApA
QCAtMTc1Myw2ICsxNzUzLDcgQEAgcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAogcGFn
ZS9IaXN0b3J5LmNwcAogcGFnZS9JbWFnZUFuYWx5c2lzUXVldWUuY3BwCiBwYWdlL0ltYWdlT3Zl
cmxheUNvbnRyb2xsZXIuY3BwCitwYWdlL0ludGVyYWN0aW9uUmVnaW9uLmNwcAogcGFnZS9JbnRl
cnNlY3Rpb25PYnNlcnZlci5jcHAKIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5jcHAK
IHBhZ2UvTG9jYXRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWY5NTkzYjBlN2M4OGUzNGNhNWZjMzU2NzdlODVhNGNl
ZTc0OTQzMi4uMTlkOWI4NmEwN2Q2YTA3NGFlNjVkNjdkNDg5MjM5Nzk1OGZjMTUxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
ODg4LDYgKzg4OCw3IEBACiAJCTJEOUYwRTEzMTRGRjFDQkYwMEJBMEZGNyAvKiBsaW5lYXJTUkdC
LmljYyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ5
RjBFMTIxNEZGMUNCRjAwQkEwRkY3IC8qIGxpbmVhclNSR0IuaWNjICovOyB9OwogCQkyREEzOTdF
NTI2NUM3Mzc1MDA0NjhGMzMgLyogTnVsbEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBMzk3RTMyNjVDNzM3NDAwNDY4RjMz
IC8qIE51bGxHcmFwaGljc0NvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkyREFGMzQzRDFFQTdFMEYxMDAzODJDRDMgLyogQ29uc3RhbnRQ
cm9wZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkRBRjM0M0IxRUE3RTBGMTAwMzgyQ0QzIC8qIENvbnN0YW50UHJvcGVydHlNYXAuaCAqLzsg
fTsKKwkJMkRDMDVDQTgyN0Q4MDk1NjAwNEVENDAzIC8qIEludGVyYWN0aW9uUmVnaW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREMwNUNBMzI3RDdG
NkI1MDA0RUQ0MDMgLyogSW50ZXJhY3Rpb25SZWdpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyREM4RDM5ODI1RjJGRTk3MDBDRkNCQUIgLyog
TW9kZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
QzhEMzk3MjVGMkZFOTQwMENGQ0JBQiAvKiBNb2RlbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJERDVBNzI3MUVCRUU0N0QwMDlCQTU5NyAvKiBD
b21wb3NpdGlvblVuZGVybGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkRENUE3MjYxRUJFRTQ3RDAwOUJBNTk3IC8qIENvbXBvc2l0aW9uVW5kZXJs
aW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MkREODcxNEIyNjVGNDM2NjAwNUY5OTdDIC8qIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDg3MTQ5MjY1
RjQzNjUwMDVGOTk3QyAvKiBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgxNzcsNiArODE3OCw4IEBA
CiAJCTJEQUFFMzJEMTlEQ0FGNjAwMEUwMDJEMiAvKiBNb2NrUGFnZU92ZXJsYXlDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1BhZ2VPdmVybGF5Q2xpZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQUYzNDNBMUVBN0UwRjEwMDM4MkNEMyAv
KiBDb25zdGFudFByb3BlcnR5TWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvbnN0YW50UHJvcGVydHlNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyREFGMzQzQjFFQTdFMEYxMDAzODJDRDMgLyogQ29uc3RhbnRQcm9wZXJ0eU1hcC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25zdGFudFByb3BlcnR5TWFwLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEQzA1Q0EzMjdEN0Y2QjUwMDRFRDQwMyAvKiBJ
bnRlcmFjdGlvblJlZ2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcmFjdGlvblJlZ2lvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREMwNUNBNzI3RDgwMjE3MDA0RUQ0MDMgLyog
SW50ZXJhY3Rpb25SZWdpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZXJhY3Rpb25SZWdp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREM4RDM5NjI1RjJGRTkzMDBD
RkNCQUIgLyogTW9kZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kZWwuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyREM4RDM5NzI1RjJGRTk0MDBDRkNCQUIgLyogTW9kZWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTW9kZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkRENUE3MjYxRUJFRTQ3RDAwOUJBNTk3IC8qIENvbXBvc2l0aW9uVW5kZXJsaW5lLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBvc2l0aW9uVW5kZXJsaW5lLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDI3Miw2ICsyNDI3NSw4IEBACiAJCQkJRjQ2RDUz
OUQyNzNFRUNGNzAwMDlGQTgwIC8qIEltYWdlQW5hbHlzaXNRdWV1ZS5oICovLAogCQkJCUY0ODI0
MzRBMjYwQzMyRjEwMDIyNDk3QyAvKiBJbWFnZU92ZXJsYXlDb250cm9sbGVyLmNwcCAqLywKIAkJ
CQlGNDgyNDM0ODI2MEMzMkYxMDAyMjQ5N0MgLyogSW1hZ2VPdmVybGF5Q29udHJvbGxlci5oICov
LAorCQkJCTJEQzA1Q0E3MjdEODAyMTcwMDRFRDQwMyAvKiBJbnRlcmFjdGlvblJlZ2lvbi5jcHAg
Ki8sCisJCQkJMkRDMDVDQTMyN0Q3RjZCNTAwNEVENDAzIC8qIEludGVyYWN0aW9uUmVnaW9uLmgg
Ki8sCiAJCQkJMEY0NzEwRDUxREI2RkUyMjAwMkRDRUMzIC8qIEludGVyc2VjdGlvbk9ic2VydmVy
LmNwcCAqLywKIAkJCQkwRjQ3MTBENjFEQjZGRTIyMDAyRENFQzMgLyogSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXIuaCAqLywKIAkJCQkwRjQ3MTBENzFEQjZGRTIyMDAyRENFQzMgLyogSW50ZXJzZWN0aW9u
T2JzZXJ2ZXIuaWRsICovLApAQCAtMzUyOTIsNiArMzUyOTcsNyBAQAogCQkJCUE1OTNDRjhCMTg0
MDUzNTIwMEJGQ0UyNyAvKiBJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1QjgxQ0I0MUZBQTQ0NjIwMDM3RDFFNiAvKiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRjNBQkZFMEMxMzBFOURBMDAwRTdGN0QxIC8qIEluc3RydW1lbnRp
bmdBZ2VudHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEQzA1Q0E4MjdEODA5NTYwMDRFRDQwMyAv
KiBJbnRlcmFjdGlvblJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NzEwREMxREI2RkUy
MjAwMkRDRUMzIC8qIEludGVyc2VjdGlvbk9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjhCNDU3MjFEQzNGQkEzMDA0NDNDM0YgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NzEwREYxREI2RkUyMjAwMkRDRUMzIC8qIEludGVyc2Vj
dGlvbk9ic2VydmVyRW50cnkuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGQy
ZTI3ZDg0OTAxZDU1OTkyOTQ1OGM0NjdkOTFmN2Y2NGE3YjgwMzAuLjNiNmQwNTY1NmVkYmVlMDE2
NGM0N2ZmZGFlYzRiOTE1NWQzNTBiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI1MTAsNiArMjUx
MCwxMyBAQCBib29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKQogICAgIHJl
dHVybiBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpIHx8IGhh
c0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCkgfHwgaGFzRXZlbnRM
aXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNlb3V0RXZlbnQpOwogfQogCitib29sIE5vZGU6Ondp
bGxSZXNwb25kVG9Ub3VjaEV2ZW50cygpCit7CisgICAgcmV0dXJuIGV2ZW50VHlwZXMoKS5jb250
YWluc0lmKFsmXShjb25zdCBhdXRvJiB0eXBlKSB7CisgICAgICAgIHJldHVybiBldmVudE5hbWVz
KCkuaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZSwgKnRoaXMpOworICAgIH0pOworfQorCiBi
b29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKIHsKICAgICAvLyBGSVhN
RTogV2h5IGlzIHRoZSBpT1MgY29kZSBwYXRoIGRpZmZlcmVudCBmcm9tIHRoZSBub24taU9TIGNv
ZGUgcGF0aD8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDNlZGMwMzBiM2M1NjMxN2Q2Yjc0OTA4MDk1ZjA2OThl
NjU5ZTY0Y2YuLjUzYzU4ZmI3MjMwNzk0ODAxNTE3ODNmOTI3MmEwYjczMDk0NDJiYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaApAQCAtMjc1LDcgKzI3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNlbGZPckFu
Y2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0ZShib29sIGZsYWcpIHsgc2V0Tm9kZUZsYWcoTm9kZUZs
YWc6OlNlbGZPckFuY2VzdG9ySGFzRGlyQXV0bywgZmxhZyk7IH0KIAogICAgIC8vIFJldHVybnMg
dGhlIGVuY2xvc2luZyBldmVudCBwYXJlbnQgRWxlbWVudCAob3Igc2VsZikgdGhhdCwgd2hlbiBj
bGlja2VkLCB3b3VsZCB0cmlnZ2VyIGEgbmF2aWdhdGlvbi4KLSAgICBFbGVtZW50KiBlbmNsb3Np
bmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBl
bmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKTsKIAogICAgIC8vIFRoZXNlIGxvdy1sZXZl
bCBjYWxscyBnaXZlIHRoZSBjYWxsZXIgcmVzcG9uc2liaWxpdHkgZm9yIG1haW50YWluaW5nIHRo
ZSBpbnRlZ3JpdHkgb2YgdGhlIHRyZWUuCiAgICAgdm9pZCBzZXRQcmV2aW91c1NpYmxpbmcoTm9k
ZSogcHJldmlvdXMpIHsgbV9wcmV2aW91cyA9IHByZXZpb3VzOyB9CkBAIC00NTcsNiArNDU3LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRz
KCk7CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCk7CiAg
ICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZVdoZWVsRXZlbnRzKCk7CisgICAgdmly
dHVhbCBib29sIHdpbGxSZXNwb25kVG9Ub3VjaEV2ZW50cygpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdW5zaWduZWQgc2hvcnQgY29tcGFyZURvY3VtZW50UG9zaXRpb24oTm9kZSYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnT3ZlcmxheVJlZ2lvbnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRGVidWdPdmVybGF5UmVnaW9ucy5oCmluZGV4IDBmZGM4M2MzYWRhZjEw
NjI1ZDRhMjg3OTRmNjA2OTc4Njc0MzgxNjQuLmNlNjJkNDhlNjYzOTJmNjU3MGRmMTM5ZGM2NTYx
NDE0ZTczMWMxZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdPdmVybGF5
UmVnaW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdPdmVybGF5UmVnaW9ucy5o
CkBAIC0zNCw2ICszNCw3IEBAIGVudW0gY2xhc3MgRGVidWdPdmVybGF5UmVnaW9ucyA6IHVpbnQ4
X3QgewogICAgIFdoZWVsRXZlbnRIYW5kbGVyUmVnaW9uID0gMSA8PCAxLAogICAgIFRvdWNoQWN0
aW9uUmVnaW9uID0gMSA8PCAyLAogICAgIEVkaXRhYmxlRWxlbWVudFJlZ2lvbiA9IDEgPDwgMywK
KyAgICBJbnRlcmFjdGlvblJlZ2lvbiA9IDEgPDwgNCwKIH07CiAKIH0KQEAgLTQ2LDcgKzQ3LDgg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEZWJ1Z092ZXJsYXlSZWdp
b25zPiB7CiAgICAgICAgIFdlYkNvcmU6OkRlYnVnT3ZlcmxheVJlZ2lvbnM6Ok5vbkZhc3RTY3Jv
bGxhYmxlUmVnaW9uLAogICAgICAgICBXZWJDb3JlOjpEZWJ1Z092ZXJsYXlSZWdpb25zOjpXaGVl
bEV2ZW50SGFuZGxlclJlZ2lvbiwKICAgICAgICAgV2ViQ29yZTo6RGVidWdPdmVybGF5UmVnaW9u
czo6VG91Y2hBY3Rpb25SZWdpb24sCi0gICAgICAgIFdlYkNvcmU6OkRlYnVnT3ZlcmxheVJlZ2lv
bnM6OkVkaXRhYmxlRWxlbWVudFJlZ2lvbgorICAgICAgICBXZWJDb3JlOjpEZWJ1Z092ZXJsYXlS
ZWdpb25zOjpFZGl0YWJsZUVsZW1lbnRSZWdpb24sCisgICAgICAgIFdlYkNvcmU6OkRlYnVnT3Zl
cmxheVJlZ2lvbnM6OkludGVyYWN0aW9uUmVnaW9uCiAgICAgPjsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggN2IzZWM3OGYzZGFmNGE3YWMzNTc2
MzllYmJkY2I1ZTMwMjE0ZDhkNy4uMGMwNjAzODgwYjc3ZTE0M2MyNGIwNzlhNDczNGU1MTE5YzIy
MzIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI3
LDEyICsyNywxOCBAQAogI2luY2x1ZGUgIkRlYnVnUGFnZU92ZXJsYXlzLmgiCiAKICNpbmNsdWRl
ICJDb2xvckhhc2guaCIKKyNpbmNsdWRlICJDdXJzb3IuaCIKICNpbmNsdWRlICJFbGVtZW50SXRl
cmF0b3IuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWVW
aWV3LmgiCisjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKKyNpbmNsdWRlICJJbnRlcmFjdGlvblJlZ2lvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJQYWdlT3ZlcmxheS5oIgogI2luY2x1ZGUgIlBhZ2VPdmVybGF5Q29udHJvbGxlci5o
IgorI2luY2x1ZGUgIlBhdGhVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZl
bnQuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRv
ci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC01OSw4ICs2NSw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB3aWxsTW92ZVRvUGFnZShQYWdlT3ZlcmxheSYsIFBhZ2UqKSBmaW5hbDsKICAgICB2
b2lkIGRpZE1vdmVUb1BhZ2UoUGFnZU92ZXJsYXkmLCBQYWdlKikgZmluYWw7CiAgICAgdm9pZCBk
cmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmluYWw7Ci0gICAgdm9pZCBkaWRTY3JvbGxGcmFtZShQ
YWdlT3ZlcmxheSYsIEZyYW1lJikgZmluYWw7CisgICAgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVy
bGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRT
Y3JvbGxGcmFtZShQYWdlT3ZlcmxheSYsIEZyYW1lJikgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoK
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHJlZ2lvbiBjaGFuZ2VkLgpAQCAtNzQsNiArODAs
OCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX3JlZ2lvbkNoYW5nZWQgeyB0cnVlIH07CiB9Owog
CisjcHJhZ21hIG1hcmsgLSBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheQorCiBjbGFzcyBNb3VzZVdo
ZWVsUmVnaW9uT3ZlcmxheSBmaW5hbCA6IHB1YmxpYyBSZWdpb25PdmVybGF5IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPE1vdXNlV2hlZWxSZWdpb25PdmVybGF5PiBjcmVhdGUoUGFnZSYgcGFn
ZSkKQEAgLTExNSw2ICsxMjMsOCBAQCBib29sIE1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1cGRh
dGVSZWdpb24oKQogI2VuZGlmCiB9CiAKKyNwcmFnbWEgbWFyayAtIE5vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uT3ZlcmxheQorCiBjbGFzcyBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXkgZmlu
YWwgOiBwdWJsaWMgUmVnaW9uT3ZlcmxheSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxOb25G
YXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk+IGNyZWF0ZShQYWdlJiBwYWdlKQpAQCAtMjE5LDYg
KzIyOSwzMjkgQEAgdm9pZCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0
KFBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSwgR3JhcGhpY3MKICAgICBkcmF3UmVnaW9uKGNvbnRl
eHQsIG1fZXZlbnRUcmFja2luZ1JlZ2lvbnMuYXN5bmNocm9ub3VzRGlzcGF0Y2hSZWdpb24sIG1f
Y29sb3IsIGJvdW5kcyk7CiB9CiAKKyNwcmFnbWEgbWFyayAtIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheQorCitjbGFzcyBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXkgZmluYWwgOiBwdWJsaWMgUmVn
aW9uT3ZlcmxheSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxJbnRlcmFjdGlvblJlZ2lvbk92
ZXJsYXk+IGNyZWF0ZShQYWdlJiBwYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5KHBhZ2UpKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5KFBhZ2UmIHBhZ2UpCisgICAg
ICAgIDogUmVnaW9uT3ZlcmxheShwYWdlLCBDb2xvcjo6Z3JlZW4uY29sb3JXaXRoQWxwaGFCeXRl
KDEwMikpCisgICAgeworICAgIH0KKworICAgIGJvb2wgdXBkYXRlUmVnaW9uKCkgZmluYWw7Cisg
ICAgdm9pZCBkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCkgZmluYWw7CisKKyAgICB2b2lkIGRyYXdTZXR0aW5ncyhHcmFwaGlj
c0NvbnRleHQmKTsKKworICAgIGJvb2wgbW91c2VFdmVudChQYWdlT3ZlcmxheSYsIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOworCisgICAgRmxvYXRSZWN0IHJlY3RGb3JTZXR0aW5n
QXRJbmRleCh1bnNpZ25lZCk7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoY29uc3QgU3RyaW5n
Jik7CisgICAgICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdpb24+IGFjdGl2
ZVJlZ2lvbigpOworCisgICAgc3RydWN0IFNldHRpbmcgeworICAgICAgICBTdHJpbmcga2V5Owor
ICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgYm9vbCB2YWx1ZTsKKyAgICB9OyAgICAKKwor
ICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgeworICAgICAgICB7ICJjb25zdHJh
aW4iLCAiQ29uc3RyYWluIHRvIFJlZ2lvbnMiLCB0cnVlIH0sCisgICAgICAgIHsgImNsaXAiLCAi
Q2xpcCB0byBSZWdpb25zIiwgdHJ1ZSB9LAorICAgICAgICB7ICJ3YXNoIiwgIkRyYXcgV2FzaCIs
IGZhbHNlIH0sCisgICAgICAgIHsgImNvbnRleHR1YWxDb2xvciIsICJDb250ZXh0dWFsIENvbG9y
IiwgdHJ1ZSB9LAorICAgICAgICB7ICJjb250ZXh0dWFsU2l6ZSIsICJDb250ZXh0dWFsIFNpemUi
LCB0cnVlIH0sCisgICAgICAgIHsgImN1cnNvciIsICJTaG93IEN1cnNvciIsIHRydWUgfSwKKyAg
ICAgICAgeyAiaG92ZXIiLCAiQ1NTIEhvdmVyIiwgZmFsc2UgfSwKKyAgICAgICAgeyAicmVnaW9u
cyIsICJTaG93IFJlZ2lvbnMiLCBmYWxzZSB9CisgICAgfTsKKyAgICAKKyAgICBWZWN0b3I8SW50
ZXJhY3Rpb25SZWdpb24+IG1fcmVnaW9uczsKKyAgICBJbnRQb2ludCBtX21vdXNlTG9jYXRpb25J
bkNvbnRlbnRDb29yZGluYXRlczsKK307CisKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5
Ojp1cGRhdGVSZWdpb24oKQoreworICAgIG1fb3ZlcmxheS0+c2V0TmVlZHNEaXNwbGF5KCk7Cisg
ICAgbV9yZWdpb25zID0gaW50ZXJhY3Rpb25SZWdpb25zKG1fcGFnZSwgeyB7IDAsIDAgfSwgbV9w
YWdlLm1haW5GcmFtZSgpLnZpZXcoKS0+Y29udGVudHNTaXplKCkgfSk7CisgICAgCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3N0YXRpYyBWZWN0b3I8UGF0aD4gcGF0aHNGb3JSZWdpb24oY29uc3Qg
SW50ZXJhY3Rpb25SZWdpb24mIHJlZ2lvbikKK3sKKyAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0
IHBhZGRpbmcgPSAzOworICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgcmFkaXVzID0gNDsKKwor
ICAgIFZlY3RvcjxGbG9hdFJlY3Q+IHJlY3RzOworICAgIGZvciAoYXV0byByZWN0IDogcmVnaW9u
LnJlY3RzSW5Db250ZW50Q29vcmRpbmF0ZXMpIHsKKyAgICAgICAgaWYgKHJlZ2lvbi5pc0lubGlu
ZSkKKyAgICAgICAgICAgIHJlY3QuaW5mbGF0ZShwYWRkaW5nKTsKKyAgICAgICAgcmVjdHMuYXBw
ZW5kKHJlY3QpOworICAgIH0KKyAgICByZXR1cm4gUGF0aFV0aWxpdGllczo6cGF0aHNXaXRoU2hy
aW5rV3JhcHBlZFJlY3RzKHJlY3RzLCBzdGQ6Om1heChyZWdpb24uYm9yZGVyUmFkaXVzLCByYWRp
dXMpKTsKK30KKworc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJlZ2lvbj4gSW50ZXJhY3Rpb25S
ZWdpb25PdmVybGF5OjphY3RpdmVSZWdpb24oKQoreworICAgIHN0ZDo6b3B0aW9uYWw8SW50ZXJh
Y3Rpb25SZWdpb24+IGhpdFJlZ2lvbjsKKyAgICBmbG9hdCBoaXRSZWdpb25BcmVhID0gMDsKKyAg
ICAKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHJlZ2lvbiA6IG1fcmVnaW9ucykgeworICAgICAgICBm
bG9hdCBhcmVhID0gMDsKKyAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nUmVjdDsKKyAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiByZWN0IDogcmVnaW9uLnJlY3RzSW5Db250ZW50Q29vcmRpbmF0ZXMp
IHsKKyAgICAgICAgICAgIGlmIChib3VuZGluZ1JlY3QuaXNFbXB0eSgpKQorICAgICAgICAgICAg
ICAgIGJvdW5kaW5nUmVjdCA9IHJlY3Q7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgYm91bmRpbmdSZWN0LnVuaXRlKHJlY3QpOworICAgICAgICAgICAgYXJlYSArPSByZWN0LmFy
ZWEoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghYm91bmRpbmdSZWN0LmNvbnRhaW5zKG1f
bW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIGF1dG8gcGF0aHMgPSBwYXRoc0ZvclJlZ2lvbihyZWdpb24pOworICAgICAg
ICBib29sIGRpZEhpdFJlZ2lvbiA9IGZhbHNlOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBwYXRocykgeworICAgICAgICAgICAgaWYgKHBhdGguY29udGFpbnMobV9tb3VzZUxvY2F0
aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMpKSB7CisgICAgICAgICAgICAgICAgZGlkSGl0UmVnaW9u
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgaWYgKCFkaWRIaXRSZWdpb24pCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICBpZiAoYXJlYSA+IG1fcGFnZS5tYWluRnJhbWUoKS52aWV3KCktPmxh
eW91dFNpemUoKS5hcmVhKCkgLyAyKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
aWYgKGRpZEhpdFJlZ2lvbiAmJiAoIWhpdFJlZ2lvbiB8fCBhcmVhIDwgaGl0UmVnaW9uQXJlYSkp
IHsKKyAgICAgICAgICAgIGhpdFJlZ2lvbiA9IHJlZ2lvbjsKKyAgICAgICAgICAgIGhpdFJlZ2lv
bkFyZWEgPSBhcmVhOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBoaXRSZWdp
b247Cit9CisKK3N0YXRpYyB2b2lkIGRyYXdDaGVja2JveChjb25zdCBTdHJpbmcmIHRleHQsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IEZs
b2F0UmVjdCYgYm94LCBib29sIHN0YXRlKQoreworICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQg
bGluZUhlaWdodCA9IDE0OworICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgY2hlY2tib3hWZXJ0
aWNhbFBhZGRpbmcgPSAyOworICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgdGV4dEhvcml6b250
YWxQYWRkaW5nID0gNDsKKworICAgIEZsb2F0UmVjdCBjaGVja2JveFJlY3QgeyBib3gubG9jYXRp
b24oKSArIEZsb2F0U2l6ZSB7IDAsIGNoZWNrYm94VmVydGljYWxQYWRkaW5nIH0sIEZsb2F0U2l6
ZSB7IGxpbmVIZWlnaHQsIGxpbmVIZWlnaHQgfSB9OworCisgICAgVGV4dFJ1biB0ZXh0UnVuID0g
VGV4dFJ1bih0ZXh0KTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwor
ICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgYm94LmxvY2F0aW9uKCkgKyBGbG9h
dFNpemUgeyBjaGVja2JveFJlY3Qud2lkdGgoKSArIHRleHRIb3Jpem9udGFsUGFkZGluZywgbGlu
ZUhlaWdodCB9KTsKKworICAgIFBhdGggY2hlY2tib3hQYXRoOworICAgIGNoZWNrYm94UGF0aC5h
ZGRSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0IHsgY2hlY2tib3hSZWN0LCBGbG9hdFJvdW5k
ZWRSZWN0OjpSYWRpaSB7IDMgfSB9KTsKKworICAgIGlmIChzdGF0ZSkgeworICAgICAgICBjb250
ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6ZGFya0dyYXkpOworICAgICAgICBjb250ZXh0LmZpbGxQ
YXRoKGNoZWNrYm94UGF0aCk7CisgICAgfQorCisgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihD
b2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGFCeXRlKDEyNykpOworICAgIGNvbnRleHQuc2V0U3Ry
b2tlVGhpY2tuZXNzKDEpOworICAgIGNvbnRleHQuc3Ryb2tlUGF0aChjaGVja2JveFBhdGgpOwor
fQorCitGbG9hdFJlY3QgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpyZWN0Rm9yU2V0dGluZ0F0
SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgYXV0byB2aWV3U2l6ZSA9IG1fcGFnZS5tYWlu
RnJhbWUoKS52aWV3KCktPmxheW91dFNpemUoKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0
IHNldHRpbmdzV2lkdGggPSAxNTA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdCByb3dIZWln
aHQgPSAxNjsKKyAgICByZXR1cm4geworICAgICAgICBGbG9hdFBvaW50IHsgdmlld1NpemUud2lk
dGgoKSAtIHNldHRpbmdzV2lkdGggLSAxNCwgMTAgfQorICAgICAgICAgICAgKyBGbG9hdFNpemUg
eyA0LCByb3dIZWlnaHQgKiBpbmRleCArIDIgfSwKKyAgICAgICAgRmxvYXRTaXplIHsgc2V0dGlu
Z3NXaWR0aCwgcm93SGVpZ2h0IH0KKyAgICB9OworfQorCitib29sIEludGVyYWN0aW9uUmVnaW9u
T3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIHNldHRpbmcgOiBtX3NldHRpbmdzKSB7CisgICAgICAgIGlmIChuYW1lID09
IHNldHRpbmcua2V5KQorICAgICAgICAgICAgcmV0dXJuIHNldHRpbmcudmFsdWU7CisgICAgfQor
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1NldHRpbmdzKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkKK3sKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29u
dGV4dCk7CisKKyAgICBGbG9hdFJlY3QgcmVjdCA9IHJlY3RGb3JTZXR0aW5nQXRJbmRleCgwKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgbV9zZXR0aW5ncy5zaXplKCk7IGkrKykKKyAg
ICAgICAgcmVjdC51bml0ZShyZWN0Rm9yU2V0dGluZ0F0SW5kZXgoaSkpOworCisgICAgcmVjdC5l
eHBhbmQoRmxvYXRCb3hFeHRlbnQgeyA0LCA0LCA0LCA0IH0pOworCisgICAgeworICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgICAgIGNv
bnRleHQuc2V0U2hhZG93KHsgfSwgNSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBo
YSgwLjUpKTsKKyAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVj
dCB7IHJlY3QsIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpIHsgNiB9IH0sIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC44NSkpOworICAgIH0KKworICAgIEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24gZm9udERlc2NyaXB0aW9uOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1p
bHkoIkhlbHZldGljYSIpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKDEy
KTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDEyKTsKKyAgICBmb250RGVz
Y3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSg1MDApKTsKKyAgICBGb250Q2Fz
Y2FkZSBmb250KFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSwgMCwgMCk7CisgICAgZm9udC51cGRh
dGUobnVsbHB0cik7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zZXR0aW5ncy5z
aXplKCk7IGkrKykgeworICAgICAgICBjb25zdCBhdXRvJiBzZXR0aW5nID0gbV9zZXR0aW5nc1tp
XTsKKyAgICAgICAgZHJhd0NoZWNrYm94KHNldHRpbmcubmFtZSwgY29udGV4dCwgZm9udCwgcmVj
dEZvclNldHRpbmdBdEluZGV4KGkpLCBzZXR0aW5nLnZhbHVlKTsKKyAgICB9Cit9CisKK3ZvaWQg
SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQoreworICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICAKKyAgICBjb250
ZXh0LmNsZWFyUmVjdChkaXJ0eVJlY3QpOworCisgICAgaWYgKHZhbHVlRm9yU2V0dGluZygicmVn
aW9ucyIpKSB7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOworICAgICAg
ICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CisKKyAgICAgICAgZm9yIChj
b25zdCBhdXRvJiByZWdpb24gOiBtX3JlZ2lvbnMpIHsKKyAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgcmVjdCA6IHJlZ2lvbi5yZWN0c0luQ29udGVudENvb3JkaW5hdGVzKQorICAgICAgICAg
ICAgY29udGV4dC5zdHJva2VSZWN0KHJlY3QsIDIpOworICAgICAgICB9CisgICAgfQorCisgICAg
YXV0byByZWdpb24gPSBhY3RpdmVSZWdpb24oKTsKKworICAgIGlmIChyZWdpb24gfHwgIXZhbHVl
Rm9yU2V0dGluZygiY29uc3RyYWluIikpIHsKKyAgICAgICAgYXV0byBncmFkaWVudERhdGEgPSBb
Jl0gKGZsb2F0IHJhZGl1cykgeworICAgICAgICAgICAgR3JhZGllbnQ6OlJhZGlhbERhdGEgZ3Jh
ZGllbnREYXRhOworICAgICAgICAgICAgZ3JhZGllbnREYXRhLnBvaW50MCA9IG1fbW91c2VMb2Nh
dGlvbkluQ29udGVudENvb3JkaW5hdGVzOworICAgICAgICAgICAgZ3JhZGllbnREYXRhLnBvaW50
MSA9IG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzOworICAgICAgICAgICAgZ3Jh
ZGllbnREYXRhLnN0YXJ0UmFkaXVzID0gMDsKKyAgICAgICAgICAgIGdyYWRpZW50RGF0YS5lbmRS
YWRpdXMgPSByYWRpdXM7CisgICAgICAgICAgICBncmFkaWVudERhdGEuYXNwZWN0UmF0aW8gPSAx
OworICAgICAgICAgICAgcmV0dXJuIGdyYWRpZW50RGF0YTsKKyAgICAgICAgfTsKKworICAgICAg
ICBhdXRvIG1ha2VHcmFkaWVudCA9IFsmXSAoYm9vbCBoYXNMaWdodEJhY2tncm91bmQsIEdyYWRp
ZW50OjpSYWRpYWxEYXRhIGdyYWRpZW50RGF0YSkgeworICAgICAgICAgICAgYXV0byBncmFkaWVu
dCA9IEdyYWRpZW50OjpjcmVhdGUoV1RGTW92ZShncmFkaWVudERhdGEpLCB7IENvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVs
dGlwbGllZCB9KTsKKyAgICAgICAgICAgIGlmIChyZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5nKCJ3
YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpIHsKKyAgICAgICAgICAgICAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFs
cGhhKDAuNSkgfSk7CisgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEs
IGhhc0xpZ2h0QmFja2dyb3VuZCA/IENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxwaGEo
MC4wNSkgOiBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMSkgfSk7CisgICAg
ICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiKSB8fCAhdmFsdWVGb3JT
ZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xv
clN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4yKSB9KTsK
KyAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgQ29sb3IoQ29sb3I6
OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwKSB9KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6Ondo
aXRlKS5jb2xvcldpdGhBbHBoYSgwLjUpIH0pOworICAgICAgICAgICAgICAgIGdyYWRpZW50LT5h
ZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDApIH0p
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gZ3JhZGllbnQ7CisgICAgICAg
IH07CisgICAgICAgIAorICAgICAgICBjb25zdGV4cHIgZmxvYXQgZGVmYXVsdFJhZGl1cyA9IDUw
OworICAgICAgICBib29sIHNob3VsZENsaXAgPSB2YWx1ZUZvclNldHRpbmcoImNsaXAiKTsKKyAg
ICAgICAgVmVjdG9yPFBhdGg+IGNsaXBQYXRoczsKKworICAgICAgICBpZiAoc2hvdWxkQ2xpcCkK
KyAgICAgICAgICAgIGNsaXBQYXRocyA9IHBhdGhzRm9yUmVnaW9uKCpyZWdpb24pOworCisgICAg
ICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCA9ICFzaG91bGRDbGlwIHx8ICFyZWdp
b24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2giKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAi
KSk7CisKKyAgICAgICAgaWYgKHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQpIHsKKyAgICAgICAg
ICAgIGlmIChzaG91bGRDbGlwKSB7CisgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBw
YXRoIDogY2xpcFBhdGhzKSB7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZh
bHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiKSA/IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0
KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKKyAgICAgICAgICAgICAg
ICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShncmFkaWVudERh
dGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CisgICAgICAgICAgICAg
ICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6
OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOworICAgICAgICAgICAgICAgICAgICBiYWNr
ZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9y
V2l0aEFscGhhKDApIH0pOworCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdy
YWRpZW50KFdURk1vdmUoYmFja2Ryb3BHcmFkaWVudCkpOworICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LmZpbGxQYXRoKHBhdGgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6
OmNyZWF0ZShncmFkaWVudERhdGEoZGVmYXVsdFJhZGl1cyAqIDIpLCB7IENvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlw
bGllZCB9KTsKKyAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
eyAwLjEsIENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxwaGEoMC4yKSB9KTsKKyAgICAg
ICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xv
cjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOworCisgICAgICAgICAgICAgICAgY29udGV4
dC5zZXRGaWxsR3JhZGllbnQoV1RGTW92ZShiYWNrZHJvcEdyYWRpZW50KSk7CisgICAgICAgICAg
ICAgICAgY29udGV4dC5maWxsUmVjdChkaXJ0eVJlY3QpOyAgICAKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kID0gZmFsc2U7CisgICAg
ICAgIGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNv
bnRleHR1YWxDb2xvciIpKQorICAgICAgICAgICAgaGFzTGlnaHRCYWNrZ3JvdW5kID0gcmVnaW9u
LT5oYXNMaWdodEJhY2tncm91bmQ7CisKKyAgICAgICAgaWYgKHNob3VsZENsaXApIHsKKyAgICAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGNsaXBQYXRocykgeworICAgICAgICAgICAg
ICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiKSA/IDEu
NSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJh
ZGl1czsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChtYWtlR3JhZGll
bnQoaGFzTGlnaHRCYWNrZ3JvdW5kLCBncmFkaWVudERhdGEocmFkaXVzKSkpOworICAgICAgICAg
ICAgICAgIGNvbnRleHQuZmlsbFBhdGgocGF0aCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChtYWtlR3JhZGllbnQo
aGFzTGlnaHRCYWNrZ3JvdW5kLCBncmFkaWVudERhdGEoZGVmYXVsdFJhZGl1cykpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQuZmlsbFJlY3QoZGlydHlSZWN0KTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOworCisgICAgZHJhd1NldHRpbmdzKGNvbnRleHQpOwor
fQorCitib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3Zlcmxh
eSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICBhdXRv
IG1haW5GcmFtZVZpZXcgPSBtX3BhZ2UubWFpbkZyYW1lKCkudmlldygpOworCisgICAgc3RkOjpv
cHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OworCisgICAgaWYgKCF2YWx1ZUZvclNldHRpbmco
ImN1cnNvciIpKQorICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKKyAgICBlbHNl
IGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgICAgICBjdXJzb3JUb1NldCA9IHBv
aW50ZXJDdXJzb3IoKTsKKworICAgIGF1dG8gZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXMgPSBt
YWluRnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NldHRpbmdzLnNpemUoKTsgaSsrKSB7CisgICAgICAg
IGlmICghcmVjdEZvclNldHRpbmdBdEluZGV4KGkpLmNvbnRhaW5zKGV2ZW50SW5Db250ZW50c0Nv
b3JkaW5hdGVzKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjdXJzb3JUb1NldCA9
IGhhbmRDdXJzb3IoKTsKKyAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbigpID09IExlZnRCdXR0b24g
JiYgZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCkgeworICAgICAg
ICAgICAgbV9zZXR0aW5nc1tpXS52YWx1ZSA9ICFtX3NldHRpbmdzW2ldLnZhbHVlOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoY3Vyc29yVG9T
ZXQpCisgICAgICAgIG1haW5GcmFtZVZpZXctPnNldEN1cnNvcigqY3Vyc29yVG9TZXQpOworCisg
ICAgbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMgPSBldmVudEluQ29udGVudHND
b29yZGluYXRlczsKKyAgICBvdmVybGF5LnNldE5lZWRzRGlzcGxheSgpOworCisgICAgaWYgKGV2
ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25z
KCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNwcmFnbWEgbWFyayAtIFJlZ2lvbk92ZXJsYXkKKwog
UmVmPFJlZ2lvbk92ZXJsYXk+IFJlZ2lvbk92ZXJsYXk6OmNyZWF0ZShQYWdlJiBwYWdlLCBEZWJ1
Z1BhZ2VPdmVybGF5czo6UmVnaW9uVHlwZSByZWdpb25UeXBlKQogewogICAgIHN3aXRjaCAocmVn
aW9uVHlwZSkgewpAQCAtMjI2LDYgKzU1OSw4IEBAIFJlZjxSZWdpb25PdmVybGF5PiBSZWdpb25P
dmVybGF5OjpjcmVhdGUoUGFnZSYgcGFnZSwgRGVidWdQYWdlT3ZlcmxheXM6OlJlZ2lvblR5CiAg
ICAgICAgIHJldHVybiBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheTo6Y3JlYXRlKHBhZ2UpOwogICAg
IGNhc2UgRGVidWdQYWdlT3ZlcmxheXM6OlJlZ2lvblR5cGU6Ok5vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uOgogICAgICAgICByZXR1cm4gTm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5OjpjcmVh
dGUocGFnZSk7CisgICAgY2FzZSBEZWJ1Z1BhZ2VPdmVybGF5czo6UmVnaW9uVHlwZTo6SW50ZXJh
Y3Rpb25SZWdpb246CisgICAgICAgIHJldHVybiBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmNy
ZWF0ZShwYWdlKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IE1vdXNlV2hlZWxSZWdpb25PdmVybGF5OjpjcmVhdGUocGFnZSk7CkBAIC0yOTYsNiArNjMxLDgg
QEAgdm9pZCBSZWdpb25PdmVybGF5OjpyZWNvbXB1dGVSZWdpb24oKQogICAgIG1fcmVnaW9uQ2hh
bmdlZCA9IGZhbHNlOwogfQogCisjcHJhZ21hIG1hcmsgLSBEZWJ1Z1BhZ2VPdmVybGF5cworCiBE
ZWJ1Z1BhZ2VPdmVybGF5cyYgRGVidWdQYWdlT3ZlcmxheXM6OnNpbmdsZXRvbigpCiB7CiAgICAg
aWYgKCFzaGFyZWREZWJ1Z092ZXJsYXlzKQpAQCAtMzc5LDYgKzcxNiwxMSBAQCB2b2lkIERlYnVn
UGFnZU92ZXJsYXlzOjp1cGRhdGVPdmVybGF5UmVnaW9uVmlzaWJpbGl0eShQYWdlJiBwYWdlLCBP
cHRpb25TZXQ8RGVidQogICAgICAgICBzaG93UmVnaW9uT3ZlcmxheShwYWdlLCBSZWdpb25UeXBl
OjpXaGVlbEV2ZW50SGFuZGxlcnMpOwogICAgIGVsc2UKICAgICAgICAgaGlkZVJlZ2lvbk92ZXJs
YXkocGFnZSwgUmVnaW9uVHlwZTo6V2hlZWxFdmVudEhhbmRsZXJzKTsKKyAgICAKKyAgICBpZiAo
dmlzaWJsZVJlZ2lvbnMuY29udGFpbnMoRGVidWdPdmVybGF5UmVnaW9uczo6SW50ZXJhY3Rpb25S
ZWdpb24pKQorICAgICAgICBzaG93UmVnaW9uT3ZlcmxheShwYWdlLCBSZWdpb25UeXBlOjpJbnRl
cmFjdGlvblJlZ2lvbik7CisgICAgZWxzZQorICAgICAgICBoaWRlUmVnaW9uT3ZlcmxheShwYWdl
LCBSZWdpb25UeXBlOjpJbnRlcmFjdGlvblJlZ2lvbik7CiB9CiAKIHZvaWQgRGVidWdQYWdlT3Zl
cmxheXM6OnNldHRpbmdzQ2hhbmdlZChQYWdlJiBwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5oCmluZGV4IDZkMmQ4NGVhMDYzZTliNzdlNGNjODcyNjg4NTA4YWJkYzk0
NmZlZDcuLjM2ZmVjMjE4Y2NlZDAzMzQyM2ZhMjg0Y2E4Yzg2NzAyYTIzOTYxYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmgKQEAgLTQzLDggKzQzLDkgQEAgcHVibGlj
OgogICAgIGVudW0gY2xhc3MgUmVnaW9uVHlwZSB7CiAgICAgICAgIFdoZWVsRXZlbnRIYW5kbGVy
cywKICAgICAgICAgTm9uRmFzdFNjcm9sbGFibGVSZWdpb24sCisgICAgICAgIEludGVyYWN0aW9u
UmVnaW9uLAogICAgIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBOdW1iZXJPZlJl
Z2lvblR5cGVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlZ2lvblR5cGU6Ok5vbkZhc3RTY3Jv
bGxhYmxlUmVnaW9uKSArIDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBOdW1iZXJP
ZlJlZ2lvblR5cGVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlZ2lvblR5cGU6OkludGVyYWN0
aW9uUmVnaW9uKSArIDE7CiAKICAgICBzdGF0aWMgdm9pZCBkaWRMYXlvdXQoRnJhbWUmKTsKICAg
ICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VFdmVudEhhbmRsZXJzKEZyYW1lJik7CkBAIC05Myw2ICs5
NCw3IEBAIGlubGluZSB2b2lkIERlYnVnUGFnZU92ZXJsYXlzOjpkaWRMYXlvdXQoRnJhbWUmIGZy
YW1lKQogCiAgICAgc2hhcmVkRGVidWdPdmVybGF5cy0+cmVnaW9uQ2hhbmdlZChmcmFtZSwgUmVn
aW9uVHlwZTo6V2hlZWxFdmVudEhhbmRsZXJzKTsKICAgICBzaGFyZWREZWJ1Z092ZXJsYXlzLT5y
ZWdpb25DaGFuZ2VkKGZyYW1lLCBSZWdpb25UeXBlOjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbik7
CisgICAgc2hhcmVkRGVidWdPdmVybGF5cy0+cmVnaW9uQ2hhbmdlZChmcmFtZSwgUmVnaW9uVHlw
ZTo6SW50ZXJhY3Rpb25SZWdpb24pOwogfQogCiBpbmxpbmUgdm9pZCBEZWJ1Z1BhZ2VPdmVybGF5
czo6ZGlkQ2hhbmdlRXZlbnRIYW5kbGVycyhGcmFtZSYgZnJhbWUpCkBAIC0xMDEsNiArMTAzLDcg
QEAgaW5saW5lIHZvaWQgRGVidWdQYWdlT3ZlcmxheXM6OmRpZENoYW5nZUV2ZW50SGFuZGxlcnMo
RnJhbWUmIGZyYW1lKQogCiAgICAgc2hhcmVkRGVidWdPdmVybGF5cy0+cmVnaW9uQ2hhbmdlZChm
cmFtZSwgUmVnaW9uVHlwZTo6V2hlZWxFdmVudEhhbmRsZXJzKTsKICAgICBzaGFyZWREZWJ1Z092
ZXJsYXlzLT5yZWdpb25DaGFuZ2VkKGZyYW1lLCBSZWdpb25UeXBlOjpOb25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbik7CisgICAgc2hhcmVkRGVidWdPdmVybGF5cy0+cmVnaW9uQ2hhbmdlZChmcmFtZSwg
UmVnaW9uVHlwZTo6SW50ZXJhY3Rpb25SZWdpb24pOwogfQogCiBpbmxpbmUgdm9pZCBEZWJ1Z1Bh
Z2VPdmVybGF5czo6ZG9BZnRlclVwZGF0ZVJlbmRlcmluZyhQYWdlJiBwYWdlKQpAQCAtMTEwLDYg
KzExMyw3IEBAIGlubGluZSB2b2lkIERlYnVnUGFnZU92ZXJsYXlzOjpkb0FmdGVyVXBkYXRlUmVu
ZGVyaW5nKFBhZ2UmIHBhZ2UpCiAKICAgICBzaGFyZWREZWJ1Z092ZXJsYXlzLT51cGRhdGVSZWdp
b25JZk5lY2Vzc2FyeShwYWdlLCBSZWdpb25UeXBlOjpXaGVlbEV2ZW50SGFuZGxlcnMpOwogICAg
IHNoYXJlZERlYnVnT3ZlcmxheXMtPnVwZGF0ZVJlZ2lvbklmTmVjZXNzYXJ5KHBhZ2UsIFJlZ2lv
blR5cGU6Ok5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKTsKKyAgICBzaGFyZWREZWJ1Z092ZXJsYXlz
LT51cGRhdGVSZWdpb25JZk5lY2Vzc2FyeShwYWdlLCBSZWdpb25UeXBlOjpJbnRlcmFjdGlvblJl
Z2lvbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5jcHAKaW5kZXggODI3M2E2NGZjZGZiN2QzNGVhYTc2Zjk4YmE3YTIx
MTdlYWZiZmJlNi4uOWQwMjJiY2VmMmFlNzAxNjliY2Y5MjU3NWI4ODZhZmI2ODNmZmNhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTMxLDE0ICszMSwx
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZyYW1lU25hcHNob3R0aW5nLmgi
CiAKKyNpbmNsdWRlICJDb2xvckJsZW5kaW5nLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1l
U2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR2VvbWV0cnlV
dGlsaXRpZXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJBbmNlc3Rvckl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKIApAQCAtMTU4LDQgKzE2MSw1MCBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90Tm9k
ZShGcmFtZSYgZnJhbWUsIE5vZGUmIG5vZGUsIFNuYXBzaG90T3B0aW9ucyYmIG9wdAogICAgIHJl
dHVybiBzbmFwc2hvdEZyYW1lUmVjdChmcmFtZSwgc25hcHBlZEludFJlY3Qobm9kZS5yZW5kZXJl
cigpLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpLCBXVEZNb3ZlKG9wdGlvbnMpKTsK
IH0KIAorc3RhdGljIGJvb2wgc3R5bGVDb250YWluc0NvbXBsZXhCYWNrZ3JvdW5kKGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSkKK3sKKyAgICByZXR1cm4gc3R5bGUuaGFzQmxlbmRNb2RlKCkgfHwg
c3R5bGUuaGFzQmFja2dyb3VuZEltYWdlKCkgfHwgc3R5bGUuaGFzQmFja2Ryb3BGaWx0ZXIoKTsK
K30KKworQ29sb3IgZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yRm9yUmFuZ2UoY29uc3QgU2ltcGxl
UmFuZ2UmIHJhbmdlLCBjb25zdCBGcmFtZSYgZnJhbWUpCit7CisgICAgYXV0byBlc3RpbWF0ZWRC
YWNrZ3JvdW5kQ29sb3IgPSBmcmFtZS52aWV3KCkgPyBmcmFtZS52aWV3KCktPmRvY3VtZW50QmFj
a2dyb3VuZENvbG9yKCkgOiBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjazsKKworICAgIFJlbmRlckVs
ZW1lbnQqIHJlbmRlcmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGNvbW1vbkFuY2VzdG9yID0gY29t
bW9uSW5jbHVzaXZlQW5jZXN0b3I8Q29tcG9zZWRUcmVlPihyYW5nZSk7CisgICAgd2hpbGUgKGNv
bW1vbkFuY2VzdG9yKSB7CisgICAgICAgIGlmIChpczxSZW5kZXJFbGVtZW50Pihjb21tb25BbmNl
c3Rvci0+cmVuZGVyZXIoKSkpIHsKKyAgICAgICAgICAgIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVu
ZGVyRWxlbWVudD4oY29tbW9uQW5jZXN0b3ItPnJlbmRlcmVyKCkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY29tbW9uQW5jZXN0b3IgPSBjb21tb25BbmNlc3Rvci0+
cGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpOworICAgIH0KKyAgICAKKyAgICBhdXRvIGJvdW5k
aW5nUmVjdEZvclJhbmdlID0gZW5jbG9zaW5nSW50UmVjdCh1bmlvblJlY3RJZ25vcmluZ1plcm9S
ZWN0cyhSZW5kZXJPYmplY3Q6OmFic29sdXRlQm9yZGVyQW5kVGV4dFJlY3RzKHJhbmdlLCB7Cisg
ICAgICAgIFJlbmRlck9iamVjdDo6Qm91bmRpbmdSZWN0QmVoYXZpb3I6OlJlc3BlY3RDbGlwcGlu
ZywKKyAgICAgICAgUmVuZGVyT2JqZWN0OjpCb3VuZGluZ1JlY3RCZWhhdmlvcjo6VXNlVmlzaWJs
ZUJvdW5kcywKKyAgICAgICAgUmVuZGVyT2JqZWN0OjpCb3VuZGluZ1JlY3RCZWhhdmlvcjo6SWdu
b3JlVGlueVJlY3RzLAorICAgIH0pKSk7CisKKyAgICBWZWN0b3I8Q29sb3I+IHBhcmVudFJlbmRl
cmVyQmFja2dyb3VuZENvbG9yczsKKyAgICBmb3IgKGF1dG8mIGFuY2VzdG9yIDogYW5jZXN0b3Jz
T2ZUeXBlPFJlbmRlckVsZW1lbnQ+KCpyZW5kZXJlcikpIHsKKyAgICAgICAgYXV0byBhYnNvbHV0
ZUJvdW5kaW5nQm94ID0gYW5jZXN0b3IuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICAg
ICAgYXV0byYgc3R5bGUgPSBhbmNlc3Rvci5zdHlsZSgpOworICAgICAgICBpZiAoIWFic29sdXRl
Qm91bmRpbmdCb3guY29udGFpbnMoYm91bmRpbmdSZWN0Rm9yUmFuZ2UpIHx8ICFzdHlsZS5oYXNC
YWNrZ3JvdW5kKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoc3R5bGVD
b250YWluc0NvbXBsZXhCYWNrZ3JvdW5kKHN0eWxlKSkKKyAgICAgICAgICAgIHJldHVybiBlc3Rp
bWF0ZWRCYWNrZ3JvdW5kQ29sb3I7CisKKyAgICAgICAgYXV0byB2aXNpdGVkRGVwZW5kZW50QmFj
a2dyb3VuZENvbG9yID0gc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKTsKKyAgICAgICAgaWYgKHZpc2l0ZWREZXBlbmRlbnRCYWNrZ3JvdW5kQ29s
b3IgIT0gQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spCisgICAgICAgICAgICBwYXJlbnRSZW5kZXJl
ckJhY2tncm91bmRDb2xvcnMuYXBwZW5kKHZpc2l0ZWREZXBlbmRlbnRCYWNrZ3JvdW5kQ29sb3Ip
OworICAgIH0KKyAgICBwYXJlbnRSZW5kZXJlckJhY2tncm91bmRDb2xvcnMucmV2ZXJzZSgpOwor
ICAgIGZvciAoY29uc3QgYXV0byYgYmFja2dyb3VuZENvbG9yIDogcGFyZW50UmVuZGVyZXJCYWNr
Z3JvdW5kQ29sb3JzKQorICAgICAgICBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IgPSBibGVuZFNv
dXJjZU92ZXIoZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IpOworCisg
ICAgcmV0dXJuIGVzdGltYXRlZEJhY2tncm91bmRDb2xvcjsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCmluZGV4IDFiNzcw
MjZmNTEwOTIwMDFjZGE4NmUzMjQ4MDg5MDM5NWIxNDViMmUuLmY0ZWRlMjJiNWRjMjU5NDgzYzhk
NTEwZDdiMWJlMTFiM2I4NDFlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVTbmFwc2hvdHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0
aW5nLmgKQEAgLTYzLDQgKzYzLDYgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1l
UmVjdFdpdGhDbGlwKEZyYW1lJiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IFZlY3QKIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiwgTm9kZSYsIFNuYXBzaG90T3B0aW9ucyYm
KTsKIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RTZWxlY3Rpb24o
RnJhbWUmLCBTbmFwc2hvdE9wdGlvbnMmJik7CiAKK0NvbG9yIGVzdGltYXRlZEJhY2tncm91bmRD
b2xvckZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgRnJhbWUmKTsKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcmFj
dGlvblJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyYWN0aW9uUmVnaW9uLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kYWYxNWEzZTZhZjgzMzY2ZWQzOGU0ZjcwNzg1YTU0NzM4ZjExZDQ1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcmFjdGlvblJlZ2lvbi5j
cHAKQEAgLTAsMCArMSwxNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSW50ZXJhY3Rpb25SZWdpb24uaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVNuYXBzaG90dGluZy5oIgorI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCisjaW5jbHVk
ZSAiSFRNTEFuY2hvckVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmgiCisjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNs
dWRlICJQYXRoVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisj
aW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbnRlcmFjdGlvblJlZ2lvbjo6fkludGVyYWN0aW9u
UmVnaW9uKCkgPSBkZWZhdWx0OworCitzdGF0aWMgRmxvYXRSZWN0IGFic29sdXRlQm91bmRpbmdS
ZWN0Rm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiB1bmlv
blJlY3RJZ25vcmluZ1plcm9SZWN0cyhSZW5kZXJPYmplY3Q6OmFic29sdXRlQm9yZGVyQW5kVGV4
dFJlY3RzKHJhbmdlLCB7CisgICAgICAgIFJlbmRlck9iamVjdDo6Qm91bmRpbmdSZWN0QmVoYXZp
b3I6OlJlc3BlY3RDbGlwcGluZywKKyAgICAgICAgUmVuZGVyT2JqZWN0OjpCb3VuZGluZ1JlY3RC
ZWhhdmlvcjo6VXNlVmlzaWJsZUJvdW5kcywKKyAgICAgICAgUmVuZGVyT2JqZWN0OjpCb3VuZGlu
Z1JlY3RCZWhhdmlvcjo6SWdub3JlVGlueVJlY3RzLAorICAgIH0pKTsKK30KKworc3RhdGljIHN0
ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdpb24+IHJlZ2lvbkZvckVsZW1lbnQoRWxlbWVudCYg
ZWxlbWVudCkKK3sKKyAgICBhdXRvJiBmcmFtZVZpZXcgPSAqZWxlbWVudC5kb2N1bWVudCgpLmZy
YW1lKCktPnZpZXcoKTsKKyAgICBhdXRvJiBtYWluRnJhbWVWaWV3ID0gKmVsZW1lbnQuZG9jdW1l
bnQoKS5mcmFtZSgpLT5tYWluRnJhbWUoKS52aWV3KCk7CisgICAgCisgICAgSW50UmVjdCBmcmFt
ZUNsaXBSZWN0OworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgZnJhbWVDbGlwUmVjdCA9
IGVuY2xvc2luZ0ludFJlY3QoZnJhbWVWaWV3LmV4cG9zZWRDb250ZW50UmVjdCgpKTsKKyNlbHNl
CisgICAgaWYgKGF1dG8gdmlld0V4cG9zZWRSZWN0ID0gZnJhbWVWaWV3LnZpZXdFeHBvc2VkUmVj
dCgpKQorICAgICAgICBmcmFtZUNsaXBSZWN0ID0gZW5jbG9zaW5nSW50UmVjdCgqdmlld0V4cG9z
ZWRSZWN0KTsKKyAgICBlbHNlCisgICAgICAgIGZyYW1lQ2xpcFJlY3QgPSBmcmFtZVZpZXcudmlz
aWJsZUNvbnRlbnRSZWN0KCk7CisjZW5kaWYKKworICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVu
dC5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBWZWN0b3I8RmxvYXRSZWN0PiByZWN0c0luQ29udGVudHNDb29yZGluYXRl
czsKKyAgICAKKyAgICBJbnRlcmFjdGlvblJlZ2lvbiByZWdpb247CisKKyAgICBhdXRvIGxpbmtS
YW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoZWxlbWVudCk7CisgICAgCisgICAgaWYgKGxp
bmtSYW5nZSkKKyAgICAgICAgcmVnaW9uLmhhc0xpZ2h0QmFja2dyb3VuZCA9IGVzdGltYXRlZEJh
Y2tncm91bmRDb2xvckZvclJhbmdlKCpsaW5rUmFuZ2UsICplbGVtZW50LmRvY3VtZW50KCkuZnJh
bWUoKSkubHVtaW5hbmNlKCkgPiAwLjU7CisgICAgCisgICAgaWYgKGxpbmtSYW5nZSAmJiByZW5k
ZXJlci0+aXNJbmxpbmUoKSAmJiAhcmVuZGVyZXItPmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkp
IHsKKyAgICAgICAgcmVnaW9uLmlzSW5saW5lID0gdHJ1ZTsKKworICAgICAgICBPcHRpb25TZXQ8
UmVuZGVyT2JqZWN0OjpCb3VuZGluZ1JlY3RCZWhhdmlvcj4gYmVoYXZpb3IgeyBSZW5kZXJPYmpl
Y3Q6OkJvdW5kaW5nUmVjdEJlaGF2aW9yOjpSZXNwZWN0Q2xpcHBpbmcgfTsKKyAgICAgICAgcmVj
dHNJbkNvbnRlbnRzQ29vcmRpbmF0ZXMgPSBSZW5kZXJPYmplY3Q6OmFic29sdXRlVGV4dFJlY3Rz
KCpsaW5rUmFuZ2UsIGJlaGF2aW9yKS5tYXAoWyZdKGF1dG8gcmVjdCkgLT4gRmxvYXRSZWN0IHsK
KyAgICAgICAgICAgIHJldHVybiByZWN0OworICAgICAgICB9KTsKKworICAgICAgICBpZiAocmVj
dHNJbkNvbnRlbnRzQ29vcmRpbmF0ZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBhdXRvIGJv
dW5kaW5nUmVjdEZvclJhbmdlID0gYWJzb2x1dGVCb3VuZGluZ1JlY3RGb3JSYW5nZSgqbGlua1Jh
bmdlKTsKKyAgICAgICAgICAgIGlmICghYm91bmRpbmdSZWN0Rm9yUmFuZ2UuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgICAgIHJlY3RzSW5Db250ZW50c0Nvb3JkaW5hdGVzID0geyBib3VuZGluZ1Jl
Y3RGb3JSYW5nZSB9OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHJlY3RzSW5Db250ZW50
c0Nvb3JkaW5hdGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmVjdHNJbkNvbnRlbnRzQ29vcmRpbmF0
ZXMgPSB7IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpIH07CisgICAgCisgICAg
aWYgKGlzPFJlbmRlckJveD4oKnJlbmRlcmVyKSkgeworICAgICAgICBSb3VuZGVkUmVjdDo6UmFk
aWkgYm9yZGVyUmFkaWkgPSBkb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJlcikuYm9yZGVyUmFk
aWkoKTsKKyAgICAgICAgcmVnaW9uLmJvcmRlclJhZGl1cyA9IGJvcmRlclJhZGlpLm1pbmltdW1S
YWRpdXMoKTsKKyAgICB9CisKKyAgICByZWdpb24ucmVjdHNJbkNvbnRlbnRDb29yZGluYXRlcyA9
IHJlY3RzSW5Db250ZW50c0Nvb3JkaW5hdGVzLm1hcChbJl0oYXV0byByZWN0KSB7CisgICAgICAg
IGF1dG8gY29udGVudHNSZWN0ID0gcmVjdDsKKworICAgICAgICBpZiAoJmZyYW1lVmlldyAhPSAm
bWFpbkZyYW1lVmlldykKKyAgICAgICAgICAgIGNvbnRlbnRzUmVjdC5pbnRlcnNlY3QoZnJhbWVD
bGlwUmVjdCk7CisKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRzUmVjdDsKKyAgICB9KTsKKyAgICAg
ICAgCisgICAgcmV0dXJuIFdURk1vdmUocmVnaW9uKTsKK30KKworc3RhdGljIEN1cnNvclR5cGUg
Y3Vyc29yVHlwZUZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBhdXRvKiByZW5k
ZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKKyAgICBhdXRvKiBzdHlsZSA9IHJlbmRlcmVyID8g
JnJlbmRlcmVyLT5zdHlsZSgpIDogbnVsbHB0cjsKKyAgICBhdXRvIGN1cnNvclR5cGUgPSBzdHls
ZSA/IHN0eWxlLT5jdXJzb3IoKSA6IEN1cnNvclR5cGU6OkF1dG87CisKKyAgICBpZiAoY3Vyc29y
VHlwZSA9PSBDdXJzb3JUeXBlOjpBdXRvICYmIGVsZW1lbnQuZW5jbG9zaW5nTGlua0V2ZW50UGFy
ZW50T3JTZWxmKCkgJiYgZWxlbWVudC5pc0xpbmsoKSkKKyAgICAgICAgY3Vyc29yVHlwZSA9IEN1
cnNvclR5cGU6OlBvaW50ZXI7CisKKyAgICByZXR1cm4gY3Vyc29yVHlwZTsKK30KKworVmVjdG9y
PEludGVyYWN0aW9uUmVnaW9uPiBpbnRlcmFjdGlvblJlZ2lvbnMoUGFnZSYgcGFnZSwgRmxvYXRS
ZWN0IHJlY3QpCit7CisgICAgUmVmIGZyYW1lKHBhZ2UubWFpbkZyYW1lKCkpOworICAgIFJlZlB0
ciBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpOworICAgIAorICAgIGlmICghZnJhbWVWaWV3KQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgZnJhbWVWaWV3LT51cGRhdGVMYXlvdXRBbmRTdHls
ZUlmTmVlZGVkUmVjdXJzaXZlKCk7CisgICAgCisgICAgUmVmUHRyIGRvY3VtZW50ID0gZnJhbWUt
PmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IExheW91dFJlY3QocmVjdCkgfTsKKyAg
ICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KHsKKyAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6
OlJlYWRPbmx5LAorICAgICAgICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZlLAorICAgICAg
ICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5
LAorICAgICAgICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6Q29sbGVjdE11bHRpcGxlRWxlbWVudHMK
KyAgICB9KTsKKyAgICBkb2N1bWVudC0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOworCisgICAg
VmVjdG9yPEludGVyYWN0aW9uUmVnaW9uPiByZWdpb25zOworCisgICAgZm9yIChjb25zdCBhdXRv
JiBub2RlIDogcmVzdWx0Lmxpc3RCYXNlZFRlc3RSZXN1bHQoKSkgeworICAgICAgICBpZiAoIWlz
PEVsZW1lbnQ+KG5vZGUuZ2V0KCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGF1
dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pihub2RlLmdldCgpKTsKKworICAgICAgICBp
ZiAoIWVsZW1lbnQud2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSAmJiAhZWxlbWVudC53
aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIGlmIChjdXJzb3JUeXBlRm9yRWxlbWVudChlbGVtZW50KSAhPSBDdXJzb3JUeXBlOjpQb2lu
dGVyICYmICFpczxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PihlbGVtZW50KSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gcmVnaW9uID0gcmVnaW9uRm9yRWxlbWVudChlbGVt
ZW50KTsKKyAgICAgICAgaWYgKHJlZ2lvbikKKyAgICAgICAgICAgIHJlZ2lvbnMuYXBwZW5kKCpy
ZWdpb24pOworICAgIH0KKworICAgIHJldHVybiByZWdpb25zOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyYWN0aW9uUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ludGVyYWN0aW9uUmVnaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTZmOTA2MjJhNDJiYTU3NTAz
YzhhMTA4NWE0NTczMmQyY2IxN2ZhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvSW50ZXJhY3Rpb25SZWdpb24uaApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKworbmFtZXNwYWNlIElQQyB7
CitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5jb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBQYWdlOworCitzdHJ1Y3QgSW50ZXJhY3Rpb25SZWdpb24geworICAgIFZlY3Rv
cjxGbG9hdFJlY3Q+IHJlY3RzSW5Db250ZW50Q29vcmRpbmF0ZXM7CisgICAgYm9vbCBpc0lubGlu
ZSB7IGZhbHNlIH07CisgICAgYm9vbCBoYXNMaWdodEJhY2tncm91bmQgeyBmYWxzZSB9OworICAg
IGZsb2F0IGJvcmRlclJhZGl1cyB7IDAgfTsKKyAgICAKKyAgICBXRUJDT1JFX0VYUE9SVCB+SW50
ZXJhY3Rpb25SZWdpb24oKTsKKyAgICAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdpb24+IGRlY29kZShEZWNvZGVyJik7Cit9
OworCitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8SW50ZXJhY3Rpb25SZWdpb24+IGludGVyYWN0aW9u
UmVnaW9ucyhQYWdlJiwgRmxvYXRSZWN0IHJlY3RJbkNvbnRlbnRDb29yZGluYXRlcyk7CisKK3Rl
bXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEludGVyYWN0aW9uUmVnaW9uOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHJlY3RzSW5Db250ZW50Q29v
cmRpbmF0ZXM7CisgICAgZW5jb2RlciA8PCBpc0lubGluZTsKKyAgICBlbmNvZGVyIDw8IGhhc0xp
Z2h0QmFja2dyb3VuZDsKKyAgICBlbmNvZGVyIDw8IGJvcmRlclJhZGl1czsKK30KKwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdpb24+IEludGVy
YWN0aW9uUmVnaW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxGbG9hdFJlY3Q+PiByZWN0c0luQ29udGVudENvb3JkaW5hdGVzOworICAgIGRl
Y29kZXIgPj4gcmVjdHNJbkNvbnRlbnRDb29yZGluYXRlczsKKyAgICBpZiAoIXJlY3RzSW5Db250
ZW50Q29vcmRpbmF0ZXMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBpc0lubGluZTsKKyAgICBkZWNvZGVyID4+IGlzSW5saW5lOwor
ICAgIGlmICghaXNJbmxpbmUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNMaWdodEJhY2tncm91bmQ7CisgICAgZGVjb2RlciA+
PiBoYXNMaWdodEJhY2tncm91bmQ7CisgICAgaWYgKCFoYXNMaWdodEJhY2tncm91bmQpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4g
Ym9yZGVyUmFkaXVzOworICAgIGRlY29kZXIgPj4gYm9yZGVyUmFkaXVzOworICAgIGlmICghYm9y
ZGVyUmFkaXVzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsg
eworICAgICAgICBXVEZNb3ZlKCpyZWN0c0luQ29udGVudENvb3JkaW5hdGVzKSwKKyAgICAgICAg
V1RGTW92ZSgqaXNJbmxpbmUpLAorICAgICAgICBXVEZNb3ZlKCpoYXNMaWdodEJhY2tncm91bmQp
LAorICAgICAgICBXVEZNb3ZlKCpib3JkZXJSYWRpdXMpCisgICAgfSB9OworfQorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAppbmRleCBjYTVmYmU2M2NjZjZjZGI5OGFmODVl
ZDU5MjlhMTMwMzhkNjliZmM3Li40MGQwMjA1MzhjMzkyYTQ1Mzk1NWE5MmU0YzYxZGFkMDM4MzA5
ZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKQEAgLTE3NSwxMSArMTc1
LDYgQEAgc3RhdGljIGJvb2wgdGFrZVNuYXBzaG90cyhUZXh0SW5kaWNhdG9yRGF0YSYgZGF0YSwg
RnJhbWUmIGZyYW1lLCBJbnRSZWN0IHNuYXBzaG8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3Rh
dGljIGJvb2wgc3R5bGVDb250YWluc0NvbXBsZXhCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSkKLXsKLSAgICByZXR1cm4gc3R5bGUuaGFzQmxlbmRNb2RlKCkgfHwgc3R5bGUuaGFz
QmFja2dyb3VuZEltYWdlKCkgfHwgc3R5bGUuaGFzQmFja2Ryb3BGaWx0ZXIoKTsKLX0KLQogc3Rh
dGljIEhhc2hTZXQ8Q29sb3I+IGVzdGltYXRlZFRleHRDb2xvcnNGb3JSYW5nZShjb25zdCBTaW1w
bGVSYW5nZSYgcmFuZ2UpCiB7CiAgICAgSGFzaFNldDxDb2xvcj4gY29sb3JzOwpAQCAtMjAzLDQy
ICsxOTgsNiBAQCBzdGF0aWMgRmxvYXRSZWN0IGFic29sdXRlQm91bmRpbmdSZWN0Rm9yUmFuZ2Uo
Y29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogICAgIH0pKTsKIH0KIAotc3RhdGljIENvbG9yIGVz
dGltYXRlZEJhY2tncm91bmRDb2xvckZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwg
Y29uc3QgRnJhbWUmIGZyYW1lKQotewotICAgIGF1dG8gZXN0aW1hdGVkQmFja2dyb3VuZENvbG9y
ID0gZnJhbWUudmlldygpID8gZnJhbWUudmlldygpLT5kb2N1bWVudEJhY2tncm91bmRDb2xvcigp
IDogQ29sb3I6OnRyYW5zcGFyZW50QmxhY2s7Ci0KLSAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJl
ciA9IG51bGxwdHI7Ci0gICAgYXV0byBjb21tb25BbmNlc3RvciA9IGNvbW1vbkluY2x1c2l2ZUFu
Y2VzdG9yPENvbXBvc2VkVHJlZT4ocmFuZ2UpOwotICAgIHdoaWxlIChjb21tb25BbmNlc3Rvcikg
ewotICAgICAgICBpZiAoaXM8UmVuZGVyRWxlbWVudD4oY29tbW9uQW5jZXN0b3ItPnJlbmRlcmVy
KCkpKSB7Ci0gICAgICAgICAgICByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGNv
bW1vbkFuY2VzdG9yLT5yZW5kZXJlcigpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNvbW1vbkFuY2VzdG9yID0gY29tbW9uQW5jZXN0b3ItPnBhcmVudE9yU2hhZG93
SG9zdEVsZW1lbnQoKTsKLSAgICB9Ci0KLSAgICBhdXRvIGJvdW5kaW5nUmVjdEZvclJhbmdlID0g
ZW5jbG9zaW5nSW50UmVjdChhYnNvbHV0ZUJvdW5kaW5nUmVjdEZvclJhbmdlKHJhbmdlKSk7Ci0g
ICAgVmVjdG9yPENvbG9yPiBwYXJlbnRSZW5kZXJlckJhY2tncm91bmRDb2xvcnM7Ci0gICAgZm9y
ICg7ICEhcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpKSB7Ci0gICAgICAg
IGF1dG8gYWJzb2x1dGVCb3VuZGluZ0JveCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCgpOwotICAgICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgICAg
ICBpZiAoIWFic29sdXRlQm91bmRpbmdCb3guY29udGFpbnMoYm91bmRpbmdSZWN0Rm9yUmFuZ2Up
IHx8ICFzdHlsZS5oYXNCYWNrZ3JvdW5kKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAg
ICAgICBpZiAoc3R5bGVDb250YWluc0NvbXBsZXhCYWNrZ3JvdW5kKHN0eWxlKSkKLSAgICAgICAg
ICAgIHJldHVybiBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3I7Ci0KLSAgICAgICAgYXV0byB2aXNp
dGVkRGVwZW5kZW50QmFja2dyb3VuZENvbG9yID0gc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9y
KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLSAgICAgICAgaWYgKHZpc2l0ZWREZXBlbmRl
bnRCYWNrZ3JvdW5kQ29sb3IgIT0gQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spCi0gICAgICAgICAg
ICBwYXJlbnRSZW5kZXJlckJhY2tncm91bmRDb2xvcnMuYXBwZW5kKHZpc2l0ZWREZXBlbmRlbnRC
YWNrZ3JvdW5kQ29sb3IpOwotICAgIH0KLSAgICBwYXJlbnRSZW5kZXJlckJhY2tncm91bmRDb2xv
cnMucmV2ZXJzZSgpOwotICAgIGZvciAoY29uc3QgYXV0byYgYmFja2dyb3VuZENvbG9yIDogcGFy
ZW50UmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3JzKQotICAgICAgICBlc3RpbWF0ZWRCYWNrZ3JvdW5k
Q29sb3IgPSBibGVuZFNvdXJjZU92ZXIoZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yLCBiYWNrZ3Jv
dW5kQ29sb3IpOwotCi0gICAgcmV0dXJuIGVzdGltYXRlZEJhY2tncm91bmRDb2xvcjsKLX0KLQog
c3RhdGljIGJvb2wgaGFzQW55SWxsZWdpYmxlQ29sb3JzKFRleHRJbmRpY2F0b3JEYXRhJiBkYXRh
LCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yLCBIYXNoU2V0PENvbG9yPiYmIHRleHRDb2xv
cnMpCiB7CiAgICAgaWYgKGRhdGEub3B0aW9ucy5jb250YWlucyhUZXh0SW5kaWNhdG9yT3B0aW9u
OjpQYWludEFsbENvbnRlbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTGF5b3V0U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TGF5b3V0U2l6ZS5oCmluZGV4IDRhNmQ3Nzg1MzBhZjRjYjZiMDQ0ZmI3NzdlM2U2ZmE4ZTk3YzNh
ZWIuLjZiMDMyMjUyMzYyN2JlMzk5MjRkOTZjM2JkMmE2YWRkYWY0MzMyNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmgKQEAgLTU4LDYgKzU4LDkg
QEAgcHVibGljOgogICAgIExheW91dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRo
OyB9CiAgICAgTGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQog
CisgICAgTGF5b3V0VW5pdCBtaW5EaW1lbnNpb24oKSBjb25zdCB7IHJldHVybiBzdGQ6Om1pbiht
X3dpZHRoLCBtX2hlaWdodCk7IH0KKyAgICBMYXlvdXRVbml0IG1heERpbWVuc2lvbigpIGNvbnN0
IHsgcmV0dXJuIHN0ZDo6bWF4KG1fd2lkdGgsIG1faGVpZ2h0KTsgfQorCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gdm9pZCBzZXRXaWR0aChUIHdpZHRoKSB7IG1fd2lkdGggPSB3aWR0aDsgfQog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2V0SGVpZ2h0KFQgaGVpZ2h0KSB7IG1faGVp
Z2h0ID0gaGVpZ2h0OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JvdW5kZWRSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
b3VuZGVkUmVjdC5oCmluZGV4IDExN2JlZWY3YTMzYzJmZWIwMTg3NTIzMDY1ZGZlNTkyNDM0ZTA1
OTAuLjExMTJiODQ0ZGZiMTU2NTg1NTE4NzA4ZGZjNjUyYzgwOWFmNzEzMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaApAQCAtNzEsNiArNzEs
OCBAQCBwdWJsaWM6CiAKICAgICAgICAgUmFkaWkgdHJhbnNwb3NlZFJhZGlpKCkgY29uc3QgeyBy
ZXR1cm4gUmFkaWkobV90b3BMZWZ0LnRyYW5zcG9zZWRTaXplKCksIG1fdG9wUmlnaHQudHJhbnNw
b3NlZFNpemUoKSwgbV9ib3R0b21MZWZ0LnRyYW5zcG9zZWRTaXplKCksIG1fYm90dG9tUmlnaHQu
dHJhbnNwb3NlZFNpemUoKSk7IH0KIAorICAgICAgICBMYXlvdXRVbml0IG1pbmltdW1SYWRpdXMo
KSBjb25zdCB7IHJldHVybiBzdGQ6Om1pbih7IG1fdG9wTGVmdC5taW5EaW1lbnNpb24oKSwgbV90
b3BSaWdodC5taW5EaW1lbnNpb24oKSwgbV9ib3R0b21MZWZ0Lm1pbkRpbWVuc2lvbigpLCBtX2Jv
dHRvbVJpZ2h0Lm1pbkRpbWVuc2lvbigpIH0pOyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBM
YXlvdXRTaXplIG1fdG9wTGVmdDsKICAgICAgICAgTGF5b3V0U2l6ZSBtX3RvcFJpZ2h0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlh
Rm9ybWF0UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJl
YWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKaW5kZXggYTNmYmI3NjBlNzc2MDQwNzhkOGU1MGMx
NGNkZDdkN2NlYTZlYjZkMy4uZWI5ZWI1NGE4MjI3Y2ExZDg4MDM3OTA0ZjBiNjk0OWQ1Mjc1MThm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVy
L01lZGlhRm9ybWF0UmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVk
aWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCkBAIC0zNiw5ICszNiwxMSBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTWVkaWFTYW1wbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlQVZGT2Jq
Qy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb1RyYWNr
UHJpdmF0ZS5oPgogI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0
aW9uLmg+CisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAjaW5jbHVkZSA8
d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggN2E3OGUyYWVlYTc1
ZmVhY2UzMjc2ZmI0NDgyZWYzZGY4MjIwNTEwYS4uMDk0ZjliZmE1MGJlNGU5ZjBjOTQ3NzgyNWVj
MGEwYzkzNmZkZjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTM3LDYgKzM3LDcgQEAgdHlwZWRl
ZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS0RlYnVnT3ZlcmxheVJlZ2lvbnMpIHsKICAgICBf
V0tXaGVlbEV2ZW50SGFuZGxlclJlZ2lvbiA9IDEgPDwgMSwKICAgICBfV0tUb3VjaEFjdGlvblJl
Z2lvbiA9IDEgPDwgMiwKICAgICBfV0tFZGl0YWJsZUVsZW1lbnRSZWdpb24gPSAxIDw8IDMsCisg
ICAgX1dLSW50ZXJhY3Rpb25SZWdpb24gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKSA9IDEgPDwgNCwKIH0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xMSksIGlvcyg5LjApKTsKIAogdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS0ph
dmFTY3JpcHRSdW50aW1lRmxhZ3MpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IDhmZTIxMTA4ZGQxOTkzNzAxZWQyYjRhNzg4YWEwYjY4M2U5ZGM1YjUuLmM0
YTM2YjRmZDkzZmNhOWMwNjAxODUwYmM4OWI2OGViMTdkOWY4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTEyODEsOSArMTEyODEsOSBAQCBib29sIFdl
YlBhZ2VQcm94eTo6c2hvdWxkRW5hYmxlQ2FwdGl2ZVBvcnRhbE1vZGUoKSBjb25zdAogICAgIHJl
dHVybiBtX2NvbmZpZ3VyYXRpb24tPmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCgpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJhY3RhYmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRl
cyhGbG9hdFJlY3QgcmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8RmxvYXRSZWN0
Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJhY3Rpb25S
ZWdpb25zKEZsb2F0UmVjdCByZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPEludGVyYWN0aW9uUmVnaW9uPik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnRlcmFjdGFi
bGVSZWdpb25zSW5Sb290Vmlld0Nvb3JkaW5hdGVzKHJlY3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnRl
cmFjdGlvblJlZ2lvbnMocmVjdEluQ29udGVudENvb3JkaW5hdGVzKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGJiMWZhY2ZjODYwYWJhMzdhOTFhZjFmYWYzZGVhNDBi
YmQ0OWUwOTMuLjFjN2Q1NWMxNDNlMzcwYjgyYWI2ODk4OTU0MGZiMDVlNGExNDcyZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yOTksNiArMjk5LDcgQEAgc3Ry
dWN0IEVsZW1lbnRDb250ZXh0Owogc3RydWN0IEV4Y2VwdGlvbkRldGFpbHM7CiBzdHJ1Y3QgRmls
ZUNob29zZXJTZXR0aW5nczsKIHN0cnVjdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOworc3RydWN0
IEludGVyYWN0aW9uUmVnaW9uOwogc3RydWN0IExpbmtJY29uOwogc3RydWN0IE1lZGlhU3RyZWFt
UmVxdWVzdDsKIHN0cnVjdCBNZWRpYVVzYWdlSW5mbzsKQEAgLTIwODIsNyArMjA4Myw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNsYXNzaWZ5TW9kYWxDb250YWluZXJDb250cm9scyhWZWN0b3I8U3Ry
aW5nPiYmIHRleHRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpNb2Rh
bENvbnRhaW5lckNvbnRyb2xUeXBlPiYmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JN
b2RhbENvbnRhaW5lcihPcHRpb25TZXQ8V2ViQ29yZTo6TW9kYWxDb250YWluZXJDb250cm9sVHlw
ZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TW9kYWxDb250YWluZXJEZWNpc2lv
bik+JiYpOwogCi0gICAgdm9pZCBpbnRlcmFjdGFibGVSZWdpb25zSW5Sb290Vmlld0Nvb3JkaW5h
dGVzKFdlYkNvcmU6OkZsb2F0UmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vi
Q29yZTo6RmxvYXRSZWN0Pik+JiYpOworICAgIHZvaWQgaW50ZXJhY3Rpb25SZWdpb25zKFdlYkNv
cmU6OkZsb2F0UmVjdCByZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uPik+JiYpOwogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgc2V0U2VydmljZVdvcmtlck9wZW5XaW5kb3dD
b21wbGV0aW9uQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA5ZThiZjQ1YmFiNTEzYTUxMjEwNDlkMDUz
MTEyMmU0NTYzZjBhNmYxLi5iMWI5OWNiZTYxMmEwOGNjNGZkZWI2YWRjOWU2N2UxNWY3MWUzZmRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KQEAgLTk5NTMsMTAgKzk5NTMsMTAgQEAgLSAodm9pZClwb3NpdGlv
bkluZm9ybWF0aW9uRm9ySG92ZXJQbGF0dGVyOihXS0hvdmVyUGxhdHRlciAqKWhvdmVyUGxhdHRl
ciB3aXRoUmUKICAgICBbc2VsZiBkb0FmdGVyUG9zaXRpb25JbmZvcm1hdGlvblVwZGF0ZTpjb21w
bGV0aW9uSGFuZGxlciBmb3JSZXF1ZXN0OnJlcXVlc3RdOwogfQogCi0tICh2b2lkKWludGVyYWN0
YWJsZVJlZ2lvbnNGb3JIb3ZlclBsYXR0ZXI6KFdLSG92ZXJQbGF0dGVyICopcGxhdHRlciBpblJl
Y3Q6KFdlYkNvcmU6OkZsb2F0UmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShW
ZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PikpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpaW50
ZXJhY3Rpb25SZWdpb25zRm9ySG92ZXJQbGF0dGVyOihXS0hvdmVyUGxhdHRlciAqKXBsYXR0ZXIg
aW5SZWN0OihXZWJDb3JlOjpGbG9hdFJlY3QpcmVjdEluQ29udGVudENvb3JkaW5hdGVzIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShWZWN0b3I8V2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdpb24+
KSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIF9wYWdlLT5pbnRlcmFjdGFibGVSZWdpb25zSW5S
b290Vmlld0Nvb3JkaW5hdGVzKHJlY3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildIChWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0cykg
ewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZWN0cyk7CisgICAgX3BhZ2UtPmludGVyYWN0
aW9uUmVnaW9ucyhyZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMsIFtjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChWZWN0b3I8V2ViQ29yZTo6SW50ZXJh
Y3Rpb25SZWdpb24+IHJlZ2lvbnMpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVnaW9u
cyk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0hvdmVyUGxhdHRlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQ
bGF0dGVyLmgKaW5kZXggY2RiYmQ4MDA2Yzc1MDA1MGI1MWYxNmYzMjk0Yjg1MjA5YzI3YzI1Mi4u
N2NmNDIzMTAxY2IwNDQwY2FiZjI1ZjFhZDBhYWQzMGMxODUzMDFjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmxvYXRSZWN0Oworc3RydWN0IEludGVyYWN0aW9u
UmVnaW9uOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ0LDcgKzQ1LDcgQEAgc3RydWN0
IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0OwogQHJlcXVpcmVkCiAtICh2b2lkKXBvc2l0
aW9uSW5mb3JtYXRpb25Gb3JIb3ZlclBsYXR0ZXI6KFdLSG92ZXJQbGF0dGVyICopaG92ZXJQbGF0
dGVyIHdpdGhSZXF1ZXN0OihXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Jily
ZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXZWJLaXQ6OkludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uKSljb21wbGV0aW9uSGFuZGxlcjsKIAotLSAodm9pZClpbnRlcmFj
dGFibGVSZWdpb25zRm9ySG92ZXJQbGF0dGVyOihXS0hvdmVyUGxhdHRlciAqKWhvdmVyUGxhdHRl
ciBpblJlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PikpY29tcGxldGlvbkhhbmRsZXI7CistICh2
b2lkKWludGVyYWN0aW9uUmVnaW9uc0ZvckhvdmVyUGxhdHRlcjooV0tIb3ZlclBsYXR0ZXIgKilo
b3ZlclBsYXR0ZXIgaW5SZWN0OihXZWJDb3JlOjpGbG9hdFJlY3QpcmVjdEluQ29udGVudENvb3Jk
aW5hdGVzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShWZWN0b3I8V2ViQ29yZTo6SW50ZXJh
Y3Rpb25SZWdpb24+KSljb21wbGV0aW9uSGFuZGxlcjsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIubW0KaW5kZXggNDA0MjYwNTE2MmI3OTEz
Yjg5NWE1MTM4MzVhMzEyMTlmMGUxN2U4MS4uYTc5OTVjNGNhOGIyZTU3NGRlZmQ2MzgxYmM4MTYy
Mjk2YWI4ODEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92
ZXJQbGF0dGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxh
dHRlci5tbQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJXS0hvdmVyUGxhdHRlclBhcmFt
ZXRlcnMuaCIKICNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0ludGVy
YWN0aW9uUmVnaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhdGhVdGlsaXRpZXMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZUNBTGF5ZXJFeHRyYXMuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvUXVhcnR6Q29yZVNQSS5oPgpAQCAtMjQ3LDE1ICsyNDgsMTcgQEAgLSAodm9pZCl1cGRhdGVE
ZWJ1Z0luZGljYXRvcgogICAgIFtsaW5rSGlnaGxpZ2h0TGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rp
b25zXTsKICAgICBbW192aWV3IGxheWVyXSBhZGRTdWJsYXllcjpsaW5rSGlnaGxpZ2h0TGF5ZXIu
Z2V0KCldOwogCi0gICAgW19kZWxlZ2F0ZSBpbnRlcmFjdGFibGVSZWdpb25zRm9ySG92ZXJQbGF0
dGVyOnNlbGYgaW5SZWN0OnNlYXJjaEJvdW5kaW5nUmVjdCBjb21wbGV0aW9uSGFuZGxlcjptYWtl
QmxvY2tQdHIoW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildIChWZWN0b3I8V2Vi
Q29yZTo6RmxvYXRSZWN0PiByZWN0cykgeworICAgIFtfZGVsZWdhdGUgaW50ZXJhY3Rpb25SZWdp
b25zRm9ySG92ZXJQbGF0dGVyOnNlbGYgaW5SZWN0OnNlYXJjaEJvdW5kaW5nUmVjdCBjb21wbGV0
aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2Vs
ZildIChWZWN0b3I8V2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdpb24+IHJlZ2lvbnMpIHsKICAgICAg
ICAgaWYgKCFfbGlua0NvdW50TGF5ZXIgJiYgIV9saW5rSGlnaGxpZ2h0TGF5ZXIpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgW19saW5rQ291bnRMYXllciBzZXRTdHJpbmc6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlenUiLCByZWN0cy5zaXplKCldXTsKKyAgICAgICAgW19s
aW5rQ291bnRMYXllciBzZXRTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlenUi
LCByZWdpb25zLnNpemUoKV1dOwogCiAgICAgICAgIFdlYkNvcmU6OlBhdGggcGF0aDsKLSAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiByZWN0IDogcmVjdHMpCi0gICAgICAgICAgICBwYXRoLmFkZFJl
Y3QocmVjdCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVnaW9uIDogcmVnaW9ucykgewor
ICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWN0IDogcmVnaW9uLnJlY3RzSW5Db250ZW50
Q29vcmRpbmF0ZXMpCisgICAgICAgICAgICAgICAgcGF0aC5hZGRSZWN0KHJlY3QpOworICAgICAg
ICB9CiAgICAgICAgIFtfbGlua0hpZ2hsaWdodExheWVyIHNldFBhdGg6cGF0aC5wbGF0Zm9ybVBh
dGgoKV07CiAgICAgfSkuZ2V0KCldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IGVkN2Q3Y2VkODg2ZmEyOGE4M2MyZmFjN2IyOTkxNDIzZDQw
NmE1YmUuLmIyY2EwMzE0YmQ1MWI0NTI3MmM0OTE0ZDU2ZmJmOWNmZGU5ZGMzNTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02Mzk0LDQxICs2
Mzk0LDkgQEAgdm9pZCBXZWJQYWdlOjpjYW5jZWxlZENvbXBvc2l0aW9uKCkKICAgICBzZW5kRWRp
dG9yU3RhdGVVcGRhdGUoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjppbnRlcmFjdGFibGVSZWdpb25z
SW5Sb290Vmlld0Nvb3JkaW5hdGVzKEZsb2F0UmVjdCByZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxGbG9hdFJlY3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFn
ZTo6aW50ZXJhY3Rpb25SZWdpb25zKEZsb2F0UmVjdCByZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPEludGVyYWN0aW9uUmVnaW9uPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUmVmIGZyYW1lKG1fcGFnZS0+bWFpbkZyYW1lKCkpOwot
Ci0gICAgaWYgKFJlZlB0ciBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpKQotICAgICAgICBmcmFt
ZVZpZXctPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKLQotICAgIGF1
dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IExheW91dFJlY3QocmVjdCkgfTsKLSAgICBSZWZQ
dHIgZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50KSB7Ci0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KHsKLSAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OlR5
cGU6OlJlYWRPbmx5LAotICAgICAgICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWxsb3dWaXNpYmxl
Q2hpbGRGcmFtZUNvbnRlbnRPbmx5LAotICAgICAgICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6Q29s
bGVjdE11bHRpcGxlRWxlbWVudHMKLSAgICB9KTsKLSAgICBkb2N1bWVudC0+aGl0VGVzdChyZXF1
ZXN0LCByZXN1bHQpOwotCi0gICAgVmVjdG9yPEZsb2F0UmVjdD4gcmVjdHM7Ci0KLSAgICBmb3Ig
KGNvbnN0IGF1dG8mIG5vZGUgOiByZXN1bHQubGlzdEJhc2VkVGVzdFJlc3VsdCgpKSB7Ci0gICAg
ICAgIGlmICghaXM8RWxlbWVudD4obm9kZS5nZXQoKSkpCi0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgYXV0byYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUuZ2V0KCkpOwot
Ci0gICAgICAgIGlmICghbm9kZS0+d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHJlY3RzLmFwcGVuZChlbGVtZW50LmJvdW5k
aW5nQm94SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkpOwotICAgIH0KLQotICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJlY3RzKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjppbnRlcmFjdGlv
blJlZ2lvbnMoKm1fcGFnZSwgcmVjdEluQ29udGVudENvb3JkaW5hdGVzKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZTo6c2V0QWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIoYm9vbCBhbHdheXNTaG93
c0hvcml6b250YWxTY3JvbGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCBhY2RiODkyNjk3YzIwOTFkMGQ1MDUyNWI2MjkxODk3YjgzMmY0MWNmLi4x
ZWIzN2M1MWVmMGM3NWFlNTBmZjlmNGY2OWY3NzBkMDJjNTQzMjlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yNDcsNiArMjQ3LDcgQEAgc3RydWN0
IERpY3RhdGlvbkFsdGVybmF0aXZlOwogc3RydWN0IEVsZW1lbnRDb250ZXh0Owogc3RydWN0IEds
b2JhbEZyYW1lSWRlbnRpZmllcjsKIHN0cnVjdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOworc3Ry
dWN0IEludGVyYWN0aW9uUmVnaW9uOwogc3RydWN0IEtleXByZXNzQ29tbWFuZDsKIHN0cnVjdCBN
ZWRpYVVzYWdlSW5mbzsKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvOwpAQCAtOTQyLDcg
Kzk0Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFVwZGF0ZUNvbXBvc2l0aW9uKCk7CiAgICAg
dm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpOwogCi0gICAgdm9pZCBp
bnRlcmFjdGFibGVSZWdpb25zSW5Sb290Vmlld0Nvb3JkaW5hdGVzKFdlYkNvcmU6OkZsb2F0UmVj
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0Pik+JiYp
OworICAgIHZvaWQgaW50ZXJhY3Rpb25SZWdpb25zKFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0SW5D
b250ZW50Q29vcmRpbmF0ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6
OkludGVyYWN0aW9uUmVnaW9uPik+JiYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9p
ZCBwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAxMTk0Mjc1
MGY0MDQ1NGIwN2MyMTczYWNlNDRiYWQ5NmNmZmY0MmQwLi5jZTYwZTVkY2I1ZDM3NzJlNWMzNTc2
ODZkZDYwZDY3ZmUxZTViZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTY4MSw1ICs2ODEsNSBAQCBHZW5lcmF0
ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kVHlwZQogCiAgICAgU2Nyb2xsVG9SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCB0
YXJnZXRSZWN0LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKIAotICAgIEludGVyYWN0YWJs
ZVJlZ2lvbnNJblJvb3RWaWV3Q29vcmRpbmF0ZXMoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpIC0+
IChWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0cykKKyAgICBJbnRlcmFjdGlvblJlZ2lv
bnMoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3RJbkNvbnRlbnRDb29yZGluYXRlcykgLT4gKFZlY3Rv
cjxXZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbj4gcmVnaW9ucykKIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiZWE3N2M0YmZjOGVhNjk0OWY1
MmZhNzE4NzU2ODEzN2I4MDdkN2IyLi42YTMyZGEwN2E5YTY5MmVlYTc3NTgwMjA3MTYzYTE2ZjU0
MWRmYjg2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMjItMDMtMjEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgZGVidWcgb3ZlcmxheSBmb3IgaW50ZXJhY3Rp
b24gcmVnaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM4MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAg
ICogTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5oOgorICAgICAgICAqIE1pbmlC
cm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bU2V0dGluZ3NDb250
cm9sbGVyIF9wb3B1bGF0ZU1lbnVdKToKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIGlu
dGVyYWN0aW9uUmVnaW9uT3ZlcmxheVZpc2libGVdKToKKyAgICAgICAgKC1bU2V0dGluZ3NDb250
cm9sbGVyIHByZWZlcmVuY2VLZXlGb3JSZWdpb25PdmVybGF5VGFnOl0pOgorICAgICAgICAqIE1p
bmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtX
SzJCcm93c2VyV2luZG93Q29udHJvbGxlciBkaWRDaGFuZ2VTZXR0aW5nc10pOgorICAgICAgICBB
ZGQgYSBzd2l0Y2ggZm9yIHRoZSBuZXcgZGVidWcgb3ZlcmxheSBpbiBNaW5pQnJvd3Nlci4KKwog
MjAyMi0wMy0zMCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW3dlYmtpdGJ1Z3NweV0gR2V0IGFuZCBzZXQgaXNzdWUgY29tcG9uZW50IGRhdGEKZGlmZiAt
LWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIuaCBiL1Rvb2xz
L01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIuaAppbmRleCA0OTg1NzUwZWYyNWMx
YzkyYjcwN2IzMTNjZTIwYWE1ZjNjZGFjZjVmLi45NTQ4YTJiMzgyOTVkYzdkMDVlMjkxZmU0NTI1
YWU5ODZkNDk2MTJlIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3ND
b250cm9sbGVyLmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxl
ci5oCkBAIC00Myw2ICs0Myw3IEBAIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0
dGVyPWlzU3BhY2VSZXNlcnZlZEZvckJhbm5lcnMpIEJPT0wgc3BhY2VSZXNlCiBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgcmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlOwog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIG5vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uT3ZlcmxheVZpc2libGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wg
d2hlZWxFdmVudEhhbmRsZXJSZWdpb25PdmVybGF5VmlzaWJsZTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgQk9PTCBpbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXlWaXNpYmxlOwogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIHVzZVVJU2lkZUNvbXBvc2l0aW5nOwog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIHBlcldpbmRvd1dlYlByb2Nlc3Nl
c0Rpc2FibGVkOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGFjY2VsZXJh
dGVkRHJhd2luZ0VuYWJsZWQ7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0
dGluZ3NDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9s
bGVyLm0KaW5kZXggODRiZDFhOGVmMGZhMTZhYzM4NDJlZDRiN2NiOTU4OGE0ZDA3NTNhZC4uNWY3
MWJhZjBmZjJlMjQyN2RjMjIxZGRkZWE3ZGIxNWNiMGFlZGNmZCAxMDA2NDQKLS0tIGEvVG9vbHMv
TWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93
c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubQpAQCAtNTcsNiArNTcsNyBAQAogCiBzdGF0aWMg
TlNTdHJpbmcgKiBjb25zdCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXlWaXNpYmxlUHJl
ZmVyZW5jZUtleSA9IEAiTm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5VmlzaWJsZSI7CiBz
dGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXaGVlbEV2ZW50SGFuZGxlclJlZ2lvbk92ZXJsYXlWaXNp
YmxlUHJlZmVyZW5jZUtleSA9IEAiV2hlZWxFdmVudEhhbmRsZXJSZWdpb25PdmVybGF5VmlzaWJs
ZSI7CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXlWaXNp
YmxlUHJlZmVyZW5jZUtleSA9IEAiSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5VmlzaWJsZSI7CiAK
IHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVzZVRyYW5zcGFyZW50V2luZG93c1ByZWZlcmVuY2VL
ZXkgPSBAIlVzZVRyYW5zcGFyZW50V2luZG93cyI7CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBV
c2VQYWdpbmF0ZWRNb2RlUHJlZmVyZW5jZUtleSA9IEAiVXNlUGFnaW5hdGVkTW9kZSI7CkBAIC03
Nyw2ICs3OCw3IEBACiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBEZWJ1Z092ZXJ5bGF5TWVu
dUl0ZW1UYWcpIHsKICAgICBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXlUYWcgPSAxMDAs
CiAgICAgV2hlZWxFdmVudEhhbmRsZXJSZWdpb25PdmVybGF5VGFnLAorICAgIEludGVyYWN0aW9u
UmVnaW9uT3ZlcmxheVRhZywKICAgICBFeHBlcmltZW50YWxGZWF0dXJlVGFnLAogICAgIEludGVy
bmFsRGVidWdGZWF0dXJlVGFnLAogfTsKQEAgLTE5NSw2ICsxOTcsMTIgQEAgLSAodm9pZClfcG9w
dWxhdGVNZW51CiAgICAgW3doZWVsRXZlbnRIYW5kbGVyUmVnaW9uSXRlbSBzZXRUYWc6V2hlZWxF
dmVudEhhbmRsZXJSZWdpb25PdmVybGF5VGFnXTsKICAgICBbd2hlZWxFdmVudEhhbmRsZXJSZWdp
b25JdGVtIHNldFRhcmdldDpzZWxmXTsKICAgICBbZGVidWdPdmVybGF5c01lbnUgYWRkSXRlbTpb
d2hlZWxFdmVudEhhbmRsZXJSZWdpb25JdGVtIGF1dG9yZWxlYXNlXV07CisKKyAgICBOU01lbnVJ
dGVtICppbnRlcmFjdGlvblJlZ2lvbkl0ZW0gPSBbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRo
VGl0bGU6QCJJbnRlcmFjdGlvbiBSZWdpb24iIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlRGVidWdP
dmVybGF5Oikga2V5RXF1aXZhbGVudDpAIiJdOworICAgIFtpbnRlcmFjdGlvblJlZ2lvbkl0ZW0g
c2V0VGFnOkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheVRhZ107CisgICAgW2ludGVyYWN0aW9uUmVn
aW9uSXRlbSBzZXRUYXJnZXQ6c2VsZl07CisgICAgW2RlYnVnT3ZlcmxheXNNZW51IGFkZEl0ZW06
W2ludGVyYWN0aW9uUmVnaW9uSXRlbSBhdXRvcmVsZWFzZV1dOworCiAgICAgW2RlYnVnT3Zlcmxh
eXNNZW51IHJlbGVhc2VdOwogICAgIAogICAgIFtfbWVudSBhZGRJdGVtOmRlYnVnT3ZlcmxheXNT
dWJtZW51SXRlbV07CkBAIC03MTEsNiArNzE5LDExIEBAIC0gKEJPT0wpd2hlZWxFdmVudEhhbmRs
ZXJSZWdpb25PdmVybGF5VmlzaWJsZQogICAgIHJldHVybiBbW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OldoZWVsRXZlbnRIYW5kbGVyUmVnaW9uT3Zlcmxh
eVZpc2libGVQcmVmZXJlbmNlS2V5XTsKIH0KIAorLSAoQk9PTClpbnRlcmFjdGlvblJlZ2lvbk92
ZXJsYXlWaXNpYmxlCit7CisgICAgcmV0dXJuIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2Vy
RGVmYXVsdHNdIGJvb2xGb3JLZXk6SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5VmlzaWJsZVByZWZl
cmVuY2VLZXldOworfQorCiAtIChOU1N0cmluZyAqKXByZWZlcmVuY2VLZXlGb3JSZWdpb25PdmVy
bGF5VGFnOihOU1VJbnRlZ2VyKXRhZwogewogICAgIHN3aXRjaCAodGFnKSB7CkBAIC03MTksNiAr
NzMyLDkgQEAgLSAoTlNTdHJpbmcgKilwcmVmZXJlbmNlS2V5Rm9yUmVnaW9uT3ZlcmxheVRhZzoo
TlNVSW50ZWdlcil0YWcKIAogICAgIGNhc2UgV2hlZWxFdmVudEhhbmRsZXJSZWdpb25PdmVybGF5
VGFnOgogICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsZXJSZWdpb25PdmVybGF5VmlzaWJs
ZVByZWZlcmVuY2VLZXk7CisKKyAgICBjYXNlIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheVRhZzoK
KyAgICAgICAgcmV0dXJuIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheVZpc2libGVQcmVmZXJlbmNl
S2V5OwogICAgIH0KICAgICByZXR1cm4gbmlsOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJy
b3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nl
ci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQppbmRleCAwMWJhNDVmOTFlM2Q5OWQx
MTBmNjdlNjVkMTZhMTM1MjEwMmRiNmVlLi5jYzE1Njc4NjMyZGUzZmIwYmUwYWQ1YTcyMTgzYmI1
ZmVkOGVmZmQzIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3Nlcldp
bmRvd0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3Nlcldp
bmRvd0NvbnRyb2xsZXIubQpAQCAtNTIxLDYgKzUyMSw4IEBAIC0gKHZvaWQpZGlkQ2hhbmdlU2V0
dGluZ3MKICAgICAgICAgdmlzaWJsZU92ZXJsYXlSZWdpb25zIHw9IF9XS05vbkZhc3RTY3JvbGxh
YmxlUmVnaW9uOwogICAgIGlmIChzZXR0aW5ncy53aGVlbEV2ZW50SGFuZGxlclJlZ2lvbk92ZXJs
YXlWaXNpYmxlKQogICAgICAgICB2aXNpYmxlT3ZlcmxheVJlZ2lvbnMgfD0gX1dLV2hlZWxFdmVu
dEhhbmRsZXJSZWdpb247CisgICAgaWYgKHNldHRpbmdzLmludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eVZpc2libGUpCisgICAgICAgIHZpc2libGVPdmVybGF5UmVnaW9ucyB8PSBfV0tJbnRlcmFjdGlv
blJlZ2lvbjsKICAgICAKICAgICBwcmVmZXJlbmNlcy5fdmlzaWJsZURlYnVnT3ZlcmxheVJlZ2lv
bnMgPSB2aXNpYmxlT3ZlcmxheVJlZ2lvbnM7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456310</attachid>
            <date>2022-03-31 19:43:52 -0700</date>
            <delta_ts>2022-03-31 22:45:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238187-20220331194351.patch</filename>
            <type>text/plain</type>
            <size>64220</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTg3ZmYwZjY5MDI1MTEx
ODVhNTZlZmRhNjY1ZTI1YmNkYTVlMWVlYi4uNzQ1YTZhODU4NWQyNjZjMmIzMjQwMzg0ZTY0N2Nh
ZGYzMTk0NmRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIyLTAzLTMxICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGRlYnVn
IG92ZXJsYXkgZm9yIGludGVyYWN0aW9uIHJlZ2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODE4NworCisgICAgICAgIFJldmlld2VkIGJ5IFdl
bnNvbiBIc2llaC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjp3aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMpOgorICAgICAgICAq
IGRvbS9Ob2RlLmg6CisgICAgICAgIEV4cG9zZSBgd2lsbFJlc3BvbmRUb1RvdWNoRXZlbnRzYCwg
c2ltaWxhciB0byBgd2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50c2AuCisKKyAgICAgICAgKiBw
YWdlL0RlYnVnT3ZlcmxheVJlZ2lvbnMuaDoKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJs
YXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dXBk
YXRlUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhzRm9yUmVnaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6YWN0aXZlUmVnaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRyYXdDaGVja2JveCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcmFjdGlv
blJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnZhbHVlRm9yU2V0dGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdTZXR0aW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWdpb25PdmVybGF5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVi
dWdQYWdlT3ZlcmxheXM6OnVwZGF0ZU92ZXJsYXlSZWdpb25WaXNpYmlsaXR5KToKKyAgICAgICAg
KiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmg6CisgICAgICAgIChXZWJDb3JlOjpEZWJ1Z1BhZ2VP
dmVybGF5czo6ZGlkTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkRlYnVnUGFnZU92ZXJsYXlz
OjpkaWRDaGFuZ2VFdmVudEhhbmRsZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkRlYnVnUGFnZU92
ZXJsYXlzOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKToKKyAgICAgICAgQWRkIGFuIG92ZXJsYXkg
Zm9yIGluZGljYXRpbmcgaW50ZXJhY3Rpb24gcmVnaW9ucy4KKworICAgICAgICAqIHBhZ2UvRnJh
bWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVDb250YWluc0NvbXBs
ZXhCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmVzdGltYXRlZEJhY2tncm91bmRDb2xv
ckZvclJhbmdlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lU25hcHNob3R0aW5nLmg6CisgICAgICAg
ICogcGFnZS9UZXh0SW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlQ29udGFp
bnNDb21wbGV4QmFja2dyb3VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjplc3RpbWF0
ZWRCYWNrZ3JvdW5kQ29sb3JGb3JSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIE1vdmUgYGVzdGlt
YXRlZEJhY2tncm91bmRDb2xvckZvclJhbmdlYCBmcm9tIFRleHRJbmRpY2F0b3IgdG8KKyAgICAg
ICAgRnJhbWVTbmFwc2hvdHRpbmcgZm9yIGVhc2Ugb2YgcmV1c2UuCisgICAgICAgIAorICAgICAg
ICAqIHBhZ2UvSW50ZXJhY3Rpb25SZWdpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OmFic29sdXRlQm91bmRpbmdSZWN0Rm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cmVnaW9u
Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpjdXJzb3JUeXBlRm9yRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjppbnRlcmFjdGlvblJlZ2lvbnMpOgorICAgICAgICAqIHBhZ2UvSW50
ZXJhY3Rpb25SZWdpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcmFjdGlvblJl
Z2lvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9u
OjpkZWNvZGUpOgorICAgICAgICBBZGQgSW50ZXJhY3Rpb25SZWdpb24sIHdoaWNoIGtlZXBzIHRy
YWNrIG9mIHRoZSBsb2NhdGlvbiBvZiBhbmQgbWV0YWRhdGEKKyAgICAgICAgYWJvdXQgaW50ZXJh
Y3Rpb24gcmVnaW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFNpemU6Om1pbkRpbWVuc2lvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRTaXplOjptYXhEaW1lbnNpb24gY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpS
b3VuZGVkUmVjdDo6UmFkaWk6Om1pbmltdW1SYWRpdXMgY29uc3QpOgorICAgICAgICBBZGQgbWlu
aW11bVJhZGl1cygpIHRvIFJhZGlpLgorCiAyMDIyLTAzLTMxICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhBU0NJ
SUxpdGVyYWwpIG1vcmUgYnJvYWRseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlOWM2ZmNmY2RjY2FmOGRmMTNkNjFh
ZDdjNGQzODUyNzlhZTA4MjZlLi45ODA1MjJmYTkzYWRhOGM3OWVjNmE1YjNmNTBhZmFhMGQ4ZTI5
NzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIyLTAzLTMxICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGRlYnVnIG92ZXJsYXkg
Zm9yIGludGVyYWN0aW9uIHJlZ2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzODE4NworCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2ll
aC4KKworICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRS
ZWFkZXIuY3BwOgorICAgICAgICBVbmlmaWVkIHNvdXJjZSBmaXhlcy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAgQWRkIHBs
dW1iaW5nIGZvciBhIG5ldyBkZWJ1ZyBvdmVybGF5LgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW50ZXJhY3Rp
b25SZWdpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnRlcmFjdGFibGVS
ZWdpb25zSW5Sb290Vmlld0Nvb3JkaW5hdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW50ZXJhY3Rpb25SZWdp
b25zRm9ySG92ZXJQbGF0dGVyOmluUmVjdDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBpbnRlcmFjdGFibGVSZWdpb25zRm9ySG92ZXJQbGF0dGVyOmluUmVj
dDpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLSG92ZXJQbGF0dGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRl
ci5tbToKKyAgICAgICAgKC1bV0tIb3ZlclBsYXR0ZXIgdXBkYXRlRGVidWdJbmRpY2F0b3JdKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmludGVyYWN0aW9uUmVnaW9ucyk6CisgICAgICAgIE1vdmUgaW50ZXJhY3Rp
b25SZWdpb25zKCkgZnJvbSBXZWJQYWdlIHRvIFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uLgor
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmludGVyYWN0YWJsZVJlZ2lvbnNJblJvb3RWaWV3
Q29vcmRpbmF0ZXMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
CisKIDIwMjItMDMtMzEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZG9wdCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgbW9yZSBicm9hZGx5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQppbmRleCA0MDVmNjc0ZjBiMzg2YWUxYjE3YzIxZGVmZDNmMzJlNjRi
ZTEzMDdlLi5lMjQ0NTc4NmJiZjYxM2U3ZDU3NzYzMjllZTEyOTc2OGNlOGE1M2RjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKQEAgLTExMjcsNiArMTEyNyw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBwYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCiAgICAgcGFn
ZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmgKICAgICBwYWdlL0ltYWdlQW5hbHlzaXNRdWV1ZS5o
CisgICAgcGFnZS9JbnRlcmFjdGlvblJlZ2lvbi5oCiAgICAgcGFnZS9MYXlvdXRNaWxlc3RvbmUu
aAogICAgIHBhZ2UvTWVkaWFDYW5TdGFydExpc3RlbmVyLmgKICAgICBwYWdlL01lZGlhQ29udHJv
bHNDb250ZXh0TWVudUl0ZW0uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBjOTQyMGY1ZDQ2OWFkYTI2NDNk
MGY2ZjdmYTAxODc0YWYzN2UwNTU0Li41YjAzYjM0MzRhMWY2ZDY4MDA1NzhiMjIzNWMzY2MxMDg0
MjM3NDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTc1Myw2ICsxNzUzLDcgQEAgcGFnZS9GcmFtZVZp
ZXdMYXlvdXRDb250ZXh0LmNwcAogcGFnZS9IaXN0b3J5LmNwcAogcGFnZS9JbWFnZUFuYWx5c2lz
UXVldWUuY3BwCiBwYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCitwYWdlL0ludGVyYWN0
aW9uUmVnaW9uLmNwcAogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKIHBhZ2UvSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJFbnRyeS5jcHAKIHBhZ2UvTG9jYXRpb24uY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWY5NTkzYjBl
N2M4OGUzNGNhNWZjMzU2NzdlODVhNGNlZTc0OTQzMi4uMTlkOWI4NmEwN2Q2YTA3NGFlNjVkNjdk
NDg5MjM5Nzk1OGZjMTUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODg4LDYgKzg4OCw3IEBACiAJCTJEOUYwRTEzMTRGRjFD
QkYwMEJBMEZGNyAvKiBsaW5lYXJTUkdCLmljYyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ5RjBFMTIxNEZGMUNCRjAwQkEwRkY3IC8qIGxpbmVhclNS
R0IuaWNjICovOyB9OwogCQkyREEzOTdFNTI2NUM3Mzc1MDA0NjhGMzMgLyogTnVsbEdyYXBoaWNz
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkRBMzk3RTMyNjVDNzM3NDAwNDY4RjMzIC8qIE51bGxHcmFwaGljc0NvbnRleHQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyREFGMzQzRDFFQTdF
MEYxMDAzODJDRDMgLyogQ29uc3RhbnRQcm9wZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBRjM0M0IxRUE3RTBGMTAwMzgyQ0QzIC8qIENv
bnN0YW50UHJvcGVydHlNYXAuaCAqLzsgfTsKKwkJMkRDMDVDQTgyN0Q4MDk1NjAwNEVENDAzIC8q
IEludGVyYWN0aW9uUmVnaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyREMwNUNBMzI3RDdGNkI1MDA0RUQ0MDMgLyogSW50ZXJhY3Rpb25SZWdpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyREM4
RDM5ODI1RjJGRTk3MDBDRkNCQUIgLyogTW9kZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQzhEMzk3MjVGMkZFOTQwMENGQ0JBQiAvKiBNb2RlbC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJERDVB
NzI3MUVCRUU0N0QwMDlCQTU5NyAvKiBDb21wb3NpdGlvblVuZGVybGluZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRENUE3MjYxRUJFRTQ3RDAwOUJB
NTk3IC8qIENvbXBvc2l0aW9uVW5kZXJsaW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkREODcxNEIyNjVGNDM2NjAwNUY5OTdDIC8qIEJpZnVy
Y2F0ZWRHcmFwaGljc0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJERDg3MTQ5MjY1RjQzNjUwMDVGOTk3QyAvKiBCaWZ1cmNhdGVkR3JhcGhp
Y3NDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTgxNzcsNiArODE3OCw4IEBACiAJCTJEQUFFMzJEMTlEQ0FGNjAwMEUwMDJEMiAvKiBN
b2NrUGFnZU92ZXJsYXlDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TW9ja1BhZ2VPdmVybGF5Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJE
QUYzNDNBMUVBN0UwRjEwMDM4MkNEMyAvKiBDb25zdGFudFByb3BlcnR5TWFwLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnN0YW50UHJvcGVydHlNYXAuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREFGMzQzQjFFQTdFMEYxMDAzODJDRDMgLyog
Q29uc3RhbnRQcm9wZXJ0eU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b25zdGFudFByb3BlcnR5TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEQzA1
Q0EzMjdEN0Y2QjUwMDRFRDQwMyAvKiBJbnRlcmFjdGlvblJlZ2lvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnRlcmFjdGlvblJlZ2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREMw
NUNBNzI3RDgwMjE3MDA0RUQ0MDMgLyogSW50ZXJhY3Rpb25SZWdpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW50ZXJhY3Rpb25SZWdpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyREM4RDM5NjI1RjJGRTkzMDBDRkNCQUIgLyogTW9kZWwuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTW9kZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREM4RDM5NzI1
RjJGRTk0MDBDRkNCQUIgLyogTW9kZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kZWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRENUE3MjYxRUJFRTQ3RDAwOUJBNTk3IC8qIENvbXBv
c2l0aW9uVW5kZXJsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBv
c2l0aW9uVW5kZXJsaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDI3Miw2
ICsyNDI3NSw4IEBACiAJCQkJRjQ2RDUzOUQyNzNFRUNGNzAwMDlGQTgwIC8qIEltYWdlQW5hbHlz
aXNRdWV1ZS5oICovLAogCQkJCUY0ODI0MzRBMjYwQzMyRjEwMDIyNDk3QyAvKiBJbWFnZU92ZXJs
YXlDb250cm9sbGVyLmNwcCAqLywKIAkJCQlGNDgyNDM0ODI2MEMzMkYxMDAyMjQ5N0MgLyogSW1h
Z2VPdmVybGF5Q29udHJvbGxlci5oICovLAorCQkJCTJEQzA1Q0E3MjdEODAyMTcwMDRFRDQwMyAv
KiBJbnRlcmFjdGlvblJlZ2lvbi5jcHAgKi8sCisJCQkJMkRDMDVDQTMyN0Q3RjZCNTAwNEVENDAz
IC8qIEludGVyYWN0aW9uUmVnaW9uLmggKi8sCiAJCQkJMEY0NzEwRDUxREI2RkUyMjAwMkRDRUMz
IC8qIEludGVyc2VjdGlvbk9ic2VydmVyLmNwcCAqLywKIAkJCQkwRjQ3MTBENjFEQjZGRTIyMDAy
RENFQzMgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaCAqLywKIAkJCQkwRjQ3MTBENzFEQjZGRTIy
MDAyRENFQzMgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaWRsICovLApAQCAtMzUyOTIsNiArMzUy
OTcsNyBAQAogCQkJCUE1OTNDRjhCMTg0MDUzNTIwMEJGQ0UyNyAvKiBJbnNwZWN0b3JXZWJBZ2Vu
dEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QjgxQ0I0MUZBQTQ0NjIwMDM3RDFFNiAvKiBJ
bnNwZWN0b3JXb3JrZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjNBQkZFMEMxMzBFOURB
MDAwRTdGN0QxIC8qIEluc3RydW1lbnRpbmdBZ2VudHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTJE
QzA1Q0E4MjdEODA5NTYwMDRFRDQwMyAvKiBJbnRlcmFjdGlvblJlZ2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY0NzEwREMxREI2RkUyMjAwMkRDRUMzIC8qIEludGVyc2VjdGlvbk9ic2VydmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjhCNDU3MjFEQzNGQkEzMDA0NDNDM0YgLyogSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NzEwREYxREI2
RkUyMjAwMkRDRUMzIC8qIEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCmluZGV4IGQyZTI3ZDg0OTAxZDU1OTkyOTQ1OGM0NjdkOTFmN2Y2NGE3
YjgwMzAuLjNiNmQwNTY1NmVkYmVlMDE2NGM0N2ZmZGFlYzRiOTE1NWQzNTBiZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKQEAgLTI1MTAsNiArMjUxMCwxMyBAQCBib29sIE5vZGU6OndpbGxSZXNwb25kVG9N
b3VzZU1vdmVFdmVudHMoKQogICAgIHJldHVybiBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVz
KCkubW91c2Vtb3ZlRXZlbnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3Vz
ZW92ZXJFdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNlb3V0RXZl
bnQpOwogfQogCitib29sIE5vZGU6OndpbGxSZXNwb25kVG9Ub3VjaEV2ZW50cygpCit7CisgICAg
cmV0dXJuIGV2ZW50VHlwZXMoKS5jb250YWluc0lmKFsmXShjb25zdCBhdXRvJiB0eXBlKSB7Cisg
ICAgICAgIHJldHVybiBldmVudE5hbWVzKCkuaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZSwg
KnRoaXMpOworICAgIH0pOworfQorCiBib29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNr
RXZlbnRzKCkKIHsKICAgICAvLyBGSVhNRTogV2h5IGlzIHRoZSBpT1MgY29kZSBwYXRoIGRpZmZl
cmVudCBmcm9tIHRoZSBub24taU9TIGNvZGUgcGF0aD8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDNlZGMwMzBi
M2M1NjMxN2Q2Yjc0OTA4MDk1ZjA2OThlNjU5ZTY0Y2YuLjUzYzU4ZmI3MjMwNzk0ODAxNTE3ODNm
OTI3MmEwYjczMDk0NDJiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMjc1LDcgKzI3NSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0ZShib29sIGZs
YWcpIHsgc2V0Tm9kZUZsYWcoTm9kZUZsYWc6OlNlbGZPckFuY2VzdG9ySGFzRGlyQXV0bywgZmxh
Zyk7IH0KIAogICAgIC8vIFJldHVybnMgdGhlIGVuY2xvc2luZyBldmVudCBwYXJlbnQgRWxlbWVu
dCAob3Igc2VsZikgdGhhdCwgd2hlbiBjbGlja2VkLCB3b3VsZCB0cmlnZ2VyIGEgbmF2aWdhdGlv
bi4KLSAgICBFbGVtZW50KiBlbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBFbGVtZW50KiBlbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKTsK
IAogICAgIC8vIFRoZXNlIGxvdy1sZXZlbCBjYWxscyBnaXZlIHRoZSBjYWxsZXIgcmVzcG9uc2li
aWxpdHkgZm9yIG1haW50YWluaW5nIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIHRyZWUuCiAgICAgdm9p
ZCBzZXRQcmV2aW91c1NpYmxpbmcoTm9kZSogcHJldmlvdXMpIHsgbV9wcmV2aW91cyA9IHByZXZp
b3VzOyB9CkBAIC00NTcsNiArNDU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB3aWxs
UmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCk7CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25k
VG9Nb3VzZUNsaWNrRXZlbnRzKCk7CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3Vz
ZVdoZWVsRXZlbnRzKCk7CisgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Ub3VjaEV2ZW50
cygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgc2hvcnQgY29tcGFyZURvY3VtZW50
UG9zaXRpb24oTm9kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVn
T3ZlcmxheVJlZ2lvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdPdmVybGF5UmVnaW9u
cy5oCmluZGV4IDBmZGM4M2MzYWRhZjEwNjI1ZDRhMjg3OTRmNjA2OTc4Njc0MzgxNjQuLmNlNjJk
NDhlNjYzOTJmNjU3MGRmMTM5ZGM2NTYxNDE0ZTczMWMxZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGVidWdPdmVybGF5UmVnaW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRGVidWdPdmVybGF5UmVnaW9ucy5oCkBAIC0zNCw2ICszNCw3IEBAIGVudW0gY2xhc3MgRGVi
dWdPdmVybGF5UmVnaW9ucyA6IHVpbnQ4X3QgewogICAgIFdoZWVsRXZlbnRIYW5kbGVyUmVnaW9u
ID0gMSA8PCAxLAogICAgIFRvdWNoQWN0aW9uUmVnaW9uID0gMSA8PCAyLAogICAgIEVkaXRhYmxl
RWxlbWVudFJlZ2lvbiA9IDEgPDwgMywKKyAgICBJbnRlcmFjdGlvblJlZ2lvbiA9IDEgPDwgNCwK
IH07CiAKIH0KQEAgLTQ2LDcgKzQ3LDggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJDb3JlOjpEZWJ1Z092ZXJsYXlSZWdpb25zPiB7CiAgICAgICAgIFdlYkNvcmU6OkRlYnVnT3Zl
cmxheVJlZ2lvbnM6Ok5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uLAogICAgICAgICBXZWJDb3JlOjpE
ZWJ1Z092ZXJsYXlSZWdpb25zOjpXaGVlbEV2ZW50SGFuZGxlclJlZ2lvbiwKICAgICAgICAgV2Vi
Q29yZTo6RGVidWdPdmVybGF5UmVnaW9uczo6VG91Y2hBY3Rpb25SZWdpb24sCi0gICAgICAgIFdl
YkNvcmU6OkRlYnVnT3ZlcmxheVJlZ2lvbnM6OkVkaXRhYmxlRWxlbWVudFJlZ2lvbgorICAgICAg
ICBXZWJDb3JlOjpEZWJ1Z092ZXJsYXlSZWdpb25zOjpFZGl0YWJsZUVsZW1lbnRSZWdpb24sCisg
ICAgICAgIFdlYkNvcmU6OkRlYnVnT3ZlcmxheVJlZ2lvbnM6OkludGVyYWN0aW9uUmVnaW9uCiAg
ICAgPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zl
cmxheXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5k
ZXggN2IzZWM3OGYzZGFmNGE3YWMzNTc2MzllYmJkY2I1ZTMwMjE0ZDhkNy4uMGMwNjAzODgwYjc3
ZTE0M2MyNGIwNzlhNDczNGU1MTE5YzIyMzIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI3LDEyICsyNywxOCBAQAogI2luY2x1ZGUgIkRlYnVnUGFn
ZU92ZXJsYXlzLmgiCiAKICNpbmNsdWRlICJDb2xvckhhc2guaCIKKyNpbmNsdWRlICJDdXJzb3Iu
aCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRS
ZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbnRlcmFjdGlvblJlZ2lvbi5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlT3ZlcmxheS5oIgogI2luY2x1ZGUg
IlBhZ2VPdmVybGF5Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBhdGhVdGlsaXRpZXMuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNs
dWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC01
OSw4ICs2NSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsTW92ZVRvUGFnZShQYWdlT3Zlcmxh
eSYsIFBhZ2UqKSBmaW5hbDsKICAgICB2b2lkIGRpZE1vdmVUb1BhZ2UoUGFnZU92ZXJsYXkmLCBQ
YWdlKikgZmluYWw7CiAgICAgdm9pZCBkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBtb3Vz
ZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRTY3JvbGxGcmFtZShQYWdlT3ZlcmxheSYsIEZyYW1lJikgZmluYWw7CisgICAg
Ym9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRTY3JvbGxGcmFtZShQYWdlT3ZlcmxheSYsIEZyYW1lJikg
b3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHJlZ2lv
biBjaGFuZ2VkLgpAQCAtNzQsNiArODAsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX3JlZ2lv
bkNoYW5nZWQgeyB0cnVlIH07CiB9OwogCisjcHJhZ21hIG1hcmsgLSBNb3VzZVdoZWVsUmVnaW9u
T3ZlcmxheQorCiBjbGFzcyBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheSBmaW5hbCA6IHB1YmxpYyBS
ZWdpb25PdmVybGF5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1vdXNlV2hlZWxSZWdpb25P
dmVybGF5PiBjcmVhdGUoUGFnZSYgcGFnZSkKQEAgLTExNSw2ICsxMjMsOCBAQCBib29sIE1vdXNl
V2hlZWxSZWdpb25PdmVybGF5Ojp1cGRhdGVSZWdpb24oKQogI2VuZGlmCiB9CiAKKyNwcmFnbWEg
bWFyayAtIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheQorCiBjbGFzcyBOb25GYXN0U2Ny
b2xsYWJsZVJlZ2lvbk92ZXJsYXkgZmluYWwgOiBwdWJsaWMgUmVnaW9uT3ZlcmxheSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk+IGNyZWF0
ZShQYWdlJiBwYWdlKQpAQCAtMjE5LDYgKzIyOSwzMjkgQEAgdm9pZCBOb25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSwgR3JhcGhp
Y3MKICAgICBkcmF3UmVnaW9uKGNvbnRleHQsIG1fZXZlbnRUcmFja2luZ1JlZ2lvbnMuYXN5bmNo
cm9ub3VzRGlzcGF0Y2hSZWdpb24sIG1fY29sb3IsIGJvdW5kcyk7CiB9CiAKKyNwcmFnbWEgbWFy
ayAtIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheQorCitjbGFzcyBJbnRlcmFjdGlvblJlZ2lvbk92
ZXJsYXkgZmluYWwgOiBwdWJsaWMgUmVnaW9uT3ZlcmxheSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk+IGNyZWF0ZShQYWdlJiBwYWdlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5KHBh
Z2UpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5KFBhZ2UmIHBhZ2UpCisgICAgICAgIDogUmVnaW9uT3ZlcmxheShwYWdlLCBDb2xvcjo6
Z3JlZW4uY29sb3JXaXRoQWxwaGFCeXRlKDEwMikpCisgICAgeworICAgIH0KKworICAgIGJvb2wg
dXBkYXRlUmVnaW9uKCkgZmluYWw7CisgICAgdm9pZCBkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgZmluYWw7CisKKyAgICB2
b2lkIGRyYXdTZXR0aW5ncyhHcmFwaGljc0NvbnRleHQmKTsKKworICAgIGJvb2wgbW91c2VFdmVu
dChQYWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOworCisgICAg
RmxvYXRSZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7CisgICAgYm9vbCB2YWx1
ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJik7CisgICAgICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8
SW50ZXJhY3Rpb25SZWdpb24+IGFjdGl2ZVJlZ2lvbigpOworCisgICAgc3RydWN0IFNldHRpbmcg
eworICAgICAgICBTdHJpbmcga2V5OworICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgYm9v
bCB2YWx1ZTsKKyAgICB9OyAgICAKKworICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+IG1fc2V0dGlu
Z3MgeworICAgICAgICB7ICJjb25zdHJhaW4iLCAiQ29uc3RyYWluIHRvIFJlZ2lvbnMiLCB0cnVl
IH0sCisgICAgICAgIHsgImNsaXAiLCAiQ2xpcCB0byBSZWdpb25zIiwgdHJ1ZSB9LAorICAgICAg
ICB7ICJ3YXNoIiwgIkRyYXcgV2FzaCIsIGZhbHNlIH0sCisgICAgICAgIHsgImNvbnRleHR1YWxD
b2xvciIsICJDb250ZXh0dWFsIENvbG9yIiwgdHJ1ZSB9LAorICAgICAgICB7ICJjb250ZXh0dWFs
U2l6ZSIsICJDb250ZXh0dWFsIFNpemUiLCB0cnVlIH0sCisgICAgICAgIHsgImN1cnNvciIsICJT
aG93IEN1cnNvciIsIHRydWUgfSwKKyAgICAgICAgeyAiaG92ZXIiLCAiQ1NTIEhvdmVyIiwgZmFs
c2UgfSwKKyAgICAgICAgeyAicmVnaW9ucyIsICJTaG93IFJlZ2lvbnMiLCBmYWxzZSB9CisgICAg
fTsKKyAgICAKKyAgICBWZWN0b3I8SW50ZXJhY3Rpb25SZWdpb24+IG1fcmVnaW9uczsKKyAgICBJ
bnRQb2ludCBtX21vdXNlTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKK307CisKK2Jvb2wg
SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp1cGRhdGVSZWdpb24oKQoreworICAgIG1fb3Zlcmxh
eS0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgbV9yZWdpb25zID0gaW50ZXJhY3Rpb25SZWdpb25z
KG1fcGFnZSwgeyB7IDAsIDAgfSwgbV9wYWdlLm1haW5GcmFtZSgpLnZpZXcoKS0+Y29udGVudHNT
aXplKCkgfSk7CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBWZWN0b3I8UGF0
aD4gcGF0aHNGb3JSZWdpb24oY29uc3QgSW50ZXJhY3Rpb25SZWdpb24mIHJlZ2lvbikKK3sKKyAg
ICBzdGF0aWMgY29uc3RleHByIGZsb2F0IHBhZGRpbmcgPSAzOworICAgIHN0YXRpYyBjb25zdGV4
cHIgZmxvYXQgcmFkaXVzID0gNDsKKworICAgIFZlY3RvcjxGbG9hdFJlY3Q+IHJlY3RzOworICAg
IGZvciAoYXV0byByZWN0IDogcmVnaW9uLnJlY3RzSW5Db250ZW50Q29vcmRpbmF0ZXMpIHsKKyAg
ICAgICAgaWYgKHJlZ2lvbi5pc0lubGluZSkKKyAgICAgICAgICAgIHJlY3QuaW5mbGF0ZShwYWRk
aW5nKTsKKyAgICAgICAgcmVjdHMuYXBwZW5kKHJlY3QpOworICAgIH0KKyAgICByZXR1cm4gUGF0
aFV0aWxpdGllczo6cGF0aHNXaXRoU2hyaW5rV3JhcHBlZFJlY3RzKHJlY3RzLCBzdGQ6Om1heChy
ZWdpb24uYm9yZGVyUmFkaXVzLCByYWRpdXMpKTsKK30KKworc3RkOjpvcHRpb25hbDxJbnRlcmFj
dGlvblJlZ2lvbj4gSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjphY3RpdmVSZWdpb24oKQorewor
ICAgIHN0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdpb24+IGhpdFJlZ2lvbjsKKyAgICBmbG9h
dCBoaXRSZWdpb25BcmVhID0gMDsKKyAgICAKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHJlZ2lvbiA6
IG1fcmVnaW9ucykgeworICAgICAgICBmbG9hdCBhcmVhID0gMDsKKyAgICAgICAgRmxvYXRSZWN0
IGJvdW5kaW5nUmVjdDsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWN0IDogcmVnaW9uLnJl
Y3RzSW5Db250ZW50Q29vcmRpbmF0ZXMpIHsKKyAgICAgICAgICAgIGlmIChib3VuZGluZ1JlY3Qu
aXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGJvdW5kaW5nUmVjdCA9IHJlY3Q7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgYm91bmRpbmdSZWN0LnVuaXRlKHJlY3QpOworICAg
ICAgICAgICAgYXJlYSArPSByZWN0LmFyZWEoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
Ym91bmRpbmdSZWN0LmNvbnRhaW5zKG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVz
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gcGF0aHMgPSBwYXRoc0Zv
clJlZ2lvbihyZWdpb24pOworICAgICAgICBib29sIGRpZEhpdFJlZ2lvbiA9IGZhbHNlOworICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBwYXRocykgeworICAgICAgICAgICAgaWYgKHBh
dGguY29udGFpbnMobV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMpKSB7CisgICAg
ICAgICAgICAgICAgZGlkSGl0UmVnaW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCFkaWRIaXRS
ZWdpb24pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoYXJlYSA+IG1fcGFn
ZS5tYWluRnJhbWUoKS52aWV3KCktPmxheW91dFNpemUoKS5hcmVhKCkgLyAyKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGRpZEhpdFJlZ2lvbiAmJiAoIWhpdFJlZ2lvbiB8
fCBhcmVhIDwgaGl0UmVnaW9uQXJlYSkpIHsKKyAgICAgICAgICAgIGhpdFJlZ2lvbiA9IHJlZ2lv
bjsKKyAgICAgICAgICAgIGhpdFJlZ2lvbkFyZWEgPSBhcmVhOworICAgICAgICB9CisgICAgfQor
ICAgIAorICAgIHJldHVybiBoaXRSZWdpb247Cit9CisKK3N0YXRpYyB2b2lkIGRyYXdDaGVja2Jv
eChjb25zdCBTdHJpbmcmIHRleHQsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9u
dENhc2NhZGUmIGZvbnQsIGNvbnN0IEZsb2F0UmVjdCYgYm94LCBib29sIHN0YXRlKQoreworICAg
IHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgbGluZUhlaWdodCA9IDE0OworICAgIHN0YXRpYyBjb25z
dGV4cHIgZmxvYXQgY2hlY2tib3hWZXJ0aWNhbFBhZGRpbmcgPSAyOworICAgIHN0YXRpYyBjb25z
dGV4cHIgZmxvYXQgdGV4dEhvcml6b250YWxQYWRkaW5nID0gNDsKKworICAgIEZsb2F0UmVjdCBj
aGVja2JveFJlY3QgeyBib3gubG9jYXRpb24oKSArIEZsb2F0U2l6ZSB7IDAsIGNoZWNrYm94VmVy
dGljYWxQYWRkaW5nIH0sIEZsb2F0U2l6ZSB7IGxpbmVIZWlnaHQsIGxpbmVIZWlnaHQgfSB9Owor
CisgICAgVGV4dFJ1biB0ZXh0UnVuID0gVGV4dFJ1bih0ZXh0KTsKKyAgICBjb250ZXh0LnNldEZp
bGxDb2xvcihDb2xvcjo6YmxhY2spOworICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgdGV4dFJ1
biwgYm94LmxvY2F0aW9uKCkgKyBGbG9hdFNpemUgeyBjaGVja2JveFJlY3Qud2lkdGgoKSArIHRl
eHRIb3Jpem9udGFsUGFkZGluZywgbGluZUhlaWdodCB9KTsKKworICAgIFBhdGggY2hlY2tib3hQ
YXRoOworICAgIGNoZWNrYm94UGF0aC5hZGRSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0IHsg
Y2hlY2tib3hSZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSB7IDMgfSB9KTsKKworICAgIGlm
IChzdGF0ZSkgeworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6ZGFya0dyYXkp
OworICAgICAgICBjb250ZXh0LmZpbGxQYXRoKGNoZWNrYm94UGF0aCk7CisgICAgfQorCisgICAg
Y29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGFCeXRlKDEy
NykpOworICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDEpOworICAgIGNvbnRleHQuc3Ry
b2tlUGF0aChjaGVja2JveFBhdGgpOworfQorCitGbG9hdFJlY3QgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5OjpyZWN0Rm9yU2V0dGluZ0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgYXV0
byB2aWV3U2l6ZSA9IG1fcGFnZS5tYWluRnJhbWUoKS52aWV3KCktPmxheW91dFNpemUoKTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGZsb2F0IHNldHRpbmdzV2lkdGggPSAxNTA7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBmbG9hdCByb3dIZWlnaHQgPSAxNjsKKyAgICByZXR1cm4geworICAgICAgICBG
bG9hdFBvaW50IHsgdmlld1NpemUud2lkdGgoKSAtIHNldHRpbmdzV2lkdGggLSAxNCwgMTAgfQor
ICAgICAgICAgICAgKyBGbG9hdFNpemUgeyA0LCByb3dIZWlnaHQgKiBpbmRleCArIDIgfSwKKyAg
ICAgICAgRmxvYXRTaXplIHsgc2V0dGluZ3NXaWR0aCwgcm93SGVpZ2h0IH0KKyAgICB9OworfQor
Citib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNvbnN0IFN0
cmluZyYgbmFtZSkKK3sKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHNldHRpbmcgOiBtX3NldHRpbmdz
KSB7CisgICAgICAgIGlmIChuYW1lID09IHNldHRpbmcua2V5KQorICAgICAgICAgICAgcmV0dXJu
IHNldHRpbmcudmFsdWU7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCit2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1Nl
dHRpbmdzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisKKyAgICBGbG9hdFJlY3QgcmVjdCA9IHJl
Y3RGb3JTZXR0aW5nQXRJbmRleCgwKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgbV9z
ZXR0aW5ncy5zaXplKCk7IGkrKykKKyAgICAgICAgcmVjdC51bml0ZShyZWN0Rm9yU2V0dGluZ0F0
SW5kZXgoaSkpOworCisgICAgcmVjdC5leHBhbmQoRmxvYXRCb3hFeHRlbnQgeyA0LCA0LCA0LCA0
IH0pOworCisgICAgeworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoY29udGV4dCk7CisgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHsgfSwgNSwgQ29sb3IoQ29s
b3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjUpKTsKKyAgICAgICAgY29udGV4dC5maWxsUm91
bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCB7IHJlY3QsIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlp
IHsgNiB9IH0sIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC44NSkpOworICAg
IH0KKworICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOworICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSIpOworICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRTcGVjaWZpZWRTaXplKDEyKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0
ZWRTaXplKDEyKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25W
YWx1ZSg1MDApKTsKKyAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZm9udERlc2NyaXB0aW9u
KSwgMCwgMCk7CisgICAgZm9udC51cGRhdGUobnVsbHB0cik7CisKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9zZXR0aW5ncy5zaXplKCk7IGkrKykgeworICAgICAgICBjb25zdCBhdXRv
JiBzZXR0aW5nID0gbV9zZXR0aW5nc1tpXTsKKyAgICAgICAgZHJhd0NoZWNrYm94KHNldHRpbmcu
bmFtZSwgY29udGV4dCwgZm9udCwgcmVjdEZvclNldHRpbmdBdEluZGV4KGkpLCBzZXR0aW5nLnZh
bHVlKTsKKyAgICB9Cit9CisKK3ZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVj
dChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYg
ZGlydHlSZWN0KQoreworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihj
b250ZXh0KTsKKyAgICAKKyAgICBjb250ZXh0LmNsZWFyUmVjdChkaXJ0eVJlY3QpOworCisgICAg
aWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9ucyIpKSB7CisgICAgICAgIGNvbnRleHQuc2V0U3Ry
b2tlVGhpY2tuZXNzKDIpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpn
cmVlbik7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWdpb24gOiBtX3JlZ2lvbnMpIHsK
KyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjdCA6IHJlZ2lvbi5yZWN0c0luQ29udGVu
dENvb3JkaW5hdGVzKQorICAgICAgICAgICAgY29udGV4dC5zdHJva2VSZWN0KHJlY3QsIDIpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgYXV0byByZWdpb24gPSBhY3RpdmVSZWdpb24oKTsKKwor
ICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIikpIHsKKyAgICAg
ICAgYXV0byBncmFkaWVudERhdGEgPSBbJl0gKGZsb2F0IHJhZGl1cykgeworICAgICAgICAgICAg
R3JhZGllbnQ6OlJhZGlhbERhdGEgZ3JhZGllbnREYXRhOworICAgICAgICAgICAgZ3JhZGllbnRE
YXRhLnBvaW50MCA9IG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzOworICAgICAg
ICAgICAgZ3JhZGllbnREYXRhLnBvaW50MSA9IG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3Jk
aW5hdGVzOworICAgICAgICAgICAgZ3JhZGllbnREYXRhLnN0YXJ0UmFkaXVzID0gMDsKKyAgICAg
ICAgICAgIGdyYWRpZW50RGF0YS5lbmRSYWRpdXMgPSByYWRpdXM7CisgICAgICAgICAgICBncmFk
aWVudERhdGEuYXNwZWN0UmF0aW8gPSAxOworICAgICAgICAgICAgcmV0dXJuIGdyYWRpZW50RGF0
YTsKKyAgICAgICAgfTsKKworICAgICAgICBhdXRvIG1ha2VHcmFkaWVudCA9IFsmXSAoYm9vbCBo
YXNMaWdodEJhY2tncm91bmQsIEdyYWRpZW50OjpSYWRpYWxEYXRhIGdyYWRpZW50RGF0YSkgewor
ICAgICAgICAgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoV1RGTW92ZShncmFk
aWVudERhdGEpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKKyAgICAgICAgICAgIGlmIChyZWdp
b24gJiYgdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikp
IHsKKyAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihD
b2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuNSkgfSk7CisgICAgICAgICAgICAgICAgZ3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIGhhc0xpZ2h0QmFja2dyb3VuZCA/IENvbG9yKENvbG9y
OjpibGFjaykuY29sb3JXaXRoQWxwaGEoMC4wNSkgOiBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9y
V2l0aEFscGhhKDAuMSkgfSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRp
bmcoImNsaXAiKSB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgICAgICAg
ICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSku
Y29sb3JXaXRoQWxwaGEoMC4yKSB9KTsKKyAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29s
b3JTdG9wKHsgMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwKSB9KTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3Rv
cCh7IDAuMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjUpIH0pOworICAg
ICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6d2hp
dGUpLmNvbG9yV2l0aEFscGhhKDApIH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gZ3JhZGllbnQ7CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBjb25zdGV4cHIg
ZmxvYXQgZGVmYXVsdFJhZGl1cyA9IDUwOworICAgICAgICBib29sIHNob3VsZENsaXAgPSB2YWx1
ZUZvclNldHRpbmcoImNsaXAiKTsKKyAgICAgICAgVmVjdG9yPFBhdGg+IGNsaXBQYXRoczsKKwor
ICAgICAgICBpZiAoc2hvdWxkQ2xpcCkKKyAgICAgICAgICAgIGNsaXBQYXRocyA9IHBhdGhzRm9y
UmVnaW9uKCpyZWdpb24pOworCisgICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVu
dCA9ICFzaG91bGRDbGlwIHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2giKSAm
JiB2YWx1ZUZvclNldHRpbmcoImNsaXAiKSk7CisKKyAgICAgICAgaWYgKHNob3VsZFVzZUJhY2tk
cm9wR3JhZGllbnQpIHsKKyAgICAgICAgICAgIGlmIChzaG91bGRDbGlwKSB7CisgICAgICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7CisgICAgICAgICAgICAg
ICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiKSA/
IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVs
dFJhZGl1czsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQgfSk7CisgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwor
ICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBD
b2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOworCisgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KFdURk1vdmUoYmFja2Ryb3BHcmFkaWVudCkp
OworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxQYXRoKHBhdGgpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYXV0byBiYWNr
ZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEoZGVmYXVsdFJhZGl1
cyAqIDIpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKKyAgICAgICAgICAgICAgICBiYWNrZHJv
cEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjpibGFjaykuY29sb3JX
aXRoQWxwaGEoMC4yKSB9KTsKKyAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRD
b2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwor
CisgICAgICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQoV1RGTW92ZShiYWNrZHJv
cEdyYWRpZW50KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChkaXJ0eVJlY3Qp
OyAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgaGFzTGlnaHRC
YWNrZ3JvdW5kID0gZmFsc2U7CisgICAgICAgIGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVu
dCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciIpKQorICAgICAgICAgICAgaGFz
TGlnaHRCYWNrZ3JvdW5kID0gcmVnaW9uLT5oYXNMaWdodEJhY2tncm91bmQ7CisKKyAgICAgICAg
aWYgKHNob3VsZENsaXApIHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGNs
aXBQYXRocykgeworICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGlu
ZygiY29udGV4dHVhbFNpemUiKSA/IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1p
bkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNl
dEZpbGxHcmFkaWVudChtYWtlR3JhZGllbnQoaGFzTGlnaHRCYWNrZ3JvdW5kLCBncmFkaWVudERh
dGEocmFkaXVzKSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFBhdGgocGF0aCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb250ZXh0LnNldEZp
bGxHcmFkaWVudChtYWtlR3JhZGllbnQoaGFzTGlnaHRCYWNrZ3JvdW5kLCBncmFkaWVudERhdGEo
ZGVmYXVsdFJhZGl1cykpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoZGlydHlSZWN0
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOworCisgICAg
ZHJhd1NldHRpbmdzKGNvbnRleHQpOworfQorCitib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBldmVudCkKK3sKKyAgICBhdXRvIG1haW5GcmFtZVZpZXcgPSBtX3BhZ2UubWFpbkZyYW1l
KCkudmlldygpOworCisgICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OworCisg
ICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciIpKQorICAgICAgICBjdXJzb3JUb1NldCA9
IG5vbmVDdXJzb3IoKTsKKyAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3ZlciIpKQor
ICAgICAgICBjdXJzb3JUb1NldCA9IHBvaW50ZXJDdXJzb3IoKTsKKworICAgIGF1dG8gZXZlbnRJ
bkNvbnRlbnRzQ29vcmRpbmF0ZXMgPSBtYWluRnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2
ZW50LnBvc2l0aW9uKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NldHRpbmdz
LnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmICghcmVjdEZvclNldHRpbmdBdEluZGV4KGkpLmNv
bnRhaW5zKGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBjdXJzb3JUb1NldCA9IGhhbmRDdXJzb3IoKTsKKyAgICAgICAgaWYgKGV2ZW50
LmJ1dHRvbigpID09IExlZnRCdXR0b24gJiYgZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6
Ok1vdXNlUHJlc3NlZCkgeworICAgICAgICAgICAgbV9zZXR0aW5nc1tpXS52YWx1ZSA9ICFtX3Nl
dHRpbmdzW2ldLnZhbHVlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBpZiAoY3Vyc29yVG9TZXQpCisgICAgICAgIG1haW5GcmFtZVZpZXctPnNldEN1
cnNvcigqY3Vyc29yVG9TZXQpOworCisgICAgbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRp
bmF0ZXMgPSBldmVudEluQ29udGVudHNDb29yZGluYXRlczsKKyAgICBvdmVybGF5LnNldE5lZWRz
RGlzcGxheSgpOworCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3Vz
ZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNwcmFnbWEg
bWFyayAtIFJlZ2lvbk92ZXJsYXkKKwogUmVmPFJlZ2lvbk92ZXJsYXk+IFJlZ2lvbk92ZXJsYXk6
OmNyZWF0ZShQYWdlJiBwYWdlLCBEZWJ1Z1BhZ2VPdmVybGF5czo6UmVnaW9uVHlwZSByZWdpb25U
eXBlKQogewogICAgIHN3aXRjaCAocmVnaW9uVHlwZSkgewpAQCAtMjI2LDYgKzU1OSw4IEBAIFJl
ZjxSZWdpb25PdmVybGF5PiBSZWdpb25PdmVybGF5OjpjcmVhdGUoUGFnZSYgcGFnZSwgRGVidWdQ
YWdlT3ZlcmxheXM6OlJlZ2lvblR5CiAgICAgICAgIHJldHVybiBNb3VzZVdoZWVsUmVnaW9uT3Zl
cmxheTo6Y3JlYXRlKHBhZ2UpOwogICAgIGNhc2UgRGVidWdQYWdlT3ZlcmxheXM6OlJlZ2lvblR5
cGU6Ok5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOgogICAgICAgICByZXR1cm4gTm9uRmFzdFNjcm9s
bGFibGVSZWdpb25PdmVybGF5OjpjcmVhdGUocGFnZSk7CisgICAgY2FzZSBEZWJ1Z1BhZ2VPdmVy
bGF5czo6UmVnaW9uVHlwZTo6SW50ZXJhY3Rpb25SZWdpb246CisgICAgICAgIHJldHVybiBJbnRl
cmFjdGlvblJlZ2lvbk92ZXJsYXk6OmNyZWF0ZShwYWdlKTsKICAgICB9CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIE1vdXNlV2hlZWxSZWdpb25PdmVybGF5OjpjcmVhdGUo
cGFnZSk7CkBAIC0yOTYsNiArNjMxLDggQEAgdm9pZCBSZWdpb25PdmVybGF5OjpyZWNvbXB1dGVS
ZWdpb24oKQogICAgIG1fcmVnaW9uQ2hhbmdlZCA9IGZhbHNlOwogfQogCisjcHJhZ21hIG1hcmsg
LSBEZWJ1Z1BhZ2VPdmVybGF5cworCiBEZWJ1Z1BhZ2VPdmVybGF5cyYgRGVidWdQYWdlT3Zlcmxh
eXM6OnNpbmdsZXRvbigpCiB7CiAgICAgaWYgKCFzaGFyZWREZWJ1Z092ZXJsYXlzKQpAQCAtMzc5
LDYgKzcxNiwxMSBAQCB2b2lkIERlYnVnUGFnZU92ZXJsYXlzOjp1cGRhdGVPdmVybGF5UmVnaW9u
VmlzaWJpbGl0eShQYWdlJiBwYWdlLCBPcHRpb25TZXQ8RGVidQogICAgICAgICBzaG93UmVnaW9u
T3ZlcmxheShwYWdlLCBSZWdpb25UeXBlOjpXaGVlbEV2ZW50SGFuZGxlcnMpOwogICAgIGVsc2UK
ICAgICAgICAgaGlkZVJlZ2lvbk92ZXJsYXkocGFnZSwgUmVnaW9uVHlwZTo6V2hlZWxFdmVudEhh
bmRsZXJzKTsKKyAgICAKKyAgICBpZiAodmlzaWJsZVJlZ2lvbnMuY29udGFpbnMoRGVidWdPdmVy
bGF5UmVnaW9uczo6SW50ZXJhY3Rpb25SZWdpb24pKQorICAgICAgICBzaG93UmVnaW9uT3Zlcmxh
eShwYWdlLCBSZWdpb25UeXBlOjpJbnRlcmFjdGlvblJlZ2lvbik7CisgICAgZWxzZQorICAgICAg
ICBoaWRlUmVnaW9uT3ZlcmxheShwYWdlLCBSZWdpb25UeXBlOjpJbnRlcmFjdGlvblJlZ2lvbik7
CiB9CiAKIHZvaWQgRGVidWdQYWdlT3ZlcmxheXM6OnNldHRpbmdzQ2hhbmdlZChQYWdlJiBwYWdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5oCmluZGV4IDZkMmQ4NGVhMDYz
ZTliNzdlNGNjODcyNjg4NTA4YWJkYzk0NmZlZDcuLjM2ZmVjMjE4Y2NlZDAzMzQyM2ZhMjg0Y2E4
Yzg2NzAyYTIzOTYxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdl
T3ZlcmxheXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmgK
QEAgLTQzLDggKzQzLDkgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgUmVnaW9uVHlwZSB7CiAg
ICAgICAgIFdoZWVsRXZlbnRIYW5kbGVycywKICAgICAgICAgTm9uRmFzdFNjcm9sbGFibGVSZWdp
b24sCisgICAgICAgIEludGVyYWN0aW9uUmVnaW9uLAogICAgIH07Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBOdW1iZXJPZlJlZ2lvblR5cGVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFJlZ2lvblR5cGU6Ok5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKSArIDE7CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBOdW1iZXJPZlJlZ2lvblR5cGVzID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFJlZ2lvblR5cGU6OkludGVyYWN0aW9uUmVnaW9uKSArIDE7CiAKICAgICBzdGF0aWMgdm9p
ZCBkaWRMYXlvdXQoRnJhbWUmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VFdmVudEhhbmRs
ZXJzKEZyYW1lJik7CkBAIC05Myw2ICs5NCw3IEBAIGlubGluZSB2b2lkIERlYnVnUGFnZU92ZXJs
YXlzOjpkaWRMYXlvdXQoRnJhbWUmIGZyYW1lKQogCiAgICAgc2hhcmVkRGVidWdPdmVybGF5cy0+
cmVnaW9uQ2hhbmdlZChmcmFtZSwgUmVnaW9uVHlwZTo6V2hlZWxFdmVudEhhbmRsZXJzKTsKICAg
ICBzaGFyZWREZWJ1Z092ZXJsYXlzLT5yZWdpb25DaGFuZ2VkKGZyYW1lLCBSZWdpb25UeXBlOjpO
b25GYXN0U2Nyb2xsYWJsZVJlZ2lvbik7CisgICAgc2hhcmVkRGVidWdPdmVybGF5cy0+cmVnaW9u
Q2hhbmdlZChmcmFtZSwgUmVnaW9uVHlwZTo6SW50ZXJhY3Rpb25SZWdpb24pOwogfQogCiBpbmxp
bmUgdm9pZCBEZWJ1Z1BhZ2VPdmVybGF5czo6ZGlkQ2hhbmdlRXZlbnRIYW5kbGVycyhGcmFtZSYg
ZnJhbWUpCkBAIC0xMDEsNiArMTAzLDcgQEAgaW5saW5lIHZvaWQgRGVidWdQYWdlT3ZlcmxheXM6
OmRpZENoYW5nZUV2ZW50SGFuZGxlcnMoRnJhbWUmIGZyYW1lKQogCiAgICAgc2hhcmVkRGVidWdP
dmVybGF5cy0+cmVnaW9uQ2hhbmdlZChmcmFtZSwgUmVnaW9uVHlwZTo6V2hlZWxFdmVudEhhbmRs
ZXJzKTsKICAgICBzaGFyZWREZWJ1Z092ZXJsYXlzLT5yZWdpb25DaGFuZ2VkKGZyYW1lLCBSZWdp
b25UeXBlOjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbik7CisgICAgc2hhcmVkRGVidWdPdmVybGF5
cy0+cmVnaW9uQ2hhbmdlZChmcmFtZSwgUmVnaW9uVHlwZTo6SW50ZXJhY3Rpb25SZWdpb24pOwog
fQogCiBpbmxpbmUgdm9pZCBEZWJ1Z1BhZ2VPdmVybGF5czo6ZG9BZnRlclVwZGF0ZVJlbmRlcmlu
ZyhQYWdlJiBwYWdlKQpAQCAtMTEwLDYgKzExMyw3IEBAIGlubGluZSB2b2lkIERlYnVnUGFnZU92
ZXJsYXlzOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKFBhZ2UmIHBhZ2UpCiAKICAgICBzaGFyZWRE
ZWJ1Z092ZXJsYXlzLT51cGRhdGVSZWdpb25JZk5lY2Vzc2FyeShwYWdlLCBSZWdpb25UeXBlOjpX
aGVlbEV2ZW50SGFuZGxlcnMpOwogICAgIHNoYXJlZERlYnVnT3ZlcmxheXMtPnVwZGF0ZVJlZ2lv
bklmTmVjZXNzYXJ5KHBhZ2UsIFJlZ2lvblR5cGU6Ok5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKTsK
KyAgICBzaGFyZWREZWJ1Z092ZXJsYXlzLT51cGRhdGVSZWdpb25JZk5lY2Vzc2FyeShwYWdlLCBS
ZWdpb25UeXBlOjpJbnRlcmFjdGlvblJlZ2lvbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKaW5kZXggODI3M2E2
NGZjZGZiN2QzNGVhYTc2Zjk4YmE3YTIxMTdlYWZiZmJlNi4uNWQyODc2YTVkZmRhNWQ2NWVmYzI5
YWQ4MDA0ZGE5YzAzMTdmZjU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVNuYXBzaG90dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90
dGluZy5jcHAKQEAgLTMxLDE0ICszMSwxNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkZyYW1lU25hcHNob3R0aW5nLmgiCiAKKyNpbmNsdWRlICJDb2xvckJsZW5kaW5nLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3
LmgiCisjaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJSZW5kZXJBbmNlc3Rvckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIApAQCAtMTU4LDQgKzE2MSw1MCBAQCBSZWZQdHI8
SW1hZ2VCdWZmZXI+IHNuYXBzaG90Tm9kZShGcmFtZSYgZnJhbWUsIE5vZGUmIG5vZGUsIFNuYXBz
aG90T3B0aW9ucyYmIG9wdAogICAgIHJldHVybiBzbmFwc2hvdEZyYW1lUmVjdChmcmFtZSwgc25h
cHBlZEludFJlY3Qobm9kZS5yZW5kZXJlcigpLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVj
dCkpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKIH0KIAorc3RhdGljIGJvb2wgc3R5bGVDb250YWluc0Nv
bXBsZXhCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3sKKyAgICByZXR1cm4g
c3R5bGUuaGFzQmxlbmRNb2RlKCkgfHwgc3R5bGUuaGFzQmFja2dyb3VuZEltYWdlKCkgfHwgc3R5
bGUuaGFzQmFja2Ryb3BGaWx0ZXIoKTsKK30KKworQ29sb3IgZXN0aW1hdGVkQmFja2dyb3VuZENv
bG9yRm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBGcmFtZSYgZnJhbWUp
Cit7CisgICAgYXV0byBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IgPSBmcmFtZS52aWV3KCkgPyBm
cmFtZS52aWV3KCktPmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCkgOiBDb2xvcjo6dHJhbnNwYXJl
bnRCbGFjazsKKworICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gbnVsbHB0cjsKKyAgICBh
dXRvIGNvbW1vbkFuY2VzdG9yID0gY29tbW9uSW5jbHVzaXZlQW5jZXN0b3I8Q29tcG9zZWRUcmVl
PihyYW5nZSk7CisgICAgd2hpbGUgKGNvbW1vbkFuY2VzdG9yKSB7CisgICAgICAgIGlmIChpczxS
ZW5kZXJFbGVtZW50Pihjb21tb25BbmNlc3Rvci0+cmVuZGVyZXIoKSkpIHsKKyAgICAgICAgICAg
IHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oY29tbW9uQW5jZXN0b3ItPnJlbmRl
cmVyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY29tbW9uQW5j
ZXN0b3IgPSBjb21tb25BbmNlc3Rvci0+cGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpOworICAg
IH0KKyAgICAKKyAgICBhdXRvIGJvdW5kaW5nUmVjdEZvclJhbmdlID0gZW5jbG9zaW5nSW50UmVj
dCh1bmlvblJlY3RJZ25vcmluZ1plcm9SZWN0cyhSZW5kZXJPYmplY3Q6OmFic29sdXRlQm9yZGVy
QW5kVGV4dFJlY3RzKHJhbmdlLCB7CisgICAgICAgIFJlbmRlck9iamVjdDo6Qm91bmRpbmdSZWN0
QmVoYXZpb3I6OlJlc3BlY3RDbGlwcGluZywKKyAgICAgICAgUmVuZGVyT2JqZWN0OjpCb3VuZGlu
Z1JlY3RCZWhhdmlvcjo6VXNlVmlzaWJsZUJvdW5kcywKKyAgICAgICAgUmVuZGVyT2JqZWN0OjpC
b3VuZGluZ1JlY3RCZWhhdmlvcjo6SWdub3JlVGlueVJlY3RzLAorICAgIH0pKSk7CisKKyAgICBW
ZWN0b3I8Q29sb3I+IHBhcmVudFJlbmRlcmVyQmFja2dyb3VuZENvbG9yczsKKyAgICBmb3IgKGF1
dG8mIGFuY2VzdG9yIDogbGluZWFnZU9mVHlwZTxSZW5kZXJFbGVtZW50PigqcmVuZGVyZXIpKSB7
CisgICAgICAgIGF1dG8gYWJzb2x1dGVCb3VuZGluZ0JveCA9IGFuY2VzdG9yLmFic29sdXRlQm91
bmRpbmdCb3hSZWN0KCk7CisgICAgICAgIGF1dG8mIHN0eWxlID0gYW5jZXN0b3Iuc3R5bGUoKTsK
KyAgICAgICAgaWYgKCFhYnNvbHV0ZUJvdW5kaW5nQm94LmNvbnRhaW5zKGJvdW5kaW5nUmVjdEZv
clJhbmdlKSB8fCAhc3R5bGUuaGFzQmFja2dyb3VuZCgpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgaWYgKHN0eWxlQ29udGFpbnNDb21wbGV4QmFja2dyb3VuZChzdHlsZSkpCisg
ICAgICAgICAgICByZXR1cm4gZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yOworCisgICAgICAgIGF1
dG8gdmlzaXRlZERlcGVuZGVudEJhY2tncm91bmRDb2xvciA9IHN0eWxlLnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CisgICAgICAgIGlmICh2aXNpdGVk
RGVwZW5kZW50QmFja2dyb3VuZENvbG9yICE9IENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKQorICAg
ICAgICAgICAgcGFyZW50UmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3JzLmFwcGVuZCh2aXNpdGVkRGVw
ZW5kZW50QmFja2dyb3VuZENvbG9yKTsKKyAgICB9CisgICAgcGFyZW50UmVuZGVyZXJCYWNrZ3Jv
dW5kQ29sb3JzLnJldmVyc2UoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGJhY2tncm91bmRDb2xv
ciA6IHBhcmVudFJlbmRlcmVyQmFja2dyb3VuZENvbG9ycykKKyAgICAgICAgZXN0aW1hdGVkQmFj
a2dyb3VuZENvbG9yID0gYmxlbmRTb3VyY2VPdmVyKGVzdGltYXRlZEJhY2tncm91bmRDb2xvciwg
YmFja2dyb3VuZENvbG9yKTsKKworICAgIHJldHVybiBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3I7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFw
c2hvdHRpbmcuaAppbmRleCAxYjc3MDI2ZjUxMDkyMDAxY2RhODZlMzI0ODA4OTAzOTViMTQ1YjJl
Li5mNGVkZTIyYjVkYzI1OTQ4M2M4ZDUxMGQ3YjFiZTExYjNiODQxZWNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCkBAIC02Myw0ICs2Myw2IEBAIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcChGcmFtZSYsIGNvbnN0IEludFJlY3Qm
LCBjb25zdCBWZWN0CiBSZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90Tm9kZShGcmFtZSYsIE5v
ZGUmLCBTbmFwc2hvdE9wdGlvbnMmJik7CiBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IHNuYXBzaG90U2VsZWN0aW9uKEZyYW1lJiwgU25hcHNob3RPcHRpb25zJiYpOwogCitDb2xv
ciBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3JGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIGNv
bnN0IEZyYW1lJik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvSW50ZXJhY3Rpb25SZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9JbnRlcmFjdGlvblJlZ2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFmMTVhM2U2YWY4MzM2NmVkMzhl
NGY3MDc4NWE1NDczOGYxMWQ0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvSW50ZXJhY3Rpb25SZWdpb24uY3BwCkBAIC0wLDAgKzEsMTc1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGVyYWN0aW9uUmVnaW9uLmgiCisKKyNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVT
bmFwc2hvdHRpbmcuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHZW9tZXRy
eVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIkhUTUxBbmNob3JFbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgorI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNp
bmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGF0aFV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW50ZXJhY3Rp
b25SZWdpb246On5JbnRlcmFjdGlvblJlZ2lvbigpID0gZGVmYXVsdDsKKworc3RhdGljIEZsb2F0
UmVjdCBhYnNvbHV0ZUJvdW5kaW5nUmVjdEZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5n
ZSkKK3sKKyAgICByZXR1cm4gdW5pb25SZWN0SWdub3JpbmdaZXJvUmVjdHMoUmVuZGVyT2JqZWN0
OjphYnNvbHV0ZUJvcmRlckFuZFRleHRSZWN0cyhyYW5nZSwgeworICAgICAgICBSZW5kZXJPYmpl
Y3Q6OkJvdW5kaW5nUmVjdEJlaGF2aW9yOjpSZXNwZWN0Q2xpcHBpbmcsCisgICAgICAgIFJlbmRl
ck9iamVjdDo6Qm91bmRpbmdSZWN0QmVoYXZpb3I6OlVzZVZpc2libGVCb3VuZHMsCisgICAgICAg
IFJlbmRlck9iamVjdDo6Qm91bmRpbmdSZWN0QmVoYXZpb3I6Oklnbm9yZVRpbnlSZWN0cywKKyAg
ICB9KSk7Cit9CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEludGVyYWN0aW9uUmVnaW9uPiByZWdp
b25Gb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgYXV0byYgZnJhbWVWaWV3ID0g
KmVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpLT52aWV3KCk7CisgICAgYXV0byYgbWFpbkZyYW1l
VmlldyA9ICplbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKS0+bWFpbkZyYW1lKCkudmlldygpOwor
ICAgIAorICAgIEludFJlY3QgZnJhbWVDbGlwUmVjdDsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgIGZyYW1lQ2xpcFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGZyYW1lVmlldy5leHBvc2Vk
Q29udGVudFJlY3QoKSk7CisjZWxzZQorICAgIGlmIChhdXRvIHZpZXdFeHBvc2VkUmVjdCA9IGZy
YW1lVmlldy52aWV3RXhwb3NlZFJlY3QoKSkKKyAgICAgICAgZnJhbWVDbGlwUmVjdCA9IGVuY2xv
c2luZ0ludFJlY3QoKnZpZXdFeHBvc2VkUmVjdCk7CisgICAgZWxzZQorICAgICAgICBmcmFtZUNs
aXBSZWN0ID0gZnJhbWVWaWV3LnZpc2libGVDb250ZW50UmVjdCgpOworI2VuZGlmCisKKyAgICBh
dXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgVmVjdG9yPEZsb2F0UmVjdD4gcmVj
dHNJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7CisgICAgCisgICAgSW50ZXJhY3Rpb25SZWdpb24gcmVn
aW9uOworCisgICAgYXV0byBsaW5rUmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKGVsZW1l
bnQpOworICAgIAorICAgIGlmIChsaW5rUmFuZ2UpCisgICAgICAgIHJlZ2lvbi5oYXNMaWdodEJh
Y2tncm91bmQgPSBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3JGb3JSYW5nZSgqbGlua1JhbmdlLCAq
ZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCkpLmx1bWluYW5jZSgpID4gMC41OworICAgIAorICAg
IGlmIChsaW5rUmFuZ2UgJiYgcmVuZGVyZXItPmlzSW5saW5lKCkgJiYgIXJlbmRlcmVyLT5pc1Jl
cGxhY2VkT3JJbmxpbmVCbG9jaygpKSB7CisgICAgICAgIHJlZ2lvbi5pc0lubGluZSA9IHRydWU7
CisKKyAgICAgICAgT3B0aW9uU2V0PFJlbmRlck9iamVjdDo6Qm91bmRpbmdSZWN0QmVoYXZpb3I+
IGJlaGF2aW9yIHsgUmVuZGVyT2JqZWN0OjpCb3VuZGluZ1JlY3RCZWhhdmlvcjo6UmVzcGVjdENs
aXBwaW5nIH07CisgICAgICAgIHJlY3RzSW5Db250ZW50c0Nvb3JkaW5hdGVzID0gUmVuZGVyT2Jq
ZWN0OjphYnNvbHV0ZVRleHRSZWN0cygqbGlua1JhbmdlLCBiZWhhdmlvcikubWFwKFsmXShhdXRv
IHJlY3QpIC0+IEZsb2F0UmVjdCB7CisgICAgICAgICAgICByZXR1cm4gcmVjdDsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgaWYgKHJlY3RzSW5Db250ZW50c0Nvb3JkaW5hdGVzLmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgYXV0byBib3VuZGluZ1JlY3RGb3JSYW5nZSA9IGFic29sdXRlQm91bmRp
bmdSZWN0Rm9yUmFuZ2UoKmxpbmtSYW5nZSk7CisgICAgICAgICAgICBpZiAoIWJvdW5kaW5nUmVj
dEZvclJhbmdlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZWN0c0luQ29udGVudHNDb29y
ZGluYXRlcyA9IHsgYm91bmRpbmdSZWN0Rm9yUmFuZ2UgfTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGlmIChyZWN0c0luQ29udGVudHNDb29yZGluYXRlcy5pc0VtcHR5KCkpCisgICAgICAgIHJl
Y3RzSW5Db250ZW50c0Nvb3JkaW5hdGVzID0geyByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoKSB9OworICAgIAorICAgIGlmIChpczxSZW5kZXJCb3g+KCpyZW5kZXJlcikpIHsKKyAg
ICAgICAgUm91bmRlZFJlY3Q6OlJhZGlpIGJvcmRlclJhZGlpID0gZG93bmNhc3Q8UmVuZGVyQm94
PigqcmVuZGVyZXIpLmJvcmRlclJhZGlpKCk7CisgICAgICAgIHJlZ2lvbi5ib3JkZXJSYWRpdXMg
PSBib3JkZXJSYWRpaS5taW5pbXVtUmFkaXVzKCk7CisgICAgfQorCisgICAgcmVnaW9uLnJlY3Rz
SW5Db250ZW50Q29vcmRpbmF0ZXMgPSByZWN0c0luQ29udGVudHNDb29yZGluYXRlcy5tYXAoWyZd
KGF1dG8gcmVjdCkgeworICAgICAgICBhdXRvIGNvbnRlbnRzUmVjdCA9IHJlY3Q7CisKKyAgICAg
ICAgaWYgKCZmcmFtZVZpZXcgIT0gJm1haW5GcmFtZVZpZXcpCisgICAgICAgICAgICBjb250ZW50
c1JlY3QuaW50ZXJzZWN0KGZyYW1lQ2xpcFJlY3QpOworCisgICAgICAgIHJldHVybiBjb250ZW50
c1JlY3Q7CisgICAgfSk7CisgICAgICAgIAorICAgIHJldHVybiBXVEZNb3ZlKHJlZ2lvbik7Cit9
CisKK3N0YXRpYyBDdXJzb3JUeXBlIGN1cnNvclR5cGVGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1l
bnQpCit7CisgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CisgICAgYXV0
byogc3R5bGUgPSByZW5kZXJlciA/ICZyZW5kZXJlci0+c3R5bGUoKSA6IG51bGxwdHI7CisgICAg
YXV0byBjdXJzb3JUeXBlID0gc3R5bGUgPyBzdHlsZS0+Y3Vyc29yKCkgOiBDdXJzb3JUeXBlOjpB
dXRvOworCisgICAgaWYgKGN1cnNvclR5cGUgPT0gQ3Vyc29yVHlwZTo6QXV0byAmJiBlbGVtZW50
LmVuY2xvc2luZ0xpbmtFdmVudFBhcmVudE9yU2VsZigpICYmIGVsZW1lbnQuaXNMaW5rKCkpCisg
ICAgICAgIGN1cnNvclR5cGUgPSBDdXJzb3JUeXBlOjpQb2ludGVyOworCisgICAgcmV0dXJuIGN1
cnNvclR5cGU7Cit9CisKK1ZlY3RvcjxJbnRlcmFjdGlvblJlZ2lvbj4gaW50ZXJhY3Rpb25SZWdp
b25zKFBhZ2UmIHBhZ2UsIEZsb2F0UmVjdCByZWN0KQoreworICAgIFJlZiBmcmFtZShwYWdlLm1h
aW5GcmFtZSgpKTsKKyAgICBSZWZQdHIgZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKKyAgICAK
KyAgICBpZiAoIWZyYW1lVmlldykKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGZyYW1lVmll
dy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOworICAgIAorICAgIFJl
ZlB0ciBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIHJlc3VsdCA9IEhpdFRlc3RSZXN1bHQgeyBM
YXlvdXRSZWN0KHJlY3QpIH07CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdCh7CisgICAgICAg
IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwKKyAgICAgICAgSGl0VGVzdFJlcXVlc3Q6
OlR5cGU6OkFjdGl2ZSwKKyAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFsbG93VmlzaWJs
ZUNoaWxkRnJhbWVDb250ZW50T25seSwKKyAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkNv
bGxlY3RNdWx0aXBsZUVsZW1lbnRzCisgICAgfSk7CisgICAgZG9jdW1lbnQtPmhpdFRlc3QocmVx
dWVzdCwgcmVzdWx0KTsKKworICAgIFZlY3RvcjxJbnRlcmFjdGlvblJlZ2lvbj4gcmVnaW9uczsK
KworICAgIGZvciAoY29uc3QgYXV0byYgbm9kZSA6IHJlc3VsdC5saXN0QmFzZWRUZXN0UmVzdWx0
KCkpIHsKKyAgICAgICAgaWYgKCFpczxFbGVtZW50Pihub2RlLmdldCgpKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBhdXRvJiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4obm9k
ZS5nZXQoKSk7CisKKyAgICAgICAgaWYgKCFlbGVtZW50LndpbGxSZXNwb25kVG9Nb3VzZUNsaWNr
RXZlbnRzKCkgJiYgIWVsZW1lbnQud2lsbFJlc3BvbmRUb1RvdWNoRXZlbnRzKCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoY3Vyc29yVHlwZUZvckVsZW1lbnQoZWxlbWVu
dCkgIT0gQ3Vyc29yVHlwZTo6UG9pbnRlciAmJiAhaXM8SFRNTEZvcm1Db250cm9sRWxlbWVudD4o
ZWxlbWVudCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIHJlZ2lvbiA9
IHJlZ2lvbkZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgICAgIGlmIChyZWdpb24pCisgICAgICAg
ICAgICByZWdpb25zLmFwcGVuZCgqcmVnaW9uKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVnaW9u
czsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcmFjdGlvblJl
Z2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcmFjdGlvblJlZ2lvbi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU2ZjkwNjIyYTQyYmE1NzUwM2M4YTEwODVhNDU3MzJkMmNiMTdmYTIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyYWN0aW9uUmVnaW9uLmgKQEAgLTAsMCAr
MSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRmxvYXRSZWN0
LmgiCisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGVjb2RlcjsKK2NsYXNzIEVuY29kZXI7Cit9
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGFnZTsKKworc3RydWN0IEludGVyYWN0
aW9uUmVnaW9uIHsKKyAgICBWZWN0b3I8RmxvYXRSZWN0PiByZWN0c0luQ29udGVudENvb3JkaW5h
dGVzOworICAgIGJvb2wgaXNJbmxpbmUgeyBmYWxzZSB9OworICAgIGJvb2wgaGFzTGlnaHRCYWNr
Z3JvdW5kIHsgZmFsc2UgfTsKKyAgICBmbG9hdCBib3JkZXJSYWRpdXMgeyAwIH07CisgICAgCisg
ICAgV0VCQ09SRV9FWFBPUlQgfkludGVyYWN0aW9uUmVnaW9uKCk7CisgICAgCisgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEludGVyYWN0aW9uUmVnaW9u
PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKworV0VCQ09SRV9FWFBPUlQgVmVjdG9yPEludGVyYWN0
aW9uUmVnaW9uPiBpbnRlcmFjdGlvblJlZ2lvbnMoUGFnZSYsIEZsb2F0UmVjdCByZWN0SW5Db250
ZW50Q29vcmRpbmF0ZXMpOworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBJbnRlcmFj
dGlvblJlZ2lvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ciA8PCByZWN0c0luQ29udGVudENvb3JkaW5hdGVzOworICAgIGVuY29kZXIgPDwgaXNJbmxpbmU7
CisgICAgZW5jb2RlciA8PCBoYXNMaWdodEJhY2tncm91bmQ7CisgICAgZW5jb2RlciA8PCBib3Jk
ZXJSYWRpdXM7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPElu
dGVyYWN0aW9uUmVnaW9uPiBJbnRlcmFjdGlvblJlZ2lvbjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8RmxvYXRSZWN0Pj4gcmVjdHNJbkNvbnRl
bnRDb29yZGluYXRlczsKKyAgICBkZWNvZGVyID4+IHJlY3RzSW5Db250ZW50Q29vcmRpbmF0ZXM7
CisgICAgaWYgKCFyZWN0c0luQ29udGVudENvb3JkaW5hdGVzKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNJbmxpbmU7CisgICAg
ZGVjb2RlciA+PiBpc0lubGluZTsKKyAgICBpZiAoIWlzSW5saW5lKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzTGlnaHRCYWNr
Z3JvdW5kOworICAgIGRlY29kZXIgPj4gaGFzTGlnaHRCYWNrZ3JvdW5kOworICAgIGlmICghaGFz
TGlnaHRCYWNrZ3JvdW5kKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIAorICAg
IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGJvcmRlclJhZGl1czsKKyAgICBkZWNvZGVyID4+IGJvcmRl
clJhZGl1czsKKyAgICBpZiAoIWJvcmRlclJhZGl1cykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHJldHVybiB7IHsKKyAgICAgICAgV1RGTW92ZSgqcmVjdHNJbkNvbnRlbnRD
b29yZGluYXRlcyksCisgICAgICAgIFdURk1vdmUoKmlzSW5saW5lKSwKKyAgICAgICAgV1RGTW92
ZSgqaGFzTGlnaHRCYWNrZ3JvdW5kKSwKKyAgICAgICAgV1RGTW92ZSgqYm9yZGVyUmFkaXVzKQor
ICAgIH0gfTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5k
aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKaW5kZXgg
Y2E1ZmJlNjNjY2Y2Y2RiOThhZjg1ZWQ1OTI5YTEzMDM4ZDY5YmZjNy4uNDBkMDIwNTM4YzM5MmE0
NTM5NTVhOTJlNGM2MWRhZDAzODMwOWViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9UZXh0SW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0
b3IuY3BwCkBAIC0xNzUsMTEgKzE3NSw2IEBAIHN0YXRpYyBib29sIHRha2VTbmFwc2hvdHMoVGV4
dEluZGljYXRvckRhdGEmIGRhdGEsIEZyYW1lJiBmcmFtZSwgSW50UmVjdCBzbmFwc2hvCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHN0eWxlQ29udGFpbnNDb21wbGV4QmFja2dy
b3VuZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCi17Ci0gICAgcmV0dXJuIHN0eWxlLmhhc0Js
ZW5kTW9kZSgpIHx8IHN0eWxlLmhhc0JhY2tncm91bmRJbWFnZSgpIHx8IHN0eWxlLmhhc0JhY2tk
cm9wRmlsdGVyKCk7Ci19Ci0KIHN0YXRpYyBIYXNoU2V0PENvbG9yPiBlc3RpbWF0ZWRUZXh0Q29s
b3JzRm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewogICAgIEhhc2hTZXQ8Q29s
b3I+IGNvbG9yczsKQEAgLTIwMyw0MiArMTk4LDYgQEAgc3RhdGljIEZsb2F0UmVjdCBhYnNvbHV0
ZUJvdW5kaW5nUmVjdEZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKICAgICB9KSk7
CiB9CiAKLXN0YXRpYyBDb2xvciBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3JGb3JSYW5nZShjb25z
dCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGNvbnN0IEZyYW1lJiBmcmFtZSkKLXsKLSAgICBhdXRvIGVz
dGltYXRlZEJhY2tncm91bmRDb2xvciA9IGZyYW1lLnZpZXcoKSA/IGZyYW1lLnZpZXcoKS0+ZG9j
dW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSA6IENvbG9yOjp0cmFuc3BhcmVudEJsYWNrOwotCi0gICAg
UmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSBudWxscHRyOwotICAgIGF1dG8gY29tbW9uQW5jZXN0
b3IgPSBjb21tb25JbmNsdXNpdmVBbmNlc3RvcjxDb21wb3NlZFRyZWU+KHJhbmdlKTsKLSAgICB3
aGlsZSAoY29tbW9uQW5jZXN0b3IpIHsKLSAgICAgICAgaWYgKGlzPFJlbmRlckVsZW1lbnQ+KGNv
bW1vbkFuY2VzdG9yLT5yZW5kZXJlcigpKSkgewotICAgICAgICAgICAgcmVuZGVyZXIgPSBkb3du
Y2FzdDxSZW5kZXJFbGVtZW50Pihjb21tb25BbmNlc3Rvci0+cmVuZGVyZXIoKSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjb21tb25BbmNlc3RvciA9IGNvbW1vbkFu
Y2VzdG9yLT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCk7Ci0gICAgfQotCi0gICAgYXV0byBi
b3VuZGluZ1JlY3RGb3JSYW5nZSA9IGVuY2xvc2luZ0ludFJlY3QoYWJzb2x1dGVCb3VuZGluZ1Jl
Y3RGb3JSYW5nZShyYW5nZSkpOwotICAgIFZlY3RvcjxDb2xvcj4gcGFyZW50UmVuZGVyZXJCYWNr
Z3JvdW5kQ29sb3JzOwotICAgIGZvciAoOyAhIXJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVy
LT5wYXJlbnQoKSkgewotICAgICAgICBhdXRvIGFic29sdXRlQm91bmRpbmdCb3ggPSByZW5kZXJl
ci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKLSAgICAgICAgYXV0byYgc3R5bGUgPSByZW5k
ZXJlci0+c3R5bGUoKTsKLSAgICAgICAgaWYgKCFhYnNvbHV0ZUJvdW5kaW5nQm94LmNvbnRhaW5z
KGJvdW5kaW5nUmVjdEZvclJhbmdlKSB8fCAhc3R5bGUuaGFzQmFja2dyb3VuZCgpKQotICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKHN0eWxlQ29udGFpbnNDb21wbGV4QmFja2dy
b3VuZChzdHlsZSkpCi0gICAgICAgICAgICByZXR1cm4gZXN0aW1hdGVkQmFja2dyb3VuZENvbG9y
OwotCi0gICAgICAgIGF1dG8gdmlzaXRlZERlcGVuZGVudEJhY2tncm91bmRDb2xvciA9IHN0eWxl
LnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0gICAg
ICAgIGlmICh2aXNpdGVkRGVwZW5kZW50QmFja2dyb3VuZENvbG9yICE9IENvbG9yOjp0cmFuc3Bh
cmVudEJsYWNrKQotICAgICAgICAgICAgcGFyZW50UmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3JzLmFw
cGVuZCh2aXNpdGVkRGVwZW5kZW50QmFja2dyb3VuZENvbG9yKTsKLSAgICB9Ci0gICAgcGFyZW50
UmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3JzLnJldmVyc2UoKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8m
IGJhY2tncm91bmRDb2xvciA6IHBhcmVudFJlbmRlcmVyQmFja2dyb3VuZENvbG9ycykKLSAgICAg
ICAgZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yID0gYmxlbmRTb3VyY2VPdmVyKGVzdGltYXRlZEJh
Y2tncm91bmRDb2xvciwgYmFja2dyb3VuZENvbG9yKTsKLQotICAgIHJldHVybiBlc3RpbWF0ZWRC
YWNrZ3JvdW5kQ29sb3I7Ci19Ci0KIHN0YXRpYyBib29sIGhhc0FueUlsbGVnaWJsZUNvbG9ycyhU
ZXh0SW5kaWNhdG9yRGF0YSYgZGF0YSwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvciwgSGFz
aFNldDxDb2xvcj4mJiB0ZXh0Q29sb3JzKQogewogICAgIGlmIChkYXRhLm9wdGlvbnMuY29udGFp
bnMoVGV4dEluZGljYXRvck9wdGlvbjo6UGFpbnRBbGxDb250ZW50KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuaAppbmRleCA0YTZkNzc4NTMwYWY0Y2I2
YjA0NGZiNzc3ZTNlNmZhOGU5N2MzYWViLi42YjAzMjI1MjM2MjdiZTM5OTI0ZDk2YzNiZDJhNmFk
ZGFmNDMzMjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9M
YXlvdXRTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0
U2l6ZS5oCkBAIC01OCw2ICs1OCw5IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IHdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQogICAgIExheW91dFVuaXQgaGVpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gbV9oZWlnaHQ7IH0KIAorICAgIExheW91dFVuaXQgbWluRGltZW5zaW9uKCkgY29u
c3QgeyByZXR1cm4gc3RkOjptaW4obV93aWR0aCwgbV9oZWlnaHQpOyB9CisgICAgTGF5b3V0VW5p
dCBtYXhEaW1lbnNpb24oKSBjb25zdCB7IHJldHVybiBzdGQ6Om1heChtX3dpZHRoLCBtX2hlaWdo
dCk7IH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2V0V2lkdGgoVCB3aWR0aCkg
eyBtX3dpZHRoID0gd2lkdGg7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNldEhl
aWdodChUIGhlaWdodCkgeyBtX2hlaWdodCA9IGhlaWdodDsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaAppbmRleCAxMTdiZWVmN2EzM2MyZmVi
MDE4NzUyMzA2NWRmZTU5MjQzNGUwNTkwLi4xMTEyYjg0NGRmYjE1NjU4NTUxODcwOGRmYzY1MmM4
MDlhZjcxMzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
b3VuZGVkUmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5k
ZWRSZWN0LmgKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogCiAgICAgICAgIFJhZGlpIHRyYW5z
cG9zZWRSYWRpaSgpIGNvbnN0IHsgcmV0dXJuIFJhZGlpKG1fdG9wTGVmdC50cmFuc3Bvc2VkU2l6
ZSgpLCBtX3RvcFJpZ2h0LnRyYW5zcG9zZWRTaXplKCksIG1fYm90dG9tTGVmdC50cmFuc3Bvc2Vk
U2l6ZSgpLCBtX2JvdHRvbVJpZ2h0LnRyYW5zcG9zZWRTaXplKCkpOyB9CiAKKyAgICAgICAgTGF5
b3V0VW5pdCBtaW5pbXVtUmFkaXVzKCkgY29uc3QgeyByZXR1cm4gc3RkOjptaW4oeyBtX3RvcExl
ZnQubWluRGltZW5zaW9uKCksIG1fdG9wUmlnaHQubWluRGltZW5zaW9uKCksIG1fYm90dG9tTGVm
dC5taW5EaW1lbnNpb24oKSwgbV9ib3R0b21SaWdodC5taW5EaW1lbnNpb24oKSB9KTsgfQorCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgTGF5b3V0U2l6ZSBtX3RvcExlZnQ7CiAgICAgICAgIExheW91
dFNpemUgbV90b3BSaWdodDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9N
ZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCmluZGV4IGEz
ZmJiNzYwZTc3NjA0MDc4ZDhlNTBjMTRjZGQ3ZDdjZWE2ZWI2ZDMuLmViOWViNTRhODIyN2NhMWQ4
ODAzNzkwNGYwYjY5NDlkNTI3NTE4ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNw
cApAQCAtMzYsOSArMzYsMTEgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0luYmFuZFRleHRUcmFja1By
aXZhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVmlkZW9UcmFja1ByaXZhdGUuaD4KICNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0
aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFT
b2Z0TGluay5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0
ZS5oCmluZGV4IDdhNzhlMmFlZWE3NWZlYWNlMzI3NmZiNDQ4MmVmM2RmODIyMDUxMGEuLjA5NGY5
YmZhNTBiZTRlOWYwYzk0Nzc4MjVlYzBhMGM5MzZmZGY0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCkBA
IC0zNyw2ICszNyw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tEZWJ1Z092
ZXJsYXlSZWdpb25zKSB7CiAgICAgX1dLV2hlZWxFdmVudEhhbmRsZXJSZWdpb24gPSAxIDw8IDEs
CiAgICAgX1dLVG91Y2hBY3Rpb25SZWdpb24gPSAxIDw8IDIsCiAgICAgX1dLRWRpdGFibGVFbGVt
ZW50UmVnaW9uID0gMSA8PCAzLAorICAgIF9XS0ludGVyYWN0aW9uUmVnaW9uIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkgPSAxIDw8IDQsCiB9IFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4wKSk7CiAKIHR5cGVkZWYgTlNfT1BU
SU9OUyhOU1VJbnRlZ2VyLCBfV0tKYXZhU2NyaXB0UnVudGltZUZsYWdzKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0MDYxNmNhNzFmNWI1Zjc3ZmYwNjNk
ZDU1NWNjYjA3MDAyM2NmNzg3Li41MThlMjFjZGE1ZDc0NDFhY2MwOWFmNzQ3NjE0ZjNlZTlhNmIx
NGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTExMjgy
LDkgKzExMjgyLDkgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnNob3VsZEVuYWJsZUNhcHRpdmVQb3J0
YWxNb2RlKCkgY29uc3QKICAgICByZXR1cm4gbV9jb25maWd1cmF0aW9uLT5jYXB0aXZlUG9ydGFs
TW9kZUVuYWJsZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmludGVyYWN0YWJsZVJlZ2lv
bnNJblJvb3RWaWV3Q29vcmRpbmF0ZXMoRmxvYXRSZWN0IHJlY3QsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPEZsb2F0UmVjdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQ
YWdlUHJveHk6OmludGVyYWN0aW9uUmVnaW9ucyhGbG9hdFJlY3QgcmVjdEluQ29udGVudENvb3Jk
aW5hdGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxJbnRlcmFjdGlvblJlZ2lvbj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViUGFnZTo6SW50ZXJhY3RhYmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRlcyhyZWN0
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJhY3Rpb25SZWdpb25zKHJlY3RJbkNvbnRlbnRDb29yZGlu
YXRlcyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogI2lmIFBMQVRGT1JNKENP
Q09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBiYjFmYWNmYzg2
MGFiYTM3YTkxYWYxZmFmM2RlYTQwYmJkNDllMDkzLi4xYzdkNTVjMTQzZTM3MGI4MmFiNjg5ODk1
NDBmYjA1ZTRhMTQ3MmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMjk5LDYgKzI5OSw3IEBAIHN0cnVjdCBFbGVtZW50Q29udGV4dDsKIHN0cnVjdCBFeGNlcHRp
b25EZXRhaWxzOwogc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3M7CiBzdHJ1Y3QgR2xvYmFsV2lu
ZG93SWRlbnRpZmllcjsKK3N0cnVjdCBJbnRlcmFjdGlvblJlZ2lvbjsKIHN0cnVjdCBMaW5rSWNv
bjsKIHN0cnVjdCBNZWRpYVN0cmVhbVJlcXVlc3Q7CiBzdHJ1Y3QgTWVkaWFVc2FnZUluZm87CkBA
IC0yMDgyLDcgKzIwODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGFzc2lmeU1vZGFsQ29udGFp
bmVyQ29udHJvbHMoVmVjdG9yPFN0cmluZz4mJiB0ZXh0cywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8V2ViQ29yZTo6TW9kYWxDb250YWluZXJDb250cm9sVHlwZT4mJik+JiYpOwogICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTW9kYWxDb250YWluZXIoT3B0aW9uU2V0PFdlYkNvcmU6Ok1v
ZGFsQ29udGFpbmVyQ29udHJvbFR5cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
Ok1vZGFsQ29udGFpbmVyRGVjaXNpb24pPiYmKTsKIAotICAgIHZvaWQgaW50ZXJhY3RhYmxlUmVn
aW9uc0luUm9vdFZpZXdDb29yZGluYXRlcyhXZWJDb3JlOjpGbG9hdFJlY3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4pPiYmKTsKKyAgICB2b2lkIGlu
dGVyYWN0aW9uUmVnaW9ucyhXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdEluQ29udGVudENvb3JkaW5h
dGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpJbnRlcmFjdGlvblJl
Z2lvbj4pPiYmKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIHNldFNl
cnZpY2VXb3JrZXJPcGVuV2luZG93Q29tcGxldGlvbkNhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZWRj
NDVhOTBkNjRmMTI4OWU2YzIzNTU3ZWVkMDI4NGM2MGI5MTE0Yi4uNDVkZWJiZGE3Mzg5ZDhlYTI0
ZjhiYjgyN2I3YjcwYTkwNTBkN2U5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC05OTk0LDEwICs5OTk0
LDEwIEBAIC0gKHZvaWQpcG9zaXRpb25JbmZvcm1hdGlvbkZvckhvdmVyUGxhdHRlcjooV0tIb3Zl
clBsYXR0ZXIgKilob3ZlclBsYXR0ZXIgd2l0aFJlCiAgICAgW3NlbGYgZG9BZnRlclBvc2l0aW9u
SW5mb3JtYXRpb25VcGRhdGU6Y29tcGxldGlvbkhhbmRsZXIgZm9yUmVxdWVzdDpyZXF1ZXN0XTsK
IH0KIAotLSAodm9pZClpbnRlcmFjdGFibGVSZWdpb25zRm9ySG92ZXJQbGF0dGVyOihXS0hvdmVy
UGxhdHRlciAqKXBsYXR0ZXIgaW5SZWN0OihXZWJDb3JlOjpGbG9hdFJlY3QpcmVjdCBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4pKWNvbXBsZXRp
b25IYW5kbGVyCistICh2b2lkKWludGVyYWN0aW9uUmVnaW9uc0ZvckhvdmVyUGxhdHRlcjooV0tI
b3ZlclBsYXR0ZXIgKilwbGF0dGVyIGluUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KXJlY3RJbkNv
bnRlbnRDb29yZGluYXRlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVmVjdG9yPFdlYkNv
cmU6OkludGVyYWN0aW9uUmVnaW9uPikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBfcGFnZS0+
aW50ZXJhY3RhYmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRlcyhyZWN0LCBbY29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoVmVjdG9yPFdlYkNv
cmU6OkZsb2F0UmVjdD4gcmVjdHMpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVjdHMp
OworICAgIF9wYWdlLT5pbnRlcmFjdGlvblJlZ2lvbnMocmVjdEluQ29udGVudENvb3JkaW5hdGVz
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
VmVjdG9yPFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uPiByZWdpb25zKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHJlZ2lvbnMpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5oCmluZGV4IGNkYmJkODAwNmM3NTAwNTBiNTFm
MTZmMzI5NGI4NTIwOWMyN2MyNTIuLjdjZjQyMzEwMWNiMDQ0MGNhYmYyNWYxYWQwYWFkMzBjMTg1
MzAxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxh
dHRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5o
CkBAIC0yOSw2ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZsb2F0UmVj
dDsKK3N0cnVjdCBJbnRlcmFjdGlvblJlZ2lvbjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC00NCw3ICs0NSw3IEBAIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdDsKIEBy
ZXF1aXJlZAogLSAodm9pZClwb3NpdGlvbkluZm9ybWF0aW9uRm9ySG92ZXJQbGF0dGVyOihXS0hv
dmVyUGxhdHRlciAqKWhvdmVyUGxhdHRlciB3aXRoUmVxdWVzdDooV2ViS2l0OjpJbnRlcmFjdGlv
bkluZm9ybWF0aW9uUmVxdWVzdCYpcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbikpY29tcGxldGlvbkhhbmRs
ZXI7CiAKLS0gKHZvaWQpaW50ZXJhY3RhYmxlUmVnaW9uc0ZvckhvdmVyUGxhdHRlcjooV0tIb3Zl
clBsYXR0ZXIgKilob3ZlclBsYXR0ZXIgaW5SZWN0OihXZWJDb3JlOjpGbG9hdFJlY3QpcmVjdCBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4pKWNv
bXBsZXRpb25IYW5kbGVyOworLSAodm9pZClpbnRlcmFjdGlvblJlZ2lvbnNGb3JIb3ZlclBsYXR0
ZXI6KFdLSG92ZXJQbGF0dGVyICopaG92ZXJQbGF0dGVyIGluUmVjdDooV2ViQ29yZTo6RmxvYXRS
ZWN0KXJlY3RJbkNvbnRlbnRDb29yZGluYXRlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
VmVjdG9yPFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uPikpY29tcGxldGlvbkhhbmRsZXI7CiAK
IEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQ
bGF0dGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyLm1t
CmluZGV4IDQwNDI2MDUxNjJiNzkxM2I4OTVhNTEzODM1YTMxMjE5ZjBlMTdlODEuLmE3OTk1YzRj
YThiMmU1NzRkZWZkNjM4MWJjODE2MjI5NmFiODgxMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9y
dCAiV0tIb3ZlclBsYXR0ZXJQYXJhbWV0ZXJzLmgiCiAjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgor
I2ltcG9ydCA8V2ViQ29yZS9JbnRlcmFjdGlvblJlZ2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
YXRoVXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVDQUxheWVyRXh0cmFzLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KQEAgLTI0NywxNSArMjQ4
LDE3IEBAIC0gKHZvaWQpdXBkYXRlRGVidWdJbmRpY2F0b3IKICAgICBbbGlua0hpZ2hsaWdodExh
eWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CiAgICAgW1tfdmlldyBsYXllcl0gYWRkU3VibGF5
ZXI6bGlua0hpZ2hsaWdodExheWVyLmdldCgpXTsKIAotICAgIFtfZGVsZWdhdGUgaW50ZXJhY3Rh
YmxlUmVnaW9uc0ZvckhvdmVyUGxhdHRlcjpzZWxmIGluUmVjdDpzZWFyY2hCb3VuZGluZ1JlY3Qg
Y29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWlu
UHRyKHNlbGYpXSAoVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4gcmVjdHMpIHsKKyAgICBbX2Rl
bGVnYXRlIGludGVyYWN0aW9uUmVnaW9uc0ZvckhvdmVyUGxhdHRlcjpzZWxmIGluUmVjdDpzZWFy
Y2hCb3VuZGluZ1JlY3QgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtzZWxmLCBzdHJv
bmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXSAoVmVjdG9yPFdlYkNvcmU6OkludGVyYWN0aW9uUmVn
aW9uPiByZWdpb25zKSB7CiAgICAgICAgIGlmICghX2xpbmtDb3VudExheWVyICYmICFfbGlua0hp
Z2hsaWdodExheWVyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFtfbGlua0NvdW50
TGF5ZXIgc2V0U3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXp1IiwgcmVjdHMu
c2l6ZSgpXV07CisgICAgICAgIFtfbGlua0NvdW50TGF5ZXIgc2V0U3RyaW5nOltOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiJXp1IiwgcmVnaW9ucy5zaXplKCldXTsKIAogICAgICAgICBXZWJD
b3JlOjpQYXRoIHBhdGg7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjdCA6IHJlY3RzKQot
ICAgICAgICAgICAgcGF0aC5hZGRSZWN0KHJlY3QpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IHJlZ2lvbiA6IHJlZ2lvbnMpIHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjdCA6
IHJlZ2lvbi5yZWN0c0luQ29udGVudENvb3JkaW5hdGVzKQorICAgICAgICAgICAgICAgIHBhdGgu
YWRkUmVjdChyZWN0KTsKKyAgICAgICAgfQogICAgICAgICBbX2xpbmtIaWdobGlnaHRMYXllciBz
ZXRQYXRoOnBhdGgucGxhdGZvcm1QYXRoKCldOwogICAgIH0pLmdldCgpXTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBhYzgwMGI5MThhYTdi
N2E2Y2U4OWE4ODZjOTNlZDA1YjdjZTRiMDk4Li43Mjk0OTQxY2FhMmI1YzdlNTVjNGY1MTQwYzhj
Y2FmOTU2ODQ4ZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtNjQwOCw0MSArNjQwOCw5IEBAIHZvaWQgV2ViUGFnZTo6Y2FuY2VsZWRDb21w
b3NpdGlvbigpCiAgICAgc2VuZEVkaXRvclN0YXRlVXBkYXRlKCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6aW50ZXJhY3RhYmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRlcyhGbG9hdFJlY3QgcmVj
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8RmxvYXRSZWN0Pik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OmludGVyYWN0aW9uUmVnaW9ucyhGbG9hdFJlY3QgcmVj
dEluQ29udGVudENvb3JkaW5hdGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxJbnRl
cmFjdGlvblJlZ2lvbj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJlZiBmcmFtZSht
X3BhZ2UtPm1haW5GcmFtZSgpKTsKLQotICAgIGlmIChSZWZQdHIgZnJhbWVWaWV3ID0gZnJhbWUt
PnZpZXcoKSkKLSAgICAgICAgZnJhbWVWaWV3LT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVk
UmVjdXJzaXZlKCk7Ci0KLSAgICBhdXRvIHJlc3VsdCA9IEhpdFRlc3RSZXN1bHQgeyBMYXlvdXRS
ZWN0KHJlY3QpIH07Ci0gICAgUmVmUHRyIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7Ci0g
ICAgaWYgKCFkb2N1bWVudCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdCh7Ci0gICAg
ICAgIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwKLSAgICAgICAgSGl0VGVzdFJlcXVl
c3Q6OlR5cGU6OkFsbG93VmlzaWJsZUNoaWxkRnJhbWVDb250ZW50T25seSwKLSAgICAgICAgSGl0
VGVzdFJlcXVlc3Q6OlR5cGU6OkNvbGxlY3RNdWx0aXBsZUVsZW1lbnRzCi0gICAgfSk7Ci0gICAg
ZG9jdW1lbnQtPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKLQotICAgIFZlY3RvcjxGbG9hdFJl
Y3Q+IHJlY3RzOwotCi0gICAgZm9yIChjb25zdCBhdXRvJiBub2RlIDogcmVzdWx0Lmxpc3RCYXNl
ZFRlc3RSZXN1bHQoKSkgewotICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUuZ2V0KCkpKQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxF
bGVtZW50Pihub2RlLmdldCgpKTsKLQotICAgICAgICBpZiAoIW5vZGUtPndpbGxSZXNwb25kVG9N
b3VzZUNsaWNrRXZlbnRzKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICByZWN0
cy5hcHBlbmQoZWxlbWVudC5ib3VuZGluZ0JveEluUm9vdFZpZXdDb29yZGluYXRlcygpKTsKLSAg
ICB9Ci0KLSAgICBjb21wbGV0aW9uSGFuZGxlcihyZWN0cyk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoV2ViQ29yZTo6aW50ZXJhY3Rpb25SZWdpb25zKCptX3BhZ2UsIHJlY3RJbkNvbnRlbnRDb29y
ZGluYXRlcykpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNldEFsd2F5c1Nob3dzSG9yaXpvbnRhbFNj
cm9sbGVyKGJvb2wgYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYWNkYjg5MjY5N2MyMDkxZDBkNTA1
MjViNjI5MTg5N2I4MzJmNDFjZi4uMWViMzdjNTFlZjBjNzVhZTUwZmY5ZjRmNjlmNzcwZDAyYzU0
MzI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
MjQ3LDYgKzI0Nyw3IEBAIHN0cnVjdCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKIHN0cnVjdCBFbGVt
ZW50Q29udGV4dDsKIHN0cnVjdCBHbG9iYWxGcmFtZUlkZW50aWZpZXI7CiBzdHJ1Y3QgR2xvYmFs
V2luZG93SWRlbnRpZmllcjsKK3N0cnVjdCBJbnRlcmFjdGlvblJlZ2lvbjsKIHN0cnVjdCBLZXlw
cmVzc0NvbW1hbmQ7CiBzdHJ1Y3QgTWVkaWFVc2FnZUluZm87CiBzdHJ1Y3QgUHJvbWlzZWRBdHRh
Y2htZW50SW5mbzsKQEAgLTk0Miw3ICs5NDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRVcGRh
dGVDb21wb3NpdGlvbigpOwogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNo
YW5nZXMoKTsKIAotICAgIHZvaWQgaW50ZXJhY3RhYmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGlu
YXRlcyhXZWJDb3JlOjpGbG9hdFJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdl
YkNvcmU6OkZsb2F0UmVjdD4pPiYmKTsKKyAgICB2b2lkIGludGVyYWN0aW9uUmVnaW9ucyhXZWJD
b3JlOjpGbG9hdFJlY3QgcmVjdEluQ29udGVudENvb3JkaW5hdGVzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbj4pPiYmKTsKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KaW5kZXggMTE5NDI3NTBmNDA0NTRiMDdjMjE3M2FjZTQ0YmFkOTZjZmZmNDJkMC4u
Y2U2MGU1ZGNiNWQzNzcyZTVjMzU3Njg2ZGQ2MGQ2N2ZlMWU1YmQ5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC02
ODEsNSArNjgxLDUgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4
X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAogICAgIFNjcm9sbFRvUmVj
dChXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0UmVjdCwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmln
aW4pCiAKLSAgICBJbnRlcmFjdGFibGVSZWdpb25zSW5Sb290Vmlld0Nvb3JkaW5hdGVzKFdlYkNv
cmU6OkZsb2F0UmVjdCByZWN0KSAtPiAoVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4gcmVjdHMp
CisgICAgSW50ZXJhY3Rpb25SZWdpb25zKFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0SW5Db250ZW50
Q29vcmRpbmF0ZXMpIC0+IChWZWN0b3I8V2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdpb24+IHJlZ2lv
bnMpCiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggODU2YTBjZDY3MmUxOTEyNWJlYTk4Zjc1NDY0ZjQ1YzUzMTIyYmM4Mi4uMDFjNzU5YmYwOTA3
YjJjMTRhNDQ3ZTFkZDljMTdlNjY3ZmNjNTQ0NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAzLTMxICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGRlYnVn
IG92ZXJsYXkgZm9yIGludGVyYWN0aW9uIHJlZ2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODE4NworCisgICAgICAgIFJldmlld2VkIGJ5IFdl
bnNvbiBIc2llaC4KKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm06Cisg
ICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciBfcG9wdWxhdGVNZW51XSk6CisgICAgICAgICgt
W1NldHRpbmdzQ29udHJvbGxlciBpbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXlWaXNpYmxlXSk6Cisg
ICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciBwcmVmZXJlbmNlS2V5Rm9yUmVnaW9uT3Zlcmxh
eVRhZzpdKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIubToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgZGlkQ2hhbmdl
U2V0dGluZ3NdKToKKyAgICAgICAgQWRkIGEgc3dpdGNoIGZvciB0aGUgbmV3IGRlYnVnIG92ZXJs
YXkgaW4gTWluaUJyb3dzZXIuCisKIDIwMjItMDMtMzEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1x
dWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjkyMTgz
LgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5o
IGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5oCmluZGV4IDQ5ODU3
NTBlZjI1YzFjOTJiNzA3YjMxM2NlMjBhYTVmM2NkYWNmNWYuLjk1NDhhMmIzODI5NWRjN2QwNWUy
OTFmZTQ1MjVhZTk4NmQ0OTYxMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9T
ZXR0aW5nc0NvbnRyb2xsZXIuaAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3ND
b250cm9sbGVyLmgKQEAgLTQzLDYgKzQzLDcgQEAgQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBnZXR0ZXI9aXNTcGFjZVJlc2VydmVkRm9yQmFubmVycykgQk9PTCBzcGFjZVJlc2UKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCByZXNvdXJjZVVzYWdlT3ZlcmxheVZp
c2libGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgbm9uRmFzdFNjcm9s
bGFibGVSZWdpb25PdmVybGF5VmlzaWJsZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgQk9PTCB3aGVlbEV2ZW50SGFuZGxlclJlZ2lvbk92ZXJsYXlWaXNpYmxlOworQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGludGVyYWN0aW9uUmVnaW9uT3ZlcmxheVZpc2li
bGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgdXNlVUlTaWRlQ29tcG9z
aXRpbmc7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgcGVyV2luZG93V2Vi
UHJvY2Vzc2VzRGlzYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wg
YWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZDsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5n
c0NvbnRyb2xsZXIubQppbmRleCA4NGJkMWE4ZWYwZmExNmFjMzg0MmVkNGI3Y2I5NTg4YTRkMDc1
M2FkLi41ZjcxYmFmMGZmMmUyNDI3ZGMyMjFkZGRlYTdkYjE1Y2IwYWVkY2ZkIDEwMDY0NAotLS0g
YS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm0KKysrIGIvVG9vbHMv
TWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tCkBAIC01Nyw2ICs1Nyw3IEBACiAK
IHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheVZp
c2libGVQcmVmZXJlbmNlS2V5ID0gQCJOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXlWaXNp
YmxlIjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdoZWVsRXZlbnRIYW5kbGVyUmVnaW9uT3Zl
cmxheVZpc2libGVQcmVmZXJlbmNlS2V5ID0gQCJXaGVlbEV2ZW50SGFuZGxlclJlZ2lvbk92ZXJs
YXlWaXNpYmxlIjsKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheVZpc2libGVQcmVmZXJlbmNlS2V5ID0gQCJJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXlWaXNp
YmxlIjsKIAogc3RhdGljIE5TU3RyaW5nICogY29uc3QgVXNlVHJhbnNwYXJlbnRXaW5kb3dzUHJl
ZmVyZW5jZUtleSA9IEAiVXNlVHJhbnNwYXJlbnRXaW5kb3dzIjsKIHN0YXRpYyBOU1N0cmluZyAq
IGNvbnN0IFVzZVBhZ2luYXRlZE1vZGVQcmVmZXJlbmNlS2V5ID0gQCJVc2VQYWdpbmF0ZWRNb2Rl
IjsKQEAgLTc3LDYgKzc4LDcgQEAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIERlYnVnT3Zl
cnlsYXlNZW51SXRlbVRhZykgewogICAgIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheVRh
ZyA9IDEwMCwKICAgICBXaGVlbEV2ZW50SGFuZGxlclJlZ2lvbk92ZXJsYXlUYWcsCisgICAgSW50
ZXJhY3Rpb25SZWdpb25PdmVybGF5VGFnLAogICAgIEV4cGVyaW1lbnRhbEZlYXR1cmVUYWcsCiAg
ICAgSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVUYWcsCiB9OwpAQCAtMTk1LDYgKzE5NywxMiBAQCAtICh2
b2lkKV9wb3B1bGF0ZU1lbnUKICAgICBbd2hlZWxFdmVudEhhbmRsZXJSZWdpb25JdGVtIHNldFRh
ZzpXaGVlbEV2ZW50SGFuZGxlclJlZ2lvbk92ZXJsYXlUYWddOwogICAgIFt3aGVlbEV2ZW50SGFu
ZGxlclJlZ2lvbkl0ZW0gc2V0VGFyZ2V0OnNlbGZdOwogICAgIFtkZWJ1Z092ZXJsYXlzTWVudSBh
ZGRJdGVtOlt3aGVlbEV2ZW50SGFuZGxlclJlZ2lvbkl0ZW0gYXV0b3JlbGVhc2VdXTsKKworICAg
IE5TTWVudUl0ZW0gKmludGVyYWN0aW9uUmVnaW9uSXRlbSA9IFtbTlNNZW51SXRlbSBhbGxvY10g
aW5pdFdpdGhUaXRsZTpAIkludGVyYWN0aW9uIFJlZ2lvbiIgYWN0aW9uOkBzZWxlY3Rvcih0b2dn
bGVEZWJ1Z092ZXJsYXk6KSBrZXlFcXVpdmFsZW50OkAiIl07CisgICAgW2ludGVyYWN0aW9uUmVn
aW9uSXRlbSBzZXRUYWc6SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5VGFnXTsKKyAgICBbaW50ZXJh
Y3Rpb25SZWdpb25JdGVtIHNldFRhcmdldDpzZWxmXTsKKyAgICBbZGVidWdPdmVybGF5c01lbnUg
YWRkSXRlbTpbaW50ZXJhY3Rpb25SZWdpb25JdGVtIGF1dG9yZWxlYXNlXV07CisKICAgICBbZGVi
dWdPdmVybGF5c01lbnUgcmVsZWFzZV07CiAgICAgCiAgICAgW19tZW51IGFkZEl0ZW06ZGVidWdP
dmVybGF5c1N1Ym1lbnVJdGVtXTsKQEAgLTcxMSw2ICs3MTksMTEgQEAgLSAoQk9PTCl3aGVlbEV2
ZW50SGFuZGxlclJlZ2lvbk92ZXJsYXlWaXNpYmxlCiAgICAgcmV0dXJuIFtbTlNVc2VyRGVmYXVs
dHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6V2hlZWxFdmVudEhhbmRsZXJSZWdp
b25PdmVybGF5VmlzaWJsZVByZWZlcmVuY2VLZXldOwogfQogCistIChCT09MKWludGVyYWN0aW9u
UmVnaW9uT3ZlcmxheVZpc2libGUKK3sKKyAgICByZXR1cm4gW1tOU1VzZXJEZWZhdWx0cyBzdGFu
ZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXlWaXNp
YmxlUHJlZmVyZW5jZUtleV07Cit9CisKIC0gKE5TU3RyaW5nICopcHJlZmVyZW5jZUtleUZvclJl
Z2lvbk92ZXJsYXlUYWc6KE5TVUludGVnZXIpdGFnCiB7CiAgICAgc3dpdGNoICh0YWcpIHsKQEAg
LTcxOSw2ICs3MzIsOSBAQCAtIChOU1N0cmluZyAqKXByZWZlcmVuY2VLZXlGb3JSZWdpb25PdmVy
bGF5VGFnOihOU1VJbnRlZ2VyKXRhZwogCiAgICAgY2FzZSBXaGVlbEV2ZW50SGFuZGxlclJlZ2lv
bk92ZXJsYXlUYWc6CiAgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxlclJlZ2lvbk92ZXJs
YXlWaXNpYmxlUHJlZmVyZW5jZUtleTsKKworICAgIGNhc2UgSW50ZXJhY3Rpb25SZWdpb25PdmVy
bGF5VGFnOgorICAgICAgICByZXR1cm4gSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5VmlzaWJsZVBy
ZWZlcmVuY2VLZXk7CiAgICAgfQogICAgIHJldHVybiBuaWw7CiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01p
bmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCmluZGV4IDAxYmE0NWY5
MWUzZDk5ZDExMGY2N2U2NWQxNmExMzUyMTAyZGI2ZWUuLmNjMTU2Nzg2MzJkZTNmYjBiZTBhZDVh
NzIxODNiYjVmZWQ4ZWZmZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJC
cm93c2VyV2luZG93Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJC
cm93c2VyV2luZG93Q29udHJvbGxlci5tCkBAIC01MjEsNiArNTIxLDggQEAgLSAodm9pZClkaWRD
aGFuZ2VTZXR0aW5ncwogICAgICAgICB2aXNpYmxlT3ZlcmxheVJlZ2lvbnMgfD0gX1dLTm9uRmFz
dFNjcm9sbGFibGVSZWdpb247CiAgICAgaWYgKHNldHRpbmdzLndoZWVsRXZlbnRIYW5kbGVyUmVn
aW9uT3ZlcmxheVZpc2libGUpCiAgICAgICAgIHZpc2libGVPdmVybGF5UmVnaW9ucyB8PSBfV0tX
aGVlbEV2ZW50SGFuZGxlclJlZ2lvbjsKKyAgICBpZiAoc2V0dGluZ3MuaW50ZXJhY3Rpb25SZWdp
b25PdmVybGF5VmlzaWJsZSkKKyAgICAgICAgdmlzaWJsZU92ZXJsYXlSZWdpb25zIHw9IF9XS0lu
dGVyYWN0aW9uUmVnaW9uOwogICAgIAogICAgIHByZWZlcmVuY2VzLl92aXNpYmxlRGVidWdPdmVy
bGF5UmVnaW9ucyA9IHZpc2libGVPdmVybGF5UmVnaW9uczsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456322</attachid>
            <date>2022-03-31 22:45:24 -0700</date>
            <delta_ts>2022-04-01 01:18:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238187-20220331224523.patch</filename>
            <type>text/plain</type>
            <size>64340</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzFhMzZlNDBmYjZhNWQ2
YzNhY2JlMjkzYjM1ZmEyMzZiM2JjNjc1OC4uYWFmZWZiNDI5YWNkY2NmMDE1YjJjNWNhMDAxZDI1
NTM5MDc4MGVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIyLTAzLTMxICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGRlYnVn
IG92ZXJsYXkgZm9yIGludGVyYWN0aW9uIHJlZ2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODE4NworCisgICAgICAgIFJldmlld2VkIGJ5IFdl
bnNvbiBIc2llaC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjp3aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMpOgorICAgICAgICAq
IGRvbS9Ob2RlLmg6CisgICAgICAgIEV4cG9zZSBgd2lsbFJlc3BvbmRUb1RvdWNoRXZlbnRzYCwg
c2ltaWxhciB0byBgd2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50c2AuCisKKyAgICAgICAgKiBw
YWdlL0RlYnVnT3ZlcmxheVJlZ2lvbnMuaDoKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJs
YXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dXBk
YXRlUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhzRm9yUmVnaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6YWN0aXZlUmVnaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRyYXdDaGVja2JveCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcmFjdGlv
blJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnZhbHVlRm9yU2V0dGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdTZXR0aW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWdpb25PdmVybGF5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVi
dWdQYWdlT3ZlcmxheXM6OnVwZGF0ZU92ZXJsYXlSZWdpb25WaXNpYmlsaXR5KToKKyAgICAgICAg
KiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmg6CisgICAgICAgIChXZWJDb3JlOjpEZWJ1Z1BhZ2VP
dmVybGF5czo6ZGlkTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkRlYnVnUGFnZU92ZXJsYXlz
OjpkaWRDaGFuZ2VFdmVudEhhbmRsZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkRlYnVnUGFnZU92
ZXJsYXlzOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKToKKyAgICAgICAgQWRkIGFuIG92ZXJsYXkg
Zm9yIGluZGljYXRpbmcgaW50ZXJhY3Rpb24gcmVnaW9ucy4KKworICAgICAgICAqIHBhZ2UvRnJh
bWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVDb250YWluc0NvbXBs
ZXhCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmVzdGltYXRlZEJhY2tncm91bmRDb2xv
ckZvclJhbmdlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lU25hcHNob3R0aW5nLmg6CisgICAgICAg
ICogcGFnZS9UZXh0SW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlQ29udGFp
bnNDb21wbGV4QmFja2dyb3VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjplc3RpbWF0
ZWRCYWNrZ3JvdW5kQ29sb3JGb3JSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIE1vdmUgYGVzdGlt
YXRlZEJhY2tncm91bmRDb2xvckZvclJhbmdlYCBmcm9tIFRleHRJbmRpY2F0b3IgdG8KKyAgICAg
ICAgRnJhbWVTbmFwc2hvdHRpbmcgZm9yIGVhc2Ugb2YgcmV1c2UuCisgICAgICAgIAorICAgICAg
ICAqIHBhZ2UvSW50ZXJhY3Rpb25SZWdpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OmFic29sdXRlQm91bmRpbmdSZWN0Rm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cmVnaW9u
Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpjdXJzb3JUeXBlRm9yRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjppbnRlcmFjdGlvblJlZ2lvbnMpOgorICAgICAgICAqIHBhZ2UvSW50
ZXJhY3Rpb25SZWdpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcmFjdGlvblJl
Z2lvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9u
OjpkZWNvZGUpOgorICAgICAgICBBZGQgSW50ZXJhY3Rpb25SZWdpb24sIHdoaWNoIGtlZXBzIHRy
YWNrIG9mIHRoZSBsb2NhdGlvbiBvZiBhbmQgbWV0YWRhdGEKKyAgICAgICAgYWJvdXQgaW50ZXJh
Y3Rpb24gcmVnaW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFNpemU6Om1pbkRpbWVuc2lvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRTaXplOjptYXhEaW1lbnNpb24gY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpS
b3VuZGVkUmVjdDo6UmFkaWk6Om1pbmltdW1SYWRpdXMgY29uc3QpOgorICAgICAgICBBZGQgbWlu
aW11bVJhZGl1cygpIHRvIFJhZGlpLgorCiAyMDIyLTAzLTMxICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gW2lPU10gVmVydGljYWwg
dGV4dCBpcyBpbmNvcnJlY3RseSBkaXNwbGFjZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGYwNzA5NDU3ZDEyNzJm
NGE3MWQ3MmQ3ZmU2YTRkNjYyYTNkMzQ3YS4uMGI5NjIyZTMwMzA3NDVkYTliN2EyYTQ4ZTg5ZDg0
Y2M5MGVkYzA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAyMi0wMy0zMSAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBkZWJ1ZyBv
dmVybGF5IGZvciBpbnRlcmFjdGlvbiByZWdpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgxODcKKworICAgICAgICBSZXZpZXdlZCBieSBXZW5z
b24gSHNpZWguCisKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlh
Rm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgVW5pZmllZCBzb3VyY2UgZml4ZXMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAg
IEFkZCBwbHVtYmluZyBmb3IgYSBuZXcgZGVidWcgb3ZlcmxheS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omlu
dGVyYWN0aW9uUmVnaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW50ZXJh
Y3RhYmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRlcyk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGludGVyYWN0
aW9uUmVnaW9uc0ZvckhvdmVyUGxhdHRlcjppblJlY3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgaW50ZXJhY3RhYmxlUmVnaW9uc0ZvckhvdmVyUGxhdHRl
cjppblJlY3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tIb3Zl
clBsYXR0ZXIubW06CisgICAgICAgICgtW1dLSG92ZXJQbGF0dGVyIHVwZGF0ZURlYnVnSW5kaWNh
dG9yXSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjppbnRlcmFjdGlvblJlZ2lvbnMpOgorICAgICAgICBNb3ZlIGlu
dGVyYWN0aW9uUmVnaW9ucygpIGZyb20gV2ViUGFnZSB0byBXZWJDb3JlOjpJbnRlcmFjdGlvblJl
Z2lvbi4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnRlcmFjdGFibGVSZWdpb25zSW5S
b290Vmlld0Nvb3JkaW5hdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluOgorCiAyMDIyLTAzLTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgUHJlcGFyZSBXZWJLaXQvICYgV2ViS2l0TGVnYWN5LyBmb3IgbWFraW5nIHRoZSBT
dHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9yIGV4cGxpY2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpp
bmRleCA0MDVmNjc0ZjBiMzg2YWUxYjE3YzIxZGVmZDNmMzJlNjRiZTEzMDdlLi5lMjQ0NTc4NmJi
ZjYxM2U3ZDU3NzYzMjllZTEyOTc2OGNlOGE1M2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEx
MjcsNiArMTEyNyw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAg
ICBwYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCiAgICAgcGFnZS9HbG9iYWxXaW5kb3dJZGVu
dGlmaWVyLmgKICAgICBwYWdlL0ltYWdlQW5hbHlzaXNRdWV1ZS5oCisgICAgcGFnZS9JbnRlcmFj
dGlvblJlZ2lvbi5oCiAgICAgcGFnZS9MYXlvdXRNaWxlc3RvbmUuaAogICAgIHBhZ2UvTWVkaWFD
YW5TdGFydExpc3RlbmVyLmgKICAgICBwYWdlL01lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0u
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAppbmRleCBjOTQyMGY1ZDQ2OWFkYTI2NDNkMGY2ZjdmYTAxODc0YWYzN2Uw
NTU0Li41YjAzYjM0MzRhMWY2ZDY4MDA1NzhiMjIzNWMzY2MxMDg0MjM3NDdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dApAQCAtMTc1Myw2ICsxNzUzLDcgQEAgcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNw
cAogcGFnZS9IaXN0b3J5LmNwcAogcGFnZS9JbWFnZUFuYWx5c2lzUXVldWUuY3BwCiBwYWdlL0lt
YWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCitwYWdlL0ludGVyYWN0aW9uUmVnaW9uLmNwcAogcGFn
ZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRy
eS5jcHAKIHBhZ2UvTG9jYXRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWY5NTkzYjBlN2M4OGUzNGNhNWZjMzU2Nzdl
ODVhNGNlZTc0OTQzMi4uMTlkOWI4NmEwN2Q2YTA3NGFlNjVkNjdkNDg5MjM5Nzk1OGZjMTUxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtODg4LDYgKzg4OCw3IEBACiAJCTJEOUYwRTEzMTRGRjFDQkYwMEJBMEZGNyAvKiBsaW5l
YXJTUkdCLmljYyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQ5RjBFMTIxNEZGMUNCRjAwQkEwRkY3IC8qIGxpbmVhclNSR0IuaWNjICovOyB9OwogCQky
REEzOTdFNTI2NUM3Mzc1MDA0NjhGMzMgLyogTnVsbEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBMzk3RTMyNjVDNzM3NDAw
NDY4RjMzIC8qIE51bGxHcmFwaGljc0NvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyREFGMzQzRDFFQTdFMEYxMDAzODJDRDMgLyogQ29u
c3RhbnRQcm9wZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkRBRjM0M0IxRUE3RTBGMTAwMzgyQ0QzIC8qIENvbnN0YW50UHJvcGVydHlNYXAu
aCAqLzsgfTsKKwkJMkRDMDVDQTgyN0Q4MDk1NjAwNEVENDAzIC8qIEludGVyYWN0aW9uUmVnaW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREMwNUNB
MzI3RDdGNkI1MDA0RUQ0MDMgLyogSW50ZXJhY3Rpb25SZWdpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyREM4RDM5ODI1RjJGRTk3MDBDRkNC
QUIgLyogTW9kZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEQzhEMzk3MjVGMkZFOTQwMENGQ0JBQiAvKiBNb2RlbC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJERDVBNzI3MUVCRUU0N0QwMDlCQTU5
NyAvKiBDb21wb3NpdGlvblVuZGVybGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkRENUE3MjYxRUJFRTQ3RDAwOUJBNTk3IC8qIENvbXBvc2l0aW9u
VW5kZXJsaW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMkREODcxNEIyNjVGNDM2NjAwNUY5OTdDIC8qIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRl
eHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDg3
MTQ5MjY1RjQzNjUwMDVGOTk3QyAvKiBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgxNzcsNiArODE3
OCw4IEBACiAJCTJEQUFFMzJEMTlEQ0FGNjAwMEUwMDJEMiAvKiBNb2NrUGFnZU92ZXJsYXlDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1BhZ2VPdmVybGF5Q2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQUYzNDNBMUVBN0UwRjEwMDM4
MkNEMyAvKiBDb25zdGFudFByb3BlcnR5TWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENvbnN0YW50UHJvcGVydHlNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyREFGMzQzQjFFQTdFMEYxMDAzODJDRDMgLyogQ29uc3RhbnRQcm9wZXJ0eU1h
cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25zdGFudFByb3BlcnR5TWFw
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEQzA1Q0EzMjdEN0Y2QjUwMDRFRDQw
MyAvKiBJbnRlcmFjdGlvblJlZ2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcmFjdGlvblJlZ2lv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREMwNUNBNzI3RDgwMjE3MDA0RUQ0
MDMgLyogSW50ZXJhY3Rpb25SZWdpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZXJhY3Rp
b25SZWdpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREM4RDM5NjI1RjJG
RTkzMDBDRkNCQUIgLyogTW9kZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kZWwuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREM4RDM5NzI1RjJGRTk0MDBDRkNCQUIgLyog
TW9kZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkRENUE3MjYxRUJFRTQ3RDAwOUJBNTk3IC8qIENvbXBvc2l0aW9uVW5kZXJsaW5lLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBvc2l0aW9uVW5kZXJsaW5lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDI3Miw2ICsyNDI3NSw4IEBACiAJCQkJ
RjQ2RDUzOUQyNzNFRUNGNzAwMDlGQTgwIC8qIEltYWdlQW5hbHlzaXNRdWV1ZS5oICovLAogCQkJ
CUY0ODI0MzRBMjYwQzMyRjEwMDIyNDk3QyAvKiBJbWFnZU92ZXJsYXlDb250cm9sbGVyLmNwcCAq
LywKIAkJCQlGNDgyNDM0ODI2MEMzMkYxMDAyMjQ5N0MgLyogSW1hZ2VPdmVybGF5Q29udHJvbGxl
ci5oICovLAorCQkJCTJEQzA1Q0E3MjdEODAyMTcwMDRFRDQwMyAvKiBJbnRlcmFjdGlvblJlZ2lv
bi5jcHAgKi8sCisJCQkJMkRDMDVDQTMyN0Q3RjZCNTAwNEVENDAzIC8qIEludGVyYWN0aW9uUmVn
aW9uLmggKi8sCiAJCQkJMEY0NzEwRDUxREI2RkUyMjAwMkRDRUMzIC8qIEludGVyc2VjdGlvbk9i
c2VydmVyLmNwcCAqLywKIAkJCQkwRjQ3MTBENjFEQjZGRTIyMDAyRENFQzMgLyogSW50ZXJzZWN0
aW9uT2JzZXJ2ZXIuaCAqLywKIAkJCQkwRjQ3MTBENzFEQjZGRTIyMDAyRENFQzMgLyogSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXIuaWRsICovLApAQCAtMzUyOTIsNiArMzUyOTcsNyBAQAogCQkJCUE1OTND
RjhCMTg0MDUzNTIwMEJGQ0UyNyAvKiBJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1QjgxQ0I0MUZBQTQ0NjIwMDM3RDFFNiAvKiBJbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjNBQkZFMEMxMzBFOURBMDAwRTdGN0QxIC8qIEluc3Ry
dW1lbnRpbmdBZ2VudHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEQzA1Q0E4MjdEODA5NTYwMDRF
RDQwMyAvKiBJbnRlcmFjdGlvblJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NzEwREMx
REI2RkUyMjAwMkRDRUMzIC8qIEludGVyc2VjdGlvbk9ic2VydmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjhCNDU3MjFEQzNGQkEzMDA0NDNDM0YgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NzEwREYxREI2RkUyMjAwMkRDRUMzIC8qIElu
dGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmlu
ZGV4IGQyZTI3ZDg0OTAxZDU1OTkyOTQ1OGM0NjdkOTFmN2Y2NGE3YjgwMzAuLjNiNmQwNTY1NmVk
YmVlMDE2NGM0N2ZmZGFlYzRiOTE1NWQzNTBiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI1MTAs
NiArMjUxMCwxMyBAQCBib29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKQog
ICAgIHJldHVybiBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQp
IHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCkgfHwgaGFz
RXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNlb3V0RXZlbnQpOwogfQogCitib29sIE5v
ZGU6OndpbGxSZXNwb25kVG9Ub3VjaEV2ZW50cygpCit7CisgICAgcmV0dXJuIGV2ZW50VHlwZXMo
KS5jb250YWluc0lmKFsmXShjb25zdCBhdXRvJiB0eXBlKSB7CisgICAgICAgIHJldHVybiBldmVu
dE5hbWVzKCkuaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZSwgKnRoaXMpOworICAgIH0pOwor
fQorCiBib29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKIHsKICAgICAv
LyBGSVhNRTogV2h5IGlzIHRoZSBpT1MgY29kZSBwYXRoIGRpZmZlcmVudCBmcm9tIHRoZSBub24t
aU9TIGNvZGUgcGF0aD8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDNlZGMwMzBiM2M1NjMxN2Q2Yjc0OTA4MDk1
ZjA2OThlNjU5ZTY0Y2YuLjUzYzU4ZmI3MjMwNzk0ODAxNTE3ODNmOTI3MmEwYjczMDk0NDJiYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaApAQCAtMjc1LDcgKzI3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNl
bGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0ZShib29sIGZsYWcpIHsgc2V0Tm9kZUZsYWco
Tm9kZUZsYWc6OlNlbGZPckFuY2VzdG9ySGFzRGlyQXV0bywgZmxhZyk7IH0KIAogICAgIC8vIFJl
dHVybnMgdGhlIGVuY2xvc2luZyBldmVudCBwYXJlbnQgRWxlbWVudCAob3Igc2VsZikgdGhhdCwg
d2hlbiBjbGlja2VkLCB3b3VsZCB0cmlnZ2VyIGEgbmF2aWdhdGlvbi4KLSAgICBFbGVtZW50KiBl
bmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFbGVt
ZW50KiBlbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKTsKIAogICAgIC8vIFRoZXNlIGxv
dy1sZXZlbCBjYWxscyBnaXZlIHRoZSBjYWxsZXIgcmVzcG9uc2liaWxpdHkgZm9yIG1haW50YWlu
aW5nIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIHRyZWUuCiAgICAgdm9pZCBzZXRQcmV2aW91c1NpYmxp
bmcoTm9kZSogcHJldmlvdXMpIHsgbV9wcmV2aW91cyA9IHByZXZpb3VzOyB9CkBAIC00NTcsNiAr
NDU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3Zl
RXZlbnRzKCk7CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRz
KCk7CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZVdoZWVsRXZlbnRzKCk7Cisg
ICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Ub3VjaEV2ZW50cygpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdW5zaWduZWQgc2hvcnQgY29tcGFyZURvY3VtZW50UG9zaXRpb24oTm9kZSYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnT3ZlcmxheVJlZ2lvbnMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdPdmVybGF5UmVnaW9ucy5oCmluZGV4IDBmZGM4M2Mz
YWRhZjEwNjI1ZDRhMjg3OTRmNjA2OTc4Njc0MzgxNjQuLmNlNjJkNDhlNjYzOTJmNjU3MGRmMTM5
ZGM2NTYxNDE0ZTczMWMxZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdP
dmVybGF5UmVnaW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdPdmVybGF5UmVn
aW9ucy5oCkBAIC0zNCw2ICszNCw3IEBAIGVudW0gY2xhc3MgRGVidWdPdmVybGF5UmVnaW9ucyA6
IHVpbnQ4X3QgewogICAgIFdoZWVsRXZlbnRIYW5kbGVyUmVnaW9uID0gMSA8PCAxLAogICAgIFRv
dWNoQWN0aW9uUmVnaW9uID0gMSA8PCAyLAogICAgIEVkaXRhYmxlRWxlbWVudFJlZ2lvbiA9IDEg
PDwgMywKKyAgICBJbnRlcmFjdGlvblJlZ2lvbiA9IDEgPDwgNCwKIH07CiAKIH0KQEAgLTQ2LDcg
KzQ3LDggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEZWJ1Z092ZXJs
YXlSZWdpb25zPiB7CiAgICAgICAgIFdlYkNvcmU6OkRlYnVnT3ZlcmxheVJlZ2lvbnM6Ok5vbkZh
c3RTY3JvbGxhYmxlUmVnaW9uLAogICAgICAgICBXZWJDb3JlOjpEZWJ1Z092ZXJsYXlSZWdpb25z
OjpXaGVlbEV2ZW50SGFuZGxlclJlZ2lvbiwKICAgICAgICAgV2ViQ29yZTo6RGVidWdPdmVybGF5
UmVnaW9uczo6VG91Y2hBY3Rpb25SZWdpb24sCi0gICAgICAgIFdlYkNvcmU6OkRlYnVnT3Zlcmxh
eVJlZ2lvbnM6OkVkaXRhYmxlRWxlbWVudFJlZ2lvbgorICAgICAgICBXZWJDb3JlOjpEZWJ1Z092
ZXJsYXlSZWdpb25zOjpFZGl0YWJsZUVsZW1lbnRSZWdpb24sCisgICAgICAgIFdlYkNvcmU6OkRl
YnVnT3ZlcmxheVJlZ2lvbnM6OkludGVyYWN0aW9uUmVnaW9uCiAgICAgPjsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggN2IzZWM3OGYzZGFmNGE3
YWMzNTc2MzllYmJkY2I1ZTMwMjE0ZDhkNy4uNTEyM2JiMmQwYzA0MWRjNDc2OTczY2YwMDI4ZWI5
MzIzOWZhNDdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAK
QEAgLTI3LDEyICsyNywxOCBAQAogI2luY2x1ZGUgIkRlYnVnUGFnZU92ZXJsYXlzLmgiCiAKICNp
bmNsdWRlICJDb2xvckhhc2guaCIKKyNpbmNsdWRlICJDdXJzb3IuaCIKICNpbmNsdWRlICJFbGVt
ZW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJJbnRlcmFjdGlvblJlZ2lvbi5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJQYWdlT3ZlcmxheS5oIgogI2luY2x1ZGUgIlBhZ2VPdmVybGF5Q29udHJv
bGxlci5oIgorI2luY2x1ZGUgIlBhdGhVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1v
dXNlRXZlbnQuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29y
ZGluYXRvci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC01OSw4ICs2NSw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB3aWxsTW92ZVRvUGFnZShQYWdlT3ZlcmxheSYsIFBhZ2UqKSBmaW5hbDsK
ICAgICB2b2lkIGRpZE1vdmVUb1BhZ2UoUGFnZU92ZXJsYXkmLCBQYWdlKikgZmluYWw7CiAgICAg
dm9pZCBkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5
JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmluYWw7Ci0gICAgdm9pZCBkaWRTY3JvbGxG
cmFtZShQYWdlT3ZlcmxheSYsIEZyYW1lJikgZmluYWw7CisgICAgYm9vbCBtb3VzZUV2ZW50KFBh
Z2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRTY3JvbGxGcmFtZShQYWdlT3ZlcmxheSYsIEZyYW1lJikgb3ZlcnJpZGU7CiAKIHByb3Rl
Y3RlZDoKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHJlZ2lvbiBjaGFuZ2VkLgpAQCAtNzQs
NiArODAsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX3JlZ2lvbkNoYW5nZWQgeyB0cnVlIH07
CiB9OwogCisjcHJhZ21hIG1hcmsgLSBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheQorCiBjbGFzcyBN
b3VzZVdoZWVsUmVnaW9uT3ZlcmxheSBmaW5hbCA6IHB1YmxpYyBSZWdpb25PdmVybGF5IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPE1vdXNlV2hlZWxSZWdpb25PdmVybGF5PiBjcmVhdGUoUGFn
ZSYgcGFnZSkKQEAgLTExNSw2ICsxMjMsOCBAQCBib29sIE1vdXNlV2hlZWxSZWdpb25PdmVybGF5
Ojp1cGRhdGVSZWdpb24oKQogI2VuZGlmCiB9CiAKKyNwcmFnbWEgbWFyayAtIE5vbkZhc3RTY3Jv
bGxhYmxlUmVnaW9uT3ZlcmxheQorCiBjbGFzcyBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJs
YXkgZmluYWwgOiBwdWJsaWMgUmVnaW9uT3ZlcmxheSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk+IGNyZWF0ZShQYWdlJiBwYWdlKQpAQCAt
MjE5LDYgKzIyOSwzMjkgQEAgdm9pZCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OmRy
YXdSZWN0KFBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSwgR3JhcGhpY3MKICAgICBkcmF3UmVnaW9u
KGNvbnRleHQsIG1fZXZlbnRUcmFja2luZ1JlZ2lvbnMuYXN5bmNocm9ub3VzRGlzcGF0Y2hSZWdp
b24sIG1fY29sb3IsIGJvdW5kcyk7CiB9CiAKKyNwcmFnbWEgbWFyayAtIEludGVyYWN0aW9uUmVn
aW9uT3ZlcmxheQorCitjbGFzcyBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXkgZmluYWwgOiBwdWJs
aWMgUmVnaW9uT3ZlcmxheSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxJbnRlcmFjdGlvblJl
Z2lvbk92ZXJsYXk+IGNyZWF0ZShQYWdlJiBwYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5KHBhZ2UpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgZXhwbGljaXQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5KFBhZ2UmIHBhZ2Up
CisgICAgICAgIDogUmVnaW9uT3ZlcmxheShwYWdlLCBDb2xvcjo6Z3JlZW4uY29sb3JXaXRoQWxw
aGFCeXRlKDEwMikpCisgICAgeworICAgIH0KKworICAgIGJvb2wgdXBkYXRlUmVnaW9uKCkgZmlu
YWw7CisgICAgdm9pZCBkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCkgZmluYWw7CisKKyAgICB2b2lkIGRyYXdTZXR0aW5ncyhH
cmFwaGljc0NvbnRleHQmKTsKKworICAgIGJvb2wgbW91c2VFdmVudChQYWdlT3ZlcmxheSYsIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOworCisgICAgRmxvYXRSZWN0IHJlY3RGb3JT
ZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoY29uc3Qg
U3RyaW5nJik7CisgICAgICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdpb24+
IGFjdGl2ZVJlZ2lvbigpOworCisgICAgc3RydWN0IFNldHRpbmcgeworICAgICAgICBTdHJpbmcg
a2V5OworICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgYm9vbCB2YWx1ZTsKKyAgICB9OyAg
ICAKKworICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgeworICAgICAgICB7ICJj
b25zdHJhaW4iX3MsICJDb25zdHJhaW4gdG8gUmVnaW9ucyJfcywgdHJ1ZSB9LAorICAgICAgICB7
ICJjbGlwIl9zLCAiQ2xpcCB0byBSZWdpb25zIl9zLCB0cnVlIH0sCisgICAgICAgIHsgIndhc2gi
X3MsICJEcmF3IFdhc2giX3MsIGZhbHNlIH0sCisgICAgICAgIHsgImNvbnRleHR1YWxDb2xvciJf
cywgIkNvbnRleHR1YWwgQ29sb3IiX3MsIHRydWUgfSwKKyAgICAgICAgeyAiY29udGV4dHVhbFNp
emUiX3MsICJDb250ZXh0dWFsIFNpemUiX3MsIHRydWUgfSwKKyAgICAgICAgeyAiY3Vyc29yIl9z
LCAiU2hvdyBDdXJzb3IiX3MsIHRydWUgfSwKKyAgICAgICAgeyAiaG92ZXIiX3MsICJDU1MgSG92
ZXIiX3MsIGZhbHNlIH0sCisgICAgICAgIHsgInJlZ2lvbnMiX3MsICJTaG93IFJlZ2lvbnMiX3Ms
IGZhbHNlIH0KKyAgICB9OworICAgIAorICAgIFZlY3RvcjxJbnRlcmFjdGlvblJlZ2lvbj4gbV9y
ZWdpb25zOworICAgIEludFBvaW50IG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVz
OworfTsKKworYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnVwZGF0ZVJlZ2lvbigpCit7
CisgICAgbV9vdmVybGF5LT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICBtX3JlZ2lvbnMgPSBpbnRl
cmFjdGlvblJlZ2lvbnMobV9wYWdlLCB7IHsgMCwgMCB9LCBtX3BhZ2UubWFpbkZyYW1lKCkudmll
dygpLT5jb250ZW50c1NpemUoKSB9KTsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3Rh
dGljIFZlY3RvcjxQYXRoPiBwYXRoc0ZvclJlZ2lvbihjb25zdCBJbnRlcmFjdGlvblJlZ2lvbiYg
cmVnaW9uKQoreworICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgcGFkZGluZyA9IDM7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBmbG9hdCByYWRpdXMgPSA0OworCisgICAgVmVjdG9yPEZsb2F0UmVj
dD4gcmVjdHM7CisgICAgZm9yIChhdXRvIHJlY3QgOiByZWdpb24ucmVjdHNJbkNvbnRlbnRDb29y
ZGluYXRlcykgeworICAgICAgICBpZiAocmVnaW9uLmlzSW5saW5lKQorICAgICAgICAgICAgcmVj
dC5pbmZsYXRlKHBhZGRpbmcpOworICAgICAgICByZWN0cy5hcHBlbmQocmVjdCk7CisgICAgfQor
ICAgIHJldHVybiBQYXRoVXRpbGl0aWVzOjpwYXRoc1dpdGhTaHJpbmtXcmFwcGVkUmVjdHMocmVj
dHMsIHN0ZDo6bWF4KHJlZ2lvbi5ib3JkZXJSYWRpdXMsIHJhZGl1cykpOworfQorCitzdGQ6Om9w
dGlvbmFsPEludGVyYWN0aW9uUmVnaW9uPiBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmFjdGl2
ZVJlZ2lvbigpCit7CisgICAgc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJlZ2lvbj4gaGl0UmVn
aW9uOworICAgIGZsb2F0IGhpdFJlZ2lvbkFyZWEgPSAwOworICAgIAorICAgIGZvciAoY29uc3Qg
YXV0byYgcmVnaW9uIDogbV9yZWdpb25zKSB7CisgICAgICAgIGZsb2F0IGFyZWEgPSAwOworICAg
ICAgICBGbG9hdFJlY3QgYm91bmRpbmdSZWN0OworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHJl
Y3QgOiByZWdpb24ucmVjdHNJbkNvbnRlbnRDb29yZGluYXRlcykgeworICAgICAgICAgICAgaWYg
KGJvdW5kaW5nUmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgYm91bmRpbmdSZWN0ID0g
cmVjdDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBib3VuZGluZ1JlY3QudW5p
dGUocmVjdCk7CisgICAgICAgICAgICBhcmVhICs9IHJlY3QuYXJlYSgpOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKCFib3VuZGluZ1JlY3QuY29udGFpbnMobV9tb3VzZUxvY2F0aW9uSW5Db250
ZW50Q29vcmRpbmF0ZXMpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBw
YXRocyA9IHBhdGhzRm9yUmVnaW9uKHJlZ2lvbik7CisgICAgICAgIGJvb2wgZGlkSGl0UmVnaW9u
ID0gZmFsc2U7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IHBhdGhzKSB7CisgICAg
ICAgICAgICBpZiAocGF0aC5jb250YWlucyhtX21vdXNlTG9jYXRpb25JbkNvbnRlbnRDb29yZGlu
YXRlcykpIHsKKyAgICAgICAgICAgICAgICBkaWRIaXRSZWdpb24gPSB0cnVlOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBpZiAoIWRpZEhpdFJlZ2lvbikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlm
IChhcmVhID4gbV9wYWdlLm1haW5GcmFtZSgpLnZpZXcoKS0+bGF5b3V0U2l6ZSgpLmFyZWEoKSAv
IDIpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoZGlkSGl0UmVnaW9uICYm
ICghaGl0UmVnaW9uIHx8IGFyZWEgPCBoaXRSZWdpb25BcmVhKSkgeworICAgICAgICAgICAgaGl0
UmVnaW9uID0gcmVnaW9uOworICAgICAgICAgICAgaGl0UmVnaW9uQXJlYSA9IGFyZWE7CisgICAg
ICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIGhpdFJlZ2lvbjsKK30KKworc3RhdGljIHZv
aWQgZHJhd0NoZWNrYm94KGNvbnN0IFN0cmluZyYgdGV4dCwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgRmxvYXRSZWN0JiBib3gsIGJvb2wg
c3RhdGUpCit7CisgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdCBsaW5lSGVpZ2h0ID0gMTQ7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdCBjaGVja2JveFZlcnRpY2FsUGFkZGluZyA9IDI7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdCB0ZXh0SG9yaXpvbnRhbFBhZGRpbmcgPSA0OworCisg
ICAgRmxvYXRSZWN0IGNoZWNrYm94UmVjdCB7IGJveC5sb2NhdGlvbigpICsgRmxvYXRTaXplIHsg
MCwgY2hlY2tib3hWZXJ0aWNhbFBhZGRpbmcgfSwgRmxvYXRTaXplIHsgbGluZUhlaWdodCwgbGlu
ZUhlaWdodCB9IH07CisKKyAgICBUZXh0UnVuIHRleHRSdW4gPSBUZXh0UnVuKHRleHQpOworICAg
IGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CisgICAgY29udGV4dC5kcmF3VGV4
dChmb250LCB0ZXh0UnVuLCBib3gubG9jYXRpb24oKSArIEZsb2F0U2l6ZSB7IGNoZWNrYm94UmVj
dC53aWR0aCgpICsgdGV4dEhvcml6b250YWxQYWRkaW5nLCBsaW5lSGVpZ2h0IH0pOworCisgICAg
UGF0aCBjaGVja2JveFBhdGg7CisgICAgY2hlY2tib3hQYXRoLmFkZFJvdW5kZWRSZWN0KEZsb2F0
Um91bmRlZFJlY3QgeyBjaGVja2JveFJlY3QsIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpIHsgMyB9
IH0pOworCisgICAgaWYgKHN0YXRlKSB7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENv
bG9yOjpkYXJrR3JheSk7CisgICAgICAgIGNvbnRleHQuZmlsbFBhdGgoY2hlY2tib3hQYXRoKTsK
KyAgICB9CisKKyAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjay5jb2xvcldp
dGhBbHBoYUJ5dGUoMTI3KSk7CisgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMSk7Cisg
ICAgY29udGV4dC5zdHJva2VQYXRoKGNoZWNrYm94UGF0aCk7Cit9CisKK0Zsb2F0UmVjdCBJbnRl
cmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRl
eCkKK3sKKyAgICBhdXRvIHZpZXdTaXplID0gbV9wYWdlLm1haW5GcmFtZSgpLnZpZXcoKS0+bGF5
b3V0U2l6ZSgpOworICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgc2V0dGluZ3NXaWR0aCA9IDE1
MDsKKyAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0IHJvd0hlaWdodCA9IDE2OworICAgIHJldHVy
biB7CisgICAgICAgIEZsb2F0UG9pbnQgeyB2aWV3U2l6ZS53aWR0aCgpIC0gc2V0dGluZ3NXaWR0
aCAtIDE0LCAxMCB9CisgICAgICAgICAgICArIEZsb2F0U2l6ZSB7IDQsIHJvd0hlaWdodCAqIGlu
ZGV4ICsgMiB9LAorICAgICAgICBGbG9hdFNpemUgeyBzZXR0aW5nc1dpZHRoLCByb3dIZWlnaHQg
fQorICAgIH07Cit9CisKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNl
dHRpbmcoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGZvciAoY29uc3QgYXV0byYgc2V0dGlu
ZyA6IG1fc2V0dGluZ3MpIHsKKyAgICAgICAgaWYgKG5hbWUgPT0gc2V0dGluZy5rZXkpCisgICAg
ICAgICAgICByZXR1cm4gc2V0dGluZy52YWx1ZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5OjpkcmF3U2V0dGluZ3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQoreworICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKworICAgIEZsb2F0
UmVjdCByZWN0ID0gcmVjdEZvclNldHRpbmdBdEluZGV4KDApOworICAgIGZvciAodW5zaWduZWQg
aSA9IDE7IGkgPCBtX3NldHRpbmdzLnNpemUoKTsgaSsrKQorICAgICAgICByZWN0LnVuaXRlKHJl
Y3RGb3JTZXR0aW5nQXRJbmRleChpKSk7CisKKyAgICByZWN0LmV4cGFuZChGbG9hdEJveEV4dGVu
dCB7IDQsIDQsIDQsIDQgfSk7CisKKyAgICB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICAgICAgY29udGV4dC5zZXRTaGFkb3coeyB9
LCA1LCBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDAuNSkpOworICAgICAgICBj
b250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0IHsgcmVjdCwgRmxvYXRSb3Vu
ZGVkUmVjdDo6UmFkaWkgeyA2IH0gfSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBo
YSgwLjg1KSk7CisgICAgfQorCisgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3Jp
cHRpb247CisgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIik7Cisg
ICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoMTIpOworICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRDb21wdXRlZFNpemUoMTIpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQo
Rm9udFNlbGVjdGlvblZhbHVlKDUwMCkpOworICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RGTW92ZShm
b250RGVzY3JpcHRpb24pLCAwLCAwKTsKKyAgICBmb250LnVwZGF0ZShudWxscHRyKTsKKworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NldHRpbmdzLnNpemUoKTsgaSsrKSB7CisgICAg
ICAgIGNvbnN0IGF1dG8mIHNldHRpbmcgPSBtX3NldHRpbmdzW2ldOworICAgICAgICBkcmF3Q2hl
Y2tib3goc2V0dGluZy5uYW1lLCBjb250ZXh0LCBmb250LCByZWN0Rm9yU2V0dGluZ0F0SW5kZXgo
aSksIHNldHRpbmcudmFsdWUpOworICAgIH0KK30KKwordm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92
ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCit7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgIAorICAgIGNvbnRleHQuY2xlYXJSZWN0KGRpcnR5
UmVjdCk7CisKKyAgICBpZiAodmFsdWVGb3JTZXR0aW5nKCJyZWdpb25zIikpIHsKKyAgICAgICAg
Y29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMik7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tl
Q29sb3IoQ29sb3I6OmdyZWVuKTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHJlZ2lvbiA6
IG1fcmVnaW9ucykgeworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWN0IDogcmVnaW9u
LnJlY3RzSW5Db250ZW50Q29vcmRpbmF0ZXMpCisgICAgICAgICAgICBjb250ZXh0LnN0cm9rZVJl
Y3QocmVjdCwgMik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2
ZVJlZ2lvbigpOworCisgICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJh
aW4iKSkgeworICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7
CisgICAgICAgICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CisgICAgICAg
ICAgICBncmFkaWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRp
bmF0ZXM7CisgICAgICAgICAgICBncmFkaWVudERhdGEucG9pbnQxID0gbV9tb3VzZUxvY2F0aW9u
SW5Db250ZW50Q29vcmRpbmF0ZXM7CisgICAgICAgICAgICBncmFkaWVudERhdGEuc3RhcnRSYWRp
dXMgPSAwOworICAgICAgICAgICAgZ3JhZGllbnREYXRhLmVuZFJhZGl1cyA9IHJhZGl1czsKKyAg
ICAgICAgICAgIGdyYWRpZW50RGF0YS5hc3BlY3RSYXRpbyA9IDE7CisgICAgICAgICAgICByZXR1
cm4gZ3JhZGllbnREYXRhOworICAgICAgICB9OworCisgICAgICAgIGF1dG8gbWFrZUdyYWRpZW50
ID0gWyZdIChib29sIGhhc0xpZ2h0QmFja2dyb3VuZCwgR3JhZGllbnQ6OlJhZGlhbERhdGEgZ3Jh
ZGllbnREYXRhKSB7CisgICAgICAgICAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0
ZShXVEZNb3ZlKGdyYWRpZW50RGF0YSksIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdC
IHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOworICAgICAg
ICAgICAgaWYgKHJlZ2lvbiAmJiB2YWx1ZUZvclNldHRpbmcoIndhc2giKSAmJiB2YWx1ZUZvclNl
dHRpbmcoImNsaXAiKSkgeworICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
eyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41KSB9KTsKKyAgICAg
ICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5k
ID8gQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9y
Ojp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4xKSB9KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
IXZhbHVlRm9yU2V0dGluZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIp
KSB7CisgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3Io
Q29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOworICAgICAgICAgICAgICAgIGdy
YWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFs
cGhhKDApIH0pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBncmFkaWVu
dC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhh
KDAuNSkgfSk7CisgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENv
bG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBncmFkaWVudDsKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAg
ICAgIGNvbnN0ZXhwciBmbG9hdCBkZWZhdWx0UmFkaXVzID0gNTA7CisgICAgICAgIGJvb2wgc2hv
dWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCIpOworICAgICAgICBWZWN0b3I8UGF0aD4g
Y2xpcFBhdGhzOworCisgICAgICAgIGlmIChzaG91bGRDbGlwKQorICAgICAgICAgICAgY2xpcFBh
dGhzID0gcGF0aHNGb3JSZWdpb24oKnJlZ2lvbik7CisKKyAgICAgICAgYm9vbCBzaG91bGRVc2VC
YWNrZHJvcEdyYWRpZW50ID0gIXNob3VsZENsaXAgfHwgIXJlZ2lvbiB8fCAoIXZhbHVlRm9yU2V0
dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKTsKKworICAgICAgICBpZiAo
c2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgeworICAgICAgICAgICAgaWYgKHNob3VsZENsaXAp
IHsKKyAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMpIHsK
KyAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250
ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5z
aW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBhdXRvIGJhY2tkcm9w
R3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKGdyYWRpZW50RGF0YShyYWRpdXMgKiAxLjUpLCB7
IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRp
b246OlVucHJlbXVsdGlwbGllZCB9KTsKKyAgICAgICAgICAgICAgICAgICAgYmFja2Ryb3BHcmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFs
cGhhKDAuMikgfSk7CisgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENv
bG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxwaGEoMCkgfSk7CisK
KyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQoV1RGTW92ZShiYWNr
ZHJvcEdyYWRpZW50KSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFBhdGgocGF0
aCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBhdXRvIGJhY2tkcm9wR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKGdyYWRpZW50RGF0
YShkZWZhdWx0UmFkaXVzICogMiksIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsg
fSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOworICAgICAgICAg
ICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6
OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOworICAgICAgICAgICAgICAgIGJhY2tkcm9w
R3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRo
QWxwaGEoMCkgfSk7CisKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChX
VEZNb3ZlKGJhY2tkcm9wR3JhZGllbnQpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxS
ZWN0KGRpcnR5UmVjdCk7ICAgIAorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
Ym9vbCBoYXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsKKyAgICAgICAgaWYgKCFzaG91bGRVc2VC
YWNrZHJvcEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisg
ICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xpZ2h0QmFja2dyb3Vu
ZDsKKworICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgeworICAgICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7CisgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0g
dmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1Jl
Y3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAg
ICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91
bmQsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5maWxs
UGF0aChwYXRoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQs
IGdyYWRpZW50RGF0YShkZWZhdWx0UmFkaXVzKSkpOworICAgICAgICAgICAgY29udGV4dC5maWxs
UmVjdChkaXJ0eVJlY3QpOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGVTYXZlci5yZXN0
b3JlKCk7CisKKyAgICBkcmF3U2V0dGluZ3MoY29udGV4dCk7Cit9CisKK2Jvb2wgSW50ZXJhY3Rp
b25SZWdpb25PdmVybGF5Ojptb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiBvdmVybGF5LCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQoreworICAgIGF1dG8gbWFpbkZyYW1lVmlldyA9IG1f
cGFnZS5tYWluRnJhbWUoKS52aWV3KCk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEN1cnNvcj4gY3Vy
c29yVG9TZXQ7CisKKyAgICBpZiAoIXZhbHVlRm9yU2V0dGluZygiY3Vyc29yIikpCisgICAgICAg
IGN1cnNvclRvU2V0ID0gbm9uZUN1cnNvcigpOworICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRp
bmcoImhvdmVyIikpCisgICAgICAgIGN1cnNvclRvU2V0ID0gcG9pbnRlckN1cnNvcigpOworCisg
ICAgYXV0byBldmVudEluQ29udGVudHNDb29yZGluYXRlcyA9IG1haW5GcmFtZVZpZXctPndpbmRv
d1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fc2V0dGluZ3Muc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKCFyZWN0Rm9yU2V0dGlu
Z0F0SW5kZXgoaSkuY29udGFpbnMoZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXMpKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGN1cnNvclRvU2V0ID0gaGFuZEN1cnNvcigpOworICAg
ICAgICBpZiAoZXZlbnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbiAmJiBldmVudC50eXBlKCkgPT0g
UGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkKSB7CisgICAgICAgICAgICBtX3NldHRpbmdzW2ld
LnZhbHVlID0gIW1fc2V0dGluZ3NbaV0udmFsdWU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChjdXJzb3JUb1NldCkKKyAgICAgICAgbWFpbkZy
YW1lVmlldy0+c2V0Q3Vyc29yKCpjdXJzb3JUb1NldCk7CisKKyAgICBtX21vdXNlTG9jYXRpb25J
bkNvbnRlbnRDb29yZGluYXRlcyA9IGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzOworICAgIG92
ZXJsYXkuc2V0TmVlZHNEaXNwbGF5KCk7CisKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IFBsYXRm
b3JtRXZlbnQ6Ok1vdXNlTW92ZWQgJiYgIWV2ZW50LmJ1dHRvbnMoKSAmJiAhdmFsdWVGb3JTZXR0
aW5nKCJob3ZlciIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsK
K30KKworI3ByYWdtYSBtYXJrIC0gUmVnaW9uT3ZlcmxheQorCiBSZWY8UmVnaW9uT3ZlcmxheT4g
UmVnaW9uT3ZlcmxheTo6Y3JlYXRlKFBhZ2UmIHBhZ2UsIERlYnVnUGFnZU92ZXJsYXlzOjpSZWdp
b25UeXBlIHJlZ2lvblR5cGUpCiB7CiAgICAgc3dpdGNoIChyZWdpb25UeXBlKSB7CkBAIC0yMjYs
NiArNTU5LDggQEAgUmVmPFJlZ2lvbk92ZXJsYXk+IFJlZ2lvbk92ZXJsYXk6OmNyZWF0ZShQYWdl
JiBwYWdlLCBEZWJ1Z1BhZ2VPdmVybGF5czo6UmVnaW9uVHkKICAgICAgICAgcmV0dXJuIE1vdXNl
V2hlZWxSZWdpb25PdmVybGF5OjpjcmVhdGUocGFnZSk7CiAgICAgY2FzZSBEZWJ1Z1BhZ2VPdmVy
bGF5czo6UmVnaW9uVHlwZTo6Tm9uRmFzdFNjcm9sbGFibGVSZWdpb246CiAgICAgICAgIHJldHVy
biBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OmNyZWF0ZShwYWdlKTsKKyAgICBjYXNl
IERlYnVnUGFnZU92ZXJsYXlzOjpSZWdpb25UeXBlOjpJbnRlcmFjdGlvblJlZ2lvbjoKKyAgICAg
ICAgcmV0dXJuIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6Y3JlYXRlKHBhZ2UpOwogICAgIH0K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gTW91c2VXaGVlbFJlZ2lvbk92
ZXJsYXk6OmNyZWF0ZShwYWdlKTsKQEAgLTI5Niw2ICs2MzEsOCBAQCB2b2lkIFJlZ2lvbk92ZXJs
YXk6OnJlY29tcHV0ZVJlZ2lvbigpCiAgICAgbV9yZWdpb25DaGFuZ2VkID0gZmFsc2U7CiB9CiAK
KyNwcmFnbWEgbWFyayAtIERlYnVnUGFnZU92ZXJsYXlzCisKIERlYnVnUGFnZU92ZXJsYXlzJiBE
ZWJ1Z1BhZ2VPdmVybGF5czo6c2luZ2xldG9uKCkKIHsKICAgICBpZiAoIXNoYXJlZERlYnVnT3Zl
cmxheXMpCkBAIC0zNzksNiArNzE2LDExIEBAIHZvaWQgRGVidWdQYWdlT3ZlcmxheXM6OnVwZGF0
ZU92ZXJsYXlSZWdpb25WaXNpYmlsaXR5KFBhZ2UmIHBhZ2UsIE9wdGlvblNldDxEZWJ1CiAgICAg
ICAgIHNob3dSZWdpb25PdmVybGF5KHBhZ2UsIFJlZ2lvblR5cGU6OldoZWVsRXZlbnRIYW5kbGVy
cyk7CiAgICAgZWxzZQogICAgICAgICBoaWRlUmVnaW9uT3ZlcmxheShwYWdlLCBSZWdpb25UeXBl
OjpXaGVlbEV2ZW50SGFuZGxlcnMpOworICAgIAorICAgIGlmICh2aXNpYmxlUmVnaW9ucy5jb250
YWlucyhEZWJ1Z092ZXJsYXlSZWdpb25zOjpJbnRlcmFjdGlvblJlZ2lvbikpCisgICAgICAgIHNo
b3dSZWdpb25PdmVybGF5KHBhZ2UsIFJlZ2lvblR5cGU6OkludGVyYWN0aW9uUmVnaW9uKTsKKyAg
ICBlbHNlCisgICAgICAgIGhpZGVSZWdpb25PdmVybGF5KHBhZ2UsIFJlZ2lvblR5cGU6OkludGVy
YWN0aW9uUmVnaW9uKTsKIH0KIAogdm9pZCBEZWJ1Z1BhZ2VPdmVybGF5czo6c2V0dGluZ3NDaGFu
Z2VkKFBhZ2UmIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFn
ZU92ZXJsYXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmgKaW5k
ZXggNmQyZDg0ZWEwNjNlOWI3N2U0Y2M4NzI2ODg1MDhhYmRjOTQ2ZmVkNy4uMzZmZWMyMThjY2Vk
MDMzNDIzZmEyODRjYThjODY3MDJhMjM5NjFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQ
YWdlT3ZlcmxheXMuaApAQCAtNDMsOCArNDMsOSBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBS
ZWdpb25UeXBlIHsKICAgICAgICAgV2hlZWxFdmVudEhhbmRsZXJzLAogICAgICAgICBOb25GYXN0
U2Nyb2xsYWJsZVJlZ2lvbiwKKyAgICAgICAgSW50ZXJhY3Rpb25SZWdpb24sCiAgICAgfTsKLSAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE51bWJlck9mUmVnaW9uVHlwZXMgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUmVnaW9uVHlwZTo6Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24pICsgMTsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE51bWJlck9mUmVnaW9uVHlwZXMgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUmVnaW9uVHlwZTo6SW50ZXJhY3Rpb25SZWdpb24pICsgMTsKIAog
ICAgIHN0YXRpYyB2b2lkIGRpZExheW91dChGcmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZENo
YW5nZUV2ZW50SGFuZGxlcnMoRnJhbWUmKTsKQEAgLTkzLDYgKzk0LDcgQEAgaW5saW5lIHZvaWQg
RGVidWdQYWdlT3ZlcmxheXM6OmRpZExheW91dChGcmFtZSYgZnJhbWUpCiAKICAgICBzaGFyZWRE
ZWJ1Z092ZXJsYXlzLT5yZWdpb25DaGFuZ2VkKGZyYW1lLCBSZWdpb25UeXBlOjpXaGVlbEV2ZW50
SGFuZGxlcnMpOwogICAgIHNoYXJlZERlYnVnT3ZlcmxheXMtPnJlZ2lvbkNoYW5nZWQoZnJhbWUs
IFJlZ2lvblR5cGU6Ok5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKTsKKyAgICBzaGFyZWREZWJ1Z092
ZXJsYXlzLT5yZWdpb25DaGFuZ2VkKGZyYW1lLCBSZWdpb25UeXBlOjpJbnRlcmFjdGlvblJlZ2lv
bik7CiB9CiAKIGlubGluZSB2b2lkIERlYnVnUGFnZU92ZXJsYXlzOjpkaWRDaGFuZ2VFdmVudEhh
bmRsZXJzKEZyYW1lJiBmcmFtZSkKQEAgLTEwMSw2ICsxMDMsNyBAQCBpbmxpbmUgdm9pZCBEZWJ1
Z1BhZ2VPdmVybGF5czo6ZGlkQ2hhbmdlRXZlbnRIYW5kbGVycyhGcmFtZSYgZnJhbWUpCiAKICAg
ICBzaGFyZWREZWJ1Z092ZXJsYXlzLT5yZWdpb25DaGFuZ2VkKGZyYW1lLCBSZWdpb25UeXBlOjpX
aGVlbEV2ZW50SGFuZGxlcnMpOwogICAgIHNoYXJlZERlYnVnT3ZlcmxheXMtPnJlZ2lvbkNoYW5n
ZWQoZnJhbWUsIFJlZ2lvblR5cGU6Ok5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKTsKKyAgICBzaGFy
ZWREZWJ1Z092ZXJsYXlzLT5yZWdpb25DaGFuZ2VkKGZyYW1lLCBSZWdpb25UeXBlOjpJbnRlcmFj
dGlvblJlZ2lvbik7CiB9CiAKIGlubGluZSB2b2lkIERlYnVnUGFnZU92ZXJsYXlzOjpkb0FmdGVy
VXBkYXRlUmVuZGVyaW5nKFBhZ2UmIHBhZ2UpCkBAIC0xMTAsNiArMTEzLDcgQEAgaW5saW5lIHZv
aWQgRGVidWdQYWdlT3ZlcmxheXM6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoUGFnZSYgcGFnZSkK
IAogICAgIHNoYXJlZERlYnVnT3ZlcmxheXMtPnVwZGF0ZVJlZ2lvbklmTmVjZXNzYXJ5KHBhZ2Us
IFJlZ2lvblR5cGU6OldoZWVsRXZlbnRIYW5kbGVycyk7CiAgICAgc2hhcmVkRGVidWdPdmVybGF5
cy0+dXBkYXRlUmVnaW9uSWZOZWNlc3NhcnkocGFnZSwgUmVnaW9uVHlwZTo6Tm9uRmFzdFNjcm9s
bGFibGVSZWdpb24pOworICAgIHNoYXJlZERlYnVnT3ZlcmxheXMtPnVwZGF0ZVJlZ2lvbklmTmVj
ZXNzYXJ5KHBhZ2UsIFJlZ2lvblR5cGU6OkludGVyYWN0aW9uUmVnaW9uKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNw
cAppbmRleCA4MjczYTY0ZmNkZmI3ZDM0ZWFhNzZmOThiYTdhMjExN2VhZmJmYmU2Li41ZDI4NzZh
NWRmZGE1ZDY1ZWZjMjlhZDgwMDRkYTljMDMxN2ZmNTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lU25hcHNob3R0aW5nLmNwcApAQCAtMzEsMTQgKzMxLDE3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiRnJhbWVTbmFwc2hvdHRpbmcuaCIKIAorI2luY2x1ZGUgIkNvbG9y
QmxlbmRpbmcuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGllcy5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlbmRlckFuY2VzdG9ySXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogCkBAIC0xNTgsNCArMTYx
LDUwIEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiBmcmFtZSwgTm9k
ZSYgbm9kZSwgU25hcHNob3RPcHRpb25zJiYgb3B0CiAgICAgcmV0dXJuIHNuYXBzaG90RnJhbWVS
ZWN0KGZyYW1lLCBzbmFwcGVkSW50UmVjdChub2RlLnJlbmRlcmVyKCktPnBhaW50aW5nUm9vdFJl
Y3QodG9wTGV2ZWxSZWN0KSksIFdURk1vdmUob3B0aW9ucykpOwogfQogCitzdGF0aWMgYm9vbCBz
dHlsZUNvbnRhaW5zQ29tcGxleEJhY2tncm91bmQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQor
eworICAgIHJldHVybiBzdHlsZS5oYXNCbGVuZE1vZGUoKSB8fCBzdHlsZS5oYXNCYWNrZ3JvdW5k
SW1hZ2UoKSB8fCBzdHlsZS5oYXNCYWNrZHJvcEZpbHRlcigpOworfQorCitDb2xvciBlc3RpbWF0
ZWRCYWNrZ3JvdW5kQ29sb3JGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGNvbnN0
IEZyYW1lJiBmcmFtZSkKK3sKKyAgICBhdXRvIGVzdGltYXRlZEJhY2tncm91bmRDb2xvciA9IGZy
YW1lLnZpZXcoKSA/IGZyYW1lLnZpZXcoKS0+ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSA6IENv
bG9yOjp0cmFuc3BhcmVudEJsYWNrOworCisgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSBu
dWxscHRyOworICAgIGF1dG8gY29tbW9uQW5jZXN0b3IgPSBjb21tb25JbmNsdXNpdmVBbmNlc3Rv
cjxDb21wb3NlZFRyZWU+KHJhbmdlKTsKKyAgICB3aGlsZSAoY29tbW9uQW5jZXN0b3IpIHsKKyAg
ICAgICAgaWYgKGlzPFJlbmRlckVsZW1lbnQ+KGNvbW1vbkFuY2VzdG9yLT5yZW5kZXJlcigpKSkg
eworICAgICAgICAgICAgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50Pihjb21tb25B
bmNlc3Rvci0+cmVuZGVyZXIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjb21tb25BbmNlc3RvciA9IGNvbW1vbkFuY2VzdG9yLT5wYXJlbnRPclNoYWRvd0hvc3RF
bGVtZW50KCk7CisgICAgfQorICAgIAorICAgIGF1dG8gYm91bmRpbmdSZWN0Rm9yUmFuZ2UgPSBl
bmNsb3NpbmdJbnRSZWN0KHVuaW9uUmVjdElnbm9yaW5nWmVyb1JlY3RzKFJlbmRlck9iamVjdDo6
YWJzb2x1dGVCb3JkZXJBbmRUZXh0UmVjdHMocmFuZ2UsIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0
OjpCb3VuZGluZ1JlY3RCZWhhdmlvcjo6UmVzcGVjdENsaXBwaW5nLAorICAgICAgICBSZW5kZXJP
YmplY3Q6OkJvdW5kaW5nUmVjdEJlaGF2aW9yOjpVc2VWaXNpYmxlQm91bmRzLAorICAgICAgICBS
ZW5kZXJPYmplY3Q6OkJvdW5kaW5nUmVjdEJlaGF2aW9yOjpJZ25vcmVUaW55UmVjdHMsCisgICAg
fSkpKTsKKworICAgIFZlY3RvcjxDb2xvcj4gcGFyZW50UmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3Jz
OworICAgIGZvciAoYXV0byYgYW5jZXN0b3IgOiBsaW5lYWdlT2ZUeXBlPFJlbmRlckVsZW1lbnQ+
KCpyZW5kZXJlcikpIHsKKyAgICAgICAgYXV0byBhYnNvbHV0ZUJvdW5kaW5nQm94ID0gYW5jZXN0
b3IuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICAgICAgYXV0byYgc3R5bGUgPSBhbmNl
c3Rvci5zdHlsZSgpOworICAgICAgICBpZiAoIWFic29sdXRlQm91bmRpbmdCb3guY29udGFpbnMo
Ym91bmRpbmdSZWN0Rm9yUmFuZ2UpIHx8ICFzdHlsZS5oYXNCYWNrZ3JvdW5kKCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoc3R5bGVDb250YWluc0NvbXBsZXhCYWNrZ3Jv
dW5kKHN0eWxlKSkKKyAgICAgICAgICAgIHJldHVybiBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3I7
CisKKyAgICAgICAgYXV0byB2aXNpdGVkRGVwZW5kZW50QmFja2dyb3VuZENvbG9yID0gc3R5bGUu
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKKyAgICAg
ICAgaWYgKHZpc2l0ZWREZXBlbmRlbnRCYWNrZ3JvdW5kQ29sb3IgIT0gQ29sb3I6OnRyYW5zcGFy
ZW50QmxhY2spCisgICAgICAgICAgICBwYXJlbnRSZW5kZXJlckJhY2tncm91bmRDb2xvcnMuYXBw
ZW5kKHZpc2l0ZWREZXBlbmRlbnRCYWNrZ3JvdW5kQ29sb3IpOworICAgIH0KKyAgICBwYXJlbnRS
ZW5kZXJlckJhY2tncm91bmRDb2xvcnMucmV2ZXJzZSgpOworICAgIGZvciAoY29uc3QgYXV0byYg
YmFja2dyb3VuZENvbG9yIDogcGFyZW50UmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3JzKQorICAgICAg
ICBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IgPSBibGVuZFNvdXJjZU92ZXIoZXN0aW1hdGVkQmFj
a2dyb3VuZENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IpOworCisgICAgcmV0dXJuIGVzdGltYXRlZEJh
Y2tncm91bmRDb2xvcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCmluZGV4IDFiNzcwMjZmNTEwOTIwMDFjZGE4NmUzMjQ4
MDg5MDM5NWIxNDViMmUuLmY0ZWRlMjJiNWRjMjU5NDgzYzhkNTEwZDdiMWJlMTFiM2I4NDFlY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgKQEAgLTYzLDQgKzYzLDYg
QEAgUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKEZyYW1lJiwg
Y29uc3QgSW50UmVjdCYsIGNvbnN0IFZlY3QKIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RO
b2RlKEZyYW1lJiwgTm9kZSYsIFNuYXBzaG90T3B0aW9ucyYmKTsKIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RTZWxlY3Rpb24oRnJhbWUmLCBTbmFwc2hvdE9wdGlv
bnMmJik7CiAKK0NvbG9yIGVzdGltYXRlZEJhY2tncm91bmRDb2xvckZvclJhbmdlKGNvbnN0IFNp
bXBsZVJhbmdlJiwgY29uc3QgRnJhbWUmKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcmFjdGlvblJlZ2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ludGVyYWN0aW9uUmVnaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWYxNWEz
ZTZhZjgzMzY2ZWQzOGU0ZjcwNzg1YTU0NzM4ZjExZDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9JbnRlcmFjdGlvblJlZ2lvbi5jcHAKQEAgLTAsMCArMSwxNzUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50ZXJhY3Rpb25S
ZWdpb24uaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNp
bmNsdWRlICJGcmFtZVNuYXBzaG90dGluZy5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2lu
Y2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQu
aCIKKyNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgiCisjaW5jbHVkZSAiSGl0VGVz
dFJlc3VsdC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYXRoVXRpbGl0aWVzLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiU2ltcGxlUmFuZ2Uu
aCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitJbnRlcmFjdGlvblJlZ2lvbjo6fkludGVyYWN0aW9uUmVnaW9uKCkgPSBkZWZhdWx0Owor
CitzdGF0aWMgRmxvYXRSZWN0IGFic29sdXRlQm91bmRpbmdSZWN0Rm9yUmFuZ2UoY29uc3QgU2lt
cGxlUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiB1bmlvblJlY3RJZ25vcmluZ1plcm9SZWN0
cyhSZW5kZXJPYmplY3Q6OmFic29sdXRlQm9yZGVyQW5kVGV4dFJlY3RzKHJhbmdlLCB7CisgICAg
ICAgIFJlbmRlck9iamVjdDo6Qm91bmRpbmdSZWN0QmVoYXZpb3I6OlJlc3BlY3RDbGlwcGluZywK
KyAgICAgICAgUmVuZGVyT2JqZWN0OjpCb3VuZGluZ1JlY3RCZWhhdmlvcjo6VXNlVmlzaWJsZUJv
dW5kcywKKyAgICAgICAgUmVuZGVyT2JqZWN0OjpCb3VuZGluZ1JlY3RCZWhhdmlvcjo6SWdub3Jl
VGlueVJlY3RzLAorICAgIH0pKTsKK30KKworc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rp
b25SZWdpb24+IHJlZ2lvbkZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBhdXRv
JiBmcmFtZVZpZXcgPSAqZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCktPnZpZXcoKTsKKyAgICBh
dXRvJiBtYWluRnJhbWVWaWV3ID0gKmVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpLT5tYWluRnJh
bWUoKS52aWV3KCk7CisgICAgCisgICAgSW50UmVjdCBmcmFtZUNsaXBSZWN0OworI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgZnJhbWVDbGlwUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoZnJh
bWVWaWV3LmV4cG9zZWRDb250ZW50UmVjdCgpKTsKKyNlbHNlCisgICAgaWYgKGF1dG8gdmlld0V4
cG9zZWRSZWN0ID0gZnJhbWVWaWV3LnZpZXdFeHBvc2VkUmVjdCgpKQorICAgICAgICBmcmFtZUNs
aXBSZWN0ID0gZW5jbG9zaW5nSW50UmVjdCgqdmlld0V4cG9zZWRSZWN0KTsKKyAgICBlbHNlCisg
ICAgICAgIGZyYW1lQ2xpcFJlY3QgPSBmcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0KCk7Cisj
ZW5kaWYKKworICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOworICAgIGlm
ICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8
RmxvYXRSZWN0PiByZWN0c0luQ29udGVudHNDb29yZGluYXRlczsKKyAgICAKKyAgICBJbnRlcmFj
dGlvblJlZ2lvbiByZWdpb247CisKKyAgICBhdXRvIGxpbmtSYW5nZSA9IG1ha2VSYW5nZVNlbGVj
dGluZ05vZGUoZWxlbWVudCk7CisgICAgCisgICAgaWYgKGxpbmtSYW5nZSkKKyAgICAgICAgcmVn
aW9uLmhhc0xpZ2h0QmFja2dyb3VuZCA9IGVzdGltYXRlZEJhY2tncm91bmRDb2xvckZvclJhbmdl
KCpsaW5rUmFuZ2UsICplbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKSkubHVtaW5hbmNlKCkgPiAw
LjU7CisgICAgCisgICAgaWYgKGxpbmtSYW5nZSAmJiByZW5kZXJlci0+aXNJbmxpbmUoKSAmJiAh
cmVuZGVyZXItPmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpIHsKKyAgICAgICAgcmVnaW9uLmlz
SW5saW5lID0gdHJ1ZTsKKworICAgICAgICBPcHRpb25TZXQ8UmVuZGVyT2JqZWN0OjpCb3VuZGlu
Z1JlY3RCZWhhdmlvcj4gYmVoYXZpb3IgeyBSZW5kZXJPYmplY3Q6OkJvdW5kaW5nUmVjdEJlaGF2
aW9yOjpSZXNwZWN0Q2xpcHBpbmcgfTsKKyAgICAgICAgcmVjdHNJbkNvbnRlbnRzQ29vcmRpbmF0
ZXMgPSBSZW5kZXJPYmplY3Q6OmFic29sdXRlVGV4dFJlY3RzKCpsaW5rUmFuZ2UsIGJlaGF2aW9y
KS5tYXAoWyZdKGF1dG8gcmVjdCkgLT4gRmxvYXRSZWN0IHsKKyAgICAgICAgICAgIHJldHVybiBy
ZWN0OworICAgICAgICB9KTsKKworICAgICAgICBpZiAocmVjdHNJbkNvbnRlbnRzQ29vcmRpbmF0
ZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBhdXRvIGJvdW5kaW5nUmVjdEZvclJhbmdlID0g
YWJzb2x1dGVCb3VuZGluZ1JlY3RGb3JSYW5nZSgqbGlua1JhbmdlKTsKKyAgICAgICAgICAgIGlm
ICghYm91bmRpbmdSZWN0Rm9yUmFuZ2UuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJlY3Rz
SW5Db250ZW50c0Nvb3JkaW5hdGVzID0geyBib3VuZGluZ1JlY3RGb3JSYW5nZSB9OworICAgICAg
ICB9CisgICAgfQorCisgICAgaWYgKHJlY3RzSW5Db250ZW50c0Nvb3JkaW5hdGVzLmlzRW1wdHko
KSkKKyAgICAgICAgcmVjdHNJbkNvbnRlbnRzQ29vcmRpbmF0ZXMgPSB7IHJlbmRlcmVyLT5hYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdCgpIH07CisgICAgCisgICAgaWYgKGlzPFJlbmRlckJveD4oKnJl
bmRlcmVyKSkgeworICAgICAgICBSb3VuZGVkUmVjdDo6UmFkaWkgYm9yZGVyUmFkaWkgPSBkb3du
Y2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJlcikuYm9yZGVyUmFkaWkoKTsKKyAgICAgICAgcmVnaW9u
LmJvcmRlclJhZGl1cyA9IGJvcmRlclJhZGlpLm1pbmltdW1SYWRpdXMoKTsKKyAgICB9CisKKyAg
ICByZWdpb24ucmVjdHNJbkNvbnRlbnRDb29yZGluYXRlcyA9IHJlY3RzSW5Db250ZW50c0Nvb3Jk
aW5hdGVzLm1hcChbJl0oYXV0byByZWN0KSB7CisgICAgICAgIGF1dG8gY29udGVudHNSZWN0ID0g
cmVjdDsKKworICAgICAgICBpZiAoJmZyYW1lVmlldyAhPSAmbWFpbkZyYW1lVmlldykKKyAgICAg
ICAgICAgIGNvbnRlbnRzUmVjdC5pbnRlcnNlY3QoZnJhbWVDbGlwUmVjdCk7CisKKyAgICAgICAg
cmV0dXJuIGNvbnRlbnRzUmVjdDsKKyAgICB9KTsKKyAgICAgICAgCisgICAgcmV0dXJuIFdURk1v
dmUocmVnaW9uKTsKK30KKworc3RhdGljIEN1cnNvclR5cGUgY3Vyc29yVHlwZUZvckVsZW1lbnQo
RWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVy
ZXIoKTsKKyAgICBhdXRvKiBzdHlsZSA9IHJlbmRlcmVyID8gJnJlbmRlcmVyLT5zdHlsZSgpIDog
bnVsbHB0cjsKKyAgICBhdXRvIGN1cnNvclR5cGUgPSBzdHlsZSA/IHN0eWxlLT5jdXJzb3IoKSA6
IEN1cnNvclR5cGU6OkF1dG87CisKKyAgICBpZiAoY3Vyc29yVHlwZSA9PSBDdXJzb3JUeXBlOjpB
dXRvICYmIGVsZW1lbnQuZW5jbG9zaW5nTGlua0V2ZW50UGFyZW50T3JTZWxmKCkgJiYgZWxlbWVu
dC5pc0xpbmsoKSkKKyAgICAgICAgY3Vyc29yVHlwZSA9IEN1cnNvclR5cGU6OlBvaW50ZXI7CisK
KyAgICByZXR1cm4gY3Vyc29yVHlwZTsKK30KKworVmVjdG9yPEludGVyYWN0aW9uUmVnaW9uPiBp
bnRlcmFjdGlvblJlZ2lvbnMoUGFnZSYgcGFnZSwgRmxvYXRSZWN0IHJlY3QpCit7CisgICAgUmVm
IGZyYW1lKHBhZ2UubWFpbkZyYW1lKCkpOworICAgIFJlZlB0ciBmcmFtZVZpZXcgPSBmcmFtZS0+
dmlldygpOworICAgIAorICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgZnJhbWVWaWV3LT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7
CisgICAgCisgICAgUmVmUHRyIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYg
KCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gcmVzdWx0ID0gSGl0
VGVzdFJlc3VsdCB7IExheW91dFJlY3QocmVjdCkgfTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1
ZXN0KHsKKyAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LAorICAgICAgICBI
aXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZlLAorICAgICAgICBIaXRUZXN0UmVxdWVzdDo6VHlw
ZTo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5LAorICAgICAgICBIaXRUZXN0UmVx
dWVzdDo6VHlwZTo6Q29sbGVjdE11bHRpcGxlRWxlbWVudHMKKyAgICB9KTsKKyAgICBkb2N1bWVu
dC0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOworCisgICAgVmVjdG9yPEludGVyYWN0aW9uUmVn
aW9uPiByZWdpb25zOworCisgICAgZm9yIChjb25zdCBhdXRvJiBub2RlIDogcmVzdWx0Lmxpc3RC
YXNlZFRlc3RSZXN1bHQoKSkgeworICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUuZ2V0KCkp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2Fz
dDxFbGVtZW50Pihub2RlLmdldCgpKTsKKworICAgICAgICBpZiAoIWVsZW1lbnQud2lsbFJlc3Bv
bmRUb01vdXNlQ2xpY2tFdmVudHMoKSAmJiAhZWxlbWVudC53aWxsUmVzcG9uZFRvVG91Y2hFdmVu
dHMoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChjdXJzb3JUeXBlRm9y
RWxlbWVudChlbGVtZW50KSAhPSBDdXJzb3JUeXBlOjpQb2ludGVyICYmICFpczxIVE1MRm9ybUNv
bnRyb2xFbGVtZW50PihlbGVtZW50KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IGF1dG8gcmVnaW9uID0gcmVnaW9uRm9yRWxlbWVudChlbGVtZW50KTsKKyAgICAgICAgaWYgKHJl
Z2lvbikKKyAgICAgICAgICAgIHJlZ2lvbnMuYXBwZW5kKCpyZWdpb24pOworICAgIH0KKworICAg
IHJldHVybiByZWdpb25zOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ludGVyYWN0aW9uUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyYWN0aW9uUmVn
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTZmOTA2MjJhNDJiYTU3NTAzYzhhMTA4NWE0NTczMmQyY2IxN2Zh
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJhY3Rpb25SZWdp
b24uaApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBEZWNvZGVyOworY2xh
c3MgRW5jb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYWdlOworCitz
dHJ1Y3QgSW50ZXJhY3Rpb25SZWdpb24geworICAgIFZlY3RvcjxGbG9hdFJlY3Q+IHJlY3RzSW5D
b250ZW50Q29vcmRpbmF0ZXM7CisgICAgYm9vbCBpc0lubGluZSB7IGZhbHNlIH07CisgICAgYm9v
bCBoYXNMaWdodEJhY2tncm91bmQgeyBmYWxzZSB9OworICAgIGZsb2F0IGJvcmRlclJhZGl1cyB7
IDAgfTsKKyAgICAKKyAgICBXRUJDT1JFX0VYUE9SVCB+SW50ZXJhY3Rpb25SZWdpb24oKTsKKyAg
ICAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50
ZXJhY3Rpb25SZWdpb24+IGRlY29kZShEZWNvZGVyJik7Cit9OworCitXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8SW50ZXJhY3Rpb25SZWdpb24+IGludGVyYWN0aW9uUmVnaW9ucyhQYWdlJiwgRmxvYXRS
ZWN0IHJlY3RJbkNvbnRlbnRDb29yZGluYXRlcyk7CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+
Cit2b2lkIEludGVyYWN0aW9uUmVnaW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
K3sKKyAgICBlbmNvZGVyIDw8IHJlY3RzSW5Db250ZW50Q29vcmRpbmF0ZXM7CisgICAgZW5jb2Rl
ciA8PCBpc0lubGluZTsKKyAgICBlbmNvZGVyIDw8IGhhc0xpZ2h0QmFja2dyb3VuZDsKKyAgICBl
bmNvZGVyIDw8IGJvcmRlclJhZGl1czsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0
ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdpb24+IEludGVyYWN0aW9uUmVnaW9uOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGbG9hdFJlY3Q+
PiByZWN0c0luQ29udGVudENvb3JkaW5hdGVzOworICAgIGRlY29kZXIgPj4gcmVjdHNJbkNvbnRl
bnRDb29yZGluYXRlczsKKyAgICBpZiAoIXJlY3RzSW5Db250ZW50Q29vcmRpbmF0ZXMpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBp
c0lubGluZTsKKyAgICBkZWNvZGVyID4+IGlzSW5saW5lOworICAgIGlmICghaXNJbmxpbmUpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgc3RkOjpvcHRpb25hbDxib29s
PiBoYXNMaWdodEJhY2tncm91bmQ7CisgICAgZGVjb2RlciA+PiBoYXNMaWdodEJhY2tncm91bmQ7
CisgICAgaWYgKCFoYXNMaWdodEJhY2tncm91bmQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gYm9yZGVyUmFkaXVzOworICAgIGRl
Y29kZXIgPj4gYm9yZGVyUmFkaXVzOworICAgIGlmICghYm9yZGVyUmFkaXVzKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeworICAgICAgICBXVEZNb3ZlKCpy
ZWN0c0luQ29udGVudENvb3JkaW5hdGVzKSwKKyAgICAgICAgV1RGTW92ZSgqaXNJbmxpbmUpLAor
ICAgICAgICBXVEZNb3ZlKCpoYXNMaWdodEJhY2tncm91bmQpLAorICAgICAgICBXVEZNb3ZlKCpi
b3JkZXJSYWRpdXMpCisgICAgfSB9OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNh
dG9yLmNwcAppbmRleCBjYTVmYmU2M2NjZjZjZGI5OGFmODVlZDU5MjlhMTMwMzhkNjliZmM3Li40
MGQwMjA1MzhjMzkyYTQ1Mzk1NWE5MmU0YzYxZGFkMDM4MzA5ZWI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVGV4dEluZGljYXRvci5jcHAKQEAgLTE3NSwxMSArMTc1LDYgQEAgc3RhdGljIGJvb2wgdGFr
ZVNuYXBzaG90cyhUZXh0SW5kaWNhdG9yRGF0YSYgZGF0YSwgRnJhbWUmIGZyYW1lLCBJbnRSZWN0
IHNuYXBzaG8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgc3R5bGVDb250YWlu
c0NvbXBsZXhCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKLXsKLSAgICByZXR1
cm4gc3R5bGUuaGFzQmxlbmRNb2RlKCkgfHwgc3R5bGUuaGFzQmFja2dyb3VuZEltYWdlKCkgfHwg
c3R5bGUuaGFzQmFja2Ryb3BGaWx0ZXIoKTsKLX0KLQogc3RhdGljIEhhc2hTZXQ8Q29sb3I+IGVz
dGltYXRlZFRleHRDb2xvcnNGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCiB7CiAg
ICAgSGFzaFNldDxDb2xvcj4gY29sb3JzOwpAQCAtMjAzLDQyICsxOTgsNiBAQCBzdGF0aWMgRmxv
YXRSZWN0IGFic29sdXRlQm91bmRpbmdSZWN0Rm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJh
bmdlKQogICAgIH0pKTsKIH0KIAotc3RhdGljIENvbG9yIGVzdGltYXRlZEJhY2tncm91bmRDb2xv
ckZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgY29uc3QgRnJhbWUmIGZyYW1lKQot
ewotICAgIGF1dG8gZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yID0gZnJhbWUudmlldygpID8gZnJh
bWUudmlldygpLT5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpIDogQ29sb3I6OnRyYW5zcGFyZW50
QmxhY2s7Ci0KLSAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IG51bGxwdHI7Ci0gICAgYXV0
byBjb21tb25BbmNlc3RvciA9IGNvbW1vbkluY2x1c2l2ZUFuY2VzdG9yPENvbXBvc2VkVHJlZT4o
cmFuZ2UpOwotICAgIHdoaWxlIChjb21tb25BbmNlc3RvcikgewotICAgICAgICBpZiAoaXM8UmVu
ZGVyRWxlbWVudD4oY29tbW9uQW5jZXN0b3ItPnJlbmRlcmVyKCkpKSB7Ci0gICAgICAgICAgICBy
ZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGNvbW1vbkFuY2VzdG9yLT5yZW5kZXJl
cigpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNvbW1vbkFuY2Vz
dG9yID0gY29tbW9uQW5jZXN0b3ItPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKTsKLSAgICB9
Ci0KLSAgICBhdXRvIGJvdW5kaW5nUmVjdEZvclJhbmdlID0gZW5jbG9zaW5nSW50UmVjdChhYnNv
bHV0ZUJvdW5kaW5nUmVjdEZvclJhbmdlKHJhbmdlKSk7Ci0gICAgVmVjdG9yPENvbG9yPiBwYXJl
bnRSZW5kZXJlckJhY2tncm91bmRDb2xvcnM7Ci0gICAgZm9yICg7ICEhcmVuZGVyZXI7IHJlbmRl
cmVyID0gcmVuZGVyZXItPnBhcmVudCgpKSB7Ci0gICAgICAgIGF1dG8gYWJzb2x1dGVCb3VuZGlu
Z0JveCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwotICAgICAgICBhdXRv
JiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgICAgICBpZiAoIWFic29sdXRlQm91bmRp
bmdCb3guY29udGFpbnMoYm91bmRpbmdSZWN0Rm9yUmFuZ2UpIHx8ICFzdHlsZS5oYXNCYWNrZ3Jv
dW5kKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoc3R5bGVDb250YWlu
c0NvbXBsZXhCYWNrZ3JvdW5kKHN0eWxlKSkKLSAgICAgICAgICAgIHJldHVybiBlc3RpbWF0ZWRC
YWNrZ3JvdW5kQ29sb3I7Ci0KLSAgICAgICAgYXV0byB2aXNpdGVkRGVwZW5kZW50QmFja2dyb3Vu
ZENvbG9yID0gc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKTsKLSAgICAgICAgaWYgKHZpc2l0ZWREZXBlbmRlbnRCYWNrZ3JvdW5kQ29sb3IgIT0g
Q29sb3I6OnRyYW5zcGFyZW50QmxhY2spCi0gICAgICAgICAgICBwYXJlbnRSZW5kZXJlckJhY2tn
cm91bmRDb2xvcnMuYXBwZW5kKHZpc2l0ZWREZXBlbmRlbnRCYWNrZ3JvdW5kQ29sb3IpOwotICAg
IH0KLSAgICBwYXJlbnRSZW5kZXJlckJhY2tncm91bmRDb2xvcnMucmV2ZXJzZSgpOwotICAgIGZv
ciAoY29uc3QgYXV0byYgYmFja2dyb3VuZENvbG9yIDogcGFyZW50UmVuZGVyZXJCYWNrZ3JvdW5k
Q29sb3JzKQotICAgICAgICBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IgPSBibGVuZFNvdXJjZU92
ZXIoZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IpOwotCi0gICAgcmV0
dXJuIGVzdGltYXRlZEJhY2tncm91bmRDb2xvcjsKLX0KLQogc3RhdGljIGJvb2wgaGFzQW55SWxs
ZWdpYmxlQ29sb3JzKFRleHRJbmRpY2F0b3JEYXRhJiBkYXRhLCBjb25zdCBDb2xvciYgYmFja2dy
b3VuZENvbG9yLCBIYXNoU2V0PENvbG9yPiYmIHRleHRDb2xvcnMpCiB7CiAgICAgaWYgKGRhdGEu
b3B0aW9ucy5jb250YWlucyhUZXh0SW5kaWNhdG9yT3B0aW9uOjpQYWludEFsbENvbnRlbnQpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oCmluZGV4IDRh
NmQ3Nzg1MzBhZjRjYjZiMDQ0ZmI3NzdlM2U2ZmE4ZTk3YzNhZWIuLjZiMDMyMjUyMzYyN2JlMzk5
MjRkOTZjM2JkMmE2YWRkYWY0MzMyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0xheW91dFNpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9MYXlvdXRTaXplLmgKQEAgLTU4LDYgKzU4LDkgQEAgcHVibGljOgogICAgIExheW91
dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CiAgICAgTGF5b3V0VW5pdCBo
ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQogCisgICAgTGF5b3V0VW5pdCBtaW5E
aW1lbnNpb24oKSBjb25zdCB7IHJldHVybiBzdGQ6Om1pbihtX3dpZHRoLCBtX2hlaWdodCk7IH0K
KyAgICBMYXlvdXRVbml0IG1heERpbWVuc2lvbigpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWF4KG1f
d2lkdGgsIG1faGVpZ2h0KTsgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZXRX
aWR0aChUIHdpZHRoKSB7IG1fd2lkdGggPSB3aWR0aDsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHZvaWQgc2V0SGVpZ2h0KFQgaGVpZ2h0KSB7IG1faGVpZ2h0ID0gaGVpZ2h0OyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCmluZGV4IDEx
N2JlZWY3YTMzYzJmZWIwMTg3NTIzMDY1ZGZlNTkyNDM0ZTA1OTAuLjExMTJiODQ0ZGZiMTU2NTg1
NTE4NzA4ZGZjNjUyYzgwOWFmNzEzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUm91bmRlZFJlY3QuaApAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAKICAgICAg
ICAgUmFkaWkgdHJhbnNwb3NlZFJhZGlpKCkgY29uc3QgeyByZXR1cm4gUmFkaWkobV90b3BMZWZ0
LnRyYW5zcG9zZWRTaXplKCksIG1fdG9wUmlnaHQudHJhbnNwb3NlZFNpemUoKSwgbV9ib3R0b21M
ZWZ0LnRyYW5zcG9zZWRTaXplKCksIG1fYm90dG9tUmlnaHQudHJhbnNwb3NlZFNpemUoKSk7IH0K
IAorICAgICAgICBMYXlvdXRVbml0IG1pbmltdW1SYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdGQ6
Om1pbih7IG1fdG9wTGVmdC5taW5EaW1lbnNpb24oKSwgbV90b3BSaWdodC5taW5EaW1lbnNpb24o
KSwgbV9ib3R0b21MZWZ0Lm1pbkRpbWVuc2lvbigpLCBtX2JvdHRvbVJpZ2h0Lm1pbkRpbWVuc2lv
bigpIH0pOyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBMYXlvdXRTaXplIG1fdG9wTGVmdDsK
ICAgICAgICAgTGF5b3V0U2l6ZSBtX3RvcFJpZ2h0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRl
ci5jcHAKaW5kZXggYTNmYmI3NjBlNzc2MDQwNzhkOGU1MGMxNGNkZDdkN2NlYTZlYjZkMy4uZWI5
ZWI1NGE4MjI3Y2ExZDg4MDM3OTA0ZjBiNjk0OWQ1Mjc1MThmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFG
b3JtYXRSZWFkZXIuY3BwCkBAIC0zNiw5ICszNiwxMSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTYW1wbGUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb1RyYWNrUHJpdmF0ZS5oPgogI2luY2x1ZGUg
PHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8cGFs
L2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZl
cmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJl
ZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggN2E3OGUyYWVlYTc1ZmVhY2UzMjc2ZmI0NDgyZWYzZGY4
MjIwNTEwYS4uMDk0ZjliZmE1MGJlNGU5ZjBjOTQ3NzgyNWVjMGEwYzkzNmZkZjQ3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5j
ZXNQcml2YXRlLmgKQEAgLTM3LDYgKzM3LDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVn
ZXIsIF9XS0RlYnVnT3ZlcmxheVJlZ2lvbnMpIHsKICAgICBfV0tXaGVlbEV2ZW50SGFuZGxlclJl
Z2lvbiA9IDEgPDwgMSwKICAgICBfV0tUb3VjaEFjdGlvblJlZ2lvbiA9IDEgPDwgMiwKICAgICBf
V0tFZGl0YWJsZUVsZW1lbnRSZWdpb24gPSAxIDw8IDMsCisgICAgX1dLSW50ZXJhY3Rpb25SZWdp
b24gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKSA9
IDEgPDwgNCwKIH0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSksIGlvcyg5LjApKTsKIAog
dHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS0phdmFTY3JpcHRSdW50aW1lRmxhZ3Mp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDE0YWRiZDhh
Y2E4NjVmZGFjNTc4MzQxMWZjOTlmMDQ4MDRhN2IxZjAuLmI2MjQ2ZDA2YWJhOTFhMDUzZDJkMGNm
OWViZmQzYjUwNzhmMTRkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtMTEyODIsOSArMTEyODIsOSBAQCBib29sIFdlYlBhZ2VQcm94eTo6c2hvdWxkRW5h
YmxlQ2FwdGl2ZVBvcnRhbE1vZGUoKSBjb25zdAogICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24t
PmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6aW50
ZXJhY3RhYmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRlcyhGbG9hdFJlY3QgcmVjdCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8RmxvYXRSZWN0Pik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJhY3Rpb25SZWdpb25zKEZsb2F0UmVjdCByZWN0
SW5Db250ZW50Q29vcmRpbmF0ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPEludGVy
YWN0aW9uUmVnaW9uPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnRlcmFjdGFibGVSZWdpb25zSW5Sb290Vmlld0Nv
b3JkaW5hdGVzKHJlY3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnRlcmFjdGlvblJlZ2lvbnMocmVjdElu
Q29udGVudENvb3JkaW5hdGVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IGJiMWZhY2ZjODYwYWJhMzdhOTFhZjFmYWYzZGVhNDBiYmQ0OWUwOTMuLjFjN2Q1NWMxNDNl
MzcwYjgyYWI2ODk4OTU0MGZiMDVlNGExNDcyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC0yOTksNiArMjk5LDcgQEAgc3RydWN0IEVsZW1lbnRDb250ZXh0Owog
c3RydWN0IEV4Y2VwdGlvbkRldGFpbHM7CiBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5nczsKIHN0
cnVjdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOworc3RydWN0IEludGVyYWN0aW9uUmVnaW9uOwog
c3RydWN0IExpbmtJY29uOwogc3RydWN0IE1lZGlhU3RyZWFtUmVxdWVzdDsKIHN0cnVjdCBNZWRp
YVVzYWdlSW5mbzsKQEAgLTIwODIsNyArMjA4Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsYXNz
aWZ5TW9kYWxDb250YWluZXJDb250cm9scyhWZWN0b3I8U3RyaW5nPiYmIHRleHRzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpNb2RhbENvbnRhaW5lckNvbnRyb2xUeXBl
PiYmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JNb2RhbENvbnRhaW5lcihPcHRpb25T
ZXQ8V2ViQ29yZTo6TW9kYWxDb250YWluZXJDb250cm9sVHlwZT4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6TW9kYWxDb250YWluZXJEZWNpc2lvbik+JiYpOwogCi0gICAgdm9pZCBp
bnRlcmFjdGFibGVSZWdpb25zSW5Sb290Vmlld0Nvb3JkaW5hdGVzKFdlYkNvcmU6OkZsb2F0UmVj
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0Pik+JiYp
OworICAgIHZvaWQgaW50ZXJhY3Rpb25SZWdpb25zKFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0SW5D
b250ZW50Q29vcmRpbmF0ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6
OkludGVyYWN0aW9uUmVnaW9uPik+JiYpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIHZvaWQgc2V0U2VydmljZVdvcmtlck9wZW5XaW5kb3dDb21wbGV0aW9uQ2FsbGJhY2soQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uQ2FsbGJhY2spCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQppbmRleCBlZGM0NWE5MGQ2NGYxMjg5ZTZjMjM1NTdlZWQwMjg0YzYwYjkxMTRiLi40NWRl
YmJkYTczODlkOGVhMjRmOGJiODI3YjdiNzBhOTA1MGQ3ZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAg
LTk5OTQsMTAgKzk5OTQsMTAgQEAgLSAodm9pZClwb3NpdGlvbkluZm9ybWF0aW9uRm9ySG92ZXJQ
bGF0dGVyOihXS0hvdmVyUGxhdHRlciAqKWhvdmVyUGxhdHRlciB3aXRoUmUKICAgICBbc2VsZiBk
b0FmdGVyUG9zaXRpb25JbmZvcm1hdGlvblVwZGF0ZTpjb21wbGV0aW9uSGFuZGxlciBmb3JSZXF1
ZXN0OnJlcXVlc3RdOwogfQogCi0tICh2b2lkKWludGVyYWN0YWJsZVJlZ2lvbnNGb3JIb3ZlclBs
YXR0ZXI6KFdLSG92ZXJQbGF0dGVyICopcGxhdHRlciBpblJlY3Q6KFdlYkNvcmU6OkZsb2F0UmVj
dClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShWZWN0b3I8V2ViQ29yZTo6RmxvYXRS
ZWN0PikpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpaW50ZXJhY3Rpb25SZWdpb25zRm9ySG92
ZXJQbGF0dGVyOihXS0hvdmVyUGxhdHRlciAqKXBsYXR0ZXIgaW5SZWN0OihXZWJDb3JlOjpGbG9h
dFJlY3QpcmVjdEluQ29udGVudENvb3JkaW5hdGVzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShWZWN0b3I8V2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdpb24+KSljb21wbGV0aW9uSGFuZGxlcgog
ewotICAgIF9wYWdlLT5pbnRlcmFjdGFibGVSZWdpb25zSW5Sb290Vmlld0Nvb3JkaW5hdGVzKHJl
Y3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
IChWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0cykgewotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZWN0cyk7CisgICAgX3BhZ2UtPmludGVyYWN0aW9uUmVnaW9ucyhyZWN0SW5Db250
ZW50Q29vcmRpbmF0ZXMsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildIChWZWN0b3I8V2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdpb24+IHJlZ2lvbnMp
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVnaW9ucyk7CiAgICAgfSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyLmgKaW5kZXggY2RiYmQ4
MDA2Yzc1MDA1MGI1MWYxNmYzMjk0Yjg1MjA5YzI3YzI1Mi4uN2NmNDIzMTAxY2IwNDQwY2FiZjI1
ZjFhZDBhYWQzMGMxODUzMDFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLSG92ZXJQbGF0dGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
SG92ZXJQbGF0dGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgRmxvYXRSZWN0Oworc3RydWN0IEludGVyYWN0aW9uUmVnaW9uOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTQ0LDcgKzQ1LDcgQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0OwogQHJlcXVpcmVkCiAtICh2b2lkKXBvc2l0aW9uSW5mb3JtYXRpb25Gb3JIb3Zl
clBsYXR0ZXI6KFdLSG92ZXJQbGF0dGVyICopaG92ZXJQbGF0dGVyIHdpdGhSZXF1ZXN0OihXZWJL
aXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JilyZXF1ZXN0IGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uKSlj
b21wbGV0aW9uSGFuZGxlcjsKIAotLSAodm9pZClpbnRlcmFjdGFibGVSZWdpb25zRm9ySG92ZXJQ
bGF0dGVyOihXS0hvdmVyUGxhdHRlciAqKWhvdmVyUGxhdHRlciBpblJlY3Q6KFdlYkNvcmU6OkZs
b2F0UmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShWZWN0b3I8V2ViQ29yZTo6
RmxvYXRSZWN0PikpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKWludGVyYWN0aW9uUmVnaW9u
c0ZvckhvdmVyUGxhdHRlcjooV0tIb3ZlclBsYXR0ZXIgKilob3ZlclBsYXR0ZXIgaW5SZWN0OihX
ZWJDb3JlOjpGbG9hdFJlY3QpcmVjdEluQ29udGVudENvb3JkaW5hdGVzIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShWZWN0b3I8V2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdpb24+KSljb21wbGV0
aW9uSGFuZGxlcjsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tIb3ZlclBsYXR0ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tI
b3ZlclBsYXR0ZXIubW0KaW5kZXggNDA0MjYwNTE2MmI3OTEzYjg5NWE1MTM4MzVhMzEyMTlmMGUx
N2U4MS4uYTc5OTVjNGNhOGIyZTU3NGRlZmQ2MzgxYmM4MTYyMjk2YWI4ODEzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5tbQpAQCAtMzAsNiArMzAs
NyBAQAogCiAjaW1wb3J0ICJXS0hvdmVyUGxhdHRlclBhcmFtZXRlcnMuaCIKICNpbXBvcnQgPFVJ
S2l0L1VJS2l0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0ludGVyYWN0aW9uUmVnaW9uLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1BhdGhVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUNB
TGF5ZXJFeHRyYXMuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgpA
QCAtMjQ3LDE1ICsyNDgsMTcgQEAgLSAodm9pZCl1cGRhdGVEZWJ1Z0luZGljYXRvcgogICAgIFts
aW5rSGlnaGxpZ2h0TGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKICAgICBbW192aWV3IGxh
eWVyXSBhZGRTdWJsYXllcjpsaW5rSGlnaGxpZ2h0TGF5ZXIuZ2V0KCldOwogCi0gICAgW19kZWxl
Z2F0ZSBpbnRlcmFjdGFibGVSZWdpb25zRm9ySG92ZXJQbGF0dGVyOnNlbGYgaW5SZWN0OnNlYXJj
aEJvdW5kaW5nUmVjdCBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3NlbGYsIHN0cm9u
Z1NlbGYgPSByZXRhaW5QdHIoc2VsZildIChWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0
cykgeworICAgIFtfZGVsZWdhdGUgaW50ZXJhY3Rpb25SZWdpb25zRm9ySG92ZXJQbGF0dGVyOnNl
bGYgaW5SZWN0OnNlYXJjaEJvdW5kaW5nUmVjdCBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQ
dHIoW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildIChWZWN0b3I8V2ViQ29yZTo6
SW50ZXJhY3Rpb25SZWdpb24+IHJlZ2lvbnMpIHsKICAgICAgICAgaWYgKCFfbGlua0NvdW50TGF5
ZXIgJiYgIV9saW5rSGlnaGxpZ2h0TGF5ZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgW19saW5rQ291bnRMYXllciBzZXRTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCIlenUiLCByZWN0cy5zaXplKCldXTsKKyAgICAgICAgW19saW5rQ291bnRMYXllciBzZXRTdHJp
bmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlenUiLCByZWdpb25zLnNpemUoKV1dOwog
CiAgICAgICAgIFdlYkNvcmU6OlBhdGggcGF0aDsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBy
ZWN0IDogcmVjdHMpCi0gICAgICAgICAgICBwYXRoLmFkZFJlY3QocmVjdCk7CisgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgcmVnaW9uIDogcmVnaW9ucykgeworICAgICAgICAgICAgZm9yIChjb25z
dCBhdXRvJiByZWN0IDogcmVnaW9uLnJlY3RzSW5Db250ZW50Q29vcmRpbmF0ZXMpCisgICAgICAg
ICAgICAgICAgcGF0aC5hZGRSZWN0KHJlY3QpOworICAgICAgICB9CiAgICAgICAgIFtfbGlua0hp
Z2hsaWdodExheWVyIHNldFBhdGg6cGF0aC5wbGF0Zm9ybVBhdGgoKV07CiAgICAgfSkuZ2V0KCld
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IGFjODAwYjkxOGFhN2I3YTZjZTg5YTg4NmM5M2VkMDViN2NlNGIwOTguLjcyOTQ5NDFjYWEyYjVj
N2U1NWM0ZjUxNDBjOGNjYWY5NTY4NDhkMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02NDA4LDQxICs2NDA4LDkgQEAgdm9pZCBXZWJQYWdl
OjpjYW5jZWxlZENvbXBvc2l0aW9uKCkKICAgICBzZW5kRWRpdG9yU3RhdGVVcGRhdGUoKTsKIH0K
IAotdm9pZCBXZWJQYWdlOjppbnRlcmFjdGFibGVSZWdpb25zSW5Sb290Vmlld0Nvb3JkaW5hdGVz
KEZsb2F0UmVjdCByZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxGbG9hdFJlY3Q+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZTo6aW50ZXJhY3Rpb25SZWdpb25z
KEZsb2F0UmVjdCByZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPEludGVyYWN0aW9uUmVnaW9uPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgUmVmIGZyYW1lKG1fcGFnZS0+bWFpbkZyYW1lKCkpOwotCi0gICAgaWYgKFJlZlB0ciBmcmFt
ZVZpZXcgPSBmcmFtZS0+dmlldygpKQotICAgICAgICBmcmFtZVZpZXctPnVwZGF0ZUxheW91dEFu
ZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKLQotICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJl
c3VsdCB7IExheW91dFJlY3QocmVjdCkgfTsKLSAgICBSZWZQdHIgZG9jdW1lbnQgPSBmcmFtZS0+
ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBIaXRUZXN0UmVxdWVzdCBy
ZXF1ZXN0KHsKLSAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LAotICAgICAg
ICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5
LAotICAgICAgICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6Q29sbGVjdE11bHRpcGxlRWxlbWVudHMK
LSAgICB9KTsKLSAgICBkb2N1bWVudC0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwotCi0gICAg
VmVjdG9yPEZsb2F0UmVjdD4gcmVjdHM7Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIG5vZGUgOiBy
ZXN1bHQubGlzdEJhc2VkVGVzdFJlc3VsdCgpKSB7Ci0gICAgICAgIGlmICghaXM8RWxlbWVudD4o
bm9kZS5nZXQoKSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYXV0byYgZWxlbWVu
dCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUuZ2V0KCkpOwotCi0gICAgICAgIGlmICghbm9kZS0+
d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgIHJlY3RzLmFwcGVuZChlbGVtZW50LmJvdW5kaW5nQm94SW5Sb290Vmlld0Nvb3Jk
aW5hdGVzKCkpOwotICAgIH0KLQotICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlY3RzKTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjppbnRlcmFjdGlvblJlZ2lvbnMoKm1fcGFnZSwgcmVj
dEluQ29udGVudENvb3JkaW5hdGVzKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2V0QWx3YXlzU2hv
d3NIb3Jpem9udGFsU2Nyb2xsZXIoYm9vbCBhbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhY2RiODky
Njk3YzIwOTFkMGQ1MDUyNWI2MjkxODk3YjgzMmY0MWNmLi4xZWIzN2M1MWVmMGM3NWFlNTBmZjlm
NGY2OWY3NzBkMDJjNTQzMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC0yNDcsNiArMjQ3LDcgQEAgc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZl
Owogc3RydWN0IEVsZW1lbnRDb250ZXh0Owogc3RydWN0IEdsb2JhbEZyYW1lSWRlbnRpZmllcjsK
IHN0cnVjdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOworc3RydWN0IEludGVyYWN0aW9uUmVnaW9u
Owogc3RydWN0IEtleXByZXNzQ29tbWFuZDsKIHN0cnVjdCBNZWRpYVVzYWdlSW5mbzsKIHN0cnVj
dCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvOwpAQCAtOTQyLDcgKzk0Myw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZFVwZGF0ZUNvbXBvc2l0aW9uKCk7CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dl
cmVkU2VsZWN0aW9uQ2hhbmdlcygpOwogCi0gICAgdm9pZCBpbnRlcmFjdGFibGVSZWdpb25zSW5S
b290Vmlld0Nvb3JkaW5hdGVzKFdlYkNvcmU6OkZsb2F0UmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0Pik+JiYpOworICAgIHZvaWQgaW50ZXJhY3Rp
b25SZWdpb25zKFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uPik+
JiYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVB
Y2Nlc3NpYmlsaXR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAxMTk0Mjc1MGY0MDQ1NGIwN2MyMTczYWNlNDRi
YWQ5NmNmZmY0MmQwLi5jZTYwZTVkY2I1ZDM3NzJlNWMzNTc2ODZkZDYwZDY3ZmUxZTViZDliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KQEAgLTY4MSw1ICs2ODEsNSBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAg
ICAgU2Nyb2xsVG9SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRSZWN0LCBXZWJDb3JlOjpG
bG9hdFBvaW50IG9yaWdpbikKIAotICAgIEludGVyYWN0YWJsZVJlZ2lvbnNJblJvb3RWaWV3Q29v
cmRpbmF0ZXMoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpIC0+IChWZWN0b3I8V2ViQ29yZTo6Rmxv
YXRSZWN0PiByZWN0cykKKyAgICBJbnRlcmFjdGlvblJlZ2lvbnMoV2ViQ29yZTo6RmxvYXRSZWN0
IHJlY3RJbkNvbnRlbnRDb29yZGluYXRlcykgLT4gKFZlY3RvcjxXZWJDb3JlOjpJbnRlcmFjdGlv
blJlZ2lvbj4gcmVnaW9ucykKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCBmMmU0ZWJhOTQyM2Q1MWM3N2JhMTQyZTU4NGExOGFmODczOTE4OGMy
Li44NTRjMGRlMzUxZGE3ODE4NWZmZDU2NDExNjVlNDZkY2VmZjUxN2MyIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MjItMDMtMzEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIGEgZGVidWcgb3ZlcmxheSBmb3IgaW50ZXJhY3Rpb24gcmVnaW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1Nl
dHRpbmdzQ29udHJvbGxlci5oOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9TZXR0aW5nc0Nv
bnRyb2xsZXIubToKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIF9wb3B1bGF0ZU1lbnVd
KToKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIGludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eVZpc2libGVdKToKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIHByZWZlcmVuY2VLZXlG
b3JSZWdpb25PdmVybGF5VGFnOl0pOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93
c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJv
bGxlciBkaWRDaGFuZ2VTZXR0aW5nc10pOgorICAgICAgICBBZGQgYSBzd2l0Y2ggZm9yIHRoZSBu
ZXcgZGVidWcgb3ZlcmxheSBpbiBNaW5pQnJvd3Nlci4KKwogMjAyMi0wMy0zMSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFByZXBhcmUgV2ViS2l0LyAmIFdlYktp
dExlZ2FjeS8gZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBl
eHBsaWNpdApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJv
bGxlci5oIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5oCmluZGV4
IDQ5ODU3NTBlZjI1YzFjOTJiNzA3YjMxM2NlMjBhYTVmM2NkYWNmNWYuLjk1NDhhMmIzODI5NWRj
N2QwNWUyOTFmZTQ1MjVhZTk4NmQ0OTYxMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2Vy
L21hYy9TZXR0aW5nc0NvbnRyb2xsZXIuaAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0
dGluZ3NDb250cm9sbGVyLmgKQEAgLTQzLDYgKzQzLDcgQEAgQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5LCBnZXR0ZXI9aXNTcGFjZVJlc2VydmVkRm9yQmFubmVycykgQk9PTCBzcGFjZVJl
c2UKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCByZXNvdXJjZVVzYWdlT3Zl
cmxheVZpc2libGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgbm9uRmFz
dFNjcm9sbGFibGVSZWdpb25PdmVybGF5VmlzaWJsZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgQk9PTCB3aGVlbEV2ZW50SGFuZGxlclJlZ2lvbk92ZXJsYXlWaXNpYmxlOworQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eVZpc2libGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgdXNlVUlTaWRl
Q29tcG9zaXRpbmc7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgcGVyV2lu
ZG93V2ViUHJvY2Vzc2VzRGlzYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IEJPT0wgYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZDsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlC
cm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9T
ZXR0aW5nc0NvbnRyb2xsZXIubQppbmRleCA4NGJkMWE4ZWYwZmExNmFjMzg0MmVkNGI3Y2I5NTg4
YTRkMDc1M2FkLi41ZjcxYmFmMGZmMmUyNDI3ZGMyMjFkZGRlYTdkYjE1Y2IwYWVkY2ZkIDEwMDY0
NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm0KKysrIGIv
VG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tCkBAIC01Nyw2ICs1Nyw3
IEBACiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3Zl
cmxheVZpc2libGVQcmVmZXJlbmNlS2V5ID0gQCJOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJs
YXlWaXNpYmxlIjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdoZWVsRXZlbnRIYW5kbGVyUmVn
aW9uT3ZlcmxheVZpc2libGVQcmVmZXJlbmNlS2V5ID0gQCJXaGVlbEV2ZW50SGFuZGxlclJlZ2lv
bk92ZXJsYXlWaXNpYmxlIjsKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IEludGVyYWN0aW9uUmVn
aW9uT3ZlcmxheVZpc2libGVQcmVmZXJlbmNlS2V5ID0gQCJJbnRlcmFjdGlvblJlZ2lvbk92ZXJs
YXlWaXNpYmxlIjsKIAogc3RhdGljIE5TU3RyaW5nICogY29uc3QgVXNlVHJhbnNwYXJlbnRXaW5k
b3dzUHJlZmVyZW5jZUtleSA9IEAiVXNlVHJhbnNwYXJlbnRXaW5kb3dzIjsKIHN0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IFVzZVBhZ2luYXRlZE1vZGVQcmVmZXJlbmNlS2V5ID0gQCJVc2VQYWdpbmF0
ZWRNb2RlIjsKQEAgLTc3LDYgKzc4LDcgQEAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIERl
YnVnT3ZlcnlsYXlNZW51SXRlbVRhZykgewogICAgIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3Zl
cmxheVRhZyA9IDEwMCwKICAgICBXaGVlbEV2ZW50SGFuZGxlclJlZ2lvbk92ZXJsYXlUYWcsCisg
ICAgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5VGFnLAogICAgIEV4cGVyaW1lbnRhbEZlYXR1cmVU
YWcsCiAgICAgSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVUYWcsCiB9OwpAQCAtMTk1LDYgKzE5NywxMiBA
QCAtICh2b2lkKV9wb3B1bGF0ZU1lbnUKICAgICBbd2hlZWxFdmVudEhhbmRsZXJSZWdpb25JdGVt
IHNldFRhZzpXaGVlbEV2ZW50SGFuZGxlclJlZ2lvbk92ZXJsYXlUYWddOwogICAgIFt3aGVlbEV2
ZW50SGFuZGxlclJlZ2lvbkl0ZW0gc2V0VGFyZ2V0OnNlbGZdOwogICAgIFtkZWJ1Z092ZXJsYXlz
TWVudSBhZGRJdGVtOlt3aGVlbEV2ZW50SGFuZGxlclJlZ2lvbkl0ZW0gYXV0b3JlbGVhc2VdXTsK
KworICAgIE5TTWVudUl0ZW0gKmludGVyYWN0aW9uUmVnaW9uSXRlbSA9IFtbTlNNZW51SXRlbSBh
bGxvY10gaW5pdFdpdGhUaXRsZTpAIkludGVyYWN0aW9uIFJlZ2lvbiIgYWN0aW9uOkBzZWxlY3Rv
cih0b2dnbGVEZWJ1Z092ZXJsYXk6KSBrZXlFcXVpdmFsZW50OkAiIl07CisgICAgW2ludGVyYWN0
aW9uUmVnaW9uSXRlbSBzZXRUYWc6SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5VGFnXTsKKyAgICBb
aW50ZXJhY3Rpb25SZWdpb25JdGVtIHNldFRhcmdldDpzZWxmXTsKKyAgICBbZGVidWdPdmVybGF5
c01lbnUgYWRkSXRlbTpbaW50ZXJhY3Rpb25SZWdpb25JdGVtIGF1dG9yZWxlYXNlXV07CisKICAg
ICBbZGVidWdPdmVybGF5c01lbnUgcmVsZWFzZV07CiAgICAgCiAgICAgW19tZW51IGFkZEl0ZW06
ZGVidWdPdmVybGF5c1N1Ym1lbnVJdGVtXTsKQEAgLTcxMSw2ICs3MTksMTEgQEAgLSAoQk9PTCl3
aGVlbEV2ZW50SGFuZGxlclJlZ2lvbk92ZXJsYXlWaXNpYmxlCiAgICAgcmV0dXJuIFtbTlNVc2Vy
RGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6V2hlZWxFdmVudEhhbmRs
ZXJSZWdpb25PdmVybGF5VmlzaWJsZVByZWZlcmVuY2VLZXldOwogfQogCistIChCT09MKWludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheVZpc2libGUKK3sKKyAgICByZXR1cm4gW1tOU1VzZXJEZWZhdWx0
cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpJbnRlcmFjdGlvblJlZ2lvbk92ZXJs
YXlWaXNpYmxlUHJlZmVyZW5jZUtleV07Cit9CisKIC0gKE5TU3RyaW5nICopcHJlZmVyZW5jZUtl
eUZvclJlZ2lvbk92ZXJsYXlUYWc6KE5TVUludGVnZXIpdGFnCiB7CiAgICAgc3dpdGNoICh0YWcp
IHsKQEAgLTcxOSw2ICs3MzIsOSBAQCAtIChOU1N0cmluZyAqKXByZWZlcmVuY2VLZXlGb3JSZWdp
b25PdmVybGF5VGFnOihOU1VJbnRlZ2VyKXRhZwogCiAgICAgY2FzZSBXaGVlbEV2ZW50SGFuZGxl
clJlZ2lvbk92ZXJsYXlUYWc6CiAgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxlclJlZ2lv
bk92ZXJsYXlWaXNpYmxlUHJlZmVyZW5jZUtleTsKKworICAgIGNhc2UgSW50ZXJhY3Rpb25SZWdp
b25PdmVybGF5VGFnOgorICAgICAgICByZXR1cm4gSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Vmlz
aWJsZVByZWZlcmVuY2VLZXk7CiAgICAgfQogICAgIHJldHVybiBuaWw7CiB9CmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rv
b2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCmluZGV4IDAx
YmE0NWY5MWUzZDk5ZDExMGY2N2U2NWQxNmExMzUyMTAyZGI2ZWUuLmNjMTU2Nzg2MzJkZTNmYjBi
ZTBhZDVhNzIxODNiYjVmZWQ4ZWZmZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCkBAIC01MjEsNiArNTIxLDggQEAgLSAodm9p
ZClkaWRDaGFuZ2VTZXR0aW5ncwogICAgICAgICB2aXNpYmxlT3ZlcmxheVJlZ2lvbnMgfD0gX1dL
Tm9uRmFzdFNjcm9sbGFibGVSZWdpb247CiAgICAgaWYgKHNldHRpbmdzLndoZWVsRXZlbnRIYW5k
bGVyUmVnaW9uT3ZlcmxheVZpc2libGUpCiAgICAgICAgIHZpc2libGVPdmVybGF5UmVnaW9ucyB8
PSBfV0tXaGVlbEV2ZW50SGFuZGxlclJlZ2lvbjsKKyAgICBpZiAoc2V0dGluZ3MuaW50ZXJhY3Rp
b25SZWdpb25PdmVybGF5VmlzaWJsZSkKKyAgICAgICAgdmlzaWJsZU92ZXJsYXlSZWdpb25zIHw9
IF9XS0ludGVyYWN0aW9uUmVnaW9uOwogICAgIAogICAgIHByZWZlcmVuY2VzLl92aXNpYmxlRGVi
dWdPdmVybGF5UmVnaW9ucyA9IHZpc2libGVPdmVybGF5UmVnaW9uczsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>