<?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>148506</bug_id>
          
          <creation_ts>2015-08-26 17:52:25 -0700</creation_ts>
          <short_desc>[Content Filtering] Determine navigation and content policy before continuing to filter a load</short_desc>
          <delta_ts>2015-09-04 23:19:50 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=148684</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=148885</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>128858</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>japhet</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1121134</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-08-26 17:52:25 -0700</bug_when>
    <thetext>[Content Filtering] Determine navigation and content policy before continuing to filter a load</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121138</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-08-26 17:57:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/22449104&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121222</commentid>
    <comment_count>2</comment_count>
      <attachid>260039</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-08-26 23:23:20 -0700</bug_when>
    <thetext>Created attachment 260039
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121223</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-26 23:25:49 -0700</bug_when>
    <thetext>Attachment 260039 did not pass style-queue:


ERROR: Source/WebCore/loader/ContentFilter.cpp:82:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121248</commentid>
    <comment_count>4</comment_count>
      <attachid>260047</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-08-27 00:53:13 -0700</bug_when>
    <thetext>Created attachment 260047
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121249</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-27 00:54:14 -0700</bug_when>
    <thetext>Attachment 260047 did not pass style-queue:


ERROR: Source/WebCore/loader/ContentFilter.cpp:82:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122122</commentid>
    <comment_count>6</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-08-30 20:37:40 -0700</bug_when>
    <thetext>Bump. This is a large patch, but most of it is testing code and reverts. The interesting parts are the changes to ContentFilter and DocumentLoader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122214</commentid>
    <comment_count>7</comment_count>
      <attachid>260047</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-08-31 10:53:22 -0700</bug_when>
    <thetext>Comment on attachment 260047
Patch

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

Most of this looks fine.

One comment that makes me not want to r+

&gt; Source/WebCore/bindings/js/JSMockContentFilterSettingsCustom.cpp:49
&gt;  const uint8_t decisionPointAfterResponse = 2;
&gt;  const uint8_t decisionPointAfterAddData = 3;
&gt;  const uint8_t decisionPointAfterFinishedAddingData = 4;
&gt; +const uint8_t decisionPointNever = 5;
&gt;  const uint8_t decisionAllow = 0;
&gt;  const uint8_t decisionBlock = 1;

Can all of these become an enum class so that the switch statements have compile-time protection against missing a case, please?

I know it&apos;s existing code, but it&apos;s local to this file, shouldn&apos;t be hard to change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122281</commentid>
    <comment_count>8</comment_count>
      <attachid>260047</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-08-31 13:51:24 -0700</bug_when>
    <thetext>Comment on attachment 260047
Patch

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

&gt;&gt; Source/WebCore/bindings/js/JSMockContentFilterSettingsCustom.cpp:49
&gt;&gt;  const uint8_t decisionBlock = 1;
&gt; 
&gt; Can all of these become an enum class so that the switch statements have compile-time protection against missing a case, please?
&gt; 
&gt; I know it&apos;s existing code, but it&apos;s local to this file, shouldn&apos;t be hard to change.

Yup, I&apos;ll just get rid of the const uint8_ts and use the existing enum classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122287</commentid>
    <comment_count>9</comment_count>
      <attachid>260314</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-08-31 13:53:46 -0700</bug_when>
    <thetext>Created attachment 260314
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122288</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-31 13:55:25 -0700</bug_when>
    <thetext>Attachment 260314 did not pass style-queue:


ERROR: Source/WebCore/loader/ContentFilter.cpp:82:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122342</commentid>
    <comment_count>11</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-08-31 16:27:41 -0700</bug_when>
    <thetext>Committed r189193: &lt;http://trac.webkit.org/changeset/189193&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122764</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-09-01 22:07:48 -0700</bug_when>
    <thetext>Looks like this caused bug 148684.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123883</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-09-04 23:19:50 -0700</bug_when>
    <thetext>One of these tests is flaky, filed bug 148885.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260039</attachid>
            <date>2015-08-26 23:23:20 -0700</date>
            <delta_ts>2015-08-27 00:53:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148506-20150826232308.patch</filename>
            <type>text/plain</type>
            <size>63908</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWFmMTI0MDAxMzkyZjY1
YTE5OWYzMTViMzQwN2U4ZDg2YzJmMzFjMi4uMzFkYmI1NGZmNzdkNmM1OTZhZGRjMmViMzBmZTg5
MmMyNTVhODczMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDE1LTA4LTI2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29udGVudCBGaWx0ZXJpbmdd
IERldGVybWluZSBuYXZpZ2F0aW9uIGFuZCBjb250ZW50IHBvbGljeSBiZWZvcmUgY29udGludWlu
ZyB0byBmaWx0ZXIgYSBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDg1MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQcmlvciB0byB0aGlzIGNoYW5nZSwgQ29udGVudEZpbHRlciB3b3VsZCBoaWRl
IGZyb20gRG9jdW1lbnRMb2FkZXIgYWxsIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IGNhbGxiYWNr
cyB1bnRpbAorICAgICAgICBhIGRlY2lzaW9uIHdhcyBtYWRlLCB0aGVuIHJlcGxheSB0aGUgbWlz
c2VkIGNhbGxiYWNrcy4gVGhpcyBhcHByb2FjaCBpbnRlcmFjdGVkIHBvb3JseSB3aXRoIHNvbWUg
ZmVhdHVyZXMgb2YKKyAgICAgICAgdGhlIGxvYWRlciwgbm90YWJseSBhcHBjYWNoZSBhbmQgZG93
bmxvYWRzLiBJbiB0aGUgY2FzZSBvZiBhcHBjYWNoZSwgRG9jdW1lbnRMb2FkZXIgbWlnaHQgbm90
IGhhdmUgYSBjaGFuY2UgdG8KKyAgICAgICAgY2hlY2sgZm9yIHN1YnNpdHV0ZSBkYXRhIHVudGls
IHRoZSBvcmlnaW5hbCBsb2FkIGhhcyBmaW5pc2hlZCwgd2FzdGluZyBiYW5kd2lkdGgsIGFuZCBt
aWdodCByZWNlaXZlIGR1cGxpY2F0ZQorICAgICAgICBvciBvdXQtb2Ytb3JkZXIgY2FsbGJhY2tz
LiBJbiB0aGUgY2FzZSBvZiBkb3dubG9hZHMsIGl0IHdvdWxkIG9mdGVuIGJlIHRvbyBsYXRlIHRv
IGNvbnZlcnQgdGhlIGV4aXN0aW5nCisgICAgICAgIGNvbm5lY3Rpb24gdG8gYSBkb3dubG9hZCwg
bGVhZGluZyB0byByZXN0YXJ0ZWQgZG93bmxvYWRzIG9yIG91dHJpZ2h0IGZhaWx1cmVzLgorCisg
ICAgICAgIEJhbmRhaWRzIHdlcmUgcHV0IGluIHBsYWNlIGZvciB0aGVzZSBpc3N1ZXMgaW4gcjE4
ODE1MCwgcjE4ODQ4NiwgYW5kIHIxODg4NTEgdG8gZml4IGNyYXNoZXMgb3Igc2VyaW91cworICAg
ICAgICByZWdyZXNzaW9ucyBpbiBiZWhhdmlvciwgYnV0IHRoZXNlIHdlcmVuJ3QgY29tcGxldGUg
Zml4ZXMuIFRoZXkgZGlkIG5vdCBzb2x2ZSBhbnkgb2YgdGhlIGR1cGxpY2F0ZSBkYXRhIGxvYWRp
bmcKKyAgICAgICAgcHJvYmxlbXMsIGFuZCB0aGV5IGRpZCBub3QgbWFrZSBkb3dubG9hZHMgd29y
ayByZWxpYWJseSBpbiBhbGwgY2FzZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCByb2xscyBvdXQg
dGhlIGJhbmRhaWRzIChidXQga2VlcHMgdGhlaXIgdGVzdHMpIGFuZCByZXBsYWNlcyB0aGVtIHdp
dGggYSBtb3JlIHJvYnVzdCBmaXguIEluc3RlYWQgb2YKKyAgICAgICAgaGlkaW5nIGNhbGxiYWNr
cyBmcm9tIERvY3VtZW50TG9hZGVyLCBDb250ZW50RmlsdGVyIG5vdyBkZWxpdmVycyB3aWxsU2Vu
ZFJlcXVlc3QoKSwgcmVkaXJlY3RSZWNlaXZlZCgpLCBhbmQKKyAgICAgICAgcmVzcG9uc2VSZWNl
aXZlZCgpIHRvIERvY3VtZW50TG9hZGVyIGltbWVkaWF0ZWx5LCBhbmQgY2FuY2VscyBmaWx0ZXJp
bmcgaWYgRG9jdW1lbnRMb2FkZXIgZGVjaWRlcyB0byBpZ25vcmUgdGhlCisgICAgICAgIGxvYWQs
IGRvd25sb2FkIGl0LCBvciBsb2FkIHN1YnN0aXR1dGUgZGF0YS4gQ29udGVudEZpbHRlciBjb250
aW51ZXMgdG8gYnVmZmVyIGluY29taW5nIGRhdGEgdG8gcHJldmVudCBwYXJ0aWFsCisgICAgICAg
IHJlbmRlcmluZyBvZiBibG9ja2VkIGNvbnRlbnQuCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIHRl
c3RzIGZvciByMTg4MTUwIGFuZCByMTg4ODUxIHdlcmUga2VwdCwgdGhlIHRlc3QgZm9yIHIxODg0
ODYgd2FzIHJld3JpdHRlbiB0byBiZSBzcGVjaWZpYyB0bworICAgICAgICBjb250ZW50IGZpbHRl
cmluZywgYW5kIG5ldyB0ZXN0cyB3ZXJlIGFkZGVkIHRvIGNvdmVyIHRoZSBjYXNlIHdoZXJlIENv
bnRlbnRGaWx0ZXIgaXMgc3RpbGwgdW5kZWNpZGVkIGFmdGVyIGEKKyAgICAgICAgbG9hZCBmaW5p
c2hlcy4KKworICAgICAgICBUZXN0czogY29udGVudGZpbHRlcmluZy9hbGxvdy1uZXZlci5odG1s
CisgICAgICAgICAgICAgICBjb250ZW50ZmlsdGVyaW5nL2Jsb2NrLW5ldmVyLmh0bWwKKyAgICAg
ICAgICAgICAgIENvbnRlbnRGaWx0ZXJpbmcuQWxsb3dEb3dubG9hZEFmdGVyQWRkRGF0YQorICAg
ICAgICAgICAgICAgQ29udGVudEZpbHRlcmluZy5BbGxvd0Rvd25sb2FkQWZ0ZXJGaW5pc2hlZEFk
ZGluZ0RhdGEKKyAgICAgICAgICAgICAgIENvbnRlbnRGaWx0ZXJpbmcuQWxsb3dEb3dubG9hZEFm
dGVyUmVkaXJlY3QKKyAgICAgICAgICAgICAgIENvbnRlbnRGaWx0ZXJpbmcuQWxsb3dEb3dubG9h
ZEFmdGVyUmVzcG9uc2UKKyAgICAgICAgICAgICAgIENvbnRlbnRGaWx0ZXJpbmcuQWxsb3dEb3du
bG9hZEFmdGVyV2lsbFNlbmRSZXF1ZXN0CisgICAgICAgICAgICAgICBDb250ZW50RmlsdGVyaW5n
LkFsbG93RG93bmxvYWROZXZlcgorICAgICAgICAgICAgICAgQ29udGVudEZpbHRlcmluZy5CbG9j
a0Rvd25sb2FkQWZ0ZXJBZGREYXRhCisgICAgICAgICAgICAgICBDb250ZW50RmlsdGVyaW5nLkJs
b2NrRG93bmxvYWRBZnRlckZpbmlzaGVkQWRkaW5nRGF0YQorICAgICAgICAgICAgICAgQ29udGVu
dEZpbHRlcmluZy5CbG9ja0Rvd25sb2FkQWZ0ZXJSZWRpcmVjdAorICAgICAgICAgICAgICAgQ29u
dGVudEZpbHRlcmluZy5CbG9ja0Rvd25sb2FkQWZ0ZXJSZXNwb25zZQorICAgICAgICAgICAgICAg
Q29udGVudEZpbHRlcmluZy5CbG9ja0Rvd25sb2FkQWZ0ZXJXaWxsU2VuZFJlcXVlc3QKKyAgICAg
ICAgICAgICAgIENvbnRlbnRGaWx0ZXJpbmcuQmxvY2tEb3dubG9hZE5ldmVyCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNpc2lvblBvaW50
KTogVGF1Z2h0IHRvIGhhbmRsZSBEZWNpc2lvblBvaW50OjpOZXZlci4KKyAgICAgICAgKFdlYkNv
cmU6OkpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Qb2ludCk6IERpdHRv
LgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZUlmRW5hYmxlZCk6IFJlbmFtZWQgZnJvbSBjcmVhdGVJZk5l
ZWRlZCwgYW5kIGNoYW5nZWQgdG8gdGFrZSBhIERvY3VtZW50TG9hZGVyJgorICAgICAgICBpbnN0
ZWFkIG9mIGEgRGVjaXNpb25GdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXI6OkNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6cmVz
cG9uc2VSZWNlaXZlZCk6IElmIG1fc3RhdGUgIT0gQmxvY2tlZCBhZnRlciBmaWx0ZXJpbmcsIGNh
bGwgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoKS4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXI6OmRhdGFSZWNlaXZlZCk6IElmIG1fc3RhdGUgPT0gQWxsb3dlZCBhZnRl
ciBmaWx0ZXJpbmcsIGRlbGl2ZXIgYnVmZmVyZWQgZGF0YSB0byBEb2N1bWVudExvYWRlci4KKyAg
ICAgICAgSWYgbm8gZmlsdGVyaW5nIHdhcyBuZWNlc3NhcnksIGNhbGwgRG9jdW1lbnRMb2FkZXI6
OmRhdGFSZWNlaXZlZCgpIGRpcmVjdGx5LgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRl
cjo6cmVkaXJlY3RSZWNlaXZlZCk6IElmIG1fc3RhdGUgIT0gQmxvY2tlZCBhZnRlciBmaWx0ZXJp
bmcsIGNhbGwgRG9jdW1lbnRMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoKS4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRGaWx0ZXI6Om5vdGlmeUZpbmlzaGVkKTogSWYgYW4gZXJyb3Igb2NjdXJl
ZCwgY2FsbCBEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQoKSBpbW1lZGlhdGVseSBhbmQg
cmV0dXJuLgorICAgICAgICBJZiBtX3N0YXRlICE9IEJsb2NrZWQgYWZ0ZXIgZmlsdGVyaW5nLCBk
ZWxpdmVyIGJ1ZmZlcmVkIGRhdGEgdG8gRG9jdW1lbnRMb2FkZXIgYW5kIGNhbGwgRG9jdW1lbnRM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkuCisgICAgICAgIElmIG5vIGZpbHRlcmluZyB3YXMgbmVj
ZXNzYXJ5IGFuZCBtX3N0YXRlICE9IEJsb2NrZWQsIGNhbGwgRG9jdW1lbnRMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkKCkgZGlyZWN0bHkuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpk
aWREZWNpZGUpOiBDYWxsZWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWREZWNpZGUo
KSBpbnN0ZWFkIG9mIG1fZGVjaXNpb25GdW5jdGlvbigpLgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6IEFkZGVkIGEgaGVscGVyIGZ1bmN0aW9u
IHRvIGRlbGl2ZXIgYnVmZmVyZWQgZGF0YSB0byBEb2N1bWVudExvYWRlci4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZUlmTmVlZGVkKTogUmVuYW1lZCB0byBjcmVhdGVJ
ZkVuYWJsZWQoKS4KKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5oOgorICAgICAgICAq
IGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdCk6IFN0b3BwZWQgYXNzZXJ0aW5nIHRoYXQgcmVkaXJlY3RSZXNwb25z
ZSBpcyBudWxsIGFuZCBtYWRlIGl0IHBhcnQgb2YKKyAgICAgICAgdGhlIGlmIGNvbmRpdGlvbiBp
bnN0ZWFkLCBzaW5jZSB3aWxsU2VuZFJlcXVlc3QoKSB3aWxsIG5vdyBiZSBjYWxsZWQgb24gcmVk
aXJlY3RzIHdoZW4gdGhlcmUgaXMgYW4gYWN0aXZlIENvbnRlbnRGaWx0ZXIuCisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKTogQ2FsbGVk
IGJlY29tZU1haW5SZXNvdXJjZUNsaWVudCgpIGluc3RlYWQgb2YgYmVjb21lTWFpblJlc291cmNl
Q2xpZW50SWZGaWx0ZXJBbGxvd3MoKS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpiZWNvbWVNYWluUmVzb3VyY2VDbGllbnQpOiBSZW5hbWVkIGZyb20gYmVjb21lTWFpblJlc291
cmNlQ2xpZW50SWZGaWx0ZXJBbGxvd3MoKS4KKyAgICAgICAgT25seSBjYWxsZWQgQ29udGVudEZp
bHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKSBpZiB0aGUgZmlsdGVyIHN0YXRlIGlz
IEluaXRpYWxpemVkLCBzaW5jZSBDb250ZW50RmlsdGVyCisgICAgICAgIG1pZ2h0IGhhdmUgYWxy
ZWFkeSBtYWRlIGEgZGVjaXNpb24gaW4gd2lsbFNlbmRSZXF1ZXN0KCkuCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZERlY2lkZSk6IFN0b3BwZWQgZGVs
ZXRpbmcgbV9jb250ZW50RmlsdGVyLCBzaW5jZSBpdCB3aWxsIGNvbnRpbnVlIHRvIGRlbGl2ZXIg
Y2FsbGJhY2tzCisgICAgICAgIGV2ZW4gYWZ0ZXIgbWFraW5nIGEgZGVjaXNpb24uIEZpeGVkIGEg
YnVnIHdoZXJlIHdlIHdlcmUgY3JlYXRpbmcgdHdvIGNvcGllcyBvZiBDb250ZW50RmlsdGVyJ3Mg
cmVwbGFjZW1lbnQgZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzeW50
aGV0aWNSZWRpcmVjdFJlY2VpdmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjpiZWNvbWVNYWluUmVzb3VyY2VDbGllbnRJZkZpbHRlckFsbG93cyk6IFJlbmFt
ZWQgdG8gYmVjb21lTWFpblJlc291cmNlQ2xpZW50KCkuCisgICAgICAgICogbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0SW50ZXJuYWwpOiBSZW1vdmVkIHBhcnQgb2YgcjE4ODg1MS4KKyAgICAgICAgKiBsb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6IFJlbW92ZWQgcGFydCBvZiByMTg4NDg2LgorICAgICAg
ICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJj
ZTo6ZGlkQWRkQ2xpZW50KTogUmVtb3ZlZCBwYXJ0IG9mIHIxODgxNTAuCisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZUNsaWVudDo6c3ludGhldGljUmVkaXJlY3RSZWNlaXZlZCk6IFJlbW92
ZWQgcGFydCBvZiByMTg4MTUwLgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5oOiBEZWZpbmVkIERlY2lzaW9uUG9pbnQ6Ok5ldmVyLgorICAgICAgICAqIHRlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGw6IERlZmluZWQgREVDSVNJT05fUE9JTlRf
TkVWRVIuCisKIDIwMTUtMDgtMjYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgdHJhY2tpbmcgb2YgYWN0aXZl
IHN0eWxlc2hlZXRzIGluIHRoZSBmcm9udGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDI0ZWJhZjNl
Yzg0ZDUwNWM0MjgxZmUxYTRiZWZhMmNiM2ZmYzkzMzkuLjFhNjMyY2Q3NTlkOTMzMzU4Mjg2ODQ4
YmU1NDUxNGJlMGU5Y2RhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
NS0wOC0yNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvbnRl
bnQgRmlsdGVyaW5nXSBEZXRlcm1pbmUgbmF2aWdhdGlvbiBhbmQgY29udGVudCBwb2xpY3kgYmVm
b3JlIGNvbnRpbnVpbmcgdG8gZmlsdGVyIGEgbG9hZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRGVsZXRlZCBwYXJ0cyBvZiByMTg4NDg2IGFuZCByMTg4
ODUxLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAg
ICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxv
YWQpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKToKKwogMjAxNS0wOC0yNiAgQmV0aCBEYWtp
biAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogU2FmYXJpIG5hdmln
YXRlcyBhZnRlciBhIGNhbmNlbGxlZCBmb3JjZSBjbGljawpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDI4NDVkOWM4
MTBkZTdkNTBiNWZhN2YzNGM5OTFjYjQ4OTkyMDVlNGUuLjk5NDA4YWNmMDRjYjUwMmE1ZmI4ZGYw
MTU0NWUwNGZiZTQxYmFhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNS0wOC0y
NiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvbnRlbnQgRmls
dGVyaW5nXSBEZXRlcm1pbmUgbmF2aWdhdGlvbiBhbmQgY29udGVudCBwb2xpY3kgYmVmb3JlIGNv
bnRpbnVpbmcgdG8gZmlsdGVyIGEgbG9hZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRGVsZXRlZCBwYXJ0cyBvZiByMTg4NDg2IGFuZCByMTg4ODUxLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgorCiAyMDE1LTA4LTI2ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBjcmFz
aCBkdWUgdG8gYW5pbWF0aW9uRGlkRW5kIGNhbGxlZCBvbiBkZWFsbG9jYXRlZCBSZW1vdGVMYXll
clRyZWVIb3N0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNwcAppbmRleCA4MzMxODc1MTkw
ZWVhOTgzNzFiZmI2ZWVlYzAwNzU1YjkyZmY5YTgyLi5kMDA3OGE2MmY1ZDBiOWE0NWNjNzQ2Zjk1
NThiODZiZjMyMTY0M2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAKQEAgLTQ0
LDYgKzQ0LDcgQEAgY29uc3QgdWludDhfdCBkZWNpc2lvblBvaW50QWZ0ZXJSZWRpcmVjdCA9IDE7
CiBjb25zdCB1aW50OF90IGRlY2lzaW9uUG9pbnRBZnRlclJlc3BvbnNlID0gMjsKIGNvbnN0IHVp
bnQ4X3QgZGVjaXNpb25Qb2ludEFmdGVyQWRkRGF0YSA9IDM7CiBjb25zdCB1aW50OF90IGRlY2lz
aW9uUG9pbnRBZnRlckZpbmlzaGVkQWRkaW5nRGF0YSA9IDQ7Citjb25zdCB1aW50OF90IGRlY2lz
aW9uUG9pbnROZXZlciA9IDU7CiBjb25zdCB1aW50OF90IGRlY2lzaW9uQWxsb3cgPSAwOwogY29u
c3QgdWludDhfdCBkZWNpc2lvbkJsb2NrID0gMTsKIApAQCAtNjAsNiArNjEsOCBAQCBKU1ZhbHVl
IEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjaXNpb25Qb2ludChFeGVjU3RhdGUqKSBj
b25zdAogICAgICAgICByZXR1cm4ganNOdW1iZXIoZGVjaXNpb25Qb2ludEFmdGVyQWRkRGF0YSk7
CiAgICAgY2FzZSBEZWNpc2lvblBvaW50OjpBZnRlckZpbmlzaGVkQWRkaW5nRGF0YToKICAgICAg
ICAgcmV0dXJuIGpzTnVtYmVyKGRlY2lzaW9uUG9pbnRBZnRlckZpbmlzaGVkQWRkaW5nRGF0YSk7
CisgICAgY2FzZSBEZWNpc2lvblBvaW50OjpOZXZlcjoKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVy
KGRlY2lzaW9uUG9pbnROZXZlcik7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC04OCw2ICs5MSw5IEBAIHZvaWQgSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRE
ZWNpc2lvblBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1CiAgICAgY2FzZSBkZWNp
c2lvblBvaW50QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGE6CiAgICAgICAgIGltcGwoKS5zZXREZWNp
c2lvblBvaW50KERlY2lzaW9uUG9pbnQ6OkFmdGVyRmluaXNoZWRBZGRpbmdEYXRhKTsKICAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgZGVjaXNpb25Qb2ludE5ldmVyOgorICAgICAgICBpbXBsKCku
c2V0RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50OjpOZXZlcik7CisgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpbmc6OmZvcm1hdCgiJXUgaXMg
bm90IGEgdmFsaWQgZGVjaXNpb25Qb2ludCB2YWx1ZS4iLCBuYXRpdmVWYWx1ZSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDMyYTg3M2UwZDQwMTdhYTNmNGVh
ZWI0ODdiMTI3NzQ5ZDI4ZDRlMGUuLjI1ZDcwZWUyOWQyYWYzN2IwZTM2ZTJmMDI5MGY5NzhiYmVh
NjQyMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiQ29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIuaCIKICNpbmNsdWRlICJQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oIgpAQCAt
NTgsNyArNTksNyBAQCBWZWN0b3I8Q29udGVudEZpbHRlcjo6VHlwZT4mIENvbnRlbnRGaWx0ZXI6
OnR5cGVzKCkKICAgICByZXR1cm4gdHlwZXM7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxDb250ZW50
RmlsdGVyPiBDb250ZW50RmlsdGVyOjpjcmVhdGVJZk5lZWRlZChEZWNpc2lvbkZ1bmN0aW9uIGRl
Y2lzaW9uRnVuY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gQ29udGVudEZp
bHRlcjo6Y3JlYXRlSWZFbmFibGVkKERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlcikKIHsK
ICAgICBDb250YWluZXIgZmlsdGVyczsKICAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlcygpKSB7
CkBAIC03MywxMiArNzQsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IENvbnRl
bnRGaWx0ZXI6OmNyZWF0ZUlmTmVlZGVkKERlY2lzaW9uRnVuY3Rpb24gZGUKICAgICBpZiAoZmls
dGVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Q29udGVudEZpbHRlcj4oV1RGOjptb3ZlKGZpbHRlcnMpLCBXVEY6Om1v
dmUoZGVjaXNpb25GdW5jdGlvbikpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRl
bnRGaWx0ZXI+KFdURjo6bW92ZShmaWx0ZXJzKSwgZG9jdW1lbnRMb2FkZXIpOwogfQogCi1Db250
ZW50RmlsdGVyOjpDb250ZW50RmlsdGVyKENvbnRhaW5lciBjb250ZW50RmlsdGVycywgRGVjaXNp
b25GdW5jdGlvbiBkZWNpc2lvbkZ1bmN0aW9uKQorQ29udGVudEZpbHRlcjo6Q29udGVudEZpbHRl
cihDb250YWluZXIgY29udGVudEZpbHRlcnMsIERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRl
cikKICAgICA6IG1fY29udGVudEZpbHRlcnMgeyBXVEY6Om1vdmUoY29udGVudEZpbHRlcnMpIH0K
LSAgICAsIG1fZGVjaXNpb25GdW5jdGlvbiB7IFdURjo6bW92ZShkZWNpc2lvbkZ1bmN0aW9uKSB9
CisgICAgLCBtX2RvY3VtZW50TG9hZGVyIHsgZG9jdW1lbnRMb2FkZXIgfQogewogICAgIExPRyhD
b250ZW50RmlsdGVyaW5nLCAiQ3JlYXRpbmcgQ29udGVudEZpbHRlciB3aXRoICV6dSBwbGF0Zm9y
bSBjb250ZW50IGZpbHRlcihzKS5cbiIsIG1fY29udGVudEZpbHRlcnMuc2l6ZSgpKTsKICAgICBB
U1NFUlQoIW1fY29udGVudEZpbHRlcnMuaXNFbXB0eSgpKTsKQEAgLTE0NywzOSArMTQ4LDc4IEBA
IFN0cmluZyBDb250ZW50RmlsdGVyOjp1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCgpIGNvbnN0
CiAKIHZvaWQgQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogeworICAgIEFTU0VS
VChyZXNvdXJjZSk7CisgICAgQVNTRVJUKHJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKKyAg
ICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6SW5pdGlhbGl6ZWQpOwogICAgIExPRyhDb250ZW50
RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNlaXZlZCByZXNwb25zZSBmcm9tIDwlcz4uXG4i
LCByZXNwb25zZS51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgQVNTRVJUKG1f
c3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZyk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwg
cmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UuZ2V0KCkpOwotICAgIGZvckVhY2hDb250ZW50Rmls
dGVyVW50aWxCbG9ja2VkKFsmcmVzcG9uc2VdKFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29udGVu
dEZpbHRlcikgewotICAgICAgICBjb250ZW50RmlsdGVyLnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9u
c2UpOwotICAgIH0pOworCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgewor
ICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbJnJlc3BvbnNlXShQbGF0
Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgICAgIGNvbnRlbnRG
aWx0ZXIucmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSk7CisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKQorICAgICAgICBtX2RvY3VtZW50TG9h
ZGVyLnJlc3BvbnNlUmVjZWl2ZWQocmVzb3VyY2UsIHJlc3BvbnNlKTsKIH0KIAogdm9pZCBDb250
ZW50RmlsdGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogeworICAgIEFTU0VSVChyZXNvdXJjZSk7CisgICAgQVNT
RVJUKHJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKKyAgICBBU1NFUlQobV9zdGF0ZSAhPSBT
dGF0ZTo6SW5pdGlhbGl6ZWQpOwogICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZp
bHRlciByZWNlaXZlZCAlZCBieXRlcyBvZiBkYXRhIGZyb20gPCVzPi5cbiIsIGxlbmd0aCwgcmVz
b3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKLSAgICBBU1NFUlQobV9zdGF0
ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNv
dXJjZSA9PSBtX21haW5SZXNvdXJjZS5nZXQoKSk7Ci0gICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJV
bnRpbEJsb2NrZWQoW2RhdGEsIGxlbmd0aF0oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBjb250ZW50
RmlsdGVyKSB7Ci0gICAgICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRhLCBsZW5ndGgpOwot
ICAgIH0pOworCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgeworICAgICAg
ICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbZGF0YSwgbGVuZ3RoXShQbGF0Zm9y
bUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgICAgIGNvbnRlbnRGaWx0
ZXIuYWRkRGF0YShkYXRhLCBsZW5ndGgpOworICAgICAgICB9KTsKKworICAgICAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkKKyAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEo
KnJlc291cmNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRlID09
IFN0YXRlOjpBbGxvd2VkKQorICAgICAgICBtX2RvY3VtZW50TG9hZGVyLmRhdGFSZWNlaXZlZChy
ZXNvdXJjZSwgZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBDb250ZW50RmlsdGVyOjpyZWRpcmVj
dFJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewotICAgIEFT
U0VSVChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpOwotICAgIEFTU0VSVF9VTlVTRUQocmVz
b3VyY2UsIHJlc291cmNlID09IG1fbWFpblJlc291cmNlLmdldCgpKTsKLSAgICB3aWxsU2VuZFJl
cXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgQVNTRVJUKHJlc291cmNlKTsK
KyAgICBBU1NFUlQocmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOworICAgIEFTU0VSVChtX3N0
YXRlICE9IFN0YXRlOjpJbml0aWFsaXplZCk7CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6
RmlsdGVyaW5nKQorICAgICAgICB3aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNw
b25zZSk7CisKKyAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZCkKKyAgICAgICAgbV9k
b2N1bWVudExvYWRlci5yZWRpcmVjdFJlY2VpdmVkKHJlc291cmNlLCByZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlKTsKIH0KIAogdm9pZCBDb250ZW50RmlsdGVyOjpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSogcmVzb3VyY2UpCiB7CisgICAgQVNTRVJUKHJlc291cmNlKTsKKyAgICBBU1NF
UlQocmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOworICAgIEFTU0VSVChtX3N0YXRlICE9IFN0
YXRlOjpJbml0aWFsaXplZCk7CiAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50Rmls
dGVyIHdpbGwgZmluaXNoIGZpbHRlcmluZyBtYWluIHJlc291cmNlIGF0IDwlcz4uXG4iLCByZXNv
dXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwotICAgIEFTU0VSVChtX3N0YXRl
ID09IFN0YXRlOjpGaWx0ZXJpbmcpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291
cmNlID09IG1fbWFpblJlc291cmNlLmdldCgpKTsKLSAgICBmb3JFYWNoQ29udGVudEZpbHRlclVu
dGlsQmxvY2tlZChbXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKLSAg
ICAgICAgY29udGVudEZpbHRlci5maW5pc2hlZEFkZGluZ0RhdGEoKTsKLSAgICB9KTsKKworICAg
IGlmIChyZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKSB7CisgICAgICAgIG1fZG9jdW1lbnRMb2Fk
ZXIubm90aWZ5RmluaXNoZWQocmVzb3VyY2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgeworICAgICAgICBmb3JFYWNoQ29u
dGVudEZpbHRlclVudGlsQmxvY2tlZChbXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRG
aWx0ZXIpIHsKKyAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuZmluaXNoZWRBZGRpbmdEYXRhKCk7
CisgICAgICAgIH0pOworCisgICAgICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKQor
ICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqcmVzb3VyY2UpOworICAgIH0KKworICAg
IGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKQorICAgICAgICBtX2RvY3VtZW50TG9hZGVy
Lm5vdGlmeUZpbmlzaGVkKHJlc291cmNlKTsKIH0KIAogdm9pZCBDb250ZW50RmlsdGVyOjpmb3JF
YWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChzdGQ6OmZ1bmN0aW9uPHZvaWQoUGxhdGZvcm1D
b250ZW50RmlsdGVyJik+IGZ1bmN0aW9uKQpAQCAtMjEzLDEwICsyNTMsMTQgQEAgdm9pZCBDb250
ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdGUpCiAgICAgQVNTRVJUKHN0YXRlID09IFN0
YXRlOjpBbGxvd2VkIHx8IHN0YXRlID09IFN0YXRlOjpCbG9ja2VkKTsKICAgICBMT0coQ29udGVu
dEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgZGVjaWRlZCBsb2FkIHNob3VsZCBiZSAlcyBmb3Ig
bWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQgPyAiYWxs
b3dlZCIgOiAiYmxvY2tlZCIsIG1fbWFpblJlc291cmNlID8gbV9tYWluUmVzb3VyY2UtPnVybCgp
LnN0cmluZygpLmFzY2lpKCkuZGF0YSgpIDogIiIpOwogICAgIG1fc3RhdGUgPSBzdGF0ZTsKKyAg
ICBtX2RvY3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0ZXJEaWREZWNpZGUoKTsKK30KIAotICAgIC8v
IENhbGxpbmcgbV9kZWNpc2lvbkZ1bmN0aW9uIG1pZ2h0IGRlbGV0ZSB8dGhpc3wuCi0gICAgaWYg
KG1fZGVjaXNpb25GdW5jdGlvbikKLSAgICAgICAgbV9kZWNpc2lvbkZ1bmN0aW9uKCk7Cit2b2lk
IENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlKQoreworICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gQnVm
ZmVyRGF0YSk7CisgICAgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNvdXJjZUJ1ZmZlciA9ICpyZXNv
dXJjZS5yZXNvdXJjZUJ1ZmZlcigpOworICAgIG1fZG9jdW1lbnRMb2FkZXIuZGF0YVJlY2VpdmVk
KCZyZXNvdXJjZSwgcmVzb3VyY2VCdWZmZXIuZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci5zaXplKCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuaAppbmRleCBiNGU5ZGQ5YzBmZDZkOWJkNmM5M2I4MWNhYWU5OTBiYzA0MjE2Yjc3Li5h
MjA3Y2VkYjFlNzJiNDUxYjcyZmQyYmI5YzJmZTRiZDk5OTI0YzU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcjsKK2NsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgUGxhdGZvcm1Db250ZW50Rmls
dGVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCkBAIC00Nyw4ICs0OCw3IEBAIGNsYXNzIENvbnRl
bnRGaWx0ZXIgZmluYWwgOiBwcml2YXRlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgYWRkVHlwZSgpIHsgdHlw
ZXMoKS5hcHBlbmQodHlwZTxUPigpKTsgfQogCi0gICAgdXNpbmcgRGVjaXNpb25GdW5jdGlvbiA9
IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPjsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbnRl
bnRGaWx0ZXI+IGNyZWF0ZUlmTmVlZGVkKERlY2lzaW9uRnVuY3Rpb24pOworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gY3JlYXRlSWZFbmFibGVkKERvY3VtZW50TG9h
ZGVyJik7CiAgICAgfkNvbnRlbnRGaWx0ZXIoKSBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBjb25z
dCBjaGFyKiB1cmxTY2hlbWUoKSB7IHJldHVybiAieC1hcHBsZS1jb250ZW50LWZpbHRlciI7IH0K
QEAgLTc2LDggKzc2LDggQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVmVj
dG9yPFR5cGU+JiB0eXBlcygpOwogCiAgICAgdXNpbmcgQ29udGFpbmVyID0gVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRlbnRGaWx0ZXI+PjsKLSAgICBmcmllbmQgc3RkOjp1bmlx
dWVfcHRyPENvbnRlbnRGaWx0ZXI+IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudEZpbHRlcj4oQ29u
dGFpbmVyJiYsIERlY2lzaW9uRnVuY3Rpb24mJik7Ci0gICAgQ29udGVudEZpbHRlcihDb250YWlu
ZXIsIERlY2lzaW9uRnVuY3Rpb24pOworICAgIGZyaWVuZCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVu
dEZpbHRlcj4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50RmlsdGVyPihDb250YWluZXImJiwgRG9j
dW1lbnRMb2FkZXImKTsKKyAgICBDb250ZW50RmlsdGVyKENvbnRhaW5lciwgRG9jdW1lbnRMb2Fk
ZXImKTsKIAogICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25z
ZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJy
aWRlOwpAQCAtODksOSArODksMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZm9yRWFjaENvbnRl
bnRGaWx0ZXJVbnRpbEJsb2NrZWQoc3RkOjpmdW5jdGlvbjx2b2lkKFBsYXRmb3JtQ29udGVudEZp
bHRlciYpPik7CiAgICAgdm9pZCBkaWREZWNpZGUoU3RhdGUpOworICAgIHZvaWQgZGVsaXZlclJl
c291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYpOwogCiAgICAgY29uc3QgQ29udGFpbmVyIG1fY29u
dGVudEZpbHRlcnM7Ci0gICAgY29uc3QgRGVjaXNpb25GdW5jdGlvbiBtX2RlY2lzaW9uRnVuY3Rp
b247CisgICAgRG9jdW1lbnRMb2FkZXImIG1fZG9jdW1lbnRMb2FkZXI7CiAgICAgQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwogICAgIFBsYXRm
b3JtQ29udGVudEZpbHRlciogbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgeyBudWxscHRyIH07CiAg
ICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpJbml0aWFsaXplZCB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggOGNhOTdiYTc5ZTk3Mjc0ZDNjYzgxM2Q1Mjc5
NjA2YmZlNzliNjU1Mi4uZGY2ZTkwYTlkYTJhYzcyODk1ZWQ3YmI2YTNhN2NiM2Q2OTIxMDI5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xNDIsNyArMTQy
LDcgQEAgRG9jdW1lbnRMb2FkZXI6OkRvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYKICAgICAsIG1fc3VicmVzb3VyY2VMb2FkZXJz
QXJlUGFnZUNhY2hlQWNjZXB0YWJsZShmYWxzZSkKICAgICAsIG1fYXBwbGljYXRpb25DYWNoZUhv
c3Qoc3RkOjptYWtlX3VuaXF1ZTxBcHBsaWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMpKQogI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykKLSAgICAsIG1fY29udGVudEZpbHRlcighc3Vic3RpdHV0
ZURhdGEuaXNWYWxpZCgpID8gQ29udGVudEZpbHRlcjo6Y3JlYXRlSWZOZWVkZWQoc3RkOjpiaW5k
KCZEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZERlY2lkZSwgdGhpcykpIDogbnVsbHB0
cikKKyAgICAsIG1fY29udGVudEZpbHRlcighc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpID8gQ29u
dGVudEZpbHRlcjo6Y3JlYXRlSWZFbmFibGVkKCp0aGlzKSA6IG51bGxwdHIpCiAjZW5kaWYKIHsK
IH0KQEAgLTQ4OSwxNCArNDg5LDYgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6cmVkaXJlY3RSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYKICAgICB3aWxs
U2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiB9CiAKLXZvaWQgRG9jdW1l
bnRMb2FkZXI6OnN5bnRoZXRpY1JlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
ZGlyZWN0UmVzcG9uc2UsIGJvb2wmIHNob3VsZENvbnRpbnVlKQotewotICAgIHJlZGlyZWN0UmVj
ZWl2ZWQocmVzb3VyY2UsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwotCi0gICAgLy8gSWYg
d2Ugd2lsbCBzb29uIHJlbW92ZSBvdXIgcmVmZXJlbmNlIHRvIHRoZSBDYWNoZWRSYXdSZXNvdXJj
ZSBpbiBmYXZvciBvZiBhIFN1YnN0aXR1dGVEYXRhIGxvYWQsIHdlIGRvbid0IHdhbnQgdG8gY29u
dGludWUgcmVjZWl2aW5nIHN5bnRoZXRpYyBDYWNoZWRSYXdSZXNvdXJjZSBjYWxsYmFja3MuCi0g
ICAgc2hvdWxkQ29udGludWUgPSAhbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCk7Ci19Ci0KIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1Jl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAg
Ly8gTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBhc3NlcnRzIGhlcmUgYXMgdGhlcmUgYXJlIGZvciB0
aGUgb3RoZXIgY2FsbGJhY2tzLiBUaGlzIGlzIGR1ZSB0byB0aGUKQEAgLTU0NCw4ICs1MzYsNyBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiBu
ZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZQogICAgIH0KIAogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKLSAgICBpZiAobV9jb250ZW50RmlsdGVyKSB7Ci0gICAgICAgIEFTU0VSVChyZWRp
cmVjdFJlc3BvbnNlLmlzTnVsbCgpKTsKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmIHJlZGly
ZWN0UmVzcG9uc2UuaXNOdWxsKCkpIHsKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT53aWxsU2Vu
ZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgICAgIGlmIChuZXdS
ZXF1ZXN0LmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTQ2MiwxMSArMTQ1Myw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSgpCiAgICAg
ICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QodGhp
cywgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgcmVxdWVzdCwgUmVz
b3VyY2VSZXNwb25zZSgpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
Ci0gICAgYmVjb21lTWFpblJlc291cmNlQ2xpZW50SWZGaWx0ZXJBbGxvd3MoKTsKLSNlbHNlCi0g
ICAgbV9tYWluUmVzb3VyY2UtPmFkZENsaWVudCh0aGlzKTsKLSNlbmRpZgorICAgIGJlY29tZU1h
aW5SZXNvdXJjZUNsaWVudCgpOwogCiAgICAgLy8gQSBidW5jaCBvZiBoZWFkZXJzIGFyZSBzZXQg
d2hlbiB0aGUgdW5kZXJseWluZyBSZXNvdXJjZUxvYWRlciBpcyBjcmVhdGVkLCBhbmQgbV9yZXF1
ZXN0IG5lZWRzIHRvIGluY2x1ZGUgdGhvc2UuCiAgICAgaWYgKG1haW5SZXNvdXJjZUxvYWRlcigp
KQpAQCAtMTYwNCw2ICsxNTkxLDE4IEBAIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgRG9j
dW1lbnRMb2FkZXI6OnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhCiAgICAgcmV0
dXJuIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKIH0KIAordm9pZCBEb2N1bWVudExv
YWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KCkKK3sKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCisgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiBtX2NvbnRlbnRGaWx0ZXItPnN0
YXRlKCkgPT0gQ29udGVudEZpbHRlcjo6U3RhdGU6OkluaXRpYWxpemVkKSB7CisgICAgICAgIC8v
IENvbnRlbnRGaWx0ZXIgd2lsbCBzeW50aGVzaXplIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IGNh
bGxiYWNrcy4KKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdGFydEZpbHRlcmluZ01haW5SZXNv
dXJjZSgqbV9tYWluUmVzb3VyY2UpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisg
ICAgbV9tYWluUmVzb3VyY2UtPmFkZENsaWVudCh0aGlzKTsKK30KKwogI2lmIEVOQUJMRShDT05U
RU5UX0VYVEVOU0lPTlMpCiB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRQZW5kaW5nQ29udGVudEV4
dGVuc2lvblNoZWV0KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgU3R5bGVTaGVldENvbnRlbnRz
JiBzaGVldCkKIHsKQEAgLTE2MjAsMTYgKzE2MTksNiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjph
ZGRQZW5kaW5nQ29udGVudEV4dGVuc2lvbkRpc3BsYXlOb25lU2VsZWN0b3IoY29uc3QgU3RyaW5n
JgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi12b2lkIERvY3VtZW50
TG9hZGVyOjpiZWNvbWVNYWluUmVzb3VyY2VDbGllbnRJZkZpbHRlckFsbG93cygpCi17Ci0gICAg
QVNTRVJUKG1fbWFpblJlc291cmNlKTsKLSAgICBpZiAobV9jb250ZW50RmlsdGVyKSB7Ci0gICAg
ICAgIEFTU0VSVChtX2NvbnRlbnRGaWx0ZXItPnN0YXRlKCkgPT0gQ29udGVudEZpbHRlcjo6U3Rh
dGU6OkluaXRpYWxpemVkKTsKLSAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdGFydEZpbHRlcmlu
Z01haW5SZXNvdXJjZSgqbV9tYWluUmVzb3VyY2UpOwotICAgIH0gZWxzZQotICAgICAgICBtX21h
aW5SZXNvdXJjZS0+YWRkQ2xpZW50KHRoaXMpOwotfQotCiB2b2lkIERvY3VtZW50TG9hZGVyOjpp
bnN0YWxsQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKENvbnRlbnRGaWx0ZXImIGNvbnRlbnRG
aWx0ZXIpCiB7CiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVy
IHsgY29udGVudEZpbHRlci51bmJsb2NrSGFuZGxlcigpIH07CkBAIC0xNjUyLDIxICsxNjQxLDE3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWREZWNpZGUoKQogICAgIHVz
aW5nIFN0YXRlID0gQ29udGVudEZpbHRlcjo6U3RhdGU7CiAgICAgQVNTRVJUKG1fY29udGVudEZp
bHRlcik7CiAgICAgQVNTRVJUKG1fY29udGVudEZpbHRlci0+c3RhdGUoKSA9PSBTdGF0ZTo6Qmxv
Y2tlZCB8fCBtX2NvbnRlbnRGaWx0ZXItPnN0YXRlKCkgPT0gU3RhdGU6OkFsbG93ZWQpOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBjb250ZW50RmlsdGVyOwotICAgIHN0ZDo6
c3dhcChjb250ZW50RmlsdGVyLCBtX2NvbnRlbnRGaWx0ZXIpOwotICAgIGlmIChjb250ZW50Rmls
dGVyLT5zdGF0ZSgpID09IFN0YXRlOjpBbGxvd2VkKSB7Ci0gICAgICAgIGlmIChtX21haW5SZXNv
dXJjZSkKLSAgICAgICAgICAgIG1fbWFpblJlc291cmNlLT5hZGRDbGllbnQodGhpcyk7CisgICAg
aWYgKG1fY29udGVudEZpbHRlci0+c3RhdGUoKSA9PSBTdGF0ZTo6QWxsb3dlZCkKICAgICAgICAg
cmV0dXJuOwotICAgIH0KIAotICAgIGluc3RhbGxDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIo
KmNvbnRlbnRGaWx0ZXIpOworICAgIGluc3RhbGxDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIo
Km1fY29udGVudEZpbHRlcik7CiAKICAgICBVUkwgYmxvY2tlZFVSTDsKICAgICBibG9ja2VkVVJM
LnNldFByb3RvY29sKENvbnRlbnRGaWx0ZXI6OnVybFNjaGVtZSgpKTsKICAgICBibG9ja2VkVVJM
LnNldEhvc3QoQVNDSUlMaXRlcmFsKCJibG9ja2VkLXBhZ2UiKSk7Ci0gICAgUmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZShVUkwoKSwgQVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwiKSwgY29udGVudEZp
bHRlci0+cmVwbGFjZW1lbnREYXRhKCktPnNpemUoKSwgQVNDSUlMaXRlcmFsKCJVVEYtOCIpKTsK
LSAgICBTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0YSB7IGNvbnRlbnRGaWx0ZXItPnJlcGxh
Y2VtZW50RGF0YSgpLCBkb2N1bWVudFVSTCgpLCByZXNwb25zZSwgU3Vic3RpdHV0ZURhdGE6OlNl
c3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CisgICAgYXV0byByZXBsYWNlbWVudERh
dGEgPSBtX2NvbnRlbnRGaWx0ZXItPnJlcGxhY2VtZW50RGF0YSgpOworICAgIFJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UoVVJMKCksIEFTQ0lJTGl0ZXJhbCgidGV4dC9odG1sIiksIHJlcGxhY2Vt
ZW50RGF0YS0+c2l6ZSgpLCBBU0NJSUxpdGVyYWwoIlVURi04IikpOworICAgIFN1YnN0aXR1dGVE
YXRhIHN1YnN0aXR1dGVEYXRhIHsgYWRvcHRSZWYoJnJlcGxhY2VtZW50RGF0YS5sZWFrUmVmKCkp
LCBkb2N1bWVudFVSTCgpLCByZXNwb25zZSwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5
VmlzaWJpbGl0eTo6SGlkZGVuIH07CiAgICAgZnJhbWUoKS0+bmF2aWdhdGlvblNjaGVkdWxlcigp
LnNjaGVkdWxlU3Vic3RpdHV0ZURhdGFMb2FkKGJsb2NrZWRVUkwsIHN1YnN0aXR1dGVEYXRhKTsK
IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBmNWU5
N2RhOWU2NjUzMTRmMmViNGM0NWFjYzU3ZjA2YTYxYjc2N2JhLi5iZDZmMzU4MmJkNTNlOTc0NDRl
MGRmZjc3YzM4MTQxZjI4YWQzOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaApAQCAtMzA3LDcgKzMwNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCBmaW5pc2hlZExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpOwogICAgICAgICB2b2lkIG1haW5S
ZWNlaXZlZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzeW50aGV0aWNSZWRpcmVjdFJlY2VpdmVkKENhY2hl
ZFJlc291cmNlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGJv
b2wmIC8qIHNob3VsZENvbnRpbnVlICovKSBvdmVycmlkZTsKICAgICAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7CkBAIC0zMzksOSArMzM4
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBjbGVhck1haW5SZXNvdXJj
ZSgpOwogCiAgICAgICAgIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2tJZk5lZWRlZCgpOworICAgICAg
ICB2b2lkIGJlY29tZU1haW5SZXNvdXJjZUNsaWVudCgpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQotICAgICAgICB2b2lkIGJlY29tZU1haW5SZXNvdXJjZUNsaWVudElmRmlsdGVy
QWxsb3dzKCk7CisgICAgICAgIGZyaWVuZCBjbGFzcyBDb250ZW50RmlsdGVyOwogICAgICAgICB2
b2lkIGluc3RhbGxDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIoQ29udGVudEZpbHRlciYpOwog
ICAgICAgICB2b2lkIGNvbnRlbnRGaWx0ZXJEaWREZWNpZGUoKTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDZlNWVlNzRiZDBhODJhOGRhYjFhY2RmMzg1NDZj
ZTNlMDUyNmQwNDguLjhjNTdkNmU0ZGFlNmJlNjQwNjE3OWZhZWFmNDI0ZmMxNWRiODQ1ZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTI3Miw3ICsyNzIsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNh
Y2hlKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIGludCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygpIG92ZXJyaWRlIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZChjb25zdCBVUkwmKSBvdmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSBvdmVycmlkZSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpIG92
ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3QoY29uc3QgVVJMJiwgZG91YmxlLCBkb3VibGUpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpIG92ZXJyaWRlIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBhZmQxYjEw
MjEzZGE1MTZmMzQ5NmNjMmI0MWY2YjIzMzcxODcwN2JmLi5lMDRiYmY1YjA4ZTE5NGY2NGE0NTM1
NmU3MjU2ZmFiNWFiOGM2YWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaApAQCAtMTU0LDcgKzE1NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCBib29sIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIGludCBsZW5ndGgpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRI
YW5kbGVPbmxvYWRFdmVudHMoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmKSA9IDA7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Q2hhbmdlUHJvdmlzaW9uYWxVUkwoKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlIGludGVydmFs
LCBkb3VibGUgZmlyZURhdGUpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDU4MTk4OGVmOTY3ODBkMDg5MTA1NTgwZmY0MGY2YmM4MjE2OTVhNDEuLjI2
MzNmNGUwYzQ1NTk5NGJlZDJiYjNmZGYyZWFmZjRhNjI1MzEyODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgUmVzCiAgICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsKIAogICAgIGlmICghcmVkaXJl
Y3RSZXNwb25zZS5pc051bGwoKSAmJiAhbV9kb2N1bWVudExvYWRlci0+aXNDb21taXR0ZWQoKSkK
LSAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQobV9yZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgZnJh
bWVMb2FkZXIoKS0+Y2xpZW50KCkuZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
ZGlyZWN0UmVzcG9uc2UsIHN0ZDo6ZnVuY3Rpb248dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYg
Y2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApp
bmRleCAwNzdhZDFkNWY0MzdmNzcwNTI5NThkOWRiMGU1ZWJhMWViOWFiZTQyLi43NTY3OWM2YTJh
OTliZWZjYzZjM2QyOGE4YmZkN2UwMzBlMTI3N2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTIwNyw4ICsyMDcsNiBAQCB2b2lkIFN1YnJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHJlbW92aW5nIHRoZSBsYXN0IHJlZmVy
ZW5jZSB0byB0aGlzIG9iamVjdDsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyAzMjY2MjE2LgogICAg
IFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CiAKLSAgICBUZW1wb3JhcnlD
aGFuZ2U8Ym9vbD4gY2FsbGluZ0RpZFJlY2VpdmVSZXNwb25zZShtX2NhbGxpbmdEaWRSZWNlaXZl
UmVzcG9uc2UsIHRydWUpOwotCiAgICAgaWYgKHNob3VsZEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8o
KSkKICAgICAgICAgcmVzcG9uc2UuaW5jbHVkZUNlcnRpZmljYXRlSW5mbygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IGRkYTY5MmZmM2E4ODMzN2Vl
ZThlMDViNmExMWFiZWY1MDc1M2ViZTkuLjY5YTI0MjI5NzIxZmY2Y2E5ODk5M2E2OTk3NzAxOGZl
ZWQ4ZDVjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBA
IC01OCw4ICs1OCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgaU9TT3JpZ2luYWxSZXF1ZXN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pT1NPcmln
aW5hbFJlcXVlc3Q7IH0KICNlbmRpZgogCi0gICAgYm9vbCBjYWxsaW5nRGlkUmVjZWl2ZVJlc3Bv
bnNlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsaW5nRGlkUmVjZWl2ZVJlc3BvbnNlOyB9Ci0KIHBy
aXZhdGU6CiAgICAgU3VicmVzb3VyY2VMb2FkZXIoRnJhbWUqLCBDYWNoZWRSZXNvdXJjZSosIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwogCkBAIC0xMjYsNyArMTI0LDYgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQ7CiAgICAgU3VicmVzb3VyY2VM
b2FkZXJTdGF0ZSBtX3N0YXRlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXF1ZXN0Q291bnRUcmFj
a2VyPiBtX3JlcXVlc3RDb3VudFRyYWNrZXI7Ci0gICAgYm9vbCBtX2NhbGxpbmdEaWRSZWNlaXZl
UmVzcG9uc2UgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggYzc4YzNkNGVhYzM4OGEwM2JhMzQ4
M2MwYmM5NGUyYjgxMmJkODRhOC4uMWViYzE5M2ViMDY1NDk3Yjc4MWE2NDlmOTgwMWI2M2U4MDY0
MGNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuY3BwCkBAIC0xMzIsOSArMTMyLDggQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGlk
QWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcmVkaXJlY3RDb3VudDsgaSsrKSB7CiAgICAgICAgIFJlZGlyZWN0UGFpciByZWRpcmVj
dCA9IG1fcmVkaXJlY3RDaGFpbltpXTsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qo
cmVkaXJlY3QubV9yZXF1ZXN0KTsKLSAgICAgICAgYm9vbCBzaG91bGRDb250aW51ZSA9IHRydWU7
Ci0gICAgICAgIGNsaWVudC0+c3ludGhldGljUmVkaXJlY3RSZWNlaXZlZCh0aGlzLCByZXF1ZXN0
LCByZWRpcmVjdC5tX3JlZGlyZWN0UmVzcG9uc2UsIHNob3VsZENvbnRpbnVlKTsKLSAgICAgICAg
aWYgKCFoYXNDbGllbnQoYykgfHwgIXNob3VsZENvbnRpbnVlKQorICAgICAgICBjbGllbnQtPnJl
ZGlyZWN0UmVjZWl2ZWQodGhpcywgcmVxdWVzdCwgcmVkaXJlY3QubV9yZWRpcmVjdFJlc3BvbnNl
KTsKKyAgICAgICAgaWYgKCFoYXNDbGllbnQoYykpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIEFTU0VSVChyZWRpcmVjdENvdW50ID09IG1fcmVkaXJlY3RDaGFpbi5zaXplKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VD
bGllbnQuaAppbmRleCAzOTU5ZjEzNWUzNWNjZGVlNGU3ZGI3YjczMGU5ZDExZGNjZDRmOTllLi4z
ZDdmZDVlNWM0ODc0YjRmYzA0ZjRiNDY5NWQxY2Q5MDQwMDliYTA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaApAQCAt
NDEsMTAgKzQxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVk
KENhY2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiAvKiBkYXRh
ICovLCBpbnQgLyogbGVuZ3RoICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSB7IH0KLQotICAgIC8vIEluIHJlc3BvbnNlIHRvIGEgcmVkaXJlY3QsIHNvbWUgY2xp
ZW50cyB3aXNoIHRvIHJlY2VpdmUgbm8gZnV0aGVyIGNhbGxiYWNrcywgYnV0IGNhbm5vdCBpbW1l
ZGlhdGVseSByZW1vdmUgdGhlbXNlbHZlcyBhcyBhIGNsaWVudC4KLSAgICAvLyBUaG9zZSBjbGll
bnRzIGNhbiBleHByZXNzIHRoZWlyIGRlc2lyZSB0byByZWNpZXZlIG5vIGZ1dGhlciBjYWxsYmFj
a3MgYnkgc2V0dGluZyBzaG91bGRDb250aW51ZSB0byBmYWxzZS4KLSAgICB2aXJ0dWFsIHZvaWQg
c3ludGhldGljUmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJv
b2wmIC8qIHNob3VsZENvbnRpbnVlICovKSB7IHJlZGlyZWN0UmVjZWl2ZWQocmVzb3VyY2UsIHJl
cXVlc3QsIHJlc3BvbnNlKTsgfQogI2lmIFVTRShTT1VQKQogICAgIHZpcnR1YWwgY2hhciogZ2V0
T3JDcmVhdGVSZWFkQnVmZmVyKENhY2hlZFJlc291cmNlKiwgc2l6ZV90IC8qIHJlcXVlc3RlZFNp
emUgKi8sIHNpemVfdCYgLyogYWN0dWFsU2l6ZSAqLykgeyByZXR1cm4gMDsgfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5o
CmluZGV4IGQxNjI2ODk4ZWIyNTMzMjExNzdlMWEzNDcwZTg2MTUyMDI1MzZiODYuLjY5MWZlMmZm
M2QxZTdkMjRhMzQxZWEwZmU1ZWRmZWQ4Y2JiNDk4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCkBAIC00MCw3ICs0MCw4IEBA
IHB1YmxpYzoKICAgICAgICAgQWZ0ZXJSZWRpcmVjdCwKICAgICAgICAgQWZ0ZXJSZXNwb25zZSwK
ICAgICAgICAgQWZ0ZXJBZGREYXRhLAotICAgICAgICBBZnRlckZpbmlzaGVkQWRkaW5nRGF0YQor
ICAgICAgICBBZnRlckZpbmlzaGVkQWRkaW5nRGF0YSwKKyAgICAgICAgTmV2ZXIKICAgICB9Owog
CiAgICAgZW51bSBjbGFzcyBEZWNpc2lvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlkbAppbmRleCA1ZjAwMDU3NzljMTcyNzlm
NmExOWUxNTlmNWQ3ZGQ3ZTJkNTE4NTRkLi5kNDAxYWU5MDE0YTM3OWZhZDFmOTgzMTcwMzNlN2Q4
NTRmNDZmMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncy5pZGwKQEAgLTM3LDYgKzM3LDcgQEAKICAgICBjb25zdCBvY3RldCBE
RUNJU0lPTl9QT0lOVF9BRlRFUl9SRVNQT05TRSA9IDI7CiAgICAgY29uc3Qgb2N0ZXQgREVDSVNJ
T05fUE9JTlRfQUZURVJfQUREX0RBVEEgPSAzOwogICAgIGNvbnN0IG9jdGV0IERFQ0lTSU9OX1BP
SU5UX0FGVEVSX0ZJTklTSEVEX0FERElOR19EQVRBID0gNDsKKyAgICBjb25zdCBvY3RldCBERUNJ
U0lPTl9QT0lOVF9ORVZFUiA9IDU7CiAgICAgW0N1c3RvbV0gYXR0cmlidXRlIG9jdGV0IGRlY2lz
aW9uUG9pbnQ7CiAKICAgICBjb25zdCBvY3RldCBERUNJU0lPTl9BTExPVyA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAppbmRleCA0YTk1NWNiOTQ3ZTUxZDQ1ZTJkOTg1ZmQ2ZmE1MTQ4YTFjNWE3ZDg5Li5jZDFm
MjRiYTljMzNhYTNkYjYwZjBiYTFkMzU2NWViN2FmZjQ1MDc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2Uq
IHdpbGxDYWNoZVJlc3BvbnNlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBOU0NhY2hlZFVSTFJlc3BvbnNlKikgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJl
Y3QoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVu
dFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZp
cmVEYXRlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2Nh
dGlvbldpdGhpblBhZ2UoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggMjIyYWYxNjdi
ODE3NjcwNDExZThhZGJmZDhjNjUxZmJiYmM2OWIxNS4uZmE2YjkwZDllODI5MzBmOGZjZTUxOTM3
Zjk3ZjZiMzM1YzQ3YTY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTI4OCw3ICsyODgsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxv
YWQoRG9jdW1lbnRMb2FkZXIqIGRvYwogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3
KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIFN1YnJlc291cmNlTG9hZGVyKiBtYWluUmVzb3VyY2VM
b2FkZXIgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlTG9hZGVyKCk7CiAKLSAgICBpZiAo
IW1haW5SZXNvdXJjZUxvYWRlciB8fCAhbWFpblJlc291cmNlTG9hZGVyLT5jYWxsaW5nRGlkUmVj
ZWl2ZVJlc3BvbnNlKCkpIHsKKyAgICBpZiAoIW1haW5SZXNvdXJjZUxvYWRlcikgewogICAgICAg
ICAvLyBUaGUgcmVzb3VyY2UgaGFzIGFscmVhZHkgYmVlbiBjYWNoZWQsIG9yIHRoZSBjb252ZXJz
aW9uIGlzIGJlaW5nIGF0dG1wdGVkIHdoZW4gbm90IGNhbGxpbmcgU3VicmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZSgpLgogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25z
IgpAQCAtNTc4LDkgKzU3OCw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkSGFuZGxlT25sb2FkRXZlbnRzKCkKICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGlt
cGxlbWVudGF0aW9ucy0+ZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWVGdW5jLCB3ZWJWaWV3
LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZTopLCBtX3dl
YkZyYW1lLmdldCgpKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgVVJMJiB1cmwp
Cit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpCiB7Ci0gICAgbV93ZWJGcmFtZS0+X3ByaXZhdGUtPnBy
b3Zpc2lvbmFsVVJMID0gdXJsLnN0cmluZygpOworICAgIG1fd2ViRnJhbWUtPl9wcml2YXRlLT5w
cm92aXNpb25hbFVSTCA9IGNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmxvYWRlcigpLnByb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkuc3RyaW5nKCk7CiAKICAgICBXZWJWaWV3ICp3ZWJW
aWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBXZWJGcmFtZUxvYWREZWxl
Z2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRGcmFt
ZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggMDgzNzViYTI1MzYzZGU5OGZhZGRhMzQyZGVjY2QxOWE2ODlk
NmE2My4uZjkwNjM5NmQ3ZDFiZTAwYTYyN2EyMDY2MjczZTgxZTUxNTNmZGU5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTI3OCwyMCArMjc4LDIxIEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkKICAgICB3
ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZEhhbmRsZU9ubG9hZEV2ZW50
c0ZvckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChj
b25zdCBVUkwmIHVybCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkKIHsKICAgICBXZWJQYWdlKiB3
ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgV2ViRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyID0gc3RhdGljX2Nh
c3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnBy
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSk7CisgICAgY29uc3QgU3RyaW5nJiB1cmwgPSBkb2N1
bWVudExvYWRlci51cmwoKS5zdHJpbmcoKTsKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJE
YXRhOwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAgIHdlYlBhZ2UtPmlu
amVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgdXNlckRhdGEpOwogCiAgICAg
Ly8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JG
cmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCB1
cmwuc3RyaW5nKCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9i
amVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5u
YXZpZ2F0aW9uSUQoKSwgdXJsLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFu
c2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKIH0KIAogdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VQcm92aXNpb25hbFVSTCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZDExMWRmYThlMDA2NzIxYjRjOWQ0
NjY1ZDRjMjdmMGU0MzcxODc1My4uZTg4NjlhOTVhOWU4MDhkNDg3MDE4NDdjMzAyZWNhOGVhYzAw
MDZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNzksNyArNzksNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBpbnQgbGVuZ3RoKSBv
dmVycmlkZTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRF
dmVudHMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Q2hhbmdlUHJvdmlzaW9uYWxVUkwoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91
YmxlIGludGVydmFsLCBkb3VibGUgZmlyZURhdGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggNWIzMzE1MzUyYTQwYmE5
NTY4NTYwMWE1OWJjZjI0ZjhiZjUwOGU2My4uY2NjYjhiNmFkZDQ2OTk3M2JkZTQ1NjZiZTg2OTE0
N2Y4ZjA4NjhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBXZWJGcmFtZTo6Y29udmVydE1haW5S
ZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwKICAg
ICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZXJlIGlzIG5vIGxvYWRlciBiZWNhdXNlIHRo
ZSBtYWluIHJlc291cmNlIGlzIGluIHRoZSBXZWJDb3JlIG1lbW9yeSBjYWNoZSwKICAgICAgICAg
Ly8gb3IgYmVjYXVzZSB0aGUgY29udmVyc2lvbiB3YXMgYXR0ZW1wdGVkIHdoZW4gbm90IGNhbGxp
bmcgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSgpLgogICAgICAgICB1aW50
NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKG1haW5SZXNvdXJj
ZUxvYWRlciAmJiBtYWluUmVzb3VyY2VMb2FkZXItPmNhbGxpbmdEaWRSZWNlaXZlUmVzcG9uc2Uo
KSkKKyAgICAgICAgaWYgKG1haW5SZXNvdXJjZUxvYWRlcikKICAgICAgICAgICAgIG1haW5SZXNv
dXJjZUxvYWRJZGVudGlmaWVyID0gbWFpblJlc291cmNlTG9hZGVyLT5pZGVudGlmaWVyKCk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyID0gMDsK
QEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIFdlYkZyYW1lOjpjb252ZXJ0TWFpblJlc291cmNlTG9h
ZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyLAogICAgIH0KICNlbmRp
ZgogCi0gICAgaWYgKCFtYWluUmVzb3VyY2VMb2FkZXIgfHwgIW1haW5SZXNvdXJjZUxvYWRlci0+
Y2FsbGluZ0RpZFJlY2VpdmVSZXNwb25zZSgpKSB7CisgICAgaWYgKCFtYWluUmVzb3VyY2VMb2Fk
ZXIpIHsKICAgICAgICAgLy8gVGhlIG1haW4gcmVzb3VyY2UgaGFzIGFscmVhZHkgYmVlbiBsb2Fk
ZWQuIFN0YXJ0IGEgbmV3IGRvd25sb2FkIGluc3RlYWQuCiAgICAgICAgIHdlYlByb2Nlc3MuZG93
bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0KTsK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDQzOTcxYzQ2MjQ4ZDQ0ZjkwMjg5OGUyNTBkYTEzZGE4YTQ5NWRjMmQuLmFj
MWYyM2FkMjBkODg5Y2JmMzY0MWI5ODU4YzY5NjQ3NjMyNmFjNjQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxNS0w
OC0yNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvbnRlbnQg
RmlsdGVyaW5nXSBEZXRlcm1pbmUgbmF2aWdhdGlvbiBhbmQgY29udGVudCBwb2xpY3kgYmVmb3Jl
IGNvbnRpbnVpbmcgdG8gZmlsdGVyIGEgbG9hZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgZG93bmxvYWQgQVBJIHRlc3RzIGNvdmVyaW5nIGV2
ZXJ5IGRlY2lzaW9uIGFuZCBkZWNpc2lvbiBwb2ludC4KKyAgICAgICAgUmVtb3ZlZCBfV0tEb3du
bG9hZC5Bc3luY2hyb25vdXNEb3dubG9hZFBvbGljeSBpbiBmYXZvciBvZiB0aGVzZSBuZXcgdGVz
dHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25m
aWc6IEFkZGVkICQoQlVJTFRfUFJPRFVDVFNfRElSKS9XZWJDb3JlVGVzdFN1cHBvcnQgdG8gdGhl
IGhlYWRlciBzZWFyY2ggcGF0aC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRp
b25zL1dlYlByb2Nlc3NQbHVnSW4ueGNjb25maWc6IFJlbW92ZWQgaXQgZnJvbSBoZXJlLgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0J1bmRsZVBhcmFtZXRlcnNQ
bHVnSW4ubW06CisgICAgICAgICgtW0J1bmRsZVBhcmFtZXRlcnNQbHVnSW4gb2JzZXJ2ZVZhbHVl
Rm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKTogQ2FsbGVkIC12YWx1ZUZvcktl
eVBhdGg6LCB3aGljaAorICAgICAgICByZXR1cm5zIGFuIGlkLCBpbnN0ZWFkIG9mIC12YWx1ZUZv
cktleTosIHdoaWNoIGFsd2F5cyByZXR1cm5zIGFuIE5TU3RyaW5nIGV2ZW4gaWYgdGhlIG9iamVj
dCBpcyBvZiBhbm90aGVyIHR5cGUuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvQ29udGVudEZpbHRlcmluZy5tbTogQWRkZWQgYSBjbGFzcyB0aGF0IGNhbiBzZW5k
IGEgTW9ja0NvbnRlbnRGaWx0ZXIKKyAgICAgICAgZGVjaXNpb24gYW5kIGRlY2lzaW9uIHBvaW50
IGFzIGEgYnVuZGxlIHBhcmFtZXRlci4KKyAgICAgICAgKCtbTW9ja0NvbnRlbnRGaWx0ZXJFbmFi
bGVyIHN1cHBvcnRzU2VjdXJlQ29kaW5nXSk6CisgICAgICAgICgtW01vY2tDb250ZW50RmlsdGVy
RW5hYmxlciBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgICgtW01vY2tDb250ZW50RmlsdGVyRW5h
YmxlciBpbml0V2l0aENvZGVyOl0pOgorICAgICAgICAoLVtNb2NrQ29udGVudEZpbHRlckVuYWJs
ZXIgaW5pdFdpdGhEZWNpc2lvbjpkZWNpc2lvblBvaW50Ol0pOgorICAgICAgICAoLVtNb2NrQ29u
dGVudEZpbHRlckVuYWJsZXIgZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoY29uZmlndXJh
dGlvbldpdGhDb250ZW50RmlsdGVyU2V0dGluZ3MpOiBBZGRlZCBhIGhlbHBlciBmdW5jdGlvbiB0
byBjcmVhdGUgYSBXS1dlYlZpZXdDb25maWd1cmF0aW9uIHdpdGggTW9ja0NvbmVudEZpbHRlciBz
ZXR0aW5ncy4KKyAgICAgICAgKFRFU1QpOiBSZW5hbWVkIENvbnRlbnRGaWx0ZXJpbmcuU2VydmVy
UmVkaXJlY3QgdG8gQ29udGVudEZpbHRlcmluZy5VUkxBZnRlclNlcnZlclJlZGlyZWN0LgorICAg
ICAgICAoLVtCZWNvbWVEb3dubG9hZERlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKTogRGVjaWRlZCBfV0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZC4KKyAgICAgICAgKC1bQmVjb21lRG93bmxvYWRE
ZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246d2l0aEVycm9yOl0p
OiBTZXQgaXNEb25lIHRvIHRydWUuCisgICAgICAgICgtW0JlY29tZURvd25sb2FkRGVsZWdhdGUg
d2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOiBEaXR0by4KKyAgICAgICAgKC1bQ29udGVu
dEZpbHRlcmluZ0Rvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6XSk6IFNldCBkb3du
bG9hZERpZFN0YXJ0IHRvIHRydWUuCisgICAgICAgIChkb3dubG9hZFRlc3QpOiBBZGRlZCBhIGhl
bHBlciBmdW5jdGlvbiB0byB0ZXN0IGRvd25sb2FkcyB3aXRoIGEgZ2l2ZW4gZGVjaXNpb24gYW5k
IGRlY2lzaW9uIHBvaW50LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNv
Y29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW06IEFkZGVkIGEgY29ycmVzcG9uZGluZyBidW5k
bGUgY2xhc3MgdGhhdCBkZWNvZGVzCisgICAgICAgIHRoZSBNb2NrQ29udGVudEZpbHRlciBkZWNp
c2lvbiBhbmQgZGVjaXNpb24gcG9pbnQsIGFuZCBzZXRzIHRoZXNlIHZhbHVlcyBpbiB0aGUgTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncworICAgICAgICBzaW5nbGV0b24uIFRoaXMgY2xhc3MgaXMg
ZHVwbGljYXRlZCBpbiB0aGUgYnVuZGxlIHRvIHByZXZlbnQgVGVzdFdlYktpdEFQSSBmcm9tIGhh
dmluZyB0byBsaW5rIHRvIFdlYkNvcmVUZXN0U3VwcG9ydC4KKyAgICAgICAgKCtbTW9ja0NvbnRl
bnRGaWx0ZXJFbmFibGVyIHN1cHBvcnRzU2VjdXJlQ29kaW5nXSk6CisgICAgICAgICgtW01vY2tD
b250ZW50RmlsdGVyRW5hYmxlciBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgICgtW01vY2tDb250
ZW50RmlsdGVyRW5hYmxlciBpbml0V2l0aENvZGVyOl0pOgorICAgICAgICAoLVtNb2NrQ29udGVu
dEZpbHRlckVuYWJsZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtNb2NrQ29udGVudEZpbHRlckVu
YWJsZXIgZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtDb250ZW50RmlsdGVyaW5nUGx1
Z0luIHdlYlByb2Nlc3NQbHVnSW46aW5pdGlhbGl6ZVdpdGhPYmplY3Q6XSk6IFN0YXJ0IG9ic2Vy
dmluZyBjaGFuZ2VzIHRvIHRoZSBNb2NrQ29udGVudEZpbHRlckVuYWJsZXIga2V5IHBhdGguCisg
ICAgICAgICgtW0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4gZGVhbGxvY10pOiBTdG9wIG9ic2Vydmlu
Zy4KKyAgICAgICAgKC1bQ29udGVudEZpbHRlcmluZ1BsdWdJbiBvYnNlcnZlVmFsdWVGb3JLZXlQ
YXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOiBTdG9yZSBhIE1vY2tDb250ZW50RmlsdGVy
RW5hYmxlciBpbiBfY29udGVudEZpbHRlckVuYWJsZXIuCisgICAgICAgICgrW1NlcnZlclJlZGly
ZWN0UGx1Z0luIGluaXRpYWxpemVdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKC1bQXN5bmNocm9ub3Vz
RG93bmxvYWROYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtBc3lu
Y2hyb25vdXNEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0Ol0pOiBEZWxldGVkLgor
ICAgICAgICAoVEVTVCk6IERlbGV0ZWQuCisKIDIwMTUtMDgtMjYgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBCdWlsZCBmaXggYWZ0ZXIgcjE4
ODk4MgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9CYXNl
LnhjY29uZmlnIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29u
ZmlnCmluZGV4IGZhOWUzYzVhOWU5MmE0ZGViMWYwYTc2ZWRmZGRhYzU5OWFhNzViNTEuLmIxMGE5
ODBlNDJmMjQyMDk0MzIzZTEwMWE4NmI2MzA0MzdmNDhmYjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZworKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKQEAgLTI0LDcgKzI0LDcgQEAK
IENMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9IGdudSsrMHg7CiBDTEFOR19DWFhfTElCUkFS
WSA9IGxpYmMrKzsKIENMQU5HX1dBUk5fQ1hYMFhfRVhURU5TSU9OUyA9IE5POwotSEVBREVSX1NF
QVJDSF9QQVRIUyA9ICR7QlVJTFRfUFJPRFVDVFNfRElSfS91c3IvbG9jYWwvaW5jbHVkZSAkKFdF
QkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRm9yd2FyZGluZ0hlYWRlcnMgJChXRUJDT1JFX1BS
SVZBVEVfSEVBREVSU19ESVIpL2ljdTsKK0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAke0JVSUxUX1BS
T0RVQ1RTX0RJUn0vdXNyL2xvY2FsL2luY2x1ZGUgJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19E
SVIpL0ZvcndhcmRpbmdIZWFkZXJzICQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9pY3Ug
JChCVUlMVF9QUk9EVUNUU19ESVIpL1dlYkNvcmVUZXN0U3VwcG9ydDsKIEZSQU1FV09SS19TRUFS
Q0hfUEFUSFMgPSAkKEZSQU1FV09SS19TRUFSQ0hfUEFUSFNfJChQTEFURk9STV9OQU1FKSk7CiBG
UkFNRVdPUktfU0VBUkNIX1BBVEhTX21hY29zeCA9ICQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFt
ZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcmsvRnJhbWV3b3JrcyAkKFNZU1RFTV9MSUJSQVJZX0RJUikv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzICQoU1lT
VEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3
b3JrczsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9X
ZWJQcm9jZXNzUGx1Z0luLnhjY29uZmlnIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0
aW9ucy9XZWJQcm9jZXNzUGx1Z0luLnhjY29uZmlnCmluZGV4IGM4ODhhMDY3OTZlZjM3N2E3MTY4
NGJlNTgzNTBlMDU1MjE3M2JiZDEuLjI5ODU1MTY5M2I2MmIxNzIzYTM4MmI0MGI0MWU4OTM0NDM1
OTc0ODMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvV2Vi
UHJvY2Vzc1BsdWdJbi54Y2NvbmZpZworKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3Vy
YXRpb25zL1dlYlByb2Nlc3NQbHVnSW4ueGNjb25maWcKQEAgLTI3LDcgKzI3LDYgQEAgSU5GT1BM
SVNUX0ZJTEUgPSBjb2NvYS9XZWJQcm9jZXNzUGx1Z0luL0luZm8ucGxpc3Q7CiBQUk9EVUNUX05B
TUUgPSBUZXN0V2ViS2l0QVBJOwogRVhFQ1VUQUJMRV9TVUZGSVggPSAuYnVuZGxlOwogV1JBUFBF
Ul9FWFRFTlNJT04gPSB3a2J1bmRsZTsKLUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKGluaGVyaXRl
ZCkgJChCVUlMVF9QUk9EVUNUU19ESVIpL1dlYkNvcmVUZXN0U3VwcG9ydDsKIE9USEVSX0xERkxB
R1MgPSAkKGluaGVyaXRlZCkgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtZnJhbWV3b3JrIFdl
YktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydDsKIExEX1JVTlBBVEhfU0VBUkNIX1BBVEhTW3Nkaz1t
YWNvc3gqXSA9ICJAbG9hZGVyX3BhdGgvLi4vLi4vLi4iOwogTERfUlVOUEFUSF9TRUFSQ0hfUEFU
SFNbc2RrPWlwaG9uZSpdID0gIkBsb2FkZXJfcGF0aC8uLiI7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9CdW5kbGVQYXJhbWV0ZXJzUGx1Z0luLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQnVuZGxlUGFyYW1ldGVy
c1BsdWdJbi5tbQppbmRleCAyYjUxYTA1NzdhZWJkODE5Y2NlNzIyYTc1Mzk3ODFiMDQ0Yjk2NzM2
Li5mY2VlN2I1NjQxOWQ4MmZiNThkYTk0NTFjZWJjMzY3NzlmNDg0Y2MxIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9CdW5kbGVQYXJhbWV0ZXJzUGx1
Z0luLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0J1bmRs
ZVBhcmFtZXRlcnNQbHVnSW4ubW0KQEAgLTY0LDcgKzY0LDcgQEAgLSAodm9pZClkZWFsbG9jCiAt
ICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVj
dDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQg
Kiljb250ZXh0CiB7CiAgICAgSlNDb250ZXh0ICpqc0NvbnRleHQgPSBbW19icm93c2VyQ29udGV4
dENvbnRyb2xsZXIgbWFpbkZyYW1lXSBqc0NvbnRleHRGb3JXb3JsZDpbV0tXZWJQcm9jZXNzUGx1
Z0luU2NyaXB0V29ybGQgbm9ybWFsV29ybGRdXTsKLSAgICBbanNDb250ZXh0IHNldE9iamVjdDpb
b2JqZWN0IHZhbHVlRm9yS2V5OmtleVBhdGhdIGZvcktleWVkU3Vic2NyaXB0OmtleVBhdGhdOwor
ICAgIFtqc0NvbnRleHQgc2V0T2JqZWN0OltvYmplY3QgdmFsdWVGb3JLZXlQYXRoOmtleVBhdGhd
IGZvcktleWVkU3Vic2NyaXB0OmtleVBhdGhdOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQ29udGVudEZpbHRlcmluZy5t
bQppbmRleCBlNjYxMjMwNDM1ODEzZGRjOWJlNGVlYjg1NTk2NGE3MjdkZjk3OWJiLi42NzgxMWRi
NTllYzMxZWJlM2Y1ZWQwNTc0NjQ4ZDhhNTYzM2FlNDdlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0K
QEAgLTI3LDE2ICsyNyw3MiBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oTUFD
KQogCisjaW1wb3J0ICJNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW1wb3J0ICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAjaW1wb3J0ICJXS1dl
YlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGUu
aD4KKyNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KKyNpbXBv
cnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlldy5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KIAordXNpbmcgRGVjaXNpb24gPSBXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbjsKK3VzaW5nIERlY2lzaW9uUG9pbnQgPSBXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OworCiBzdGF0aWMgYm9v
bCBpc0RvbmU7CiAKK0BpbnRlcmZhY2UgTW9ja0NvbnRlbnRGaWx0ZXJFbmFibGVyIDogTlNPYmpl
Y3QgPE5TQ29weWluZywgTlNTZWN1cmVDb2Rpbmc+CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhE
ZWNpc2lvbjooRGVjaXNpb24pZGVjaXNpb24gZGVjaXNpb25Qb2ludDooRGVjaXNpb25Qb2ludClk
ZWNpc2lvblBvaW50OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gTW9ja0NvbnRlbnRGaWx0ZXJF
bmFibGVyIHsKKyAgICBEZWNpc2lvbiBfZGVjaXNpb247CisgICAgRGVjaXNpb25Qb2ludCBfZGVj
aXNpb25Qb2ludDsKK30KKworKyAoQk9PTClzdXBwb3J0c1NlY3VyZUNvZGluZworeworICAgIHJl
dHVybiBZRVM7Cit9CisKKy0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQoreworICAg
IHJldHVybiBbc2VsZiByZXRhaW5dOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2Rl
cjooTlNDb2RlciAqKWRlY29kZXIKK3sKKyAgICByZXR1cm4gW3N1cGVyIGluaXRdOworfQorCist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEZWNpc2lvbjooRGVjaXNpb24pZGVjaXNpb24gZGVjaXNp
b25Qb2ludDooRGVjaXNpb25Qb2ludClkZWNpc2lvblBvaW50Cit7CisgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfZGVjaXNpb24gPSBk
ZWNpc2lvbjsKKyAgICBfZGVjaXNpb25Qb2ludCA9IGRlY2lzaW9uUG9pbnQ7CisgICAgcmV0dXJu
IHNlbGY7Cit9CisKKy0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKK3sK
KyAgICBbY29kZXIgZW5jb2RlSW50OnN0YXRpY19jYXN0PGludD4oX2RlY2lzaW9uKSBmb3JLZXk6
QCJEZWNpc2lvbiJdOworICAgIFtjb2RlciBlbmNvZGVJbnQ6c3RhdGljX2Nhc3Q8aW50PihfZGVj
aXNpb25Qb2ludCkgZm9yS2V5OkAiRGVjaXNpb25Qb2ludCJdOworfQorCitAZW5kCisKK3N0YXRp
YyBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbldpdGhDb250
ZW50RmlsdGVyU2V0dGluZ3MoRGVjaXNpb24gZGVjaXNpb24sIERlY2lzaW9uUG9pbnQgZGVjaXNp
b25Qb2ludCkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSByZXRhaW5QdHIoW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gdGVzdHdlYmtpdGFwaV9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5D
bGFzc05hbWU6QCJDb250ZW50RmlsdGVyaW5nUGx1Z0luIl0pOworICAgIGF1dG8gY29udGVudEZp
bHRlckVuYWJsZXIgPSBhZG9wdE5TKFtbTW9ja0NvbnRlbnRGaWx0ZXJFbmFibGVyIGFsbG9jXSBp
bml0V2l0aERlY2lzaW9uOmRlY2lzaW9uIGRlY2lzaW9uUG9pbnQ6ZGVjaXNpb25Qb2ludF0pOwor
ICAgIFtbY29uZmlndXJhdGlvbiBwcm9jZXNzUG9vbF0gX3NldE9iamVjdDpjb250ZW50RmlsdGVy
RW5hYmxlci5nZXQoKSBmb3JCdW5kbGVQYXJhbWV0ZXI6TlNTdHJpbmdGcm9tQ2xhc3MoW01vY2tD
b250ZW50RmlsdGVyRW5hYmxlciBjbGFzc10pXTsKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbjsK
K30KKwogQGludGVyZmFjZSBTZXJ2ZXJSZWRpcmVjdE5hdmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2Jq
ZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KIEBlbmQKIApAQCAtNTksMjAgKzExNSwxNDQgQEAg
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZENvbW1pdE5hdmlnYXRpb246
KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXQKIAogQGVuZAogCi1URVNUKENvbnRlbnRGaWx0ZXJpbmcs
IFNlcnZlclJlZGlyZWN0KQorVEVTVChDb250ZW50RmlsdGVyaW5nLCBVUkxBZnRlclNlcnZlclJl
ZGlyZWN0KQoreworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBbTlNVUkxQcm90b2Nv
bCByZWdpc3RlckNsYXNzOltUZXN0UHJvdG9jb2wgY2xhc3NdXTsKKyAgICAgICAgW1dLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlciByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOltUZXN0
UHJvdG9jb2wgc2NoZW1lXV07CisKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gY29uZmln
dXJhdGlvbldpdGhDb250ZW50RmlsdGVyU2V0dGluZ3MoRGVjaXNpb246OkFsbG93LCBEZWNpc2lv
blBvaW50OjpBZnRlckFkZERhdGEpOworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0g
YWRvcHROUyhbW1NlcnZlclJlZGlyZWN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7
CisgICAgICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdh
dGUuZ2V0KCldOworICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3JlZGlyZWN0P3Bhc3Mi
XV1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICAg
ICAgW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciB1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9t
UHJvdG9jb2w6W1Rlc3RQcm90b2NvbCBzY2hlbWVdXTsKKyAgICAgICAgW05TVVJMUHJvdG9jb2wg
dW5yZWdpc3RlckNsYXNzOltUZXN0UHJvdG9jb2wgY2xhc3NdXTsKKyAgICB9Cit9CisKK0BpbnRl
cmZhY2UgQmVjb21lRG93bmxvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxl
Z2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEJlY29tZURvd25sb2FkRGVsZWdhdGUKKwor
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2Ug
ZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVj
aXNpb25IYW5kbGVyCit7CisgICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25z
ZVBvbGljeUJlY29tZURvd25sb2FkKTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5h
dmlnYXRpb24gd2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBpc0RvbmUgPSB0cnVl
OworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2
aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgoreworICAgIGlzRG9uZSA9IHRydWU7
Cit9CisKK0BlbmQKKworc3RhdGljIGJvb2wgZG93bmxvYWREaWRTdGFydDsKKworQGludGVyZmFj
ZSBDb250ZW50RmlsdGVyaW5nRG93bmxvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tEb3dubG9h
ZERlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gQ29udGVudEZpbHRlcmluZ0Rvd25s
b2FkRGVsZWdhdGUKKworLSAodm9pZClfZG93bmxvYWREaWRTdGFydDooX1dLRG93bmxvYWQgKilk
b3dubG9hZAoreworICAgIGRvd25sb2FkRGlkU3RhcnQgPSB0cnVlOworfQorCitAZW5kCisKK3N0
YXRpYyB2b2lkIGRvd25sb2FkVGVzdChEZWNpc2lvbiBkZWNpc2lvbiwgRGVjaXNpb25Qb2ludCBk
ZWNpc2lvblBvaW50KQoreworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBbTlNVUkxQ
cm90b2NvbCByZWdpc3RlckNsYXNzOltUZXN0UHJvdG9jb2wgY2xhc3NdXTsKKyAgICAgICAgW1dL
QnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29s
OltUZXN0UHJvdG9jb2wgc2NoZW1lXV07CisKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0g
Y29uZmlndXJhdGlvbldpdGhDb250ZW50RmlsdGVyU2V0dGluZ3MoZGVjaXNpb24sIGRlY2lzaW9u
UG9pbnQpOworICAgICAgICBhdXRvIGRvd25sb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udGVu
dEZpbHRlcmluZ0Rvd25sb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW1tjb25m
aWd1cmF0aW9uIHByb2Nlc3NQb29sXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVn
YXRlLmdldCgpXTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOworICAgICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tC
ZWNvbWVEb3dubG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFt3ZWJWaWV3IHNl
dE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworICAgICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiaHR0cDovL3JlZGlyZWN0Lz9kb3dubG9hZCJdXV07CisKKyAgICAgICAg
aXNEb25lID0gZmFsc2U7CisgICAgICAgIGRvd25sb2FkRGlkU3RhcnQgPSBmYWxzZTsKKyAgICAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgICAgIGNvbnN0IGJv
b2wgZG93bmxvYWRTaG91bGRTdGFydCA9IGRlY2lzaW9uID09IERlY2lzaW9uOjpBbGxvdyB8fCBk
ZWNpc2lvblBvaW50ID4gRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZTsKKyAgICAgICAgRVhQ
RUNUX0VRKGRvd25sb2FkU2hvdWxkU3RhcnQsIGRvd25sb2FkRGlkU3RhcnQpOworCisgICAgICAg
IFtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVBy
b3RvY29sOltUZXN0UHJvdG9jb2wgc2NoZW1lXV07CisgICAgICAgIFtOU1VSTFByb3RvY29sIHVu
cmVnaXN0ZXJDbGFzczpbVGVzdFByb3RvY29sIGNsYXNzXV07CisgICAgfQorfQorCitURVNUKENv
bnRlbnRGaWx0ZXJpbmcsIEFsbG93RG93bmxvYWRBZnRlcldpbGxTZW5kUmVxdWVzdCkKK3sKKyAg
ICBkb3dubG9hZFRlc3QoRGVjaXNpb246OkFsbG93LCBEZWNpc2lvblBvaW50OjpBZnRlcldpbGxT
ZW5kUmVxdWVzdCk7Cit9CisKK1RFU1QoQ29udGVudEZpbHRlcmluZywgQmxvY2tEb3dubG9hZEFm
dGVyV2lsbFNlbmRSZXF1ZXN0KQogewotICAgIFtOU1VSTFByb3RvY29sIHJlZ2lzdGVyQ2xhc3M6
W1Rlc3RQcm90b2NvbCBjbGFzc11dOwotICAgIFtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIg
cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDpbVGVzdFByb3RvY29sIHNjaGVtZV1dOwor
ICAgIGRvd25sb2FkVGVzdChEZWNpc2lvbjo6QmxvY2ssIERlY2lzaW9uUG9pbnQ6OkFmdGVyV2ls
bFNlbmRSZXF1ZXN0KTsKK30KIAotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IHJldGFpblB0cihb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiB0ZXN0d2Via2l0YXBpX2NvbmZpZ3VyYXRpb25XaXRoVGVz
dFBsdWdJbkNsYXNzTmFtZTpAIlNlcnZlclJlZGlyZWN0UGx1Z0luIl0pOwotICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVy
byBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBhdXRvIG5hdmlnYXRp
b25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tTZXJ2ZXJSZWRpcmVjdE5hdmlnYXRpb25EZWxlZ2F0ZSBh
bGxvY10gaW5pdF0pOwotICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0
aW9uRGVsZWdhdGUuZ2V0KCldOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vcmVkaXJlY3Q/
cGFzcyJdXV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworVEVTVChD
b250ZW50RmlsdGVyaW5nLCBBbGxvd0Rvd25sb2FkQWZ0ZXJSZWRpcmVjdCkKK3sKKyAgICBkb3du
bG9hZFRlc3QoRGVjaXNpb246OkFsbG93LCBEZWNpc2lvblBvaW50OjpBZnRlclJlZGlyZWN0KTsK
K30KIAotICAgIFtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgdW5yZWdpc3RlclNjaGVtZUZv
ckN1c3RvbVByb3RvY29sOltUZXN0UHJvdG9jb2wgc2NoZW1lXV07Ci0gICAgW05TVVJMUHJvdG9j
b2wgdW5yZWdpc3RlckNsYXNzOltUZXN0UHJvdG9jb2wgY2xhc3NdXTsKK1RFU1QoQ29udGVudEZp
bHRlcmluZywgQmxvY2tEb3dubG9hZEFmdGVyUmVkaXJlY3QpCit7CisgICAgZG93bmxvYWRUZXN0
KERlY2lzaW9uOjpCbG9jaywgRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZWRpcmVjdCk7Cit9CisKK1RF
U1QoQ29udGVudEZpbHRlcmluZywgQWxsb3dEb3dubG9hZEFmdGVyUmVzcG9uc2UpCit7CisgICAg
ZG93bmxvYWRUZXN0KERlY2lzaW9uOjpBbGxvdywgRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25z
ZSk7Cit9CisKK1RFU1QoQ29udGVudEZpbHRlcmluZywgQmxvY2tEb3dubG9hZEFmdGVyUmVzcG9u
c2UpCit7CisgICAgZG93bmxvYWRUZXN0KERlY2lzaW9uOjpCbG9jaywgRGVjaXNpb25Qb2ludDo6
QWZ0ZXJSZXNwb25zZSk7Cit9CisKK1RFU1QoQ29udGVudEZpbHRlcmluZywgQWxsb3dEb3dubG9h
ZEFmdGVyQWRkRGF0YSkKK3sKKyAgICBkb3dubG9hZFRlc3QoRGVjaXNpb246OkFsbG93LCBEZWNp
c2lvblBvaW50OjpBZnRlckFkZERhdGEpOworfQorCitURVNUKENvbnRlbnRGaWx0ZXJpbmcsIEJs
b2NrRG93bmxvYWRBZnRlckFkZERhdGEpCit7CisgICAgZG93bmxvYWRUZXN0KERlY2lzaW9uOjpC
bG9jaywgRGVjaXNpb25Qb2ludDo6QWZ0ZXJBZGREYXRhKTsKK30KKworVEVTVChDb250ZW50Rmls
dGVyaW5nLCBBbGxvd0Rvd25sb2FkQWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEpCit7CisgICAgZG93
bmxvYWRUZXN0KERlY2lzaW9uOjpBbGxvdywgRGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFk
ZGluZ0RhdGEpOworfQorCitURVNUKENvbnRlbnRGaWx0ZXJpbmcsIEJsb2NrRG93bmxvYWRBZnRl
ckZpbmlzaGVkQWRkaW5nRGF0YSkKK3sKKyAgICBkb3dubG9hZFRlc3QoRGVjaXNpb246OkJsb2Nr
LCBEZWNpc2lvblBvaW50OjpBZnRlckZpbmlzaGVkQWRkaW5nRGF0YSk7Cit9CisKK1RFU1QoQ29u
dGVudEZpbHRlcmluZywgQWxsb3dEb3dubG9hZE5ldmVyKQoreworICAgIGRvd25sb2FkVGVzdChE
ZWNpc2lvbjo6QWxsb3csIERlY2lzaW9uUG9pbnQ6Ok5ldmVyKTsKK30KKworVEVTVChDb250ZW50
RmlsdGVyaW5nLCBCbG9ja0Rvd25sb2FkTmV2ZXIpCit7CisgICAgZG93bmxvYWRUZXN0KERlY2lz
aW9uOjpCbG9jaywgRGVjaXNpb25Qb2ludDo6TmV2ZXIpOwogfQogCiAjZW5kaWYgLy8gV0tfQVBJ
X0VOQUJMRUQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNv
Y29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1tCmluZGV4IDQzYWNkNTIxNDgy
NzQ5NTlhNmQ4MmQzZDIwM2Q5NjQ4MjVkMjYzOWYuLmQxY2I3ZTQ2ZjQxYzQ1M2I4NzU2YmQ4NzA2
NjczMGIyNjhhNDYxNzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0MkNvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbQpAQCAtMzAs
MjAgKzMwLDc1IEBACiAjaW1wb3J0ICJNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW1w
b3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luLmg+CiAKLUBpbnRlcmZhY2UgU2VydmVyUmVk
aXJlY3RQbHVnSW4gOiBOU09iamVjdCA8V0tXZWJQcm9jZXNzUGx1Z0luPgordXNpbmcgTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncyA9IFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7
Cit1c2luZyBEZWNpc2lvbiA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOwor
dXNpbmcgRGVjaXNpb25Qb2ludCA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9u
UG9pbnQ7CisKK0BpbnRlcmZhY2UgTW9ja0NvbnRlbnRGaWx0ZXJFbmFibGVyIDogTlNPYmplY3Qg
PE5TQ29weWluZywgTlNTZWN1cmVDb2Rpbmc+CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBTZXJ2
ZXJSZWRpcmVjdFBsdWdJbgorQGltcGxlbWVudGF0aW9uIE1vY2tDb250ZW50RmlsdGVyRW5hYmxl
cgorCisrIChCT09MKXN1cHBvcnRzU2VjdXJlQ29kaW5nCit7CisgICAgcmV0dXJuIFlFUzsKK30K
KworLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCit7CisgICAgcmV0dXJuIFtzZWxm
IHJldGFpbl07Cit9CiAKLSsgKHZvaWQpaW5pdGlhbGl6ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiB7Ci0gICAgdXNpbmcgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncyA9IFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7Ci0gICAgdXNp
bmcgRGVjaXNpb24gPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbjsKLSAgICB1
c2luZyBEZWNpc2lvblBvaW50ID0gTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Q
b2ludDsKLSAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncyA9IE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNpbmdsZXRvbigpOworICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgYXV0byYgc2V0dGluZ3MgPSBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpzaW5nbGV0b24oKTsKICAgICBzZXR0aW5ncy5zZXRFbmFi
bGVkKHRydWUpOwotICAgIHNldHRpbmdzLnNldERlY2lzaW9uKERlY2lzaW9uOjpBbGxvdyk7Ci0g
ICAgc2V0dGluZ3Muc2V0RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50OjpBZnRlckFkZERhdGEp
OworICAgIHNldHRpbmdzLnNldERlY2lzaW9uKHN0YXRpY19jYXN0PERlY2lzaW9uPihbZGVjb2Rl
ciBkZWNvZGVJbnRGb3JLZXk6QCJEZWNpc2lvbiJdKSk7CisgICAgc2V0dGluZ3Muc2V0RGVjaXNp
b25Qb2ludChzdGF0aWNfY2FzdDxEZWNpc2lvblBvaW50PihbZGVjb2RlciBkZWNvZGVJbnRGb3JL
ZXk6QCJEZWNpc2lvblBvaW50Il0pKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClk
ZWFsbG9jCit7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2luZ2xldG9uKCkuc2V0
RW5hYmxlZChmYWxzZSk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWVuY29k
ZVdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCit7Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBD
b250ZW50RmlsdGVyaW5nUGx1Z0luIDogTlNPYmplY3QgPFdLV2ViUHJvY2Vzc1BsdWdJbj4KK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIENvbnRlbnRGaWx0ZXJpbmdQbHVnSW4geworICAgIFJldGFp
blB0cjxNb2NrQ29udGVudEZpbHRlckVuYWJsZXI+IF9jb250ZW50RmlsdGVyRW5hYmxlcjsKKyAg
ICBSZXRhaW5QdHI8V0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlcj4gX3BsdWdJbkNvbnRyb2xs
ZXI7Cit9CisKKy0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbjooV0tXZWJQcm9jZXNzUGx1Z0luQ29u
dHJvbGxlciAqKXBsdWdJbkNvbnRyb2xsZXIgaW5pdGlhbGl6ZVdpdGhPYmplY3Q6KGlkKWluaXRp
YWxpemF0aW9uT2JqZWN0Cit7CisgICAgQVNTRVJUKCFfcGx1Z0luQ29udHJvbGxlcik7CisgICAg
X3BsdWdJbkNvbnRyb2xsZXIgPSBwbHVnSW5Db250cm9sbGVyOworICAgIFtwbHVnSW5Db250cm9s
bGVyLnBhcmFtZXRlcnMgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOk5TU3RyaW5nRnJvbUNs
YXNzKFtNb2NrQ29udGVudEZpbHRlckVuYWJsZXIgY2xhc3NdKSBvcHRpb25zOk5TS2V5VmFsdWVP
YnNlcnZpbmdPcHRpb25Jbml0aWFsIGNvbnRleHQ6TlVMTF07Cit9CisKKy0gKHZvaWQpZGVhbGxv
YworeworICAgIFtbX3BsdWdJbkNvbnRyb2xsZXIgcGFyYW1ldGVyc10gcmVtb3ZlT2JzZXJ2ZXI6
c2VsZiBmb3JLZXlQYXRoOk5TU3RyaW5nRnJvbUNsYXNzKFtNb2NrQ29udGVudEZpbHRlckVuYWJs
ZXIgY2xhc3NdKV07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKW9ic2VydmVW
YWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNo
YW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0Cit7Cisg
ICAgaWQgY29udGVudEZpbHRlckVuYWJsZXIgPSBbb2JqZWN0IHZhbHVlRm9yS2V5UGF0aDprZXlQ
YXRoXTsKKyAgICBBU1NFUlQoW2NvbnRlbnRGaWx0ZXJFbmFibGVyIGlzS2luZE9mQ2xhc3M6W01v
Y2tDb250ZW50RmlsdGVyRW5hYmxlciBjbGFzc11dKTsKKyAgICBfY29udGVudEZpbHRlckVuYWJs
ZXIgPSBjb250ZW50RmlsdGVyRW5hYmxlcjsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRG93bmxvYWQubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Eb3dubG9hZC5tbQppbmRleCBjM2Y3YmVlZjhm
MDQ0NjRiZDQ5M2JiMmMyZjc2NjYxNTIyOTA1MTVjLi45MjI3MjIwZDFjNjY2ZGM1MzlhODgyMTI5
NWIyNjY0MzZlN2RjZTgzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9Eb3dubG9hZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9Eb3dubG9hZC5tbQpAQCAtMjY1LDM0ICsyNjUsNSBAQCBURVNUKF9XS0Rvd25s
b2FkLCBPcmlnaW5hdGluZ1dlYlZpZXcpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c0RvbmUpOwogfQogCi1AaW50ZXJmYWNlIEFzeW5jaHJvbm91c0Rvd25sb2FkTmF2aWdhdGlvbkRl
bGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgotQGVuZAotCi1AaW1wbGVt
ZW50YXRpb24gQXN5bmNocm9ub3VzRG93bmxvYWROYXZpZ2F0aW9uRGVsZWdhdGUKLS0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVz
cG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9u
SGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFu
ZGxlcgotewotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4g
ewotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVj
b21lRG93bmxvYWQpOwotICAgIH0pOwotfQotQGVuZAotCi1AaW50ZXJmYWNlIEFzeW5jaHJvbm91
c0Rvd25sb2FkRGVsZWdhdGUgOiBOU09iamVjdCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4KLUBlbmQK
LQotQGltcGxlbWVudGF0aW9uIEFzeW5jaHJvbm91c0Rvd25sb2FkRGVsZWdhdGUKLQotLSAodm9p
ZClfZG93bmxvYWREaWRTdGFydDooX1dLRG93bmxvYWQgKilkb3dubG9hZAotewotICAgIGlzRG9u
ZSA9IHRydWU7Ci19Ci0KLUBlbmQKLQotVEVTVChfV0tEb3dubG9hZCwgQXN5bmNocm9ub3VzRG93
bmxvYWRQb2xpY3kpCi17Ci0gICAgcnVuVGVzdChhZG9wdE5TKFtbQXN5bmNocm9ub3VzRG93bmxv
YWROYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKS5nZXQoKSwgYWRvcHROUyhbW0FzeW5j
aHJvbm91c0Rvd25sb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKS5nZXQoKSwgc291cmNlVVJMKTsK
LX0KLQogI2VuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2MjdjODhjNzk1YjVkZDg0ODYwYjY1NTliYzIx
MmZlYjMwMjA3YWYwLi5jYmRiYmMwOTY4OTY4ODY1MWQxYzQ1Y2E1ZmI0MGZlM2UyNDcxYTg3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDUgKzEsMjAgQEAKIDIwMTUtMDgtMjYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBw
bGUuY29tPgogCisgICAgICAgIFtDb250ZW50IEZpbHRlcmluZ10gRGV0ZXJtaW5lIG5hdmlnYXRp
b24gYW5kIGNvbnRlbnQgcG9saWN5IGJlZm9yZSBjb250aW51aW5nIHRvIGZpbHRlciBhIGxvYWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODUwNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRl
c3RzIGZvciB3aGF0IGhhcHBlbnMgaWYgdGhlIGNvbnRlbnQgZmlsdGVyIGRvZXMgbm90IG1ha2Ug
YSBkZWNpc2lvbiB3aGVuIHRoZSBsb2FkIGZpbmlzaGVzLgorCisgICAgICAgICogY29udGVudGZp
bHRlcmluZy9hbGxvdy1uZXZlci1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb250
ZW50ZmlsdGVyaW5nL2FsbG93LW5ldmVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNvbnRlbnRm
aWx0ZXJpbmcvYmxvY2stbmV2ZXItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogY29u
dGVudGZpbHRlcmluZy9ibG9jay1uZXZlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb250ZW50
ZmlsdGVyaW5nL3Jlc291cmNlcy9jb250ZW50ZmlsdGVyaW5nLmpzOgorCisyMDE1LTA4LTI2ICBB
bmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKwogICAgICAgICBSRUdSRVNTSU9OIChyMTg4
OTg3KTogaW1wb3J0ZWQvbW96aWxsYS9zdmcvZmlsdGVycy9mZUNvbnZvbHZlTWF0cml4LTEuc3Zn
IGZhaWxzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDg0OTcKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29udGVudGZpbHRlcmluZy9hbGxvdy1u
ZXZlci1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvY29udGVudGZpbHRlcmluZy9hbGxvdy1u
ZXZlci1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0NTExMmZhMGZkZmYyZWIyNmUyZGIwN2Zj
MDNlZGQ5MWE4MmY5MGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb250ZW50Zmls
dGVyaW5nL2FsbG93LW5ldmVyLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvcGFzcy5odG1sIj48L2lmcmFtZT4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbnRlbnRmaWx0ZXJpbmcvYWxsb3ctbmV2ZXIuaHRtbCBi
L0xheW91dFRlc3RzL2NvbnRlbnRmaWx0ZXJpbmcvYWxsb3ctbmV2ZXIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hZTg4MWI3ZWZjMjI5Zjc3ZGJmYmM0NGI0YmI4NzM2YzUyY2QxNGUxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY29udGVudGZpbHRlcmluZy9hbGxvdy1uZXZlci5odG1sCkBAIC0w
LDAgKzEsOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NvbnRl
bnRmaWx0ZXJpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxz
KSB7CisgICAgdmFyIHNldHRpbmdzID0gd2luZG93LmludGVybmFscy5tb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOworICAgIHRlc3RDb250ZW50RmlsdGVyaW5nKC8qIGRlY2lzaW9uUG9pbnQgKi9z
ZXR0aW5ncy5ERUNJU0lPTl9QT0lOVF9ORVZFUiwgLyogZGVjaXNpb24gKi9zZXR0aW5ncy5ERUNJ
U0lPTl9BTExPVyk7Cit9Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbnRl
bnRmaWx0ZXJpbmcvYmxvY2stbmV2ZXItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2NvbnRl
bnRmaWx0ZXJpbmcvYmxvY2stbmV2ZXItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDUxMTJm
YTBmZGZmMmViMjZlMmRiMDdmYzAzZWRkOTFhODJmOTBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvY29udGVudGZpbHRlcmluZy9ibG9jay1uZXZlci1leHBlY3RlZC5odG1sCkBAIC0w
LDAgKzEsMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3Bhc3Mu
aHRtbCI+PC9pZnJhbWU+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb250ZW50ZmlsdGVyaW5n
L2Jsb2NrLW5ldmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9jb250ZW50ZmlsdGVyaW5nL2Jsb2NrLW5l
dmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDg2NWUxYTk4NWE2Zjg1ZDBmMTFhZGJlMjA0NGJiZTI4MjYz
ODY4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbnRlbnRmaWx0ZXJpbmcvYmxv
Y2stbmV2ZXIuaHRtbApAQCAtMCwwICsxLDggQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9jb250ZW50ZmlsdGVyaW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citp
ZiAod2luZG93LmludGVybmFscykgeworICAgIHZhciBzZXR0aW5ncyA9IHdpbmRvdy5pbnRlcm5h
bHMubW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKKyAgICB0ZXN0Q29udGVudEZpbHRlcmluZygv
KiBkZWNpc2lvblBvaW50ICovc2V0dGluZ3MuREVDSVNJT05fUE9JTlRfTkVWRVIsIC8qIGRlY2lz
aW9uICovc2V0dGluZ3MuREVDSVNJT05fQkxPQ0spOworfQorPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jb250ZW50ZmlsdGVyaW5nL3Jlc291cmNlcy9jb250ZW50ZmlsdGVyaW5n
LmpzIGIvTGF5b3V0VGVzdHMvY29udGVudGZpbHRlcmluZy9yZXNvdXJjZXMvY29udGVudGZpbHRl
cmluZy5qcwppbmRleCBiNjgzMzliOTI5NmJmMjUzN2JhOGMxNjU3OWJiNjA5MDk2OWQxNzE2Li45
YWU0ZmVkYTRhM2JkMDYzMTcxNzkwZWRjZTgwNDU2OTNlOGFiMzViIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9jb250ZW50ZmlsdGVyaW5nL3Jlc291cmNlcy9jb250ZW50ZmlsdGVyaW5nLmpzCisr
KyBiL0xheW91dFRlc3RzL2NvbnRlbnRmaWx0ZXJpbmcvcmVzb3VyY2VzL2NvbnRlbnRmaWx0ZXJp
bmcuanMKQEAgLTUsNyArNSwxMiBAQCBmdW5jdGlvbiBfZG9UZXN0KGRlY2lzaW9uUG9pbnQsIGRl
Y2lzaW9uLCBkZWNpZGVBZnRlclVuYmxvY2tSZXF1ZXN0KQogICAgIHNldHRpbmdzLmRlY2lzaW9u
UG9pbnQgPSBkZWNpc2lvblBvaW50OwogICAgIHNldHRpbmdzLmRlY2lzaW9uID0gKGRlY2lkZUFm
dGVyVW5ibG9ja1JlcXVlc3QgPyBzZXR0aW5ncy5ERUNJU0lPTl9CTE9DSyA6IGRlY2lzaW9uKTsK
ICAgICAKLSAgICB2YXIgYmxvY2tlZFN0cmluZ1RleHQgPSAoZGVjaXNpb24gPT09IHNldHRpbmdz
LkRFQ0lTSU9OX0FMTE9XID8gIkZBSUwiIDogIlBBU1MiKTsKKyAgICB2YXIgYmxvY2tlZFN0cmlu
Z1RleHQ7CisgICAgaWYgKGRlY2lzaW9uUG9pbnQgPT09IHNldHRpbmdzLkRFQ0lTSU9OX1BPSU5U
X05FVkVSIHx8IGRlY2lzaW9uID09PSBzZXR0aW5ncy5ERUNJU0lPTl9BTExPVykKKyAgICAgICAg
YmxvY2tlZFN0cmluZ1RleHQgPSAiRkFJTCI7CisgICAgZWxzZQorICAgICAgICBibG9ja2VkU3Ry
aW5nVGV4dCA9ICAiUEFTUyI7CisKICAgICBpZiAoZGVjaWRlQWZ0ZXJVbmJsb2NrUmVxdWVzdCkg
ewogICAgICAgICBzZXR0aW5ncy51bmJsb2NrUmVxdWVzdERlY2lzaW9uID0gZGVjaXNpb247CiAg
ICAgICAgIHNldHRpbmdzLmJsb2NrZWRTdHJpbmcgPSAiPCFET0NUWVBFIGh0bWw+PHNjcmlwdD5m
dW5jdGlvbiB1bmJsb2NrUmVxdWVzdERlbmllZCgpIHsgd2luZG93LnRvcC5wb3N0TWVzc2FnZSgn
dW5ibG9ja3JlcXVlc3RkZW5pZWQnLCAnKicpOyB9PC9zY3JpcHQ+PGJvZHk+IiArIGJsb2NrZWRT
dHJpbmdUZXh0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260047</attachid>
            <date>2015-08-27 00:53:13 -0700</date>
            <delta_ts>2015-08-31 13:53:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148506-20150827005301.patch</filename>
            <type>text/plain</type>
            <size>66686</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWFmMTI0MDAxMzkyZjY1
YTE5OWYzMTViMzQwN2U4ZDg2YzJmMzFjMi4uYzJkZmNmZjIxMTNjNzJjNGRiMjI5MzQwYmQwZWZj
NTY4OTI4MDA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDE1LTA4LTI2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29udGVudCBGaWx0ZXJpbmdd
IERldGVybWluZSBuYXZpZ2F0aW9uIGFuZCBjb250ZW50IHBvbGljeSBiZWZvcmUgY29udGludWlu
ZyB0byBmaWx0ZXIgYSBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDg1MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQcmlvciB0byB0aGlzIGNoYW5nZSwgQ29udGVudEZpbHRlciB3b3VsZCBoaWRl
IGZyb20gRG9jdW1lbnRMb2FkZXIgYWxsIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IGNhbGxiYWNr
cyB1bnRpbAorICAgICAgICBhIGRlY2lzaW9uIHdhcyBtYWRlLCB0aGVuIHJlcGxheSB0aGUgbWlz
c2VkIGNhbGxiYWNrcy4gVGhpcyBhcHByb2FjaCBpbnRlcmFjdGVkIHBvb3JseSB3aXRoIHNvbWUg
ZmVhdHVyZXMgb2YKKyAgICAgICAgdGhlIGxvYWRlciwgbm90YWJseSBhcHBjYWNoZSBhbmQgZG93
bmxvYWRzLiBJbiB0aGUgY2FzZSBvZiBhcHBjYWNoZSwgRG9jdW1lbnRMb2FkZXIgbWlnaHQgbm90
IGhhdmUgYSBjaGFuY2UgdG8KKyAgICAgICAgY2hlY2sgZm9yIHN1YnN0aXR1dGUgZGF0YSB1bnRp
bCB0aGUgb3JpZ2luYWwgbG9hZCBoYXMgZmluaXNoZWQsIHdhc3RpbmcgYmFuZHdpZHRoLCBhbmQg
bWlnaHQgcmVjZWl2ZSBkdXBsaWNhdGUKKyAgICAgICAgb3Igb3V0LW9mLW9yZGVyIGNhbGxiYWNr
cy4gSW4gdGhlIGNhc2Ugb2YgZG93bmxvYWRzLCBpdCB3b3VsZCBvZnRlbiBiZSB0b28gbGF0ZSB0
byBjb252ZXJ0IHRoZSBleGlzdGluZworICAgICAgICBjb25uZWN0aW9uIHRvIGEgZG93bmxvYWQs
IGxlYWRpbmcgdG8gcmVzdGFydGVkIGRvd25sb2FkcyBvciBvdXRyaWdodCBmYWlsdXJlcy4KKwor
ICAgICAgICBCYW5kYWlkcyB3ZXJlIHB1dCBpbiBwbGFjZSBmb3IgdGhlc2UgaXNzdWVzIGluIHIx
ODgxNTAsIHIxODg0ODYsIGFuZCByMTg4ODUxIHRvIGZpeCBjcmFzaGVzIG9yIHNlcmlvdXMKKyAg
ICAgICAgcmVncmVzc2lvbnMgaW4gYmVoYXZpb3IsIGJ1dCB0aGVzZSB3ZXJlbid0IGNvbXBsZXRl
IGZpeGVzLiBUaGV5IGRpZCBub3Qgc29sdmUgYW55IG9mIHRoZSBkdXBsaWNhdGUgZGF0YSBsb2Fk
aW5nCisgICAgICAgIHByb2JsZW1zLCBhbmQgdGhleSBkaWQgbm90IG1ha2UgZG93bmxvYWRzIHdv
cmsgcmVsaWFibHkgaW4gYWxsIGNhc2VzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcm9sbHMgb3V0
IHRoZSBiYW5kYWlkcyAoYnV0IGtlZXBzIHRoZWlyIHRlc3RzKSBhbmQgcmVwbGFjZXMgdGhlbSB3
aXRoIGEgbW9yZSByb2J1c3QgZml4LiBJbnN0ZWFkIG9mCisgICAgICAgIGhpZGluZyBjYWxsYmFj
a3MgZnJvbSBEb2N1bWVudExvYWRlciwgQ29udGVudEZpbHRlciBub3cgZGVsaXZlcnMgd2lsbFNl
bmRSZXF1ZXN0KCksIHJlZGlyZWN0UmVjZWl2ZWQoKSwgYW5kCisgICAgICAgIHJlc3BvbnNlUmVj
ZWl2ZWQoKSB0byBEb2N1bWVudExvYWRlciBpbW1lZGlhdGVseSwgYW5kIGNhbmNlbHMgZmlsdGVy
aW5nIGlmIERvY3VtZW50TG9hZGVyIGRlY2lkZXMgdG8gaWdub3JlIHRoZQorICAgICAgICBsb2Fk
LCBkb3dubG9hZCBpdCwgb3IgbG9hZCBzdWJzdGl0dXRlIGRhdGEuIENvbnRlbnRGaWx0ZXIgY29u
dGludWVzIHRvIGJ1ZmZlciBpbmNvbWluZyBkYXRhIHRvIHByZXZlbnQgcGFydGlhbAorICAgICAg
ICByZW5kZXJpbmcgb2YgYmxvY2tlZCBjb250ZW50LgorCisgICAgICAgIFRoZSBleGlzdGluZyB0
ZXN0cyBmb3IgcjE4ODE1MCBhbmQgcjE4ODg1MSB3ZXJlIGtlcHQsIHRoZSB0ZXN0IGZvciByMTg4
NDg2IHdhcyByZXdyaXR0ZW4gdG8gYmUgc3BlY2lmaWMgdG8KKyAgICAgICAgY29udGVudCBmaWx0
ZXJpbmcsIGFuZCBuZXcgdGVzdHMgd2VyZSBhZGRlZCB0byBjb3ZlciB0aGUgY2FzZSB3aGVyZSBD
b250ZW50RmlsdGVyIGlzIHN0aWxsIHVuZGVjaWRlZCBhZnRlciBhCisgICAgICAgIGxvYWQgZmlu
aXNoZXMuCisKKyAgICAgICAgVGVzdHM6IGNvbnRlbnRmaWx0ZXJpbmcvYWxsb3ctbmV2ZXIuaHRt
bAorICAgICAgICAgICAgICAgY29udGVudGZpbHRlcmluZy9ibG9jay1uZXZlci5odG1sCisgICAg
ICAgICAgICAgICBDb250ZW50RmlsdGVyaW5nLkFsbG93RG93bmxvYWRBZnRlckFkZERhdGEKKyAg
ICAgICAgICAgICAgIENvbnRlbnRGaWx0ZXJpbmcuQWxsb3dEb3dubG9hZEFmdGVyRmluaXNoZWRB
ZGRpbmdEYXRhCisgICAgICAgICAgICAgICBDb250ZW50RmlsdGVyaW5nLkFsbG93RG93bmxvYWRB
ZnRlclJlZGlyZWN0CisgICAgICAgICAgICAgICBDb250ZW50RmlsdGVyaW5nLkFsbG93RG93bmxv
YWRBZnRlclJlc3BvbnNlCisgICAgICAgICAgICAgICBDb250ZW50RmlsdGVyaW5nLkFsbG93RG93
bmxvYWRBZnRlcldpbGxTZW5kUmVxdWVzdAorICAgICAgICAgICAgICAgQ29udGVudEZpbHRlcmlu
Zy5BbGxvd0Rvd25sb2FkTmV2ZXIKKyAgICAgICAgICAgICAgIENvbnRlbnRGaWx0ZXJpbmcuQmxv
Y2tEb3dubG9hZEFmdGVyQWRkRGF0YQorICAgICAgICAgICAgICAgQ29udGVudEZpbHRlcmluZy5C
bG9ja0Rvd25sb2FkQWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEKKyAgICAgICAgICAgICAgIENvbnRl
bnRGaWx0ZXJpbmcuQmxvY2tEb3dubG9hZEFmdGVyUmVkaXJlY3QKKyAgICAgICAgICAgICAgIENv
bnRlbnRGaWx0ZXJpbmcuQmxvY2tEb3dubG9hZEFmdGVyUmVzcG9uc2UKKyAgICAgICAgICAgICAg
IENvbnRlbnRGaWx0ZXJpbmcuQmxvY2tEb3dubG9hZEFmdGVyV2lsbFNlbmRSZXF1ZXN0CisgICAg
ICAgICAgICAgICBDb250ZW50RmlsdGVyaW5nLkJsb2NrRG93bmxvYWROZXZlcgorCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjaXNpb25Qb2lu
dCk6IFRhdWdodCB0byBoYW5kbGUgRGVjaXNpb25Qb2ludDo6TmV2ZXIuCisgICAgICAgIChXZWJD
b3JlOjpKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOiBEaXR0
by4KKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RmlsdGVyOjpjcmVhdGVJZkVuYWJsZWQpOiBSZW5hbWVkIGZyb20gY3JlYXRlSWZO
ZWVkZWQsIGFuZCBjaGFuZ2VkIHRvIHRha2UgYSBEb2N1bWVudExvYWRlciYKKyAgICAgICAgaW5z
dGVhZCBvZiBhIERlY2lzaW9uRnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50Rmls
dGVyOjpDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OnJl
c3BvbnNlUmVjZWl2ZWQpOiBJZiBtX3N0YXRlICE9IEJsb2NrZWQgYWZ0ZXIgZmlsdGVyaW5nLCBj
YWxsIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKCkuCisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RmlsdGVyOjpkYXRhUmVjZWl2ZWQpOiBJZiBtX3N0YXRlID09IEFsbG93ZWQgYWZ0
ZXIgZmlsdGVyaW5nLCBkZWxpdmVyIGJ1ZmZlcmVkIGRhdGEgdG8gRG9jdW1lbnRMb2FkZXIuCisg
ICAgICAgIElmIG5vIGZpbHRlcmluZyB3YXMgbmVjZXNzYXJ5LCBjYWxsIERvY3VtZW50TG9hZGVy
OjpkYXRhUmVjZWl2ZWQoKSBkaXJlY3RseS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXI6OnJlZGlyZWN0UmVjZWl2ZWQpOiBJZiBtX3N0YXRlICE9IEJsb2NrZWQgYWZ0ZXIgZmlsdGVy
aW5nLCBjYWxsIERvY3VtZW50TG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKCkuCisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpub3RpZnlGaW5pc2hlZCk6IElmIGFuIGVycm9yIG9jY3Vy
ZWQsIGNhbGwgRG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkgaW1tZWRpYXRlbHkgYW5k
IHJldHVybi4KKyAgICAgICAgSWYgbV9zdGF0ZSAhPSBCbG9ja2VkIGFmdGVyIGZpbHRlcmluZywg
ZGVsaXZlciBidWZmZXJlZCBkYXRhIHRvIERvY3VtZW50TG9hZGVyIGFuZCBjYWxsIERvY3VtZW50
TG9hZGVyOjpub3RpZnlGaW5pc2hlZCgpLgorICAgICAgICBJZiBubyBmaWx0ZXJpbmcgd2FzIG5l
Y2Vzc2FyeSBhbmQgbV9zdGF0ZSAhPSBCbG9ja2VkLCBjYWxsIERvY3VtZW50TG9hZGVyOjpub3Rp
ZnlGaW5pc2hlZCgpIGRpcmVjdGx5LgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
ZGlkRGVjaWRlKTogQ2FsbGVkIERvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkRGVjaWRl
KCkgaW5zdGVhZCBvZiBtX2RlY2lzaW9uRnVuY3Rpb24oKS4KKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOiBBZGRlZCBhIGhlbHBlciBmdW5jdGlv
biB0byBkZWxpdmVyIGJ1ZmZlcmVkIGRhdGEgdG8gRG9jdW1lbnRMb2FkZXIuCisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpjcmVhdGVJZk5lZWRlZCk6IFJlbmFtZWQgdG8gY3JlYXRl
SWZFbmFibGVkKCkuCisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OkRvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
Ojp3aWxsU2VuZFJlcXVlc3QpOiBTdG9wcGVkIGFzc2VydGluZyB0aGF0IHJlZGlyZWN0UmVzcG9u
c2UgaXMgbnVsbCBhbmQgbWFkZSBpdCBwYXJ0IG9mCisgICAgICAgIHRoZSBpZiBjb25kaXRpb24g
aW5zdGVhZCwgc2luY2Ugd2lsbFNlbmRSZXF1ZXN0KCkgd2lsbCBub3cgYmUgY2FsbGVkIG9uIHJl
ZGlyZWN0cyB3aGVuIHRoZXJlIGlzIGFuIGFjdGl2ZSBDb250ZW50RmlsdGVyLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6IENhbGxl
ZCBiZWNvbWVNYWluUmVzb3VyY2VDbGllbnQoKSBpbnN0ZWFkIG9mIGJlY29tZU1haW5SZXNvdXJj
ZUNsaWVudElmRmlsdGVyQWxsb3dzKCkuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KTogUmVuYW1lZCBmcm9tIGJlY29tZU1haW5SZXNv
dXJjZUNsaWVudElmRmlsdGVyQWxsb3dzKCkuCisgICAgICAgIE9ubHkgY2FsbGVkIENvbnRlbnRG
aWx0ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKCkgaWYgdGhlIGZpbHRlciBzdGF0ZSBp
cyBJbml0aWFsaXplZCwgc2luY2UgQ29udGVudEZpbHRlcgorICAgICAgICBtaWdodCBoYXZlIGFs
cmVhZHkgbWFkZSBhIGRlY2lzaW9uIGluIHdpbGxTZW5kUmVxdWVzdCgpLgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWREZWNpZGUpOiBTdG9wcGVkIGRl
bGV0aW5nIG1fY29udGVudEZpbHRlciwgc2luY2UgaXQgd2lsbCBjb250aW51ZSB0byBkZWxpdmVy
IGNhbGxiYWNrcworICAgICAgICBldmVuIGFmdGVyIG1ha2luZyBhIGRlY2lzaW9uLiBGaXhlZCBh
IGJ1ZyB3aGVyZSB3ZSB3ZXJlIGNyZWF0aW5nIHR3byBjb3BpZXMgb2YgQ29udGVudEZpbHRlcidz
IHJlcGxhY2VtZW50IGRhdGEuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3lu
dGhldGljUmVkaXJlY3RSZWNlaXZlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50SWZGaWx0ZXJBbGxvd3MpOiBSZW5h
bWVkIHRvIGJlY29tZU1haW5SZXNvdXJjZUNsaWVudCgpLgorICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVx
dWVzdEludGVybmFsKTogUmVtb3ZlZCBwYXJ0IG9mIHIxODg4NTEuCisgICAgICAgICogbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOiBSZW1vdmVkIHBhcnQgb2YgcjE4ODQ4Ni4KKyAgICAg
ICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3Vy
Y2U6OmRpZEFkZENsaWVudCk6IFJlbW92ZWQgcGFydCBvZiByMTg4MTUwLgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ6OnN5bnRoZXRpY1JlZGlyZWN0UmVjZWl2ZWQpOiBSZW1v
dmVkIHBhcnQgb2YgcjE4ODE1MC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MuaDogRGVmaW5lZCBEZWNpc2lvblBvaW50OjpOZXZlci4KKyAgICAgICAgKiB0ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaWRsOiBEZWZpbmVkIERFQ0lTSU9OX1BPSU5U
X05FVkVSLgorCiAyMDE1LTA4LTI2ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wbGVtZW50IHRyYWNraW5nIG9mIGFjdGl2
ZSBzdHlsZXNoZWV0cyBpbiB0aGUgZnJvbnRlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAyNGViYWYz
ZWM4NGQ1MDVjNDI4MWZlMWE0YmVmYTJjYjNmZmM5MzM5Li4xYTYzMmNkNzU5ZDkzMzM1ODI4Njg0
OGJlNTQ1MTRiZTBlOWNkYWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTUtMDgtMjYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtDb250
ZW50IEZpbHRlcmluZ10gRGV0ZXJtaW5lIG5hdmlnYXRpb24gYW5kIGNvbnRlbnQgcG9saWN5IGJl
Zm9yZSBjb250aW51aW5nIHRvIGZpbHRlciBhIGxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODUwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIERlbGV0ZWQgcGFydHMgb2YgcjE4ODQ4NiBhbmQgcjE4
ODg1MS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAg
ICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25s
b2FkKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCk6CisKIDIwMTUtMDgtMjYgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IFNhZmFyaSBuYXZp
Z2F0ZXMgYWZ0ZXIgYSBjYW5jZWxsZWQgZm9yY2UgY2xpY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBj
M2M2MTFhYjRlZmExMThlMmY0ZjIwMTdkN2Q1YWUxMzQ5Zjg5YTM2Li5iMTYyM2NjYjgxZWEwZjMx
MGE4YjczZTg3NDE1MTQ1MGUxZTkzMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTUtMDgtMjcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAg
IFtDb250ZW50IEZpbHRlcmluZ10gRGV0ZXJtaW5lIG5hdmlnYXRpb24gYW5kIGNvbnRlbnQgcG9s
aWN5IGJlZm9yZSBjb250aW51aW5nIHRvIGZpbHRlciBhIGxvYWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODUwNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlbGV0ZWQgcGFydCBvZiByMTg4ODUxLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oOgorCiAyMDE1LTA4LTIzICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQ29udGVudCBGaWx0ZXJpbmddIFJFR1JFU1NJT04gKHIxODIzNTYp
OiBQcm92aXNpb25hbCBVUkwgaXMgaW5jb3JyZWN0IGluIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHdoZW4gQ29udGVudCBGaWx0ZXJpbmcgaXMgZW5h
YmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDI4NDVkOWM4MTBkZTdkNTBiNWZhN2YzNGM5OTFjYjQ4OTkyMDVl
NGUuLjk5NDA4YWNmMDRjYjUwMmE1ZmI4ZGYwMTU0NWUwNGZiZTQxYmFhNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAxNS0wOC0yNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5j
b20+CisKKyAgICAgICAgW0NvbnRlbnQgRmlsdGVyaW5nXSBEZXRlcm1pbmUgbmF2aWdhdGlvbiBh
bmQgY29udGVudCBwb2xpY3kgYmVmb3JlIGNvbnRpbnVpbmcgdG8gZmlsdGVyIGEgbG9hZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTA2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVsZXRlZCBwYXJ0
cyBvZiByMTg4NDg2IGFuZCByMTg4ODUxLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRv
RG93bmxvYWQpOgorCiAyMDE1LTA4LTI2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIEZpeCBjcmFzaCBkdWUgdG8gYW5pbWF0aW9uRGlkRW5kIGNhbGxl
ZCBvbiBkZWFsbG9jYXRlZCBSZW1vdGVMYXllclRyZWVIb3N0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Q3VzdG9tLmNwcAppbmRleCA4MzMxODc1MTkwZWVhOTgzNzFiZmI2ZWVlYzAwNzU1YjkyZmY5YTgy
Li5kMDA3OGE2MmY1ZDBiOWE0NWNjNzQ2Zjk1NThiODZiZjMyMTY0M2Q5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nc0N1c3RvbS5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgY29uc3QgdWludDhfdCBkZWNp
c2lvblBvaW50QWZ0ZXJSZWRpcmVjdCA9IDE7CiBjb25zdCB1aW50OF90IGRlY2lzaW9uUG9pbnRB
ZnRlclJlc3BvbnNlID0gMjsKIGNvbnN0IHVpbnQ4X3QgZGVjaXNpb25Qb2ludEFmdGVyQWRkRGF0
YSA9IDM7CiBjb25zdCB1aW50OF90IGRlY2lzaW9uUG9pbnRBZnRlckZpbmlzaGVkQWRkaW5nRGF0
YSA9IDQ7Citjb25zdCB1aW50OF90IGRlY2lzaW9uUG9pbnROZXZlciA9IDU7CiBjb25zdCB1aW50
OF90IGRlY2lzaW9uQWxsb3cgPSAwOwogY29uc3QgdWludDhfdCBkZWNpc2lvbkJsb2NrID0gMTsK
IApAQCAtNjAsNiArNjEsOCBAQCBKU1ZhbHVlIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
ZGVjaXNpb25Qb2ludChFeGVjU3RhdGUqKSBjb25zdAogICAgICAgICByZXR1cm4ganNOdW1iZXIo
ZGVjaXNpb25Qb2ludEFmdGVyQWRkRGF0YSk7CiAgICAgY2FzZSBEZWNpc2lvblBvaW50OjpBZnRl
ckZpbmlzaGVkQWRkaW5nRGF0YToKICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGRlY2lzaW9uUG9p
bnRBZnRlckZpbmlzaGVkQWRkaW5nRGF0YSk7CisgICAgY2FzZSBEZWNpc2lvblBvaW50OjpOZXZl
cjoKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGRlY2lzaW9uUG9pbnROZXZlcik7CiAgICAgfQog
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04OCw2ICs5MSw5IEBAIHZvaWQgSlNNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBvaW50KEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2YWx1CiAgICAgY2FzZSBkZWNpc2lvblBvaW50QWZ0ZXJGaW5pc2hlZEFkZGluZ0Rh
dGE6CiAgICAgICAgIGltcGwoKS5zZXREZWNpc2lvblBvaW50KERlY2lzaW9uUG9pbnQ6OkFmdGVy
RmluaXNoZWRBZGRpbmdEYXRhKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgZGVjaXNpb25Q
b2ludE5ldmVyOgorICAgICAgICBpbXBsKCkuc2V0RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50
OjpOZXZlcik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBTdHJpbmc6OmZvcm1hdCgiJXUgaXMgbm90IGEgdmFsaWQgZGVjaXNpb25Qb2ludCB2YWx1
ZS4iLCBuYXRpdmVWYWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3Bw
CmluZGV4IDMyYTg3M2UwZDQwMTdhYTNmNGVhZWI0ODdiMTI3NzQ5ZDI4ZDRlMGUuLjI1ZDcwZWUy
OWQyYWYzN2IwZTM2ZTJmMDI5MGY5NzhiYmVhNjQyMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJh
d1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgiCisj
aW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaCIKICNpbmNsdWRlICJQYXJlbnRhbENv
bnRyb2xzQ29udGVudEZpbHRlci5oIgpAQCAtNTgsNyArNTksNyBAQCBWZWN0b3I8Q29udGVudEZp
bHRlcjo6VHlwZT4mIENvbnRlbnRGaWx0ZXI6OnR5cGVzKCkKICAgICByZXR1cm4gdHlwZXM7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBDb250ZW50RmlsdGVyOjpjcmVhdGVJ
Zk5lZWRlZChEZWNpc2lvbkZ1bmN0aW9uIGRlY2lzaW9uRnVuY3Rpb24pCitzdGQ6OnVuaXF1ZV9w
dHI8Q29udGVudEZpbHRlcj4gQ29udGVudEZpbHRlcjo6Y3JlYXRlSWZFbmFibGVkKERvY3VtZW50
TG9hZGVyJiBkb2N1bWVudExvYWRlcikKIHsKICAgICBDb250YWluZXIgZmlsdGVyczsKICAgICBm
b3IgKGF1dG8mIHR5cGUgOiB0eXBlcygpKSB7CkBAIC03MywxMiArNzQsMTIgQEAgc3RkOjp1bmlx
dWVfcHRyPENvbnRlbnRGaWx0ZXI+IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZUlmTmVlZGVkKERlY2lz
aW9uRnVuY3Rpb24gZGUKICAgICBpZiAoZmlsdGVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudEZpbHRlcj4o
V1RGOjptb3ZlKGZpbHRlcnMpLCBXVEY6Om1vdmUoZGVjaXNpb25GdW5jdGlvbikpOworICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRGaWx0ZXI+KFdURjo6bW92ZShmaWx0ZXJzKSwg
ZG9jdW1lbnRMb2FkZXIpOwogfQogCi1Db250ZW50RmlsdGVyOjpDb250ZW50RmlsdGVyKENvbnRh
aW5lciBjb250ZW50RmlsdGVycywgRGVjaXNpb25GdW5jdGlvbiBkZWNpc2lvbkZ1bmN0aW9uKQor
Q29udGVudEZpbHRlcjo6Q29udGVudEZpbHRlcihDb250YWluZXIgY29udGVudEZpbHRlcnMsIERv
Y3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlcikKICAgICA6IG1fY29udGVudEZpbHRlcnMgeyBX
VEY6Om1vdmUoY29udGVudEZpbHRlcnMpIH0KLSAgICAsIG1fZGVjaXNpb25GdW5jdGlvbiB7IFdU
Rjo6bW92ZShkZWNpc2lvbkZ1bmN0aW9uKSB9CisgICAgLCBtX2RvY3VtZW50TG9hZGVyIHsgZG9j
dW1lbnRMb2FkZXIgfQogewogICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ3JlYXRpbmcgQ29u
dGVudEZpbHRlciB3aXRoICV6dSBwbGF0Zm9ybSBjb250ZW50IGZpbHRlcihzKS5cbiIsIG1fY29u
dGVudEZpbHRlcnMuc2l6ZSgpKTsKICAgICBBU1NFUlQoIW1fY29udGVudEZpbHRlcnMuaXNFbXB0
eSgpKTsKQEAgLTE0NywzOSArMTQ4LDc4IEBAIFN0cmluZyBDb250ZW50RmlsdGVyOjp1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdCgpIGNvbnN0CiAKIHZvaWQgQ29udGVudEZpbHRlcjo6cmVzcG9u
c2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogeworICAgIEFTU0VSVChyZXNvdXJjZSk7CisgICAgQVNTRVJUKHJlc291
cmNlID09IG1fbWFpblJlc291cmNlKTsKKyAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6SW5p
dGlhbGl6ZWQpOwogICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNl
aXZlZCByZXNwb25zZSBmcm9tIDwlcz4uXG4iLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKS5hc2Np
aSgpLmRhdGEoKSk7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZyk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UuZ2V0
KCkpOwotICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFsmcmVzcG9uc2VdKFBs
YXRmb3JtQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikgewotICAgICAgICBjb250ZW50Rmls
dGVyLnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpOwotICAgIH0pOworCisgICAgaWYgKG1fc3Rh
dGUgPT0gU3RhdGU6OkZpbHRlcmluZykgeworICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVu
dGlsQmxvY2tlZChbJnJlc3BvbnNlXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0
ZXIpIHsKKyAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIucmVzcG9uc2VSZWNlaXZlZChyZXNwb25z
ZSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9j
a2VkKQorICAgICAgICBtX2RvY3VtZW50TG9hZGVyLnJlc3BvbnNlUmVjZWl2ZWQocmVzb3VyY2Us
IHJlc3BvbnNlKTsKIH0KIAogdm9pZCBDb250ZW50RmlsdGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogeworICAg
IEFTU0VSVChyZXNvdXJjZSk7CisgICAgQVNTRVJUKHJlc291cmNlID09IG1fbWFpblJlc291cmNl
KTsKKyAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6SW5pdGlhbGl6ZWQpOwogICAgIExPRyhD
b250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNlaXZlZCAlZCBieXRlcyBvZiBkYXRh
IGZyb20gPCVzPi5cbiIsIGxlbmd0aCwgcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCku
ZGF0YSgpKTsKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKTsKLSAgICBB
U1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNvdXJjZSA9PSBtX21haW5SZXNvdXJjZS5nZXQoKSk7
Ci0gICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoW2RhdGEsIGxlbmd0aF0oUGxh
dGZvcm1Db250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7Ci0gICAgICAgIGNvbnRlbnRGaWx0
ZXIuYWRkRGF0YShkYXRhLCBsZW5ndGgpOwotICAgIH0pOworCisgICAgaWYgKG1fc3RhdGUgPT0g
U3RhdGU6OkZpbHRlcmluZykgeworICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxv
Y2tlZChbZGF0YSwgbGVuZ3RoXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIp
IHsKKyAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRhLCBsZW5ndGgpOworICAg
ICAgICB9KTsKKworICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkKKyAgICAg
ICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoKnJlc291cmNlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKQorICAgICAgICBtX2Rv
Y3VtZW50TG9hZGVyLmRhdGFSZWNlaXZlZChyZXNvdXJjZSwgZGF0YSwgbGVuZ3RoKTsKIH0KIAog
dm9pZCBDb250ZW50RmlsdGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNv
dXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlKQogewotICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJp
bmcpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fbWFpblJlc291
cmNlLmdldCgpKTsKLSAgICB3aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZSk7CisgICAgQVNTRVJUKHJlc291cmNlKTsKKyAgICBBU1NFUlQocmVzb3VyY2UgPT0gbV9tYWlu
UmVzb3VyY2UpOworICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpJbml0aWFsaXplZCk7CisK
KyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKQorICAgICAgICB3aWxsU2VuZFJl
cXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisKKyAgICBpZiAobV9zdGF0ZSAhPSBT
dGF0ZTo6QmxvY2tlZCkKKyAgICAgICAgbV9kb2N1bWVudExvYWRlci5yZWRpcmVjdFJlY2VpdmVk
KHJlc291cmNlLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKIH0KIAogdm9pZCBDb250ZW50
RmlsdGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiB7CisgICAg
QVNTRVJUKHJlc291cmNlKTsKKyAgICBBU1NFUlQocmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2Up
OworICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpJbml0aWFsaXplZCk7CiAgICAgTE9HKENv
bnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRlcmluZyBtYWlu
IHJlc291cmNlIGF0IDwlcz4uXG4iLCByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5k
YXRhKCkpOwotICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpOwotICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fbWFpblJlc291cmNlLmdldCgpKTsK
LSAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbXShQbGF0Zm9ybUNvbnRlbnRG
aWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKLSAgICAgICAgY29udGVudEZpbHRlci5maW5pc2hlZEFk
ZGluZ0RhdGEoKTsKLSAgICB9KTsKKworICAgIGlmIChyZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgp
KSB7CisgICAgICAgIG1fZG9jdW1lbnRMb2FkZXIubm90aWZ5RmluaXNoZWQocmVzb3VyY2UpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRl
cmluZykgeworICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbXShQbGF0
Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgICAgIGNvbnRlbnRG
aWx0ZXIuZmluaXNoZWRBZGRpbmdEYXRhKCk7CisgICAgICAgIH0pOworCisgICAgICAgIGlmICht
X3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKQorICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0
YSgqcmVzb3VyY2UpOworICAgIH0KKworICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2Vk
KQorICAgICAgICBtX2RvY3VtZW50TG9hZGVyLm5vdGlmeUZpbmlzaGVkKHJlc291cmNlKTsKIH0K
IAogdm9pZCBDb250ZW50RmlsdGVyOjpmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChz
dGQ6OmZ1bmN0aW9uPHZvaWQoUGxhdGZvcm1Db250ZW50RmlsdGVyJik+IGZ1bmN0aW9uKQpAQCAt
MjEzLDEwICsyNTMsMTQgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3Rh
dGUpCiAgICAgQVNTRVJUKHN0YXRlID09IFN0YXRlOjpBbGxvd2VkIHx8IHN0YXRlID09IFN0YXRl
OjpCbG9ja2VkKTsKICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgZGVj
aWRlZCBsb2FkIHNob3VsZCBiZSAlcyBmb3IgbWFpbiByZXNvdXJjZSBhdCA8JXM+LlxuIiwgc3Rh
dGUgPT0gU3RhdGU6OkFsbG93ZWQgPyAiYWxsb3dlZCIgOiAiYmxvY2tlZCIsIG1fbWFpblJlc291
cmNlID8gbV9tYWluUmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpIDogIiIp
OwogICAgIG1fc3RhdGUgPSBzdGF0ZTsKKyAgICBtX2RvY3VtZW50TG9hZGVyLmNvbnRlbnRGaWx0
ZXJEaWREZWNpZGUoKTsKK30KIAotICAgIC8vIENhbGxpbmcgbV9kZWNpc2lvbkZ1bmN0aW9uIG1p
Z2h0IGRlbGV0ZSB8dGhpc3wuCi0gICAgaWYgKG1fZGVjaXNpb25GdW5jdGlvbikKLSAgICAgICAg
bV9kZWNpc2lvbkZ1bmN0aW9uKCk7Cit2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJj
ZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQoreworICAgIEFTU0VSVChyZXNvdXJjZS5k
YXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gQnVmZmVyRGF0YSk7CisgICAgY29uc3QgU2hhcmVkQnVm
ZmVyJiByZXNvdXJjZUJ1ZmZlciA9ICpyZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpOworICAgIG1f
ZG9jdW1lbnRMb2FkZXIuZGF0YVJlY2VpdmVkKCZyZXNvdXJjZSwgcmVzb3VyY2VCdWZmZXIuZGF0
YSgpLCByZXNvdXJjZUJ1ZmZlci5zaXplKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAppbmRleCBiNGU5ZGQ5YzBmZDZkOWJk
NmM5M2I4MWNhYWU5OTBiYzA0MjE2Yjc3Li5hMjA3Y2VkYjFlNzJiNDUxYjcyZmQyYmI5YzJmZTRi
ZDk5OTI0YzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKQEAgLTM3LDYg
KzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsK
IGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKK2NsYXNzIERvY3VtZW50TG9hZGVy
OwogY2xhc3MgUGxhdGZvcm1Db250ZW50RmlsdGVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCkBA
IC00Nyw4ICs0OCw3IEBAIGNsYXNzIENvbnRlbnRGaWx0ZXIgZmluYWwgOiBwcml2YXRlIENhY2hl
ZFJhd1Jlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
c3RhdGljIHZvaWQgYWRkVHlwZSgpIHsgdHlwZXMoKS5hcHBlbmQodHlwZTxUPigpKTsgfQogCi0g
ICAgdXNpbmcgRGVjaXNpb25GdW5jdGlvbiA9IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPjsKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IGNyZWF0ZUlmTmVlZGVkKERlY2lz
aW9uRnVuY3Rpb24pOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4g
Y3JlYXRlSWZFbmFibGVkKERvY3VtZW50TG9hZGVyJik7CiAgICAgfkNvbnRlbnRGaWx0ZXIoKSBv
dmVycmlkZTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1cmxTY2hlbWUoKSB7IHJldHVybiAi
eC1hcHBsZS1jb250ZW50LWZpbHRlciI7IH0KQEAgLTc2LDggKzc2LDggQEAgcHJpdmF0ZToKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVmVjdG9yPFR5cGU+JiB0eXBlcygpOwogCiAgICAgdXNp
bmcgQ29udGFpbmVyID0gVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRlbnRGaWx0
ZXI+PjsKLSAgICBmcmllbmQgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IHN0ZDo6bWFr
ZV91bmlxdWU8Q29udGVudEZpbHRlcj4oQ29udGFpbmVyJiYsIERlY2lzaW9uRnVuY3Rpb24mJik7
Ci0gICAgQ29udGVudEZpbHRlcihDb250YWluZXIsIERlY2lzaW9uRnVuY3Rpb24pOworICAgIGZy
aWVuZCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gc3RkOjptYWtlX3VuaXF1ZTxDb250
ZW50RmlsdGVyPihDb250YWluZXImJiwgRG9jdW1lbnRMb2FkZXImKTsKKyAgICBDb250ZW50Rmls
dGVyKENvbnRhaW5lciwgRG9jdW1lbnRMb2FkZXImKTsKIAogICAgIC8vIENhY2hlZFJhd1Jlc291
cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwpAQCAtODksOSArODksMTAgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoc3RkOjpmdW5j
dGlvbjx2b2lkKFBsYXRmb3JtQ29udGVudEZpbHRlciYpPik7CiAgICAgdm9pZCBkaWREZWNpZGUo
U3RhdGUpOworICAgIHZvaWQgZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYpOwog
CiAgICAgY29uc3QgQ29udGFpbmVyIG1fY29udGVudEZpbHRlcnM7Ci0gICAgY29uc3QgRGVjaXNp
b25GdW5jdGlvbiBtX2RlY2lzaW9uRnVuY3Rpb247CisgICAgRG9jdW1lbnRMb2FkZXImIG1fZG9j
dW1lbnRMb2FkZXI7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+
IG1fbWFpblJlc291cmNlOwogICAgIFBsYXRmb3JtQ29udGVudEZpbHRlciogbV9ibG9ja2luZ0Nv
bnRlbnRGaWx0ZXIgeyBudWxscHRyIH07CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpJbml0
aWFsaXplZCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXgg
OGNhOTdiYTc5ZTk3Mjc0ZDNjYzgxM2Q1Mjc5NjA2YmZlNzliNjU1Mi4uZGY2ZTkwYTlkYTJhYzcy
ODk1ZWQ3YmI2YTNhN2NiM2Q2OTIxMDI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgRG9jdW1lbnRMb2FkZXI6OkRvY3VtZW50
TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYK
ICAgICAsIG1fc3VicmVzb3VyY2VMb2FkZXJzQXJlUGFnZUNhY2hlQWNjZXB0YWJsZShmYWxzZSkK
ICAgICAsIG1fYXBwbGljYXRpb25DYWNoZUhvc3Qoc3RkOjptYWtlX3VuaXF1ZTxBcHBsaWNhdGlv
bkNhY2hlSG9zdD4oKnRoaXMpKQogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAgICAs
IG1fY29udGVudEZpbHRlcighc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpID8gQ29udGVudEZpbHRl
cjo6Y3JlYXRlSWZOZWVkZWQoc3RkOjpiaW5kKCZEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRl
ckRpZERlY2lkZSwgdGhpcykpIDogbnVsbHB0cikKKyAgICAsIG1fY29udGVudEZpbHRlcighc3Vi
c3RpdHV0ZURhdGEuaXNWYWxpZCgpID8gQ29udGVudEZpbHRlcjo6Y3JlYXRlSWZFbmFibGVkKCp0
aGlzKSA6IG51bGxwdHIpCiAjZW5kaWYKIHsKIH0KQEAgLTQ4OSwxNCArNDg5LDYgQEAgdm9pZCBE
b2N1bWVudExvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Us
IFJlc291cmNlUmVxdWVzdCYKICAgICB3aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RS
ZXNwb25zZSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OnN5bnRoZXRpY1JlZGlyZWN0UmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIGJvb2wmIHNob3VsZENv
bnRpbnVlKQotewotICAgIHJlZGlyZWN0UmVjZWl2ZWQocmVzb3VyY2UsIHJlcXVlc3QsIHJlZGly
ZWN0UmVzcG9uc2UpOwotCi0gICAgLy8gSWYgd2Ugd2lsbCBzb29uIHJlbW92ZSBvdXIgcmVmZXJl
bmNlIHRvIHRoZSBDYWNoZWRSYXdSZXNvdXJjZSBpbiBmYXZvciBvZiBhIFN1YnN0aXR1dGVEYXRh
IGxvYWQsIHdlIGRvbid0IHdhbnQgdG8gY29udGludWUgcmVjZWl2aW5nIHN5bnRoZXRpYyBDYWNo
ZWRSYXdSZXNvdXJjZSBjYWxsYmFja3MuCi0gICAgc2hvdWxkQ29udGludWUgPSAhbV9zdWJzdGl0
dXRlRGF0YS5pc1ZhbGlkKCk7Ci19Ci0KIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgLy8gTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBhc3Nl
cnRzIGhlcmUgYXMgdGhlcmUgYXJlIGZvciB0aGUgb3RoZXIgY2FsbGJhY2tzLiBUaGlzIGlzIGR1
ZSB0byB0aGUKQEAgLTU0NCw4ICs1MzYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZQogICAg
IH0KIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAgICBpZiAobV9jb250ZW50Rmls
dGVyKSB7Ci0gICAgICAgIEFTU0VSVChyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKTsKKyAgICBp
ZiAobV9jb250ZW50RmlsdGVyICYmIHJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpIHsKICAgICAg
ICAgbV9jb250ZW50RmlsdGVyLT53aWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RS
ZXNwb25zZSk7CiAgICAgICAgIGlmIChuZXdSZXF1ZXN0LmlzTnVsbCgpKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTQ2MiwxMSArMTQ1Myw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0
TG9hZGluZ01haW5SZXNvdXJjZSgpCiAgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCku
ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QodGhpcywgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRS
ZXNvdXJjZUxvYWRlciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpKTsKICAgICB9CiAKLSNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAgYmVjb21lTWFpblJlc291cmNlQ2xpZW50
SWZGaWx0ZXJBbGxvd3MoKTsKLSNlbHNlCi0gICAgbV9tYWluUmVzb3VyY2UtPmFkZENsaWVudCh0
aGlzKTsKLSNlbmRpZgorICAgIGJlY29tZU1haW5SZXNvdXJjZUNsaWVudCgpOwogCiAgICAgLy8g
QSBidW5jaCBvZiBoZWFkZXJzIGFyZSBzZXQgd2hlbiB0aGUgdW5kZXJseWluZyBSZXNvdXJjZUxv
YWRlciBpcyBjcmVhdGVkLCBhbmQgbV9yZXF1ZXN0IG5lZWRzIHRvIGluY2x1ZGUgdGhvc2UuCiAg
ICAgaWYgKG1haW5SZXNvdXJjZUxvYWRlcigpKQpAQCAtMTYwNCw2ICsxNTkxLDE4IEBAIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgRG9jdW1lbnRMb2FkZXI6OnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3lUb1Byb3BhCiAgICAgcmV0dXJuIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeTsKIH0KIAordm9pZCBEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50
KCkKK3sKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisgICAgaWYgKG1fY29udGVudEZp
bHRlciAmJiBtX2NvbnRlbnRGaWx0ZXItPnN0YXRlKCkgPT0gQ29udGVudEZpbHRlcjo6U3RhdGU6
OkluaXRpYWxpemVkKSB7CisgICAgICAgIC8vIENvbnRlbnRGaWx0ZXIgd2lsbCBzeW50aGVzaXpl
IENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IGNhbGxiYWNrcy4KKyAgICAgICAgbV9jb250ZW50Rmls
dGVyLT5zdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZSgqbV9tYWluUmVzb3VyY2UpOworICAgICAg
ICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgbV9tYWluUmVzb3VyY2UtPmFkZENsaWVudCh0
aGlzKTsKK30KKwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiB2b2lkIERvY3VtZW50
TG9hZGVyOjphZGRQZW5kaW5nQ29udGVudEV4dGVuc2lvblNoZWV0KGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgU3R5bGVTaGVldENvbnRlbnRzJiBzaGVldCkKIHsKQEAgLTE2MjAsMTYgKzE2MTks
NiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRQZW5kaW5nQ29udGVudEV4dGVuc2lvbkRpc3Bs
YXlOb25lU2VsZWN0b3IoY29uc3QgU3RyaW5nJgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpCi12b2lkIERvY3VtZW50TG9hZGVyOjpiZWNvbWVNYWluUmVzb3VyY2VDbGll
bnRJZkZpbHRlckFsbG93cygpCi17Ci0gICAgQVNTRVJUKG1fbWFpblJlc291cmNlKTsKLSAgICBp
ZiAobV9jb250ZW50RmlsdGVyKSB7Ci0gICAgICAgIEFTU0VSVChtX2NvbnRlbnRGaWx0ZXItPnN0
YXRlKCkgPT0gQ29udGVudEZpbHRlcjo6U3RhdGU6OkluaXRpYWxpemVkKTsKLSAgICAgICAgbV9j
b250ZW50RmlsdGVyLT5zdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZSgqbV9tYWluUmVzb3VyY2Up
OwotICAgIH0gZWxzZQotICAgICAgICBtX21haW5SZXNvdXJjZS0+YWRkQ2xpZW50KHRoaXMpOwot
fQotCiB2b2lkIERvY3VtZW50TG9hZGVyOjppbnN0YWxsQ29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyKENvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpCiB7CiAgICAgQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyIHsgY29udGVudEZpbHRlci51bmJsb2NrSGFuZGxl
cigpIH07CkBAIC0xNjUyLDIxICsxNjQxLDE3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRl
bnRGaWx0ZXJEaWREZWNpZGUoKQogICAgIHVzaW5nIFN0YXRlID0gQ29udGVudEZpbHRlcjo6U3Rh
dGU7CiAgICAgQVNTRVJUKG1fY29udGVudEZpbHRlcik7CiAgICAgQVNTRVJUKG1fY29udGVudEZp
bHRlci0+c3RhdGUoKSA9PSBTdGF0ZTo6QmxvY2tlZCB8fCBtX2NvbnRlbnRGaWx0ZXItPnN0YXRl
KCkgPT0gU3RhdGU6OkFsbG93ZWQpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVy
PiBjb250ZW50RmlsdGVyOwotICAgIHN0ZDo6c3dhcChjb250ZW50RmlsdGVyLCBtX2NvbnRlbnRG
aWx0ZXIpOwotICAgIGlmIChjb250ZW50RmlsdGVyLT5zdGF0ZSgpID09IFN0YXRlOjpBbGxvd2Vk
KSB7Ci0gICAgICAgIGlmIChtX21haW5SZXNvdXJjZSkKLSAgICAgICAgICAgIG1fbWFpblJlc291
cmNlLT5hZGRDbGllbnQodGhpcyk7CisgICAgaWYgKG1fY29udGVudEZpbHRlci0+c3RhdGUoKSA9
PSBTdGF0ZTo6QWxsb3dlZCkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIGluc3RhbGxD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIoKmNvbnRlbnRGaWx0ZXIpOworICAgIGluc3RhbGxD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIoKm1fY29udGVudEZpbHRlcik7CiAKICAgICBVUkwg
YmxvY2tlZFVSTDsKICAgICBibG9ja2VkVVJMLnNldFByb3RvY29sKENvbnRlbnRGaWx0ZXI6OnVy
bFNjaGVtZSgpKTsKICAgICBibG9ja2VkVVJMLnNldEhvc3QoQVNDSUlMaXRlcmFsKCJibG9ja2Vk
LXBhZ2UiKSk7Ci0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShVUkwoKSwgQVNDSUlMaXRl
cmFsKCJ0ZXh0L2h0bWwiKSwgY29udGVudEZpbHRlci0+cmVwbGFjZW1lbnREYXRhKCktPnNpemUo
KSwgQVNDSUlMaXRlcmFsKCJVVEYtOCIpKTsKLSAgICBTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRl
RGF0YSB7IGNvbnRlbnRGaWx0ZXItPnJlcGxhY2VtZW50RGF0YSgpLCBkb2N1bWVudFVSTCgpLCBy
ZXNwb25zZSwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVu
IH07CisgICAgYXV0byByZXBsYWNlbWVudERhdGEgPSBtX2NvbnRlbnRGaWx0ZXItPnJlcGxhY2Vt
ZW50RGF0YSgpOworICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoVVJMKCksIEFTQ0lJTGl0
ZXJhbCgidGV4dC9odG1sIiksIHJlcGxhY2VtZW50RGF0YS0+c2l6ZSgpLCBBU0NJSUxpdGVyYWwo
IlVURi04IikpOworICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhIHsgYWRvcHRSZWYo
JnJlcGxhY2VtZW50RGF0YS5sZWFrUmVmKCkpLCBkb2N1bWVudFVSTCgpLCByZXNwb25zZSwgU3Vi
c3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CiAgICAgZnJh
bWUoKS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlU3Vic3RpdHV0ZURhdGFMb2FkKGJs
b2NrZWRVUkwsIHN1YnN0aXR1dGVEYXRhKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaAppbmRleCBmNWU5N2RhOWU2NjUzMTRmMmViNGM0NWFjYzU3ZjA2YTYx
Yjc2N2JhLi5iZDZmMzU4MmJkNTNlOTc0NDRlMGRmZjc3YzM4MTQxZjI4YWQzOGEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtMzA3LDcgKzMwNyw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoZG91YmxlIGZpbmlz
aFRpbWUpOwogICAgICAgICB2b2lkIG1haW5SZWNlaXZlZEVycm9yKGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzeW50
aGV0aWNSZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGJvb2wmIC8qIHNob3VsZENvbnRpbnVlICovKSBvdmVy
cmlkZTsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
Kikgb3ZlcnJpZGU7CkBAIC0zMzksOSArMzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCBjbGVhck1haW5SZXNvdXJjZSgpOwogCiAgICAgICAgIHZvaWQgY2FuY2VsUG9s
aWN5Q2hlY2tJZk5lZWRlZCgpOworICAgICAgICB2b2lkIGJlY29tZU1haW5SZXNvdXJjZUNsaWVu
dCgpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgICAgICB2b2lkIGJlY29t
ZU1haW5SZXNvdXJjZUNsaWVudElmRmlsdGVyQWxsb3dzKCk7CisgICAgICAgIGZyaWVuZCBjbGFz
cyBDb250ZW50RmlsdGVyOwogICAgICAgICB2b2lkIGluc3RhbGxDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIoQ29udGVudEZpbHRlciYpOwogICAgICAgICB2b2lkIGNvbnRlbnRGaWx0ZXJEaWRE
ZWNpZGUoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDZl
NWVlNzRiZDBhODJhOGRhYjFhY2RmMzg1NDZjZTNlMDUyNmQwNDguLjhjNTdkNmU0ZGFlNmJlNjQw
NjE3OWZhZWFmNDI0ZmMxNWRiODQ1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmgKQEAgLTI3Miw3ICsyNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNo
RGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGludCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRsZU9ubG9h
ZEV2ZW50cygpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmKSBvdmVycmlkZSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWQoKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlLCBkb3Vi
bGUpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0
aW9uV2l0aGluUGFnZSgpIG92ZXJyaWRlIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaAppbmRleCBhZmQxYjEwMjEzZGE1MTZmMzQ5NmNjMmI0MWY2YjIzMzcxODcw
N2JmLi5lMDRiYmY1YjA4ZTE5NGY2NGE0NTM1NmU3MjU2ZmFiNWFiOGM2YWU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTU0LDcgKzE1NCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRGlkTG9hZFJl
c291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGludCBsZW5ndGgpID0gMDsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKSA9IDA7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZChjb25zdCBVUkwmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkwoKSB7IH0KICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3Qo
Y29uc3QgVVJMJiwgZG91YmxlIGludGVydmFsLCBkb3VibGUgZmlyZURhdGUpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDU4MTk4OGVmOTY3ODBkMDg5
MTA1NTgwZmY0MGY2YmM4MjE2OTVhNDEuLjI2MzNmNGUwYzQ1NTk5NGJlZDJiYjNmZGYyZWFmZjRh
NjI1MzEyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
MzY1LDcgKzM2NSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVy
bmFsKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzCiAgICAgbV9yZXF1ZXN0ID0g
cmVxdWVzdDsKIAogICAgIGlmICghcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSAmJiAhbV9kb2N1
bWVudExvYWRlci0+aXNDb21taXR0ZWQoKSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50
KCkuZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQobV9y
ZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuZGlzcGF0Y2hE
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKTsKIH0KIAogdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIHN0ZDo6ZnVuY3Rpb248
dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCAwNzdhZDFkNWY0MzdmNzcwNTI5NThkOWRi
MGU1ZWJhMWViOWFiZTQyLi43NTY3OWM2YTJhOTliZWZjYzZjM2QyOGE4YmZkN2UwMzBlMTI3N2Ey
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTIw
Nyw4ICsyMDcsNiBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgLy8gYW55dGhpbmcgaW5jbHVk
aW5nIHJlbW92aW5nIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdDsgb25lIGV4YW1w
bGUgb2YgdGhpcyBpcyAzMjY2MjE2LgogICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVj
dCgqdGhpcyk7CiAKLSAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gY2FsbGluZ0RpZFJlY2VpdmVS
ZXNwb25zZShtX2NhbGxpbmdEaWRSZWNlaXZlUmVzcG9uc2UsIHRydWUpOwotCiAgICAgaWYgKHNo
b3VsZEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKSkKICAgICAgICAgcmVzcG9uc2UuaW5jbHVkZUNl
cnRpZmljYXRlSW5mbygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5oCmluZGV4IGRkYTY5MmZmM2E4ODMzN2VlZThlMDViNmExMWFiZWY1MDc1M2ViZTkuLjY5YTI0
MjI5NzIxZmY2Y2E5ODk5M2E2OTk3NzAxOGZlZWQ4ZDVjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC01OCw4ICs1OCw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgaU9TT3JpZ2luYWxSZXF1ZXN0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9pT1NPcmlnaW5hbFJlcXVlc3Q7IH0KICNlbmRpZgogCi0gICAg
Ym9vbCBjYWxsaW5nRGlkUmVjZWl2ZVJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsaW5n
RGlkUmVjZWl2ZVJlc3BvbnNlOyB9Ci0KIHByaXZhdGU6CiAgICAgU3VicmVzb3VyY2VMb2FkZXIo
RnJhbWUqLCBDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwog
CkBAIC0xMjYsNyArMTI0LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbG9hZGluZ011bHRpcGFy
dENvbnRlbnQ7CiAgICAgU3VicmVzb3VyY2VMb2FkZXJTdGF0ZSBtX3N0YXRlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZXF1ZXN0Q291bnRUcmFja2VyPiBtX3JlcXVlc3RDb3VudFRyYWNrZXI7Ci0g
ICAgYm9vbCBtX2NhbGxpbmdEaWRSZWNlaXZlUmVzcG9uc2UgeyBmYWxzZSB9OwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
aW5kZXggYzc4YzNkNGVhYzM4OGEwM2JhMzQ4M2MwYmM5NGUyYjgxMmJkODRhOC4uMWViYzE5M2Vi
MDY1NDk3Yjc4MWE2NDlmOTgwMWI2M2U4MDY0MGNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC0xMzIsOSArMTMyLDggQEAg
dm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50
KiBjKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVkaXJlY3RDb3VudDsgaSsrKSB7CiAg
ICAgICAgIFJlZGlyZWN0UGFpciByZWRpcmVjdCA9IG1fcmVkaXJlY3RDaGFpbltpXTsKICAgICAg
ICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QocmVkaXJlY3QubV9yZXF1ZXN0KTsKLSAgICAgICAg
Ym9vbCBzaG91bGRDb250aW51ZSA9IHRydWU7Ci0gICAgICAgIGNsaWVudC0+c3ludGhldGljUmVk
aXJlY3RSZWNlaXZlZCh0aGlzLCByZXF1ZXN0LCByZWRpcmVjdC5tX3JlZGlyZWN0UmVzcG9uc2Us
IHNob3VsZENvbnRpbnVlKTsKLSAgICAgICAgaWYgKCFoYXNDbGllbnQoYykgfHwgIXNob3VsZENv
bnRpbnVlKQorICAgICAgICBjbGllbnQtPnJlZGlyZWN0UmVjZWl2ZWQodGhpcywgcmVxdWVzdCwg
cmVkaXJlY3QubV9yZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgaWYgKCFoYXNDbGllbnQoYykp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChyZWRpcmVjdENvdW50ID09
IG1fcmVkaXJlY3RDaGFpbi5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaAppbmRleCAzOTU5ZjEzNWUzNWNjZGVl
NGU3ZGI3YjczMGU5ZDExZGNjZDRmOTllLi4zZDdmZDVlNWM0ODc0YjRmYzA0ZjRiNDY5NWQxY2Q5
MDQwMDliYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2VDbGllbnQuaApAQCAtNDEsMTAgKzQxLDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UqLCBjb25zdCBjaGFyKiAvKiBkYXRhICovLCBpbnQgLyogbGVuZ3RoICovKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KLQotICAgIC8vIEluIHJlc3Bv
bnNlIHRvIGEgcmVkaXJlY3QsIHNvbWUgY2xpZW50cyB3aXNoIHRvIHJlY2VpdmUgbm8gZnV0aGVy
IGNhbGxiYWNrcywgYnV0IGNhbm5vdCBpbW1lZGlhdGVseSByZW1vdmUgdGhlbXNlbHZlcyBhcyBh
IGNsaWVudC4KLSAgICAvLyBUaG9zZSBjbGllbnRzIGNhbiBleHByZXNzIHRoZWlyIGRlc2lyZSB0
byByZWNpZXZlIG5vIGZ1dGhlciBjYWxsYmFja3MgYnkgc2V0dGluZyBzaG91bGRDb250aW51ZSB0
byBmYWxzZS4KLSAgICB2aXJ0dWFsIHZvaWQgc3ludGhldGljUmVkaXJlY3RSZWNlaXZlZChDYWNo
ZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvb2wmIC8qIHNob3VsZENvbnRpbnVlICovKSB7IHJl
ZGlyZWN0UmVjZWl2ZWQocmVzb3VyY2UsIHJlcXVlc3QsIHJlc3BvbnNlKTsgfQogI2lmIFVTRShT
T1VQKQogICAgIHZpcnR1YWwgY2hhciogZ2V0T3JDcmVhdGVSZWFkQnVmZmVyKENhY2hlZFJlc291
cmNlKiwgc2l6ZV90IC8qIHJlcXVlc3RlZFNpemUgKi8sIHNpemVfdCYgLyogYWN0dWFsU2l6ZSAq
LykgeyByZXR1cm4gMDsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCmluZGV4IGQxNjI2ODk4ZWIyNTMzMjExNzdlMWEz
NDcwZTg2MTUyMDI1MzZiODYuLjY5MWZlMmZmM2QxZTdkMjRhMzQxZWEwZmU1ZWRmZWQ4Y2JiNDk4
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5oCkBAIC00MCw3ICs0MCw4IEBAIHB1YmxpYzoKICAgICAgICAgQWZ0ZXJSZWRpcmVj
dCwKICAgICAgICAgQWZ0ZXJSZXNwb25zZSwKICAgICAgICAgQWZ0ZXJBZGREYXRhLAotICAgICAg
ICBBZnRlckZpbmlzaGVkQWRkaW5nRGF0YQorICAgICAgICBBZnRlckZpbmlzaGVkQWRkaW5nRGF0
YSwKKyAgICAgICAgTmV2ZXIKICAgICB9OwogCiAgICAgZW51bSBjbGFzcyBEZWNpc2lvbiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmlkbAppbmRleCA1ZjAwMDU3NzljMTcyNzlmNmExOWUxNTlmNWQ3ZGQ3ZTJkNTE4NTRkLi5kNDAx
YWU5MDE0YTM3OWZhZDFmOTgzMTcwMzNlN2Q4NTRmNDZmMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwKQEAgLTM3LDYg
KzM3LDcgQEAKICAgICBjb25zdCBvY3RldCBERUNJU0lPTl9QT0lOVF9BRlRFUl9SRVNQT05TRSA9
IDI7CiAgICAgY29uc3Qgb2N0ZXQgREVDSVNJT05fUE9JTlRfQUZURVJfQUREX0RBVEEgPSAzOwog
ICAgIGNvbnN0IG9jdGV0IERFQ0lTSU9OX1BPSU5UX0FGVEVSX0ZJTklTSEVEX0FERElOR19EQVRB
ID0gNDsKKyAgICBjb25zdCBvY3RldCBERUNJU0lPTl9QT0lOVF9ORVZFUiA9IDU7CiAgICAgW0N1
c3RvbV0gYXR0cmlidXRlIG9jdGV0IGRlY2lzaW9uUG9pbnQ7CiAKICAgICBjb25zdCBvY3RldCBE
RUNJU0lPTl9BTExPVyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0YTk1NWNiOTQ3ZTUxZDQ1ZTJk
OTg1ZmQ2ZmE1MTQ4YTFjNWE3ZDg5Li5jZDFmMjRiYTljMzNhYTNkYjYwZjBiYTFkMzU2NWViN2Fm
ZjQ1MDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJlc3BvbnNlKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBOU0NhY2hlZFVSTFJlc3Bv
bnNlKikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5k
bGVPbmxvYWRFdmVudHMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJM
Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlVSTCYs
IGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KaW5kZXggMjIyYWYxNjdiODE3NjcwNDExZThhZGJmZDhjNjUxZmJiYmM2OWIx
NS4uZmE2YjkwZDllODI5MzBmOGZjZTUxOTM3Zjk3ZjZiMzM1YzQ3YTY5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252
ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqIGRvYwogICAgIFdl
YlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIFN1YnJl
c291cmNlTG9hZGVyKiBtYWluUmVzb3VyY2VMb2FkZXIgPSBkb2N1bWVudExvYWRlci0+bWFpblJl
c291cmNlTG9hZGVyKCk7CiAKLSAgICBpZiAoIW1haW5SZXNvdXJjZUxvYWRlciB8fCAhbWFpblJl
c291cmNlTG9hZGVyLT5jYWxsaW5nRGlkUmVjZWl2ZVJlc3BvbnNlKCkpIHsKKyAgICBpZiAoIW1h
aW5SZXNvdXJjZUxvYWRlcikgewogICAgICAgICAvLyBUaGUgcmVzb3VyY2UgaGFzIGFscmVhZHkg
YmVlbiBjYWNoZWQsIG9yIHRoZSBjb252ZXJzaW9uIGlzIGJlaW5nIGF0dG1wdGVkIHdoZW4gbm90
IGNhbGxpbmcgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSgpLgogI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVk
ICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgpAQCAtNTc4LDkgKzU3OCw5IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkKICAgICAg
ICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkSGFuZGxlT25sb2Fk
RXZlbnRzRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRIYW5kbGVP
bmxvYWRFdmVudHNGb3JGcmFtZTopLCBtX3dlYkZyYW1lLmdldCgpKTsKIH0KIAotdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWQoY29uc3QgVVJMJiB1cmwpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpCiB7Ci0g
ICAgbV93ZWJGcmFtZS0+X3ByaXZhdGUtPnByb3Zpc2lvbmFsVVJMID0gdXJsLnN0cmluZygpOwor
ICAgIG1fd2ViRnJhbWUtPl9wcml2YXRlLT5wcm92aXNpb25hbFVSTCA9IGNvcmUobV93ZWJGcmFt
ZS5nZXQoKSktPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkuc3Ry
aW5nKCk7CiAKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdl
dCgpKTsKICAgICBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxl
bWVudGF0aW9ucyA9IFdlYlZpZXdHZXRGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3
ZWJWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA1NjViNzM4MDc3MTJlYjY3MDk3YjFmYjU5
MDQyNWYwNzBiYTQ3ZWQyLi4yNGVmMTljZGI3N2M3YzQ0MDI4ODcwOTI4NjY0MTAxNzA1MzRhNWIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0zMzAsNyArMzMwLDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKQogICAgICAgICBmcmFt
ZUxvYWREZWxlZ2F0ZVByaXYtPmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKHdlYlZpZXcs
IG1fd2ViRnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmKQordm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWQoKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1l
LT53ZWJWaWV3KCk7CiAgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxlZ2F0ZT4gZnJhbWVMb2Fk
RGVsZWdhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA5YWY5MzFlOGFmYTQ2MjNmYzA1MWNjNGVhMTc2
NDU4OWNlMGZlYTdkLi41MjYyNjcxY2RmNTc0YzIwZDNlODVlZTcxMTIzNjcyYWU0ZGQ2NmI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRDYWNoZVJlc3BvbnNlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
dW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbG9uZyBsb25nIGxlbmd0aCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3Qo
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJl
ZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVE
YXRlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlv
bldpdGhpblBhZ2UoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
aW5kZXggMDgzNzViYTI1MzYzZGU5OGZhZGRhMzQyZGVjY2QxOWE2ODlkNmE2My4uZjkwNjM5NmQ3
ZDFiZTAwYTYyN2EyMDY2MjczZTgxZTUxNTNmZGU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKQEAgLTI3OCwyMCArMjc4LDIxIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkKICAgICB3ZWJQYWdlLT5pbmplY3Rl
ZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKHdlYlBh
Z2UsIG1fZnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmIHVybCkK
K3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFt
ZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2Vi
RG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRM
b2FkZXImPigqbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXIoKSk7CisgICAgY29uc3QgU3RyaW5nJiB1cmwgPSBkb2N1bWVudExvYWRlci51cmwo
KS5zdHJpbmcoKTsKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCiAgICAgLy8g
Tm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9h
ZGVyQ2xpZW50KCkuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgdXNlckRhdGEpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBV
SVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5m
cmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCB1cmwuc3RyaW5nKCksIFVz
ZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMo
dXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwg
dXJsLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9I
YW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VQcm92aXNpb25hbFVSTCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKaW5kZXggZDExMWRmYThlMDA2NzIxYjRjOWQ0NjY1ZDRjMjdmMGU0Mzcx
ODc1My4uZTg4NjlhOTVhOWU4MDhkNDg3MDE4NDdjMzAyZWNhOGVhYzAwMDZiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlUHJvdmlzaW9u
YWxVUkwoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGll
bnRSZWRpcmVjdCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBk
b3VibGUgZmlyZURhdGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggNWIzMzE1MzUyYTQwYmE5NTY4NTYwMWE1OWJjZjI0
ZjhiZjUwOGU2My4uY2NjYjhiNmFkZDQ2OTk3M2JkZTQ1NjZiZTg2OTE0N2Y4ZjA4NjhhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0y
ODMsNyArMjgzLDcgQEAgdm9pZCBXZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwKICAgICAgICAgLy8gVGhpcyBj
YW4gaGFwcGVuIGlmIHRoZXJlIGlzIG5vIGxvYWRlciBiZWNhdXNlIHRoZSBtYWluIHJlc291cmNl
IGlzIGluIHRoZSBXZWJDb3JlIG1lbW9yeSBjYWNoZSwKICAgICAgICAgLy8gb3IgYmVjYXVzZSB0
aGUgY29udmVyc2lvbiB3YXMgYXR0ZW1wdGVkIHdoZW4gbm90IGNhbGxpbmcgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSgpLgogICAgICAgICB1aW50NjRfdCBtYWluUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKG1haW5SZXNvdXJjZUxvYWRlciAmJiBtYWlu
UmVzb3VyY2VMb2FkZXItPmNhbGxpbmdEaWRSZWNlaXZlUmVzcG9uc2UoKSkKKyAgICAgICAgaWYg
KG1haW5SZXNvdXJjZUxvYWRlcikKICAgICAgICAgICAgIG1haW5SZXNvdXJjZUxvYWRJZGVudGlm
aWVyID0gbWFpblJlc291cmNlTG9hZGVyLT5pZGVudGlmaWVyKCk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyID0gMDsKQEAgLTI5Myw3ICsyOTMs
NyBAQCB2b2lkIFdlYkZyYW1lOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9j
dW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyLAogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKCFt
YWluUmVzb3VyY2VMb2FkZXIgfHwgIW1haW5SZXNvdXJjZUxvYWRlci0+Y2FsbGluZ0RpZFJlY2Vp
dmVSZXNwb25zZSgpKSB7CisgICAgaWYgKCFtYWluUmVzb3VyY2VMb2FkZXIpIHsKICAgICAgICAg
Ly8gVGhlIG1haW4gcmVzb3VyY2UgaGFzIGFscmVhZHkgYmVlbiBsb2FkZWQuIFN0YXJ0IGEgbmV3
IGRvd25sb2FkIGluc3RlYWQuCiAgICAgICAgIHdlYlByb2Nlc3MuZG93bmxvYWRNYW5hZ2VyKCku
c3RhcnREb3dubG9hZChwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0KTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQz
OTcxYzQ2MjQ4ZDQ0ZjkwMjg5OGUyNTBkYTEzZGE4YTQ5NWRjMmQuLmFjMWYyM2FkMjBkODg5Y2Jm
MzY0MWI5ODU4YzY5NjQ3NjMyNmFjNjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxNS0wOC0yNiAgQW5keSBFc3Rl
cyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvbnRlbnQgRmlsdGVyaW5nXSBEZXRl
cm1pbmUgbmF2aWdhdGlvbiBhbmQgY29udGVudCBwb2xpY3kgYmVmb3JlIGNvbnRpbnVpbmcgdG8g
ZmlsdGVyIGEgbG9hZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ4NTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgZG93bmxvYWQgQVBJIHRlc3RzIGNvdmVyaW5nIGV2ZXJ5IGRlY2lzaW9uIGFu
ZCBkZWNpc2lvbiBwb2ludC4KKyAgICAgICAgUmVtb3ZlZCBfV0tEb3dubG9hZC5Bc3luY2hyb25v
dXNEb3dubG9hZFBvbGljeSBpbiBmYXZvciBvZiB0aGVzZSBuZXcgdGVzdHMuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6IEFkZGVkICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9XZWJDb3JlVGVzdFN1cHBvcnQgdG8gdGhlIGhlYWRlciBzZWFyY2gg
cGF0aC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nlc3NQ
bHVnSW4ueGNjb25maWc6IFJlbW92ZWQgaXQgZnJvbSBoZXJlLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0J1bmRsZVBhcmFtZXRlcnNQbHVnSW4ubW06CisgICAg
ICAgICgtW0J1bmRsZVBhcmFtZXRlcnNQbHVnSW4gb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9i
amVjdDpjaGFuZ2U6Y29udGV4dDpdKTogQ2FsbGVkIC12YWx1ZUZvcktleVBhdGg6LCB3aGljaAor
ICAgICAgICByZXR1cm5zIGFuIGlkLCBpbnN0ZWFkIG9mIC12YWx1ZUZvcktleTosIHdoaWNoIGFs
d2F5cyByZXR1cm5zIGFuIE5TU3RyaW5nIGV2ZW4gaWYgdGhlIG9iamVjdCBpcyBvZiBhbm90aGVy
IHR5cGUuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQ29udGVu
dEZpbHRlcmluZy5tbTogQWRkZWQgYSBjbGFzcyB0aGF0IGNhbiBzZW5kIGEgTW9ja0NvbnRlbnRG
aWx0ZXIKKyAgICAgICAgZGVjaXNpb24gYW5kIGRlY2lzaW9uIHBvaW50IGFzIGEgYnVuZGxlIHBh
cmFtZXRlci4KKyAgICAgICAgKCtbTW9ja0NvbnRlbnRGaWx0ZXJFbmFibGVyIHN1cHBvcnRzU2Vj
dXJlQ29kaW5nXSk6CisgICAgICAgICgtW01vY2tDb250ZW50RmlsdGVyRW5hYmxlciBjb3B5V2l0
aFpvbmU6XSk6CisgICAgICAgICgtW01vY2tDb250ZW50RmlsdGVyRW5hYmxlciBpbml0V2l0aENv
ZGVyOl0pOgorICAgICAgICAoLVtNb2NrQ29udGVudEZpbHRlckVuYWJsZXIgaW5pdFdpdGhEZWNp
c2lvbjpkZWNpc2lvblBvaW50Ol0pOgorICAgICAgICAoLVtNb2NrQ29udGVudEZpbHRlckVuYWJs
ZXIgZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoY29uZmlndXJhdGlvbldpdGhDb250ZW50
RmlsdGVyU2V0dGluZ3MpOiBBZGRlZCBhIGhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBXS1dl
YlZpZXdDb25maWd1cmF0aW9uIHdpdGggTW9ja0NvbmVudEZpbHRlciBzZXR0aW5ncy4KKyAgICAg
ICAgKFRFU1QpOiBSZW5hbWVkIENvbnRlbnRGaWx0ZXJpbmcuU2VydmVyUmVkaXJlY3QgdG8gQ29u
dGVudEZpbHRlcmluZy5VUkxBZnRlclNlcnZlclJlZGlyZWN0LgorICAgICAgICAoLVtCZWNvbWVE
b3dubG9hZERlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNl
OmRlY2lzaW9uSGFuZGxlcjpdKTogRGVjaWRlZCBfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lC
ZWNvbWVEb3dubG9hZC4KKyAgICAgICAgKC1bQmVjb21lRG93bmxvYWREZWxlZ2F0ZSB3ZWJWaWV3
OmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246d2l0aEVycm9yOl0pOiBTZXQgaXNEb25lIHRv
IHRydWUuCisgICAgICAgICgtW0JlY29tZURvd25sb2FkRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5p
c2hOYXZpZ2F0aW9uOl0pOiBEaXR0by4KKyAgICAgICAgKC1bQ29udGVudEZpbHRlcmluZ0Rvd25s
b2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6XSk6IFNldCBkb3dubG9hZERpZFN0YXJ0IHRv
IHRydWUuCisgICAgICAgIChkb3dubG9hZFRlc3QpOiBBZGRlZCBhIGhlbHBlciBmdW5jdGlvbiB0
byB0ZXN0IGRvd25sb2FkcyB3aXRoIGEgZ2l2ZW4gZGVjaXNpb24gYW5kIGRlY2lzaW9uIHBvaW50
LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0NvbnRlbnRGaWx0
ZXJpbmdQbHVnSW4ubW06IEFkZGVkIGEgY29ycmVzcG9uZGluZyBidW5kbGUgY2xhc3MgdGhhdCBk
ZWNvZGVzCisgICAgICAgIHRoZSBNb2NrQ29udGVudEZpbHRlciBkZWNpc2lvbiBhbmQgZGVjaXNp
b24gcG9pbnQsIGFuZCBzZXRzIHRoZXNlIHZhbHVlcyBpbiB0aGUgTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncworICAgICAgICBzaW5nbGV0b24uIFRoaXMgY2xhc3MgaXMgZHVwbGljYXRlZCBpbiB0
aGUgYnVuZGxlIHRvIHByZXZlbnQgVGVzdFdlYktpdEFQSSBmcm9tIGhhdmluZyB0byBsaW5rIHRv
IFdlYkNvcmVUZXN0U3VwcG9ydC4KKyAgICAgICAgKCtbTW9ja0NvbnRlbnRGaWx0ZXJFbmFibGVy
IHN1cHBvcnRzU2VjdXJlQ29kaW5nXSk6CisgICAgICAgICgtW01vY2tDb250ZW50RmlsdGVyRW5h
YmxlciBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgICgtW01vY2tDb250ZW50RmlsdGVyRW5hYmxl
ciBpbml0V2l0aENvZGVyOl0pOgorICAgICAgICAoLVtNb2NrQ29udGVudEZpbHRlckVuYWJsZXIg
ZGVhbGxvY10pOgorICAgICAgICAoLVtNb2NrQ29udGVudEZpbHRlckVuYWJsZXIgZW5jb2RlV2l0
aENvZGVyOl0pOgorICAgICAgICAoLVtDb250ZW50RmlsdGVyaW5nUGx1Z0luIHdlYlByb2Nlc3NQ
bHVnSW46aW5pdGlhbGl6ZVdpdGhPYmplY3Q6XSk6IFN0YXJ0IG9ic2VydmluZyBjaGFuZ2VzIHRv
IHRoZSBNb2NrQ29udGVudEZpbHRlckVuYWJsZXIga2V5IHBhdGguCisgICAgICAgICgtW0NvbnRl
bnRGaWx0ZXJpbmdQbHVnSW4gZGVhbGxvY10pOiBTdG9wIG9ic2VydmluZy4KKyAgICAgICAgKC1b
Q29udGVudEZpbHRlcmluZ1BsdWdJbiBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNo
YW5nZTpjb250ZXh0Ol0pOiBTdG9yZSBhIE1vY2tDb250ZW50RmlsdGVyRW5hYmxlciBpbiBfY29u
dGVudEZpbHRlckVuYWJsZXIuCisgICAgICAgICgrW1NlcnZlclJlZGlyZWN0UGx1Z0luIGluaXRp
YWxpemVdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJD
b2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKC1bQXN5bmNocm9ub3VzRG93bmxvYWROYXZpZ2F0
aW9uRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVj
aXNpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtBc3luY2hyb25vdXNEb3dubG9h
ZERlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0Ol0pOiBEZWxldGVkLgorICAgICAgICAoVEVTVCk6
IERlbGV0ZWQuCisKIDIwMTUtMDgtMjYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBCdWlsZCBmaXggYWZ0ZXIgcjE4ODk4MgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCmluZGV4IGZhOWUz
YzVhOWU5MmE0ZGViMWYwYTc2ZWRmZGRhYzU5OWFhNzViNTEuLmIxMGE5ODBlNDJmMjQyMDk0MzIz
ZTEwMWE4NmI2MzA0MzdmNDhmYjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29u
ZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZworKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZp
Z3VyYXRpb25zL0Jhc2UueGNjb25maWcKQEAgLTI0LDcgKzI0LDcgQEAKIENMQU5HX0NYWF9MQU5H
VUFHRV9TVEFOREFSRCA9IGdudSsrMHg7CiBDTEFOR19DWFhfTElCUkFSWSA9IGxpYmMrKzsKIENM
QU5HX1dBUk5fQ1hYMFhfRVhURU5TSU9OUyA9IE5POwotSEVBREVSX1NFQVJDSF9QQVRIUyA9ICR7
QlVJTFRfUFJPRFVDVFNfRElSfS91c3IvbG9jYWwvaW5jbHVkZSAkKFdFQkNPUkVfUFJJVkFURV9I
RUFERVJTX0RJUikvRm9yd2FyZGluZ0hlYWRlcnMgJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19E
SVIpL2ljdTsKK0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAke0JVSUxUX1BST0RVQ1RTX0RJUn0vdXNy
L2xvY2FsL2luY2x1ZGUgJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0ZvcndhcmRpbmdI
ZWFkZXJzICQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9pY3UgJChCVUlMVF9QUk9EVUNU
U19ESVIpL1dlYkNvcmVUZXN0U3VwcG9ydDsKIEZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAkKEZS
QU1FV09SS19TRUFSQ0hfUEFUSFNfJChQTEFURk9STV9OQU1FKSk7CiBGUkFNRVdPUktfU0VBUkNI
X1BBVEhTX21hY29zeCA9ICQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL1F1YXJ0ei5m
cmFtZXdvcmsvRnJhbWV3b3JrcyAkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzICQoU1lTVEVNX0xJQlJBUllfRElS
KS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3JrczsKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9XZWJQcm9jZXNzUGx1Z0lu
LnhjY29uZmlnIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9XZWJQcm9jZXNz
UGx1Z0luLnhjY29uZmlnCmluZGV4IGM4ODhhMDY3OTZlZjM3N2E3MTY4NGJlNTgzNTBlMDU1MjE3
M2JiZDEuLjI5ODU1MTY5M2I2MmIxNzIzYTM4MmI0MGI0MWU4OTM0NDM1OTc0ODMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvV2ViUHJvY2Vzc1BsdWdJbi54
Y2NvbmZpZworKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nl
c3NQbHVnSW4ueGNjb25maWcKQEAgLTI3LDcgKzI3LDYgQEAgSU5GT1BMSVNUX0ZJTEUgPSBjb2Nv
YS9XZWJQcm9jZXNzUGx1Z0luL0luZm8ucGxpc3Q7CiBQUk9EVUNUX05BTUUgPSBUZXN0V2ViS2l0
QVBJOwogRVhFQ1VUQUJMRV9TVUZGSVggPSAuYnVuZGxlOwogV1JBUFBFUl9FWFRFTlNJT04gPSB3
a2J1bmRsZTsKLUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKGluaGVyaXRlZCkgJChCVUlMVF9QUk9E
VUNUU19ESVIpL1dlYkNvcmVUZXN0U3VwcG9ydDsKIE9USEVSX0xERkxBR1MgPSAkKGluaGVyaXRl
ZCkgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtZnJhbWV3b3JrIFdlYktpdCAtbFdlYkNvcmVU
ZXN0U3VwcG9ydDsKIExEX1JVTlBBVEhfU0VBUkNIX1BBVEhTW3Nkaz1tYWNvc3gqXSA9ICJAbG9h
ZGVyX3BhdGgvLi4vLi4vLi4iOwogTERfUlVOUEFUSF9TRUFSQ0hfUEFUSFNbc2RrPWlwaG9uZSpd
ID0gIkBsb2FkZXJfcGF0aC8uLiI7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9CdW5kbGVQYXJhbWV0ZXJzUGx1Z0luLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQnVuZGxlUGFyYW1ldGVyc1BsdWdJbi5tbQppbmRl
eCAyYjUxYTA1NzdhZWJkODE5Y2NlNzIyYTc1Mzk3ODFiMDQ0Yjk2NzM2Li5mY2VlN2I1NjQxOWQ4
MmZiNThkYTk0NTFjZWJjMzY3NzlmNDg0Y2MxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9CdW5kbGVQYXJhbWV0ZXJzUGx1Z0luLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0J1bmRsZVBhcmFtZXRlcnNQbHVn
SW4ubW0KQEAgLTY0LDcgKzY0LDcgQEAgLSAodm9pZClkZWFsbG9jCiAtICh2b2lkKW9ic2VydmVW
YWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNo
YW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0CiB7CiAg
ICAgSlNDb250ZXh0ICpqc0NvbnRleHQgPSBbW19icm93c2VyQ29udGV4dENvbnRyb2xsZXIgbWFp
bkZyYW1lXSBqc0NvbnRleHRGb3JXb3JsZDpbV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQg
bm9ybWFsV29ybGRdXTsKLSAgICBbanNDb250ZXh0IHNldE9iamVjdDpbb2JqZWN0IHZhbHVlRm9y
S2V5OmtleVBhdGhdIGZvcktleWVkU3Vic2NyaXB0OmtleVBhdGhdOworICAgIFtqc0NvbnRleHQg
c2V0T2JqZWN0OltvYmplY3QgdmFsdWVGb3JLZXlQYXRoOmtleVBhdGhdIGZvcktleWVkU3Vic2Ny
aXB0OmtleVBhdGhdOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQ29udGVudEZpbHRlcmluZy5tbQppbmRleCBlNjYxMjMw
NDM1ODEzZGRjOWJlNGVlYjg1NTk2NGE3MjdkZjk3OWJiLi42NzgxMWRiNTllYzMxZWJlM2Y1ZWQw
NTc0NjQ4ZDhhNTYzM2FlNDdlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0KQEAgLTI3LDE2ICsyNyw3
MiBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oTUFDKQogCisjaW1wb3J0ICJN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0
aW9uRXh0cmFzLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
Lmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1By
b2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgorI2ltcG9y
dCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KIAordXNpbmcgRGVjaXNpb24gPSBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OjpEZWNpc2lvbjsKK3VzaW5nIERlY2lzaW9uUG9pbnQgPSBXZWJDb3JlOjpNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OworCiBzdGF0aWMgYm9vbCBpc0RvbmU7CiAKK0Bp
bnRlcmZhY2UgTW9ja0NvbnRlbnRGaWx0ZXJFbmFibGVyIDogTlNPYmplY3QgPE5TQ29weWluZywg
TlNTZWN1cmVDb2Rpbmc+CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEZWNpc2lvbjooRGVjaXNp
b24pZGVjaXNpb24gZGVjaXNpb25Qb2ludDooRGVjaXNpb25Qb2ludClkZWNpc2lvblBvaW50Owor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gTW9ja0NvbnRlbnRGaWx0ZXJFbmFibGVyIHsKKyAgICBE
ZWNpc2lvbiBfZGVjaXNpb247CisgICAgRGVjaXNpb25Qb2ludCBfZGVjaXNpb25Qb2ludDsKK30K
KworKyAoQk9PTClzdXBwb3J0c1NlY3VyZUNvZGluZworeworICAgIHJldHVybiBZRVM7Cit9CisK
Ky0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQoreworICAgIHJldHVybiBbc2VsZiBy
ZXRhaW5dOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWRl
Y29kZXIKK3sKKyAgICByZXR1cm4gW3N1cGVyIGluaXRdOworfQorCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhEZWNpc2lvbjooRGVjaXNpb24pZGVjaXNpb24gZGVjaXNpb25Qb2ludDooRGVjaXNp
b25Qb2ludClkZWNpc2lvblBvaW50Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkp
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfZGVjaXNpb24gPSBkZWNpc2lvbjsKKyAgICBf
ZGVjaXNpb25Qb2ludCA9IGRlY2lzaW9uUG9pbnQ7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0g
KHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKK3sKKyAgICBbY29kZXIgZW5j
b2RlSW50OnN0YXRpY19jYXN0PGludD4oX2RlY2lzaW9uKSBmb3JLZXk6QCJEZWNpc2lvbiJdOwor
ICAgIFtjb2RlciBlbmNvZGVJbnQ6c3RhdGljX2Nhc3Q8aW50PihfZGVjaXNpb25Qb2ludCkgZm9y
S2V5OkAiRGVjaXNpb25Qb2ludCJdOworfQorCitAZW5kCisKK3N0YXRpYyBSZXRhaW5QdHI8V0tX
ZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbldpdGhDb250ZW50RmlsdGVyU2V0dGlu
Z3MoRGVjaXNpb24gZGVjaXNpb24sIERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCkKK3sKKyAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSByZXRhaW5QdHIoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
dGVzdHdlYmtpdGFwaV9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJDb250
ZW50RmlsdGVyaW5nUGx1Z0luIl0pOworICAgIGF1dG8gY29udGVudEZpbHRlckVuYWJsZXIgPSBh
ZG9wdE5TKFtbTW9ja0NvbnRlbnRGaWx0ZXJFbmFibGVyIGFsbG9jXSBpbml0V2l0aERlY2lzaW9u
OmRlY2lzaW9uIGRlY2lzaW9uUG9pbnQ6ZGVjaXNpb25Qb2ludF0pOworICAgIFtbY29uZmlndXJh
dGlvbiBwcm9jZXNzUG9vbF0gX3NldE9iamVjdDpjb250ZW50RmlsdGVyRW5hYmxlci5nZXQoKSBm
b3JCdW5kbGVQYXJhbWV0ZXI6TlNTdHJpbmdGcm9tQ2xhc3MoW01vY2tDb250ZW50RmlsdGVyRW5h
YmxlciBjbGFzc10pXTsKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKK30KKwogQGludGVyZmFj
ZSBTZXJ2ZXJSZWRpcmVjdE5hdmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRp
b25EZWxlZ2F0ZT4KIEBlbmQKIApAQCAtNTksMjAgKzExNSwxNDQgQEAgLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZENvbW1pdE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAq
KW5hdmlnYXQKIAogQGVuZAogCi1URVNUKENvbnRlbnRGaWx0ZXJpbmcsIFNlcnZlclJlZGlyZWN0
KQorVEVTVChDb250ZW50RmlsdGVyaW5nLCBVUkxBZnRlclNlcnZlclJlZGlyZWN0KQoreworICAg
IEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBbTlNVUkxQcm90b2NvbCByZWdpc3RlckNsYXNz
OltUZXN0UHJvdG9jb2wgY2xhc3NdXTsKKyAgICAgICAgW1dLQnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlciByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOltUZXN0UHJvdG9jb2wgc2NoZW1l
XV07CisKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbldpdGhDb250
ZW50RmlsdGVyU2V0dGluZ3MoRGVjaXNpb246OkFsbG93LCBEZWNpc2lvblBvaW50OjpBZnRlckFk
ZERhdGEpOworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CisgICAgICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW1NlcnZl
clJlZGlyZWN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFt3ZWJW
aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworICAg
ICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3JlZGlyZWN0P3Bhc3MiXV1dOworICAgICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICAgICAgW1dLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciB1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6W1Rlc3RQ
cm90b2NvbCBzY2hlbWVdXTsKKyAgICAgICAgW05TVVJMUHJvdG9jb2wgdW5yZWdpc3RlckNsYXNz
OltUZXN0UHJvdG9jb2wgY2xhc3NdXTsKKyAgICB9Cit9CisKK0BpbnRlcmZhY2UgQmVjb21lRG93
bmxvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KK0BlbmQKKwor
QGltcGxlbWVudGF0aW9uIEJlY29tZURvd25sb2FkRGVsZWdhdGUKKworLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZToo
V0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVy
Oih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCit7
CisgICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURv
d25sb2FkKTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZh
aWxQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24gd2l0aEVy
cm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBpc0RvbmUgPSB0cnVlOworfQorCistICh2b2lk
KXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZp
Z2F0aW9uICopbmF2aWdhdGlvbgoreworICAgIGlzRG9uZSA9IHRydWU7Cit9CisKK0BlbmQKKwor
c3RhdGljIGJvb2wgZG93bmxvYWREaWRTdGFydDsKKworQGludGVyZmFjZSBDb250ZW50RmlsdGVy
aW5nRG93bmxvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tEb3dubG9hZERlbGVnYXRlPgorQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gQ29udGVudEZpbHRlcmluZ0Rvd25sb2FkRGVsZWdhdGUKKwor
LSAodm9pZClfZG93bmxvYWREaWRTdGFydDooX1dLRG93bmxvYWQgKilkb3dubG9hZAoreworICAg
IGRvd25sb2FkRGlkU3RhcnQgPSB0cnVlOworfQorCitAZW5kCisKK3N0YXRpYyB2b2lkIGRvd25s
b2FkVGVzdChEZWNpc2lvbiBkZWNpc2lvbiwgRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KQor
eworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBbTlNVUkxQcm90b2NvbCByZWdpc3Rl
ckNsYXNzOltUZXN0UHJvdG9jb2wgY2xhc3NdXTsKKyAgICAgICAgW1dLQnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlciByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOltUZXN0UHJvdG9jb2wg
c2NoZW1lXV07CisKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbldp
dGhDb250ZW50RmlsdGVyU2V0dGluZ3MoZGVjaXNpb24sIGRlY2lzaW9uUG9pbnQpOworICAgICAg
ICBhdXRvIGRvd25sb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udGVudEZpbHRlcmluZ0Rvd25s
b2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW1tjb25maWd1cmF0aW9uIHByb2Nl
c3NQb29sXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsKKyAg
ICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAg
ICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tCZWNvbWVEb3dubG9hZERl
bGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxl
Z2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworICAgICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
aHR0cDovL3JlZGlyZWN0Lz9kb3dubG9hZCJdXV07CisKKyAgICAgICAgaXNEb25lID0gZmFsc2U7
CisgICAgICAgIGRvd25sb2FkRGlkU3RhcnQgPSBmYWxzZTsKKyAgICAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgICAgIGNvbnN0IGJvb2wgZG93bmxvYWRTaG91
bGRTdGFydCA9IGRlY2lzaW9uID09IERlY2lzaW9uOjpBbGxvdyB8fCBkZWNpc2lvblBvaW50ID4g
RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZTsKKyAgICAgICAgRVhQRUNUX0VRKGRvd25sb2Fk
U2hvdWxkU3RhcnQsIGRvd25sb2FkRGlkU3RhcnQpOworCisgICAgICAgIFtXS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIgdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOltUZXN0UHJv
dG9jb2wgc2NoZW1lXV07CisgICAgICAgIFtOU1VSTFByb3RvY29sIHVucmVnaXN0ZXJDbGFzczpb
VGVzdFByb3RvY29sIGNsYXNzXV07CisgICAgfQorfQorCitURVNUKENvbnRlbnRGaWx0ZXJpbmcs
IEFsbG93RG93bmxvYWRBZnRlcldpbGxTZW5kUmVxdWVzdCkKK3sKKyAgICBkb3dubG9hZFRlc3Qo
RGVjaXNpb246OkFsbG93LCBEZWNpc2lvblBvaW50OjpBZnRlcldpbGxTZW5kUmVxdWVzdCk7Cit9
CisKK1RFU1QoQ29udGVudEZpbHRlcmluZywgQmxvY2tEb3dubG9hZEFmdGVyV2lsbFNlbmRSZXF1
ZXN0KQogewotICAgIFtOU1VSTFByb3RvY29sIHJlZ2lzdGVyQ2xhc3M6W1Rlc3RQcm90b2NvbCBj
bGFzc11dOwotICAgIFtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgcmVnaXN0ZXJTY2hlbWVG
b3JDdXN0b21Qcm90b2NvbDpbVGVzdFByb3RvY29sIHNjaGVtZV1dOworICAgIGRvd25sb2FkVGVz
dChEZWNpc2lvbjo6QmxvY2ssIERlY2lzaW9uUG9pbnQ6OkFmdGVyV2lsbFNlbmRSZXF1ZXN0KTsK
K30KIAotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IHJldGFpblB0cihbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiB0ZXN0d2Via2l0YXBpX2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFt
ZTpAIlNlcnZlclJlZGlyZWN0UGx1Z0luIl0pOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tTZXJ2ZXJSZWRpcmVjdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwot
ICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0
KCldOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vcmVkaXJlY3Q/cGFzcyJdXV07Ci0gICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworVEVTVChDb250ZW50RmlsdGVyaW5n
LCBBbGxvd0Rvd25sb2FkQWZ0ZXJSZWRpcmVjdCkKK3sKKyAgICBkb3dubG9hZFRlc3QoRGVjaXNp
b246OkFsbG93LCBEZWNpc2lvblBvaW50OjpBZnRlclJlZGlyZWN0KTsKK30KIAotICAgIFtXS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIgdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29s
OltUZXN0UHJvdG9jb2wgc2NoZW1lXV07Ci0gICAgW05TVVJMUHJvdG9jb2wgdW5yZWdpc3RlckNs
YXNzOltUZXN0UHJvdG9jb2wgY2xhc3NdXTsKK1RFU1QoQ29udGVudEZpbHRlcmluZywgQmxvY2tE
b3dubG9hZEFmdGVyUmVkaXJlY3QpCit7CisgICAgZG93bmxvYWRUZXN0KERlY2lzaW9uOjpCbG9j
aywgRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZWRpcmVjdCk7Cit9CisKK1RFU1QoQ29udGVudEZpbHRl
cmluZywgQWxsb3dEb3dubG9hZEFmdGVyUmVzcG9uc2UpCit7CisgICAgZG93bmxvYWRUZXN0KERl
Y2lzaW9uOjpBbGxvdywgRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSk7Cit9CisKK1RFU1Qo
Q29udGVudEZpbHRlcmluZywgQmxvY2tEb3dubG9hZEFmdGVyUmVzcG9uc2UpCit7CisgICAgZG93
bmxvYWRUZXN0KERlY2lzaW9uOjpCbG9jaywgRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSk7
Cit9CisKK1RFU1QoQ29udGVudEZpbHRlcmluZywgQWxsb3dEb3dubG9hZEFmdGVyQWRkRGF0YSkK
K3sKKyAgICBkb3dubG9hZFRlc3QoRGVjaXNpb246OkFsbG93LCBEZWNpc2lvblBvaW50OjpBZnRl
ckFkZERhdGEpOworfQorCitURVNUKENvbnRlbnRGaWx0ZXJpbmcsIEJsb2NrRG93bmxvYWRBZnRl
ckFkZERhdGEpCit7CisgICAgZG93bmxvYWRUZXN0KERlY2lzaW9uOjpCbG9jaywgRGVjaXNpb25Q
b2ludDo6QWZ0ZXJBZGREYXRhKTsKK30KKworVEVTVChDb250ZW50RmlsdGVyaW5nLCBBbGxvd0Rv
d25sb2FkQWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEpCit7CisgICAgZG93bmxvYWRUZXN0KERlY2lz
aW9uOjpBbGxvdywgRGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEpOworfQor
CitURVNUKENvbnRlbnRGaWx0ZXJpbmcsIEJsb2NrRG93bmxvYWRBZnRlckZpbmlzaGVkQWRkaW5n
RGF0YSkKK3sKKyAgICBkb3dubG9hZFRlc3QoRGVjaXNpb246OkJsb2NrLCBEZWNpc2lvblBvaW50
OjpBZnRlckZpbmlzaGVkQWRkaW5nRGF0YSk7Cit9CisKK1RFU1QoQ29udGVudEZpbHRlcmluZywg
QWxsb3dEb3dubG9hZE5ldmVyKQoreworICAgIGRvd25sb2FkVGVzdChEZWNpc2lvbjo6QWxsb3cs
IERlY2lzaW9uUG9pbnQ6Ok5ldmVyKTsKK30KKworVEVTVChDb250ZW50RmlsdGVyaW5nLCBCbG9j
a0Rvd25sb2FkTmV2ZXIpCit7CisgICAgZG93bmxvYWRUZXN0KERlY2lzaW9uOjpCbG9jaywgRGVj
aXNpb25Qb2ludDo6TmV2ZXIpOwogfQogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0NvbnRlbnRGaWx0
ZXJpbmdQbHVnSW4ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9D
b250ZW50RmlsdGVyaW5nUGx1Z0luLm1tCmluZGV4IDQzYWNkNTIxNDgyNzQ5NTlhNmQ4MmQzZDIw
M2Q5NjQ4MjVkMjYzOWYuLmQxY2I3ZTQ2ZjQxYzQ1M2I4NzU2YmQ4NzA2NjczMGIyNjhhNDYxNzcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0NvbnRl
bnRGaWx0ZXJpbmdQbHVnSW4ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbQpAQCAtMzAsMjAgKzMwLDc1IEBACiAj
aW1wb3J0ICJNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJQcm9jZXNzUGx1Z0luLmg+CiAKLUBpbnRlcmZhY2UgU2VydmVyUmVkaXJlY3RQbHVnSW4gOiBO
U09iamVjdCA8V0tXZWJQcm9jZXNzUGx1Z0luPgordXNpbmcgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncyA9IFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7Cit1c2luZyBEZWNpc2lv
biA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOwordXNpbmcgRGVjaXNpb25Q
b2ludCA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ7CisKK0BpbnRl
cmZhY2UgTW9ja0NvbnRlbnRGaWx0ZXJFbmFibGVyIDogTlNPYmplY3QgPE5TQ29weWluZywgTlNT
ZWN1cmVDb2Rpbmc+CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBTZXJ2ZXJSZWRpcmVjdFBsdWdJ
bgorQGltcGxlbWVudGF0aW9uIE1vY2tDb250ZW50RmlsdGVyRW5hYmxlcgorCisrIChCT09MKXN1
cHBvcnRzU2VjdXJlQ29kaW5nCit7CisgICAgcmV0dXJuIFlFUzsKK30KKworLSAoaWQpY29weVdp
dGhab25lOihOU1pvbmUgKil6b25lCit7CisgICAgcmV0dXJuIFtzZWxmIHJldGFpbl07Cit9CiAK
LSsgKHZvaWQpaW5pdGlhbGl6ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29k
ZXIgKilkZWNvZGVyCiB7Ci0gICAgdXNpbmcgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyA9IFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7Ci0gICAgdXNpbmcgRGVjaXNpb24gPSBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbjsKLSAgICB1c2luZyBEZWNpc2lvblBv
aW50ID0gTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDsKLSAgICBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncyA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OnNpbmdsZXRvbigpOworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgYXV0byYgc2V0dGluZ3MgPSBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpzaW5nbGV0b24oKTsKICAgICBzZXR0aW5ncy5zZXRFbmFibGVkKHRydWUpOwotICAg
IHNldHRpbmdzLnNldERlY2lzaW9uKERlY2lzaW9uOjpBbGxvdyk7Ci0gICAgc2V0dGluZ3Muc2V0
RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50OjpBZnRlckFkZERhdGEpOworICAgIHNldHRpbmdz
LnNldERlY2lzaW9uKHN0YXRpY19jYXN0PERlY2lzaW9uPihbZGVjb2RlciBkZWNvZGVJbnRGb3JL
ZXk6QCJEZWNpc2lvbiJdKSk7CisgICAgc2V0dGluZ3Muc2V0RGVjaXNpb25Qb2ludChzdGF0aWNf
Y2FzdDxEZWNpc2lvblBvaW50PihbZGVjb2RlciBkZWNvZGVJbnRGb3JLZXk6QCJEZWNpc2lvblBv
aW50Il0pKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAg
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2luZ2xldG9uKCkuc2V0RW5hYmxlZChmYWxzZSk7
CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlND
b2RlciAqKWNvZGVyCit7Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBDb250ZW50RmlsdGVyaW5n
UGx1Z0luIDogTlNPYmplY3QgPFdLV2ViUHJvY2Vzc1BsdWdJbj4KK0BlbmQKKworQGltcGxlbWVu
dGF0aW9uIENvbnRlbnRGaWx0ZXJpbmdQbHVnSW4geworICAgIFJldGFpblB0cjxNb2NrQ29udGVu
dEZpbHRlckVuYWJsZXI+IF9jb250ZW50RmlsdGVyRW5hYmxlcjsKKyAgICBSZXRhaW5QdHI8V0tX
ZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlcj4gX3BsdWdJbkNvbnRyb2xsZXI7Cit9CisKKy0gKHZv
aWQpd2ViUHJvY2Vzc1BsdWdJbjooV0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciAqKXBsdWdJ
bkNvbnRyb2xsZXIgaW5pdGlhbGl6ZVdpdGhPYmplY3Q6KGlkKWluaXRpYWxpemF0aW9uT2JqZWN0
Cit7CisgICAgQVNTRVJUKCFfcGx1Z0luQ29udHJvbGxlcik7CisgICAgX3BsdWdJbkNvbnRyb2xs
ZXIgPSBwbHVnSW5Db250cm9sbGVyOworICAgIFtwbHVnSW5Db250cm9sbGVyLnBhcmFtZXRlcnMg
YWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOk5TU3RyaW5nRnJvbUNsYXNzKFtNb2NrQ29udGVu
dEZpbHRlckVuYWJsZXIgY2xhc3NdKSBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25J
bml0aWFsIGNvbnRleHQ6TlVMTF07Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtbX3Bs
dWdJbkNvbnRyb2xsZXIgcGFyYW1ldGVyc10gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRo
Ok5TU3RyaW5nRnJvbUNsYXNzKFtNb2NrQ29udGVudEZpbHRlckVuYWJsZXIgY2xhc3NdKV07Cisg
ICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6
KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9u
YXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0Cit7CisgICAgaWQgY29udGVudEZp
bHRlckVuYWJsZXIgPSBbb2JqZWN0IHZhbHVlRm9yS2V5UGF0aDprZXlQYXRoXTsKKyAgICBBU1NF
UlQoW2NvbnRlbnRGaWx0ZXJFbmFibGVyIGlzS2luZE9mQ2xhc3M6W01vY2tDb250ZW50RmlsdGVy
RW5hYmxlciBjbGFzc11dKTsKKyAgICBfY29udGVudEZpbHRlckVuYWJsZXIgPSBjb250ZW50Rmls
dGVyRW5hYmxlcjsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyQ29jb2EvRG93bmxvYWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9Eb3dubG9hZC5tbQppbmRleCBjM2Y3YmVlZjhmMDQ0NjRiZDQ5M2JiMmMy
Zjc2NjYxNTIyOTA1MTVjLi45MjI3MjIwZDFjNjY2ZGM1MzlhODgyMTI5NWIyNjY0MzZlN2RjZTgz
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Eb3du
bG9hZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Eb3du
bG9hZC5tbQpAQCAtMjY1LDM0ICsyNjUsNSBAQCBURVNUKF9XS0Rvd25sb2FkLCBPcmlnaW5hdGlu
Z1dlYlZpZXcpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCi1A
aW50ZXJmYWNlIEFzeW5jaHJvbm91c0Rvd25sb2FkTmF2aWdhdGlvbkRlbGVnYXRlIDogTlNPYmpl
Y3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gQXN5bmNo
cm9ub3VzRG93bmxvYWROYXZpZ2F0aW9uRGVsZWdhdGUKLS0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdh
dGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAo
XikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgotewotICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4gewotICAgICAgICBkZWNp
c2lvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOwot
ICAgIH0pOwotfQotQGVuZAotCi1AaW50ZXJmYWNlIEFzeW5jaHJvbm91c0Rvd25sb2FkRGVsZWdh
dGUgOiBOU09iamVjdCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0
aW9uIEFzeW5jaHJvbm91c0Rvd25sb2FkRGVsZWdhdGUKLQotLSAodm9pZClfZG93bmxvYWREaWRT
dGFydDooX1dLRG93bmxvYWQgKilkb3dubG9hZAotewotICAgIGlzRG9uZSA9IHRydWU7Ci19Ci0K
LUBlbmQKLQotVEVTVChfV0tEb3dubG9hZCwgQXN5bmNocm9ub3VzRG93bmxvYWRQb2xpY3kpCi17
Ci0gICAgcnVuVGVzdChhZG9wdE5TKFtbQXN5bmNocm9ub3VzRG93bmxvYWROYXZpZ2F0aW9uRGVs
ZWdhdGUgYWxsb2NdIGluaXRdKS5nZXQoKSwgYWRvcHROUyhbW0FzeW5jaHJvbm91c0Rvd25sb2Fk
RGVsZWdhdGUgYWxsb2NdIGluaXRdKS5nZXQoKSwgc291cmNlVVJMKTsKLX0KLQogI2VuZGlmCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA2MjdjODhjNzk1YjVkZDg0ODYwYjY1NTliYzIxMmZlYjMwMjA3YWYwLi5j
YmRiYmMwOTY4OTY4ODY1MWQxYzQ1Y2E1ZmI0MGZlM2UyNDcxYTg3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEs
MjAgQEAKIDIwMTUtMDgtMjYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCisgICAg
ICAgIFtDb250ZW50IEZpbHRlcmluZ10gRGV0ZXJtaW5lIG5hdmlnYXRpb24gYW5kIGNvbnRlbnQg
cG9saWN5IGJlZm9yZSBjb250aW51aW5nIHRvIGZpbHRlciBhIGxvYWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODUwNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3RzIGZvciB3aGF0IGhh
cHBlbnMgaWYgdGhlIGNvbnRlbnQgZmlsdGVyIGRvZXMgbm90IG1ha2UgYSBkZWNpc2lvbiB3aGVu
IHRoZSBsb2FkIGZpbmlzaGVzLgorCisgICAgICAgICogY29udGVudGZpbHRlcmluZy9hbGxvdy1u
ZXZlci1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb250ZW50ZmlsdGVyaW5nL2Fs
bG93LW5ldmVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNvbnRlbnRmaWx0ZXJpbmcvYmxvY2st
bmV2ZXItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogY29udGVudGZpbHRlcmluZy9i
bG9jay1uZXZlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb250ZW50ZmlsdGVyaW5nL3Jlc291
cmNlcy9jb250ZW50ZmlsdGVyaW5nLmpzOgorCisyMDE1LTA4LTI2ICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KKwogICAgICAgICBSRUdSRVNTSU9OIChyMTg4OTg3KTogaW1wb3J0ZWQv
bW96aWxsYS9zdmcvZmlsdGVycy9mZUNvbnZvbHZlTWF0cml4LTEuc3ZnIGZhaWxzCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg0OTcKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY29udGVudGZpbHRlcmluZy9hbGxvdy1uZXZlci1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvY29udGVudGZpbHRlcmluZy9hbGxvdy1uZXZlci1leHBlY3RlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY0NTExMmZhMGZkZmYyZWIyNmUyZGIwN2ZjMDNlZGQ5MWE4MmY5MGIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb250ZW50ZmlsdGVyaW5nL2FsbG93LW5l
dmVyLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxpZnJh
bWUgc3JjPSJyZXNvdXJjZXMvcGFzcy5odG1sIj48L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2NvbnRlbnRmaWx0ZXJpbmcvYWxsb3ctbmV2ZXIuaHRtbCBiL0xheW91dFRlc3RzL2Nv
bnRlbnRmaWx0ZXJpbmcvYWxsb3ctbmV2ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTg4MWI3ZWZjMjI5
Zjc3ZGJmYmM0NGI0YmI4NzM2YzUyY2QxNGUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvY29udGVudGZpbHRlcmluZy9hbGxvdy1uZXZlci5odG1sCkBAIC0wLDAgKzEsOCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NvbnRlbnRmaWx0ZXJpbmcuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgdmFyIHNl
dHRpbmdzID0gd2luZG93LmludGVybmFscy5tb2NrQ29udGVudEZpbHRlclNldHRpbmdzOworICAg
IHRlc3RDb250ZW50RmlsdGVyaW5nKC8qIGRlY2lzaW9uUG9pbnQgKi9zZXR0aW5ncy5ERUNJU0lP
Tl9QT0lOVF9ORVZFUiwgLyogZGVjaXNpb24gKi9zZXR0aW5ncy5ERUNJU0lPTl9BTExPVyk7Cit9
Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbnRlbnRmaWx0ZXJpbmcvYmxv
Y2stbmV2ZXItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2NvbnRlbnRmaWx0ZXJpbmcvYmxv
Y2stbmV2ZXItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDUxMTJmYTBmZGZmMmViMjZlMmRi
MDdmYzAzZWRkOTFhODJmOTBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29udGVu
dGZpbHRlcmluZy9ibG9jay1uZXZlci1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3Bhc3MuaHRtbCI+PC9pZnJhbWU+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb250ZW50ZmlsdGVyaW5nL2Jsb2NrLW5ldmVyLmh0
bWwgYi9MYXlvdXRUZXN0cy9jb250ZW50ZmlsdGVyaW5nL2Jsb2NrLW5ldmVyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDg2NWUxYTk4NWE2Zjg1ZDBmMTFhZGJlMjA0NGJiZTI4MjYzODY4ZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2NvbnRlbnRmaWx0ZXJpbmcvYmxvY2stbmV2ZXIuaHRtbApA
QCAtMCwwICsxLDggQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9j
b250ZW50ZmlsdGVyaW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVy
bmFscykgeworICAgIHZhciBzZXR0aW5ncyA9IHdpbmRvdy5pbnRlcm5hbHMubW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczsKKyAgICB0ZXN0Q29udGVudEZpbHRlcmluZygvKiBkZWNpc2lvblBvaW50
ICovc2V0dGluZ3MuREVDSVNJT05fUE9JTlRfTkVWRVIsIC8qIGRlY2lzaW9uICovc2V0dGluZ3Mu
REVDSVNJT05fQkxPQ0spOworfQorPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9j
b250ZW50ZmlsdGVyaW5nL3Jlc291cmNlcy9jb250ZW50ZmlsdGVyaW5nLmpzIGIvTGF5b3V0VGVz
dHMvY29udGVudGZpbHRlcmluZy9yZXNvdXJjZXMvY29udGVudGZpbHRlcmluZy5qcwppbmRleCBi
NjgzMzliOTI5NmJmMjUzN2JhOGMxNjU3OWJiNjA5MDk2OWQxNzE2Li45YWU0ZmVkYTRhM2JkMDYz
MTcxNzkwZWRjZTgwNDU2OTNlOGFiMzViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb250ZW50
ZmlsdGVyaW5nL3Jlc291cmNlcy9jb250ZW50ZmlsdGVyaW5nLmpzCisrKyBiL0xheW91dFRlc3Rz
L2NvbnRlbnRmaWx0ZXJpbmcvcmVzb3VyY2VzL2NvbnRlbnRmaWx0ZXJpbmcuanMKQEAgLTUsNyAr
NSwxMiBAQCBmdW5jdGlvbiBfZG9UZXN0KGRlY2lzaW9uUG9pbnQsIGRlY2lzaW9uLCBkZWNpZGVB
ZnRlclVuYmxvY2tSZXF1ZXN0KQogICAgIHNldHRpbmdzLmRlY2lzaW9uUG9pbnQgPSBkZWNpc2lv
blBvaW50OwogICAgIHNldHRpbmdzLmRlY2lzaW9uID0gKGRlY2lkZUFmdGVyVW5ibG9ja1JlcXVl
c3QgPyBzZXR0aW5ncy5ERUNJU0lPTl9CTE9DSyA6IGRlY2lzaW9uKTsKICAgICAKLSAgICB2YXIg
YmxvY2tlZFN0cmluZ1RleHQgPSAoZGVjaXNpb24gPT09IHNldHRpbmdzLkRFQ0lTSU9OX0FMTE9X
ID8gIkZBSUwiIDogIlBBU1MiKTsKKyAgICB2YXIgYmxvY2tlZFN0cmluZ1RleHQ7CisgICAgaWYg
KGRlY2lzaW9uUG9pbnQgPT09IHNldHRpbmdzLkRFQ0lTSU9OX1BPSU5UX05FVkVSIHx8IGRlY2lz
aW9uID09PSBzZXR0aW5ncy5ERUNJU0lPTl9BTExPVykKKyAgICAgICAgYmxvY2tlZFN0cmluZ1Rl
eHQgPSAiRkFJTCI7CisgICAgZWxzZQorICAgICAgICBibG9ja2VkU3RyaW5nVGV4dCA9ICAiUEFT
UyI7CisKICAgICBpZiAoZGVjaWRlQWZ0ZXJVbmJsb2NrUmVxdWVzdCkgewogICAgICAgICBzZXR0
aW5ncy51bmJsb2NrUmVxdWVzdERlY2lzaW9uID0gZGVjaXNpb247CiAgICAgICAgIHNldHRpbmdz
LmJsb2NrZWRTdHJpbmcgPSAiPCFET0NUWVBFIGh0bWw+PHNjcmlwdD5mdW5jdGlvbiB1bmJsb2Nr
UmVxdWVzdERlbmllZCgpIHsgd2luZG93LnRvcC5wb3N0TWVzc2FnZSgndW5ibG9ja3JlcXVlc3Rk
ZW5pZWQnLCAnKicpOyB9PC9zY3JpcHQ+PGJvZHk+IiArIGJsb2NrZWRTdHJpbmdUZXh0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260314</attachid>
            <date>2015-08-31 13:53:46 -0700</date>
            <delta_ts>2015-08-31 16:10:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148506-20150831135329.patch</filename>
            <type>text/plain</type>
            <size>69189</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg5ZTliMjk5N2E2Nzk4
ZTAxNTJkNWMyOGM1MDQ3YTYyMzU5ZDdhYS4uYTA3MWEwODFjYTdiNTA0YmM2MDAxZDM2YTg4NTY1
NzgzNzg0ODBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDE1LTA4LTI2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29udGVudCBGaWx0ZXJpbmdd
IERldGVybWluZSBuYXZpZ2F0aW9uIGFuZCBjb250ZW50IHBvbGljeSBiZWZvcmUgY29udGludWlu
ZyB0byBmaWx0ZXIgYSBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDg1MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQcmlvciB0byB0aGlzIGNoYW5nZSwgQ29udGVudEZpbHRlciB3b3VsZCBoaWRl
IGZyb20gRG9jdW1lbnRMb2FkZXIgYWxsIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IGNhbGxiYWNr
cyB1bnRpbAorICAgICAgICBhIGRlY2lzaW9uIHdhcyBtYWRlLCB0aGVuIHJlcGxheSB0aGUgbWlz
c2VkIGNhbGxiYWNrcy4gVGhpcyBhcHByb2FjaCBpbnRlcmFjdGVkIHBvb3JseSB3aXRoIHNvbWUg
ZmVhdHVyZXMgb2YKKyAgICAgICAgdGhlIGxvYWRlciwgbm90YWJseSBhcHBjYWNoZSBhbmQgZG93
bmxvYWRzLiBJbiB0aGUgY2FzZSBvZiBhcHBjYWNoZSwgRG9jdW1lbnRMb2FkZXIgbWlnaHQgbm90
IGhhdmUgYSBjaGFuY2UgdG8KKyAgICAgICAgY2hlY2sgZm9yIHN1YnN0aXR1dGUgZGF0YSB1bnRp
bCB0aGUgb3JpZ2luYWwgbG9hZCBoYXMgZmluaXNoZWQsIHdhc3RpbmcgYmFuZHdpZHRoLCBhbmQg
bWlnaHQgcmVjZWl2ZSBkdXBsaWNhdGUKKyAgICAgICAgb3Igb3V0LW9mLW9yZGVyIGNhbGxiYWNr
cy4gSW4gdGhlIGNhc2Ugb2YgZG93bmxvYWRzLCBpdCB3b3VsZCBvZnRlbiBiZSB0b28gbGF0ZSB0
byBjb252ZXJ0IHRoZSBleGlzdGluZworICAgICAgICBjb25uZWN0aW9uIHRvIGEgZG93bmxvYWQs
IGxlYWRpbmcgdG8gcmVzdGFydGVkIGRvd25sb2FkcyBvciBvdXRyaWdodCBmYWlsdXJlcy4KKwor
ICAgICAgICBCYW5kYWlkcyB3ZXJlIHB1dCBpbiBwbGFjZSBmb3IgdGhlc2UgaXNzdWVzIGluIHIx
ODgxNTAsIHIxODg0ODYsIGFuZCByMTg4ODUxIHRvIGZpeCBjcmFzaGVzIG9yIHNlcmlvdXMKKyAg
ICAgICAgcmVncmVzc2lvbnMgaW4gYmVoYXZpb3IsIGJ1dCB0aGVzZSB3ZXJlbid0IGNvbXBsZXRl
IGZpeGVzLiBUaGV5IGRpZCBub3Qgc29sdmUgYW55IG9mIHRoZSBkdXBsaWNhdGUgZGF0YSBsb2Fk
aW5nCisgICAgICAgIHByb2JsZW1zLCBhbmQgdGhleSBkaWQgbm90IG1ha2UgZG93bmxvYWRzIHdv
cmsgcmVsaWFibHkgaW4gYWxsIGNhc2VzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcm9sbHMgb3V0
IHRoZSBiYW5kYWlkcyAoYnV0IGtlZXBzIHRoZWlyIHRlc3RzKSBhbmQgcmVwbGFjZXMgdGhlbSB3
aXRoIGEgbW9yZSByb2J1c3QgZml4LiBJbnN0ZWFkIG9mCisgICAgICAgIGhpZGluZyBjYWxsYmFj
a3MgZnJvbSBEb2N1bWVudExvYWRlciwgQ29udGVudEZpbHRlciBub3cgZGVsaXZlcnMgd2lsbFNl
bmRSZXF1ZXN0KCksIHJlZGlyZWN0UmVjZWl2ZWQoKSwgYW5kCisgICAgICAgIHJlc3BvbnNlUmVj
ZWl2ZWQoKSB0byBEb2N1bWVudExvYWRlciBpbW1lZGlhdGVseSwgYW5kIGNhbmNlbHMgZmlsdGVy
aW5nIGlmIERvY3VtZW50TG9hZGVyIGRlY2lkZXMgdG8gaWdub3JlIHRoZQorICAgICAgICBsb2Fk
LCBkb3dubG9hZCBpdCwgb3IgbG9hZCBzdWJzdGl0dXRlIGRhdGEuIENvbnRlbnRGaWx0ZXIgY29u
dGludWVzIHRvIGJ1ZmZlciBpbmNvbWluZyBkYXRhIHRvIHByZXZlbnQgcGFydGlhbAorICAgICAg
ICByZW5kZXJpbmcgb2YgYmxvY2tlZCBjb250ZW50LgorCisgICAgICAgIFRoZSBleGlzdGluZyB0
ZXN0cyBmb3IgcjE4ODE1MCBhbmQgcjE4ODg1MSB3ZXJlIGtlcHQsIHRoZSB0ZXN0IGZvciByMTg4
NDg2IHdhcyByZXdyaXR0ZW4gdG8gYmUgc3BlY2lmaWMgdG8KKyAgICAgICAgY29udGVudCBmaWx0
ZXJpbmcsIGFuZCBuZXcgdGVzdHMgd2VyZSBhZGRlZCB0byBjb3ZlciB0aGUgY2FzZSB3aGVyZSBD
b250ZW50RmlsdGVyIGlzIHN0aWxsIHVuZGVjaWRlZCBhZnRlciBhCisgICAgICAgIGxvYWQgZmlu
aXNoZXMuCisKKyAgICAgICAgVGVzdHM6IGNvbnRlbnRmaWx0ZXJpbmcvYWxsb3ctbmV2ZXIuaHRt
bAorICAgICAgICAgICAgICAgY29udGVudGZpbHRlcmluZy9ibG9jay1uZXZlci5odG1sCisgICAg
ICAgICAgICAgICBDb250ZW50RmlsdGVyaW5nLkFsbG93RG93bmxvYWRBZnRlckFkZERhdGEKKyAg
ICAgICAgICAgICAgIENvbnRlbnRGaWx0ZXJpbmcuQWxsb3dEb3dubG9hZEFmdGVyRmluaXNoZWRB
ZGRpbmdEYXRhCisgICAgICAgICAgICAgICBDb250ZW50RmlsdGVyaW5nLkFsbG93RG93bmxvYWRB
ZnRlclJlZGlyZWN0CisgICAgICAgICAgICAgICBDb250ZW50RmlsdGVyaW5nLkFsbG93RG93bmxv
YWRBZnRlclJlc3BvbnNlCisgICAgICAgICAgICAgICBDb250ZW50RmlsdGVyaW5nLkFsbG93RG93
bmxvYWRBZnRlcldpbGxTZW5kUmVxdWVzdAorICAgICAgICAgICAgICAgQ29udGVudEZpbHRlcmlu
Zy5BbGxvd0Rvd25sb2FkTmV2ZXIKKyAgICAgICAgICAgICAgIENvbnRlbnRGaWx0ZXJpbmcuQmxv
Y2tEb3dubG9hZEFmdGVyQWRkRGF0YQorICAgICAgICAgICAgICAgQ29udGVudEZpbHRlcmluZy5C
bG9ja0Rvd25sb2FkQWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEKKyAgICAgICAgICAgICAgIENvbnRl
bnRGaWx0ZXJpbmcuQmxvY2tEb3dubG9hZEFmdGVyUmVkaXJlY3QKKyAgICAgICAgICAgICAgIENv
bnRlbnRGaWx0ZXJpbmcuQmxvY2tEb3dubG9hZEFmdGVyUmVzcG9uc2UKKyAgICAgICAgICAgICAg
IENvbnRlbnRGaWx0ZXJpbmcuQmxvY2tEb3dubG9hZEFmdGVyV2lsbFNlbmRSZXF1ZXN0CisgICAg
ICAgICAgICAgICBDb250ZW50RmlsdGVyaW5nLkJsb2NrRG93bmxvYWROZXZlcgorCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjaXNpb25Qb2lu
dCk6IFRhdWdodCB0byBoYW5kbGUgRGVjaXNpb25Qb2ludDo6TmV2ZXIsIGFuZCByZXdyb3RlIHRv
CisgICAgICAgIG5vdCBuZWVkIGEgc2V0IG9mIGNvbnN0IHVpbnQ4X3RzIHRoYXQgbWlycm9yIHRo
ZSBEZWNpc2lvblBvaW50IGVudW0uCisgICAgICAgIChXZWJDb3JlOjpKU01vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OnRvSlNWYWx1ZSk6IFJld3JvdGUgdG8gbm90IG5lZWQgYSBzZXQgb2YgY29uc3QgdWludDhfdHMg
dGhhdCBtaXJyb3IgdGhlIERlY2lzaW9uIGVudW0uCisgICAgICAgIChXZWJDb3JlOjp0b0RlY2lz
aW9uKTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y3JlYXRlSWZFbmFibGVkKTogUmVuYW1lZCBmcm9t
IGNyZWF0ZUlmTmVlZGVkLCBhbmQgY2hhbmdlZCB0byB0YWtlIGEgRG9jdW1lbnRMb2FkZXImCisg
ICAgICAgIGluc3RlYWQgb2YgYSBEZWNpc2lvbkZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEZpbHRlcjo6Q29udGVudEZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RmlsdGVyOjpyZXNwb25zZVJlY2VpdmVkKTogSWYgbV9zdGF0ZSAhPSBCbG9ja2VkIGFmdGVyIGZp
bHRlcmluZywgY2FsbCBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZCgpLgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGF0YVJlY2VpdmVkKTogSWYgbV9zdGF0ZSA9PSBB
bGxvd2VkIGFmdGVyIGZpbHRlcmluZywgZGVsaXZlciBidWZmZXJlZCBkYXRhIHRvIERvY3VtZW50
TG9hZGVyLgorICAgICAgICBJZiBubyBmaWx0ZXJpbmcgd2FzIG5lY2Vzc2FyeSwgY2FsbCBEb2N1
bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKCkgZGlyZWN0bHkuCisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RmlsdGVyOjpyZWRpcmVjdFJlY2VpdmVkKTogSWYgbV9zdGF0ZSAhPSBCbG9ja2VkIGFm
dGVyIGZpbHRlcmluZywgY2FsbCBEb2N1bWVudExvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZCgpLgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6bm90aWZ5RmluaXNoZWQpOiBJZiBhbiBl
cnJvciBvY2N1cmVkLCBjYWxsIERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCgpIGltbWVk
aWF0ZWx5IGFuZCByZXR1cm4uCisgICAgICAgIElmIG1fc3RhdGUgIT0gQmxvY2tlZCBhZnRlciBm
aWx0ZXJpbmcsIGRlbGl2ZXIgYnVmZmVyZWQgZGF0YSB0byBEb2N1bWVudExvYWRlciBhbmQgY2Fs
bCBEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQoKS4KKyAgICAgICAgSWYgbm8gZmlsdGVy
aW5nIHdhcyBuZWNlc3NhcnkgYW5kIG1fc3RhdGUgIT0gQmxvY2tlZCwgY2FsbCBEb2N1bWVudExv
YWRlcjo6bm90aWZ5RmluaXNoZWQoKSBkaXJlY3RseS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRGaWx0ZXI6OmRpZERlY2lkZSk6IENhbGxlZCBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRl
ckRpZERlY2lkZSgpIGluc3RlYWQgb2YgbV9kZWNpc2lvbkZ1bmN0aW9uKCkuCisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKTogQWRkZWQgYSBoZWxw
ZXIgZnVuY3Rpb24gdG8gZGVsaXZlciBidWZmZXJlZCBkYXRhIHRvIERvY3VtZW50TG9hZGVyLgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y3JlYXRlSWZOZWVkZWQpOiBSZW5hbWVk
IHRvIGNyZWF0ZUlmRW5hYmxlZCgpLgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmg6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KTogU3RvcHBlZCBhc3NlcnRpbmcgdGhhdCByZWRp
cmVjdFJlc3BvbnNlIGlzIG51bGwgYW5kIG1hZGUgaXQgcGFydCBvZgorICAgICAgICB0aGUgaWYg
Y29uZGl0aW9uIGluc3RlYWQsIHNpbmNlIHdpbGxTZW5kUmVxdWVzdCgpIHdpbGwgbm93IGJlIGNh
bGxlZCBvbiByZWRpcmVjdHMgd2hlbiB0aGVyZSBpcyBhbiBhY3RpdmUgQ29udGVudEZpbHRlci4K
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3Vy
Y2UpOiBDYWxsZWQgYmVjb21lTWFpblJlc291cmNlQ2xpZW50KCkgaW5zdGVhZCBvZiBiZWNvbWVN
YWluUmVzb3VyY2VDbGllbnRJZkZpbHRlckFsbG93cygpLgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OmJlY29tZU1haW5SZXNvdXJjZUNsaWVudCk6IFJlbmFtZWQgZnJvbSBiZWNv
bWVNYWluUmVzb3VyY2VDbGllbnRJZkZpbHRlckFsbG93cygpLgorICAgICAgICBPbmx5IGNhbGxl
ZCBDb250ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZSgpIGlmIHRoZSBmaWx0
ZXIgc3RhdGUgaXMgSW5pdGlhbGl6ZWQsIHNpbmNlIENvbnRlbnRGaWx0ZXIKKyAgICAgICAgbWln
aHQgaGF2ZSBhbHJlYWR5IG1hZGUgYSBkZWNpc2lvbiBpbiB3aWxsU2VuZFJlcXVlc3QoKS4KKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkRGVjaWRlKTog
U3RvcHBlZCBkZWxldGluZyBtX2NvbnRlbnRGaWx0ZXIsIHNpbmNlIGl0IHdpbGwgY29udGludWUg
dG8gZGVsaXZlciBjYWxsYmFja3MKKyAgICAgICAgZXZlbiBhZnRlciBtYWtpbmcgYSBkZWNpc2lv
bi4gRml4ZWQgYSBidWcgd2hlcmUgd2Ugd2VyZSBjcmVhdGluZyB0d28gY29waWVzIG9mIENvbnRl
bnRGaWx0ZXIncyByZXBsYWNlbWVudCBkYXRhLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OnN5bnRoZXRpY1JlZGlyZWN0UmVjZWl2ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmJlY29tZU1haW5SZXNvdXJjZUNsaWVudElmRmlsdGVyQWxs
b3dzKTogUmVuYW1lZCB0byBiZWNvbWVNYWluUmVzb3VyY2VDbGllbnQoKS4KKyAgICAgICAgKiBs
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3RJbnRlcm5hbCk6IFJlbW92ZWQgcGFydCBvZiByMTg4ODUxLgorICAgICAg
ICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJy
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKTogUmVtb3ZlZCBwYXJ0IG9mIHIxODg0
ODYuCisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJhd1Jlc291cmNlOjpkaWRBZGRDbGllbnQpOiBSZW1vdmVkIHBhcnQgb2YgcjE4ODE1MC4KKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50OjpzeW50aGV0aWNSZWRpcmVjdFJlY2Vp
dmVkKTogUmVtb3ZlZCBwYXJ0IG9mIHIxODgxNTAuCisgICAgICAgICogdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzLmg6IERlZmluZWQgRGVjaXNpb25Qb2ludDo6TmV2ZXIuCisgICAg
ICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlkbDogRGVmaW5lZCBERUNJ
U0lPTl9QT0lOVF9ORVZFUi4KKwogMjAxNS0wOC0zMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9y
dG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBpT1MgV2ViS2l0MiBmaW5kLWluLXBhZ2UgZG9lc24n
dCBzdXBwb3J0IG11bHRpLWxpbmUgcmVzdWx0cywgaXMgb2Z0ZW4gYmxhbmsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwppbmRleCA0NTg2MWRlYjRkMzVmZGIwYTQ3N2QzODQ2ZmI2NzMyZTlhZWMxZGZkLi5mZjFhODVk
ZmU3YTA3YzE3NTJjM2NkNTk0ZmE2ZTc5ZWNkZDZmNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTUtMDgtMjYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb250ZW50IEZpbHRlcmluZ10gRGV0ZXJtaW5lIG5hdmlnYXRpb24gYW5kIGNv
bnRlbnQgcG9saWN5IGJlZm9yZSBjb250aW51aW5nIHRvIGZpbHRlciBhIGxvYWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODUwNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlbGV0ZWQgcGFydHMgb2Yg
cjE4ODQ4NiBhbmQgcjE4ODg1MS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNv
dXJjZUxvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCk6CisKIDIwMTUt
MDgtMjggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNaWdyYXRlIEdyYXBoaWNzQ29udGV4dHMgZnJvbSBwb2ludGVycyB0byByZWZlcmVuY2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKaW5kZXggMDQ2MjQ1ZDdjNDg2YzU4NzVjZDk2NDcyNWU1NjhiOWE4Y2MwYTk3
Yi4uNDE1MWJmY2E1YTlkMTNmNzIwOGQ2MjBkNWEyYjZlMGM1ZGYxZjIwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE1LTA4LTI3ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KKworICAgICAgICBbQ29udGVudCBGaWx0ZXJpbmddIERldGVybWluZSBuYXZpZ2F0
aW9uIGFuZCBjb250ZW50IHBvbGljeSBiZWZvcmUgY29udGludWluZyB0byBmaWx0ZXIgYSBsb2Fk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZWxldGVk
IHBhcnQgb2YgcjE4ODg1MS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxNS0wOC0zMSAgU3VuZ21h
bm4gQ2hvICA8c3VuZ21hbm4uY2hvQG5hdmVyY29ycC5jb20+CiAKICAgICAgICAgRml4IHRoZSBX
aW5DYWlybyBidWlsZCBhZnRlciBsYW5kaW5nIG9mIHdlYmtpdC5vcmcvYi8xNDg1NjEuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggNDc4ZTU3NWQ4OWY4NzMyYjY1YjQ3YzdiM2I1YTM4NzVjY2Y5Nzk3OS4uMjc5YTdl
OWU5YTRhNWI0ZjY4YjAzN2ExY2UwNTExNTA5MzhkNGUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDE1LTA4LTI2ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBbQ29udGVudCBGaWx0ZXJpbmddIERldGVybWluZSBuYXZpZ2F0aW9uIGFuZCBjb250ZW50
IHBvbGljeSBiZWZvcmUgY29udGludWluZyB0byBmaWx0ZXIgYSBsb2FkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MDYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZWxldGVkIHBhcnRzIG9mIHIxODg0
ODYgYW5kIHIxODg4NTEuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCk6
CisKIDIwMTUtMDgtMzEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgaU9TIFdlYktpdDIgZmluZC1pbi1wYWdlIGRvZXNuJ3Qgc3VwcG9ydCBtdWx0aS1s
aW5lIHJlc3VsdHMsIGlzIG9mdGVuIGJsYW5rCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNw
cAppbmRleCA4MzMxODc1MTkwZWVhOTgzNzFiZmI2ZWVlYzAwNzU1YjkyZmY5YTgyLi45YmMxNGVi
M2EzNDZhYmM0YzNhMmIyYzU1Y2U3NjhiMWMxNmMyNGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
c0N1c3RvbS5jcHAKQEAgLTM4LDI4ICszOCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2lu
ZyBEZWNpc2lvbiA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOwogdXNpbmcg
RGVjaXNpb25Qb2ludCA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ7
CiAKLS8vIE11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggdmFsdWVzIGluIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MuaWRsLgotY29uc3QgdWludDhfdCBkZWNpc2lvblBvaW50QWZ0ZXJXaWxsU2Vu
ZFJlcXVlc3QgPSAwOwotY29uc3QgdWludDhfdCBkZWNpc2lvblBvaW50QWZ0ZXJSZWRpcmVjdCA9
IDE7Ci1jb25zdCB1aW50OF90IGRlY2lzaW9uUG9pbnRBZnRlclJlc3BvbnNlID0gMjsKLWNvbnN0
IHVpbnQ4X3QgZGVjaXNpb25Qb2ludEFmdGVyQWRkRGF0YSA9IDM7Ci1jb25zdCB1aW50OF90IGRl
Y2lzaW9uUG9pbnRBZnRlckZpbmlzaGVkQWRkaW5nRGF0YSA9IDQ7Ci1jb25zdCB1aW50OF90IGRl
Y2lzaW9uQWxsb3cgPSAwOwotY29uc3QgdWludDhfdCBkZWNpc2lvbkJsb2NrID0gMTsKLQogSlNW
YWx1ZSBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRlY2lzaW9uUG9pbnQoRXhlY1N0YXRl
KikgY29uc3QKIHsKLSAgICBzd2l0Y2ggKGltcGwoKS5kZWNpc2lvblBvaW50KCkpIHsKKyAgICBE
ZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQgPSBpbXBsKCkuZGVjaXNpb25Qb2ludCgpOworICAg
IHN3aXRjaCAoZGVjaXNpb25Qb2ludCkgewogICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJX
aWxsU2VuZFJlcXVlc3Q6Ci0gICAgICAgIHJldHVybiBqc051bWJlcihkZWNpc2lvblBvaW50QWZ0
ZXJXaWxsU2VuZFJlcXVlc3QpOwogICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZWRpcmVj
dDoKLSAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGRlY2lzaW9uUG9pbnRBZnRlclJlZGlyZWN0KTsK
ICAgICBjYXNlIERlY2lzaW9uUG9pbnQ6OkFmdGVyUmVzcG9uc2U6Ci0gICAgICAgIHJldHVybiBq
c051bWJlcihkZWNpc2lvblBvaW50QWZ0ZXJSZXNwb25zZSk7CiAgICAgY2FzZSBEZWNpc2lvblBv
aW50OjpBZnRlckFkZERhdGE6Ci0gICAgICAgIHJldHVybiBqc051bWJlcihkZWNpc2lvblBvaW50
QWZ0ZXJBZGREYXRhKTsKICAgICBjYXNlIERlY2lzaW9uUG9pbnQ6OkFmdGVyRmluaXNoZWRBZGRp
bmdEYXRhOgotICAgICAgICByZXR1cm4ganNOdW1iZXIoZGVjaXNpb25Qb2ludEFmdGVyRmluaXNo
ZWRBZGRpbmdEYXRhKTsKKyAgICBjYXNlIERlY2lzaW9uUG9pbnQ6Ok5ldmVyOgorICAgICAgICBy
ZXR1cm4ganNOdW1iZXIoc3RhdGljX2Nhc3Q8dWludDhfdD4oZGVjaXNpb25Qb2ludCkpOwogICAg
IH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNzIsMjEgKzYxLDE1IEBAIHZvaWQg
SlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBvaW50KEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2YWx1CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBzd2l0Y2ggKG5hdGl2ZVZhbHVlKSB7Ci0gICAgY2FzZSBkZWNpc2lv
blBvaW50QWZ0ZXJXaWxsU2VuZFJlcXVlc3Q6Ci0gICAgICAgIGltcGwoKS5zZXREZWNpc2lvblBv
aW50KERlY2lzaW9uUG9pbnQ6OkFmdGVyV2lsbFNlbmRSZXF1ZXN0KTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgZGVjaXNpb25Qb2ludEFmdGVyUmVkaXJlY3Q6Ci0gICAgICAgIGltcGwoKS5z
ZXREZWNpc2lvblBvaW50KERlY2lzaW9uUG9pbnQ6OkFmdGVyUmVkaXJlY3QpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBkZWNpc2lvblBvaW50QWZ0ZXJSZXNwb25zZToKLSAgICAgICAgaW1w
bCgpLnNldERlY2lzaW9uUG9pbnQoRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIGRlY2lzaW9uUG9pbnRBZnRlckFkZERhdGE6Ci0gICAgICAg
IGltcGwoKS5zZXREZWNpc2lvblBvaW50KERlY2lzaW9uUG9pbnQ6OkFmdGVyQWRkRGF0YSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIGRlY2lzaW9uUG9pbnRBZnRlckZpbmlzaGVkQWRkaW5n
RGF0YToKLSAgICAgICAgaW1wbCgpLnNldERlY2lzaW9uUG9pbnQoRGVjaXNpb25Qb2ludDo6QWZ0
ZXJGaW5pc2hlZEFkZGluZ0RhdGEpOworICAgIERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCB7
IHN0YXRpY19jYXN0PERlY2lzaW9uUG9pbnQ+KG5hdGl2ZVZhbHVlKSB9OworICAgIHN3aXRjaCAo
ZGVjaXNpb25Qb2ludCkgeworICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJXaWxsU2VuZFJl
cXVlc3Q6CisgICAgY2FzZSBEZWNpc2lvblBvaW50OjpBZnRlclJlZGlyZWN0OgorICAgIGNhc2Ug
RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZToKKyAgICBjYXNlIERlY2lzaW9uUG9pbnQ6OkFm
dGVyQWRkRGF0YToKKyAgICBjYXNlIERlY2lzaW9uUG9pbnQ6OkFmdGVyRmluaXNoZWRBZGRpbmdE
YXRhOgorICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6TmV2ZXI6CisgICAgICAgIGltcGwoKS5zZXRE
ZWNpc2lvblBvaW50KGRlY2lzaW9uUG9pbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC05Nyw5ICs4MCw4IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSB0b0pTVmFsdWUoRGVjaXNpb24g
ZGVjaXNpb24pCiB7CiAgICAgc3dpdGNoIChkZWNpc2lvbikgewogICAgIGNhc2UgRGVjaXNpb246
OkFsbG93OgotICAgICAgICByZXR1cm4ganNOdW1iZXIoZGVjaXNpb25BbGxvdyk7CiAgICAgY2Fz
ZSBEZWNpc2lvbjo6QmxvY2s6Ci0gICAgICAgIHJldHVybiBqc051bWJlcihkZWNpc2lvbkJsb2Nr
KTsKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGRlY2lzaW9u
KSk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMTIsMTEgKzk0LDEx
IEBAIHN0YXRpYyBpbmxpbmUgRGVjaXNpb24gdG9EZWNpc2lvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUpCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gRGVjaXNpb246OkFsbG93OwogCi0gICAgc3dpdGNoIChuYXRpdmVWYWx1ZSkgewotICAgIGNh
c2UgZGVjaXNpb25BbGxvdzoKLSAgICAgICAgcmV0dXJuIERlY2lzaW9uOjpBbGxvdzsKLSAgICBj
YXNlIGRlY2lzaW9uQmxvY2s6Ci0gICAgICAgIHJldHVybiBEZWNpc2lvbjo6QmxvY2s7CisgICAg
RGVjaXNpb24gZGVjaXNpb24geyBzdGF0aWNfY2FzdDxEZWNpc2lvbj4obmF0aXZlVmFsdWUpIH07
CisgICAgc3dpdGNoIChkZWNpc2lvbikgeworICAgIGNhc2UgRGVjaXNpb246OkFsbG93OgorICAg
IGNhc2UgRGVjaXNpb246OkJsb2NrOgorICAgICAgICByZXR1cm4gZGVjaXNpb247CiAgICAgfQog
CiAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaW5nOjpmb3JtYXQoIiV1IGlzIG5vdCBhIHZh
bGlkIGRlY2lzaW9uIHZhbHVlLiIsIG5hdGl2ZVZhbHVlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlci5jcHAKaW5kZXggMzJhODczZTBkNDAxN2FhM2Y0ZWFlYjQ4N2IxMjc3NDlk
MjhkNGUwZS4uMjVkNzBlZTI5ZDJhZjM3YjBlMzZlMmYwMjkwZjk3OGJiZWE2NDIxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2UuaCIKICNpbmNsdWRlICJDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oIgogI2lu
Y2x1ZGUgIlBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgiCkBAIC01OCw3ICs1OSw3IEBA
IFZlY3RvcjxDb250ZW50RmlsdGVyOjpUeXBlPiYgQ29udGVudEZpbHRlcjo6dHlwZXMoKQogICAg
IHJldHVybiB0eXBlczsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IENvbnRl
bnRGaWx0ZXI6OmNyZWF0ZUlmTmVlZGVkKERlY2lzaW9uRnVuY3Rpb24gZGVjaXNpb25GdW5jdGlv
bikKK3N0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBDb250ZW50RmlsdGVyOjpjcmVhdGVJ
ZkVuYWJsZWQoRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyKQogewogICAgIENvbnRhaW5l
ciBmaWx0ZXJzOwogICAgIGZvciAoYXV0byYgdHlwZSA6IHR5cGVzKCkpIHsKQEAgLTczLDEyICs3
NCwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gQ29udGVudEZpbHRlcjo6Y3Jl
YXRlSWZOZWVkZWQoRGVjaXNpb25GdW5jdGlvbiBkZQogICAgIGlmIChmaWx0ZXJzLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxDb250ZW50RmlsdGVyPihXVEY6Om1vdmUoZmlsdGVycyksIFdURjo6bW92ZShkZWNpc2lvbkZ1
bmN0aW9uKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudEZpbHRlcj4oV1RG
Ojptb3ZlKGZpbHRlcnMpLCBkb2N1bWVudExvYWRlcik7CiB9CiAKLUNvbnRlbnRGaWx0ZXI6OkNv
bnRlbnRGaWx0ZXIoQ29udGFpbmVyIGNvbnRlbnRGaWx0ZXJzLCBEZWNpc2lvbkZ1bmN0aW9uIGRl
Y2lzaW9uRnVuY3Rpb24pCitDb250ZW50RmlsdGVyOjpDb250ZW50RmlsdGVyKENvbnRhaW5lciBj
b250ZW50RmlsdGVycywgRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyKQogICAgIDogbV9j
b250ZW50RmlsdGVycyB7IFdURjo6bW92ZShjb250ZW50RmlsdGVycykgfQotICAgICwgbV9kZWNp
c2lvbkZ1bmN0aW9uIHsgV1RGOjptb3ZlKGRlY2lzaW9uRnVuY3Rpb24pIH0KKyAgICAsIG1fZG9j
dW1lbnRMb2FkZXIgeyBkb2N1bWVudExvYWRlciB9CiB7CiAgICAgTE9HKENvbnRlbnRGaWx0ZXJp
bmcsICJDcmVhdGluZyBDb250ZW50RmlsdGVyIHdpdGggJXp1IHBsYXRmb3JtIGNvbnRlbnQgZmls
dGVyKHMpLlxuIiwgbV9jb250ZW50RmlsdGVycy5zaXplKCkpOwogICAgIEFTU0VSVCghbV9jb250
ZW50RmlsdGVycy5pc0VtcHR5KCkpOwpAQCAtMTQ3LDM5ICsxNDgsNzggQEAgU3RyaW5nIENvbnRl
bnRGaWx0ZXI6OnVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KCkgY29uc3QKIAogdm9pZCBDb250
ZW50RmlsdGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CisgICAgQVNTRVJUKHJlc291cmNlKTsK
KyAgICBBU1NFUlQocmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOworICAgIEFTU0VSVChtX3N0
YXRlICE9IFN0YXRlOjpJbml0aWFsaXplZCk7CiAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJD
b250ZW50RmlsdGVyIHJlY2VpdmVkIHJlc3BvbnNlIGZyb20gPCVzPi5cbiIsIHJlc3BvbnNlLnVy
bCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0
ZTo6RmlsdGVyaW5nKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNvdXJjZSA9PSBt
X21haW5SZXNvdXJjZS5nZXQoKSk7Ci0gICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2Nr
ZWQoWyZyZXNwb25zZV0oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7Ci0g
ICAgICAgIGNvbnRlbnRGaWx0ZXIucmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSk7Ci0gICAgfSk7
CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7CisgICAgICAgIGZvckVh
Y2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFsmcmVzcG9uc2VdKFBsYXRmb3JtQ29udGVudEZp
bHRlciYgY29udGVudEZpbHRlcikgeworICAgICAgICAgICAgY29udGVudEZpbHRlci5yZXNwb25z
ZVJlY2VpdmVkKHJlc3BvbnNlKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgaWYgKG1fc3Rh
dGUgIT0gU3RhdGU6OkJsb2NrZWQpCisgICAgICAgIG1fZG9jdW1lbnRMb2FkZXIucmVzcG9uc2VS
ZWNlaXZlZChyZXNvdXJjZSwgcmVzcG9uc2UpOwogfQogCiB2b2lkIENvbnRlbnRGaWx0ZXI6OmRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpCiB7CisgICAgQVNTRVJUKHJlc291cmNlKTsKKyAgICBBU1NFUlQocmVzb3VyY2Ug
PT0gbV9tYWluUmVzb3VyY2UpOworICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpJbml0aWFs
aXplZCk7CiAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVk
ICVkIGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgbGVuZ3RoLCByZXNvdXJjZS0+dXJsKCku
c3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwotICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpG
aWx0ZXJpbmcpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fbWFp
blJlc291cmNlLmdldCgpKTsKLSAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChb
ZGF0YSwgbGVuZ3RoXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKLSAg
ICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEsIGxlbmd0aCk7Ci0gICAgfSk7CisKKyAg
ICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7CisgICAgICAgIGZvckVhY2hDb250
ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhLCBsZW5ndGhdKFBsYXRmb3JtQ29udGVudEZpbHRl
ciYgY29udGVudEZpbHRlcikgeworICAgICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGRh
dGEsIGxlbmd0aCk7CisgICAgICAgIH0pOworCisgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRl
OjpBbGxvd2VkKQorICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YSgqcmVzb3VyY2UpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93
ZWQpCisgICAgICAgIG1fZG9jdW1lbnRMb2FkZXIuZGF0YVJlY2VpdmVkKHJlc291cmNlLCBkYXRh
LCBsZW5ndGgpOwogfQogCiB2b2lkIENvbnRlbnRGaWx0ZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7Ci0gICAgQVNTRVJUKG1fc3RhdGUg
PT0gU3RhdGU6OkZpbHRlcmluZyk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3Vy
Y2UgPT0gbV9tYWluUmVzb3VyY2UuZ2V0KCkpOwotICAgIHdpbGxTZW5kUmVxdWVzdChyZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICBBU1NFUlQocmVzb3VyY2UpOworICAgIEFTU0VSVChy
ZXNvdXJjZSA9PSBtX21haW5SZXNvdXJjZSk7CisgICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6
OkluaXRpYWxpemVkKTsKKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpCisg
ICAgICAgIHdpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKworICAg
IGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKQorICAgICAgICBtX2RvY3VtZW50TG9hZGVy
LnJlZGlyZWN0UmVjZWl2ZWQocmVzb3VyY2UsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwog
fQogCiB2b2lkIENvbnRlbnRGaWx0ZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSkKIHsKKyAgICBBU1NFUlQocmVzb3VyY2UpOworICAgIEFTU0VSVChyZXNvdXJjZSA9
PSBtX21haW5SZXNvdXJjZSk7CisgICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6OkluaXRpYWxp
emVkKTsKICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5p
c2ggZmlsdGVyaW5nIG1haW4gcmVzb3VyY2UgYXQgPCVzPi5cbiIsIHJlc291cmNlLT51cmwoKS5z
dHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkZp
bHRlcmluZyk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9tYWlu
UmVzb3VyY2UuZ2V0KCkpOwotICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtd
KFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikgewotICAgICAgICBjb250ZW50
RmlsdGVyLmZpbmlzaGVkQWRkaW5nRGF0YSgpOwotICAgIH0pOworCisgICAgaWYgKHJlc291cmNl
LT5lcnJvck9jY3VycmVkKCkpIHsKKyAgICAgICAgbV9kb2N1bWVudExvYWRlci5ub3RpZnlGaW5p
c2hlZChyZXNvdXJjZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0
ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7CisgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50
aWxCbG9ja2VkKFtdKFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikgeworICAg
ICAgICAgICAgY29udGVudEZpbHRlci5maW5pc2hlZEFkZGluZ0RhdGEoKTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpCisgICAgICAgICAgICBk
ZWxpdmVyUmVzb3VyY2VEYXRhKCpyZXNvdXJjZSk7CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUg
IT0gU3RhdGU6OkJsb2NrZWQpCisgICAgICAgIG1fZG9jdW1lbnRMb2FkZXIubm90aWZ5RmluaXNo
ZWQocmVzb3VyY2UpOwogfQogCiB2b2lkIENvbnRlbnRGaWx0ZXI6OmZvckVhY2hDb250ZW50Rmls
dGVyVW50aWxCbG9ja2VkKHN0ZDo6ZnVuY3Rpb248dm9pZChQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIm
KT4gZnVuY3Rpb24pCkBAIC0yMTMsMTAgKzI1MywxNCBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRp
ZERlY2lkZShTdGF0ZSBzdGF0ZSkKICAgICBBU1NFUlQoc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQg
fHwgc3RhdGUgPT0gU3RhdGU6OkJsb2NrZWQpOwogICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAi
Q29udGVudEZpbHRlciBkZWNpZGVkIGxvYWQgc2hvdWxkIGJlICVzIGZvciBtYWluIHJlc291cmNl
IGF0IDwlcz4uXG4iLCBzdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCA/ICJhbGxvd2VkIiA6ICJibG9j
a2VkIiwgbV9tYWluUmVzb3VyY2UgPyBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNj
aWkoKS5kYXRhKCkgOiAiIik7CiAgICAgbV9zdGF0ZSA9IHN0YXRlOworICAgIG1fZG9jdW1lbnRM
b2FkZXIuY29udGVudEZpbHRlckRpZERlY2lkZSgpOworfQogCi0gICAgLy8gQ2FsbGluZyBtX2Rl
Y2lzaW9uRnVuY3Rpb24gbWlnaHQgZGVsZXRlIHx0aGlzfC4KLSAgICBpZiAobV9kZWNpc2lvbkZ1
bmN0aW9uKQotICAgICAgICBtX2RlY2lzaW9uRnVuY3Rpb24oKTsKK3ZvaWQgQ29udGVudEZpbHRl
cjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit7CisgICAg
QVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBCdWZmZXJEYXRhKTsKKyAg
ICBjb25zdCBTaGFyZWRCdWZmZXImIHJlc291cmNlQnVmZmVyID0gKnJlc291cmNlLnJlc291cmNl
QnVmZmVyKCk7CisgICAgbV9kb2N1bWVudExvYWRlci5kYXRhUmVjZWl2ZWQoJnJlc291cmNlLCBy
ZXNvdXJjZUJ1ZmZlci5kYXRhKCksIHJlc291cmNlQnVmZmVyLnNpemUoKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250
ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCmluZGV4
IGI0ZTlkZDljMGZkNmQ5YmQ2YzkzYjgxY2FhZTk5MGJjMDQyMTZiNzcuLmEyMDdjZWRiMWU3MmI0
NTFiNzJmZDJiYjljMmZlNGJkOTk5MjRjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENh
Y2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOworY2xh
c3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXI7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CiAKQEAgLTQ3LDggKzQ4LDcgQEAgY2xhc3MgQ29udGVudEZpbHRlciBmaW5h
bCA6IHByaXZhdGUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgewogcHVibGljOgogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCBhZGRUeXBlKCkgeyB0eXBlcygpLmFwcGVuZCh0
eXBlPFQ+KCkpOyB9CiAKLSAgICB1c2luZyBEZWNpc2lvbkZ1bmN0aW9uID0gc3RkOjpmdW5jdGlv
bjx2b2lkKCk+OwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gY3Jl
YXRlSWZOZWVkZWQoRGVjaXNpb25GdW5jdGlvbik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxDb250ZW50RmlsdGVyPiBjcmVhdGVJZkVuYWJsZWQoRG9jdW1lbnRMb2FkZXImKTsKICAgICB+
Q29udGVudEZpbHRlcigpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVybFNj
aGVtZSgpIHsgcmV0dXJuICJ4LWFwcGxlLWNvbnRlbnQtZmlsdGVyIjsgfQpAQCAtNzYsOCArNzYs
OCBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0b3I8VHlwZT4mIHR5
cGVzKCk7CiAKICAgICB1c2luZyBDb250YWluZXIgPSBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBs
YXRmb3JtQ29udGVudEZpbHRlcj4+OwotICAgIGZyaWVuZCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVu
dEZpbHRlcj4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50RmlsdGVyPihDb250YWluZXImJiwgRGVj
aXNpb25GdW5jdGlvbiYmKTsKLSAgICBDb250ZW50RmlsdGVyKENvbnRhaW5lciwgRGVjaXNpb25G
dW5jdGlvbik7CisgICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBzdGQ6
Om1ha2VfdW5pcXVlPENvbnRlbnRGaWx0ZXI+KENvbnRhaW5lciYmLCBEb2N1bWVudExvYWRlciYp
OworICAgIENvbnRlbnRGaWx0ZXIoQ29udGFpbmVyLCBEb2N1bWVudExvYWRlciYpOwogCiAgICAg
Ly8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CkBAIC04OSw5
ICs4OSwxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmb3JFYWNoQ29udGVudEZpbHRlclVudGls
QmxvY2tlZChzdGQ6OmZ1bmN0aW9uPHZvaWQoUGxhdGZvcm1Db250ZW50RmlsdGVyJik+KTsKICAg
ICB2b2lkIGRpZERlY2lkZShTdGF0ZSk7CisgICAgdm9pZCBkZWxpdmVyUmVzb3VyY2VEYXRhKENh
Y2hlZFJlc291cmNlJik7CiAKICAgICBjb25zdCBDb250YWluZXIgbV9jb250ZW50RmlsdGVyczsK
LSAgICBjb25zdCBEZWNpc2lvbkZ1bmN0aW9uIG1fZGVjaXNpb25GdW5jdGlvbjsKKyAgICBEb2N1
bWVudExvYWRlciYgbV9kb2N1bWVudExvYWRlcjsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSYXdSZXNvdXJjZT4gbV9tYWluUmVzb3VyY2U7CiAgICAgUGxhdGZvcm1Db250ZW50Rmls
dGVyKiBtX2Jsb2NraW5nQ29udGVudEZpbHRlciB7IG51bGxwdHIgfTsKICAgICBTdGF0ZSBtX3N0
YXRlIHsgU3RhdGU6OkluaXRpYWxpemVkIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAppbmRleCA4Y2E5N2JhNzllOTcyNzRkM2NjODEzZDUyNzk2MDZiZmU3OWI2NTUy
Li5kZjZlOTBhOWRhMmFjNzI4OTVlZDdiYjZhM2E3Y2IzZDY5MjEwMjlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBEb2N1bWVu
dExvYWRlcjo6RG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXEsIGNvbnN0
IFN1YnN0aXR1dGVEYXRhJgogICAgICwgbV9zdWJyZXNvdXJjZUxvYWRlcnNBcmVQYWdlQ2FjaGVB
Y2NlcHRhYmxlKGZhbHNlKQogICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdChzdGQ6Om1ha2Vf
dW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcykpCiAjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQotICAgICwgbV9jb250ZW50RmlsdGVyKCFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlk
KCkgPyBDb250ZW50RmlsdGVyOjpjcmVhdGVJZk5lZWRlZChzdGQ6OmJpbmQoJkRvY3VtZW50TG9h
ZGVyOjpjb250ZW50RmlsdGVyRGlkRGVjaWRlLCB0aGlzKSkgOiBudWxscHRyKQorICAgICwgbV9j
b250ZW50RmlsdGVyKCFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgPyBDb250ZW50RmlsdGVyOjpj
cmVhdGVJZkVuYWJsZWQoKnRoaXMpIDogbnVsbHB0cikKICNlbmRpZgogewogfQpAQCAtNDg5LDE0
ICs0ODksNiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JgogICAgIHdpbGxTZW5kUmVxdWVzdChy
ZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6c3lu
dGhldGljUmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSwgYm9vbCYgc2hvdWxkQ29udGludWUpCi17Ci0gICAgcmVkaXJlY3RSZWNlaXZlZChyZXNvdXJj
ZSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Ci0KLSAgICAvLyBJZiB3ZSB3aWxsIHNvb24g
cmVtb3ZlIG91ciByZWZlcmVuY2UgdG8gdGhlIENhY2hlZFJhd1Jlc291cmNlIGluIGZhdm9yIG9m
IGEgU3Vic3RpdHV0ZURhdGEgbG9hZCwgd2UgZG9uJ3Qgd2FudCB0byBjb250aW51ZSByZWNlaXZp
bmcgc3ludGhldGljIENhY2hlZFJhd1Jlc291cmNlIGNhbGxiYWNrcy4KLSAgICBzaG91bGRDb250
aW51ZSA9ICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKTsKLX0KLQogdm9pZCBEb2N1bWVudExv
YWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICAvLyBOb3RlIHRoYXQg
dGhlcmUgYXJlIG5vIGFzc2VydHMgaGVyZSBhcyB0aGVyZSBhcmUgZm9yIHRoZSBvdGhlciBjYWxs
YmFja3MuIFRoaXMgaXMgZHVlIHRvIHRoZQpAQCAtNTQ0LDggKzUzNiw3IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNv
bnN0IFJlc291cmNlCiAgICAgfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAg
IGlmIChtX2NvbnRlbnRGaWx0ZXIpIHsKLSAgICAgICAgQVNTRVJUKHJlZGlyZWN0UmVzcG9uc2Uu
aXNOdWxsKCkpOworICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgcmVkaXJlY3RSZXNwb25zZS5p
c051bGwoKSkgewogICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPndpbGxTZW5kUmVxdWVzdChuZXdS
ZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKICAgICAgICAgaWYgKG5ld1JlcXVlc3QuaXNOdWxs
KCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDYyLDExICsxNDUzLDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCkKICAgICAgICAgZnJhbWVMb2Fk
ZXIoKS0+bm90aWZpZXIoKS5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCh0aGlzLCBtX2lkZW50aWZp
ZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNl
KCkpOwogICAgIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAgICBiZWNvbWVN
YWluUmVzb3VyY2VDbGllbnRJZkZpbHRlckFsbG93cygpOwotI2Vsc2UKLSAgICBtX21haW5SZXNv
dXJjZS0+YWRkQ2xpZW50KHRoaXMpOwotI2VuZGlmCisgICAgYmVjb21lTWFpblJlc291cmNlQ2xp
ZW50KCk7CiAKICAgICAvLyBBIGJ1bmNoIG9mIGhlYWRlcnMgYXJlIHNldCB3aGVuIHRoZSB1bmRl
cmx5aW5nIFJlc291cmNlTG9hZGVyIGlzIGNyZWF0ZWQsIGFuZCBtX3JlcXVlc3QgbmVlZHMgdG8g
aW5jbHVkZSB0aG9zZS4KICAgICBpZiAobWFpblJlc291cmNlTG9hZGVyKCkpCkBAIC0xNjA0LDYg
KzE1OTEsMTggQEAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBEb2N1bWVudExvYWRlcjo6
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGEKICAgICByZXR1cm4gbV9zaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5OwogfQogCit2b2lkIERvY3VtZW50TG9hZGVyOjpiZWNvbWVN
YWluUmVzb3VyY2VDbGllbnQoKQoreworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyAg
ICBpZiAobV9jb250ZW50RmlsdGVyICYmIG1fY29udGVudEZpbHRlci0+c3RhdGUoKSA9PSBDb250
ZW50RmlsdGVyOjpTdGF0ZTo6SW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgLy8gQ29udGVudEZpbHRl
ciB3aWxsIHN5bnRoZXNpemUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgY2FsbGJhY2tzLgorICAg
ICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKCptX21haW5S
ZXNvdXJjZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBtX21haW5SZXNv
dXJjZS0+YWRkQ2xpZW50KHRoaXMpOworfQorCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZFBlbmRpbmdDb250ZW50RXh0ZW5zaW9uU2hlZXQo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBTdHlsZVNoZWV0Q29udGVudHMmIHNoZWV0KQogewpA
QCAtMTYyMCwxNiArMTYxOSw2IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZFBlbmRpbmdDb250
ZW50RXh0ZW5zaW9uRGlzcGxheU5vbmVTZWxlY3Rvcihjb25zdCBTdHJpbmcmCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmJlY29t
ZU1haW5SZXNvdXJjZUNsaWVudElmRmlsdGVyQWxsb3dzKCkKLXsKLSAgICBBU1NFUlQobV9tYWlu
UmVzb3VyY2UpOwotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpIHsKLSAgICAgICAgQVNTRVJUKG1f
Y29udGVudEZpbHRlci0+c3RhdGUoKSA9PSBDb250ZW50RmlsdGVyOjpTdGF0ZTo6SW5pdGlhbGl6
ZWQpOwotICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNl
KCptX21haW5SZXNvdXJjZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fbWFpblJlc291cmNlLT5h
ZGRDbGllbnQodGhpcyk7Ci19Ci0KIHZvaWQgRG9jdW1lbnRMb2FkZXI6Omluc3RhbGxDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIoQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikKIHsKICAg
ICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIgeyBjb250ZW50Rmls
dGVyLnVuYmxvY2tIYW5kbGVyKCkgfTsKQEAgLTE2NTIsMjEgKzE2NDEsMTcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZERlY2lkZSgpCiAgICAgdXNpbmcgU3RhdGUgPSBD
b250ZW50RmlsdGVyOjpTdGF0ZTsKICAgICBBU1NFUlQobV9jb250ZW50RmlsdGVyKTsKICAgICBB
U1NFUlQobV9jb250ZW50RmlsdGVyLT5zdGF0ZSgpID09IFN0YXRlOjpCbG9ja2VkIHx8IG1fY29u
dGVudEZpbHRlci0+c3RhdGUoKSA9PSBTdGF0ZTo6QWxsb3dlZCk7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPENvbnRlbnRGaWx0ZXI+IGNvbnRlbnRGaWx0ZXI7Ci0gICAgc3RkOjpzd2FwKGNvbnRlbnRG
aWx0ZXIsIG1fY29udGVudEZpbHRlcik7Ci0gICAgaWYgKGNvbnRlbnRGaWx0ZXItPnN0YXRlKCkg
PT0gU3RhdGU6OkFsbG93ZWQpIHsKLSAgICAgICAgaWYgKG1fbWFpblJlc291cmNlKQotICAgICAg
ICAgICAgbV9tYWluUmVzb3VyY2UtPmFkZENsaWVudCh0aGlzKTsKKyAgICBpZiAobV9jb250ZW50
RmlsdGVyLT5zdGF0ZSgpID09IFN0YXRlOjpBbGxvd2VkKQogICAgICAgICByZXR1cm47Ci0gICAg
fQogCi0gICAgaW5zdGFsbENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcigqY29udGVudEZpbHRl
cik7CisgICAgaW5zdGFsbENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcigqbV9jb250ZW50Rmls
dGVyKTsKIAogICAgIFVSTCBibG9ja2VkVVJMOwogICAgIGJsb2NrZWRVUkwuc2V0UHJvdG9jb2wo
Q29udGVudEZpbHRlcjo6dXJsU2NoZW1lKCkpOwogICAgIGJsb2NrZWRVUkwuc2V0SG9zdChBU0NJ
SUxpdGVyYWwoImJsb2NrZWQtcGFnZSIpKTsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNl
KFVSTCgpLCBBU0NJSUxpdGVyYWwoInRleHQvaHRtbCIpLCBjb250ZW50RmlsdGVyLT5yZXBsYWNl
bWVudERhdGEoKS0+c2l6ZSgpLCBBU0NJSUxpdGVyYWwoIlVURi04IikpOwotICAgIFN1YnN0aXR1
dGVEYXRhIHN1YnN0aXR1dGVEYXRhIHsgY29udGVudEZpbHRlci0+cmVwbGFjZW1lbnREYXRhKCks
IGRvY3VtZW50VVJMKCksIHJlc3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlW
aXNpYmlsaXR5OjpIaWRkZW4gfTsKKyAgICBhdXRvIHJlcGxhY2VtZW50RGF0YSA9IG1fY29udGVu
dEZpbHRlci0+cmVwbGFjZW1lbnREYXRhKCk7CisgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZShVUkwoKSwgQVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwiKSwgcmVwbGFjZW1lbnREYXRhLT5zaXpl
KCksIEFTQ0lJTGl0ZXJhbCgiVVRGLTgiKSk7CisgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0
ZURhdGEgeyBhZG9wdFJlZigmcmVwbGFjZW1lbnREYXRhLmxlYWtSZWYoKSksIGRvY3VtZW50VVJM
KCksIHJlc3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpI
aWRkZW4gfTsKICAgICBmcmFtZSgpLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVTdWJz
dGl0dXRlRGF0YUxvYWQoYmxvY2tlZFVSTCwgc3Vic3RpdHV0ZURhdGEpOwogfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGY1ZTk3ZGE5ZTY2NTMxNGYy
ZWI0YzQ1YWNjNTdmMDZhNjFiNzY3YmEuLmJkNmYzNTgyYmQ1M2U5NzQ0NGUwZGZmNzdjMzgxNDFm
MjhhZDM4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0zMDcs
NyArMzA3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGZpbmlzaGVkTG9h
ZGluZyhkb3VibGUgZmluaXNoVGltZSk7CiAgICAgICAgIHZvaWQgbWFpblJlY2VpdmVkRXJyb3Io
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIHN5bnRoZXRpY1JlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCYgLyogc2hvdWxk
Q29udGludWUgKi8pIG92ZXJyaWRlOwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZTsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpIG92
ZXJyaWRlOwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKQEAgLTMzOSw5ICszMzgsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGNsZWFyTWFpblJlc291cmNlKCk7CiAKICAgICAg
ICAgdm9pZCBjYW5jZWxQb2xpY3lDaGVja0lmTmVlZGVkKCk7CisgICAgICAgIHZvaWQgYmVjb21l
TWFpblJlc291cmNlQ2xpZW50KCk7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0g
ICAgICAgIHZvaWQgYmVjb21lTWFpblJlc291cmNlQ2xpZW50SWZGaWx0ZXJBbGxvd3MoKTsKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIENvbnRlbnRGaWx0ZXI7CiAgICAgICAgIHZvaWQgaW5zdGFsbENv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcihDb250ZW50RmlsdGVyJik7CiAgICAgICAgIHZvaWQg
Y29udGVudEZpbHRlckRpZERlY2lkZSgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgKaW5kZXggNmU1ZWU3NGJkMGE4MmE4ZGFiMWFjZGYzODU0NmNlM2UwNTI2ZDA0OC4u
OGM1N2Q2ZTRkYWU2YmU2NDA2MTc5ZmFlYWY0MjRmYzE1ZGI4NDVlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaApAQCAtMjcyLDcgKzI3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRM
b2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
aW50KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0
IFVSTCYpIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgb3ZlcnJpZGUgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBV
UkwmLCBkb3VibGUsIGRvdWJsZSkgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgb3ZlcnJpZGUgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGFmZDFiMTAyMTNkYTUxNmYzNDk2
Y2MyYjQxZjZiMjMzNzE4NzA3YmYuLmUwNGJiZjViMDhlMTk0ZjY0YTQ1MzU2ZTcyNTZmYWI1YWI4
YzZhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0x
NTQsNyArMTU0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wg
ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50IGxlbmd0
aCkgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2
ZW50cygpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxM
b2FkKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VQcm92aXNp
b25hbFVSTCgpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGll
bnRSZWRpcmVjdCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJl
RGF0ZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
YjQ5MDc0YjgyMDI4NzExOGM5NjI0ZTY2Y2JkZmUwOWEwNGMwZDVjNy4uNDgyZmU5MDY2NTk1ZTM1
YWE4NjI0NTk2ODk1MTBkNWZkM2RhNDEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwCkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2ls
bFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXMK
ICAgICBpZiAoaXNSZWRpcmVjdCkgewogICAgICAgICBhdXRvJiByZWRpcmVjdFVSTCA9IHJlcXVl
c3QudXJsKCk7CiAgICAgICAgIGlmICghbV9kb2N1bWVudExvYWRlci0+aXNDb21taXR0ZWQoKSkK
LSAgICAgICAgICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHJlZGlyZWN0VVJMKTsKKyAgICAgICAgICAg
IGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkKCk7CiAKICAgICAgICAgaWYgKHJlZGlyZWN0VVJMLnByb3RvY29s
SXNEYXRhKCkpIHsKICAgICAgICAgICAgIC8vIEhhbmRsZSBkYXRhIFVSTCBkZWNvZGluZyBsb2Nh
bGx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
MDc3YWQxZDVmNDM3Zjc3MDUyOTU4ZDlkYjBlNWViYTFlYjlhYmU0Mi4uNzU2NzljNmEyYTk5YmVm
Y2M2YzNkMjhhOGJmZDdlMDMwZTEyNzdhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yMDcsOCArMjA3LDYgQEAgdm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2Ug
dG8gdGhpcyBvYmplY3Q7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNi4KICAgICBSZWY8
U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOwogCi0gICAgVGVtcG9yYXJ5Q2hhbmdl
PGJvb2w+IGNhbGxpbmdEaWRSZWNlaXZlUmVzcG9uc2UobV9jYWxsaW5nRGlkUmVjZWl2ZVJlc3Bv
bnNlLCB0cnVlKTsKLQogICAgIGlmIChzaG91bGRJbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkpCiAg
ICAgICAgIHJlc3BvbnNlLmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCBkZGE2OTJmZjNhODgzMzdlZWU4ZTA1
YjZhMTFhYmVmNTA3NTNlYmU5Li42OWEyNDIyOTcyMWZmNmNhOTg5OTNhNjk5NzcwMThmZWVkOGQ1
Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNTgs
OCArNTgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGlP
U09yaWdpbmFsUmVxdWVzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faU9TT3JpZ2luYWxS
ZXF1ZXN0OyB9CiAjZW5kaWYKIAotICAgIGJvb2wgY2FsbGluZ0RpZFJlY2VpdmVSZXNwb25zZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FsbGluZ0RpZFJlY2VpdmVSZXNwb25zZTsgfQotCiBwcml2YXRl
OgogICAgIFN1YnJlc291cmNlTG9hZGVyKEZyYW1lKiwgQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKIApAQCAtMTI2LDcgKzEyNCw2IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50OwogICAgIFN1YnJlc291cmNlTG9hZGVy
U3RhdGUgbV9zdGF0ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVxdWVzdENvdW50VHJhY2tlcj4g
bV9yZXF1ZXN0Q291bnRUcmFja2VyOwotICAgIGJvb2wgbV9jYWxsaW5nRGlkUmVjZWl2ZVJlc3Bv
bnNlIHsgZmFsc2UgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGM3OGMzZDRlYWMzODhhMDNiYTM0ODNjMGJj
OTRlMmI4MTJiZDg0YTguLjFlYmMxOTNlYjA2NTQ5N2I3ODFhNjQ5Zjk4MDFiNjNlODA2NDBjZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmNwcApAQCAtMTMyLDkgKzEzMiw4IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENs
aWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHJlZGlyZWN0Q291bnQ7IGkrKykgewogICAgICAgICBSZWRpcmVjdFBhaXIgcmVkaXJlY3QgPSBt
X3JlZGlyZWN0Q2hhaW5baV07CiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHJlZGly
ZWN0Lm1fcmVxdWVzdCk7Ci0gICAgICAgIGJvb2wgc2hvdWxkQ29udGludWUgPSB0cnVlOwotICAg
ICAgICBjbGllbnQtPnN5bnRoZXRpY1JlZGlyZWN0UmVjZWl2ZWQodGhpcywgcmVxdWVzdCwgcmVk
aXJlY3QubV9yZWRpcmVjdFJlc3BvbnNlLCBzaG91bGRDb250aW51ZSk7Ci0gICAgICAgIGlmICgh
aGFzQ2xpZW50KGMpIHx8ICFzaG91bGRDb250aW51ZSkKKyAgICAgICAgY2xpZW50LT5yZWRpcmVj
dFJlY2VpdmVkKHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0Lm1fcmVkaXJlY3RSZXNwb25zZSk7Cisg
ICAgICAgIGlmICghaGFzQ2xpZW50KGMpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBBU1NFUlQocmVkaXJlY3RDb3VudCA9PSBtX3JlZGlyZWN0Q2hhaW4uc2l6ZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50
LmgKaW5kZXggMzk1OWYxMzVlMzVjY2RlZTRlN2RiN2I3MzBlOWQxMWRjY2Q0Zjk5ZS4uM2Q3ZmQ1
ZTVjNDg3NGI0ZmMwNGY0YjQ2OTVkMWNkOTA0MDA5YmEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKQEAgLTQxLDEw
ICs0MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNo
ZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hhciogLyogZGF0YSAqLywg
aW50IC8qIGxlbmd0aCAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikgeyB9Ci0KLSAgICAvLyBJbiByZXNwb25zZSB0byBhIHJlZGlyZWN0LCBzb21lIGNsaWVudHMg
d2lzaCB0byByZWNlaXZlIG5vIGZ1dGhlciBjYWxsYmFja3MsIGJ1dCBjYW5ub3QgaW1tZWRpYXRl
bHkgcmVtb3ZlIHRoZW1zZWx2ZXMgYXMgYSBjbGllbnQuCi0gICAgLy8gVGhvc2UgY2xpZW50cyBj
YW4gZXhwcmVzcyB0aGVpciBkZXNpcmUgdG8gcmVjaWV2ZSBubyBmdXRoZXIgY2FsbGJhY2tzIGJ5
IHNldHRpbmcgc2hvdWxkQ29udGludWUgdG8gZmFsc2UuCi0gICAgdmlydHVhbCB2b2lkIHN5bnRo
ZXRpY1JlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29sJiAv
KiBzaG91bGRDb250aW51ZSAqLykgeyByZWRpcmVjdFJlY2VpdmVkKHJlc291cmNlLCByZXF1ZXN0
LCByZXNwb25zZSk7IH0KICNpZiBVU0UoU09VUCkKICAgICB2aXJ0dWFsIGNoYXIqIGdldE9yQ3Jl
YXRlUmVhZEJ1ZmZlcihDYWNoZWRSZXNvdXJjZSosIHNpemVfdCAvKiByZXF1ZXN0ZWRTaXplICov
LCBzaXplX3QmIC8qIGFjdHVhbFNpemUgKi8pIHsgcmV0dXJuIDA7IH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaAppbmRl
eCBkMTYyNjg5OGViMjUzMzIxMTc3ZTFhMzQ3MGU4NjE1MjAyNTM2Yjg2Li42OTFmZTJmZjNkMWU3
ZDI0YTM0MWVhMGZlNWVkZmVkOGNiYjQ5ODBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaApAQCAtNDAsNyArNDAsOCBAQCBwdWJs
aWM6CiAgICAgICAgIEFmdGVyUmVkaXJlY3QsCiAgICAgICAgIEFmdGVyUmVzcG9uc2UsCiAgICAg
ICAgIEFmdGVyQWRkRGF0YSwKLSAgICAgICAgQWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEKKyAgICAg
ICAgQWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEsCisgICAgICAgIE5ldmVyCiAgICAgfTsKIAogICAg
IGVudW0gY2xhc3MgRGVjaXNpb24gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwKaW5kZXggNWYwMDA1Nzc5YzE3Mjc5ZjZhMTll
MTU5ZjVkN2RkN2UyZDUxODU0ZC4uZDQwMWFlOTAxNGEzNzlmYWQxZjk4MzE3MDMzZTdkODU0ZjQ2
ZjM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRl
clNldHRpbmdzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MuaWRsCkBAIC0zNyw2ICszNyw3IEBACiAgICAgY29uc3Qgb2N0ZXQgREVDSVNJ
T05fUE9JTlRfQUZURVJfUkVTUE9OU0UgPSAyOwogICAgIGNvbnN0IG9jdGV0IERFQ0lTSU9OX1BP
SU5UX0FGVEVSX0FERF9EQVRBID0gMzsKICAgICBjb25zdCBvY3RldCBERUNJU0lPTl9QT0lOVF9B
RlRFUl9GSU5JU0hFRF9BRERJTkdfREFUQSA9IDQ7CisgICAgY29uc3Qgb2N0ZXQgREVDSVNJT05f
UE9JTlRfTkVWRVIgPSA1OwogICAgIFtDdXN0b21dIGF0dHJpYnV0ZSBvY3RldCBkZWNpc2lvblBv
aW50OwogCiAgICAgY29uc3Qgb2N0ZXQgREVDSVNJT05fQUxMT1cgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggNGE5NTVjYjk0N2U1MWQ0NWUyZDk4NWZkNmZhNTE0OGExYzVhN2Q4OS4uY2QxZjI0YmE5
YzMzYWEzZGI2MGYwYmExZDM1NjVlYjdhZmY0NTA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC05Niw3
ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxs
Q2FjaGVSZXNwb25zZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgTlNDYWNoZWRVUkxSZXNwb25zZSopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkKGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdChjb25zdCBXZWJDb3JlOjpVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0
ZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25X
aXRoaW5QYWdlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDIyMmFmMTY3YjgxNzY3
MDQxMWU4YWRiZmQ4YzY1MWZiYmJjNjliMTUuLmZhNmI5MGQ5ZTgyOTMwZjhmY2U1MTkzN2Y5N2Y2
YjMzNWM0N2E2OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERv
Y3VtZW50TG9hZGVyKiBkb2MKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dl
YkZyYW1lLmdldCgpKTsKICAgICBTdWJyZXNvdXJjZUxvYWRlciogbWFpblJlc291cmNlTG9hZGVy
ID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZUxvYWRlcigpOwogCi0gICAgaWYgKCFtYWlu
UmVzb3VyY2VMb2FkZXIgfHwgIW1haW5SZXNvdXJjZUxvYWRlci0+Y2FsbGluZ0RpZFJlY2VpdmVS
ZXNwb25zZSgpKSB7CisgICAgaWYgKCFtYWluUmVzb3VyY2VMb2FkZXIpIHsKICAgICAgICAgLy8g
VGhlIHJlc291cmNlIGhhcyBhbHJlYWR5IGJlZW4gY2FjaGVkLCBvciB0aGUgY29udmVyc2lvbiBp
cyBiZWluZyBhdHRtcHRlZCB3aGVuIG5vdCBjYWxsaW5nIFN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoKS4KICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKQEAg
LTU3OCw5ICs1NzgsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEhh
bmRsZU9ubG9hZEV2ZW50cygpCiAgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1l
bnRhdGlvbnMtPmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lRnVuYywgd2ViVmlldywgQHNl
bGVjdG9yKHdlYlZpZXc6ZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWU6KSwgbV93ZWJGcmFt
ZS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYgdXJsKQordm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWQoKQogewotICAgIG1fd2ViRnJhbWUtPl9wcml2YXRlLT5wcm92aXNp
b25hbFVSTCA9IHVybC5zdHJpbmcoKTsKKyAgICBtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+cHJvdmlz
aW9uYWxVUkwgPSBjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5sb2FkZXIoKS5wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyKCktPnVybCgpLnN0cmluZygpOwogCiAgICAgV2ViVmlldyAqd2ViVmlldyA9
IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgV2ViRnJhbWVMb2FkRGVsZWdhdGVJ
bXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0RnJhbWVMb2Fk
RGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXgg
NTY1YjczODA3NzEyZWI2NzA5N2IxZmI1OTA0MjVmMDcwYmE0N2VkMi4uMjRlZjE5Y2RiNzdjN2M0
NDAyODg3MDkyODY2NDEwMTcwNTM0YTViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMzMwLDcg
KzMzMCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkSGFuZGxlT25s
b2FkRXZlbnRzKCkKICAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGVQcml2LT5kaWRIYW5kbGVPbmxv
YWRFdmVudHNGb3JGcmFtZSh3ZWJWaWV3LCBtX3dlYkZyYW1lKTsKIH0KIAotdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWQoY29uc3QgVVJMJikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkKIHsKICAgICBXZWJW
aWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIENPTVB0cjxJV2ViRnJh
bWVMb2FkRGVsZWdhdGU+IGZyYW1lTG9hZERlbGVnYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggOWFm
OTMxZThhZmE0NjIzZmMwNTFjYzRlYTE3NjQ1ODljZTBmZWE3ZC4uNTI2MjY3MWNkZjU3NGMyMGQz
ZTg1ZWU3MTEyMzY3MmFlNGRkNjZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC03Nyw3ICs3Nyw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShXZWJDb3JlOjpE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxv
bmcgbG9uZyBsZW5ndGgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25s
b2FkRXZlbnRzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTG9hZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpVUkwmLCBkb3Vi
bGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDA4Mzc1YmEyNTM2M2RlOThmYWRkYTM0MmRl
Y2NkMTlhNjg5ZDZhNjMuLmY5MDYzOTZkN2QxYmUwMGE2MjdhMjA2NjI3M2U4MWU1MTUzZmRlOTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0yNzgsMjAgKzI3OCwyMSBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50
cygpCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRIYW5kbGVP
bmxvYWRFdmVudHNGb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lKTsKIH0KIAotdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWQoY29uc3QgVVJMJiB1cmwpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpCiB7CiAgICAg
V2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFdlYkRvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlciA9
IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVyJj4oKm1fZnJhbWUtPmNvcmVGcmFtZSgpLT5s
b2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkpOworICAgIGNvbnN0IFN0cmluZyYg
dXJsID0gZG9jdW1lbnRMb2FkZXIudXJsKCkuc3RyaW5nKCk7CiAgICAgUmVmUHRyPEFQSTo6T2Jq
ZWN0PiB1c2VyRGF0YTsKIAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICB3
ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUsIHVzZXJEYXRh
KTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIHdlYlBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0
aW9uSUQoKSwgdXJsLnN0cmluZygpLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50
cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1l
bnRMb2FkZXIubmF2aWdhdGlvbklEKCksIHVybCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7
CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlUHJvdmlz
aW9uYWxVUkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGQxMTFkZmE4ZTAw
NjcyMWI0YzlkNDY2NWQ0YzI3ZjBlNDM3MTg3NTMuLmU4ODY5YTk1YTllODA4ZDQ4NzAxODQ3YzMw
MmVjYThlYWMwMDA2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTc5LDcg
Kzc5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgaW50
IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFu
ZGxlT25sb2FkRXZlbnRzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlVS
TCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENoYW5nZVByb3Zpc2lvbmFsVVJMKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDViMzMx
NTM1MmE0MGJhOTU2ODU2MDFhNTliY2YyNGY4YmY1MDhlNjMuLmNjY2I4YjZhZGQ0Njk5NzNiZGU0
NTY2YmU4NjkxNDdmOGYwODY4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgV2ViRnJhbWU6OmNv
bnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciogZG9jdW1lbnRM
b2FkZXIsCiAgICAgICAgIC8vIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGVyZSBpcyBubyBsb2FkZXIg
YmVjYXVzZSB0aGUgbWFpbiByZXNvdXJjZSBpcyBpbiB0aGUgV2ViQ29yZSBtZW1vcnkgY2FjaGUs
CiAgICAgICAgIC8vIG9yIGJlY2F1c2UgdGhlIGNvbnZlcnNpb24gd2FzIGF0dGVtcHRlZCB3aGVu
IG5vdCBjYWxsaW5nIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoKS4KICAg
ICAgICAgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXI7Ci0gICAgICAgIGlmICht
YWluUmVzb3VyY2VMb2FkZXIgJiYgbWFpblJlc291cmNlTG9hZGVyLT5jYWxsaW5nRGlkUmVjZWl2
ZVJlc3BvbnNlKCkpCisgICAgICAgIGlmIChtYWluUmVzb3VyY2VMb2FkZXIpCiAgICAgICAgICAg
ICBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciA9IG1haW5SZXNvdXJjZUxvYWRlci0+aWRlbnRp
ZmllcigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtYWluUmVzb3VyY2VMb2FkSWRlbnRp
ZmllciA9IDA7CkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBXZWJGcmFtZTo6Y29udmVydE1haW5S
ZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwKICAg
ICB9CiAjZW5kaWYKIAotICAgIGlmICghbWFpblJlc291cmNlTG9hZGVyIHx8ICFtYWluUmVzb3Vy
Y2VMb2FkZXItPmNhbGxpbmdEaWRSZWNlaXZlUmVzcG9uc2UoKSkgeworICAgIGlmICghbWFpblJl
c291cmNlTG9hZGVyKSB7CiAgICAgICAgIC8vIFRoZSBtYWluIHJlc291cmNlIGhhcyBhbHJlYWR5
IGJlZW4gbG9hZGVkLiBTdGFydCBhIG5ldyBkb3dubG9hZCBpbnN0ZWFkLgogICAgICAgICB3ZWJQ
cm9jZXNzLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQocG9saWN5RG93bmxvYWRJRCwg
cmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhMWNlYTA1ZjAwZWI0OGRiZDZmZWNhMzM5MWM3ODFhZDY2
YTZkMzliLi41MTlhYTc3ZDE5ZjY3YjAwZTIyMjMwNDY1Nzk2ZDYyZDUzMWM1ZjY4IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkg
QEAKKzIwMTUtMDgtMjYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAg
IFtDb250ZW50IEZpbHRlcmluZ10gRGV0ZXJtaW5lIG5hdmlnYXRpb24gYW5kIGNvbnRlbnQgcG9s
aWN5IGJlZm9yZSBjb250aW51aW5nIHRvIGZpbHRlciBhIGxvYWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODUwNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGRvd25sb2FkIEFQSSB0ZXN0cyBj
b3ZlcmluZyBldmVyeSBkZWNpc2lvbiBhbmQgZGVjaXNpb24gcG9pbnQuCisgICAgICAgIFJlbW92
ZWQgX1dLRG93bmxvYWQuQXN5bmNocm9ub3VzRG93bmxvYWRQb2xpY3kgaW4gZmF2b3Igb2YgdGhl
c2UgbmV3IHRlc3RzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9C
YXNlLnhjY29uZmlnOiBBZGRlZCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvV2ViQ29yZVRlc3RTdXBw
b3J0IHRvIHRoZSBoZWFkZXIgc2VhcmNoIHBhdGguCisgICAgICAgICogVGVzdFdlYktpdEFQSS9D
b25maWd1cmF0aW9ucy9XZWJQcm9jZXNzUGx1Z0luLnhjY29uZmlnOiBSZW1vdmVkIGl0IGZyb20g
aGVyZS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9CdW5kbGVQ
YXJhbWV0ZXJzUGx1Z0luLm1tOgorICAgICAgICAoLVtCdW5kbGVQYXJhbWV0ZXJzUGx1Z0luIG9i
c2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6IENhbGxlZCAt
dmFsdWVGb3JLZXlQYXRoOiwgd2hpY2gKKyAgICAgICAgcmV0dXJucyBhbiBpZCwgaW5zdGVhZCBv
ZiAtdmFsdWVGb3JLZXk6LCB3aGljaCBhbHdheXMgcmV0dXJucyBhbiBOU1N0cmluZyBldmVuIGlm
IHRoZSBvYmplY3QgaXMgb2YgYW5vdGhlciB0eXBlLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW06IEFkZGVkIGEgY2xhc3MgdGhh
dCBjYW4gc2VuZCBhIE1vY2tDb250ZW50RmlsdGVyCisgICAgICAgIGRlY2lzaW9uIGFuZCBkZWNp
c2lvbiBwb2ludCBhcyBhIGJ1bmRsZSBwYXJhbWV0ZXIuCisgICAgICAgICgrW01vY2tDb250ZW50
RmlsdGVyRW5hYmxlciBzdXBwb3J0c1NlY3VyZUNvZGluZ10pOgorICAgICAgICAoLVtNb2NrQ29u
dGVudEZpbHRlckVuYWJsZXIgY29weVdpdGhab25lOl0pOgorICAgICAgICAoLVtNb2NrQ29udGVu
dEZpbHRlckVuYWJsZXIgaW5pdFdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bTW9ja0NvbnRlbnRG
aWx0ZXJFbmFibGVyIGluaXRXaXRoRGVjaXNpb246ZGVjaXNpb25Qb2ludDpdKToKKyAgICAgICAg
KC1bTW9ja0NvbnRlbnRGaWx0ZXJFbmFibGVyIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAg
KGNvbmZpZ3VyYXRpb25XaXRoQ29udGVudEZpbHRlclNldHRpbmdzKTogQWRkZWQgYSBoZWxwZXIg
ZnVuY3Rpb24gdG8gY3JlYXRlIGEgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiB3aXRoIE1vY2tDb25l
bnRGaWx0ZXIgc2V0dGluZ3MuCisgICAgICAgIChURVNUKTogUmVuYW1lZCBDb250ZW50RmlsdGVy
aW5nLlNlcnZlclJlZGlyZWN0IHRvIENvbnRlbnRGaWx0ZXJpbmcuVVJMQWZ0ZXJTZXJ2ZXJSZWRp
cmVjdC4KKyAgICAgICAgKC1bQmVjb21lRG93bmxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6IERlY2lkZWQgX1dL
TmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQuCisgICAgICAgICgtW0JlY29t
ZURvd25sb2FkRGVsZWdhdGUgd2ViVmlldzpkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOndp
dGhFcnJvcjpdKTogU2V0IGlzRG9uZSB0byB0cnVlLgorICAgICAgICAoLVtCZWNvbWVEb3dubG9h
ZERlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKTogRGl0dG8uCisgICAgICAg
ICgtW0NvbnRlbnRGaWx0ZXJpbmdEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0Ol0p
OiBTZXQgZG93bmxvYWREaWRTdGFydCB0byB0cnVlLgorICAgICAgICAoZG93bmxvYWRUZXN0KTog
QWRkZWQgYSBoZWxwZXIgZnVuY3Rpb24gdG8gdGVzdCBkb3dubG9hZHMgd2l0aCBhIGdpdmVuIGRl
Y2lzaW9uIGFuZCBkZWNpc2lvbiBwb2ludC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1tOiBBZGRlZCBhIGNvcnJlc3Bv
bmRpbmcgYnVuZGxlIGNsYXNzIHRoYXQgZGVjb2RlcworICAgICAgICB0aGUgTW9ja0NvbnRlbnRG
aWx0ZXIgZGVjaXNpb24gYW5kIGRlY2lzaW9uIHBvaW50LCBhbmQgc2V0cyB0aGVzZSB2YWx1ZXMg
aW4gdGhlIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MKKyAgICAgICAgc2luZ2xldG9uLiBUaGlz
IGNsYXNzIGlzIGR1cGxpY2F0ZWQgaW4gdGhlIGJ1bmRsZSB0byBwcmV2ZW50IFRlc3RXZWJLaXRB
UEkgZnJvbSBoYXZpbmcgdG8gbGluayB0byBXZWJDb3JlVGVzdFN1cHBvcnQuCisgICAgICAgICgr
W01vY2tDb250ZW50RmlsdGVyRW5hYmxlciBzdXBwb3J0c1NlY3VyZUNvZGluZ10pOgorICAgICAg
ICAoLVtNb2NrQ29udGVudEZpbHRlckVuYWJsZXIgY29weVdpdGhab25lOl0pOgorICAgICAgICAo
LVtNb2NrQ29udGVudEZpbHRlckVuYWJsZXIgaW5pdFdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1b
TW9ja0NvbnRlbnRGaWx0ZXJFbmFibGVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bTW9ja0NvbnRl
bnRGaWx0ZXJFbmFibGVyIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bQ29udGVudEZp
bHRlcmluZ1BsdWdJbiB3ZWJQcm9jZXNzUGx1Z0luOmluaXRpYWxpemVXaXRoT2JqZWN0Ol0pOiBT
dGFydCBvYnNlcnZpbmcgY2hhbmdlcyB0byB0aGUgTW9ja0NvbnRlbnRGaWx0ZXJFbmFibGVyIGtl
eSBwYXRoLgorICAgICAgICAoLVtDb250ZW50RmlsdGVyaW5nUGx1Z0luIGRlYWxsb2NdKTogU3Rv
cCBvYnNlcnZpbmcuCisgICAgICAgICgtW0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4gb2JzZXJ2ZVZh
bHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKTogU3RvcmUgYSBNb2NrQ29u
dGVudEZpbHRlckVuYWJsZXIgaW4gX2NvbnRlbnRGaWx0ZXJFbmFibGVyLgorICAgICAgICAoK1tT
ZXJ2ZXJSZWRpcmVjdFBsdWdJbiBpbml0aWFsaXplXSk6IERlbGV0ZWQuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRG93bmxvYWQubW06CisgICAgICAgICgtW0Fz
eW5jaHJvbm91c0Rvd25sb2FkTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bQXN5bmNocm9ub3VzRG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRTdGFydDpdKTog
RGVsZXRlZC4KKyAgICAgICAgKFRFU1QpOiBEZWxldGVkLgorCiAyMDE1LTA4LTI5ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IFdoZW4gbmF2aWdh
dGluZyB0aGUgZWxlbWVudHMgb2YgYSBzY3JvbGxhYmxlIGVsZW1lbnQgd2l0aCBWb2ljZU92ZXIs
IHRoZSBzY3JvbGxUb3AoKSBwb3NpdGlvbiBvZiB0aGUgZWxlbWVudCBkb2VzIG5vdCBwZXJtYW5l
bnRseSBjaGFuZ2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlv
bnMvQmFzZS54Y2NvbmZpZyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvQmFz
ZS54Y2NvbmZpZwppbmRleCBmYTllM2M1YTllOTJhNGRlYjFmMGE3NmVkZmRkYWM1OTlhYTc1YjUx
Li5iMTBhOTgwZTQyZjI0MjA5NDMyM2UxMDFhODZiNjMwNDM3ZjQ4ZmIwIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCkBAIC0yNCw3ICsy
NCw3IEBACiBDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnUrKzB4OwogQ0xBTkdfQ1hY
X0xJQlJBUlkgPSBsaWJjKys7CiBDTEFOR19XQVJOX0NYWDBYX0VYVEVOU0lPTlMgPSBOTzsKLUhF
QURFUl9TRUFSQ0hfUEFUSFMgPSAke0JVSUxUX1BST0RVQ1RTX0RJUn0vdXNyL2xvY2FsL2luY2x1
ZGUgJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0ZvcndhcmRpbmdIZWFkZXJzICQoV0VC
Q09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9pY3U7CitIRUFERVJfU0VBUkNIX1BBVEhTID0gJHtC
VUlMVF9QUk9EVUNUU19ESVJ9L3Vzci9sb2NhbC9pbmNsdWRlICQoV0VCQ09SRV9QUklWQVRFX0hF
QURFUlNfRElSKS9Gb3J3YXJkaW5nSGVhZGVycyAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJ
UikvaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9XZWJDb3JlVGVzdFN1cHBvcnQ7CiBGUkFNRVdP
UktfU0VBUkNIX1BBVEhTID0gJChGUkFNRVdPUktfU0VBUkNIX1BBVEhTXyQoUExBVEZPUk1fTkFN
RSkpOwogRlJBTUVXT1JLX1NFQVJDSF9QQVRIU19tYWNvc3ggPSAkKFNZU1RFTV9MSUJSQVJZX0RJ
UikvRnJhbWV3b3Jrcy9RdWFydHouZnJhbWV3b3JrL0ZyYW1ld29ya3MgJChTWVNURU1fTElCUkFS
WV9ESVIpL0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3Jr
cyAkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L0ZyYW1ld29ya3M7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJh
dGlvbnMvV2ViUHJvY2Vzc1BsdWdJbi54Y2NvbmZpZyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29u
ZmlndXJhdGlvbnMvV2ViUHJvY2Vzc1BsdWdJbi54Y2NvbmZpZwppbmRleCBjODg4YTA2Nzk2ZWYz
NzdhNzE2ODRiZTU4MzUwZTA1NTIxNzNiYmQxLi4yOTg1NTE2OTNiNjJiMTcyM2EzODJiNDBiNDFl
ODkzNDQzNTk3NDgzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRp
b25zL1dlYlByb2Nlc3NQbHVnSW4ueGNjb25maWcKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9D
b25maWd1cmF0aW9ucy9XZWJQcm9jZXNzUGx1Z0luLnhjY29uZmlnCkBAIC0yNyw3ICsyNyw2IEBA
IElORk9QTElTVF9GSUxFID0gY29jb2EvV2ViUHJvY2Vzc1BsdWdJbi9JbmZvLnBsaXN0OwogUFJP
RFVDVF9OQU1FID0gVGVzdFdlYktpdEFQSTsKIEVYRUNVVEFCTEVfU1VGRklYID0gLmJ1bmRsZTsK
IFdSQVBQRVJfRVhURU5TSU9OID0gd2tidW5kbGU7Ci1IRUFERVJfU0VBUkNIX1BBVEhTID0gJChp
bmhlcml0ZWQpICQoQlVJTFRfUFJPRFVDVFNfRElSKS9XZWJDb3JlVGVzdFN1cHBvcnQ7CiBPVEhF
Ul9MREZMQUdTID0gJChpbmhlcml0ZWQpIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWZyYW1l
d29yayBXZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQ7CiBMRF9SVU5QQVRIX1NFQVJDSF9QQVRI
U1tzZGs9bWFjb3N4Kl0gPSAiQGxvYWRlcl9wYXRoLy4uLy4uLy4uIjsKIExEX1JVTlBBVEhfU0VB
UkNIX1BBVEhTW3Nkaz1pcGhvbmUqXSA9ICJAbG9hZGVyX3BhdGgvLi4iOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQnVuZGxlUGFyYW1ldGVyc1Bs
dWdJbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0J1bmRsZVBh
cmFtZXRlcnNQbHVnSW4ubW0KaW5kZXggMmI1MWEwNTc3YWViZDgxOWNjZTcyMmE3NTM5NzgxYjA0
NGI5NjczNi4uZmNlZTdiNTY0MTlkODJmYjU4ZGE5NDUxY2ViYzM2Nzc5ZjQ4NGNjMSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQnVuZGxlUGFyYW1l
dGVyc1BsdWdJbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2Nv
YS9CdW5kbGVQYXJhbWV0ZXJzUGx1Z0luLm1tCkBAIC02NCw3ICs2NCw3IEBAIC0gKHZvaWQpZGVh
bGxvYwogLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGgg
b2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0
Oih2b2lkICopY29udGV4dAogewogICAgIEpTQ29udGV4dCAqanNDb250ZXh0ID0gW1tfYnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyIG1haW5GcmFtZV0ganNDb250ZXh0Rm9yV29ybGQ6W1dLV2ViUHJv
Y2Vzc1BsdWdJblNjcmlwdFdvcmxkIG5vcm1hbFdvcmxkXV07Ci0gICAgW2pzQ29udGV4dCBzZXRP
YmplY3Q6W29iamVjdCB2YWx1ZUZvcktleTprZXlQYXRoXSBmb3JLZXllZFN1YnNjcmlwdDprZXlQ
YXRoXTsKKyAgICBbanNDb250ZXh0IHNldE9iamVjdDpbb2JqZWN0IHZhbHVlRm9yS2V5UGF0aDpr
ZXlQYXRoXSBmb3JLZXllZFN1YnNjcmlwdDprZXlQYXRoXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQ29udGVudEZpbHRlcmlu
Zy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0NvbnRlbnRGaWx0
ZXJpbmcubW0KaW5kZXggZTY2MTIzMDQzNTgxM2RkYzliZTRlZWI4NTU5NjRhNzI3ZGY5NzliYi4u
Njc4MTFkYjU5ZWMzMWViZTNmNWVkMDU3NDY0OGQ4YTU2MzNhZTQ3ZSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQ29udGVudEZpbHRlcmluZy5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Db250ZW50RmlsdGVy
aW5nLm1tCkBAIC0yNywxNiArMjcsNzIgQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRG
T1JNKE1BQykKIAorI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgogI2ltcG9y
dCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogI2ltcG9y
dCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlci5oPgotI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRl
bGVnYXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+
CisjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXcuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CiAj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKK3VzaW5nIERlY2lzaW9uID0gV2ViQ29yZTo6TW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb247Cit1c2luZyBEZWNpc2lvblBvaW50ID0g
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDsKKwogc3Rh
dGljIGJvb2wgaXNEb25lOwogCitAaW50ZXJmYWNlIE1vY2tDb250ZW50RmlsdGVyRW5hYmxlciA6
IE5TT2JqZWN0IDxOU0NvcHlpbmcsIE5TU2VjdXJlQ29kaW5nPgorLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRGVjaXNpb246KERlY2lzaW9uKWRlY2lzaW9uIGRlY2lzaW9uUG9pbnQ6KERlY2lzaW9u
UG9pbnQpZGVjaXNpb25Qb2ludDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIE1vY2tDb250ZW50
RmlsdGVyRW5hYmxlciB7CisgICAgRGVjaXNpb24gX2RlY2lzaW9uOworICAgIERlY2lzaW9uUG9p
bnQgX2RlY2lzaW9uUG9pbnQ7Cit9CisKKysgKEJPT0wpc3VwcG9ydHNTZWN1cmVDb2RpbmcKK3sK
KyAgICByZXR1cm4gWUVTOworfQorCistIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUK
K3sKKyAgICByZXR1cm4gW3NlbGYgcmV0YWluXTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCit7CisgICAgcmV0dXJuIFtzdXBlciBpbml0XTsK
K30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVjaXNpb246KERlY2lzaW9uKWRlY2lzaW9u
IGRlY2lzaW9uUG9pbnQ6KERlY2lzaW9uUG9pbnQpZGVjaXNpb25Qb2ludAoreworICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2RlY2lz
aW9uID0gZGVjaXNpb247CisgICAgX2RlY2lzaW9uUG9pbnQgPSBkZWNpc2lvblBvaW50OworICAg
IHJldHVybiBzZWxmOworfQorCistICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWNv
ZGVyCit7CisgICAgW2NvZGVyIGVuY29kZUludDpzdGF0aWNfY2FzdDxpbnQ+KF9kZWNpc2lvbikg
Zm9yS2V5OkAiRGVjaXNpb24iXTsKKyAgICBbY29kZXIgZW5jb2RlSW50OnN0YXRpY19jYXN0PGlu
dD4oX2RlY2lzaW9uUG9pbnQpIGZvcktleTpAIkRlY2lzaW9uUG9pbnQiXTsKK30KKworQGVuZAor
CitzdGF0aWMgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb25X
aXRoQ29udGVudEZpbHRlclNldHRpbmdzKERlY2lzaW9uIGRlY2lzaW9uLCBEZWNpc2lvblBvaW50
IGRlY2lzaW9uUG9pbnQpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gcmV0YWluUHRyKFtX
S1dlYlZpZXdDb25maWd1cmF0aW9uIHRlc3R3ZWJraXRhcGlfY29uZmlndXJhdGlvbldpdGhUZXN0
UGx1Z0luQ2xhc3NOYW1lOkAiQ29udGVudEZpbHRlcmluZ1BsdWdJbiJdKTsKKyAgICBhdXRvIGNv
bnRlbnRGaWx0ZXJFbmFibGVyID0gYWRvcHROUyhbW01vY2tDb250ZW50RmlsdGVyRW5hYmxlciBh
bGxvY10gaW5pdFdpdGhEZWNpc2lvbjpkZWNpc2lvbiBkZWNpc2lvblBvaW50OmRlY2lzaW9uUG9p
bnRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9zZXRPYmplY3Q6Y29udGVu
dEZpbHRlckVuYWJsZXIuZ2V0KCkgZm9yQnVuZGxlUGFyYW1ldGVyOk5TU3RyaW5nRnJvbUNsYXNz
KFtNb2NrQ29udGVudEZpbHRlckVuYWJsZXIgY2xhc3NdKV07CisgICAgcmV0dXJuIGNvbmZpZ3Vy
YXRpb247Cit9CisKIEBpbnRlcmZhY2UgU2VydmVyUmVkaXJlY3ROYXZpZ2F0aW9uRGVsZWdhdGUg
OiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CiBAZW5kCiAKQEAgLTU5LDIwICsxMTUs
MTQ0IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRDb21taXROYXZp
Z2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0CiAKIEBlbmQKIAotVEVTVChDb250ZW50Rmls
dGVyaW5nLCBTZXJ2ZXJSZWRpcmVjdCkKK1RFU1QoQ29udGVudEZpbHRlcmluZywgVVJMQWZ0ZXJT
ZXJ2ZXJSZWRpcmVjdCkKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgW05TVVJM
UHJvdG9jb2wgcmVnaXN0ZXJDbGFzczpbVGVzdFByb3RvY29sIGNsYXNzXV07CisgICAgICAgIFtX
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgcmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2Nv
bDpbVGVzdFByb3RvY29sIHNjaGVtZV1dOworCisgICAgICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGNvbmZpZ3VyYXRpb25XaXRoQ29udGVudEZpbHRlclNldHRpbmdzKERlY2lzaW9uOjpBbGxvdywg
RGVjaXNpb25Qb2ludDo6QWZ0ZXJBZGREYXRhKTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgICAgICBhdXRvIG5hdmlnYXRpb25EZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tTZXJ2ZXJSZWRpcmVjdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOworICAgICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlv
bkRlbGVnYXRlLmdldCgpXTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9yZWRpcmVj
dD9wYXNzIl1dXTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwor
CisgICAgICAgIFtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgdW5yZWdpc3RlclNjaGVtZUZv
ckN1c3RvbVByb3RvY29sOltUZXN0UHJvdG9jb2wgc2NoZW1lXV07CisgICAgICAgIFtOU1VSTFBy
b3RvY29sIHVucmVnaXN0ZXJDbGFzczpbVGVzdFByb3RvY29sIGNsYXNzXV07CisgICAgfQorfQor
CitAaW50ZXJmYWNlIEJlY29tZURvd25sb2FkRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBCZWNvbWVEb3dubG9hZERlbGVn
YXRlCisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJl
c3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIGRlY2lzaW9uSGFuZGxlcihfV0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOihXS05hdmlnYXRp
b24gKiluYXZpZ2F0aW9uIHdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAgaXNEb25l
ID0gdHJ1ZTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZp
bmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KK3sKKyAgICBpc0RvbmUg
PSB0cnVlOworfQorCitAZW5kCisKK3N0YXRpYyBib29sIGRvd25sb2FkRGlkU3RhcnQ7CisKK0Bp
bnRlcmZhY2UgQ29udGVudEZpbHRlcmluZ0Rvd25sb2FkRGVsZWdhdGUgOiBOU09iamVjdCA8X1dL
RG93bmxvYWREZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIENvbnRlbnRGaWx0ZXJp
bmdEb3dubG9hZERlbGVnYXRlCisKKy0gKHZvaWQpX2Rvd25sb2FkRGlkU3RhcnQ6KF9XS0Rvd25s
b2FkICopZG93bmxvYWQKK3sKKyAgICBkb3dubG9hZERpZFN0YXJ0ID0gdHJ1ZTsKK30KKworQGVu
ZAorCitzdGF0aWMgdm9pZCBkb3dubG9hZFRlc3QoRGVjaXNpb24gZGVjaXNpb24sIERlY2lzaW9u
UG9pbnQgZGVjaXNpb25Qb2ludCkKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAg
W05TVVJMUHJvdG9jb2wgcmVnaXN0ZXJDbGFzczpbVGVzdFByb3RvY29sIGNsYXNzXV07CisgICAg
ICAgIFtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgcmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Q
cm90b2NvbDpbVGVzdFByb3RvY29sIHNjaGVtZV1dOworCisgICAgICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGNvbmZpZ3VyYXRpb25XaXRoQ29udGVudEZpbHRlclNldHRpbmdzKGRlY2lzaW9uLCBk
ZWNpc2lvblBvaW50KTsKKyAgICAgICAgYXV0byBkb3dubG9hZERlbGVnYXRlID0gYWRvcHROUyhb
W0NvbnRlbnRGaWx0ZXJpbmdEb3dubG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgICAg
IFtbY29uZmlndXJhdGlvbiBwcm9jZXNzUG9vbF0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxv
YWREZWxlZ2F0ZS5nZXQoKV07CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKKyAgICAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9w
dE5TKFtbQmVjb21lRG93bmxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgICAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKKyAg
ICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9yZWRpcmVjdC8/ZG93bmxvYWQiXV1dOworCisg
ICAgICAgIGlzRG9uZSA9IGZhbHNlOworICAgICAgICBkb3dubG9hZERpZFN0YXJ0ID0gZmFsc2U7
CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgICAgICBj
b25zdCBib29sIGRvd25sb2FkU2hvdWxkU3RhcnQgPSBkZWNpc2lvbiA9PSBEZWNpc2lvbjo6QWxs
b3cgfHwgZGVjaXNpb25Qb2ludCA+IERlY2lzaW9uUG9pbnQ6OkFmdGVyUmVzcG9uc2U7CisgICAg
ICAgIEVYUEVDVF9FUShkb3dubG9hZFNob3VsZFN0YXJ0LCBkb3dubG9hZERpZFN0YXJ0KTsKKwor
ICAgICAgICBbV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHVucmVnaXN0ZXJTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbDpbVGVzdFByb3RvY29sIHNjaGVtZV1dOworICAgICAgICBbTlNVUkxQcm90
b2NvbCB1bnJlZ2lzdGVyQ2xhc3M6W1Rlc3RQcm90b2NvbCBjbGFzc11dOworICAgIH0KK30KKwor
VEVTVChDb250ZW50RmlsdGVyaW5nLCBBbGxvd0Rvd25sb2FkQWZ0ZXJXaWxsU2VuZFJlcXVlc3Qp
Cit7CisgICAgZG93bmxvYWRUZXN0KERlY2lzaW9uOjpBbGxvdywgRGVjaXNpb25Qb2ludDo6QWZ0
ZXJXaWxsU2VuZFJlcXVlc3QpOworfQorCitURVNUKENvbnRlbnRGaWx0ZXJpbmcsIEJsb2NrRG93
bmxvYWRBZnRlcldpbGxTZW5kUmVxdWVzdCkKIHsKLSAgICBbTlNVUkxQcm90b2NvbCByZWdpc3Rl
ckNsYXNzOltUZXN0UHJvdG9jb2wgY2xhc3NdXTsKLSAgICBbV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyIHJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6W1Rlc3RQcm90b2NvbCBzY2hl
bWVdXTsKKyAgICBkb3dubG9hZFRlc3QoRGVjaXNpb246OkJsb2NrLCBEZWNpc2lvblBvaW50OjpB
ZnRlcldpbGxTZW5kUmVxdWVzdCk7Cit9CiAKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSByZXRh
aW5QdHIoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gdGVzdHdlYmtpdGFwaV9jb25maWd1cmF0aW9u
V2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJTZXJ2ZXJSZWRpcmVjdFBsdWdJbiJdKTsKLSAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgYXV0byBu
YXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbU2VydmVyUmVkaXJlY3ROYXZpZ2F0aW9uRGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6
bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3Jl
ZGlyZWN0P3Bhc3MiXV1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
K1RFU1QoQ29udGVudEZpbHRlcmluZywgQWxsb3dEb3dubG9hZEFmdGVyUmVkaXJlY3QpCit7Cisg
ICAgZG93bmxvYWRUZXN0KERlY2lzaW9uOjpBbGxvdywgRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZWRp
cmVjdCk7Cit9CiAKLSAgICBbV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHVucmVnaXN0ZXJT
Y2hlbWVGb3JDdXN0b21Qcm90b2NvbDpbVGVzdFByb3RvY29sIHNjaGVtZV1dOwotICAgIFtOU1VS
TFByb3RvY29sIHVucmVnaXN0ZXJDbGFzczpbVGVzdFByb3RvY29sIGNsYXNzXV07CitURVNUKENv
bnRlbnRGaWx0ZXJpbmcsIEJsb2NrRG93bmxvYWRBZnRlclJlZGlyZWN0KQoreworICAgIGRvd25s
b2FkVGVzdChEZWNpc2lvbjo6QmxvY2ssIERlY2lzaW9uUG9pbnQ6OkFmdGVyUmVkaXJlY3QpOwor
fQorCitURVNUKENvbnRlbnRGaWx0ZXJpbmcsIEFsbG93RG93bmxvYWRBZnRlclJlc3BvbnNlKQor
eworICAgIGRvd25sb2FkVGVzdChEZWNpc2lvbjo6QWxsb3csIERlY2lzaW9uUG9pbnQ6OkFmdGVy
UmVzcG9uc2UpOworfQorCitURVNUKENvbnRlbnRGaWx0ZXJpbmcsIEJsb2NrRG93bmxvYWRBZnRl
clJlc3BvbnNlKQoreworICAgIGRvd25sb2FkVGVzdChEZWNpc2lvbjo6QmxvY2ssIERlY2lzaW9u
UG9pbnQ6OkFmdGVyUmVzcG9uc2UpOworfQorCitURVNUKENvbnRlbnRGaWx0ZXJpbmcsIEFsbG93
RG93bmxvYWRBZnRlckFkZERhdGEpCit7CisgICAgZG93bmxvYWRUZXN0KERlY2lzaW9uOjpBbGxv
dywgRGVjaXNpb25Qb2ludDo6QWZ0ZXJBZGREYXRhKTsKK30KKworVEVTVChDb250ZW50RmlsdGVy
aW5nLCBCbG9ja0Rvd25sb2FkQWZ0ZXJBZGREYXRhKQoreworICAgIGRvd25sb2FkVGVzdChEZWNp
c2lvbjo6QmxvY2ssIERlY2lzaW9uUG9pbnQ6OkFmdGVyQWRkRGF0YSk7Cit9CisKK1RFU1QoQ29u
dGVudEZpbHRlcmluZywgQWxsb3dEb3dubG9hZEFmdGVyRmluaXNoZWRBZGRpbmdEYXRhKQorewor
ICAgIGRvd25sb2FkVGVzdChEZWNpc2lvbjo6QWxsb3csIERlY2lzaW9uUG9pbnQ6OkFmdGVyRmlu
aXNoZWRBZGRpbmdEYXRhKTsKK30KKworVEVTVChDb250ZW50RmlsdGVyaW5nLCBCbG9ja0Rvd25s
b2FkQWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEpCit7CisgICAgZG93bmxvYWRUZXN0KERlY2lzaW9u
OjpCbG9jaywgRGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEpOworfQorCitU
RVNUKENvbnRlbnRGaWx0ZXJpbmcsIEFsbG93RG93bmxvYWROZXZlcikKK3sKKyAgICBkb3dubG9h
ZFRlc3QoRGVjaXNpb246OkFsbG93LCBEZWNpc2lvblBvaW50OjpOZXZlcik7Cit9CisKK1RFU1Qo
Q29udGVudEZpbHRlcmluZywgQmxvY2tEb3dubG9hZE5ldmVyKQoreworICAgIGRvd25sb2FkVGVz
dChEZWNpc2lvbjo6QmxvY2ssIERlY2lzaW9uUG9pbnQ6Ok5ldmVyKTsKIH0KIAogI2VuZGlmIC8v
IFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyQ29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbQppbmRleCA0M2Fj
ZDUyMTQ4Mjc0OTU5YTZkODJkM2QyMDNkOTY0ODI1ZDI2MzlmLi5kMWNiN2U0NmY0MWM0NTNiODc1
NmJkODcwNjY3MzBiMjY4YTQ2MTc3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0K
QEAgLTMwLDIwICszMCw3NSBAQAogI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5o
IgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbi5oPgogCi1AaW50ZXJmYWNlIFNl
cnZlclJlZGlyZWN0UGx1Z0luIDogTlNPYmplY3QgPFdLV2ViUHJvY2Vzc1BsdWdJbj4KK3VzaW5n
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MgPSBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOwordXNpbmcgRGVjaXNpb24gPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNp
c2lvbjsKK3VzaW5nIERlY2lzaW9uUG9pbnQgPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpE
ZWNpc2lvblBvaW50OworCitAaW50ZXJmYWNlIE1vY2tDb250ZW50RmlsdGVyRW5hYmxlciA6IE5T
T2JqZWN0IDxOU0NvcHlpbmcsIE5TU2VjdXJlQ29kaW5nPgogQGVuZAogCi1AaW1wbGVtZW50YXRp
b24gU2VydmVyUmVkaXJlY3RQbHVnSW4KK0BpbXBsZW1lbnRhdGlvbiBNb2NrQ29udGVudEZpbHRl
ckVuYWJsZXIKKworKyAoQk9PTClzdXBwb3J0c1NlY3VyZUNvZGluZworeworICAgIHJldHVybiBZ
RVM7Cit9CisKKy0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQoreworICAgIHJldHVy
biBbc2VsZiByZXRhaW5dOworfQogCi0rICh2b2lkKWluaXRpYWxpemUKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopZGVjb2RlcgogewotICAgIHVzaW5nIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MgPSBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOwot
ICAgIHVzaW5nIERlY2lzaW9uID0gTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb247
Ci0gICAgdXNpbmcgRGVjaXNpb25Qb2ludCA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRl
Y2lzaW9uUG9pbnQ7Ci0gICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2V0dGluZ3MgPSBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzaW5nbGV0b24oKTsKKyAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGF1dG8mIHNldHRpbmdz
ID0gTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2luZ2xldG9uKCk7CiAgICAgc2V0dGluZ3Mu
c2V0RW5hYmxlZCh0cnVlKTsKLSAgICBzZXR0aW5ncy5zZXREZWNpc2lvbihEZWNpc2lvbjo6QWxs
b3cpOwotICAgIHNldHRpbmdzLnNldERlY2lzaW9uUG9pbnQoRGVjaXNpb25Qb2ludDo6QWZ0ZXJB
ZGREYXRhKTsKKyAgICBzZXR0aW5ncy5zZXREZWNpc2lvbihzdGF0aWNfY2FzdDxEZWNpc2lvbj4o
W2RlY29kZXIgZGVjb2RlSW50Rm9yS2V5OkAiRGVjaXNpb24iXSkpOworICAgIHNldHRpbmdzLnNl
dERlY2lzaW9uUG9pbnQoc3RhdGljX2Nhc3Q8RGVjaXNpb25Qb2ludD4oW2RlY29kZXIgZGVjb2Rl
SW50Rm9yS2V5OkAiRGVjaXNpb25Qb2ludCJdKSk7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0g
KHZvaWQpZGVhbGxvYworeworICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNpbmdsZXRv
bigpLnNldEVuYWJsZWQoZmFsc2UpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9p
ZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlcgoreworfQorCitAZW5kCisKK0BpbnRl
cmZhY2UgQ29udGVudEZpbHRlcmluZ1BsdWdJbiA6IE5TT2JqZWN0IDxXS1dlYlByb2Nlc3NQbHVn
SW4+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBDb250ZW50RmlsdGVyaW5nUGx1Z0luIHsKKyAg
ICBSZXRhaW5QdHI8TW9ja0NvbnRlbnRGaWx0ZXJFbmFibGVyPiBfY29udGVudEZpbHRlckVuYWJs
ZXI7CisgICAgUmV0YWluUHRyPFdLV2ViUHJvY2Vzc1BsdWdJbkNvbnRyb2xsZXI+IF9wbHVnSW5D
b250cm9sbGVyOworfQorCistICh2b2lkKXdlYlByb2Nlc3NQbHVnSW46KFdLV2ViUHJvY2Vzc1Bs
dWdJbkNvbnRyb2xsZXIgKilwbHVnSW5Db250cm9sbGVyIGluaXRpYWxpemVXaXRoT2JqZWN0Oihp
ZClpbml0aWFsaXphdGlvbk9iamVjdAoreworICAgIEFTU0VSVCghX3BsdWdJbkNvbnRyb2xsZXIp
OworICAgIF9wbHVnSW5Db250cm9sbGVyID0gcGx1Z0luQ29udHJvbGxlcjsKKyAgICBbcGx1Z0lu
Q29udHJvbGxlci5wYXJhbWV0ZXJzIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpOU1N0cmlu
Z0Zyb21DbGFzcyhbTW9ja0NvbnRlbnRGaWx0ZXJFbmFibGVyIGNsYXNzXSkgb3B0aW9uczpOU0tl
eVZhbHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCBjb250ZXh0Ok5VTExdOworfQorCistICh2b2lk
KWRlYWxsb2MKK3sKKyAgICBbW19wbHVnSW5Db250cm9sbGVyIHBhcmFtZXRlcnNdIHJlbW92ZU9i
c2VydmVyOnNlbGYgZm9yS2V5UGF0aDpOU1N0cmluZ0Zyb21DbGFzcyhbTW9ja0NvbnRlbnRGaWx0
ZXJFbmFibGVyIGNsYXNzXSldOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClv
YnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9i
amVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4
dAoreworICAgIGlkIGNvbnRlbnRGaWx0ZXJFbmFibGVyID0gW29iamVjdCB2YWx1ZUZvcktleVBh
dGg6a2V5UGF0aF07CisgICAgQVNTRVJUKFtjb250ZW50RmlsdGVyRW5hYmxlciBpc0tpbmRPZkNs
YXNzOltNb2NrQ29udGVudEZpbHRlckVuYWJsZXIgY2xhc3NdXSk7CisgICAgX2NvbnRlbnRGaWx0
ZXJFbmFibGVyID0gY29udGVudEZpbHRlckVuYWJsZXI7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0Rvd25sb2FkLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRG93bmxvYWQubW0KaW5kZXggYzNm
N2JlZWY4ZjA0NDY0YmQ0OTNiYjJjMmY3NjY2MTUyMjkwNTE1Yy4uOTIyNzIyMGQxYzY2NmRjNTM5
YTg4MjEyOTViMjY2NDM2ZTdkY2U4MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyQ29jb2EvRG93bmxvYWQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyQ29jb2EvRG93bmxvYWQubW0KQEAgLTI2NSwzNCArMjY1LDUgQEAgVEVTVChf
V0tEb3dubG9hZCwgT3JpZ2luYXRpbmdXZWJWaWV3KQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKIH0KIAotQGludGVyZmFjZSBBc3luY2hyb25vdXNEb3dubG9hZE5hdmln
YXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIEFzeW5jaHJvbm91c0Rvd25sb2FkTmF2aWdhdGlvbkRlbGVnYXRlCi0t
ICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBk
ZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNp
c2lvbkhhbmRsZXIKLXsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBeIHsKLSAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBv
bGljeUJlY29tZURvd25sb2FkKTsKLSAgICB9KTsKLX0KLUBlbmQKLQotQGludGVyZmFjZSBBc3lu
Y2hyb25vdXNEb3dubG9hZERlbGVnYXRlIDogTlNPYmplY3QgPF9XS0Rvd25sb2FkRGVsZWdhdGU+
Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBBc3luY2hyb25vdXNEb3dubG9hZERlbGVnYXRlCi0K
LS0gKHZvaWQpX2Rvd25sb2FkRGlkU3RhcnQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKLXsKLSAg
ICBpc0RvbmUgPSB0cnVlOwotfQotCi1AZW5kCi0KLVRFU1QoX1dLRG93bmxvYWQsIEFzeW5jaHJv
bm91c0Rvd25sb2FkUG9saWN5KQotewotICAgIHJ1blRlc3QoYWRvcHROUyhbW0FzeW5jaHJvbm91
c0Rvd25sb2FkTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSkuZ2V0KCksIGFkb3B0TlMo
W1tBc3luY2hyb25vdXNEb3dubG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSkuZ2V0KCksIHNvdXJj
ZVVSTCk7Ci19Ci0KICNlbmRpZgogI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjc4NTMxMmJjM2I2YjFkYTNhZDky
MWNlNzk4M2ZlNWZiZWY1MzllMi4uZTIwMzZhZjVjMjc2ODhmMGRiMWJiM2Y3Yjg3ZjFiZjg1ZDFl
OTcyMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA4LTI2ICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29udGVudCBGaWx0ZXJpbmddIERldGVybWluZSBu
YXZpZ2F0aW9uIGFuZCBjb250ZW50IHBvbGljeSBiZWZvcmUgY29udGludWluZyB0byBmaWx0ZXIg
YSBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDg1MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCB0ZXN0cyBmb3Igd2hhdCBoYXBwZW5zIGlmIHRoZSBjb250ZW50IGZpbHRlciBkb2VzIG5v
dCBtYWtlIGEgZGVjaXNpb24gd2hlbiB0aGUgbG9hZCBmaW5pc2hlcy4KKworICAgICAgICAqIGNv
bnRlbnRmaWx0ZXJpbmcvYWxsb3ctbmV2ZXItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogY29udGVudGZpbHRlcmluZy9hbGxvdy1uZXZlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBj
b250ZW50ZmlsdGVyaW5nL2Jsb2NrLW5ldmVyLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGNvbnRlbnRmaWx0ZXJpbmcvYmxvY2stbmV2ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICog
Y29udGVudGZpbHRlcmluZy9yZXNvdXJjZXMvY29udGVudGZpbHRlcmluZy5qczoKKwogMjAxNS0w
OC0zMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgTmV0d29y
ayBDYWNoZTogU3RhbGUgY29udGVudCBhZnRlciBiYWNrIG5hdmlnYXRpb24KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2NvbnRlbnRmaWx0ZXJpbmcvYWxsb3ctbmV2ZXItZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2NvbnRlbnRmaWx0ZXJpbmcvYWxsb3ctbmV2ZXItZXhwZWN0ZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42NDUxMTJmYTBmZGZmMmViMjZlMmRiMDdmYzAzZWRkOTFhODJmOTBiCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29udGVudGZpbHRlcmluZy9hbGxvdy1uZXZlci1l
eHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aWZyYW1lIHNy
Yz0icmVzb3VyY2VzL3Bhc3MuaHRtbCI+PC9pZnJhbWU+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9jb250ZW50ZmlsdGVyaW5nL2FsbG93LW5ldmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9jb250ZW50
ZmlsdGVyaW5nL2FsbG93LW5ldmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWU4ODFiN2VmYzIyOWY3N2Ri
ZmJjNDRiNGJiODczNmM1MmNkMTRlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nv
bnRlbnRmaWx0ZXJpbmcvYWxsb3ctbmV2ZXIuaHRtbApAQCAtMCwwICsxLDggQEAKKzwhRE9DVFlQ
RSBodG1sPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jb250ZW50ZmlsdGVyaW5nLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykgeworICAgIHZhciBzZXR0aW5n
cyA9IHdpbmRvdy5pbnRlcm5hbHMubW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKKyAgICB0ZXN0
Q29udGVudEZpbHRlcmluZygvKiBkZWNpc2lvblBvaW50ICovc2V0dGluZ3MuREVDSVNJT05fUE9J
TlRfTkVWRVIsIC8qIGRlY2lzaW9uICovc2V0dGluZ3MuREVDSVNJT05fQUxMT1cpOworfQorPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb250ZW50ZmlsdGVyaW5nL2Jsb2NrLW5l
dmVyLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9jb250ZW50ZmlsdGVyaW5nL2Jsb2NrLW5l
dmVyLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQ1MTEyZmEwZmRmZjJlYjI2ZTJkYjA3ZmMw
M2VkZDkxYTgyZjkwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbnRlbnRmaWx0
ZXJpbmcvYmxvY2stbmV2ZXItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGlmcmFtZSBzcmM9InJlc291cmNlcy9wYXNzLmh0bWwiPjwvaWZyYW1lPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29udGVudGZpbHRlcmluZy9ibG9jay1uZXZlci5odG1sIGIv
TGF5b3V0VGVzdHMvY29udGVudGZpbHRlcmluZy9ibG9jay1uZXZlci5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ4NjVlMWE5ODVhNmY4NWQwZjExYWRiZTIwNDRiYmUyODI2Mzg2OGUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9jb250ZW50ZmlsdGVyaW5nL2Jsb2NrLW5ldmVyLmh0bWwKQEAgLTAs
MCArMSw4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY29udGVu
dGZpbHRlcmluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRlcm5hbHMp
IHsKKyAgICB2YXIgc2V0dGluZ3MgPSB3aW5kb3cuaW50ZXJuYWxzLm1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M7CisgICAgdGVzdENvbnRlbnRGaWx0ZXJpbmcoLyogZGVjaXNpb25Qb2ludCAqL3Nl
dHRpbmdzLkRFQ0lTSU9OX1BPSU5UX05FVkVSLCAvKiBkZWNpc2lvbiAqL3NldHRpbmdzLkRFQ0lT
SU9OX0JMT0NLKTsKK30KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29udGVu
dGZpbHRlcmluZy9yZXNvdXJjZXMvY29udGVudGZpbHRlcmluZy5qcyBiL0xheW91dFRlc3RzL2Nv
bnRlbnRmaWx0ZXJpbmcvcmVzb3VyY2VzL2NvbnRlbnRmaWx0ZXJpbmcuanMKaW5kZXggYjY4MzM5
YjkyOTZiZjI1MzdiYThjMTY1NzliYjYwOTA5NjlkMTcxNi4uOWFlNGZlZGE0YTNiZDA2MzE3MTc5
MGVkY2U4MDQ1NjkzZThhYjM1YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY29udGVudGZpbHRl
cmluZy9yZXNvdXJjZXMvY29udGVudGZpbHRlcmluZy5qcworKysgYi9MYXlvdXRUZXN0cy9jb250
ZW50ZmlsdGVyaW5nL3Jlc291cmNlcy9jb250ZW50ZmlsdGVyaW5nLmpzCkBAIC01LDcgKzUsMTIg
QEAgZnVuY3Rpb24gX2RvVGVzdChkZWNpc2lvblBvaW50LCBkZWNpc2lvbiwgZGVjaWRlQWZ0ZXJV
bmJsb2NrUmVxdWVzdCkKICAgICBzZXR0aW5ncy5kZWNpc2lvblBvaW50ID0gZGVjaXNpb25Qb2lu
dDsKICAgICBzZXR0aW5ncy5kZWNpc2lvbiA9IChkZWNpZGVBZnRlclVuYmxvY2tSZXF1ZXN0ID8g
c2V0dGluZ3MuREVDSVNJT05fQkxPQ0sgOiBkZWNpc2lvbik7CiAgICAgCi0gICAgdmFyIGJsb2Nr
ZWRTdHJpbmdUZXh0ID0gKGRlY2lzaW9uID09PSBzZXR0aW5ncy5ERUNJU0lPTl9BTExPVyA/ICJG
QUlMIiA6ICJQQVNTIik7CisgICAgdmFyIGJsb2NrZWRTdHJpbmdUZXh0OworICAgIGlmIChkZWNp
c2lvblBvaW50ID09PSBzZXR0aW5ncy5ERUNJU0lPTl9QT0lOVF9ORVZFUiB8fCBkZWNpc2lvbiA9
PT0gc2V0dGluZ3MuREVDSVNJT05fQUxMT1cpCisgICAgICAgIGJsb2NrZWRTdHJpbmdUZXh0ID0g
IkZBSUwiOworICAgIGVsc2UKKyAgICAgICAgYmxvY2tlZFN0cmluZ1RleHQgPSAgIlBBU1MiOwor
CiAgICAgaWYgKGRlY2lkZUFmdGVyVW5ibG9ja1JlcXVlc3QpIHsKICAgICAgICAgc2V0dGluZ3Mu
dW5ibG9ja1JlcXVlc3REZWNpc2lvbiA9IGRlY2lzaW9uOwogICAgICAgICBzZXR0aW5ncy5ibG9j
a2VkU3RyaW5nID0gIjwhRE9DVFlQRSBodG1sPjxzY3JpcHQ+ZnVuY3Rpb24gdW5ibG9ja1JlcXVl
c3REZW5pZWQoKSB7IHdpbmRvdy50b3AucG9zdE1lc3NhZ2UoJ3VuYmxvY2tyZXF1ZXN0ZGVuaWVk
JywgJyonKTsgfTwvc2NyaXB0Pjxib2R5PiIgKyBibG9ja2VkU3RyaW5nVGV4dDsK
</data>
<flag name="review"
          id="285490"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>