<?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>77066</bug_id>
          
          <creation_ts>2012-01-25 18:18:34 -0800</creation_ts>
          <short_desc>Implement new WEBGL compressed texture extensions</short_desc>
          <delta_ts>2012-02-08 11:14:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gregg Tavares">gman</reporter>
          <assigned_to name="Gregg Tavares">gman</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarrin</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>kbr</cc>
    
    <cc>ojan</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>542832</commentid>
    <comment_count>0</comment_count>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-01-25 18:18:34 -0800</bug_when>
    <thetext>Upon approval of the new WebGL compressed texture extension specs, implement them in webkit

I&apos;m happy to do this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549304</commentid>
    <comment_count>1</comment_count>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-02-03 18:40:25 -0800</bug_when>
    <thetext>I have a CL for this but I&apos;m running into a problem.

I wrote a layout test but the test is going to generate different results depending on how DRT is built. If it&apos;s using osmesa for example there is no texture compression AFAIK. If it&apos;s running on OSX there is probably always texture compression .

Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550417</commentid>
    <comment_count>2</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-02-06 16:43:36 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; I have a CL for this but I&apos;m running into a problem.
&gt; 
&gt; I wrote a layout test but the test is going to generate different results depending on how DRT is built. If it&apos;s using osmesa for example there is no texture compression AFAIK. If it&apos;s running on OSX there is probably always texture compression .
&gt; 
&gt; Thoughts?

Sorry for the delay replying -- was traveling and got behind on email.

Per offline discussion I think it&apos;s fine to split up the landing of the code and a layout test, since it&apos;s particularly hard to test this functionality across platforms. A WebGL conformance test would be great. Like the other conformance tests for extensions, it can exit early if the extension doesn&apos;t exist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550471</commentid>
    <comment_count>3</comment_count>
      <attachid>125740</attachid>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-02-06 17:41:29 -0800</bug_when>
    <thetext>Created attachment 125740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550480</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-02-06 17:47:11 -0800</bug_when>
    <thetext>*** Bug 77257 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550483</commentid>
    <comment_count>5</comment_count>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-02-06 17:50:08 -0800</bug_when>
    <thetext>Just fyi, originally I was planning add the new extension, then delete the old one. But that would have required a bunch of crazy workarounds. It would have also required adding/removing files from the projects which in the past has been painful.

Doing them both together prevents both issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550489</commentid>
    <comment_count>6</comment_count>
      <attachid>125740</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-02-06 17:56:18 -0800</bug_when>
    <thetext>Comment on attachment 125740
Patch

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

Looks great. Couple of tiny typos. Could you rebaseline the patch? r=me

&gt; Source/WebCore/ChangeLog:7
&gt; +        texture extension and implemenets the first new

tiny typo: implements

&gt; Source/WebCore/ChangeLog:10
&gt; +        A test in in the WebGL conformance tests in

in in -&gt; is in

&gt; Source/WebCore/html/canvas/WebGLCompressedTextureS3TC.cpp:2
&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.

2012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551253</commentid>
    <comment_count>7</comment_count>
      <attachid>125901</attachid>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-02-07 12:45:03 -0800</bug_when>
    <thetext>Created attachment 125901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551262</commentid>
    <comment_count>8</comment_count>
      <attachid>125901</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-07 12:54:40 -0800</bug_when>
    <thetext>Comment on attachment 125901
Patch

Attachment 125901 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11449060</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551298</commentid>
    <comment_count>9</comment_count>
      <attachid>125901</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-07 13:24:13 -0800</bug_when>
    <thetext>Comment on attachment 125901
Patch

Attachment 125901 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11460059</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551371</commentid>
    <comment_count>10</comment_count>
      <attachid>125926</attachid>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-02-07 14:14:50 -0800</bug_when>
    <thetext>Created attachment 125926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551397</commentid>
    <comment_count>11</comment_count>
      <attachid>125926</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-07 14:33:50 -0800</bug_when>
    <thetext>Comment on attachment 125926
Patch

Attachment 125926 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11462096</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551426</commentid>
    <comment_count>12</comment_count>
      <attachid>125936</attachid>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-02-07 14:54:32 -0800</bug_when>
    <thetext>Created attachment 125936
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551430</commentid>
    <comment_count>13</comment_count>
      <attachid>125936</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-07 15:01:34 -0800</bug_when>
    <thetext>Comment on attachment 125936
Patch

Attachment 125936 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11461100</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551444</commentid>
    <comment_count>14</comment_count>
      <attachid>125936</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-07 15:12:06 -0800</bug_when>
    <thetext>Comment on attachment 125936
Patch

Sorry, it seems that the patch is also missing the new generated files. They should be placed in the list of files under webcore_built_sources. That how automake knows that the file should be compiled and linked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551458</commentid>
    <comment_count>15</comment_count>
      <attachid>125943</attachid>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-02-07 15:22:03 -0800</bug_when>
    <thetext>Created attachment 125943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552230</commentid>
    <comment_count>16</comment_count>
      <attachid>125943</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-02-08 10:01:36 -0800</bug_when>
    <thetext>Comment on attachment 125943
Patch

Great! Martin, thanks for the help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552311</commentid>
    <comment_count>17</comment_count>
      <attachid>125943</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-08 11:14:11 -0800</bug_when>
    <thetext>Comment on attachment 125943
Patch

Clearing flags on attachment: 125943

Committed r107107: &lt;http://trac.webkit.org/changeset/107107&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552312</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-08 11:14:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125740</attachid>
            <date>2012-02-06 17:41:29 -0800</date>
            <delta_ts>2012-02-07 12:44:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77066-20120206174128.patch</filename>
            <type>text/plain</type>
            <size>73566</size>
            <attacher name="Gregg Tavares">gman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTRmZmU4NzE5N2QyMDg1
OWQ2ODg1NThhN2M4ZWY3ZTM1MzEyNzVmMC4uMmY1MGFhN2U2ZTVmNWYwNWQ5YmI3NzYwYjI5OTUz
NGZlZTEzMTUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTAyLTA2ICBHcmVn
ZyBUYXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBuZXcgV0VC
R0wgY29tcHJlc3NlZCB0ZXh0dXJlIGV4dGVuc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MDY2CisKKyAgICAgICAgVGhpcyByZW1vdmVzIHRo
ZSBvbGQgZXhwZXJpbWVudGFsIGNvbXByZXNzZWQKKyAgICAgICAgdGV4dHVyZSBleHRlbnNpb24g
YW5kIGltcGxlbWVuZXRzIHRoZSBmaXJzdCBuZXcKKyAgICAgICAgb25lLgorCisgICAgICAgIEEg
dGVzdCBpbiBpbiB0aGUgV2ViR0wgY29uZm9ybWFuY2UgdGVzdHMgaW4KKyAgICAgICAgZXh0ZW5z
aW9ucy93ZWJnbC1jb21wcmVzc2VkLXRleHR1cmUtczN0Yy5odG1sCisgICAgICAgIGFuZCB3aWxs
IGJlIGNvcGllZCBoZXJlIGluIGEgZnV0dXJlIHBhdGNoLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGVzdCBjb21pbmcgaW4g
ZnV0dXJlIHBhdGNoLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAg
ICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dl
YkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOE9iamVjdCk6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OmdldE5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaWRsLgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oOiBSZW1v
dmVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmg6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0
SW5mbzo6V2ViR0xHZXRJbmZvKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTFVuc2lnbmVkSW50QXJyYXkpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlMkQpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVu
c2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0
ZUNvbXByZXNzZWRUZXhGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ29tcHJlc3NlZFRleERpbWVuc2lvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNvbXBy
ZXNzZWRUZXhTdWJEaW1lbnNpb25zKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViR0xSZW5kZXJp
bmdDb250ZXh0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aWRsOgorCiAyMDEyLTAyLTA2ICBDaHJpcyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgenZtdWwgaW5jb3JyZWN0bHkgbXVsdGlwbGllcyBjb21wbGV4IGFycmF5cyBvbiBX
aW5kb3dzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA3NWUzZmZhYjExYjIxOTdmZjQyM2UzN2Rj
ODlkYWMwYjBiMzQ0NjM0Li42NzU1NDMxMGQ0MWM5Njg1ZWE2NzE1NGI1YTE0NDMwNjE0MDMxMGMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjE4MCw3ICsyMTgwLDcgQEAgSUYgKEVOQUJMRV9X
RUJHTCkKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL1ZhbGlk
YXRlTGltaXRhdGlvbnMuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9j
b21waWxlci9WYXJpYWJsZUluZm8uY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVy
LmNwcAotICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAKKyAg
ICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCiAgICAgICAg
IGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwCiAgICAgICAgIGh0bWwvY2Fu
dmFzL1dlYkdMQ29udGV4dEV2ZW50LmNwcAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRl
eHRHcm91cC5jcHAKQEAgLTIyMTMsNyArMjIxMyw3IEBAIElGIChFTkFCTEVfV0VCR0wpCiAgICAg
ICAgIGh0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmlkbAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTEFjdGl2ZUluZm8uaWRsCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVy
LmlkbAotICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5pZGwKKyAg
ICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsCiAgICAgICAg
IGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsCiAgICAgICAgIGh0bWwvY2Fu
dmFzL1dlYkdMQ29udGV4dEV2ZW50LmlkbAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlYnVn
UmVuZGVyZXJJbmZvLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNzg2OTA1
MjRhOGRkZmE4MzViMmU4ZjAyNzgxYjc5OWJiNDExODAwYi4uYzIxNzE4N2JlOTExOTRlZjQ2ZDA4
YzkwNTRiY2NiZTUwMzEyZmY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0y
ODYsNyArMjg2LDcgQEAgQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52
YXMvVWludDhDbGFtcGVkQXJyYXkuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dl
YkdMQWN0aXZlSW5mby5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xCdWZm
ZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1
cmVzLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0
cmlidXRlcy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZl
bnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaWRs
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDMwMDZlODM2ZWU3NGUyYWY1MTA4
NWNjODQwOGVjYWI2NmYyNWE3OGUuLjhiZmFkMzk2Mzk1YTYzYTYyYzlhNDJkYjNiMWMxMWZmNzAz
MGIzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysr
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTYxMCw4ICs1NjEwLDgg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEFjdGl2ZUluZm8uaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgXAotCVNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmggXAorCVNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMu
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMu
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCmluZGV4IGM2YTJlY2VlYjBmOGQ3MTAxNWFiZTIxNjEyZmUyNGM4ZGRkNDNiNDEu
LjlkYWMwZDdmY2ZhM2NmMmFkZDY5YmI2YTAxOWY5ZDgzNjc1YTZlMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpA
QCAtMzY5MSw3ICszNjkxLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpIHsK
ICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuaCBcCiAgICAgICAgIGh0bWwvY2FudmFz
L1dlYkdMQWN0aXZlSW5mby5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaCBc
Ci0gICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmggXAorICAgICAg
ICBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIFwKICAgICAgICAgaHRt
bC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIFwKICAgICAgICAgaHRtbC9jYW52YXMv
V2ViR0xDb250ZXh0RXZlbnQuaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdy
b3VwLmggXApAQCAtMzczMSw3ICszNzMxLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dF
QkdMPTEpIHsKICAgICAgICAgaHRtbC9jYW52YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3Bw
IFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwIFwKICAgICAgICAgaHRtbC9j
YW52YXMvV2ViR0xCdWZmZXIuY3BwIFwKLSAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZXMuY3BwIFwKKyAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEMuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRl
cy5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAgXAogICAg
ICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91cC5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IDE5NTlkZGYxMjg4MGViYTZiY2U0NjE1MTUzNThiYzgxODNiNGQzNWQuLjA2NTU1ODE5Yjgx
YmYxOGRmNDU2NjkxZmJkYmQ2Njc0YWQ1ZDg3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTk2MSw3
ICs5NjEsNyBAQAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1VpbnQ4Q2xhbXBlZEFycmF5Lmlk
bCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xBY3RpdmVJbmZvLmlkbCcsCiAgICAg
ICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaWRsJywKLSAgICAgICAgICAgICdodG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5pZGwnLAorICAgICAgICAgICAgJ2h0bWwv
Y2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlkbCcsCiAgICAgICAgICAgICAnaHRt
bC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwnLAogICAgICAgICAgICAgJ2h0bWwv
Y2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMv
V2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5pZGwnLApAQCAtNTQ0Myw4ICs1NDQzLDggQEAKICAgICAg
ICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8uaCcsCiAgICAgICAgICAgICAnaHRt
bC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJH
TEJ1ZmZlci5oJywKLSAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlcy5jcHAnLAotICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1
cmVzLmgnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEMuaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRl
cy5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMu
aCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuY3BwJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA2ZDZkODUwZTQ1M2M1MTk1YTExY2Y4OTI4MmVhYjVjZDBmNTMyOWYxLi40ZDRlNjA1OGQwZmM2
MjA0ZmJiNGI4MjM2ZGEyMGNlYjRiY2RkOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzc1LDEwICsxNzc1LDEwIEBACiAJ
CTY1RkVBODY5MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQ
YWdlLmNwcCAqLzsgfTsKIAkJNkUyMUM2QzAxMTI2MzM4NTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29u
dGV4dDNELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZFMjFDNkJGMTEyNjMzODUwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRC5jcHAgKi87IH07
CiAJCTZFMjFDNkMyMTEyNjMzOTkwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRENHLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjFDNkMxMTEy
NjMzOTkwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRENHLmNwcCAqLzsgfTsKLQkJNkUzRkFE
MzgxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFEMzYxNDczM0Y0
MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwICovOyB9OwotCQk2RTNG
QUQzOTE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFEMzcxNDczM0Y0
MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCAqLzsgfTsKLQkJNkUzRkFF
OEUxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRThDMTQ3MzNGREIw
MEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgKi87IH07Ci0JCTZFM0ZBRThG
MTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFFOEQxNDczM0ZEQjAwRTQy
MzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmggKi87IH07CisJCTZFM0ZBRDM4MTQ3MzNG
NDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRDM2MTQ3MzNGNDAwMEU0
MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCAqLzsgfTsKKwkJNkUzRkFE
MzkxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRDM3MTQ3MzNG
NDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggKi87IH07CisJCTZF
M0ZBRThFMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUU4QzE0
NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwICovOyB9Owor
CQk2RTNGQUU4RjE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRThE
MTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oICovOyB9Owog
CQk2RTQ3RTY2MDEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNDdFNjVFMTBCNzk0NEIwMEIx
ODZDOCAvKiBXZWJHTEdldEluZm8uY3BwICovOyB9OwogCQk2RTQ3RTY2MTEwQjc5NDRCMDBCMTg2
QzggLyogV2ViR0xHZXRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmggKi87
IH07CiAJCTZFNEFCQ0Q0MTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRBQkNE
MjEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuY3BwICovOyB9OwpAQCAt
ODYzMywxMSArODYzMywxMSBAQAogCQk2NUZFQTg2ODA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMjFDNkJGMTEyNjMzODUwMEE3QkUwMiAvKiBHcmFw
aGljc0NvbnRleHQzRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
cmFwaGljc0NvbnRleHQzRC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMjFD
NkMxMTEyNjMzOTkwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRENHLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2RTNGQUQzNjE0NzMzRjQwMDBFNDIzMDYgLyogSlNX
ZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNkUzRkFEMzcxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2RTNGQUU4QzE0
NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwOyBw
YXRoID0gY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNkUzRkFFOEQxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVzLmg7IHBhdGggPSBjYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNkUzRkFFOTAxNDczM0ZFQTAwRTQyMzA2IC8q
IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJH
TENvbXByZXNzZWRUZXh0dXJlcy5pZGw7IHBhdGggPSBjYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTNGQUQzNjE0NzMzRjQw
MDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkUzRkFEMzcxNDczM0Y0MDAwRTQyMzA2
IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk2RTNGQUU4QzE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOyBwYXRoID0gY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkUzRkFF
OEQxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmg7
IHBhdGggPSBjYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNkUzRkFFOTAxNDczM0ZFQTAwRTQyMzA2IC8qIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQy5pZGw7IHBhdGggPSBjYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTQ3RTY1RTEwQjc5NDRCMDBC
MTg2QzggLyogV2ViR0xHZXRJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFdlYkdMR2V0SW5mby5jcHA7IHBhdGggPSBjYW52YXMvV2ViR0xHZXRJbmZvLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8q
IFdlYkdMR2V0SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTEdl
dEluZm8uaDsgcGF0aCA9IGNhbnZhcy9XZWJHTEdldEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNkU0QUJDRDIxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25vd25FbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTFVua25v
d25FbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NDU5LDkgKzE0
NDU5LDkgQEAKIAkJCQk0OUM3QjlBODEwNDJEMzJFMDAwOUQ0NDcgLyogV2ViR0xCdWZmZXIuY3Bw
ICovLAogCQkJCTQ5QzdCOUE5MTA0MkQzMkUwMDA5RDQ0NyAvKiBXZWJHTEJ1ZmZlci5oICovLAog
CQkJCTQ5QzdCOUFBMTA0MkQzMkUwMDA5RDQ0NyAvKiBXZWJHTEJ1ZmZlci5pZGwgKi8sCi0JCQkJ
NkUzRkFFOEMxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcCAq
LywKLQkJCQk2RTNGQUU4RDE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZXMuaCAqLywKLQkJCQk2RTNGQUU5MDE0NzMzRkVBMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZXMuaWRsICovLAorCQkJCTZFM0ZBRThDMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgKi8sCisJCQkJNkUzRkFFOEQxNDczM0ZEQjAwRTQyMzA2
IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggKi8sCisJCQkJNkUzRkFFOTAxNDczM0ZF
QTAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlkbCAqLywKIAkJCQk2RTRF
OTFBOTEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAgKi8sCiAJ
CQkJNkU0RTkxQUExMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAq
LywKIAkJCQk2RTRFOTFBQjEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRl
cy5pZGwgKi8sCkBAIC0xNzQzNSw4ICsxNzQzNSw4IEBACiAJCQkJQTdEMjBGNjExMDdGNDA2OTAw
QTgwMzkyIC8qIEpTV2ViR0xBY3RpdmVJbmZvLmggKi8sCiAJCQkJNDlDN0I5ODAxMDQyRDJEMzAw
MDlENDQ3IC8qIEpTV2ViR0xCdWZmZXIuY3BwICovLAogCQkJCTQ5QzdCOTgxMTA0MkQyRDMwMDA5
RDQ0NyAvKiBKU1dlYkdMQnVmZmVyLmggKi8sCi0JCQkJNkUzRkFEMzYxNDczM0Y0MDAwRTQyMzA2
IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwICovLAotCQkJCTZFM0ZBRDM3MTQ3MzNG
NDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmggKi8sCisJCQkJNkUzRkFE
MzYxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwICov
LAorCQkJCTZFM0ZBRDM3MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDLmggKi8sCiAJCQkJNkVFOEE3NzAxMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xDb250
ZXh0QXR0cmlidXRlcy5jcHAgKi8sCiAJCQkJNkVFOEE3NzExMEY4MDNGMzAwNUE0QTI0IC8qIEpT
V2ViR0xDb250ZXh0QXR0cmlidXRlcy5oICovLAogCQkJCUJDMkNCRjdBMTQwRjFENTgwMDM4NzlC
RSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmNwcCAqLywKQEAgLTIyOTU4LDcgKzIyOTU4LDcgQEAK
IAkJCQlGRDgyRDdGODEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTdEMjBGNjMxMDdGNDA2OTAwQTgwMzkyIC8qIEpTV2ViR0xBY3RpdmVJ
bmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3Qjk5NDEwNDJEMkQzMDAwOUQ0NDcgLyogSlNX
ZWJHTEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNkUzRkFEMzkxNDczM0Y0MDAwRTQyMzA2
IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTZFM0ZB
RDM5MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2RUU4QTc3MzEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRl
eHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzJDQkY0RTE0MEYxQUJEMDAzODc5
QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5OTgx
MDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yMzk4NSw3ICsyMzk4NSw3IEBACiAJCQkJQkM2REFERUYwQTE5NUZERjAwRTVDRDE0IC8qIFdl
YkZvbnRDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEMjBGNkQxMDdGNDM4QjAwQTgwMzky
IC8qIFdlYkdMQWN0aXZlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5QzkxMDQyRDMy
RjAwMDlENDQ3IC8qIFdlYkdMQnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk2RTNGQUU4RjE0
NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTZFM0ZBRThGMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkU0RTkxQUYxMEY3RkIzMTAwQTI3NzlDIC8qIFdl
YkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjZGMUVFMTI3Rjcw
QjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDFE
M0NGODMxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMQ29udGV4dEdyb3VwLmggaW4gSGVhZGVycyAq
LywKQEAgLTI2MDk3LDcgKzI2MDk3LDcgQEAKIAkJCQlGRDhFOUJERjEzRDRDRDJCMDA1MERDNzIg
LyogSlNXYXZlU2hhcGVyTm9kZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0QyMEY2
MjEwN0Y0MDY5MDBBODAzOTIgLyogSlNXZWJHTEFjdGl2ZUluZm8uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDlDN0I5OTMxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xCdWZmZXIuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJNkUzRkFEMzgxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVz
c2VkVGV4dHVyZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNkUzRkFEMzgxNDczM0Y0MDAwRTQy
MzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNkVFOEE3NzIxMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xDb250ZXh0QXR0cmlidXRlcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzJDQkY3QjE0MEYxRDU4MDAzODc5QkUgLyogSlNXZWJH
TENvbnRleHRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUM3Qjk5NzEwNDJEMkQzMDAw
OUQ0NDcgLyogSlNXZWJHTEZyYW1lYnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY5MzAs
NyArMjY5MzAsNyBAQAogCQkJCTkzRjE5QjA3MDgyNDVFNTkwMDFFOUFCQyAvKiBXZWJDb3JlVmll
dy5tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2REFERkEwQTE5NjAyQjAwRTVDRDE0IC8qIFdlYkZv
bnRDYWNoZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdCOUM4MTA0MkQzMkYwMDA5RDQ0NyAv
KiBXZWJHTEJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2RTNGQUU4RTE0NzMzRkRCMDBF
NDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NkUzRkFFOEUxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTZFNEU5MUFFMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENv
bnRleHRBdHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjZGMUVEMTI3RjcwQjEw
MDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwMUQz
Q0Y4MjE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xDb250ZXh0R3JvdXAuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggYjRmNTY2MjM5YTE3MDZjZjc1ZmY1ODE1
NTlhZDhkN2VlYmE0Y2E1Yi4uMGJmYTYzYWZiMzU1ZDcwZGExZGQ2ZjFlZDdkZjBiMDIwNDM1NGJj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmlu
Z0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtNDAsOCArNDAsMTAgQEAKICNpbmNsdWRl
ICJKU09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCIKICNpbmNsdWRlICJKU09FU1RleHR1cmVGbG9h
dC5oIgogI2luY2x1ZGUgIkpTT0VTVmVydGV4QXJyYXlPYmplY3QuaCIKKyNpbmNsdWRlICJKU1Vp
bnQzMkFycmF5LmgiCiAjaW5jbHVkZSAiSlNVaW50OEFycmF5LmgiCiAjaW5jbHVkZSAiSlNXZWJH
TEJ1ZmZlci5oIgorI2luY2x1ZGUgIkpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCIKICNp
bmNsdWRlICJKU1dlYkdMRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJKU1dlYkdMTG9zZUNvbnRl
eHQuaCIKICNpbmNsdWRlICJKU1dlYkdMUHJvZ3JhbS5oIgpAQCAtNTYsNyArNTgsNyBAQAogI2lu
Y2x1ZGUgIk9FU1RleHR1cmVGbG9hdC5oIgogI2luY2x1ZGUgIk9FU1ZlcnRleEFycmF5T2JqZWN0
LmgiCiAjaW5jbHVkZSAiV2ViR0xCdWZmZXIuaCIKLSNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRU
ZXh0dXJlcy5oIgorI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgiCiAjaW5j
bHVkZSAiV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oIgogI2luY2x1ZGUgIldlYkdMRGVidWdTaGFk
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViR0xFeHRlbnNpb24uaCIKQEAgLTcxLDYgKzczLDcgQEAKICNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvSW50MzJBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9VaW50MzJBcnJheS5o
PgogCiAjaWYgRU5BQkxFKFZJREVPKQogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAg
LTEyMSw2ICsxMjQsOCBAQCBzdGF0aWMgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgV2ViRwogICAgICAgICByZXR1cm4g
dG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGluZm8uZ2V0V2ViR0xUZXh0dXJlKCkpOwogICAgIGNh
c2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMVW5zaWduZWRCeXRlQXJyYXk6CiAgICAgICAgIHJl
dHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5mby5nZXRXZWJHTFVuc2lnbmVkQnl0ZUFy
cmF5KCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMVW5zaWduZWRJbnRBcnJh
eToKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbmZvLmdldFdlYkdM
VW5zaWduZWRJbnRBcnJheSgpKTsKICAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTOgogICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmpl
Y3QsIGluZm8uZ2V0V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUygpKTsKICAgICBkZWZhdWx0OgpA
QCAtMTkzLDggKzE5OCw4IEBAIHN0YXRpYyBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXZWJHTEV4dGVuCiAgICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8V2ViR0xEZWJ1Z1JlbmRlcmVy
SW5mbyo+KGV4dGVuc2lvbikpOwogICAgIGNhc2UgV2ViR0xFeHRlbnNpb246OldlYkdMRGVidWdT
aGFkZXJzTmFtZToKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0
aWNfY2FzdDxXZWJHTERlYnVnU2hhZGVycyo+KGV4dGVuc2lvbikpOwotICAgIGNhc2UgV2ViR0xF
eHRlbnNpb246OldlYktpdFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzTmFtZToKLSAgICAgICAgcmV0
dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxXZWJHTENvbXByZXNzZWRU
ZXh0dXJlcyo+KGV4dGVuc2lvbikpOworICAgIGNhc2UgV2ViR0xFeHRlbnNpb246OldlYktpdFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDTmFtZToKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywg
Z2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyo+KGV4
dGVuc2lvbikpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
anNOdWxsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAppbmRleCBkZTE0
ZDQzNTQzY2IxZWI2Y2NiNDk4YTcyZWQwNGM2ODk5NDRhMGE0Li5jMDc4Njg4NTg1MmQ2MTAyZjFl
YzM5ZmFlNWNiODg0OGRmMjlmODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAKICNpbmNsdWRlICJWOFVpbnQzMkFycmF5LmgiCiAjaW5j
bHVkZSAiVjhVaW50OEFycmF5LmgiCiAjaW5jbHVkZSAiVjhXZWJHTEJ1ZmZlci5oIgotI2luY2x1
ZGUgIlY4V2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCIKKyNpbmNsdWRlICJWOFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDLmgiCiAjaW5jbHVkZSAiVjhXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgi
CiAjaW5jbHVkZSAiVjhXZWJHTERlYnVnU2hhZGVycy5oIgogI2luY2x1ZGUgIlY4V2ViR0xGcmFt
ZWJ1ZmZlci5oIgpAQCAtMTU0LDYgKzE1NCw4IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOE9iamVjdChjb25zdCBXZWJHTEdldEluZm8mIGluZm8pCiAgICAgICAgIHJldHVybiB0
b1Y4KGluZm8uZ2V0V2ViR0xUZXh0dXJlKCkpOwogICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlw
ZVdlYkdMVW5zaWduZWRCeXRlQXJyYXk6CiAgICAgICAgIHJldHVybiB0b1Y4KGluZm8uZ2V0V2Vi
R0xVbnNpZ25lZEJ5dGVBcnJheSgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJH
TFVuc2lnbmVkSW50QXJyYXk6CisgICAgICAgIHJldHVybiB0b1Y4KGluZm8uZ2V0V2ViR0xVbnNp
Z25lZEludEFycmF5KCkpOwogICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVM6CiAgICAgICAgIHJldHVybiB0b1Y4KGluZm8uZ2V0V2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUygpKTsKICAgICBkZWZhdWx0OgpAQCAtMTkzLDkgKzE5NSw5IEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOE9iamVjdChXZWJHTEV4dGVuc2lvbiogZXh0ZW5z
aW9uLCB2ODo6SGFuZGxlPHY4CiAgICAgICAgIGV4dGVuc2lvbk9iamVjdCA9IHRvVjgoc3RhdGlj
X2Nhc3Q8V2ViR0xEZWJ1Z1NoYWRlcnMqPihleHRlbnNpb24pKTsKICAgICAgICAgcmVmZXJlbmNl
TmFtZSA9ICJ3ZWJHTERlYnVnU2hhZGVyc05hbWUiOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFdlYkdMRXh0ZW5zaW9uOjpXZWJLaXRXZWJHTENvbXByZXNzZWRUZXh0dXJlc05hbWU6Ci0gICAg
ICAgIGV4dGVuc2lvbk9iamVjdCA9IHRvVjgoc3RhdGljX2Nhc3Q8V2ViR0xDb21wcmVzc2VkVGV4
dHVyZXMqPihleHRlbnNpb24pKTsKLSAgICAgICAgcmVmZXJlbmNlTmFtZSA9ICJ3ZWJLaXRXZWJH
TENvbXByZXNzZWRUZXh0dXJlc05hbWUiOworICAgIGNhc2UgV2ViR0xFeHRlbnNpb246OldlYktp
dFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDTmFtZToKKyAgICAgICAgZXh0ZW5zaW9uT2JqZWN0
ID0gdG9WOChzdGF0aWNfY2FzdDxXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyo+KGV4dGVuc2lv
bikpOworICAgICAgICByZWZlcmVuY2VOYW1lID0gIndlYktpdFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDTmFtZSI7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlQoIWV4dGVuc2lv
bk9iamVjdC5Jc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyMzU3ZWYz
NTFkYTA4NzFjMTE3OTA4NDFhMzkzYjg1MGYwOWU5NjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKQEAg
LTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShX
RUJHTCkKKworI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgiCisKKyNpbmNs
dWRlICJFeHRlbnNpb25zM0QuaCIKKyNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIK
KworI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL093bkFycmF5UHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6
OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4
dCkKKyAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCit7CisgICAgY29udGV4dC0+YWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RY
VDFfRVhUKTsKKyAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNp
b25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKTsKKyAgICBjb250ZXh0LT5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDNfRVhUKTsKKyAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRl
bnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUKTsKK30KKworV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEM6On5XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQygpCit7Cit9CisK
K1dlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
OjpnZXROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViS2l0V2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVENOYW1lOworfQorCitQYXNzT3duUHRyPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
PiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDKGNvbnRleHQpKTsKK30KKworYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
Qzo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBFeHRl
bnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRF
eHRlbnNpb25zKCk7CisgICAgcmV0dXJuIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4
dHVyZV9jb21wcmVzc2lvbl9zM3RjIikKKyAgICAgICAgfHwgKGV4dGVuc2lvbnMtPnN1cHBvcnRz
KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIikKKyAgICAgICAgICAgICYmIGV4dGVu
c2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMiKQor
ICAgICAgICAgICAgJiYgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX3RleHR1cmVf
Y29tcHJlc3Npb25fZHh0NSIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTMyNDJjYjgzNjEw
OGM3MjEzYzg5ZWViMjhjZWJmNDQwYjA0ZWM0ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgKQEAgLTAsMCAr
MSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENfaAorI2Rl
ZmluZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ19oCisKKyNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCisjaW5jbHVkZSAiV2ViR0xFeHRlbnNpb24uaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYkdMVGV4dHVyZTsKKwor
Y2xhc3MgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24g
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CisKKyAgICBzdGF0aWMgYm9vbCBz
dXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CisKKyAgICB2aXJ0dWFsIH5XZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQygpOworICAgIHZpcnR1YWwgRXh0ZW5zaW9uTmFtZSBnZXROYW1l
KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5pZGwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzNkZWU2NGI2NWI3OWNlM2FkNjEwMTg4Y2Y3OTgwMDA3MjUwMjFiMgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmlkbApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGh0bWwgeworICAg
IGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVdFQkdMLAorICAgICAgICBKU0dlbmVy
YXRlSXNSZWFjaGFibGU9SW1wbENvbnRleHQsCisgICAgICAgIE9taXRDb25zdHJ1Y3RvciwKKyAg
ICAgICAgRG9udENoZWNrRW51bXMKKyAgICBdIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDIHsK
KyAgICAgICAgLyogQ29tcHJlc3NlZCBUZXh0dXJlIEZvcm1hdHMgKi8KKyAgICAgICAgY29uc3Qg
dW5zaWduZWQgaW50IENPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgICAgICAgID0gMHg4M0Yw
OworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9F
WFQgICAgICAgPSAweDgzRjE7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQzX0VYVCAgICAgICA9IDB4ODNGMjsKKyAgICAgICAgY29uc3QgdW5zaWdu
ZWQgaW50IENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUICAgICAgID0gMHg4M0YzOworICAg
IH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1MTk4MGNh
YTE4YjI4Nzg5ZTYwMGU5MTA0NGRjN2Q3YjJjOWNkMmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZXMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjk3ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAot
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCR0wpCi0KLSNpbmNsdWRl
ICJXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oIgotCi0jaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgi
Ci0jaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCi0KLSNpbmNsdWRlIDx3dGYvSW50
MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOjpXZWJHTENvbXByZXNzZWRUZXh0dXJl
cyhXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCi0gICAgOiBXZWJHTEV4dGVuc2lvbihj
b250ZXh0KQotICAgICwgbV9zdXBwb3J0c0R4dDEoZmFsc2UpCi0gICAgLCBtX3N1cHBvcnRzRHh0
NShmYWxzZSkKLSAgICAsIG1fc3VwcG9ydHNFdGMxKGZhbHNlKQotICAgICwgbV9zdXBwb3J0c1B2
cnRjKGZhbHNlKQotewotICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdy
YXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy0+
c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKSkgewotICAgICAgICBl
eHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQx
Iik7Ci0gICAgICAgIG1fc3VwcG9ydHNEeHQxID0gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKGV4dGVu
c2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIikpIHsKLSAg
ICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Np
b25fczN0YyIpOwotICAgICAgICBtX3N1cHBvcnRzRHh0MSA9IHRydWU7Ci0gICAgICAgIG1fc3Vw
cG9ydHNEeHQ1ID0gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJH
TF9DSFJPTUlVTV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKSkgewotICAgICAgICBleHRlbnNp
b25zLT5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUi
KTsKLSAgICAgICAgbV9zdXBwb3J0c0R4dDUgPSB0cnVlOwotICAgIH0KLSAgICBpZiAoZXh0ZW5z
aW9ucy0+c3VwcG9ydHMoIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIikpIHsK
LSAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX2NvbXByZXNzZWRfRVRD
MV9SR0I4X3RleHR1cmUiKTsKLSAgICAgICAgbV9zdXBwb3J0c0V0YzEgPSB0cnVlOwotICAgIH0K
LSAgICBpZiAoZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9u
X3B2cnRjIikpIHsKLSAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfSU1HX3Rl
eHR1cmVfY29tcHJlc3Npb25fcHZydGMiKTsKLSAgICAgICAgbV9zdXBwb3J0c1B2cnRjID0gdHJ1
ZTsKLSAgICB9Ci0KLSAgICBpZiAobV9zdXBwb3J0c0R4dDEpIHsKLSAgICAgICAgbV9mb3JtYXRz
LmFwcGVuZChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQpOwotICAg
ICAgICBtX2Zvcm1hdHMuYXBwZW5kKEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUMV9FWFQpOwotICAgIH0KLQotICAgIGlmIChtX3N1cHBvcnRzRHh0NSkKLSAgICAgICAgbV9m
b3JtYXRzLmFwcGVuZChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhU
KTsKLQotICAgIGlmIChtX3N1cHBvcnRzRXRjMSkKLSAgICAgICAgbV9mb3JtYXRzLmFwcGVuZChF
eHRlbnNpb25zM0Q6OkVUQzFfUkdCOF9PRVMpOwotCi0gICAgaWYgKG1fc3VwcG9ydHNQdnJ0Yykg
ewotICAgICAgICBtX2Zvcm1hdHMuYXBwZW5kKEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0Jf
UFZSVENfNEJQUFYxX0lNRyk7Ci0gICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNE
OjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRyk7Ci0gICAgfQotfQotCi1XZWJHTENv
bXByZXNzZWRUZXh0dXJlczo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVzKCkKLXsKLX0KLQotV2Vi
R0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6OmdldE5h
bWUoKSBjb25zdAotewotICAgIHJldHVybiBXZWJLaXRXZWJHTENvbXByZXNzZWRUZXh0dXJlc05h
bWU7Ci19Ci0KLVBhc3NPd25QdHI8V2ViR0xDb21wcmVzc2VkVGV4dHVyZXM+IFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVzOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQotewot
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMoY29udGV4dCkp
OwotfQotCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOjpzdXBwb3J0ZWQoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0KiBjb250ZXh0KQotewotICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9
IGNvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKLSAgICByZXR1
cm4gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEi
KQotICAgICAgICB8fCBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fczN0YyIpCi0gICAgICAgIHx8IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlV
TV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKQotICAgICAgICB8fCBleHRlbnNpb25zLT5zdXBw
b3J0cygiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKQotICAgICAgICB8fCBl
eHRlbnNpb25zLT5zdXBwb3J0cygiR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMiKTsK
LX0KLQotYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlczo6dmFsaWRhdGVDb21wcmVzc2VkVGV4
Rm9ybWF0KEdDM0RlbnVtIGZvcm1hdCkKLXsKLSAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNh
c2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2Ug
RXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKLSAgICAgICAgcmV0
dXJuIG1fc3VwcG9ydHNEeHQxOwotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpFVEMxX1JHQjhfT0VT
OgotICAgICAgICByZXR1cm4gbV9zdXBwb3J0c0V0YzE7Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6
OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgotICAgICAgICByZXR1cm4gbV9zdXBwb3J0
c0R4dDU7Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBW
MV9JTUc6Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQ
VjFfSU1HOgotICAgICAgICByZXR1cm4gbV9zdXBwb3J0c1B2cnRjOwotICAgIH0KLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLWJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6OnZhbGlkYXRlQ29t
cHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXpl
aSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZm
ZXJWaWV3KiBwaXhlbHMpCi17Ci0gICAgaWYgKCFwaXhlbHMpIHsKLSAgICAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgZnVu
Y3Rpb25OYW1lLCAibm8gcGl4ZWxzIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0g
ICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9u
TmFtZSwgIndpZHRoIG9yIGhlaWdodCA8IDAiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQotICAgIHVuc2lnbmVkIGludCBieXRlc1JlcXVpcmVkID0gMDsKLQotICAgIHN3aXRjaCAo
Zm9ybWF0KSB7Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhU
MV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFf
RVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpFVEMxX1JHQjhfT0VTOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OwotICAgICAgICAgICAgY29uc3Qg
aW50IGtCbG9ja0hlaWdodCA9IDQ7Ci0gICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9
IDg7Ci0gICAgICAgICAgICBpbnQgbnVtQmxvY2tzQWNyb3NzID0gKHdpZHRoICsga0Jsb2NrV2lk
dGggLSAxKSAvIGtCbG9ja1dpZHRoOwotICAgICAgICAgICAgaW50IG51bUJsb2Nrc0Rvd24gPSAo
aGVpZ2h0ICsga0Jsb2NrSGVpZ2h0IC0gMSkgLyBrQmxvY2tIZWlnaHQ7Ci0gICAgICAgICAgICBp
bnQgbnVtQmxvY2tzID0gbnVtQmxvY2tzQWNyb3NzICogbnVtQmxvY2tzRG93bjsKLSAgICAgICAg
ICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9ja3MgKiBrQmxvY2tTaXplOwotICAgICAgICB9Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQ1X0VYVDoKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRo
ID0gNDsKLSAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OwotICAgICAgICAg
ICAgY29uc3QgaW50IGtCbG9ja1NpemUgPSAxNjsKLSAgICAgICAgICAgIGludCBudW1CbG9ja3NB
Y3Jvc3MgPSAod2lkdGggKyBrQmxvY2tXaWR0aCAtIDEpIC8ga0Jsb2NrV2lkdGg7Ci0gICAgICAg
ICAgICBpbnQgbnVtQmxvY2tzRG93biA9IChoZWlnaHQgKyBrQmxvY2tIZWlnaHQgLSAxKSAvIGtC
bG9ja0hlaWdodDsKLSAgICAgICAgICAgIGludCBudW1CbG9ja3MgPSBudW1CbG9ja3NBY3Jvc3Mg
KiBudW1CbG9ja3NEb3duOwotICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJsb2NrcyAq
IGtCbG9ja1NpemU7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNp
b25zM0Q6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUc6Ci0gICAgY2FzZSBFeHRlbnNp
b25zM0Q6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HOgotICAgICAgICB7Ci0gICAg
ICAgICAgICBieXRlc1JlcXVpcmVkID0gKHN0ZDo6bWF4KHdpZHRoLCA4KSAqIHN0ZDo6bWF4KGhl
aWdodCwgOCkgKyA3KSAvIDg7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIGZvcm1hdCIpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKHBpeGVscy0+Ynl0ZUxlbmd0aCgpICE9
IGJ5dGVzUmVxdWlyZWQpIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAibGVuZ3RoIG9m
IEFycmF5QnVmZmVyVmlldyBpcyBub3QgY29ycmVjdCBmb3IgZGltZW5zaW9ucyIpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZXM6OnZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQg
eW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIFdlYkdMVGV4dHVyZSogdGV4KQotewotICAgIHN3aXRj
aCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENf
RFhUMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1
X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6RVRDMV9SR0I4X09FUzoKLSAgICAgICAgewot
ICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gNDsKLSAgICAgICAgICAgIGNvbnN0
IGludCBrQmxvY2tIZWlnaHQgPSA0OwotICAgICAgICAgICAgaWYgKCh4b2Zmc2V0ICUga0Jsb2Nr
V2lkdGgpIHx8ICh5b2Zmc2V0ICUga0Jsb2NrSGVpZ2h0KSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIXhvZmZzZXQpIHsKLSAgICAgICAgICAgICAgICBp
ZiAod2lkdGggIT0gdGV4LT5nZXRXaWR0aCh0YXJnZXQsIGxldmVsKSkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBpZiAod2lkdGggJSBrQmxvY2tXaWR0aCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCF5b2Zmc2V0KSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGhlaWdodCAhPSB0ZXgtPmdldEhlaWdodCh0YXJnZXQsIGxldmVsKSkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBpZiAoaGVpZ2h0ICUga0Jsb2NrSGVpZ2h0KQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfQotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJU
Q180QlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZS
VENfNEJQUFYxX0lNRzoKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHhvZmZzZXQgfHwgeW9m
ZnNldAotICAgICAgICAgICAgICAgIHx8IHdpZHRoICE9IHRleC0+Z2V0V2lkdGgodGFyZ2V0LCBs
ZXZlbCkgfHwgaGVpZ2h0ICE9IHRleC0+Z2V0SGVpZ2h0KHRhcmdldCwgbGV2ZWwpKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lk
IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQzNEZW51bSB0
YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkg
d2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgQXJyYXlCdWZm
ZXJWaWV3KiBkYXRhKQotewotICAgIGlmIChtX2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KGludGVy
bmFsZm9ybWF0KSkgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJjb21wcmVzc2VkVGV4SW1hZ2UyRCIsICJpbnZh
bGlkIGludGVybmFsZm9ybWF0Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGJv
cmRlcikgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiY29tcHJlc3NlZFRleEltYWdlMkQiLCAiYm9yZGVyIG5v
dCAwIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCF2YWxpZGF0ZUNvbXByZXNz
ZWRUZXhGdW5jRGF0YSgiY29tcHJlc3NlZFRleEltYWdlMkQiLCB3aWR0aCwgaGVpZ2h0LCBpbnRl
cm5hbGZvcm1hdCwgZGF0YSkpCi0gICAgICAgIHJldHVybjsKLSAgICBXZWJHTFRleHR1cmUqIHRl
eCA9IG1fY29udGV4dC0+dmFsaWRhdGVUZXh0dXJlQmluZGluZygiY29tcHJlc3NlZFRleEltYWdl
MkQiLCB0YXJnZXQsIHRydWUpOwotICAgIGlmICghdGV4KQotICAgICAgICByZXR1cm47Ci0gICAg
aWYgKCFtX2NvbnRleHQtPmlzR0xFUzJOUE9UU3RyaWN0KCkpIHsKLSAgICAgICAgaWYgKGxldmVs
ICYmIFdlYkdMVGV4dHVyZTo6aXNOUE9UKHdpZHRoLCBoZWlnaHQpKSB7Ci0gICAgICAgICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZB
TFVFLCAiY29tcHJlc3NlZFRleEltYWdlMkQiLCAibGV2ZWwgPiAwIG5vdCBwb3dlciBvZiAyIik7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgbV9jb250ZXh0LT5n
cmFwaGljc0NvbnRleHQzRCgpLT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlciwgZGF0YS0+Ynl0ZUxlbmd0aCgp
LCBkYXRhLT5iYXNlQWRkcmVzcygpKTsKLSAgICB0ZXgtPnNldExldmVsSW5mbyh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVO
U0lHTkVEX0JZVEUpOwotICAgIG1fY29udGV4dC0+Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKLX0KLQotdm9pZCBXZWJHTENvbXByZXNzZWRUZXh0dXJlczo6Y29tcHJlc3NlZFRleFN1
YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQs
IEdDM0RpbnQgeW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhl
aWdodCwgR0MzRGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpCi17Ci0gICAgaWYg
KG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCF2
YWxpZGF0ZUNvbXByZXNzZWRUZXhGb3JtYXQoZm9ybWF0KSkgewotICAgICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJjb21w
cmVzc2VkVGV4U3ViSW1hZ2UyRCIsICJpbnZhbGlkIGZvcm1hdCIpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoImNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEIiwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgV2ViR0xUZXh0dXJlKiB0ZXggPSBtX2NvbnRleHQtPnZhbGlkYXRlVGV4
dHVyZUJpbmRpbmcoImNvbXByZXNzZWRUZXhTdWJJbWFnZTJEIiwgdGFyZ2V0LCB0cnVlKTsKLSAg
ICBpZiAoIXRleCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGZvcm1hdCAhPSB0ZXgtPmdl
dEludGVybmFsRm9ybWF0KHRhcmdldCwgbGV2ZWwpKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJjb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRCIsICJmb3JtYXQgZG9lcyBub3QgbWF0Y2ggdGV4dHVyZSBmb3JtYXQi
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2Vk
VGV4U3ViRGltZW5zaW9ucyh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHRleCkpIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sICJjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRCIsICJkaW1lbnNpb25zIGludmFsaWQgZm9yIGZvcm1hdCIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5jb21w
cmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhLT5ieXRlTGVuZ3RoKCksIGRhdGEtPmJhc2VBZGRy
ZXNzKCkpOwotICAgIG1fY29udGV4dC0+Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
LX0KLQotV2ViR0xHZXRJbmZvIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOjpnZXRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdHMoKQotewotICAgIHJldHVybiBXZWJHTEdldEluZm8oSW50MzJBcnJheTo6
Y3JlYXRlKCZtX2Zvcm1hdHNbMF0sIG1fZm9ybWF0cy5zaXplKCkpKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyYjcxYzIxMzdmY2M1OTA1MmNlNDVmODQ2MmVjODQ1ODg5
N2Y3NjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaAorKysgL2Rl
di9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVzX2gKLSNkZWZpbmUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXNfaAotCi0jaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIldlYkdMRXh0ZW5zaW9uLmgiCi0jaW5jbHVkZSA8
d3RmL0FycmF5QnVmZmVyVmlldy5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViR0xUZXh0dXJlOwotCi1jbGFzcyBXZWJHTENv
bXByZXNzZWRUZXh0dXJlcyA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8V2ViR0xDb21wcmVzc2VkVGV4dHVyZXM+IGNyZWF0ZShXZWJHTFJl
bmRlcmluZ0NvbnRleHQqKTsKLQotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRl
cmluZ0NvbnRleHQqKTsKLQotICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3NlZFRleHR1cmVzKCk7
Ci0gICAgdmlydHVhbCBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdDsKLQotICAgIHZvaWQg
Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNE
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEFycmF5QnVmZmVy
VmlldyogZGF0YSk7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0
YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6
ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyogZGF0YSk7Ci0KLSAg
ICBXZWJHTEdldEluZm8gZ2V0Q29tcHJlc3NlZFRleHR1cmVGb3JtYXRzKCk7Ci0KLXByaXZhdGU6
Ci0gICAgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7Ci0K
LSAgICBib29sIHZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXpl
aSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMpOwotCi0g
ICAgYm9vbCB2YWxpZGF0ZUNvbXByZXNzZWRUZXhGb3JtYXQoR0MzRGVudW0gZm9ybWF0KTsKLQot
ICAgIGJvb2wgdmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViRGltZW5zaW9ucyhHQzNEZW51bSB0YXJn
ZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgs
IEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgV2ViR0xUZXh0dXJlKik7Ci0KLSAg
ICBib29sIG1fc3VwcG9ydHNEeHQxOwotICAgIGJvb2wgbV9zdXBwb3J0c0R4dDU7Ci0gICAgYm9v
bCBtX3N1cHBvcnRzRXRjMTsKLSAgICBib29sIG1fc3VwcG9ydHNQdnJ0YzsKLQotICAgIFZlY3Rv
cjxpbnQ+IG1fZm9ybWF0czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmlkbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMGYyNWVkYzJiMzdjNDc0NmZiN2M3ODcyMGY5YmMwNGZiMmY2M2Q4OC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5pZGwKKysrIC9kZXYvbnVs
bApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIGh0bWwgewotICAgIGludGVyZmFjZSBb
Ci0gICAgICAgIENvbmRpdGlvbmFsPVdFQkdMLAotICAgICAgICBKU0dlbmVyYXRlSXNSZWFjaGFi
bGU9SW1wbENvbnRleHQsCi0gICAgICAgIE9taXRDb25zdHJ1Y3RvciwKLSAgICAgICAgRG9udENo
ZWNrRW51bXMKLSAgICBdIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzIHsKLSAgICAgICAgLyogQ29t
cHJlc3NlZCBUZXh0dXJlIEZvcm1hdHMgKi8KLSAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENP
TVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgICAgICAgID0gMHg4M0YwOwotICAgICAgICBjb25z
dCB1bnNpZ25lZCBpbnQgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgICAgICAgPSAweDgz
RjE7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1
X0VYVCAgICAgICA9IDB4ODNGMzsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IEVUQzFfUkdC
OF9PRVMgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RDY0OwotICAgICAgICBjb25zdCB1bnNp
Z25lZCBpbnQgQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyAgICAgPSAweDhDMDA7Ci0g
ICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lN
RyAgICA9IDB4OEMwMjsKLQotICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIGNvbXBy
ZXNzZWRUZXhJbWFnZTJEKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiBsb25nIGxldmVsLCBp
biB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGxvbmcgd2lkdGgsIGluIGxvbmcgaGVp
Z2h0LCBpbiBsb25nIGJvcmRlciwgaW4gQXJyYXlCdWZmZXJWaWV3IGRhdGEpOwotICAgICAgICBb
U3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGluIHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCBpbiBsb25nIGxldmVsLCBpbiBsb25nIHhvZmZzZXQsIGluIGxvbmcg
eW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBsb25nIHdpZHRoLCBpbiBsb25nIGhlaWdodCwgaW4gdW5zaWduZWQgbG9u
ZyBmb3JtYXQsIGluIEFycmF5QnVmZmVyVmlldyBkYXRhKTsKLSAgICB9OwotfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKaW5kZXggNGZmOTY5MDg2ZDI5MWIx
Nzc1MzA4ZGRiZDMxYTJlMjE4OTk3YjJjOC4uZmY0ODJmYWNkOGYxNTJjNzIyMWFiZjNiYWIxNjQw
YzA5ZDljZjVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xF
eHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lv
bi5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgT0VTVmVydGV4QXJyYXlPYmpl
Y3ROYW1lLAogICAgICAgICBXZWJHTERlYnVnUmVuZGVyZXJJbmZvTmFtZSwKICAgICAgICAgV2Vi
R0xEZWJ1Z1NoYWRlcnNOYW1lLAotICAgICAgICBXZWJLaXRXZWJHTENvbXByZXNzZWRUZXh0dXJl
c05hbWUsIC8vIFdFQktJVF8gcHJlZml4IHVudGlsIGV4dGVuc2lvbiBpcyBvZmZpY2lhbAorICAg
ICAgICBXZWJLaXRXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ05hbWUsIC8vIFdFQktJVF8gcHJl
Zml4IHVudGlsIGV4dGVuc2lvbiBpcyBvZmZpY2lhbAogICAgIH07CiAKICAgICB2b2lkIHJlZigp
IHsgbV9jb250ZXh0LT5yZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xHZXRJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
R2V0SW5mby5jcHAKaW5kZXggODdiZWM3OTE5OGNmZjgzYWI2NzRiNGFmMTgxNmE4MWFhM2E1NDMy
Yy4uZjcxNjZjNDE5MzJkYzM0NzZkOGI1YzJlMTFhM2VjNDJlNDQyNWIxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwCkBAIC0zOCw2ICszOCw3IEBACiAj
aW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgogI2luY2x1ZGUgPHd0Zi9GbG9h
dDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvSW50MzJBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9V
aW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTE5MSw2ICsxOTIsMTYgQEAgV2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8o
UGFzc1JlZlB0cjxVaW50OEFycmF5PiB2YWx1ZSkKIHsKIH0KIAorV2ViR0xHZXRJbmZvOjpXZWJH
TEdldEluZm8oUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gdmFsdWUpCisgICAgOiBtX3R5cGUoa1R5
cGVXZWJHTFVuc2lnbmVkSW50QXJyYXkpCisgICAgLCBtX2Jvb2woZmFsc2UpCisgICAgLCBtX2Zs
b2F0KDApCisgICAgLCBtX2ludCgwKQorICAgICwgbV91bnNpZ25lZEludCgwKQorICAgICwgbV93
ZWJnbFVuc2lnbmVkSW50QXJyYXkodmFsdWUpCit7Cit9CisKIFdlYkdMR2V0SW5mbzo6V2ViR0xH
ZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gdmFsdWUpCiAgICAg
OiBtX3R5cGUoa1R5cGVXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKQogICAgICwgbV9ib29sKGZh
bHNlKQpAQCAtMjk0LDYgKzMwNSwxMiBAQCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFdlYkdMR2V0
SW5mbzo6Z2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fd2Vi
Z2xVbnNpZ25lZEJ5dGVBcnJheTsKIH0KIAorUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gV2ViR0xH
ZXRJbmZvOjpnZXRXZWJHTFVuc2lnbmVkSW50QXJyYXkoKSBjb25zdAoreworICAgIEFTU0VSVChn
ZXRUeXBlKCkgPT0ga1R5cGVXZWJHTFVuc2lnbmVkSW50QXJyYXkpOworICAgIHJldHVybiBtX3dl
YmdsVW5zaWduZWRJbnRBcnJheTsKK30KKwogUGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0T0VTPiBXZWJHTEdldEluZm86OmdldFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoKSBjb25z
dAogewogICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVXZWJHTFZlcnRleEFycmF5T2JqZWN0
T0VTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5m
by5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmgKaW5kZXggZjc0
N2EwOTAyYWRkNzBhNmU2ZGIyZDQyZTM5NWJkNjQ5MzMwODA1Yi4uZDFmNzNhNjU2ZjUwOTBlODQ4
Y2ZkMTE5ZGJkMWRmOTQwNTc1ZTQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xHZXRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xHZXRJbmZvLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDx3dGYvSW50MzJBcnJheS5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9VaW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY3LDYgKzY4LDcgQEAgcHVibGljOgogICAgICAg
ICBrVHlwZVdlYkdMUmVuZGVyYnVmZmVyLAogICAgICAgICBrVHlwZVdlYkdMVGV4dHVyZSwKICAg
ICAgICAga1R5cGVXZWJHTFVuc2lnbmVkQnl0ZUFycmF5LAorICAgICAgICBrVHlwZVdlYkdMVW5z
aWduZWRJbnRBcnJheSwKICAgICAgICAga1R5cGVXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLAog
ICAgIH07CiAKQEAgLTg4LDYgKzkwLDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMR2V0
SW5mbyhQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiB2YWx1ZSk7CiAgICAgZXhwbGljaXQg
V2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPiB2YWx1ZSk7CiAgICAgZXhwbGlj
aXQgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8VWludDhBcnJheT4gdmFsdWUpOworICAgIGV4cGxp
Y2l0IFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiB2YWx1ZSk7CiAgICAgZXhw
bGljaXQgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4g
dmFsdWUpOwogCiAgICAgdmlydHVhbCB+V2ViR0xHZXRJbmZvKCk7CkBAIC0xMTAsNiArMTEzLDcg
QEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IGdldFdlYkdMUmVu
ZGVyYnVmZmVyKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IGdldFdlYkdM
VGV4dHVyZSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZ2V0V2ViR0xVbnNp
Z25lZEJ5dGVBcnJheSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IGdldFdl
YkdMVW5zaWduZWRJbnRBcnJheSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUz4gZ2V0V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUygpIGNvbnN0OwogCiBw
cml2YXRlOgpAQCAtMTMwLDYgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkdMUmVu
ZGVyYnVmZmVyPiBtX3dlYmdsUmVuZGVyYnVmZmVyOwogICAgIFJlZlB0cjxXZWJHTFRleHR1cmU+
IG1fd2ViZ2xUZXh0dXJlOwogICAgIFJlZlB0cjxVaW50OEFycmF5PiBtX3dlYmdsVW5zaWduZWRC
eXRlQXJyYXk7CisgICAgUmVmUHRyPFVpbnQzMkFycmF5PiBtX3dlYmdsVW5zaWduZWRJbnRBcnJh
eTsKICAgICBSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gbV93ZWJnbFZlcnRleEFy
cmF5T2JqZWN0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3Qu
Y3BwCmluZGV4IDE5Mjg1MmM3NTViNGJhYTgwY2FhOTE1YjQ2MjlkNDkzZGI5NjZjODAuLjZkN2I5
ZDhjZjE2ZTAzZjk5ZjA2MDg4ZDI0YzIxNTFiZDI5Mjg4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJP
RVNTdGFuZGFyZERlcml2YXRpdmVzLmgiCiAjaW5jbHVkZSAiT0VTVGV4dHVyZUZsb2F0LmgiCiAj
aW5jbHVkZSAiT0VTVmVydGV4QXJyYXlPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJHTENvbXByZXNz
ZWRUZXh0dXJlcy5oIgorI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgiCiAj
aW5jbHVkZSAiV2ViR0xDb250ZXh0R3JvdXAuaCIKICNpbmNsdWRlICJXZWJHTERlYnVnUmVuZGVy
ZXJJbmZvLmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1NoYWRlcnMuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDk0
NWMxN2U3NGYwYzNmMTAwYjBlYTRmN2Y5ZDQ3NGEyZGUxOTY0NmMuLmRhY2YxZThhMjM2Mjg3NWE1
OWI4MzA3ZDZhODlkYjgyNWI3YmIyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNTQsNyArNTQsNyBAQAogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViR0xBY3RpdmVJbmZvLmgiCiAjaW5jbHVk
ZSAiV2ViR0xCdWZmZXIuaCIKLSNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oIgor
I2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgiCiAjaW5jbHVkZSAiV2ViR0xD
b250ZXh0QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIldlYkdMQ29udGV4dEV2ZW50LmgiCiAjaW5j
bHVkZSAiV2ViR0xDb250ZXh0R3JvdXAuaCIKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlIDx3
dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093bkFycmF5UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1VpbnQxNkFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgUExBVEZPUk0oUVQpCkBA
IC01MzcsNiArNTM4LDEyIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjphbGxvd1ByaXZp
bGVnZWRFeHRlbnNpb25zKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjphZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHQzNEZW51bSBm
b3JtYXQpCit7CisgICAgaWYgKCFtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5jb250YWlucyhm
b3JtYXQpKQorICAgICAgICBtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5hcHBlbmQoZm9ybWF0
KTsKK30KKwogV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp+V2ViR0xSZW5kZXJpbmdDb250ZXh0KCkK
IHsKICAgICAvLyBSZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8gV2ViR0xPYmplY3RzIHNvIGlmIHRo
ZXkgYXJlIHRoZSBsYXN0IHJlZmVyZW5jZQpAQCAtMTIwOCwyNCArMTIxNSw3MSBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Y29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciogc2hhZGVyLCBF
eGNlcHRpb25Db2RlJiBlYwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9
CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQzNE
ZW51bSAvKnRhcmdldCovLCBHQzNEaW50IC8qbGV2ZWwqLywgR0MzRGVudW0gLyppbnRlcm5hbGZv
cm1hdCovLCBHQzNEc2l6ZWkgLyp3aWR0aCovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSAvKmhlaWdodCovLCBHQzNEaW50IC8qYm9y
ZGVyKi8sIEFycmF5QnVmZmVyVmlldyogLypkYXRhKi8pCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVs
LCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSBoZWlnaHQsIEdD
M0RpbnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpCiB7CiAgICAgaWYgKGlzQ29udGV4
dExvc3QoKSkKICAgICAgICAgcmV0dXJuOworICAgIGlmICghdmFsaWRhdGVUZXhGdW5jTGV2ZWwo
ImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgdGFyZ2V0LCBsZXZlbCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KGludGVybmFsZm9ybWF0KSkg
eworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9F
TlVNLCAiY29tcHJlc3NlZFRleEltYWdlMkQiLCAiaW52YWxpZCBpbnRlcm5hbGZvcm1hdCIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChib3JkZXIpIHsKKyAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJjb21wcmVzc2Vk
VGV4SW1hZ2UyRCIsICJib3JkZXIgbm90IDAiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleERpbWVuc2lvbnMoImNvbXByZXNzZWRUZXhJbWFn
ZTJEIiwgbGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGludGVybmFsZm9ybWF0KSkKKyAgICAgICAgcmV0
dXJuOworICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoImNvbXByZXNzZWRU
ZXhJbWFnZTJEIiwgd2lkdGgsIGhlaWdodCwgaW50ZXJuYWxmb3JtYXQsIGRhdGEpKQorICAgICAg
ICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCi0gICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgImNvbXByZXNzZWRUZXhJ
bWFnZTJEIiwgImludmFsaWQgaW50ZXJuYWxmb3JtYXQiKTsKKyAgICBXZWJHTFRleHR1cmUqIHRl
eCA9IHZhbGlkYXRlVGV4dHVyZUJpbmRpbmcoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgdGFyZ2V0
LCB0cnVlKTsKKyAgICBpZiAoIXRleCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghaXNHTEVT
Mk5QT1RTdHJpY3QoKSkgeworICAgICAgICBpZiAobGV2ZWwgJiYgV2ViR0xUZXh0dXJlOjppc05Q
T1Qod2lkdGgsIGhlaWdodCkpIHsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiY29tcHJlc3NlZFRleEltYWdlMkQiLCAibGV2
ZWwgPiAwIG5vdCBwb3dlciBvZiAyIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisgICAgZ3JhcGhpY3NDb250ZXh0M0QoKS0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLCBkYXRhLT5ieXRlTGVuZ3Ro
KCksIGRhdGEtPmJhc2VBZGRyZXNzKCkpOworICAgIHRleC0+c2V0TGV2ZWxJbmZvKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBHcmFwaGljc0NvbnRleHQzRDo6
VU5TSUdORURfQllURSk7CisgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0K
IAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdD
M0RlbnVtIC8qdGFyZ2V0Ki8sIEdDM0RpbnQgLypsZXZlbCovLCBHQzNEaW50IC8qeG9mZnNldCov
LCBHQzNEaW50IC8qeW9mZnNldCovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSAvKndpZHRoKi8sIEdDM0RzaXplaSAvKmhlaWdo
dCovLCBHQzNEZW51bSAvKmZvcm1hdCovLCBBcnJheUJ1ZmZlclZpZXcqIC8qZGF0YSovKQordm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEFycmF5QnVm
ZmVyVmlldyogZGF0YSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1
cm47CisgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmNMZXZlbCgiY29tcHJlc3NlZFRleFN1YkltYWdl
MkQiLCB0YXJnZXQsIGxldmVsKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghdmFsaWRhdGVD
b21wcmVzc2VkVGV4Rm9ybWF0KGZvcm1hdCkpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgImNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
IiwgImludmFsaWQgZm9ybWF0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCF2
YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YSgiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJH
TFRleHR1cmUqIHRleCA9IHZhbGlkYXRlVGV4dHVyZUJpbmRpbmcoImNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEIiwgdGFyZ2V0LCB0cnVlKTsKKyAgICBpZiAoIXRleCkKKyAgICAgICAgcmV0dXJuOwog
Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgotICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIs
ICJpbnZhbGlkIGZvcm1hdCIpOworICAgIGlmIChmb3JtYXQgIT0gdGV4LT5nZXRJbnRlcm5hbEZv
cm1hdCh0YXJnZXQsIGxldmVsKSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sICJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIs
ICJmb3JtYXQgZG9lcyBub3QgbWF0Y2ggdGV4dHVyZSBmb3JtYXQiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViRGltZW5zaW9ucygi
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHRleCkpCisgICAgICAgIHJldHVybjsKKworICAgIGdy
YXBoaWNzQ29udGV4dDNEKCktPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhLT5ieXRlTGVuZ3RoKCksIGRh
dGEtPmJhc2VBZGRyZXNzKCkpOworICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb3B5VGV4SW1hZ2UyRChHQzNEZW51
bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEaW50
IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50
IGJvcmRlcikKQEAgLTIxODYsMTEgKzIyNDAsMTEgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAg
ICAgIG1fd2ViZ2xMb3NlQ29udGV4dCA9IFdlYkdMTG9zZUNvbnRleHQ6OmNyZWF0ZSh0aGlzKTsK
ICAgICAgICAgcmV0dXJuIG1fd2ViZ2xMb3NlQ29udGV4dC5nZXQoKTsKICAgICB9Ci0gICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJl
cyIpKSB7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJXRUJLSVRfV0VCR0xfY29t
cHJlc3NlZF90ZXh0dXJlX3MzdGMiKSkgewogICAgICAgICAvLyBVc2UgV0VCS0lUXyBwcmVmaXgg
dW50aWwgZXh0ZW5zaW9uIGlzIG9mZmljaWFsLgotICAgICAgICBpZiAoIW1fd2ViZ2xDb21wcmVz
c2VkVGV4dHVyZXMpCi0gICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVzID0gV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZXM6OmNyZWF0ZSh0aGlzKTsKLSAgICAgICAgcmV0dXJuIG1fd2Vi
Z2xDb21wcmVzc2VkVGV4dHVyZXMuZ2V0KCk7CisgICAgICAgIGlmICghbV93ZWJnbENvbXByZXNz
ZWRUZXh0dXJlUzNUQykKKyAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEMg
PSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6Y3JlYXRlKHRoaXMpOworICAgICAgICByZXR1
cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQy5nZXQoKTsKICAgICB9CiAKICAgICBpZiAo
YWxsb3dQcml2aWxlZ2VkRXh0ZW5zaW9ucygpKSB7CkBAIC0yMzAzLDEwICsyMzU3LDcgQEAgV2Vi
R0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBu
YW1lLCBFeGNlcHRpb25Db2RlJgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX1dS
SVRFTUFTSzoKICAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5BcnJheVBhcmFtZXRlcihwbmFtZSk7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6
Ci0gICAgICAgIGlmIChtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVzKQotICAgICAgICAgICAgcmV0
dXJuIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZXMtPmdldENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
cygpOwotICAgICAgICAvLyBEZWZpbmVkIGFzIG51bGwgaW4gdGhlIHNwZWMKLSAgICAgICAgcmV0
dXJuIFdlYkdMR2V0SW5mbygpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFVpbnQzMkFy
cmF5OjpjcmVhdGUobV9jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMuZGF0YSgpLCBtX2NvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0cy5zaXplKCkpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpD
VUxMX0ZBQ0U6CiAgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDVUxMX0ZBQ0VfTU9ERToKQEAgLTIzNjEsOSArMjQx
Miw2IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcihH
QzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYKICAgICAgICAgcmV0dXJuIGdldEludFBhcmFt
ZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TUFYX1ZJRVdQT1JUX0RJ
TVM6CiAgICAgICAgIHJldHVybiBnZXRXZWJHTEludEFycmF5UGFyYW1ldGVyKHBuYW1lKTsKLSAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpOVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6
Ci0gICAgICAgIC8vIFdlYkdMIDEuMCBzcGVjaWZpZXMgdGhhdCB0aGVyZSBhcmUgbm8gY29tcHJl
c3NlZCB0ZXh0dXJlIGZvcm1hdHMuCi0gICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGlj
X2Nhc3Q8aW50PigwKSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TlVNX1NIQURFUl9C
SU5BUllfRk9STUFUUzoKICAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBhbHdheXMgcmV0dXJu
IDAgZm9yIHRoaXM/CiAgICAgICAgIHJldHVybiBnZXRJbnRQYXJhbWV0ZXIocG5hbWUpOwpAQCAt
MjYzNiw4ICsyNjg0LDggQEAgVmVjdG9yPFN0cmluZz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKICAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCktPnN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpKQogICAgICAgICByZXN1
bHQuYXBwZW5kKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpOwogICAgIHJlc3VsdC5hcHBlbmQo
IldFQktJVF9XRUJHTF9sb3NlX2NvbnRleHQiKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZXM6OnN1cHBvcnRlZCh0aGlzKSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX1dF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZXMiKTsKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEM6OnN1cHBvcnRlZCh0aGlzKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX1dF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIik7CiAKICAgICBpZiAoYWxsb3dQcml2aWxlZ2Vk
RXh0ZW5zaW9ucygpKSB7CiAgICAgICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+
c3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpKQpAQCAtNDY4MSw2
ICs0NzI5LDExNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXhGdW5j
RGF0YShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGb3JtYXQoR0Mz
RGVudW0gZm9ybWF0KQoreworICAgIHJldHVybiBtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5j
b250YWlucyhmb3JtYXQpOworfQorCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRh
dGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0Rz
aXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEFycmF5QnVm
ZmVyVmlldyogcGl4ZWxzKQoreworICAgIGlmICghcGl4ZWxzKSB7CisgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUs
ICJubyBwaXhlbHMiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAod2lk
dGggPCAwIHx8IGhlaWdodCA8IDApIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgIndpZHRoIG9yIGhlaWdo
dCA8IDAiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHVuc2lnbmVkIGlu
dCBieXRlc1JlcXVpcmVkID0gMDsKKworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgY2FzZSBF
eHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBFeHRl
bnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgICAgICB7CisgICAg
ICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OworICAgICAgICAgICAgY29uc3QgaW50
IGtCbG9ja0hlaWdodCA9IDQ7CisgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDg7
CisgICAgICAgICAgICBpbnQgbnVtQmxvY2tzQWNyb3NzID0gKHdpZHRoICsga0Jsb2NrV2lkdGgg
LSAxKSAvIGtCbG9ja1dpZHRoOworICAgICAgICAgICAgaW50IG51bUJsb2Nrc0Rvd24gPSAoaGVp
Z2h0ICsga0Jsb2NrSGVpZ2h0IC0gMSkgLyBrQmxvY2tIZWlnaHQ7CisgICAgICAgICAgICBpbnQg
bnVtQmxvY2tzID0gbnVtQmxvY2tzQWNyb3NzICogbnVtQmxvY2tzRG93bjsKKyAgICAgICAgICAg
IGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9ja3MgKiBrQmxvY2tTaXplOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQzX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
NV9FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDQ7
CisgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKKyAgICAgICAgICAgIGNv
bnN0IGludCBrQmxvY2tTaXplID0gMTY7CisgICAgICAgICAgICBpbnQgbnVtQmxvY2tzQWNyb3Nz
ID0gKHdpZHRoICsga0Jsb2NrV2lkdGggLSAxKSAvIGtCbG9ja1dpZHRoOworICAgICAgICAgICAg
aW50IG51bUJsb2Nrc0Rvd24gPSAoaGVpZ2h0ICsga0Jsb2NrSGVpZ2h0IC0gMSkgLyBrQmxvY2tI
ZWlnaHQ7CisgICAgICAgICAgICBpbnQgbnVtQmxvY2tzID0gbnVtQmxvY2tzQWNyb3NzICogbnVt
QmxvY2tzRG93bjsKKyAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9ja3MgKiBrQmxv
Y2tTaXplOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1bmN0
aW9uTmFtZSwgImludmFsaWQgZm9ybWF0Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBpZiAocGl4ZWxzLT5ieXRlTGVuZ3RoKCkgIT0gYnl0ZXNSZXF1aXJlZCkgeworICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwg
ZnVuY3Rpb25OYW1lLCAibGVuZ3RoIG9mIEFycmF5QnVmZmVyVmlldyBpcyBub3QgY29ycmVjdCBm
b3IgZGltZW5zaW9ucyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNvbXBy
ZXNzZWRUZXhEaW1lbnNpb25zKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGludCBsZXZl
bCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQpCit7
CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NF
RF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDNfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQ1X0VYVDogeworICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OworICAg
ICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKKyAgICAgICAgYm9vbCB3aWR0aFZhbGlk
ID0gKGxldmVsICYmIHdpZHRoID09IDEpIHx8IChsZXZlbCAmJiB3aWR0aCA9PSAyKSB8fCAhKHdp
ZHRoICUga0Jsb2NrV2lkdGgpOworICAgICAgICBib29sIGhlaWdodFZhbGlkID0gKGxldmVsICYm
IGhlaWdodCA9PSAxKSB8fCAobGV2ZWwgJiYgaGVpZ2h0ID09IDIpIHx8ICEoaGVpZ2h0ICUga0Js
b2NrSGVpZ2h0KTsKKyAgICAgICAgaWYgKCF3aWR0aFZhbGlkIHx8ICFoZWlnaHRWYWxpZCkgewor
ICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09Q
RVJBVElPTiwgZnVuY3Rpb25OYW1lLCAid2lkdGggb3IgaGVpZ2h0IGludmFsaWQgZm9yIGxldmVs
Iik7CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
fQorCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDb21wcmVzc2VkVGV4U3Vi
RGltZW5zaW9ucyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgV2ViR0xUZXh0
dXJlKiB0ZXgpCit7CisgICAgaWYgKHhvZmZzZXQgPCAwIHx8IHlvZmZzZXQgPCAwKSB7CisgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgZnVu
Y3Rpb25OYW1lLCAieG9mZnNldCBvciB5b2Zmc2V0IDwgMCIpOworICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6
OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6IHsKKyAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRo
ID0gNDsKKyAgICAgICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7CisgICAgICAgIGlmICgo
eG9mZnNldCAlIGtCbG9ja1dpZHRoKSB8fCAoeW9mZnNldCAlIGtCbG9ja0hlaWdodCkpIHsKKyAg
ICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09Q
RVJBVElPTiwgZnVuY3Rpb25OYW1lLCAieG9mZnNldCBvciB5b2Zmc2V0IG5vdCBtdWx0aXBsZSBv
ZiA0Iik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KHdpZHRoIC0geG9mZnNldCA+IHRleC0+Z2V0V2lkdGgodGFyZ2V0LCBsZXZlbCkKKyAgICAgICAg
ICAgIHx8IGhlaWdodCAtIHlvZmZzZXQgPiB0ZXgtPmdldEhlaWdodCh0YXJnZXQsIGxldmVsKSkg
eworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJkaW1lbnNpb25zIG91dCBvZiByYW5nZSIpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWxp
ZGF0ZUNvbXByZXNzZWRUZXhEaW1lbnNpb25zKGZ1bmN0aW9uTmFtZSwgbGV2ZWwsIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCk7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9Cit9CisKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZURyYXdN
b2RlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gbW9kZSkKIHsKICAgICBzd2l0
Y2ggKG1vZGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmgKaW5kZXggNjIwYjRkNGU2N2FiOTA5YmQyMzdmOWEzYjI3MDQ5MGFkMDBi
NWM4Mi4uOGI4MzhkNTI4OTY4ODc0MDRiYjVlMTY2MjM3N2ZlYmVjZTk0ZDlkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKQEAg
LTUyLDcgKzUyLDcgQEAgY2xhc3MgV2ViR0xBY3RpdmVJbmZvOwogY2xhc3MgV2ViR0xCdWZmZXI7
CiBjbGFzcyBXZWJHTENvbnRleHRHcm91cDsKIGNsYXNzIFdlYkdMQ29udGV4dE9iamVjdDsKLWNs
YXNzIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOworY2xhc3MgV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEM7CiBjbGFzcyBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOwogY2xhc3MgV2ViR0xEZWJ1Z1Jl
bmRlcmVySW5mbzsKIGNsYXNzIFdlYkdMRGVidWdTaGFkZXJzOwpAQCAtMzIxLDcgKzMyMSw3IEBA
IHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgV2ViR0xPYmplY3Q7CiAgICAgZnJpZW5kIGNsYXNz
IE9FU1ZlcnRleEFycmF5T2JqZWN0OwogICAgIGZyaWVuZCBjbGFzcyBXZWJHTERlYnVnU2hhZGVy
czsKLSAgICBmcmllbmQgY2xhc3MgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM7CisgICAgZnJpZW5k
IGNsYXNzIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOwogICAgIGZyaWVuZCBjbGFzcyBXZWJH
TFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjazsKIAogICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+LCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyk7CkBAIC0zNjcsNiArMzY3LDkgQEAg
cHVibGljOgogCiAgICAgYm9vbCB2YWxpZGF0ZVdlYkdMT2JqZWN0KGNvbnN0IGNoYXIqLCBXZWJH
TE9iamVjdCopOwogCisgICAgLy8gQWRkcyBhIGNvbXByZXNzZWQgdGV4dHVyZSBmb3JtYXQuCisg
ICAgdm9pZCBhZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHQzNEZW51bSk7CisKICNpZiBFTkFC
TEUoVklERU8pCiAgICAgUGFzc1JlZlB0cjxJbWFnZT4gdmlkZW9GcmFtZVRvSW1hZ2UoSFRNTFZp
ZGVvRWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgpAQCAtNDQzLDYgKzQ0Niw4IEBA
IHB1YmxpYzoKICAgICBSZWZQdHI8V2ViR0xUZXh0dXJlPiBtX2JsYWNrVGV4dHVyZTJEOwogICAg
IFJlZlB0cjxXZWJHTFRleHR1cmU+IG1fYmxhY2tUZXh0dXJlQ3ViZU1hcDsKIAorICAgIFZlY3Rv
cjxHQzNEZW51bT4gbV9jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHM7CisKICAgICAvLyBGaXhlZC1z
aXplIGNhY2hlIG9mIHJldXNhYmxlIGltYWdlIGJ1ZmZlcnMgZm9yIHZpZGVvIHRleEltYWdlMkQg
Y2FsbHMuCiAgICAgY2xhc3MgTFJVSW1hZ2VCdWZmZXJDYWNoZSB7CiAgICAgcHVibGljOgpAQCAt
NTAwLDcgKzUwNSw3IEBAIHB1YmxpYzoKICAgICBPd25QdHI8V2ViR0xMb3NlQ29udGV4dD4gbV93
ZWJnbExvc2VDb250ZXh0OwogICAgIE93blB0cjxXZWJHTERlYnVnUmVuZGVyZXJJbmZvPiBtX3dl
YmdsRGVidWdSZW5kZXJlckluZm87CiAgICAgT3duUHRyPFdlYkdMRGVidWdTaGFkZXJzPiBtX3dl
YmdsRGVidWdTaGFkZXJzOwotICAgIE93blB0cjxXZWJHTENvbXByZXNzZWRUZXh0dXJlcz4gbV93
ZWJnbENvbXByZXNzZWRUZXh0dXJlczsKKyAgICBPd25QdHI8V2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEM+IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEM7CiAKICAgICAvLyBIZWxwZXJzIGZv
ciBnZXRQYXJhbWV0ZXIgYW5kIG90aGVycwogICAgIFdlYkdMR2V0SW5mbyBnZXRCb29sZWFuUGFy
YW1ldGVyKEdDM0RlbnVtKTsKQEAgLTU4OCw2ICs1OTMsMjQgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzKTsKIAorICAg
IC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBjb21wcmVzc2VkIHRleHR1cmUgZGF0YSBp
cyBjb3JyZWN0IHNpemUKKyAgICAvLyBmb3IgdGhlIGdpdmVuIGZvcm1hdCBhbmQgZGltZW5zaW9u
cy4KKyAgICBib29sIHZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0Rz
aXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMpOwor
CisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB2YWxpZGF0aW5nIGNvbXByZXNzZWQgdGV4dHVy
ZSBmb3JtYXRzLgorICAgIGJvb2wgdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KEdDM0RlbnVt
IGZvcm1hdCk7CisKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgY29tcHJlc3Nl
ZCB0ZXh0dXJlIGRpbWVuc2lvbnMgYXJlIHZhbGlkIGZvcgorICAgIC8vIHRoZSBnaXZlbiBmb3Jt
YXQuCisgICAgYm9vbCB2YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1lbnNpb25zKGNvbnN0IGNoYXIq
IGZ1bmN0aW9uTmFtZSwgR0MzRGludCBsZXZlbCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQpOworCisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHZh
bGlkYXRlIGNvbXByZXNzZWQgdGV4dHVyZSBkaW1lbnNpb25zIGFyZSB2YWxpZCBmb3IKKyAgICAv
LyB0aGUgZ2l2ZW4gZm9ybWF0LgorICAgIGJvb2wgdmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViRGlt
ZW5zaW9ucyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIHRhcmdldCwgR0MzRGlu
dCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBXZWJHTFRleHR1cmUqKTsKKwogICAgIC8vIEhlbHBl
ciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBtb2RlIGZvciBkcmF3e0FycmF5cy9FbGVtZW50c30uCiAg
ICAgYm9vbCB2YWxpZGF0ZURyYXdNb2RlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVu
dW0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmlkbAppbmRleCBmNTI0ZGZkMzIzYzliNzE1OGY4ZjA1MWViYzNiOTc3YzIwNThj
YjgzLi5lZmQ4Zjk4NzZkOGVlNmE3MDBjZGMyZmNiNDA2NDBiNzcwNDMyNWFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwK
QEAgLTIwNiw3ICsyMDYsNiBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIC8qICAgICAgVEVYVFVS
RV9XUkFQX1MgKi8KICAgICAgICAgLyogICAgICBURVhUVVJFX1dSQVBfVCAqLwogCi0gICAgICAg
IGNvbnN0IHVuc2lnbmVkIGludCBOVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMgPSAweDg2
QTI7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1RFWFRVUkVfRk9STUFU
UyAgICAgPSAweDg2QTM7CiAKICAgICAgICAgLyogSGludE1vZGUgKi8KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhZTg2ZTUz
ZTUxZTAzMDExM2E3OWJjNGY3ODc3ZGQ3YTYwOWI2NGU5Li5iNjQ5ODY3MDM1NTJiY2E2NzRkNDEz
Yjg1N2MxNGU2MDkyMDNhMTM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDItMDYgIEdy
ZWdnIFRhdmFyZXMgIDxnbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgbmV3
IFdFQkdMIGNvbXByZXNzZWQgdGV4dHVyZSBleHRlbnNpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzA2NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvY29uc3RhbnRz
Lmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMuaHRtbDoKKwog
MjAxMi0wMi0wNiAgQ2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAgICAgICAg
IHp2bXVsIGluY29ycmVjdGx5IG11bHRpcGxpZXMgY29tcGxleCBhcnJheXMgb24gV2luZG93cy4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnN0YW50cy5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29uc3RhbnRzLmh0bWwKaW5kZXggZTky
YTMxZTljNGU1ZmFiNWRiYjc3ZTgyMzk5MThkYzI0MGNhYjQ3NS4uZjM2YzViZmNjMWU0ZDAxMzYz
MmU0NWJkYzViYTQ4OGZlZDUzNDgwZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvY29uc3RhbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvY29uc3RhbnRzLmh0bWwKQEAgLTE5NCw3ICsxOTQsNiBAQCBTQU1QTEVfQ09WRVJBR0VfSU5W
RVJUICAgICAgICAgOiAweDgwQUIsCiAgICAgLyogICAgICBURVhUVVJFX1dSQVBfUyAqLwogICAg
IC8qICAgICAgVEVYVFVSRV9XUkFQX1QgKi8KICAgICAKLU5VTV9DT01QUkVTU0VEX1RFWFRVUkVf
Rk9STUFUUyA6IDB4ODZBMiwKIENPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTICAgICA6IDB4ODZB
MywKICAgICAKICAgICAvKiBIaW50TW9kZSAqLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxscy1leHBlY3RlZC50eHQKaW5kZXggOWFlZTQ1OWZm
M2FkYjk3MGU4OGMzMzA2NjhlOGYyOTgwODBkODgxOS4uYWYwYTJhM2Q0MjlkZWFmYjVkODY1MmY5
NDYxOWRjNTNkZWFjZmVmNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvZ2wtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9nbC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0CkBAIC03NSw3ICs3NSw3IEBAIFBBU1Mg
Y29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5WSUVXUE9SVCkgaXMgWzAsIDAsIDIsIDJdCiBQ
QVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVD
VE9SUykgPj0gMTYgaXMgdHJ1ZQogUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1B
WF9WRVJURVhfVU5JRk9STV9WRUNUT1JTKSA+PSAxMjggaXMgdHJ1ZQogUEFTUyBjb250ZXh0Lmdl
dFBhcmFtZXRlcihjb250ZXh0Lk1BWF9WQVJZSU5HX1ZFQ1RPUlMpID49IDggaXMgdHJ1ZQotUEFT
UyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk5VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9S
TUFUUykgaXMgMAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNPTVBSRVNTRURf
VEVYVFVSRV9GT1JNQVRTKSBpcyBbXQogCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxs
cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLmh0bWwK
aW5kZXggMmRlZTM4MWU1OTYzN2EzMzVkOGE0ZTlhMDc2NDBjMjFjOWU3NDVhZS4uYTFiYmY1ODc4
NGRjZmQ4ZjZjOGRjNGRjZjhkNjMyYTNjNzRiY2QzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLmh0bWwKQEAgLTEwNyw3ICsxMDcsNyBAQCBlbHNl
IHsKICAgICBzaG91bGRCZVRydWUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX0ZS
QUdNRU5UX1VOSUZPUk1fVkVDVE9SUykgPj0gMTYnKTsKICAgICBzaG91bGRCZVRydWUoJ2NvbnRl
eHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMpID49IDEy
OCcpOwogICAgIHNob3VsZEJlVHJ1ZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5NQVhf
VkFSWUlOR19WRUNUT1JTKSA+PSA4Jyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1l
dGVyKGNvbnRleHQuTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTKScsICcwJyk7CisgICAg
c2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQ09NUFJFU1NFRF9URVhUVVJF
X0ZPUk1BVFMpJywgJ1tdJyk7CiB9CiAKIGRlYnVnKCIiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125901</attachid>
            <date>2012-02-07 12:45:03 -0800</date>
            <delta_ts>2012-02-07 14:14:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77066-20120207124502.patch</filename>
            <type>text/plain</type>
            <size>73551</size>
            <attacher name="Gregg Tavares">gman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2YxNjE1ZTViODkxNmJm
YWZmZjk3MzMzMWNlZjdmNDA5ODYyNGRiNS4uNTMyMGI3NTVmNTcxZTgyMDI5ZTgwMjJkYmZkODRm
Zjc4YzNmNWJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTAyLTA2ICBHcmVn
ZyBUYXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBuZXcgV0VC
R0wgY29tcHJlc3NlZCB0ZXh0dXJlIGV4dGVuc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MDY2CisKKyAgICAgICAgVGhpcyByZW1vdmVzIHRo
ZSBvbGQgZXhwZXJpbWVudGFsIGNvbXByZXNzZWQKKyAgICAgICAgdGV4dHVyZSBleHRlbnNpb24g
YW5kIGltcGxlbWVudHMgdGhlIGZpcnN0IG5ldworICAgICAgICBvbmUuCisKKyAgICAgICAgQSB0
ZXN0IGlzIGluIHRoZSBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0cyBpbgorICAgICAgICBleHRlbnNp
b25zL3dlYmdsLWNvbXByZXNzZWQtdGV4dHVyZS1zM3RjLmh0bWwKKyAgICAgICAgYW5kIHdpbGwg
YmUgY29waWVkIGhlcmUgaW4gYSBmdXR1cmUgcGF0Y2guCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUZXN0IGNvbWluZyBpbiBm
dXR1cmUgcGF0Y2guCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4T2JqZWN0KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6V2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEM6On5XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6Z2V0TmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmguCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5pZGw6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5pZGwuCisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmg6IFJlbW92
ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJ
bmZvOjpXZWJHTEdldEluZm8pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTEdldEluZm86OmdldFdlYkdMVW5zaWduZWRJbnRBcnJheSk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xHZXRJbmZvLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xPYmpl
Y3QuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5z
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRl
Q29tcHJlc3NlZFRleEZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ29tcHJl
c3NlZFRleFN1YkRpbWVuc2lvbnMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJHTFJlbmRlcmlu
Z0NvbnRleHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5p
ZGw6CisKIDIwMTItMDItMDcgIE1hdHRoZXcgRGVsYW5leSAgPG1kZWxhbmV5QGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgcmVkdW5kYW50IGNoZWNrcyBpbiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGRkMDRjZjZmYjdhZjIyMjEzNDYzODU2
YWI2NmMzZDIxZmM0N2NhY2EuLjExMGY4N2JjNWJkZGIwMTQ3MzRjY2MxMTc2YTQ0OWZjNGRlZDY3
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMTgxLDcgKzIxODEsNyBAQCBJRiAoRU5BQkxF
X1dFQkdMKQogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvVmFs
aWRhdGVMaW1pdGF0aW9ucy5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3Jj
L2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5jcHAKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xCdWZm
ZXIuY3BwCi0gICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcAor
ICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKICAgICAg
ICAgaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAKICAgICAgICAgaHRtbC9j
YW52YXMvV2ViR0xDb250ZXh0RXZlbnQuY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29u
dGV4dEdyb3VwLmNwcApAQCAtMjIxNCw3ICsyMjE0LDcgQEAgSUYgKEVOQUJMRV9XRUJHTCkKICAg
ICAgICAgaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaWRsCiAgICAgICAgIGh0bWwv
Y2FudmFzL1dlYkdMQWN0aXZlSW5mby5pZGwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xCdWZm
ZXIuaWRsCi0gICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmlkbAor
ICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5pZGwKICAgICAg
ICAgaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwKICAgICAgICAgaHRtbC9j
YW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaWRsCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRGVi
dWdSZW5kZXJlckluZm8uaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA4Mjli
NTY4MGIwMmYwNDg5MGNlOTIxYTI3YWNlYjRmYjA2OTQyZjgwLi4wYTk1ZGQ3MzFlNmQxMzYzOGJk
YjY0YWJlOWYwMjY2NzRhY2FkNzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTI4Niw3ICsyODYsNyBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9odG1sL2Nh
bnZhcy9VaW50OENsYW1wZWRBcnJheS5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMv
V2ViR0xBY3RpdmVJbmZvLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTEJ1
ZmZlci5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZXMuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRB
dHRyaWJ1dGVzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRF
dmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5p
ZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZGZlNDkzMTFhYjZiNDQ2Mzg5
MjhlMTM3YWM4N2ExNWFkNzA3NDlhNS4uNmMxOWU1YmJiNDdhYTk2NzE3NWFhZTdiYzY3ZjdhZTY1
MzM0NmVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC01NjEzLDggKzU2MTMs
OCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQWN0aXZlSW5mby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZl
ci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmggXAotCVNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcCBcCi0J
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCBcCisJ
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
Qy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVz
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRl
cy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKaW5kZXggZDM0YzZkOTc4NTQ1MWE4NzFkNjdhYjVmY2VkYTAwODM1NmU2NDA0
Zi4uNGNhMzdiYzM1ZDNmMWI4NjY0OTlhYzAxN2I4OTc0OTQ4Mzg5NzJmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CkBAIC0zNjkzLDcgKzM2OTMsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9MSkg
ewogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oIFwKICAgICAgICAgaHRtbC9jYW52
YXMvV2ViR0xBY3RpdmVJbmZvLmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5o
IFwKLSAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCBcCisgICAg
ICAgIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggXAogICAgICAgICBo
dG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggXAogICAgICAgICBodG1sL2NhbnZh
cy9XZWJHTENvbnRleHRFdmVudC5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0
R3JvdXAuaCBcCkBAIC0zNzMzLDcgKzM3MzMsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVf
V0VCR0w9MSkgewogICAgICAgICBodG1sL2NhbnZhcy9DYW52YXNDb250ZXh0QXR0cmlidXRlcy5j
cHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAgXAogICAgICAgICBodG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAgXAotICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlcy5jcHAgXAorICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQy5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1
dGVzLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmNwcCBcCiAg
ICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdyb3VwLmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggMDdhMzQwZjhiNjJmZjE0MWVhN2JmZDU0NzM5NzUxNzY5NWNlNjMzNC4uOWU1Y2YyMDY1
NTQwYTQ0OTAyYjA3MjI3Y2RhOTY1OGJjNmNhYWQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtOTYx
LDcgKzk2MSw3IEBACiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvVWludDhDbGFtcGVkQXJyYXku
aWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8uaWRsJywKICAg
ICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5pZGwnLAotICAgICAgICAgICAgJ2h0
bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmlkbCcsCisgICAgICAgICAgICAnaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsJywKICAgICAgICAgICAgICdo
dG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbCcsCiAgICAgICAgICAgICAnaHRt
bC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZh
cy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmlkbCcsCkBAIC01NDQ1LDggKzU0NDUsOCBAQAogICAg
ICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQWN0aXZlSW5mby5oJywKICAgICAgICAgICAgICdo
dG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dl
YkdMQnVmZmVyLmgnLAotICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVzLmNwcCcsCi0gICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZXMuaCcsCisgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEMuY3BwJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQy5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1
dGVzLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRl
cy5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDRhNzk4MDM0MmQzYjNmZGQ0ZGI0MmU3NDNkZTY5N2M2YWMxNTc5OWQuLmVlMjVlMDU4MjA3
ZTgzZDZjZWEzNzU0YTIzMGFlNTBiMGViODU2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3ODEsMTAgKzE3ODEsMTAgQEAK
IAkJNjVGRUE4NjkwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8q
IFBhZ2UuY3BwICovOyB9OwogCQk2RTIxQzZDMDExMjYzMzg1MDBBN0JFMDIgLyogR3JhcGhpY3ND
b250ZXh0M0QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkUyMUM2QkYxMTI2MzM4NTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNELmNwcCAqLzsg
fTsKIAkJNkUyMUM2QzIxMTI2MzM5OTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNEQ0cuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyMUM2QzEx
MTI2MzM5OTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNEQ0cuY3BwICovOyB9OwotCQk2RTNG
QUQzODE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUQzNjE0NzMz
RjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgKi87IH07Ci0JCTZF
M0ZBRDM5MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUQzNzE0NzMz
RjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oICovOyB9OwotCQk2RTNG
QUU4RTE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFFOEMxNDczM0ZE
QjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcCAqLzsgfTsKLQkJNkUzRkFF
OEYxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUU4RDE0NzMzRkRCMDBF
NDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCAqLzsgfTsKKwkJNkUzRkFEMzgxNDcz
M0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFEMzYxNDczM0Y0MDAw
RTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwICovOyB9OworCQk2RTNG
QUQzOTE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFEMzcxNDcz
M0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCAqLzsgfTsKKwkJ
NkUzRkFFOEUxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRThD
MTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgKi87IH07
CisJCTZFM0ZBRThGMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
Qy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFF
OEQxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggKi87IH07
CiAJCTZFNDdFNjYwMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUUxMEI3OTQ0QjAw
QjE4NkM4IC8qIFdlYkdMR2V0SW5mby5jcHAgKi87IH07CiAJCTZFNDdFNjYxMTBCNzk0NEIwMEIx
ODZDOCAvKiBXZWJHTEdldEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uaCAq
LzsgfTsKIAkJNkU0QUJDRDQxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEFC
Q0QyMTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5jcHAgKi87IH07CkBA
IC04NjQ3LDExICs4NjQ3LDExIEBACiAJCTY1RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUyMUM2QkYxMTI2MzM4NTAwQTdCRTAyIC8qIEdy
YXBoaWNzQ29udGV4dDNELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdyYXBoaWNzQ29udGV4dDNELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUy
MUM2QzExMTI2MzM5OTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNEQ0cuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNiAvKiBK
U1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk2RTNGQUQzNzE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNz
ZWRUZXh0dXJlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZFM0ZBRThD
MTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHA7
IHBhdGggPSBjYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk2RTNGQUU4RDE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVz
c2VkVGV4dHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViR0xDb21w
cmVzc2VkVGV4dHVyZXMuaDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2RTNGQUU5MDE0NzMzRkVBMDBFNDIzMDYg
LyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVzLmlkbDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFM0ZBRDM2MTQ3MzNG
NDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTNGQUQzNzE0NzMzRjQwMDBFNDIz
MDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTZFM0ZBRThDMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHA7IHBhdGggPSBjYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTNG
QUU4RDE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMu
aDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk2RTNGQUU5MDE0NzMzRkVBMDBFNDIzMDYgLyogV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDLmlkbDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNDdFNjVFMTBCNzk0NEIw
MEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gV2ViR0xHZXRJbmZvLmNwcDsgcGF0aCA9IGNhbnZhcy9XZWJHTEdldEluZm8uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2Qzgg
LyogV2ViR0xHZXRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdM
R2V0SW5mby5oOyBwYXRoID0gY2FudmFzL1dlYkdMR2V0SW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2RTRBQkNEMjEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MVW5r
bm93bkVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ0NzcsOSAr
MTQ0NzcsOSBAQAogCQkJCTQ5QzdCOUE4MTA0MkQzMkUwMDA5RDQ0NyAvKiBXZWJHTEJ1ZmZlci5j
cHAgKi8sCiAJCQkJNDlDN0I5QTkxMDQyRDMyRTAwMDlENDQ3IC8qIFdlYkdMQnVmZmVyLmggKi8s
CiAJCQkJNDlDN0I5QUExMDQyRDMyRTAwMDlENDQ3IC8qIFdlYkdMQnVmZmVyLmlkbCAqLywKLQkJ
CQk2RTNGQUU4QzE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3Bw
ICovLAotCQkJCTZFM0ZBRThEMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlcy5oICovLAotCQkJCTZFM0ZBRTkwMTQ3MzNGRUEwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNz
ZWRUZXh0dXJlcy5pZGwgKi8sCisJCQkJNkUzRkFFOEMxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCAqLywKKwkJCQk2RTNGQUU4RDE0NzMzRkRCMDBFNDIz
MDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCAqLywKKwkJCQk2RTNGQUU5MDE0NzMz
RkVBMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsICovLAogCQkJCTZF
NEU5MUE5MTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCAqLywK
IAkJCQk2RTRFOTFBQTEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5o
ICovLAogCQkJCTZFNEU5MUFCMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1
dGVzLmlkbCAqLywKQEAgLTE3NDU3LDggKzE3NDU3LDggQEAKIAkJCQlBN0QyMEY2MTEwN0Y0MDY5
MDBBODAzOTIgLyogSlNXZWJHTEFjdGl2ZUluZm8uaCAqLywKIAkJCQk0OUM3Qjk4MDEwNDJEMkQz
MDAwOUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5jcHAgKi8sCiAJCQkJNDlDN0I5ODExMDQyRDJEMzAw
MDlENDQ3IC8qIEpTV2ViR0xCdWZmZXIuaCAqLywKLQkJCQk2RTNGQUQzNjE0NzMzRjQwMDBFNDIz
MDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgKi8sCi0JCQkJNkUzRkFEMzcxNDcz
M0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCAqLywKKwkJCQk2RTNG
QUQzNjE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAg
Ki8sCisJCQkJNkUzRkFEMzcxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEMuaCAqLywKIAkJCQk2RUU4QTc3MDEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENv
bnRleHRBdHRyaWJ1dGVzLmNwcCAqLywKIAkJCQk2RUU4QTc3MTEwRjgwM0YzMDA1QTRBMjQgLyog
SlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi8sCiAJCQkJQkMyQ0JGN0ExNDBGMUQ1ODAwMzg3
OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuY3BwICovLApAQCAtMjI5ODUsNyArMjI5ODUsNyBA
QAogCQkJCUZEODJEN0Y4MTNENEM4QkQwMDRFNDM3MiAvKiBKU1dhdmVTaGFwZXJOb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBN0QyMEY2MzEwN0Y0MDY5MDBBODAzOTIgLyogSlNXZWJHTEFjdGl2
ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOTk0MTA0MkQyRDMwMDA5RDQ0NyAvKiBK
U1dlYkdMQnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk2RTNGQUQzOTE0NzMzRjQwMDBFNDIz
MDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkUz
RkFEMzkxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBp
biBIZWFkZXJzICovLAogCQkJCTZFRThBNzczMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29u
dGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMkNCRjRFMTQwRjFBQkQwMDM4
NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3Qjk5
ODEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEZyYW1lYnVmZmVyLmggaW4gSGVhZGVycyAqLywK
QEAgLTI0MDEyLDcgKzI0MDEyLDcgQEAKIAkJCQlCQzZEQURFRjBBMTk1RkRGMDBFNUNEMTQgLyog
V2ViRm9udENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0QyMEY2RDEwN0Y0MzhCMDBBODAz
OTIgLyogV2ViR0xBY3RpdmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlDOTEwNDJE
MzJGMDAwOUQ0NDcgLyogV2ViR0xCdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTZFM0ZBRThG
MTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNkUzRkFFOEYxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTRFOTFBRjEwRjdGQjMxMDBBMjc3OUMgLyog
V2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGNkYxRUUxMjdG
NzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
MUQzQ0Y4MzE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xDb250ZXh0R3JvdXAuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjYxMjgsNyArMjYxMjgsNyBAQAogCQkJCUZEOEU5QkRGMTNENENEMkIwMDUwREM3
MiAvKiBKU1dhdmVTaGFwZXJOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDIw
RjYyMTA3RjQwNjkwMEE4MDM5MiAvKiBKU1dlYkdMQWN0aXZlSW5mby5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0OUM3Qjk5MzEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk2RTNGQUQzODE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTNGQUQzODE0NzMzRjQwMDBF
NDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk2RUU4QTc3MjEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMkNCRjdCMTQwRjFENTgwMDM4NzlCRSAvKiBKU1dl
YkdMQ29udGV4dEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdCOTk3MTA0MkQyRDMw
MDA5RDQ0NyAvKiBKU1dlYkdMRnJhbWVidWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjk2
MSw3ICsyNjk2MSw3IEBACiAJCQkJOTNGMTlCMDcwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmVW
aWV3Lm0gaW4gU291cmNlcyAqLywKIAkJCQlCQzZEQURGQTBBMTk2MDJCMDBFNUNEMTQgLyogV2Vi
Rm9udENhY2hlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlDN0I5QzgxMDQyRDMyRjAwMDlENDQ3
IC8qIFdlYkdMQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTZFM0ZBRThFMTQ3MzNGREIw
MEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk2RTNGQUU4RTE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkU0RTkxQUUxMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdM
Q29udGV4dEF0dHJpYnV0ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGNkYxRUQxMjdGNzBC
MTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTAx
RDNDRjgyMTRCRDBBMzAwMEZFOTk3MCAvKiBXZWJHTENvbnRleHRHcm91cC5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAppbmRleCBiNGY1NjYyMzlhMTcwNmNmNzVmZjU4
MTU1OWFkOGQ3ZWViYTRjYTViLi4wYmZhNjNhZmIzNTVkNzBkYTFkZDZmMWVkN2RmMGIwMjA0MzU0
YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC00MCw4ICs0MCwxMCBAQAogI2luY2x1
ZGUgIkpTT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oIgogI2luY2x1ZGUgIkpTT0VTVGV4dHVyZUZs
b2F0LmgiCiAjaW5jbHVkZSAiSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5oIgorI2luY2x1ZGUgIkpT
VWludDMyQXJyYXkuaCIKICNpbmNsdWRlICJKU1VpbnQ4QXJyYXkuaCIKICNpbmNsdWRlICJKU1dl
YkdMQnVmZmVyLmgiCisjaW5jbHVkZSAiSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIgog
I2luY2x1ZGUgIkpTV2ViR0xGcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTV2ViR0xMb3NlQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkpTV2ViR0xQcm9ncmFtLmgiCkBAIC01Niw3ICs1OCw3IEBACiAj
aW5jbHVkZSAiT0VTVGV4dHVyZUZsb2F0LmgiCiAjaW5jbHVkZSAiT0VTVmVydGV4QXJyYXlPYmpl
Y3QuaCIKICNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgotI2luY2x1ZGUgIldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVzLmgiCisjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCIKICNp
bmNsdWRlICJXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1No
YWRlcnMuaCIKICNpbmNsdWRlICJXZWJHTEV4dGVuc2lvbi5oIgpAQCAtNzEsNiArNzMsNyBAQAog
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5o
PgogI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5
Lmg+CiAKICNpZiBFTkFCTEUoVklERU8pCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpA
QCAtMTIxLDYgKzEyNCw4IEBAIHN0YXRpYyBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBXZWJHCiAgICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5mby5nZXRXZWJHTFRleHR1cmUoKSk7CiAgICAg
Y2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xVbnNpZ25lZEJ5dGVBcnJheToKICAgICAgICAg
cmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbmZvLmdldFdlYkdMVW5zaWduZWRCeXRl
QXJyYXkoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xVbnNpZ25lZEludEFy
cmF5OgorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGluZm8uZ2V0V2Vi
R0xVbnNpZ25lZEludEFycmF5KCkpOwogICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVM6CiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9i
amVjdCwgaW5mby5nZXRXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCkpOwogICAgIGRlZmF1bHQ6
CkBAIC0xOTMsOCArMTk4LDggQEAgc3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdlYkdMRXh0ZW4KICAgICAgICAgcmV0
dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxXZWJHTERlYnVnUmVuZGVy
ZXJJbmZvKj4oZXh0ZW5zaW9uKSk7CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6V2ViR0xEZWJ1
Z1NoYWRlcnNOYW1lOgogICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHN0
YXRpY19jYXN0PFdlYkdMRGVidWdTaGFkZXJzKj4oZXh0ZW5zaW9uKSk7Ci0gICAgY2FzZSBXZWJH
TEV4dGVuc2lvbjo6V2ViS2l0V2ViR0xDb21wcmVzc2VkVGV4dHVyZXNOYW1lOgotICAgICAgICBy
ZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVzKj4oZXh0ZW5zaW9uKSk7CisgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6V2ViS2l0
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENOYW1lOgorICAgICAgICByZXR1cm4gdG9KUyhleGVj
LCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKj4o
ZXh0ZW5zaW9uKSk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBqc051bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCmluZGV4IGRl
MTRkNDM1NDNjYjFlYjZjY2I0OThhNzJlZDA0YzY4OTk0NGEwYTQuLmMwNzg2ODg1ODUyZDYxMDJm
MWVjMzlmYWU1Y2I4ODQ4ZGYyOWY4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcApAQCAtNTUsNyArNTUsNyBAQAogI2luY2x1ZGUgIlY4VWludDMyQXJyYXkuaCIKICNp
bmNsdWRlICJWOFVpbnQ4QXJyYXkuaCIKICNpbmNsdWRlICJWOFdlYkdMQnVmZmVyLmgiCi0jaW5j
bHVkZSAiVjhXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oIgorI2luY2x1ZGUgIlY4V2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEMuaCIKICNpbmNsdWRlICJWOFdlYkdMRGVidWdSZW5kZXJlckluZm8u
aCIKICNpbmNsdWRlICJWOFdlYkdMRGVidWdTaGFkZXJzLmgiCiAjaW5jbHVkZSAiVjhXZWJHTEZy
YW1lYnVmZmVyLmgiCkBAIC0xNTQsNiArMTU0LDggQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4T2JqZWN0KGNvbnN0IFdlYkdMR2V0SW5mbyYgaW5mbykKICAgICAgICAgcmV0dXJu
IHRvVjgoaW5mby5nZXRXZWJHTFRleHR1cmUoKSk7CiAgICAgY2FzZSBXZWJHTEdldEluZm86OmtU
eXBlV2ViR0xVbnNpZ25lZEJ5dGVBcnJheToKICAgICAgICAgcmV0dXJuIHRvVjgoaW5mby5nZXRX
ZWJHTFVuc2lnbmVkQnl0ZUFycmF5KCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdl
YkdMVW5zaWduZWRJbnRBcnJheToKKyAgICAgICAgcmV0dXJuIHRvVjgoaW5mby5nZXRXZWJHTFVu
c2lnbmVkSW50QXJyYXkoKSk7CiAgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUzoKICAgICAgICAgcmV0dXJuIHRvVjgoaW5mby5nZXRXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTKCkpOwogICAgIGRlZmF1bHQ6CkBAIC0xOTMsOSArMTk1LDkgQEAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4T2JqZWN0KFdlYkdMRXh0ZW5zaW9uKiBleHRl
bnNpb24sIHY4OjpIYW5kbGU8djgKICAgICAgICAgZXh0ZW5zaW9uT2JqZWN0ID0gdG9WOChzdGF0
aWNfY2FzdDxXZWJHTERlYnVnU2hhZGVycyo+KGV4dGVuc2lvbikpOwogICAgICAgICByZWZlcmVu
Y2VOYW1lID0gIndlYkdMRGVidWdTaGFkZXJzTmFtZSI7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgV2ViR0xFeHRlbnNpb246OldlYktpdFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzTmFtZToKLSAg
ICAgICAgZXh0ZW5zaW9uT2JqZWN0ID0gdG9WOChzdGF0aWNfY2FzdDxXZWJHTENvbXByZXNzZWRU
ZXh0dXJlcyo+KGV4dGVuc2lvbikpOwotICAgICAgICByZWZlcmVuY2VOYW1lID0gIndlYktpdFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVzTmFtZSI7CisgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6V2Vi
S2l0V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENOYW1lOgorICAgICAgICBleHRlbnNpb25PYmpl
Y3QgPSB0b1Y4KHN0YXRpY19jYXN0PFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKj4oZXh0ZW5z
aW9uKSk7CisgICAgICAgIHJlZmVyZW5jZU5hbWUgPSAid2ViS2l0V2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVENOYW1lIjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVCghZXh0ZW5z
aW9uT2JqZWN0LklzRW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDIzNTdl
ZjM1MWRhMDg3MWMxMTc5MDg0MWEzOTNiODUwZjA5ZTk2NQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcApA
QCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KFdFQkdMKQorCisjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCIKKworI2lu
Y2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5o
IgorCisjaW5jbHVkZSA8d3RmL0ludDMyQXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQ
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
Qzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250
ZXh0KQorICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKK3sKKyAgICBjb250ZXh0LT5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENf
RFhUMV9FWFQpOworICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVu
c2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQpOworICAgIGNvbnRleHQtPmFk
ZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUM19FWFQpOworICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4
dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOworfQorCitXZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQzo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKCkKK3sKK30K
KworV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEM6OmdldE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBXZWJLaXRXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQ05hbWU7Cit9CisKK1Bhc3NPd25QdHI8V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEM+IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250
ZXh0KiBjb250ZXh0KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMoY29udGV4dCkpOworfQorCitib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQoreworICAgIEV4
dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPmdl
dEV4dGVuc2lvbnMoKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VYVF90
ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKQorICAgICAgICB8fCAoZXh0ZW5zaW9ucy0+c3VwcG9y
dHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKQorICAgICAgICAgICAgJiYgZXh0
ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyIp
CisgICAgICAgICAgICAmJiBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fdGV4dHVy
ZV9jb21wcmVzc2lvbl9keHQ1IikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzI0MmNiODM2
MTA4YzcyMTNjODllZWIyOGNlYmY0NDBiMDRlYzRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaApAQCAtMCww
ICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ19oCisj
ZGVmaW5lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDX2gKKworI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKKyNpbmNsdWRlICJXZWJHTEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViR0xUZXh0dXJlOwor
CitjbGFzcyBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyA6IHB1YmxpYyBXZWJHTEV4dGVuc2lv
biB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEM+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKKworICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKKworICAgIHZpcnR1YWwgfldlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDKCk7CisgICAgdmlydHVhbCBFeHRlbnNpb25OYW1lIGdldE5h
bWUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ZmRlNWJiYTkwODYyZDIwZDZkNmRjNGY3ZTk1YjExYzhiMTllNWZiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMuaWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgaHRtbCB7Cisg
ICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCisgICAgICAgIEpTR2Vu
ZXJhdGVJc1JlYWNoYWJsZT1JbXBsQ29udGV4dCwKKyAgICAgICAgT21pdENvbnN0cnVjdG9yLAor
ICAgICAgICBEb05vdENoZWNrQ29uc3RhbnRzCisgICAgXSBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQyB7CisgICAgICAgIC8qIENvbXByZXNzZWQgVGV4dHVyZSBGb3JtYXRzICovCisgICAgICAg
IGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUICAgICAgICA9
IDB4ODNGMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDFfRVhUICAgICAgID0gMHg4M0YxOworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgICAgICAgPSAweDgzRjI7CisgICAgICAgIGNvbnN0
IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCAgICAgICA9IDB4ODNG
MzsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
NTE5ODBjYWExOGIyODc4OWU2MDBlOTEwNDRkYzdkN2IyYzljZDJlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5NyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQkdMKQotCi0j
aW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCIKLQotI2luY2x1ZGUgIkV4dGVuc2lv
bnMzRC5oIgotI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgotCi0jaW5jbHVkZSA8
d3RmL0ludDMyQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1XZWJHTENvbXByZXNzZWRUZXh0dXJlczo6V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQotICAgIDogV2ViR0xFeHRl
bnNpb24oY29udGV4dCkKLSAgICAsIG1fc3VwcG9ydHNEeHQxKGZhbHNlKQotICAgICwgbV9zdXBw
b3J0c0R4dDUoZmFsc2UpCi0gICAgLCBtX3N1cHBvcnRzRXRjMShmYWxzZSkKLSAgICAsIG1fc3Vw
cG9ydHNQdnJ0YyhmYWxzZSkKLXsKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250
ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgaWYgKGV4dGVu
c2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIikpIHsKLSAg
ICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Np
b25fZHh0MSIpOwotICAgICAgICBtX3N1cHBvcnRzRHh0MSA9IHRydWU7Ci0gICAgfQotICAgIGlm
IChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIp
KSB7Ci0gICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2Nv
bXByZXNzaW9uX3MzdGMiKTsKLSAgICAgICAgbV9zdXBwb3J0c0R4dDEgPSB0cnVlOwotICAgICAg
ICBtX3N1cHBvcnRzRHh0NSA9IHRydWU7Ci0gICAgfQotICAgIGlmIChleHRlbnNpb25zLT5zdXBw
b3J0cygiR0xfQ0hST01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1IikpIHsKLSAgICAgICAg
ZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fdGV4dHVyZV9jb21wcmVzc2lv
bl9keHQ1Iik7Ci0gICAgICAgIG1fc3VwcG9ydHNEeHQ1ID0gdHJ1ZTsKLSAgICB9Ci0gICAgaWYg
KGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVy
ZSIpKSB7Ci0gICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX09FU19jb21wcmVz
c2VkX0VUQzFfUkdCOF90ZXh0dXJlIik7Ci0gICAgICAgIG1fc3VwcG9ydHNFdGMxID0gdHJ1ZTsK
LSAgICB9Ci0gICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9JTUdfdGV4dHVyZV9jb21w
cmVzc2lvbl9wdnJ0YyIpKSB7Ci0gICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdM
X0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIik7Ci0gICAgICAgIG1fc3VwcG9ydHNQdnJ0
YyA9IHRydWU7Ci0gICAgfQotCi0gICAgaWYgKG1fc3VwcG9ydHNEeHQxKSB7Ci0gICAgICAgIG1f
Zm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhU
KTsKLSAgICAgICAgbV9mb3JtYXRzLmFwcGVuZChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDFfRVhUKTsKLSAgICB9Ci0KLSAgICBpZiAobV9zdXBwb3J0c0R4dDUpCi0gICAg
ICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQ1X0VYVCk7Ci0KLSAgICBpZiAobV9zdXBwb3J0c0V0YzEpCi0gICAgICAgIG1fZm9ybWF0cy5h
cHBlbmQoRXh0ZW5zaW9uczNEOjpFVEMxX1JHQjhfT0VTKTsKLQotICAgIGlmIChtX3N1cHBvcnRz
UHZydGMpIHsKLSAgICAgICAgbV9mb3JtYXRzLmFwcGVuZChFeHRlbnNpb25zM0Q6OkNPTVBSRVNT
RURfUkdCX1BWUlRDXzRCUFBWMV9JTUcpOwotICAgICAgICBtX2Zvcm1hdHMuYXBwZW5kKEV4dGVu
c2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcpOwotICAgIH0KLX0KLQot
V2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6On5XZWJHTENvbXByZXNzZWRUZXh0dXJlcygpCi17Ci19
Ci0KLVdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVz
OjpnZXROYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViS2l0V2ViR0xDb21wcmVzc2VkVGV4
dHVyZXNOYW1lOwotfQotCi1QYXNzT3duUHRyPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzPiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlczo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4
dCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzKGNv
bnRleHQpKTsKLX0KLQotYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlczo6c3VwcG9ydGVkKFdl
YkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKLXsKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVu
c2lvbnMgPSBjb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7Ci0g
ICAgcmV0dXJuIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lv
bl9keHQxIikKLSAgICAgICAgfHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX3MzdGMiKQotICAgICAgICB8fCBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xf
Q0hST01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1IikKLSAgICAgICAgfHwgZXh0ZW5zaW9u
cy0+c3VwcG9ydHMoIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIikKLSAgICAg
ICAgfHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2
cnRjIik7Ci19Ci0KLWJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6OnZhbGlkYXRlQ29tcHJl
c3NlZFRleEZvcm1hdChHQzNEZW51bSBmb3JtYXQpCi17Ci0gICAgc3dpdGNoIChmb3JtYXQpIHsK
LSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKLSAg
ICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0gICAg
ICAgIHJldHVybiBtX3N1cHBvcnRzRHh0MTsKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6RVRDMV9S
R0I4X09FUzoKLSAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNFdGMxOwotICAgIGNhc2UgRXh0ZW5z
aW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKLSAgICAgICAgcmV0dXJuIG1f
c3VwcG9ydHNEeHQ1OwotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJU
Q180QlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZS
VENfNEJQUFYxX0lNRzoKLSAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNQdnJ0YzsKLSAgICB9Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOjp2YWxp
ZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
QzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEFy
cmF5QnVmZmVyVmlldyogcGl4ZWxzKQotewotICAgIGlmICghcGl4ZWxzKSB7Ci0gICAgICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFM
VUUsIGZ1bmN0aW9uTmFtZSwgIm5vIHBpeGVscyIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkgewotICAgICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCBm
dW5jdGlvbk5hbWUsICJ3aWR0aCBvciBoZWlnaHQgPCAwIik7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBpbnQgYnl0ZXNSZXF1aXJlZCA9IDA7Ci0KLSAgICBz
d2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9T
M1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6RVRDMV9SR0I4X09FUzoKLSAgICAg
ICAgewotICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gNDsKLSAgICAgICAgICAg
IGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OwotICAgICAgICAgICAgY29uc3QgaW50IGtCbG9j
a1NpemUgPSA4OwotICAgICAgICAgICAgaW50IG51bUJsb2Nrc0Fjcm9zcyA9ICh3aWR0aCArIGtC
bG9ja1dpZHRoIC0gMSkgLyBrQmxvY2tXaWR0aDsKLSAgICAgICAgICAgIGludCBudW1CbG9ja3NE
b3duID0gKGhlaWdodCArIGtCbG9ja0hlaWdodCAtIDEpIC8ga0Jsb2NrSGVpZ2h0OwotICAgICAg
ICAgICAgaW50IG51bUJsb2NrcyA9IG51bUJsb2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd247Ci0g
ICAgICAgICAgICBieXRlc1JlcXVpcmVkID0gbnVtQmxvY2tzICoga0Jsb2NrU2l6ZTsKLSAgICAg
ICAgfQotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUNV9FWFQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGludCBrQmxv
Y2tXaWR0aCA9IDQ7Ci0gICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKLSAg
ICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7Ci0gICAgICAgICAgICBpbnQgbnVt
QmxvY2tzQWNyb3NzID0gKHdpZHRoICsga0Jsb2NrV2lkdGggLSAxKSAvIGtCbG9ja1dpZHRoOwot
ICAgICAgICAgICAgaW50IG51bUJsb2Nrc0Rvd24gPSAoaGVpZ2h0ICsga0Jsb2NrSGVpZ2h0IC0g
MSkgLyBrQmxvY2tIZWlnaHQ7Ci0gICAgICAgICAgICBpbnQgbnVtQmxvY2tzID0gbnVtQmxvY2tz
QWNyb3NzICogbnVtQmxvY2tzRG93bjsKLSAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1C
bG9ja3MgKiBrQmxvY2tTaXplOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgotICAgIGNhc2Ug
RXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKLSAgICAgICAg
ewotICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IChzdGQ6Om1heCh3aWR0aCwgOCkgKiBzdGQ6
Om1heChoZWlnaHQsIDgpICsgNykgLyA4OwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAg
IGRlZmF1bHQ6Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBmb3JtYXQiKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChwaXhlbHMtPmJ5dGVMZW5n
dGgoKSAhPSBieXRlc1JlcXVpcmVkKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgImxl
bmd0aCBvZiBBcnJheUJ1ZmZlclZpZXcgaXMgbm90IGNvcnJlY3QgZm9yIGRpbWVuc2lvbnMiKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1i
b29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJEaW1l
bnNpb25zKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBH
QzNEaW50IHlvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0Mz
RHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBXZWJHTFRleHR1cmUqIHRleCkKLXsKLSAg
ICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JH
Ql9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUNV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkVUQzFfUkdCOF9PRVM6Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDQ7Ci0gICAgICAgICAg
ICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKLSAgICAgICAgICAgIGlmICgoeG9mZnNldCAl
IGtCbG9ja1dpZHRoKSB8fCAoeW9mZnNldCAlIGtCbG9ja0hlaWdodCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCF4b2Zmc2V0KSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHdpZHRoICE9IHRleC0+Z2V0V2lkdGgodGFyZ2V0LCBsZXZlbCkpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHdpZHRoICUga0Jsb2NrV2lkdGgpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgheW9mZnNldCkgewot
ICAgICAgICAgICAgICAgIGlmIChoZWlnaHQgIT0gdGV4LT5nZXRIZWlnaHQodGFyZ2V0LCBsZXZl
bCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGhlaWdodCAlIGtCbG9ja0hlaWdodCkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9S
R0JfUFZSVENfNEJQUFYxX0lNRzoKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9S
R0JBX1BWUlRDXzRCUFBWMV9JTUc6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh4b2Zmc2V0
IHx8IHlvZmZzZXQKLSAgICAgICAgICAgICAgICB8fCB3aWR0aCAhPSB0ZXgtPmdldFdpZHRoKHRh
cmdldCwgbGV2ZWwpIHx8IGhlaWdodCAhPSB0ZXgtPmdldEhlaWdodCh0YXJnZXQsIGxldmVsKSkg
ewotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotdm9pZCBXZWJHTENvbXByZXNzZWRUZXh0dXJlczo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0Mz
RHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEFy
cmF5QnVmZmVyVmlldyogZGF0YSkKLXsKLSAgICBpZiAobV9jb250ZXh0LT5pc0NvbnRleHRMb3N0
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleEZvcm1h
dChpbnRlcm5hbGZvcm1hdCkpIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCAiY29tcHJlc3NlZFRleEltYWdlMkQi
LCAiaW52YWxpZCBpbnRlcm5hbGZvcm1hdCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGlmIChib3JkZXIpIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgImJv
cmRlciBub3QgMCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghdmFsaWRhdGVD
b21wcmVzc2VkVGV4RnVuY0RhdGEoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgd2lkdGgsIGhlaWdo
dCwgaW50ZXJuYWxmb3JtYXQsIGRhdGEpKQotICAgICAgICByZXR1cm47Ci0gICAgV2ViR0xUZXh0
dXJlKiB0ZXggPSBtX2NvbnRleHQtPnZhbGlkYXRlVGV4dHVyZUJpbmRpbmcoImNvbXByZXNzZWRU
ZXhJbWFnZTJEIiwgdGFyZ2V0LCB0cnVlKTsKLSAgICBpZiAoIXRleCkKLSAgICAgICAgcmV0dXJu
OwotICAgIGlmICghbV9jb250ZXh0LT5pc0dMRVMyTlBPVFN0cmljdCgpKSB7Ci0gICAgICAgIGlm
IChsZXZlbCAmJiBXZWJHTFRleHR1cmU6OmlzTlBPVCh3aWR0aCwgaGVpZ2h0KSkgewotICAgICAg
ICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9WQUxVRSwgImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgImxldmVsID4gMCBub3QgcG93ZXIg
b2YgMiIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotICAgIG1fY29u
dGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIsIGRhdGEtPmJ5dGVM
ZW5ndGgoKSwgZGF0YS0+YmFzZUFkZHJlc3MoKSk7Ci0gICAgdGV4LT5zZXRMZXZlbEluZm8odGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIEdyYXBoaWNzQ29udGV4
dDNEOjpVTlNJR05FRF9CWVRFKTsKLSAgICBtX2NvbnRleHQtPmNsZWFudXBBZnRlckdyYXBoaWNz
Q2FsbChmYWxzZSk7Ci19Ci0KLXZvaWQgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6OmNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4
b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0Rz
aXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3KiBkYXRhKQotewot
ICAgIGlmIChtX2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KGZvcm1hdCkpIHsKLSAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVN
LCAiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCAiaW52YWxpZCBmb3JtYXQiKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKCJj
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YSkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFdlYkdMVGV4dHVyZSogdGV4ID0gbV9jb250ZXh0LT52YWxp
ZGF0ZVRleHR1cmVCaW5kaW5nKCJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIsIHRhcmdldCwgdHJ1
ZSk7Ci0gICAgaWYgKCF0ZXgpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChmb3JtYXQgIT0g
dGV4LT5nZXRJbnRlcm5hbEZvcm1hdCh0YXJnZXQsIGxldmVsKSkgewotICAgICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAi
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCAiZm9ybWF0IGRvZXMgbm90IG1hdGNoIHRleHR1cmUg
Zm9ybWF0Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXZhbGlkYXRlQ29t
cHJlc3NlZFRleFN1YkRpbWVuc2lvbnModGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0ZXgpKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCAiY29tcHJl
c3NlZFRleFN1YkltYWdlMkQiLCAiZGltZW5zaW9ucyBpbnZhbGlkIGZvciBmb3JtYXQiKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0Qo
KS0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YS0+Ynl0ZUxlbmd0aCgpLCBkYXRhLT5i
YXNlQWRkcmVzcygpKTsKLSAgICBtX2NvbnRleHQtPmNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7Ci19Ci0KLVdlYkdMR2V0SW5mbyBXZWJHTENvbXByZXNzZWRUZXh0dXJlczo6Z2V0Q29t
cHJlc3NlZFRleHR1cmVGb3JtYXRzKCkKLXsKLSAgICByZXR1cm4gV2ViR0xHZXRJbmZvKEludDMy
QXJyYXk6OmNyZWF0ZSgmbV9mb3JtYXRzWzBdLCBtX2Zvcm1hdHMuc2l6ZSgpKSk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MmI3MWMyMTM3ZmNjNTkwNTJjZTQ1Zjg0NjJl
Yzg0NTg4OTdmNzY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlc19oCi0jZGVmaW5lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzX2gKLQotI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJXZWJHTEV4dGVuc2lvbi5oIgotI2lu
Y2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlclZpZXcuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdMVGV4dHVyZTsKLQotY2xhc3Mg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZXMgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewotcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzPiBjcmVhdGUo
V2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7Ci0KLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Kik7Ci0KLSAgICB2aXJ0dWFsIH5XZWJHTENvbXByZXNzZWRUZXh0
dXJlcygpOwotICAgIHZpcnR1YWwgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Q7Ci0KLSAg
ICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZl
bCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBBcnJh
eUJ1ZmZlclZpZXcqIGRhdGEpOwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9m
ZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEp
OwotCi0gICAgV2ViR0xHZXRJbmZvIGdldENvbXByZXNzZWRUZXh0dXJlRm9ybWF0cygpOwotCi1w
cml2YXRlOgotICAgIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzKFdlYkdMUmVuZGVyaW5nQ29udGV4
dCopOwotCi0gICAgYm9vbCB2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
QzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxz
KTsKLQotICAgIGJvb2wgdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KEdDM0RlbnVtIGZvcm1h
dCk7Ci0KLSAgICBib29sIHZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVp
IHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIFdlYkdMVGV4dHVyZSop
OwotCi0gICAgYm9vbCBtX3N1cHBvcnRzRHh0MTsKLSAgICBib29sIG1fc3VwcG9ydHNEeHQ1Owot
ICAgIGJvb2wgbV9zdXBwb3J0c0V0YzE7Ci0gICAgYm9vbCBtX3N1cHBvcnRzUHZydGM7Ci0KLSAg
ICBWZWN0b3I8aW50PiBtX2Zvcm1hdHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBXZWJHTENvbXByZXNzZWRUZXh0dXJlc19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5pZGwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwOGI2MGEzZmI5YTZlNGRmNmYzMDhhMjU3Yjk3NjQ5MTlj
NDdiMzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaWRsCisrKyAv
ZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLW1vZHVsZSBodG1sIHsKLSAgICBpbnRl
cmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1XRUJHTCwKLSAgICAgICAgSlNHZW5lcmF0ZUlz
UmVhY2hhYmxlPUltcGxDb250ZXh0LAotICAgICAgICBPbWl0Q29uc3RydWN0b3IsCi0gICAgICAg
IERvTm90Q2hlY2tDb25zdGFudHMKLSAgICBdIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzIHsKLSAg
ICAgICAgLyogQ29tcHJlc3NlZCBUZXh0dXJlIEZvcm1hdHMgKi8KLSAgICAgICAgY29uc3QgdW5z
aWduZWQgaW50IENPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgICAgICAgID0gMHg4M0YwOwot
ICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQg
ICAgICAgPSAweDgzRjE7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQ1X0VYVCAgICAgICA9IDB4ODNGMzsKLSAgICAgICAgY29uc3QgdW5zaWduZWQg
aW50IEVUQzFfUkdCOF9PRVMgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RDY0OwotICAgICAg
ICBjb25zdCB1bnNpZ25lZCBpbnQgQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyAgICAg
PSAweDhDMDA7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQkFfUFZS
VENfNEJQUFYxX0lNRyAgICA9IDB4OEMwMjsKLQotICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5n
XSB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiBs
b25nIGxldmVsLCBpbiB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGxvbmcgd2lkdGgs
IGluIGxvbmcgaGVpZ2h0LCBpbiBsb25nIGJvcmRlciwgaW4gQXJyYXlCdWZmZXJWaWV3IGRhdGEp
OwotICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiBsb25nIGxldmVsLCBpbiBsb25nIHhvZmZz
ZXQsIGluIGxvbmcgeW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBsb25nIHdpZHRoLCBpbiBsb25nIGhlaWdodCwgaW4g
dW5zaWduZWQgbG9uZyBmb3JtYXQsIGluIEFycmF5QnVmZmVyVmlldyBkYXRhKTsKLSAgICB9Owot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKaW5kZXggNGZm
OTY5MDg2ZDI5MWIxNzc1MzA4ZGRiZDMxYTJlMjE4OTk3YjJjOC4uZmY0ODJmYWNkOGYxNTJjNzIy
MWFiZjNiYWIxNjQwYzA5ZDljZjVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEV4dGVuc2lvbi5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgT0VTVmVy
dGV4QXJyYXlPYmplY3ROYW1lLAogICAgICAgICBXZWJHTERlYnVnUmVuZGVyZXJJbmZvTmFtZSwK
ICAgICAgICAgV2ViR0xEZWJ1Z1NoYWRlcnNOYW1lLAotICAgICAgICBXZWJLaXRXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlc05hbWUsIC8vIFdFQktJVF8gcHJlZml4IHVudGlsIGV4dGVuc2lvbiBpcyBv
ZmZpY2lhbAorICAgICAgICBXZWJLaXRXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ05hbWUsIC8v
IFdFQktJVF8gcHJlZml4IHVudGlsIGV4dGVuc2lvbiBpcyBvZmZpY2lhbAogICAgIH07CiAKICAg
ICB2b2lkIHJlZigpIHsgbV9jb250ZXh0LT5yZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMR2V0SW5mby5jcHAKaW5kZXggODdiZWM3OTE5OGNmZjgzYWI2NzRiNGFmMTgx
NmE4MWFhM2E1NDMyYy4uZjcxNjZjNDE5MzJkYzM0NzZkOGI1YzJlMTFhM2VjNDJlNDQyNWIxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwCkBAIC0zOCw2
ICszOCw3IEBACiAjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgogI2luY2x1
ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvSW50MzJBcnJheS5oPgorI2lu
Y2x1ZGUgPHd0Zi9VaW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5MSw2ICsxOTIsMTYgQEAgV2ViR0xHZXRJbmZvOjpX
ZWJHTEdldEluZm8oUGFzc1JlZlB0cjxVaW50OEFycmF5PiB2YWx1ZSkKIHsKIH0KIAorV2ViR0xH
ZXRJbmZvOjpXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gdmFsdWUpCisgICAg
OiBtX3R5cGUoa1R5cGVXZWJHTFVuc2lnbmVkSW50QXJyYXkpCisgICAgLCBtX2Jvb2woZmFsc2Up
CisgICAgLCBtX2Zsb2F0KDApCisgICAgLCBtX2ludCgwKQorICAgICwgbV91bnNpZ25lZEludCgw
KQorICAgICwgbV93ZWJnbFVuc2lnbmVkSW50QXJyYXkodmFsdWUpCit7Cit9CisKIFdlYkdMR2V0
SW5mbzo6V2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4g
dmFsdWUpCiAgICAgOiBtX3R5cGUoa1R5cGVXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKQogICAg
ICwgbV9ib29sKGZhbHNlKQpAQCAtMjk0LDYgKzMwNSwxMiBAQCBQYXNzUmVmUHRyPFVpbnQ4QXJy
YXk+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fd2ViZ2xVbnNpZ25lZEJ5dGVBcnJheTsKIH0KIAorUGFzc1JlZlB0cjxVaW50MzJB
cnJheT4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTFVuc2lnbmVkSW50QXJyYXkoKSBjb25zdAorewor
ICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVXZWJHTFVuc2lnbmVkSW50QXJyYXkpOworICAg
IHJldHVybiBtX3dlYmdsVW5zaWduZWRJbnRBcnJheTsKK30KKwogUGFzc1JlZlB0cjxXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTPiBXZWJHTEdldEluZm86OmdldFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVMoKSBjb25zdAogewogICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMR2V0SW5mby5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZv
LmgKaW5kZXggZjc0N2EwOTAyYWRkNzBhNmU2ZGIyZDQyZTM5NWJkNjQ5MzMwODA1Yi4uZDFmNzNh
NjU2ZjUwOTBlODQ4Y2ZkMTE5ZGJkMWRmOTQwNTc1ZTQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xHZXRJbmZvLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDx3dGYv
SW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VaW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9V
aW50OEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY3LDYgKzY4LDcgQEAgcHVi
bGljOgogICAgICAgICBrVHlwZVdlYkdMUmVuZGVyYnVmZmVyLAogICAgICAgICBrVHlwZVdlYkdM
VGV4dHVyZSwKICAgICAgICAga1R5cGVXZWJHTFVuc2lnbmVkQnl0ZUFycmF5LAorICAgICAgICBr
VHlwZVdlYkdMVW5zaWduZWRJbnRBcnJheSwKICAgICAgICAga1R5cGVXZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTLAogICAgIH07CiAKQEAgLTg4LDYgKzkwLDcgQEAgcHVibGljOgogICAgIGV4cGxp
Y2l0IFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiB2YWx1ZSk7CiAg
ICAgZXhwbGljaXQgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPiB2YWx1ZSk7
CiAgICAgZXhwbGljaXQgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8VWludDhBcnJheT4gdmFsdWUp
OworICAgIGV4cGxpY2l0IFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiB2YWx1
ZSk7CiAgICAgZXhwbGljaXQgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdE9FUz4gdmFsdWUpOwogCiAgICAgdmlydHVhbCB+V2ViR0xHZXRJbmZvKCk7CkBAIC0x
MTAsNiArMTEzLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+
IGdldFdlYkdMUmVuZGVyYnVmZmVyKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxXZWJHTFRleHR1
cmU+IGdldFdlYkdMVGV4dHVyZSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8VWludDhBcnJheT4g
Z2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8VWludDMy
QXJyYXk+IGdldFdlYkdMVW5zaWduZWRJbnRBcnJheSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gZ2V0V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUygp
IGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMTMwLDYgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBtX3dlYmdsUmVuZGVyYnVmZmVyOwogICAgIFJlZlB0cjxX
ZWJHTFRleHR1cmU+IG1fd2ViZ2xUZXh0dXJlOwogICAgIFJlZlB0cjxVaW50OEFycmF5PiBtX3dl
YmdsVW5zaWduZWRCeXRlQXJyYXk7CisgICAgUmVmUHRyPFVpbnQzMkFycmF5PiBtX3dlYmdsVW5z
aWduZWRJbnRBcnJheTsKICAgICBSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gbV93
ZWJnbFZlcnRleEFycmF5T2JqZWN0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xPYmplY3QuY3BwCmluZGV4IDE5Mjg1MmM3NTViNGJhYTgwY2FhOTE1YjQ2MjlkNDkzZGI5
NjZjODAuLjZkN2I5ZDhjZjE2ZTAzZjk5ZjA2MDg4ZDI0YzIxNTFiZDI5Mjg4NTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAK
ICNpbmNsdWRlICJPRVNTdGFuZGFyZERlcml2YXRpdmVzLmgiCiAjaW5jbHVkZSAiT0VTVGV4dHVy
ZUZsb2F0LmgiCiAjaW5jbHVkZSAiT0VTVmVydGV4QXJyYXlPYmplY3QuaCIKLSNpbmNsdWRlICJX
ZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oIgorI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDLmgiCiAjaW5jbHVkZSAiV2ViR0xDb250ZXh0R3JvdXAuaCIKICNpbmNsdWRlICJXZWJH
TERlYnVnUmVuZGVyZXJJbmZvLmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1NoYWRlcnMuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwCmluZGV4IDYxOGI5MmQzNjg1MmFkMThjY2NjNWFhNmVhNmZlN2E4ZTVmNDg0MGUuLjZmMTUx
MzY1ZDc1ODc5YTQyYWMyYjA1M2U1ZTZjMTkzMGYxZDdjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNTQsNyAr
NTQsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViR0xBY3RpdmVJbmZv
LmgiCiAjaW5jbHVkZSAiV2ViR0xCdWZmZXIuaCIKLSNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRU
ZXh0dXJlcy5oIgorI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgiCiAjaW5j
bHVkZSAiV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIldlYkdMQ29udGV4dEV2
ZW50LmgiCiAjaW5jbHVkZSAiV2ViR0xDb250ZXh0R3JvdXAuaCIKQEAgLTcyLDYgKzcyLDcgQEAK
ICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093bkFycmF5
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1VpbnQxNkFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1VpbnQz
MkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgUExB
VEZPUk0oUVQpCkBAIC01NDEsNiArNTQyLDEyIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjphbGxvd1ByaXZpbGVnZWRFeHRlbnNpb25zKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjphZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChHQzNEZW51bSBmb3JtYXQpCit7CisgICAgaWYgKCFtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0
cy5jb250YWlucyhmb3JtYXQpKQorICAgICAgICBtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5h
cHBlbmQoZm9ybWF0KTsKK30KKwogV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp+V2ViR0xSZW5kZXJp
bmdDb250ZXh0KCkKIHsKICAgICAvLyBSZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8gV2ViR0xPYmpl
Y3RzIHNvIGlmIHRoZXkgYXJlIHRoZSBsYXN0IHJlZmVyZW5jZQpAQCAtMTIxMiwyNCArMTIxOSw3
MSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29tcGlsZVNoYWRlcihXZWJHTFNoYWRl
ciogc2hhZGVyLCBFeGNlcHRpb25Db2RlJiBlYwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2Fs
bChmYWxzZSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4
SW1hZ2UyRChHQzNEZW51bSAvKnRhcmdldCovLCBHQzNEaW50IC8qbGV2ZWwqLywgR0MzRGVudW0g
LyppbnRlcm5hbGZvcm1hdCovLCBHQzNEc2l6ZWkgLyp3aWR0aCovLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSAvKmhlaWdodCovLCBH
QzNEaW50IC8qYm9yZGVyKi8sIEFycmF5QnVmZmVyVmlldyogLypkYXRhKi8pCit2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXpl
aSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpCiB7CiAgICAg
aWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOworICAgIGlmICghdmFsaWRhdGVU
ZXhGdW5jTGV2ZWwoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgdGFyZ2V0LCBsZXZlbCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KGludGVy
bmFsZm9ybWF0KSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9FTlVNLCAiY29tcHJlc3NlZFRleEltYWdlMkQiLCAiaW52YWxpZCBpbnRlcm5h
bGZvcm1hdCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChib3JkZXIpIHsKKyAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUs
ICJjb21wcmVzc2VkVGV4SW1hZ2UyRCIsICJib3JkZXIgbm90IDAiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleERpbWVuc2lvbnMoImNvbXBy
ZXNzZWRUZXhJbWFnZTJEIiwgbGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGludGVybmFsZm9ybWF0KSkK
KyAgICAgICAgcmV0dXJuOworICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEo
ImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgd2lkdGgsIGhlaWdodCwgaW50ZXJuYWxmb3JtYXQsIGRh
dGEpKQorICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCi0g
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgImNv
bXByZXNzZWRUZXhJbWFnZTJEIiwgImludmFsaWQgaW50ZXJuYWxmb3JtYXQiKTsKKyAgICBXZWJH
TFRleHR1cmUqIHRleCA9IHZhbGlkYXRlVGV4dHVyZUJpbmRpbmcoImNvbXByZXNzZWRUZXhJbWFn
ZTJEIiwgdGFyZ2V0LCB0cnVlKTsKKyAgICBpZiAoIXRleCkKKyAgICAgICAgcmV0dXJuOworICAg
IGlmICghaXNHTEVTMk5QT1RTdHJpY3QoKSkgeworICAgICAgICBpZiAobGV2ZWwgJiYgV2ViR0xU
ZXh0dXJlOjppc05QT1Qod2lkdGgsIGhlaWdodCkpIHsKKyAgICAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiY29tcHJlc3NlZFRleElt
YWdlMkQiLCAibGV2ZWwgPiAwIG5vdCBwb3dlciBvZiAyIik7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICB9CisgICAgZ3JhcGhpY3NDb250ZXh0M0QoKS0+Y29tcHJlc3NlZFRl
eEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLCBkYXRh
LT5ieXRlTGVuZ3RoKCksIGRhdGEtPmJhc2VBZGRyZXNzKCkpOworICAgIHRleC0+c2V0TGV2ZWxJ
bmZvKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBHcmFwaGlj
c0NvbnRleHQzRDo6VU5TSUdORURfQllURSk7CisgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKEdDM0RlbnVtIC8qdGFyZ2V0Ki8sIEdDM0RpbnQgLypsZXZlbCovLCBHQzNEaW50
IC8qeG9mZnNldCovLCBHQzNEaW50IC8qeW9mZnNldCovLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSAvKndpZHRoKi8sIEdDM0Rz
aXplaSAvKmhlaWdodCovLCBHQzNEZW51bSAvKmZvcm1hdCovLCBBcnJheUJ1ZmZlclZpZXcqIC8q
ZGF0YSovKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNE
aW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3Jt
YXQsIEFycmF5QnVmZmVyVmlldyogZGF0YSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQog
ICAgICAgICByZXR1cm47CisgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmNMZXZlbCgiY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQiLCB0YXJnZXQsIGxldmVsKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlm
ICghdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KGZvcm1hdCkpIHsKKyAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgImNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEIiwgImludmFsaWQgZm9ybWF0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaWYgKCF2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YSgiY29tcHJlc3NlZFRleFN1
YkltYWdlMkQiLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEpKQorICAgICAgICByZXR1cm47
CisKKyAgICBXZWJHTFRleHR1cmUqIHRleCA9IHZhbGlkYXRlVGV4dHVyZUJpbmRpbmcoImNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEIiwgdGFyZ2V0LCB0cnVlKTsKKyAgICBpZiAoIXRleCkKKyAgICAg
ICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgotICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRCIsICJpbnZhbGlkIGZvcm1hdCIpOworICAgIGlmIChmb3JtYXQgIT0gdGV4LT5n
ZXRJbnRlcm5hbEZvcm1hdCh0YXJnZXQsIGxldmVsKSkgeworICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sICJjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRCIsICJmb3JtYXQgZG9lcyBub3QgbWF0Y2ggdGV4dHVyZSBmb3JtYXQiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4U3Vi
RGltZW5zaW9ucygiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCB0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHRleCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGdyYXBoaWNzQ29udGV4dDNEKCktPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhLT5ieXRl
TGVuZ3RoKCksIGRhdGEtPmJhc2VBZGRyZXNzKCkpOworICAgIGNsZWFudXBBZnRlckdyYXBoaWNz
Q2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb3B5VGV4SW1h
Z2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9y
bWF0LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVp
Z2h0LCBHQzNEaW50IGJvcmRlcikKQEAgLTIxOTAsMTEgKzIyNDQsMTEgQEAgV2ViR0xFeHRlbnNp
b24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgIG1fd2ViZ2xMb3NlQ29udGV4dCA9IFdlYkdMTG9zZUNvbnRleHQ6OmNy
ZWF0ZSh0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xMb3NlQ29udGV4dC5nZXQoKTsKICAg
ICB9Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJXRUJLSVRfV0VCR0xfY29tcHJl
c3NlZF90ZXh0dXJlcyIpKSB7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJXRUJL
SVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKSkgewogICAgICAgICAvLyBVc2UgV0VC
S0lUXyBwcmVmaXggdW50aWwgZXh0ZW5zaW9uIGlzIG9mZmljaWFsLgotICAgICAgICBpZiAoIW1f
d2ViZ2xDb21wcmVzc2VkVGV4dHVyZXMpCi0gICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRl
eHR1cmVzID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6OmNyZWF0ZSh0aGlzKTsKLSAgICAgICAg
cmV0dXJuIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZXMuZ2V0KCk7CisgICAgICAgIGlmICghbV93
ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQykKKyAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMgPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6Y3JlYXRlKHRoaXMpOwor
ICAgICAgICByZXR1cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQy5nZXQoKTsKICAgICB9
CiAKICAgICBpZiAoYWxsb3dQcml2aWxlZ2VkRXh0ZW5zaW9ucygpKSB7CkBAIC0yMzA3LDEwICsy
MzYxLDcgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVy
KEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkNPTE9SX1dSSVRFTUFTSzoKICAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5BcnJheVBhcmFt
ZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09NUFJFU1NFRF9URVhU
VVJFX0ZPUk1BVFM6Ci0gICAgICAgIGlmIChtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVzKQotICAg
ICAgICAgICAgcmV0dXJuIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZXMtPmdldENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0cygpOwotICAgICAgICAvLyBEZWZpbmVkIGFzIG51bGwgaW4gdGhlIHNwZWMK
LSAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJ
bmZvKFVpbnQzMkFycmF5OjpjcmVhdGUobV9jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMuZGF0YSgp
LCBtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5zaXplKCkpKTsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpDVUxMX0ZBQ0U6CiAgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVy
KHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDVUxMX0ZBQ0VfTU9ERToKQEAg
LTIzNjUsOSArMjQxNiw2IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFBhcmFtZXRlcihHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYKICAgICAgICAgcmV0dXJu
IGdldEludFBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TUFY
X1ZJRVdQT1JUX0RJTVM6CiAgICAgICAgIHJldHVybiBnZXRXZWJHTEludEFycmF5UGFyYW1ldGVy
KHBuYW1lKTsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpOVU1fQ09NUFJFU1NFRF9URVhU
VVJFX0ZPUk1BVFM6Ci0gICAgICAgIC8vIFdlYkdMIDEuMCBzcGVjaWZpZXMgdGhhdCB0aGVyZSBh
cmUgbm8gY29tcHJlc3NlZCB0ZXh0dXJlIGZvcm1hdHMuCi0gICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oc3RhdGljX2Nhc3Q8aW50PigwKSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
TlVNX1NIQURFUl9CSU5BUllfRk9STUFUUzoKICAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBh
bHdheXMgcmV0dXJuIDAgZm9yIHRoaXM/CiAgICAgICAgIHJldHVybiBnZXRJbnRQYXJhbWV0ZXIo
cG5hbWUpOwpAQCAtMjY0MCw4ICsyNjg4LDggQEAgVmVjdG9yPFN0cmluZz4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKICAgICBpZiAobV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpKQog
ICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpOwogICAgIHJl
c3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9sb3NlX2NvbnRleHQiKTsKLSAgICBpZiAoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZXM6OnN1cHBvcnRlZCh0aGlzKSkKLSAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZXMiKTsKKyAgICBpZiAoV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCh0aGlzKSkKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIik7CiAKICAgICBpZiAoYWxs
b3dQcml2aWxlZ2VkRXh0ZW5zaW9ucygpKSB7CiAgICAgICAgIGlmIChtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIp
KQpAQCAtNDY4NSw2ICs0NzMzLDExNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFs
aWRhdGVUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNvbXByZXNzZWRU
ZXhGb3JtYXQoR0MzRGVudW0gZm9ybWF0KQoreworICAgIHJldHVybiBtX2NvbXByZXNzZWRUZXh0
dXJlRm9ybWF0cy5jb250YWlucyhmb3JtYXQpOworfQorCitib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3Jt
YXQsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzKQoreworICAgIGlmICghcGl4ZWxzKSB7CisgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCBm
dW5jdGlvbk5hbWUsICJubyBwaXhlbHMiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDApIHsKKyAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgIndp
ZHRoIG9yIGhlaWdodCA8IDAiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHVuc2lnbmVkIGludCBieXRlc1JlcXVpcmVkID0gMDsKKworICAgIHN3aXRjaCAoZm9ybWF0KSB7
CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6Cisg
ICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAg
ICAgICB7CisgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OworICAgICAgICAg
ICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7CisgICAgICAgICAgICBjb25zdCBpbnQga0Js
b2NrU2l6ZSA9IDg7CisgICAgICAgICAgICBpbnQgbnVtQmxvY2tzQWNyb3NzID0gKHdpZHRoICsg
a0Jsb2NrV2lkdGggLSAxKSAvIGtCbG9ja1dpZHRoOworICAgICAgICAgICAgaW50IG51bUJsb2Nr
c0Rvd24gPSAoaGVpZ2h0ICsga0Jsb2NrSGVpZ2h0IC0gMSkgLyBrQmxvY2tIZWlnaHQ7CisgICAg
ICAgICAgICBpbnQgbnVtQmxvY2tzID0gbnVtQmxvY2tzQWNyb3NzICogbnVtQmxvY2tzRG93bjsK
KyAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9ja3MgKiBrQmxvY2tTaXplOworICAg
ICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQzX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUNV9FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBrQmxv
Y2tXaWR0aCA9IDQ7CisgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKKyAg
ICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7CisgICAgICAgICAgICBpbnQgbnVt
QmxvY2tzQWNyb3NzID0gKHdpZHRoICsga0Jsb2NrV2lkdGggLSAxKSAvIGtCbG9ja1dpZHRoOwor
ICAgICAgICAgICAgaW50IG51bUJsb2Nrc0Rvd24gPSAoaGVpZ2h0ICsga0Jsb2NrSGVpZ2h0IC0g
MSkgLyBrQmxvY2tIZWlnaHQ7CisgICAgICAgICAgICBpbnQgbnVtQmxvY2tzID0gbnVtQmxvY2tz
QWNyb3NzICogbnVtQmxvY2tzRG93bjsKKyAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1C
bG9ja3MgKiBrQmxvY2tTaXplOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgZm9ybWF0Iik7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBpZiAocGl4ZWxzLT5ieXRlTGVuZ3RoKCkgIT0gYnl0ZXNSZXF1
aXJlZCkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAibGVuZ3RoIG9mIEFycmF5QnVmZmVyVmlldyBpcyBu
b3QgY29ycmVjdCBmb3IgZGltZW5zaW9ucyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2
YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1lbnNpb25zKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwg
R0MzRGludCBsZXZlbCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51
bSBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIEV4dGVuc2lvbnMz
RDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDogeworICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lk
dGggPSA0OworICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKKyAgICAgICAgYm9v
bCB3aWR0aFZhbGlkID0gKGxldmVsICYmIHdpZHRoID09IDEpIHx8IChsZXZlbCAmJiB3aWR0aCA9
PSAyKSB8fCAhKHdpZHRoICUga0Jsb2NrV2lkdGgpOworICAgICAgICBib29sIGhlaWdodFZhbGlk
ID0gKGxldmVsICYmIGhlaWdodCA9PSAxKSB8fCAobGV2ZWwgJiYgaGVpZ2h0ID09IDIpIHx8ICEo
aGVpZ2h0ICUga0Jsb2NrSGVpZ2h0KTsKKyAgICAgICAgaWYgKCF3aWR0aFZhbGlkIHx8ICFoZWln
aHRWYWxpZCkgeworICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAid2lkdGggb3IgaGVpZ2h0IGludmFs
aWQgZm9yIGxldmVsIik7CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorfQorCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDb21w
cmVzc2VkVGV4U3ViRGltZW5zaW9ucyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1h
dCwgV2ViR0xUZXh0dXJlKiB0ZXgpCit7CisgICAgaWYgKHhvZmZzZXQgPCAwIHx8IHlvZmZzZXQg
PCAwKSB7CisgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAieG9mZnNldCBvciB5b2Zmc2V0IDwgMCIpOworICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgY2FzZSBF
eHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBFeHRl
bnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgRXh0ZW5z
aW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lv
bnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6IHsKKyAgICAgICAgY29uc3QgaW50
IGtCbG9ja1dpZHRoID0gNDsKKyAgICAgICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7Cisg
ICAgICAgIGlmICgoeG9mZnNldCAlIGtCbG9ja1dpZHRoKSB8fCAoeW9mZnNldCAlIGtCbG9ja0hl
aWdodCkpIHsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAieG9mZnNldCBvciB5b2Zmc2V0IG5v
dCBtdWx0aXBsZSBvZiA0Iik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHdpZHRoIC0geG9mZnNldCA+IHRleC0+Z2V0V2lkdGgodGFyZ2V0LCBsZXZl
bCkKKyAgICAgICAgICAgIHx8IGhlaWdodCAtIHlvZmZzZXQgPiB0ZXgtPmdldEhlaWdodCh0YXJn
ZXQsIGxldmVsKSkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJkaW1lbnNpb25zIG91dCBv
ZiByYW5nZSIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAg
IHJldHVybiB2YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1lbnNpb25zKGZ1bmN0aW9uTmFtZSwgbGV2
ZWwsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCk7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2
YWxpZGF0ZURyYXdNb2RlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gbW9kZSkK
IHsKICAgICBzd2l0Y2ggKG1vZGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggYjgxYzJiMDc3ZTYxZDVmYTRmMDVhY2Jl
NzUwMjhlZDYxNGQ2OGIzMC4uMDQ0OWVhZGUxYjAwY2Q1ZDllMmNkNThhNTAzYjY1YTdkY2Q1Y2Zh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgV2ViR0xBY3RpdmVJbmZvOwogY2xhc3Mg
V2ViR0xCdWZmZXI7CiBjbGFzcyBXZWJHTENvbnRleHRHcm91cDsKIGNsYXNzIFdlYkdMQ29udGV4
dE9iamVjdDsKLWNsYXNzIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOworY2xhc3MgV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEM7CiBjbGFzcyBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOwogY2xhc3Mg
V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbzsKIGNsYXNzIFdlYkdMRGVidWdTaGFkZXJzOwpAQCAtMzIx
LDcgKzMyMSw3IEBAIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgV2ViR0xPYmplY3Q7CiAgICAg
ZnJpZW5kIGNsYXNzIE9FU1ZlcnRleEFycmF5T2JqZWN0OwogICAgIGZyaWVuZCBjbGFzcyBXZWJH
TERlYnVnU2hhZGVyczsKLSAgICBmcmllbmQgY2xhc3MgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM7
CisgICAgZnJpZW5kIGNsYXNzIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOwogICAgIGZyaWVu
ZCBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjazsKIAogICAg
IFdlYkdMUmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCosIFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+LCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyk7CkBAIC0zNjcs
NiArMzY3LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCB2YWxpZGF0ZVdlYkdMT2JqZWN0KGNvbnN0
IGNoYXIqLCBXZWJHTE9iamVjdCopOwogCisgICAgLy8gQWRkcyBhIGNvbXByZXNzZWQgdGV4dHVy
ZSBmb3JtYXQuCisgICAgdm9pZCBhZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHQzNEZW51bSk7
CisKICNpZiBFTkFCTEUoVklERU8pCiAgICAgUGFzc1JlZlB0cjxJbWFnZT4gdmlkZW9GcmFtZVRv
SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgpAQCAtNDQz
LDYgKzQ0Niw4IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViR0xUZXh0dXJlPiBtX2JsYWNrVGV4
dHVyZTJEOwogICAgIFJlZlB0cjxXZWJHTFRleHR1cmU+IG1fYmxhY2tUZXh0dXJlQ3ViZU1hcDsK
IAorICAgIFZlY3RvcjxHQzNEZW51bT4gbV9jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHM7CisKICAg
ICAvLyBGaXhlZC1zaXplIGNhY2hlIG9mIHJldXNhYmxlIGltYWdlIGJ1ZmZlcnMgZm9yIHZpZGVv
IHRleEltYWdlMkQgY2FsbHMuCiAgICAgY2xhc3MgTFJVSW1hZ2VCdWZmZXJDYWNoZSB7CiAgICAg
cHVibGljOgpAQCAtNTAwLDcgKzUwNSw3IEBAIHB1YmxpYzoKICAgICBPd25QdHI8V2ViR0xMb3Nl
Q29udGV4dD4gbV93ZWJnbExvc2VDb250ZXh0OwogICAgIE93blB0cjxXZWJHTERlYnVnUmVuZGVy
ZXJJbmZvPiBtX3dlYmdsRGVidWdSZW5kZXJlckluZm87CiAgICAgT3duUHRyPFdlYkdMRGVidWdT
aGFkZXJzPiBtX3dlYmdsRGVidWdTaGFkZXJzOwotICAgIE93blB0cjxXZWJHTENvbXByZXNzZWRU
ZXh0dXJlcz4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlczsKKyAgICBPd25QdHI8V2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEM+IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEM7CiAKICAgICAv
LyBIZWxwZXJzIGZvciBnZXRQYXJhbWV0ZXIgYW5kIG90aGVycwogICAgIFdlYkdMR2V0SW5mbyBn
ZXRCb29sZWFuUGFyYW1ldGVyKEdDM0RlbnVtKTsKQEAgLTU4OCw2ICs1OTMsMjQgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVt
IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5QnVmZmVyVmlldyogcGl4
ZWxzKTsKIAorICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBjb21wcmVzc2VkIHRl
eHR1cmUgZGF0YSBpcyBjb3JyZWN0IHNpemUKKyAgICAvLyBmb3IgdGhlIGdpdmVuIGZvcm1hdCBh
bmQgZGltZW5zaW9ucy4KKyAgICBib29sIHZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3
KiBwaXhlbHMpOworCisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB2YWxpZGF0aW5nIGNvbXBy
ZXNzZWQgdGV4dHVyZSBmb3JtYXRzLgorICAgIGJvb2wgdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9y
bWF0KEdDM0RlbnVtIGZvcm1hdCk7CisKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRh
dGUgY29tcHJlc3NlZCB0ZXh0dXJlIGRpbWVuc2lvbnMgYXJlIHZhbGlkIGZvcgorICAgIC8vIHRo
ZSBnaXZlbiBmb3JtYXQuCisgICAgYm9vbCB2YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1lbnNpb25z
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGludCBsZXZlbCwgR0MzRHNpemVpIHdpZHRo
LCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQpOworCisgICAgLy8gSGVscGVyIGZ1
bmN0aW9uIHRvIHZhbGlkYXRlIGNvbXByZXNzZWQgdGV4dHVyZSBkaW1lbnNpb25zIGFyZSB2YWxp
ZCBmb3IKKyAgICAvLyB0aGUgZ2l2ZW4gZm9ybWF0LgorICAgIGJvb2wgdmFsaWRhdGVDb21wcmVz
c2VkVGV4U3ViRGltZW5zaW9ucyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIHRh
cmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0
aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBXZWJHTFRleHR1cmUqKTsKKwog
ICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBtb2RlIGZvciBkcmF3e0FycmF5cy9F
bGVtZW50c30uCiAgICAgYm9vbCB2YWxpZGF0ZURyYXdNb2RlKGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSwgR0MzRGVudW0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAppbmRleCA0ZDk5MmMxZTUxODcwZDRjZDVhYTY4OWM0
MTQwODYyZTY1ZmU1OTI2Li42ZGI4MTFkZDhjYzMzZjM0NmU1ZjZiMDFhMDEyMmViZTYwYjMyMDQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5pZGwKQEAgLTIwNiw3ICsyMDYsNiBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIC8q
ICAgICAgVEVYVFVSRV9XUkFQX1MgKi8KICAgICAgICAgLyogICAgICBURVhUVVJFX1dSQVBfVCAq
LwogCi0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBOVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZP
Uk1BVFMgPSAweDg2QTI7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1RF
WFRVUkVfRk9STUFUUyAgICAgPSAweDg2QTM7CiAKICAgICAgICAgLyogSGludE1vZGUgKi8KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBlZjFiOGM0MTY5ZDZhNDQ1NzlmOTMyYTI2Mjg0MjNiMDU0ZWIxMmJkLi4wNGEwMjIyNjUw
ZDhjNjlhNGQ0NTEwYjFiZDdjMzNkNTg0MTg2ZGU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTItMDItMDYgIEdyZWdnIFRhdmFyZXMgIDxnbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJ
bXBsZW1lbnQgbmV3IFdFQkdMIGNvbXByZXNzZWQgdGV4dHVyZSBleHRlbnNpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzA2NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jYW52YXMvd2Vi
Z2wvY29uc3RhbnRzLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNh
bGxzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2Fs
bHMuaHRtbDoKKwogMjAxMi0wMi0wNyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnN0YW50cy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvY29uc3RhbnRzLmh0bWwKaW5kZXggZTkyYTMxZTljNGU1ZmFiNWRi
Yjc3ZTgyMzk5MThkYzI0MGNhYjQ3NS4uZjM2YzViZmNjMWU0ZDAxMzYzMmU0NWJkYzViYTQ4OGZl
ZDUzNDgwZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29uc3Rh
bnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29uc3RhbnRzLmh0
bWwKQEAgLTE5NCw3ICsxOTQsNiBAQCBTQU1QTEVfQ09WRVJBR0VfSU5WRVJUICAgICAgICAgOiAw
eDgwQUIsCiAgICAgLyogICAgICBURVhUVVJFX1dSQVBfUyAqLwogICAgIC8qICAgICAgVEVYVFVS
RV9XUkFQX1QgKi8KICAgICAKLU5VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyA6IDB4ODZB
MiwKIENPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTICAgICA6IDB4ODZBMywKICAgICAKICAgICAv
KiBIaW50TW9kZSAqLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
Z2wtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L2dsLWdldC1jYWxscy1leHBlY3RlZC50eHQKaW5kZXggOWFlZTQ1OWZmM2FkYjk3MGU4OGMzMzA2
NjhlOGYyOTgwODBkODgxOS4uYWYwYTJhM2Q0MjlkZWFmYjVkODY1MmY5NDYxOWRjNTNkZWFjZmVm
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQt
Y2FsbHMtZXhwZWN0ZWQudHh0CkBAIC03NSw3ICs3NSw3IEBAIFBBU1MgY29udGV4dC5nZXRQYXJh
bWV0ZXIoY29udGV4dC5WSUVXUE9SVCkgaXMgWzAsIDAsIDIsIDJdCiBQQVNTIGNvbnRleHQuZ2V0
UGFyYW1ldGVyKGNvbnRleHQuTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUykgPj0gMTYgaXMg
dHJ1ZQogUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9WRVJURVhfVU5JRk9S
TV9WRUNUT1JTKSA+PSAxMjggaXMgdHJ1ZQogUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0Lk1BWF9WQVJZSU5HX1ZFQ1RPUlMpID49IDggaXMgdHJ1ZQotUEFTUyBjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0Lk5VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUykgaXMgMAorUEFT
UyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRT
KSBpcyBbXQogCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxscy5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLmh0bWwKaW5kZXggMmRlZTM4MWU1
OTYzN2EzMzVkOGE0ZTlhMDc2NDBjMjFjOWU3NDVhZS4uYTFiYmY1ODc4NGRjZmQ4ZjZjOGRjNGRj
ZjhkNjMyYTNjNzRiY2QzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvZ2wtZ2V0LWNhbGxzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
Z2wtZ2V0LWNhbGxzLmh0bWwKQEAgLTEwNyw3ICsxMDcsNyBAQCBlbHNlIHsKICAgICBzaG91bGRC
ZVRydWUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX0ZSQUdNRU5UX1VOSUZPUk1f
VkVDVE9SUykgPj0gMTYnKTsKICAgICBzaG91bGRCZVRydWUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVy
KGNvbnRleHQuTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMpID49IDEyOCcpOwogICAgIHNob3Vs
ZEJlVHJ1ZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5NQVhfVkFSWUlOR19WRUNUT1JT
KSA+PSA4Jyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTlVN
X0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTKScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRl
eHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMpJywgJ1td
Jyk7CiB9CiAKIGRlYnVnKCIiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125926</attachid>
            <date>2012-02-07 14:14:50 -0800</date>
            <delta_ts>2012-02-07 14:54:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77066-20120207141449.patch</filename>
            <type>text/plain</type>
            <size>73941</size>
            <attacher name="Gregg Tavares">gman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2YxNjE1ZTViODkxNmJm
YWZmZjk3MzMzMWNlZjdmNDA5ODYyNGRiNS4uNTMyMGI3NTVmNTcxZTgyMDI5ZTgwMjJkYmZkODRm
Zjc4YzNmNWJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTAyLTA2ICBHcmVn
ZyBUYXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBuZXcgV0VC
R0wgY29tcHJlc3NlZCB0ZXh0dXJlIGV4dGVuc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MDY2CisKKyAgICAgICAgVGhpcyByZW1vdmVzIHRo
ZSBvbGQgZXhwZXJpbWVudGFsIGNvbXByZXNzZWQKKyAgICAgICAgdGV4dHVyZSBleHRlbnNpb24g
YW5kIGltcGxlbWVudHMgdGhlIGZpcnN0IG5ldworICAgICAgICBvbmUuCisKKyAgICAgICAgQSB0
ZXN0IGlzIGluIHRoZSBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0cyBpbgorICAgICAgICBleHRlbnNp
b25zL3dlYmdsLWNvbXByZXNzZWQtdGV4dHVyZS1zM3RjLmh0bWwKKyAgICAgICAgYW5kIHdpbGwg
YmUgY29waWVkIGhlcmUgaW4gYSBmdXR1cmUgcGF0Y2guCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUZXN0IGNvbWluZyBpbiBm
dXR1cmUgcGF0Y2guCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4T2JqZWN0KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6V2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEM6On5XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6Z2V0TmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmguCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5pZGw6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5pZGwuCisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmg6IFJlbW92
ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJ
bmZvOjpXZWJHTEdldEluZm8pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTEdldEluZm86OmdldFdlYkdMVW5zaWduZWRJbnRBcnJheSk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xHZXRJbmZvLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xPYmpl
Y3QuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5z
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRl
Q29tcHJlc3NlZFRleEZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ29tcHJl
c3NlZFRleFN1YkRpbWVuc2lvbnMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJHTFJlbmRlcmlu
Z0NvbnRleHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5p
ZGw6CisKIDIwMTItMDItMDcgIE1hdHRoZXcgRGVsYW5leSAgPG1kZWxhbmV5QGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgcmVkdW5kYW50IGNoZWNrcyBpbiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGRkMDRjZjZmYjdhZjIyMjEzNDYzODU2
YWI2NmMzZDIxZmM0N2NhY2EuLjExMGY4N2JjNWJkZGIwMTQ3MzRjY2MxMTc2YTQ0OWZjNGRlZDY3
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMTgxLDcgKzIxODEsNyBAQCBJRiAoRU5BQkxF
X1dFQkdMKQogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvVmFs
aWRhdGVMaW1pdGF0aW9ucy5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3Jj
L2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5jcHAKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xCdWZm
ZXIuY3BwCi0gICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcAor
ICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKICAgICAg
ICAgaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAKICAgICAgICAgaHRtbC9j
YW52YXMvV2ViR0xDb250ZXh0RXZlbnQuY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29u
dGV4dEdyb3VwLmNwcApAQCAtMjIxNCw3ICsyMjE0LDcgQEAgSUYgKEVOQUJMRV9XRUJHTCkKICAg
ICAgICAgaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaWRsCiAgICAgICAgIGh0bWwv
Y2FudmFzL1dlYkdMQWN0aXZlSW5mby5pZGwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xCdWZm
ZXIuaWRsCi0gICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmlkbAor
ICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5pZGwKICAgICAg
ICAgaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwKICAgICAgICAgaHRtbC9j
YW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaWRsCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRGVi
dWdSZW5kZXJlckluZm8uaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA4Mjli
NTY4MGIwMmYwNDg5MGNlOTIxYTI3YWNlYjRmYjA2OTQyZjgwLi4wYTk1ZGQ3MzFlNmQxMzYzOGJk
YjY0YWJlOWYwMjY2NzRhY2FkNzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTI4Niw3ICsyODYsNyBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9odG1sL2Nh
bnZhcy9VaW50OENsYW1wZWRBcnJheS5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMv
V2ViR0xBY3RpdmVJbmZvLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTEJ1
ZmZlci5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZXMuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRB
dHRyaWJ1dGVzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRF
dmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5p
ZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZGZlNDkzMTFhYjZiNDQ2Mzg5
MjhlMTM3YWM4N2ExNWFkNzA3NDlhNS4uMjY1ZTQxMTc3MDYxNjZhNGFmZDg3ZTlhZjExMzZlYTU4
YTNkODEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC04NDcsNiArODQ3LDcg
QEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9odG1sL2NhbnZhcy9VaW50OENs
YW1wZWRBcnJheS5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xBY3RpdmVJbmZv
LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5pZGwgXAorCSQoV2Vi
Q29yZSkvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsIFwKIAkkKFdl
YkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsIFwKIAkkKFdlYkNv
cmUpL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmlkbCBcCiAJJChXZWJDb3JlKS9odG1s
L2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmlkbCBcCkBAIC01NjEzLDggKzU2MTQsOCBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQWN0aXZl
SW5mby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmggXAotCVNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcCBcCi0JU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCBcCisJU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKaW5kZXggZDM0YzZkOTc4NTQ1MWE4NzFkNjdhYjVmY2VkYTAwODM1NmU2NDA0Zi4uNGNhMzdi
YzM1ZDNmMWI4NjY0OTlhYzAxN2I4OTc0OTQ4Mzg5NzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0zNjkz
LDcgKzM2OTMsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9MSkgewogICAgICAg
ICBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xB
Y3RpdmVJbmZvLmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oIFwKLSAgICAg
ICAgaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCBcCisgICAgICAgIGh0bWwv
Y2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggXAogICAgICAgICBodG1sL2NhbnZh
cy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENv
bnRleHRFdmVudC5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3JvdXAuaCBc
CkBAIC0zNzMzLDcgKzM3MzMsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9MSkg
ewogICAgICAgICBodG1sL2NhbnZhcy9DYW52YXNDb250ZXh0QXR0cmlidXRlcy5jcHAgXAogICAg
ICAgICBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9X
ZWJHTEJ1ZmZlci5jcHAgXAotICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlcy5jcHAgXAorICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
Qy5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCBc
CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmNwcCBcCiAgICAgICAgIGh0
bWwvY2FudmFzL1dlYkdMQ29udGV4dEdyb3VwLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMDdh
MzQwZjhiNjJmZjE0MWVhN2JmZDU0NzM5NzUxNzY5NWNlNjMzNC4uOWU1Y2YyMDY1NTQwYTQ0OTAy
YjA3MjI3Y2RhOTY1OGJjNmNhYWQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtOTYxLDcgKzk2MSw3
IEBACiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvVWludDhDbGFtcGVkQXJyYXkuaWRsJywKICAg
ICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8uaWRsJywKICAgICAgICAgICAg
ICdodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5pZGwnLAotICAgICAgICAgICAgJ2h0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmlkbCcsCisgICAgICAgICAgICAnaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZh
cy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMv
V2ViR0xDb250ZXh0RXZlbnQuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTERl
YnVnUmVuZGVyZXJJbmZvLmlkbCcsCkBAIC01NDQ1LDggKzU0NDUsOCBAQAogICAgICAgICAgICAg
J2h0bWwvY2FudmFzL1dlYkdMQWN0aXZlSW5mby5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZh
cy9XZWJHTEJ1ZmZlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQnVmZmVy
LmgnLAotICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNw
cCcsCi0gICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCcs
CisgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3Bw
JywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5o
JywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCcs
CiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oJywKICAg
ICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRhNzk4
MDM0MmQzYjNmZGQ0ZGI0MmU3NDNkZTY5N2M2YWMxNTc5OWQuLmVlMjVlMDU4MjA3ZTgzZDZjZWEz
NzU0YTIzMGFlNTBiMGViODU2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3ODEsMTAgKzE3ODEsMTAgQEAKIAkJNjVGRUE4
NjkwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3Bw
ICovOyB9OwogCQk2RTIxQzZDMDExMjYzMzg1MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0M0Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyMUM2
QkYxMTI2MzM4NTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNELmNwcCAqLzsgfTsKIAkJNkUy
MUM2QzIxMTI2MzM5OTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNEQ0cuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyMUM2QzExMTI2MzM5OTAw
QTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNEQ0cuY3BwICovOyB9OwotCQk2RTNGQUQzODE0NzMz
RjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUQzNjE0NzMzRjQwMDBFNDIz
MDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgKi87IH07Ci0JCTZFM0ZBRDM5MTQ3
MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUQzNzE0NzMzRjQwMDBFNDIz
MDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oICovOyB9OwotCQk2RTNGQUU4RTE0NzMz
RkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFFOEMxNDczM0ZEQjAwRTQyMzA2
IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcCAqLzsgfTsKLQkJNkUzRkFFOEYxNDczM0ZE
QjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUU4RDE0NzMzRkRCMDBFNDIzMDYgLyog
V2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCAqLzsgfTsKKwkJNkUzRkFEMzgxNDczM0Y0MDAwRTQy
MzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFEMzYxNDczM0Y0MDAwRTQyMzA2IC8q
IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwICovOyB9OworCQk2RTNGQUQzOTE0NzMz
RjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFEMzcxNDczM0Y0MDAwRTQy
MzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCAqLzsgfTsKKwkJNkUzRkFFOEUx
NDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRThDMTQ3MzNGREIw
MEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgKi87IH07CisJCTZFM0ZB
RThGMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFFOEQxNDczM0ZE
QjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggKi87IH07CiAJCTZFNDdF
NjYwMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUUxMEI3OTQ0QjAwQjE4NkM4IC8q
IFdlYkdMR2V0SW5mby5jcHAgKi87IH07CiAJCTZFNDdFNjYxMTBCNzk0NEIwMEIxODZDOCAvKiBX
ZWJHTEdldEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uaCAqLzsgfTsKIAkJ
NkU0QUJDRDQxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEFCQ0QyMTM4RUEw
QjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5jcHAgKi87IH07CkBAIC04NjQ3LDEx
ICs4NjQ3LDExIEBACiAJCTY1RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNkUyMUM2QkYxMTI2MzM4NTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29u
dGV4dDNELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNz
Q29udGV4dDNELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUyMUM2QzExMTI2
MzM5OTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNEQ0cuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk2RTNGQUQzNzE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZFM0ZBRThDMTQ3MzNGREIw
MEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHA7IHBhdGggPSBj
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk2RTNGQUU4RDE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViR0xDb21wcmVzc2VkVGV4
dHVyZXMuaDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk2RTNGQUU5MDE0NzMzRkVBMDBFNDIzMDYgLyogV2ViR0xD
b21wcmVzc2VkVGV4dHVyZXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVzLmlkbDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMw
NiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTNGQUQzNzE0NzMzRjQwMDBFNDIzMDYgLyogSlNX
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTZFM0ZBRThDMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQy5jcHA7IHBhdGggPSBjYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTNGQUU4RDE0NzMz
RkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaDsgcGF0aCA9
IGNhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk2RTNGQUU5MDE0NzMzRkVBMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDLmlkbDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNDdFNjVFMTBCNzk0NEIwMEIxODZDOCAv
KiBXZWJHTEdldEluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
V2ViR0xHZXRJbmZvLmNwcDsgcGF0aCA9IGNhbnZhcy9XZWJHTEdldEluZm8uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xH
ZXRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMR2V0SW5mby5o
OyBwYXRoID0gY2FudmFzL1dlYkdMR2V0SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2RTRBQkNEMjEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MVW5rbm93bkVsZW1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ0NzcsOSArMTQ0NzcsOSBA
QAogCQkJCTQ5QzdCOUE4MTA0MkQzMkUwMDA5RDQ0NyAvKiBXZWJHTEJ1ZmZlci5jcHAgKi8sCiAJ
CQkJNDlDN0I5QTkxMDQyRDMyRTAwMDlENDQ3IC8qIFdlYkdMQnVmZmVyLmggKi8sCiAJCQkJNDlD
N0I5QUExMDQyRDMyRTAwMDlENDQ3IC8qIFdlYkdMQnVmZmVyLmlkbCAqLywKLQkJCQk2RTNGQUU4
QzE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwICovLAotCQkJ
CTZFM0ZBRThEMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oICov
LAotCQkJCTZFM0ZBRTkwMTQ3MzNGRUEwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJl
cy5pZGwgKi8sCisJCQkJNkUzRkFFOEMxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVTM1RDLmNwcCAqLywKKwkJCQk2RTNGQUU4RDE0NzMzRkRCMDBFNDIzMDYgLyogV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCAqLywKKwkJCQk2RTNGQUU5MDE0NzMzRkVBMDBFNDIz
MDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsICovLAogCQkJCTZFNEU5MUE5MTBG
N0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCAqLywKIAkJCQk2RTRF
OTFBQTEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oICovLAogCQkJ
CTZFNEU5MUFCMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbCAq
LywKQEAgLTE3NDU3LDggKzE3NDU3LDggQEAKIAkJCQlBN0QyMEY2MTEwN0Y0MDY5MDBBODAzOTIg
LyogSlNXZWJHTEFjdGl2ZUluZm8uaCAqLywKIAkJCQk0OUM3Qjk4MDEwNDJEMkQzMDAwOUQ0NDcg
LyogSlNXZWJHTEJ1ZmZlci5jcHAgKi8sCiAJCQkJNDlDN0I5ODExMDQyRDJEMzAwMDlENDQ3IC8q
IEpTV2ViR0xCdWZmZXIuaCAqLywKLQkJCQk2RTNGQUQzNjE0NzMzRjQwMDBFNDIzMDYgLyogSlNX
ZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgKi8sCi0JCQkJNkUzRkFEMzcxNDczM0Y0MDAwRTQy
MzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCAqLywKKwkJCQk2RTNGQUQzNjE0NzMz
RjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgKi8sCisJCQkJ
NkUzRkFEMzcxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMu
aCAqLywKIAkJCQk2RUU4QTc3MDEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRy
aWJ1dGVzLmNwcCAqLywKIAkJCQk2RUU4QTc3MTEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENv
bnRleHRBdHRyaWJ1dGVzLmggKi8sCiAJCQkJQkMyQ0JGN0ExNDBGMUQ1ODAwMzg3OUJFIC8qIEpT
V2ViR0xDb250ZXh0RXZlbnQuY3BwICovLApAQCAtMjI5ODUsNyArMjI5ODUsNyBAQAogCQkJCUZE
ODJEN0Y4MTNENEM4QkQwMDRFNDM3MiAvKiBKU1dhdmVTaGFwZXJOb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0QyMEY2MzEwN0Y0MDY5MDBBODAzOTIgLyogSlNXZWJHTEFjdGl2ZUluZm8uaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5QzdCOTk0MTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMQnVm
ZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk2RTNGQUQzOTE0NzMzRjQwMDBFNDIzMDYgLyogSlNX
ZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkUzRkFEMzkxNDcz
M0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTZFRThBNzczMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJp
YnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMkNCRjRFMTQwRjFBQkQwMDM4NzlCRSAvKiBK
U1dlYkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3Qjk5ODEwNDJEMkQz
MDAwOUQ0NDcgLyogSlNXZWJHTEZyYW1lYnVmZmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI0MDEy
LDcgKzI0MDEyLDcgQEAKIAkJCQlCQzZEQURFRjBBMTk1RkRGMDBFNUNEMTQgLyogV2ViRm9udENh
Y2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0QyMEY2RDEwN0Y0MzhCMDBBODAzOTIgLyogV2Vi
R0xBY3RpdmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlDOTEwNDJEMzJGMDAwOUQ0
NDcgLyogV2ViR0xCdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTZFM0ZBRThGMTQ3MzNGREIw
MEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NkUzRkFFOEYxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2RTRFOTFBRjEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250
ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGNkYxRUUxMjdGNzBCMTAwNTVD
QjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwMUQzQ0Y4MzE0
QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xDb250ZXh0R3JvdXAuaCBpbiBIZWFkZXJzICovLApAQCAt
MjYxMjgsNyArMjYxMjgsNyBAQAogCQkJCUZEOEU5QkRGMTNENENEMkIwMDUwREM3MiAvKiBKU1dh
dmVTaGFwZXJOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDIwRjYyMTA3RjQw
NjkwMEE4MDM5MiAvKiBKU1dlYkdMQWN0aXZlSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
OUM3Qjk5MzEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk2RTNGQUQzODE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0
dXJlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTNGQUQzODE0NzMzRjQwMDBFNDIzMDYgLyog
SlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2RUU4
QTc3MjEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDMkNCRjdCMTQwRjFENTgwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4
dEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdCOTk3MTA0MkQyRDMwMDA5RDQ0NyAv
KiBKU1dlYkdMRnJhbWVidWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjk2MSw3ICsyNjk2
MSw3IEBACiAJCQkJOTNGMTlCMDcwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmVWaWV3Lm0gaW4g
U291cmNlcyAqLywKIAkJCQlCQzZEQURGQTBBMTk2MDJCMDBFNUNEMTQgLyogV2ViRm9udENhY2hl
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlDN0I5QzgxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdM
QnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTZFM0ZBRThFMTQ3MzNGREIwMEU0MjMwNiAv
KiBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTNGQUU4
RTE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNkU0RTkxQUUxMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0
dHJpYnV0ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGNkYxRUQxMjdGNzBCMTAwNTVDQjA2
IC8qIFdlYkdMQ29udGV4dEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTAxRDNDRjgyMTRC
RDBBMzAwMEZFOTk3MCAvKiBXZWJHTENvbnRleHRHcm91cC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250
ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcAppbmRleCBiNGY1NjYyMzlhMTcwNmNmNzVmZjU4MTU1OWFkOGQ3
ZWViYTRjYTViLi4wYmZhNjNhZmIzNTVkNzBkYTFkZDZmMWVkN2RmMGIwMjA0MzU0YmMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC00MCw4ICs0MCwxMCBAQAogI2luY2x1ZGUgIkpTT0VT
U3RhbmRhcmREZXJpdmF0aXZlcy5oIgogI2luY2x1ZGUgIkpTT0VTVGV4dHVyZUZsb2F0LmgiCiAj
aW5jbHVkZSAiSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5oIgorI2luY2x1ZGUgIkpTVWludDMyQXJy
YXkuaCIKICNpbmNsdWRlICJKU1VpbnQ4QXJyYXkuaCIKICNpbmNsdWRlICJKU1dlYkdMQnVmZmVy
LmgiCisjaW5jbHVkZSAiSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIgogI2luY2x1ZGUg
IkpTV2ViR0xGcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTV2ViR0xMb3NlQ29udGV4dC5oIgog
I2luY2x1ZGUgIkpTV2ViR0xQcm9ncmFtLmgiCkBAIC01Niw3ICs1OCw3IEBACiAjaW5jbHVkZSAi
T0VTVGV4dHVyZUZsb2F0LmgiCiAjaW5jbHVkZSAiT0VTVmVydGV4QXJyYXlPYmplY3QuaCIKICNp
bmNsdWRlICJXZWJHTEJ1ZmZlci5oIgotI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVz
LmgiCisjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCIKICNpbmNsdWRlICJX
ZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1NoYWRlcnMuaCIK
ICNpbmNsdWRlICJXZWJHTEV4dGVuc2lvbi5oIgpAQCAtNzEsNiArNzMsNyBAQAogI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1
ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5Lmg+CiAKICNp
ZiBFTkFCTEUoVklERU8pCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtMTIxLDYg
KzEyNCw4IEBAIHN0YXRpYyBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBXZWJHCiAgICAgICAgIHJldHVybiB0b0pTKGV4
ZWMsIGdsb2JhbE9iamVjdCwgaW5mby5nZXRXZWJHTFRleHR1cmUoKSk7CiAgICAgY2FzZSBXZWJH
TEdldEluZm86OmtUeXBlV2ViR0xVbnNpZ25lZEJ5dGVBcnJheToKICAgICAgICAgcmV0dXJuIHRv
SlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbmZvLmdldFdlYkdMVW5zaWduZWRCeXRlQXJyYXkoKSk7
CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xVbnNpZ25lZEludEFycmF5OgorICAg
ICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGluZm8uZ2V0V2ViR0xVbnNpZ25l
ZEludEFycmF5KCkpOwogICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVM6CiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5m
by5nZXRXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCkpOwogICAgIGRlZmF1bHQ6CkBAIC0xOTMs
OCArMTk4LDggQEAgc3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdlYkdMRXh0ZW4KICAgICAgICAgcmV0dXJuIHRvSlMo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxXZWJHTERlYnVnUmVuZGVyZXJJbmZvKj4o
ZXh0ZW5zaW9uKSk7CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6V2ViR0xEZWJ1Z1NoYWRlcnNO
YW1lOgogICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0
PFdlYkdMRGVidWdTaGFkZXJzKj4oZXh0ZW5zaW9uKSk7Ci0gICAgY2FzZSBXZWJHTEV4dGVuc2lv
bjo6V2ViS2l0V2ViR0xDb21wcmVzc2VkVGV4dHVyZXNOYW1lOgotICAgICAgICByZXR1cm4gdG9K
UyhleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PFdlYkdMQ29tcHJlc3NlZFRleHR1cmVz
Kj4oZXh0ZW5zaW9uKSk7CisgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6V2ViS2l0V2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVENOYW1lOgorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxP
YmplY3QsIHN0YXRpY19jYXN0PFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKj4oZXh0ZW5zaW9u
KSk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBqc051bGwo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdM
UmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCmluZGV4IGRlMTRkNDM1NDNj
YjFlYjZjY2I0OThhNzJlZDA0YzY4OTk0NGEwYTQuLmMwNzg2ODg1ODUyZDYxMDJmMWVjMzlmYWU1
Y2I4ODQ4ZGYyOWY4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApA
QCAtNTUsNyArNTUsNyBAQAogI2luY2x1ZGUgIlY4VWludDMyQXJyYXkuaCIKICNpbmNsdWRlICJW
OFVpbnQ4QXJyYXkuaCIKICNpbmNsdWRlICJWOFdlYkdMQnVmZmVyLmgiCi0jaW5jbHVkZSAiVjhX
ZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oIgorI2luY2x1ZGUgIlY4V2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEMuaCIKICNpbmNsdWRlICJWOFdlYkdMRGVidWdSZW5kZXJlckluZm8uaCIKICNpbmNs
dWRlICJWOFdlYkdMRGVidWdTaGFkZXJzLmgiCiAjaW5jbHVkZSAiVjhXZWJHTEZyYW1lYnVmZmVy
LmgiCkBAIC0xNTQsNiArMTU0LDggQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
T2JqZWN0KGNvbnN0IFdlYkdMR2V0SW5mbyYgaW5mbykKICAgICAgICAgcmV0dXJuIHRvVjgoaW5m
by5nZXRXZWJHTFRleHR1cmUoKSk7CiAgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xV
bnNpZ25lZEJ5dGVBcnJheToKICAgICAgICAgcmV0dXJuIHRvVjgoaW5mby5nZXRXZWJHTFVuc2ln
bmVkQnl0ZUFycmF5KCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMVW5zaWdu
ZWRJbnRBcnJheToKKyAgICAgICAgcmV0dXJuIHRvVjgoaW5mby5nZXRXZWJHTFVuc2lnbmVkSW50
QXJyYXkoKSk7CiAgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUzoKICAgICAgICAgcmV0dXJuIHRvVjgoaW5mby5nZXRXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0T0VTKCkpOwogICAgIGRlZmF1bHQ6CkBAIC0xOTMsOSArMTk1LDkgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4T2JqZWN0KFdlYkdMRXh0ZW5zaW9uKiBleHRlbnNpb24sIHY4
OjpIYW5kbGU8djgKICAgICAgICAgZXh0ZW5zaW9uT2JqZWN0ID0gdG9WOChzdGF0aWNfY2FzdDxX
ZWJHTERlYnVnU2hhZGVycyo+KGV4dGVuc2lvbikpOwogICAgICAgICByZWZlcmVuY2VOYW1lID0g
IndlYkdMRGVidWdTaGFkZXJzTmFtZSI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2ViR0xF
eHRlbnNpb246OldlYktpdFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzTmFtZToKLSAgICAgICAgZXh0
ZW5zaW9uT2JqZWN0ID0gdG9WOChzdGF0aWNfY2FzdDxXZWJHTENvbXByZXNzZWRUZXh0dXJlcyo+
KGV4dGVuc2lvbikpOwotICAgICAgICByZWZlcmVuY2VOYW1lID0gIndlYktpdFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVzTmFtZSI7CisgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6V2ViS2l0V2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVENOYW1lOgorICAgICAgICBleHRlbnNpb25PYmplY3QgPSB0b1Y4
KHN0YXRpY19jYXN0PFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKj4oZXh0ZW5zaW9uKSk7Cisg
ICAgICAgIHJlZmVyZW5jZU5hbWUgPSAid2ViS2l0V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENO
YW1lIjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVCghZXh0ZW5zaW9uT2JqZWN0
LklzRW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDIzNTdlZjM1MWRhMDg3
MWMxMTc5MDg0MWEzOTNiODUwZjA5ZTk2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcApAQCAtMCwwICsx
LDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQkdMKQor
CisjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCIKKworI2luY2x1ZGUgIkV4
dGVuc2lvbnMzRC5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgorCisjaW5j
bHVkZSA8d3RmL0ludDMyQXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6V2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQorICAg
IDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKK3sKKyAgICBjb250ZXh0LT5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQp
OworICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQpOworICAgIGNvbnRleHQtPmFkZENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19F
WFQpOworICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMz
RDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOworfQorCitXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQzo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKCkKK3sKK30KKworV2ViR0xF
eHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OmdldE5h
bWUoKSBjb25zdAoreworICAgIHJldHVybiBXZWJLaXRXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
Q05hbWU7Cit9CisKK1Bhc3NPd25QdHI8V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM+IFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250
ZXh0KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMoY29udGV4dCkpOworfQorCitib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBw
b3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQoreworICAgIEV4dGVuc2lvbnMz
RCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lv
bnMoKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Nv
bXByZXNzaW9uX3MzdGMiKQorICAgICAgICB8fCAoZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKQorICAgICAgICAgICAgJiYgZXh0ZW5zaW9ucy0+
c3VwcG9ydHMoIkdMX0NIUk9NSVVNX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyIpCisgICAgICAg
ICAgICAmJiBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fdGV4dHVyZV9jb21wcmVz
c2lvbl9keHQ1IikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzI0MmNiODM2MTA4YzcyMTNj
ODllZWIyOGNlYmY0NDBiMDRlYzRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaApAQCAtMCwwICsxLDUyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ19oCisjZGVmaW5lIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDX2gKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
KyNpbmNsdWRlICJXZWJHTEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViR0xUZXh0dXJlOworCitjbGFzcyBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM+IGNy
ZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKKworICAgIHN0YXRpYyBib29sIHN1cHBvcnRl
ZChXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKKworICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVTM1RDKCk7CisgICAgdmlydHVhbCBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyhXZWJHTFJlbmRl
cmluZ0NvbnRleHQqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlkbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43ZmRlNWJiYTkwODYyZDIwZDZkNmRjNGY3ZTk1YjExYzhiMTllNWZiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuaWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgaHRtbCB7CisgICAgaW50ZXJm
YWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCisgICAgICAgIEpTR2VuZXJhdGVJc1Jl
YWNoYWJsZT1JbXBsQ29udGV4dCwKKyAgICAgICAgT21pdENvbnN0cnVjdG9yLAorICAgICAgICBE
b05vdENoZWNrQ29uc3RhbnRzCisgICAgXSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyB7Cisg
ICAgICAgIC8qIENvbXByZXNzZWQgVGV4dHVyZSBGb3JtYXRzICovCisgICAgICAgIGNvbnN0IHVu
c2lnbmVkIGludCBDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUICAgICAgICA9IDB4ODNGMDsK
KyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhU
ICAgICAgID0gMHg4M0YxOworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUM19FWFQgICAgICAgPSAweDgzRjI7CisgICAgICAgIGNvbnN0IHVuc2lnbmVk
IGludCBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCAgICAgICA9IDB4ODNGMzsKKyAgICB9
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTE5ODBjYWEx
OGIyODc4OWU2MDBlOTEwNDRkYzdkN2IyYzljZDJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5NyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQkdMKQotCi0jaW5jbHVkZSAi
V2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCIKLQotI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgot
I2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgotCi0jaW5jbHVkZSA8d3RmL0ludDMy
QXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1XZWJHTENvbXByZXNzZWRUZXh0dXJlczo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZXMo
V2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQotICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKLSAgICAsIG1fc3VwcG9ydHNEeHQxKGZhbHNlKQotICAgICwgbV9zdXBwb3J0c0R4dDUo
ZmFsc2UpCi0gICAgLCBtX3N1cHBvcnRzRXRjMShmYWxzZSkKLSAgICAsIG1fc3VwcG9ydHNQdnJ0
YyhmYWxzZSkKLXsKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0LT5ncmFw
aGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgaWYgKGV4dGVuc2lvbnMtPnN1
cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIikpIHsKLSAgICAgICAgZXh0
ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIp
OwotICAgICAgICBtX3N1cHBvcnRzRHh0MSA9IHRydWU7Ci0gICAgfQotICAgIGlmIChleHRlbnNp
b25zLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpKSB7Ci0gICAg
ICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9u
X3MzdGMiKTsKLSAgICAgICAgbV9zdXBwb3J0c0R4dDEgPSB0cnVlOwotICAgICAgICBtX3N1cHBv
cnRzRHh0NSA9IHRydWU7Ci0gICAgfQotICAgIGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xf
Q0hST01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1IikpIHsKLSAgICAgICAgZXh0ZW5zaW9u
cy0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Iik7
Ci0gICAgICAgIG1fc3VwcG9ydHNEeHQ1ID0gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKGV4dGVuc2lv
bnMtPnN1cHBvcnRzKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpKSB7Ci0g
ICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX09FU19jb21wcmVzc2VkX0VUQzFf
UkdCOF90ZXh0dXJlIik7Ci0gICAgICAgIG1fc3VwcG9ydHNFdGMxID0gdHJ1ZTsKLSAgICB9Ci0g
ICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9w
dnJ0YyIpKSB7Ci0gICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0lNR190ZXh0
dXJlX2NvbXByZXNzaW9uX3B2cnRjIik7Ci0gICAgICAgIG1fc3VwcG9ydHNQdnJ0YyA9IHRydWU7
Ci0gICAgfQotCi0gICAgaWYgKG1fc3VwcG9ydHNEeHQxKSB7Ci0gICAgICAgIG1fZm9ybWF0cy5h
cHBlbmQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUKTsKLSAgICAg
ICAgbV9mb3JtYXRzLmFwcGVuZChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDFfRVhUKTsKLSAgICB9Ci0KLSAgICBpZiAobV9zdXBwb3J0c0R4dDUpCi0gICAgICAgIG1fZm9y
bWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCk7
Ci0KLSAgICBpZiAobV9zdXBwb3J0c0V0YzEpCi0gICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0
ZW5zaW9uczNEOjpFVEMxX1JHQjhfT0VTKTsKLQotICAgIGlmIChtX3N1cHBvcnRzUHZydGMpIHsK
LSAgICAgICAgbV9mb3JtYXRzLmFwcGVuZChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1BW
UlRDXzRCUFBWMV9JTUcpOwotICAgICAgICBtX2Zvcm1hdHMuYXBwZW5kKEV4dGVuc2lvbnMzRDo6
Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcpOwotICAgIH0KLX0KLQotV2ViR0xDb21w
cmVzc2VkVGV4dHVyZXM6On5XZWJHTENvbXByZXNzZWRUZXh0dXJlcygpCi17Ci19Ci0KLVdlYkdM
RXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOjpnZXROYW1l
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViS2l0V2ViR0xDb21wcmVzc2VkVGV4dHVyZXNOYW1l
OwotfQotCi1QYXNzT3duUHRyPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzPiBXZWJHTENvbXByZXNz
ZWRUZXh0dXJlczo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKLXsKLSAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzKGNvbnRleHQpKTsK
LX0KLQotYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlczo6c3VwcG9ydGVkKFdlYkdMUmVuZGVy
aW5nQ29udGV4dCogY29udGV4dCkKLXsKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBj
b250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgcmV0dXJu
IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIikK
LSAgICAgICAgfHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNz
aW9uX3MzdGMiKQotICAgICAgICB8fCBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1f
dGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1IikKLSAgICAgICAgfHwgZXh0ZW5zaW9ucy0+c3VwcG9y
dHMoIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIikKLSAgICAgICAgfHwgZXh0
ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIik7Ci19
Ci0KLWJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZv
cm1hdChHQzNEZW51bSBmb3JtYXQpCi17Ci0gICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICBjYXNl
IEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4
dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0gICAgICAgIHJldHVy
biBtX3N1cHBvcnRzRHh0MTsKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6RVRDMV9SR0I4X09FUzoK
LSAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNFdGMxOwotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpD
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKLSAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNE
eHQ1OwotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFf
SU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYx
X0lNRzoKLSAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNQdnJ0YzsKLSAgICB9Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0ZUNvbXBy
ZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkg
d2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEFycmF5QnVmZmVy
VmlldyogcGl4ZWxzKQotewotICAgIGlmICghcGl4ZWxzKSB7Ci0gICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsIGZ1bmN0
aW9uTmFtZSwgIm5vIHBpeGVscyIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5h
bWUsICJ3aWR0aCBvciBoZWlnaHQgPCAwIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICB1bnNpZ25lZCBpbnQgYnl0ZXNSZXF1aXJlZCA9IDA7Ci0KLSAgICBzd2l0Y2ggKGZv
cm1hdCkgewotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFf
RVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VDoKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6RVRDMV9SR0I4X09FUzoKLSAgICAgICAgewotICAg
ICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gNDsKLSAgICAgICAgICAgIGNvbnN0IGlu
dCBrQmxvY2tIZWlnaHQgPSA0OwotICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1NpemUgPSA4
OwotICAgICAgICAgICAgaW50IG51bUJsb2Nrc0Fjcm9zcyA9ICh3aWR0aCArIGtCbG9ja1dpZHRo
IC0gMSkgLyBrQmxvY2tXaWR0aDsKLSAgICAgICAgICAgIGludCBudW1CbG9ja3NEb3duID0gKGhl
aWdodCArIGtCbG9ja0hlaWdodCAtIDEpIC8ga0Jsb2NrSGVpZ2h0OwotICAgICAgICAgICAgaW50
IG51bUJsb2NrcyA9IG51bUJsb2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd247Ci0gICAgICAgICAg
ICBieXRlc1JlcXVpcmVkID0gbnVtQmxvY2tzICoga0Jsb2NrU2l6ZTsKLSAgICAgICAgfQotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUNV9FWFQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0aCA9
IDQ7Ci0gICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKLSAgICAgICAgICAg
IGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7Ci0gICAgICAgICAgICBpbnQgbnVtQmxvY2tzQWNy
b3NzID0gKHdpZHRoICsga0Jsb2NrV2lkdGggLSAxKSAvIGtCbG9ja1dpZHRoOwotICAgICAgICAg
ICAgaW50IG51bUJsb2Nrc0Rvd24gPSAoaGVpZ2h0ICsga0Jsb2NrSGVpZ2h0IC0gMSkgLyBrQmxv
Y2tIZWlnaHQ7Ci0gICAgICAgICAgICBpbnQgbnVtQmxvY2tzID0gbnVtQmxvY2tzQWNyb3NzICog
bnVtQmxvY2tzRG93bjsKLSAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9ja3MgKiBr
QmxvY2tTaXplOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5zaW9u
czNEOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9u
czNEOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKLSAgICAgICAgewotICAgICAg
ICAgICAgYnl0ZXNSZXF1aXJlZCA9IChzdGQ6Om1heCh3aWR0aCwgOCkgKiBzdGQ6Om1heChoZWln
aHQsIDgpICsgNykgLyA4OwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBmb3JtYXQiKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChwaXhlbHMtPmJ5dGVMZW5ndGgoKSAhPSBi
eXRlc1JlcXVpcmVkKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgImxlbmd0aCBvZiBB
cnJheUJ1ZmZlclZpZXcgaXMgbm90IGNvcnJlY3QgZm9yIGRpbWVuc2lvbnMiKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJEaW1lbnNpb25zKEdD
M0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlv
ZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhl
aWdodCwgR0MzRGVudW0gZm9ybWF0LCBXZWJHTFRleHR1cmUqIHRleCkKLXsKLSAgICBzd2l0Y2gg
KGZvcm1hdCkgewotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RY
VDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQx
X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9F
WFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkVUQzFfUkdCOF9PRVM6Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDQ7Ci0gICAgICAgICAgICBjb25zdCBp
bnQga0Jsb2NrSGVpZ2h0ID0gNDsKLSAgICAgICAgICAgIGlmICgoeG9mZnNldCAlIGtCbG9ja1dp
ZHRoKSB8fCAoeW9mZnNldCAlIGtCbG9ja0hlaWdodCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgaWYgKCF4b2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgaWYg
KHdpZHRoICE9IHRleC0+Z2V0V2lkdGgodGFyZ2V0LCBsZXZlbCkpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHdpZHRoICUga0Jsb2NrV2lkdGgpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgheW9mZnNldCkgewotICAgICAgICAg
ICAgICAgIGlmIChoZWlnaHQgIT0gdGV4LT5nZXRIZWlnaHQodGFyZ2V0LCBsZXZlbCkpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGhlaWdodCAlIGtCbG9ja0hlaWdodCkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENf
NEJQUFYxX0lNRzoKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRD
XzRCUFBWMV9JTUc6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh4b2Zmc2V0IHx8IHlvZmZz
ZXQKLSAgICAgICAgICAgICAgICB8fCB3aWR0aCAhPSB0ZXgtPmdldFdpZHRoKHRhcmdldCwgbGV2
ZWwpIHx8IGhlaWdodCAhPSB0ZXgtPmdldEhlaWdodCh0YXJnZXQsIGxldmVsKSkgewotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlczo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdp
ZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEFycmF5QnVmZmVy
VmlldyogZGF0YSkKLXsKLSAgICBpZiAobV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCi0gICAg
ICAgIHJldHVybjsKLSAgICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleEZvcm1hdChpbnRlcm5h
bGZvcm1hdCkpIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCAiY29tcHJlc3NlZFRleEltYWdlMkQiLCAiaW52YWxp
ZCBpbnRlcm5hbGZvcm1hdCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChib3Jk
ZXIpIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9WQUxVRSwgImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgImJvcmRlciBub3Qg
MCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2Vk
VGV4RnVuY0RhdGEoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgd2lkdGgsIGhlaWdodCwgaW50ZXJu
YWxmb3JtYXQsIGRhdGEpKQotICAgICAgICByZXR1cm47Ci0gICAgV2ViR0xUZXh0dXJlKiB0ZXgg
PSBtX2NvbnRleHQtPnZhbGlkYXRlVGV4dHVyZUJpbmRpbmcoImNvbXByZXNzZWRUZXhJbWFnZTJE
IiwgdGFyZ2V0LCB0cnVlKTsKLSAgICBpZiAoIXRleCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlm
ICghbV9jb250ZXh0LT5pc0dMRVMyTlBPVFN0cmljdCgpKSB7Ci0gICAgICAgIGlmIChsZXZlbCAm
JiBXZWJHTFRleHR1cmU6OmlzTlBPVCh3aWR0aCwgaGVpZ2h0KSkgewotICAgICAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxV
RSwgImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgImxldmVsID4gMCBub3QgcG93ZXIgb2YgMiIpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotICAgIG1fY29udGV4dC0+Z3Jh
cGhpY3NDb250ZXh0M0QoKS0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIsIGRhdGEtPmJ5dGVMZW5ndGgoKSwg
ZGF0YS0+YmFzZUFkZHJlc3MoKSk7Ci0gICAgdGV4LT5zZXRMZXZlbEluZm8odGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJ
R05FRF9CWVRFKTsKLSAgICBtX2NvbnRleHQtPmNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxz
ZSk7Ci19Ci0KLXZvaWQgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6OmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBH
QzNEaW50IHlvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWln
aHQsIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3KiBkYXRhKQotewotICAgIGlmICht
X2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghdmFs
aWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KGZvcm1hdCkpIHsKLSAgICAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCAiY29tcHJl
c3NlZFRleFN1YkltYWdlMkQiLCAiaW52YWxpZCBmb3JtYXQiKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKCJjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRCIsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YSkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFdlYkdMVGV4dHVyZSogdGV4ID0gbV9jb250ZXh0LT52YWxpZGF0ZVRleHR1
cmVCaW5kaW5nKCJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIsIHRhcmdldCwgdHJ1ZSk7Ci0gICAg
aWYgKCF0ZXgpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChmb3JtYXQgIT0gdGV4LT5nZXRJ
bnRlcm5hbEZvcm1hdCh0YXJnZXQsIGxldmVsKSkgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQiLCAiZm9ybWF0IGRvZXMgbm90IG1hdGNoIHRleHR1cmUgZm9ybWF0Iik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRl
eFN1YkRpbWVuc2lvbnModGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0ZXgpKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCAiY29tcHJlc3NlZFRleFN1
YkltYWdlMkQiLCAiZGltZW5zaW9ucyBpbnZhbGlkIGZvciBmb3JtYXQiKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y29tcHJl
c3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YS0+Ynl0ZUxlbmd0aCgpLCBkYXRhLT5iYXNlQWRkcmVz
cygpKTsKLSAgICBtX2NvbnRleHQtPmNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci19
Ci0KLVdlYkdMR2V0SW5mbyBXZWJHTENvbXByZXNzZWRUZXh0dXJlczo6Z2V0Q29tcHJlc3NlZFRl
eHR1cmVGb3JtYXRzKCkKLXsKLSAgICByZXR1cm4gV2ViR0xHZXRJbmZvKEludDMyQXJyYXk6OmNy
ZWF0ZSgmbV9mb3JtYXRzWzBdLCBtX2Zvcm1hdHMuc2l6ZSgpKSk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1MmI3MWMyMTM3ZmNjNTkwNTJjZTQ1Zjg0NjJlYzg0NTg4OTdm
NzY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlc19oCi0jZGVmaW5lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzX2gKLQotI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJXZWJHTEV4dGVuc2lvbi5oIgotI2luY2x1ZGUgPHd0
Zi9BcnJheUJ1ZmZlclZpZXcuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdMVGV4dHVyZTsKLQotY2xhc3MgV2ViR0xDb21w
cmVzc2VkVGV4dHVyZXMgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewotcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzPiBjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Kik7Ci0KLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJp
bmdDb250ZXh0Kik7Ci0KLSAgICB2aXJ0dWFsIH5XZWJHTENvbXByZXNzZWRUZXh0dXJlcygpOwot
ICAgIHZpcnR1YWwgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Q7Ci0KLSAgICB2b2lkIGNv
bXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZp
ZXcqIGRhdGEpOwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpOwotCi0gICAg
V2ViR0xHZXRJbmZvIGdldENvbXByZXNzZWRUZXh0dXJlRm9ybWF0cygpOwotCi1wcml2YXRlOgot
ICAgIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwotCi0g
ICAgYm9vbCB2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGlv
bk5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkg
d2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzKTsKLQotICAg
IGJvb2wgdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KEdDM0RlbnVtIGZvcm1hdCk7Ci0KLSAg
ICBib29sIHZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBH
QzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIFdlYkdMVGV4dHVyZSopOwotCi0gICAg
Ym9vbCBtX3N1cHBvcnRzRHh0MTsKLSAgICBib29sIG1fc3VwcG9ydHNEeHQ1OwotICAgIGJvb2wg
bV9zdXBwb3J0c0V0YzE7Ci0gICAgYm9vbCBtX3N1cHBvcnRzUHZydGM7Ci0KLSAgICBWZWN0b3I8
aW50PiBtX2Zvcm1hdHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBXZWJHTENvbXByZXNzZWRUZXh0dXJlc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5pZGwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDgwOGI2MGEzZmI5YTZlNGRmNmYzMDhhMjU3Yjk3NjQ5MTljNDdiMzkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaWRsCisrKyAvZGV2L251bGwK
QEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLW1vZHVsZSBodG1sIHsKLSAgICBpbnRlcmZhY2UgWwot
ICAgICAgICBDb25kaXRpb25hbD1XRUJHTCwKLSAgICAgICAgSlNHZW5lcmF0ZUlzUmVhY2hhYmxl
PUltcGxDb250ZXh0LAotICAgICAgICBPbWl0Q29uc3RydWN0b3IsCi0gICAgICAgIERvTm90Q2hl
Y2tDb25zdGFudHMKLSAgICBdIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzIHsKLSAgICAgICAgLyog
Q29tcHJlc3NlZCBUZXh0dXJlIEZvcm1hdHMgKi8KLSAgICAgICAgY29uc3QgdW5zaWduZWQgaW50
IENPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgICAgICAgID0gMHg4M0YwOwotICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgICAgICAgPSAw
eDgzRjE7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQ1X0VYVCAgICAgICA9IDB4ODNGMzsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IEVUQzFf
UkdCOF9PRVMgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RDY0OwotICAgICAgICBjb25zdCB1
bnNpZ25lZCBpbnQgQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyAgICAgPSAweDhDMDA7
Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYx
X0lNRyAgICA9IDB4OEMwMjsKLQotICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIGNv
bXByZXNzZWRUZXhJbWFnZTJEKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiBsb25nIGxldmVs
LCBpbiB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGxvbmcgd2lkdGgsIGluIGxvbmcg
aGVpZ2h0LCBpbiBsb25nIGJvcmRlciwgaW4gQXJyYXlCdWZmZXJWaWV3IGRhdGEpOwotICAgICAg
ICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGluIHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiBsb25nIGxldmVsLCBpbiBsb25nIHhvZmZzZXQsIGluIGxv
bmcgeW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBsb25nIHdpZHRoLCBpbiBsb25nIGhlaWdodCwgaW4gdW5zaWduZWQg
bG9uZyBmb3JtYXQsIGluIEFycmF5QnVmZmVyVmlldyBkYXRhKTsKLSAgICB9OwotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKaW5kZXggNGZmOTY5MDg2ZDI5
MWIxNzc1MzA4ZGRiZDMxYTJlMjE4OTk3YjJjOC4uZmY0ODJmYWNkOGYxNTJjNzIyMWFiZjNiYWIx
NjQwYzA5ZDljZjVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVu
c2lvbi5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgT0VTVmVydGV4QXJyYXlP
YmplY3ROYW1lLAogICAgICAgICBXZWJHTERlYnVnUmVuZGVyZXJJbmZvTmFtZSwKICAgICAgICAg
V2ViR0xEZWJ1Z1NoYWRlcnNOYW1lLAotICAgICAgICBXZWJLaXRXZWJHTENvbXByZXNzZWRUZXh0
dXJlc05hbWUsIC8vIFdFQktJVF8gcHJlZml4IHVudGlsIGV4dGVuc2lvbiBpcyBvZmZpY2lhbAor
ICAgICAgICBXZWJLaXRXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ05hbWUsIC8vIFdFQktJVF8g
cHJlZml4IHVudGlsIGV4dGVuc2lvbiBpcyBvZmZpY2lhbAogICAgIH07CiAKICAgICB2b2lkIHJl
ZigpIHsgbV9jb250ZXh0LT5yZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMR2V0SW5mby5jcHAKaW5kZXggODdiZWM3OTE5OGNmZjgzYWI2NzRiNGFmMTgxNmE4MWFhM2E1
NDMyYy4uZjcxNjZjNDE5MzJkYzM0NzZkOGI1YzJlMTFhM2VjNDJlNDQyNWIxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwCkBAIC0zOCw2ICszOCw3IEBA
CiAjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgogI2luY2x1ZGUgPHd0Zi9G
bG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvSW50MzJBcnJheS5oPgorI2luY2x1ZGUgPHd0
Zi9VaW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTE5MSw2ICsxOTIsMTYgQEAgV2ViR0xHZXRJbmZvOjpXZWJHTEdldElu
Zm8oUGFzc1JlZlB0cjxVaW50OEFycmF5PiB2YWx1ZSkKIHsKIH0KIAorV2ViR0xHZXRJbmZvOjpX
ZWJHTEdldEluZm8oUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gdmFsdWUpCisgICAgOiBtX3R5cGUo
a1R5cGVXZWJHTFVuc2lnbmVkSW50QXJyYXkpCisgICAgLCBtX2Jvb2woZmFsc2UpCisgICAgLCBt
X2Zsb2F0KDApCisgICAgLCBtX2ludCgwKQorICAgICwgbV91bnNpZ25lZEludCgwKQorICAgICwg
bV93ZWJnbFVuc2lnbmVkSW50QXJyYXkodmFsdWUpCit7Cit9CisKIFdlYkdMR2V0SW5mbzo6V2Vi
R0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gdmFsdWUpCiAg
ICAgOiBtX3R5cGUoa1R5cGVXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKQogICAgICwgbV9ib29s
KGZhbHNlKQpAQCAtMjk0LDYgKzMwNSwxMiBAQCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFdlYkdM
R2V0SW5mbzo6Z2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
d2ViZ2xVbnNpZ25lZEJ5dGVBcnJheTsKIH0KIAorUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gV2Vi
R0xHZXRJbmZvOjpnZXRXZWJHTFVuc2lnbmVkSW50QXJyYXkoKSBjb25zdAoreworICAgIEFTU0VS
VChnZXRUeXBlKCkgPT0ga1R5cGVXZWJHTFVuc2lnbmVkSW50QXJyYXkpOworICAgIHJldHVybiBt
X3dlYmdsVW5zaWduZWRJbnRBcnJheTsKK30KKwogUGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTPiBXZWJHTEdldEluZm86OmdldFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoKSBj
b25zdAogewogICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0T0VTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0
SW5mby5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmgKaW5kZXgg
Zjc0N2EwOTAyYWRkNzBhNmU2ZGIyZDQyZTM5NWJkNjQ5MzMwODA1Yi4uZDFmNzNhNjU2ZjUwOTBl
ODQ4Y2ZkMTE5ZGJkMWRmOTQwNTc1ZTQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xHZXRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xHZXRJbmZvLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDx3dGYvSW50MzJBcnJh
eS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9VaW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY3LDYgKzY4LDcgQEAgcHVibGljOgogICAg
ICAgICBrVHlwZVdlYkdMUmVuZGVyYnVmZmVyLAogICAgICAgICBrVHlwZVdlYkdMVGV4dHVyZSwK
ICAgICAgICAga1R5cGVXZWJHTFVuc2lnbmVkQnl0ZUFycmF5LAorICAgICAgICBrVHlwZVdlYkdM
VW5zaWduZWRJbnRBcnJheSwKICAgICAgICAga1R5cGVXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LAogICAgIH07CiAKQEAgLTg4LDYgKzkwLDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdM
R2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiB2YWx1ZSk7CiAgICAgZXhwbGlj
aXQgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPiB2YWx1ZSk7CiAgICAgZXhw
bGljaXQgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8VWludDhBcnJheT4gdmFsdWUpOworICAgIGV4
cGxpY2l0IFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiB2YWx1ZSk7CiAgICAg
ZXhwbGljaXQgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
Uz4gdmFsdWUpOwogCiAgICAgdmlydHVhbCB+V2ViR0xHZXRJbmZvKCk7CkBAIC0xMTAsNiArMTEz
LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IGdldFdlYkdM
UmVuZGVyYnVmZmVyKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IGdldFdl
YkdMVGV4dHVyZSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZ2V0V2ViR0xV
bnNpZ25lZEJ5dGVBcnJheSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IGdl
dFdlYkdMVW5zaWduZWRJbnRBcnJheSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8V2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUz4gZ2V0V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUygpIGNvbnN0Owog
CiBwcml2YXRlOgpAQCAtMTMwLDYgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkdM
UmVuZGVyYnVmZmVyPiBtX3dlYmdsUmVuZGVyYnVmZmVyOwogICAgIFJlZlB0cjxXZWJHTFRleHR1
cmU+IG1fd2ViZ2xUZXh0dXJlOwogICAgIFJlZlB0cjxVaW50OEFycmF5PiBtX3dlYmdsVW5zaWdu
ZWRCeXRlQXJyYXk7CisgICAgUmVmUHRyPFVpbnQzMkFycmF5PiBtX3dlYmdsVW5zaWduZWRJbnRB
cnJheTsKICAgICBSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gbV93ZWJnbFZlcnRl
eEFycmF5T2JqZWN0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmpl
Y3QuY3BwCmluZGV4IDE5Mjg1MmM3NTViNGJhYTgwY2FhOTE1YjQ2MjlkNDkzZGI5NjZjODAuLjZk
N2I5ZDhjZjE2ZTAzZjk5ZjA2MDg4ZDI0YzIxNTFiZDI5Mjg4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRl
ICJPRVNTdGFuZGFyZERlcml2YXRpdmVzLmgiCiAjaW5jbHVkZSAiT0VTVGV4dHVyZUZsb2F0Lmgi
CiAjaW5jbHVkZSAiT0VTVmVydGV4QXJyYXlPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlcy5oIgorI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgi
CiAjaW5jbHVkZSAiV2ViR0xDb250ZXh0R3JvdXAuaCIKICNpbmNsdWRlICJXZWJHTERlYnVnUmVu
ZGVyZXJJbmZvLmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1NoYWRlcnMuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4
IDYxOGI5MmQzNjg1MmFkMThjY2NjNWFhNmVhNmZlN2E4ZTVmNDg0MGUuLjZmMTUxMzY1ZDc1ODc5
YTQyYWMyYjA1M2U1ZTZjMTkzMGYxZDdjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNTQsNyArNTQsNyBAQAog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViR0xBY3RpdmVJbmZvLmgiCiAjaW5j
bHVkZSAiV2ViR0xCdWZmZXIuaCIKLSNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5o
IgorI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgiCiAjaW5jbHVkZSAiV2Vi
R0xDb250ZXh0QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIldlYkdMQ29udGV4dEV2ZW50LmgiCiAj
aW5jbHVkZSAiV2ViR0xDb250ZXh0R3JvdXAuaCIKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRl
IDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093bkFycmF5UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1VpbnQxNkFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgUExBVEZPUk0oUVQp
CkBAIC01NDEsNiArNTQyLDEyIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjphbGxvd1By
aXZpbGVnZWRFeHRlbnNpb25zKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjphZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHQzNEZW51
bSBmb3JtYXQpCit7CisgICAgaWYgKCFtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5jb250YWlu
cyhmb3JtYXQpKQorICAgICAgICBtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5hcHBlbmQoZm9y
bWF0KTsKK30KKwogV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp+V2ViR0xSZW5kZXJpbmdDb250ZXh0
KCkKIHsKICAgICAvLyBSZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8gV2ViR0xPYmplY3RzIHNvIGlm
IHRoZXkgYXJlIHRoZSBsYXN0IHJlZmVyZW5jZQpAQCAtMTIxMiwyNCArMTIxOSw3MSBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciogc2hhZGVy
LCBFeGNlcHRpb25Db2RlJiBlYwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChH
QzNEZW51bSAvKnRhcmdldCovLCBHQzNEaW50IC8qbGV2ZWwqLywgR0MzRGVudW0gLyppbnRlcm5h
bGZvcm1hdCovLCBHQzNEc2l6ZWkgLyp3aWR0aCovLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSAvKmhlaWdodCovLCBHQzNEaW50IC8q
Ym9yZGVyKi8sIEFycmF5QnVmZmVyVmlldyogLypkYXRhKi8pCit2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSBoZWlnaHQs
IEdDM0RpbnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpCiB7CiAgICAgaWYgKGlzQ29u
dGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOworICAgIGlmICghdmFsaWRhdGVUZXhGdW5jTGV2
ZWwoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgdGFyZ2V0LCBsZXZlbCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KGludGVybmFsZm9ybWF0
KSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9FTlVNLCAiY29tcHJlc3NlZFRleEltYWdlMkQiLCAiaW52YWxpZCBpbnRlcm5hbGZvcm1hdCIp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChib3JkZXIpIHsKKyAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJjb21wcmVz
c2VkVGV4SW1hZ2UyRCIsICJib3JkZXIgbm90IDAiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleERpbWVuc2lvbnMoImNvbXByZXNzZWRUZXhJ
bWFnZTJEIiwgbGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGludGVybmFsZm9ybWF0KSkKKyAgICAgICAg
cmV0dXJuOworICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoImNvbXByZXNz
ZWRUZXhJbWFnZTJEIiwgd2lkdGgsIGhlaWdodCwgaW50ZXJuYWxmb3JtYXQsIGRhdGEpKQorICAg
ICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCi0gICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgImNvbXByZXNzZWRU
ZXhJbWFnZTJEIiwgImludmFsaWQgaW50ZXJuYWxmb3JtYXQiKTsKKyAgICBXZWJHTFRleHR1cmUq
IHRleCA9IHZhbGlkYXRlVGV4dHVyZUJpbmRpbmcoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgdGFy
Z2V0LCB0cnVlKTsKKyAgICBpZiAoIXRleCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghaXNH
TEVTMk5QT1RTdHJpY3QoKSkgeworICAgICAgICBpZiAobGV2ZWwgJiYgV2ViR0xUZXh0dXJlOjpp
c05QT1Qod2lkdGgsIGhlaWdodCkpIHsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiY29tcHJlc3NlZFRleEltYWdlMkQiLCAi
bGV2ZWwgPiAwIG5vdCBwb3dlciBvZiAyIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICB9CisgICAgZ3JhcGhpY3NDb250ZXh0M0QoKS0+Y29tcHJlc3NlZFRleEltYWdlMkQo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLCBkYXRhLT5ieXRlTGVu
Z3RoKCksIGRhdGEtPmJhc2VBZGRyZXNzKCkpOworICAgIHRleC0+c2V0TGV2ZWxJbmZvKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBHcmFwaGljc0NvbnRleHQz
RDo6VU5TSUdORURfQllURSk7CisgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
IH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
KEdDM0RlbnVtIC8qdGFyZ2V0Ki8sIEdDM0RpbnQgLypsZXZlbCovLCBHQzNEaW50IC8qeG9mZnNl
dCovLCBHQzNEaW50IC8qeW9mZnNldCovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSAvKndpZHRoKi8sIEdDM0RzaXplaSAvKmhl
aWdodCovLCBHQzNEZW51bSAvKmZvcm1hdCovLCBBcnJheUJ1ZmZlclZpZXcqIC8qZGF0YSovKQor
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZz
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEFycmF5
QnVmZmVyVmlldyogZGF0YSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQogICAgICAgICBy
ZXR1cm47CisgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmNMZXZlbCgiY29tcHJlc3NlZFRleFN1Yklt
YWdlMkQiLCB0YXJnZXQsIGxldmVsKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghdmFsaWRh
dGVDb21wcmVzc2VkVGV4Rm9ybWF0KGZvcm1hdCkpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgImNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEIiwgImludmFsaWQgZm9ybWF0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KCF2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YSgiY29tcHJlc3NlZFRleFN1YkltYWdlMkQi
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEpKQorICAgICAgICByZXR1cm47CisKKyAgICBX
ZWJHTFRleHR1cmUqIHRleCA9IHZhbGlkYXRlVGV4dHVyZUJpbmRpbmcoImNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEIiwgdGFyZ2V0LCB0cnVlKTsKKyAgICBpZiAoIXRleCkKKyAgICAgICAgcmV0dXJu
OwogCi0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgotICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJjb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RCIsICJpbnZhbGlkIGZvcm1hdCIpOworICAgIGlmIChmb3JtYXQgIT0gdGV4LT5nZXRJbnRlcm5h
bEZvcm1hdCh0YXJnZXQsIGxldmVsKSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sICJjb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RCIsICJmb3JtYXQgZG9lcyBub3QgbWF0Y2ggdGV4dHVyZSBmb3JtYXQiKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViRGltZW5zaW9u
cygiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHRleCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGdyYXBoaWNzQ29udGV4dDNEKCktPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhLT5ieXRlTGVuZ3RoKCks
IGRhdGEtPmJhc2VBZGRyZXNzKCkpOworICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxz
ZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb3B5VGV4SW1hZ2UyRChHQzNE
ZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNE
aW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNE
aW50IGJvcmRlcikKQEAgLTIxOTAsMTEgKzIyNDQsMTEgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAg
ICAgICAgIG1fd2ViZ2xMb3NlQ29udGV4dCA9IFdlYkdMTG9zZUNvbnRleHQ6OmNyZWF0ZSh0aGlz
KTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xMb3NlQ29udGV4dC5nZXQoKTsKICAgICB9Ci0gICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0
dXJlcyIpKSB7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJXRUJLSVRfV0VCR0xf
Y29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKSkgewogICAgICAgICAvLyBVc2UgV0VCS0lUXyBwcmVm
aXggdW50aWwgZXh0ZW5zaW9uIGlzIG9mZmljaWFsLgotICAgICAgICBpZiAoIW1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZXMpCi0gICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVzID0g
V2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6OmNyZWF0ZSh0aGlzKTsKLSAgICAgICAgcmV0dXJuIG1f
d2ViZ2xDb21wcmVzc2VkVGV4dHVyZXMuZ2V0KCk7CisgICAgICAgIGlmICghbV93ZWJnbENvbXBy
ZXNzZWRUZXh0dXJlUzNUQykKKyAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMz
VEMgPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6Y3JlYXRlKHRoaXMpOworICAgICAgICBy
ZXR1cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQy5nZXQoKTsKICAgICB9CiAKICAgICBp
ZiAoYWxsb3dQcml2aWxlZ2VkRXh0ZW5zaW9ucygpKSB7CkBAIC0yMzA3LDEwICsyMzYxLDcgQEAg
V2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDM0RlbnVt
IHBuYW1lLCBFeGNlcHRpb25Db2RlJgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9S
X1dSSVRFTUFTSzoKICAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5BcnJheVBhcmFtZXRlcihwbmFt
ZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09NUFJFU1NFRF9URVhUVVJFX0ZPUk1B
VFM6Ci0gICAgICAgIGlmIChtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVzKQotICAgICAgICAgICAg
cmV0dXJuIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZXMtPmdldENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0cygpOwotICAgICAgICAvLyBEZWZpbmVkIGFzIG51bGwgaW4gdGhlIHNwZWMKLSAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbygpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFVpbnQz
MkFycmF5OjpjcmVhdGUobV9jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMuZGF0YSgpLCBtX2NvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0cy5zaXplKCkpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpDVUxMX0ZBQ0U6CiAgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1lKTsK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDVUxMX0ZBQ0VfTU9ERToKQEAgLTIzNjUsOSAr
MjQxNiw2IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRl
cihHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYKICAgICAgICAgcmV0dXJuIGdldEludFBh
cmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TUFYX1ZJRVdQT1JU
X0RJTVM6CiAgICAgICAgIHJldHVybiBnZXRXZWJHTEludEFycmF5UGFyYW1ldGVyKHBuYW1lKTsK
LSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpOVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1B
VFM6Ci0gICAgICAgIC8vIFdlYkdMIDEuMCBzcGVjaWZpZXMgdGhhdCB0aGVyZSBhcmUgbm8gY29t
cHJlc3NlZCB0ZXh0dXJlIGZvcm1hdHMuCi0gICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3Rh
dGljX2Nhc3Q8aW50PigwKSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TlVNX1NIQURF
Ul9CSU5BUllfRk9STUFUUzoKICAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBhbHdheXMgcmV0
dXJuIDAgZm9yIHRoaXM/CiAgICAgICAgIHJldHVybiBnZXRJbnRQYXJhbWV0ZXIocG5hbWUpOwpA
QCAtMjY0MCw4ICsyNjg4LDggQEAgVmVjdG9yPFN0cmluZz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKICAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpKQogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpOwogICAgIHJlc3VsdC5hcHBl
bmQoIldFQktJVF9XRUJHTF9sb3NlX2NvbnRleHQiKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZXM6OnN1cHBvcnRlZCh0aGlzKSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lU
X1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZXMiKTsKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEM6OnN1cHBvcnRlZCh0aGlzKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lU
X1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIik7CiAKICAgICBpZiAoYWxsb3dQcml2aWxl
Z2VkRXh0ZW5zaW9ucygpKSB7CiAgICAgICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+c3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpKQpAQCAtNDY4
NSw2ICs0NzMzLDExNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXhG
dW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGb3JtYXQo
R0MzRGVudW0gZm9ybWF0KQoreworICAgIHJldHVybiBtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0
cy5jb250YWlucyhmb3JtYXQpOworfQorCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFs
aWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdD
M0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEFycmF5
QnVmZmVyVmlldyogcGl4ZWxzKQoreworICAgIGlmICghcGl4ZWxzKSB7CisgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5h
bWUsICJubyBwaXhlbHMiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAo
d2lkdGggPCAwIHx8IGhlaWdodCA8IDApIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgIndpZHRoIG9yIGhl
aWdodCA8IDAiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHVuc2lnbmVk
IGludCBieXRlc1JlcXVpcmVkID0gMDsKKworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgY2Fz
ZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBF
eHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgICAgICB7Cisg
ICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OworICAgICAgICAgICAgY29uc3Qg
aW50IGtCbG9ja0hlaWdodCA9IDQ7CisgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9
IDg7CisgICAgICAgICAgICBpbnQgbnVtQmxvY2tzQWNyb3NzID0gKHdpZHRoICsga0Jsb2NrV2lk
dGggLSAxKSAvIGtCbG9ja1dpZHRoOworICAgICAgICAgICAgaW50IG51bUJsb2Nrc0Rvd24gPSAo
aGVpZ2h0ICsga0Jsb2NrSGVpZ2h0IC0gMSkgLyBrQmxvY2tIZWlnaHQ7CisgICAgICAgICAgICBp
bnQgbnVtQmxvY2tzID0gbnVtQmxvY2tzQWNyb3NzICogbnVtQmxvY2tzRG93bjsKKyAgICAgICAg
ICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9ja3MgKiBrQmxvY2tTaXplOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQzX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUNV9FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0aCA9
IDQ7CisgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKKyAgICAgICAgICAg
IGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7CisgICAgICAgICAgICBpbnQgbnVtQmxvY2tzQWNy
b3NzID0gKHdpZHRoICsga0Jsb2NrV2lkdGggLSAxKSAvIGtCbG9ja1dpZHRoOworICAgICAgICAg
ICAgaW50IG51bUJsb2Nrc0Rvd24gPSAoaGVpZ2h0ICsga0Jsb2NrSGVpZ2h0IC0gMSkgLyBrQmxv
Y2tIZWlnaHQ7CisgICAgICAgICAgICBpbnQgbnVtQmxvY2tzID0gbnVtQmxvY2tzQWNyb3NzICog
bnVtQmxvY2tzRG93bjsKKyAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9ja3MgKiBr
QmxvY2tTaXplOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1
bmN0aW9uTmFtZSwgImludmFsaWQgZm9ybWF0Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBpZiAocGl4ZWxzLT5ieXRlTGVuZ3RoKCkgIT0gYnl0ZXNSZXF1aXJlZCkgewor
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxV
RSwgZnVuY3Rpb25OYW1lLCAibGVuZ3RoIG9mIEFycmF5QnVmZmVyVmlldyBpcyBub3QgY29ycmVj
dCBmb3IgZGltZW5zaW9ucyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNv
bXByZXNzZWRUZXhEaW1lbnNpb25zKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGludCBs
ZXZlbCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQp
Cit7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJF
U1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDNfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQ1X0VYVDogeworICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0Owor
ICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKKyAgICAgICAgYm9vbCB3aWR0aFZh
bGlkID0gKGxldmVsICYmIHdpZHRoID09IDEpIHx8IChsZXZlbCAmJiB3aWR0aCA9PSAyKSB8fCAh
KHdpZHRoICUga0Jsb2NrV2lkdGgpOworICAgICAgICBib29sIGhlaWdodFZhbGlkID0gKGxldmVs
ICYmIGhlaWdodCA9PSAxKSB8fCAobGV2ZWwgJiYgaGVpZ2h0ID09IDIpIHx8ICEoaGVpZ2h0ICUg
a0Jsb2NrSGVpZ2h0KTsKKyAgICAgICAgaWYgKCF3aWR0aFZhbGlkIHx8ICFoZWlnaHRWYWxpZCkg
eworICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAid2lkdGggb3IgaGVpZ2h0IGludmFsaWQgZm9yIGxl
dmVsIik7CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDb21wcmVzc2VkVGV4
U3ViRGltZW5zaW9ucyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIHRhcmdldCwg
R0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
QzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgV2ViR0xU
ZXh0dXJlKiB0ZXgpCit7CisgICAgaWYgKHhvZmZzZXQgPCAwIHx8IHlvZmZzZXQgPCAwKSB7Cisg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwg
ZnVuY3Rpb25OYW1lLCAieG9mZnNldCBvciB5b2Zmc2V0IDwgMCIpOworICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgY2FzZSBFeHRlbnNpb25z
M0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6
OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpD
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6IHsKKyAgICAgICAgY29uc3QgaW50IGtCbG9ja1dp
ZHRoID0gNDsKKyAgICAgICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7CisgICAgICAgIGlm
ICgoeG9mZnNldCAlIGtCbG9ja1dpZHRoKSB8fCAoeW9mZnNldCAlIGtCbG9ja0hlaWdodCkpIHsK
KyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAieG9mZnNldCBvciB5b2Zmc2V0IG5vdCBtdWx0aXBs
ZSBvZiA0Iik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHdpZHRoIC0geG9mZnNldCA+IHRleC0+Z2V0V2lkdGgodGFyZ2V0LCBsZXZlbCkKKyAgICAg
ICAgICAgIHx8IGhlaWdodCAtIHlvZmZzZXQgPiB0ZXgtPmdldEhlaWdodCh0YXJnZXQsIGxldmVs
KSkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklO
VkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJkaW1lbnNpb25zIG91dCBvZiByYW5nZSIp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2
YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1lbnNpb25zKGZ1bmN0aW9uTmFtZSwgbGV2ZWwsIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCk7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9Cit9CisKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZURy
YXdNb2RlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gbW9kZSkKIHsKICAgICBz
d2l0Y2ggKG1vZGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggYjgxYzJiMDc3ZTYxZDVmYTRmMDVhY2JlNzUwMjhlZDYx
NGQ2OGIzMC4uMDQ0OWVhZGUxYjAwY2Q1ZDllMmNkNThhNTAzYjY1YTdkY2Q1Y2ZhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgK
QEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgV2ViR0xBY3RpdmVJbmZvOwogY2xhc3MgV2ViR0xCdWZm
ZXI7CiBjbGFzcyBXZWJHTENvbnRleHRHcm91cDsKIGNsYXNzIFdlYkdMQ29udGV4dE9iamVjdDsK
LWNsYXNzIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOworY2xhc3MgV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEM7CiBjbGFzcyBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOwogY2xhc3MgV2ViR0xEZWJ1
Z1JlbmRlcmVySW5mbzsKIGNsYXNzIFdlYkdMRGVidWdTaGFkZXJzOwpAQCAtMzIxLDcgKzMyMSw3
IEBAIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgV2ViR0xPYmplY3Q7CiAgICAgZnJpZW5kIGNs
YXNzIE9FU1ZlcnRleEFycmF5T2JqZWN0OwogICAgIGZyaWVuZCBjbGFzcyBXZWJHTERlYnVnU2hh
ZGVyczsKLSAgICBmcmllbmQgY2xhc3MgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM7CisgICAgZnJp
ZW5kIGNsYXNzIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOwogICAgIGZyaWVuZCBjbGFzcyBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjazsKIAogICAgIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+LCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyk7CkBAIC0zNjcsNiArMzY3LDkg
QEAgcHVibGljOgogCiAgICAgYm9vbCB2YWxpZGF0ZVdlYkdMT2JqZWN0KGNvbnN0IGNoYXIqLCBX
ZWJHTE9iamVjdCopOwogCisgICAgLy8gQWRkcyBhIGNvbXByZXNzZWQgdGV4dHVyZSBmb3JtYXQu
CisgICAgdm9pZCBhZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHQzNEZW51bSk7CisKICNpZiBF
TkFCTEUoVklERU8pCiAgICAgUGFzc1JlZlB0cjxJbWFnZT4gdmlkZW9GcmFtZVRvSW1hZ2UoSFRN
TFZpZGVvRWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgpAQCAtNDQzLDYgKzQ0Niw4
IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViR0xUZXh0dXJlPiBtX2JsYWNrVGV4dHVyZTJEOwog
ICAgIFJlZlB0cjxXZWJHTFRleHR1cmU+IG1fYmxhY2tUZXh0dXJlQ3ViZU1hcDsKIAorICAgIFZl
Y3RvcjxHQzNEZW51bT4gbV9jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHM7CisKICAgICAvLyBGaXhl
ZC1zaXplIGNhY2hlIG9mIHJldXNhYmxlIGltYWdlIGJ1ZmZlcnMgZm9yIHZpZGVvIHRleEltYWdl
MkQgY2FsbHMuCiAgICAgY2xhc3MgTFJVSW1hZ2VCdWZmZXJDYWNoZSB7CiAgICAgcHVibGljOgpA
QCAtNTAwLDcgKzUwNSw3IEBAIHB1YmxpYzoKICAgICBPd25QdHI8V2ViR0xMb3NlQ29udGV4dD4g
bV93ZWJnbExvc2VDb250ZXh0OwogICAgIE93blB0cjxXZWJHTERlYnVnUmVuZGVyZXJJbmZvPiBt
X3dlYmdsRGVidWdSZW5kZXJlckluZm87CiAgICAgT3duUHRyPFdlYkdMRGVidWdTaGFkZXJzPiBt
X3dlYmdsRGVidWdTaGFkZXJzOwotICAgIE93blB0cjxXZWJHTENvbXByZXNzZWRUZXh0dXJlcz4g
bV93ZWJnbENvbXByZXNzZWRUZXh0dXJlczsKKyAgICBPd25QdHI8V2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEM+IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEM7CiAKICAgICAvLyBIZWxwZXJz
IGZvciBnZXRQYXJhbWV0ZXIgYW5kIG90aGVycwogICAgIFdlYkdMR2V0SW5mbyBnZXRCb29sZWFu
UGFyYW1ldGVyKEdDM0RlbnVtKTsKQEAgLTU4OCw2ICs1OTMsMjQgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzKTsKIAor
ICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBjb21wcmVzc2VkIHRleHR1cmUgZGF0
YSBpcyBjb3JyZWN0IHNpemUKKyAgICAvLyBmb3IgdGhlIGdpdmVuIGZvcm1hdCBhbmQgZGltZW5z
aW9ucy4KKyAgICBib29sIHZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIq
IGZ1bmN0aW9uTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdD
M0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMp
OworCisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB2YWxpZGF0aW5nIGNvbXByZXNzZWQgdGV4
dHVyZSBmb3JtYXRzLgorICAgIGJvb2wgdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KEdDM0Rl
bnVtIGZvcm1hdCk7CisKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgY29tcHJl
c3NlZCB0ZXh0dXJlIGRpbWVuc2lvbnMgYXJlIHZhbGlkIGZvcgorICAgIC8vIHRoZSBnaXZlbiBm
b3JtYXQuCisgICAgYm9vbCB2YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1lbnNpb25zKGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGludCBsZXZlbCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6
ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQpOworCisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRv
IHZhbGlkYXRlIGNvbXByZXNzZWQgdGV4dHVyZSBkaW1lbnNpb25zIGFyZSB2YWxpZCBmb3IKKyAg
ICAvLyB0aGUgZ2l2ZW4gZm9ybWF0LgorICAgIGJvb2wgdmFsaWRhdGVDb21wcmVzc2VkVGV4U3Vi
RGltZW5zaW9ucyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBXZWJHTFRleHR1cmUqKTsKKwogICAgIC8vIEhl
bHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBtb2RlIGZvciBkcmF3e0FycmF5cy9FbGVtZW50c30u
CiAgICAgYm9vbCB2YWxpZGF0ZURyYXdNb2RlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0Mz
RGVudW0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmlkbAppbmRleCA0ZDk5MmMxZTUxODcwZDRjZDVhYTY4OWM0MTQwODYyZTY1
ZmU1OTI2Li42ZGI4MTFkZDhjYzMzZjM0NmU1ZjZiMDFhMDEyMmViZTYwYjMyMDQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5p
ZGwKQEAgLTIwNiw3ICsyMDYsNiBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIC8qICAgICAgVEVY
VFVSRV9XUkFQX1MgKi8KICAgICAgICAgLyogICAgICBURVhUVVJFX1dSQVBfVCAqLwogCi0gICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGludCBOVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMgPSAw
eDg2QTI7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1RFWFRVUkVfRk9S
TUFUUyAgICAgPSAweDg2QTM7CiAKICAgICAgICAgLyogSGludE1vZGUgKi8KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlZjFi
OGM0MTY5ZDZhNDQ1NzlmOTMyYTI2Mjg0MjNiMDU0ZWIxMmJkLi4wNGEwMjIyNjUwZDhjNjlhNGQ0
NTEwYjFiZDdjMzNkNTg0MTg2ZGU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDItMDYg
IEdyZWdnIFRhdmFyZXMgIDxnbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
bmV3IFdFQkdMIGNvbXByZXNzZWQgdGV4dHVyZSBleHRlbnNpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzA2NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvY29uc3Rh
bnRzLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMuaHRtbDoK
KwogMjAxMi0wMi0wNyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2NvbnN0YW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvY29uc3RhbnRzLmh0bWwKaW5kZXggZTkyYTMxZTljNGU1ZmFiNWRiYjc3ZTgyMzk5
MThkYzI0MGNhYjQ3NS4uZjM2YzViZmNjMWU0ZDAxMzYzMmU0NWJkYzViYTQ4OGZlZDUzNDgwZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29uc3RhbnRzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29uc3RhbnRzLmh0bWwKQEAgLTE5
NCw3ICsxOTQsNiBAQCBTQU1QTEVfQ09WRVJBR0VfSU5WRVJUICAgICAgICAgOiAweDgwQUIsCiAg
ICAgLyogICAgICBURVhUVVJFX1dSQVBfUyAqLwogICAgIC8qICAgICAgVEVYVFVSRV9XUkFQX1Qg
Ki8KICAgICAKLU5VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyA6IDB4ODZBMiwKIENPTVBS
RVNTRURfVEVYVFVSRV9GT1JNQVRTICAgICA6IDB4ODZBMywKICAgICAKICAgICAvKiBIaW50TW9k
ZSAqLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNh
bGxzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1j
YWxscy1leHBlY3RlZC50eHQKaW5kZXggOWFlZTQ1OWZmM2FkYjk3MGU4OGMzMzA2NjhlOGYyOTgw
ODBkODgxOS4uYWYwYTJhM2Q0MjlkZWFmYjVkODY1MmY5NDYxOWRjNTNkZWFjZmVmNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMtZXhw
ZWN0ZWQudHh0CkBAIC03NSw3ICs3NSw3IEBAIFBBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29u
dGV4dC5WSUVXUE9SVCkgaXMgWzAsIDAsIDIsIDJdCiBQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVy
KGNvbnRleHQuTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUykgPj0gMTYgaXMgdHJ1ZQogUEFT
UyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JT
KSA+PSAxMjggaXMgdHJ1ZQogUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9W
QVJZSU5HX1ZFQ1RPUlMpID49IDggaXMgdHJ1ZQotUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0Lk5VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUykgaXMgMAorUEFTUyBjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LkNPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTKSBpcyBbXQog
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxscy5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLmh0bWwKaW5kZXggMmRlZTM4MWU1OTYzN2EzMzVk
OGE0ZTlhMDc2NDBjMjFjOWU3NDVhZS4uYTFiYmY1ODc4NGRjZmQ4ZjZjOGRjNGRjZjhkNjMyYTNj
NzRiY2QzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0
LWNhbGxzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNh
bGxzLmh0bWwKQEAgLTEwNyw3ICsxMDcsNyBAQCBlbHNlIHsKICAgICBzaG91bGRCZVRydWUoJ2Nv
bnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUykg
Pj0gMTYnKTsKICAgICBzaG91bGRCZVRydWUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQu
TUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMpID49IDEyOCcpOwogICAgIHNob3VsZEJlVHJ1ZSgn
Y29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5NQVhfVkFSWUlOR19WRUNUT1JTKSA+PSA4Jyk7
Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTlVNX0NPTVBSRVNT
RURfVEVYVFVSRV9GT1JNQVRTKScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFy
YW1ldGVyKGNvbnRleHQuQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMpJywgJ1tdJyk7CiB9CiAK
IGRlYnVnKCIiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125936</attachid>
            <date>2012-02-07 14:54:32 -0800</date>
            <delta_ts>2012-02-07 15:21:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77066-20120207145430.patch</filename>
            <type>text/plain</type>
            <size>74670</size>
            <attacher name="Gregg Tavares">gman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc4NjkxZjc5ZjcwNjM2
Yjk0ODU2YWI3OGJhZThiODhiODMzNTYxMC4uMjgwNGQ4YjZmNWI2ZjcwYjAyNzQ5N2U5YzE0ODgz
MjgyZTMyZTM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTAyLTA2ICBHcmVn
ZyBUYXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBuZXcgV0VC
R0wgY29tcHJlc3NlZCB0ZXh0dXJlIGV4dGVuc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MDY2CisKKyAgICAgICAgVGhpcyByZW1vdmVzIHRo
ZSBvbGQgZXhwZXJpbWVudGFsIGNvbXByZXNzZWQKKyAgICAgICAgdGV4dHVyZSBleHRlbnNpb24g
YW5kIGltcGxlbWVudHMgdGhlIGZpcnN0IG5ldworICAgICAgICBvbmUuCisKKyAgICAgICAgQSB0
ZXN0IGlzIGluIHRoZSBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0cyBpbgorICAgICAgICBleHRlbnNp
b25zL3dlYmdsLWNvbXByZXNzZWQtdGV4dHVyZS1zM3RjLmh0bWwKKyAgICAgICAgYW5kIHdpbGwg
YmUgY29waWVkIGhlcmUgaW4gYSBmdXR1cmUgcGF0Y2guCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUZXN0IGNvbWluZyBpbiBm
dXR1cmUgcGF0Y2guCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4T2JqZWN0KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6V2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEM6On5XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6Z2V0TmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmguCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5pZGw6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5pZGwuCisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmg6IFJlbW92
ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJ
bmZvOjpXZWJHTEdldEluZm8pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTEdldEluZm86OmdldFdlYkdMVW5zaWduZWRJbnRBcnJheSk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xHZXRJbmZvLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xPYmpl
Y3QuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5z
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRl
Q29tcHJlc3NlZFRleEZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ29tcHJl
c3NlZFRleFN1YkRpbWVuc2lvbnMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJHTFJlbmRlcmlu
Z0NvbnRleHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5p
ZGw6CisKIDIwMTItMDItMDcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIEFsbG93IHJldGFpbmluZyB0ZXh0dXJlIGFjcm9zcyBmcmFt
ZXMgaW4gY29tcG9zaXRlZCB2aWRlbyBwbGF5YmFjayBhbmQgY29ycmVjdGx5IGhhbmRsZSBsb3N0
IGNvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZGQwNGNmNmZiN2FmMjIyMTM0NjM4NTZh
YjY2YzNkMjFmYzQ3Y2FjYS4uMTEwZjg3YmM1YmRkYjAxNDczNGNjYzExNzZhNDQ5ZmM0ZGVkNjc2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIxODEsNyArMjE4MSw3IEBAIElGIChFTkFCTEVf
V0VCR0wpCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9WYWxp
ZGF0ZUxpbWl0YXRpb25zLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMv
Y29tcGlsZXIvVmFyaWFibGVJbmZvLmNwcAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZl
ci5jcHAKLSAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwCisg
ICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcAogICAgICAg
ICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb250
ZXh0R3JvdXAuY3BwCkBAIC0yMjE0LDcgKzIyMTQsNyBAQCBJRiAoRU5BQkxFX1dFQkdMKQogICAg
ICAgICBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5pZGwKICAgICAgICAgaHRtbC9j
YW52YXMvV2ViR0xBY3RpdmVJbmZvLmlkbAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZl
ci5pZGwKLSAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaWRsCisg
ICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlkbAogICAgICAg
ICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTENvbnRleHRFdmVudC5pZGwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1
Z1JlbmRlcmVySW5mby5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDgyOWI1
NjgwYjAyZjA0ODkwY2U5MjFhMjdhY2ViNGZiMDY5NDJmODAuLjBhOTVkZDczMWU2ZDEzNjM4YmRi
NjRhYmU5ZjAyNjY3NGFjYWQ3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAt
Mjg2LDcgKzI4Niw3IEBAIEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2Fu
dmFzL1VpbnQ4Q2xhbXBlZEFycmF5LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9X
ZWJHTEFjdGl2ZUluZm8uaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQnVm
ZmVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlcy5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0
dHJpYnV0ZXMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2
ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmlk
bCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKaW5kZXggYWI0MmY5Mjg3Mzc5N2JhMjYxYjI1
MWViY2RhYmRlNDdhZjE3ODZjNS4uNWFhYzRlYmFiYTY0ZDQ1MzcwOGI2MzJhYjQ5NzNhZDVmODBm
MmZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtMjI0LDYgKzIyNCw3IEBAIElE
TF9CSU5ESU5HUyArPSBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmpl
Y3QuaWRsIFwKICAgICAkJFBXRC9odG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8uaWRsIFwKICAg
ICAkJFBXRC9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5pZGwgXAorICAgICQkUFdEL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlkbCBcCiAgICAgJCRQV0QvaHRtbC9jYW52
YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwgXAogICAgICQkUFdEL2h0bWwvY2FudmFzL1dl
YkdMQ29udGV4dEV2ZW50LmlkbCBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1Jl
bmRlcmVySW5mby5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZGZlNDkz
MTFhYjZiNDQ2Mzg5MjhlMTM3YWM4N2ExNWFkNzA3NDlhNS4uMjY1ZTQxMTc3MDYxNjZhNGFmZDg3
ZTlhZjExMzZlYTU4YTNkODEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC04
NDcsNiArODQ3LDcgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9odG1sL2Nh
bnZhcy9VaW50OENsYW1wZWRBcnJheS5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2Vi
R0xBY3RpdmVJbmZvLmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5p
ZGwgXAorCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMu
aWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRs
IFwKIAkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmlkbCBcCiAJJChX
ZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmlkbCBcCkBAIC01NjEzLDggKzU2
MTQsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQWN0aXZlSW5mby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1
ZmZlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmggXAot
CVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcCBc
Ci0JU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCBc
CisJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1
dGVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmli
dXRlcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKaW5kZXggZDM0YzZkOTc4NTQ1MWE4NzFkNjdhYjVmY2VkYTAwODM1NmU2
NDA0Zi4uNGNhMzdiYzM1ZDNmMWI4NjY0OTlhYzAxN2I4OTc0OTQ4Mzg5NzJmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCkBAIC0zNjkzLDcgKzM2OTMsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9
MSkgewogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oIFwKICAgICAgICAgaHRtbC9j
YW52YXMvV2ViR0xBY3RpdmVJbmZvLmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZl
ci5oIFwKLSAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCBcCisg
ICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggXAogICAgICAg
ICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggXAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTENvbnRleHRFdmVudC5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb250
ZXh0R3JvdXAuaCBcCkBAIC0zNzMzLDcgKzM3MzMsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFC
TEVfV0VCR0w9MSkgewogICAgICAgICBodG1sL2NhbnZhcy9DYW52YXNDb250ZXh0QXR0cmlidXRl
cy5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAgXAogICAgICAgICBo
dG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAgXAotICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlcy5jcHAgXAorICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQy5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRy
aWJ1dGVzLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmNwcCBc
CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdyb3VwLmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggMDdhMzQwZjhiNjJmZjE0MWVhN2JmZDU0NzM5NzUxNzY5NWNlNjMzNC4uOWU1Y2Yy
MDY1NTQwYTQ0OTAyYjA3MjI3Y2RhOTY1OGJjNmNhYWQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
OTYxLDcgKzk2MSw3IEBACiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvVWludDhDbGFtcGVkQXJy
YXkuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8uaWRsJywK
ICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5pZGwnLAotICAgICAgICAgICAg
J2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmlkbCcsCisgICAgICAgICAgICAn
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsJywKICAgICAgICAgICAg
ICdodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbCcsCiAgICAgICAgICAgICAn
aHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaWRsJywKICAgICAgICAgICAgICdodG1sL2Nh
bnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmlkbCcsCkBAIC01NDQ1LDggKzU0NDUsOCBAQAog
ICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQWN0aXZlSW5mby5oJywKICAgICAgICAgICAg
ICdodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFz
L1dlYkdMQnVmZmVyLmgnLAotICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVzLmNwcCcsCi0gICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZXMuaCcsCisgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEMuY3BwJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQy5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRy
aWJ1dGVzLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmli
dXRlcy5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDYyMTUyMTJiOThjMDgyYzAwMjdmZDZmYjdkZTdiMDRhZjE4ZDM4N2YuLjNmOGQ0Yzdh
YWRkNTI2ZWJmNmFjOTY0NWY0YTBjZjIzMDcyNDk0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3ODEsMTAgKzE3ODEsMTAg
QEAKIAkJNjVGRUE4NjkwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVGRUE4NjgwOTgzM0FERTAwQkVENEFC
IC8qIFBhZ2UuY3BwICovOyB9OwogCQk2RTIxQzZDMDExMjYzMzg1MDBBN0JFMDIgLyogR3JhcGhp
Y3NDb250ZXh0M0QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkUyMUM2QkYxMTI2MzM4NTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNELmNwcCAq
LzsgfTsKIAkJNkUyMUM2QzIxMTI2MzM5OTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNEQ0cu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyMUM2
QzExMTI2MzM5OTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNEQ0cuY3BwICovOyB9OwotCQk2
RTNGQUQzODE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUQzNjE0
NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgKi87IH07Ci0J
CTZFM0ZBRDM5MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUQzNzE0
NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oICovOyB9OwotCQk2
RTNGQUU4RTE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFFOEMxNDcz
M0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcCAqLzsgfTsKLQkJNkUz
RkFFOEYxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUU4RDE0NzMzRkRC
MDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCAqLzsgfTsKKwkJNkUzRkFEMzgx
NDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFEMzYxNDczM0Y0
MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwICovOyB9OworCQk2
RTNGQUQzOTE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFEMzcx
NDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCAqLzsgfTsK
KwkJNkUzRkFFOEUxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZB
RThDMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgKi87
IH07CisJCTZFM0ZBRThGMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUz
RkFFOEQxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggKi87
IH07CiAJCTZFNDdFNjYwMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUUxMEI3OTQ0
QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5jcHAgKi87IH07CiAJCTZFNDdFNjYxMTBCNzk0NEIw
MEIxODZDOCAvKiBXZWJHTEdldEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8u
aCAqLzsgfTsKIAkJNkU0QUJDRDQxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25vd25FbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZF
NEFCQ0QyMTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5jcHAgKi87IH07
CkBAIC04NjQ4LDExICs4NjQ4LDExIEBACiAJCTY1RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQ
YWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUyMUM2QkYxMTI2MzM4NTAwQTdCRTAyIC8q
IEdyYXBoaWNzQ29udGV4dDNELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdyYXBoaWNzQ29udGV4dDNELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NkUyMUM2QzExMTI2MzM5OTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNEQ0cuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNiAv
KiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk2RTNGQUQzNzE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZFM0ZB
RThDMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5j
cHA7IHBhdGggPSBjYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk2RTNGQUU4RDE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21w
cmVzc2VkVGV4dHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViR0xD
b21wcmVzc2VkVGV4dHVyZXMuaDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2RTNGQUU5MDE0NzMzRkVBMDBFNDIz
MDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9
IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmlkbDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFM0ZBRDM2MTQ3
MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTNGQUQzNzE0NzMzRjQwMDBF
NDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFM0ZBRThDMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHA7IHBhdGggPSBjYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2
RTNGQUU4RDE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuaDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk2RTNGQUU5MDE0NzMzRkVBMDBFNDIzMDYgLyogV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmlkbDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNDdFNjVFMTBCNzk0
NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gV2ViR0xHZXRJbmZvLmNwcDsgcGF0aCA9IGNhbnZhcy9XZWJHTEdldEluZm8u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2
QzggLyogV2ViR0xHZXRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdl
YkdMR2V0SW5mby5oOyBwYXRoID0gY2FudmFzL1dlYkdMR2V0SW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2RTRBQkNEMjEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93
bkVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1M
VW5rbm93bkVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ0ODAs
OSArMTQ0ODAsOSBAQAogCQkJCTQ5QzdCOUE4MTA0MkQzMkUwMDA5RDQ0NyAvKiBXZWJHTEJ1ZmZl
ci5jcHAgKi8sCiAJCQkJNDlDN0I5QTkxMDQyRDMyRTAwMDlENDQ3IC8qIFdlYkdMQnVmZmVyLmgg
Ki8sCiAJCQkJNDlDN0I5QUExMDQyRDMyRTAwMDlENDQ3IC8qIFdlYkdMQnVmZmVyLmlkbCAqLywK
LQkJCQk2RTNGQUU4QzE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMu
Y3BwICovLAotCQkJCTZFM0ZBRThEMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlcy5oICovLAotCQkJCTZFM0ZBRTkwMTQ3MzNGRUEwMEU0MjMwNiAvKiBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlcy5pZGwgKi8sCisJCQkJNkUzRkFFOEMxNDczM0ZEQjAwRTQyMzA2IC8qIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCAqLywKKwkJCQk2RTNGQUU4RDE0NzMzRkRCMDBF
NDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCAqLywKKwkJCQk2RTNGQUU5MDE0
NzMzRkVBMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsICovLAogCQkJ
CTZFNEU5MUE5MTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCAq
LywKIAkJCQk2RTRFOTFBQTEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRl
cy5oICovLAogCQkJCTZFNEU5MUFCMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRy
aWJ1dGVzLmlkbCAqLywKQEAgLTE3NDYyLDggKzE3NDYyLDggQEAKIAkJCQlBN0QyMEY2MTEwN0Y0
MDY5MDBBODAzOTIgLyogSlNXZWJHTEFjdGl2ZUluZm8uaCAqLywKIAkJCQk0OUM3Qjk4MDEwNDJE
MkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5jcHAgKi8sCiAJCQkJNDlDN0I5ODExMDQyRDJE
MzAwMDlENDQ3IC8qIEpTV2ViR0xCdWZmZXIuaCAqLywKLQkJCQk2RTNGQUQzNjE0NzMzRjQwMDBF
NDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgKi8sCi0JCQkJNkUzRkFEMzcx
NDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCAqLywKKwkJCQk2
RTNGQUQzNjE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5j
cHAgKi8sCisJCQkJNkUzRkFEMzcxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMuaCAqLywKIAkJCQk2RUU4QTc3MDEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJH
TENvbnRleHRBdHRyaWJ1dGVzLmNwcCAqLywKIAkJCQk2RUU4QTc3MTEwRjgwM0YzMDA1QTRBMjQg
LyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi8sCiAJCQkJQkMyQ0JGN0ExNDBGMUQ1ODAw
Mzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuY3BwICovLApAQCAtMjI5OTAsNyArMjI5OTAs
NyBAQAogCQkJCUZEODJEN0Y4MTNENEM4QkQwMDRFNDM3MiAvKiBKU1dhdmVTaGFwZXJOb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0QyMEY2MzEwN0Y0MDY5MDBBODAzOTIgLyogSlNXZWJHTEFj
dGl2ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOTk0MTA0MkQyRDMwMDA5RDQ0NyAv
KiBKU1dlYkdMQnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk2RTNGQUQzOTE0NzMzRjQwMDBF
NDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NkUzRkFEMzkxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTZFRThBNzczMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdM
Q29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMkNCRjRFMTQwRjFBQkQw
MDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3
Qjk5ODEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEZyYW1lYnVmZmVyLmggaW4gSGVhZGVycyAq
LywKQEAgLTI0MDE3LDcgKzI0MDE3LDcgQEAKIAkJCQlCQzZEQURFRjBBMTk1RkRGMDBFNUNEMTQg
LyogV2ViRm9udENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0QyMEY2RDEwN0Y0MzhCMDBB
ODAzOTIgLyogV2ViR0xBY3RpdmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlDOTEw
NDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xCdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTZFM0ZB
RThGMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNkUzRkFFOEYxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTRFOTFBRjEwRjdGQjMxMDBBMjc3OUMg
LyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGNkYxRUUx
MjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwMUQzQ0Y4MzE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xDb250ZXh0R3JvdXAuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjYxMzMsNyArMjYxMzMsNyBAQAogCQkJCUZEOEU5QkRGMTNENENEMkIwMDUw
REM3MiAvKiBKU1dhdmVTaGFwZXJOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
RDIwRjYyMTA3RjQwNjkwMEE4MDM5MiAvKiBKU1dlYkdMQWN0aXZlSW5mby5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0OUM3Qjk5MzEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk2RTNGQUQzODE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENv
bXByZXNzZWRUZXh0dXJlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTNGQUQzODE0NzMzRjQw
MDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk2RUU4QTc3MjEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1
dGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMkNCRjdCMTQwRjFENTgwMDM4NzlCRSAvKiBK
U1dlYkdMQ29udGV4dEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdCOTk3MTA0MkQy
RDMwMDA5RDQ0NyAvKiBKU1dlYkdMRnJhbWVidWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
Njk2Niw3ICsyNjk2Niw3IEBACiAJCQkJOTNGMTlCMDcwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNv
cmVWaWV3Lm0gaW4gU291cmNlcyAqLywKIAkJCQlCQzZEQURGQTBBMTk2MDJCMDBFNUNEMTQgLyog
V2ViRm9udENhY2hlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlDN0I5QzgxMDQyRDMyRjAwMDlE
NDQ3IC8qIFdlYkdMQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTZFM0ZBRThFMTQ3MzNG
REIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk2RTNGQUU4RTE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkU0RTkxQUUxMEY3RkIzMTAwQTI3NzlDIC8qIFdl
YkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGNkYxRUQxMjdG
NzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTAxRDNDRjgyMTRCRDBBMzAwMEZFOTk3MCAvKiBXZWJHTENvbnRleHRHcm91cC5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAppbmRleCBiNGY1NjYyMzlhMTcwNmNmNzVm
ZjU4MTU1OWFkOGQ3ZWViYTRjYTViLi4wYmZhNjNhZmIzNTVkNzBkYTFkZDZmMWVkN2RmMGIwMjA0
MzU0YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC00MCw4ICs0MCwxMCBAQAogI2lu
Y2x1ZGUgIkpTT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oIgogI2luY2x1ZGUgIkpTT0VTVGV4dHVy
ZUZsb2F0LmgiCiAjaW5jbHVkZSAiSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5oIgorI2luY2x1ZGUg
IkpTVWludDMyQXJyYXkuaCIKICNpbmNsdWRlICJKU1VpbnQ4QXJyYXkuaCIKICNpbmNsdWRlICJK
U1dlYkdMQnVmZmVyLmgiCisjaW5jbHVkZSAiSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5o
IgogI2luY2x1ZGUgIkpTV2ViR0xGcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTV2ViR0xMb3Nl
Q29udGV4dC5oIgogI2luY2x1ZGUgIkpTV2ViR0xQcm9ncmFtLmgiCkBAIC01Niw3ICs1OCw3IEBA
CiAjaW5jbHVkZSAiT0VTVGV4dHVyZUZsb2F0LmgiCiAjaW5jbHVkZSAiT0VTVmVydGV4QXJyYXlP
YmplY3QuaCIKICNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgotI2luY2x1ZGUgIldlYkdMQ29tcHJl
c3NlZFRleHR1cmVzLmgiCisjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCIK
ICNpbmNsdWRlICJXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1
Z1NoYWRlcnMuaCIKICNpbmNsdWRlICJXZWJHTEV4dGVuc2lvbi5oIgpAQCAtNzEsNiArNzMsNyBA
QAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJh
eS5oPgogI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1VpbnQzMkFy
cmF5Lmg+CiAKICNpZiBFTkFCTEUoVklERU8pCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5o
IgpAQCAtMTIxLDYgKzEyNCw4IEBAIHN0YXRpYyBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVj
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBXZWJHCiAgICAgICAgIHJl
dHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5mby5nZXRXZWJHTFRleHR1cmUoKSk7CiAg
ICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xVbnNpZ25lZEJ5dGVBcnJheToKICAgICAg
ICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbmZvLmdldFdlYkdMVW5zaWduZWRC
eXRlQXJyYXkoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xVbnNpZ25lZElu
dEFycmF5OgorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGluZm8uZ2V0
V2ViR0xVbnNpZ25lZEludEFycmF5KCkpOwogICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdl
YkdMVmVydGV4QXJyYXlPYmplY3RPRVM6CiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgaW5mby5nZXRXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCkpOwogICAgIGRlZmF1
bHQ6CkBAIC0xOTMsOCArMTk4LDggQEAgc3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdlYkdMRXh0ZW4KICAgICAgICAg
cmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxXZWJHTERlYnVnUmVu
ZGVyZXJJbmZvKj4oZXh0ZW5zaW9uKSk7CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6V2ViR0xE
ZWJ1Z1NoYWRlcnNOYW1lOgogICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3Qs
IHN0YXRpY19jYXN0PFdlYkdMRGVidWdTaGFkZXJzKj4oZXh0ZW5zaW9uKSk7Ci0gICAgY2FzZSBX
ZWJHTEV4dGVuc2lvbjo6V2ViS2l0V2ViR0xDb21wcmVzc2VkVGV4dHVyZXNOYW1lOgotICAgICAg
ICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVzKj4oZXh0ZW5zaW9uKSk7CisgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6V2Vi
S2l0V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENOYW1lOgorICAgICAgICByZXR1cm4gdG9KUyhl
eGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
Kj4oZXh0ZW5zaW9uKSk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBqc051bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCmluZGV4
IGRlMTRkNDM1NDNjYjFlYjZjY2I0OThhNzJlZDA0YzY4OTk0NGEwYTQuLmMwNzg2ODg1ODUyZDYx
MDJmMWVjMzlmYWU1Y2I4ODQ4ZGYyOWY4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcApAQCAtNTUsNyArNTUsNyBAQAogI2luY2x1ZGUgIlY4VWludDMyQXJyYXkuaCIK
ICNpbmNsdWRlICJWOFVpbnQ4QXJyYXkuaCIKICNpbmNsdWRlICJWOFdlYkdMQnVmZmVyLmgiCi0j
aW5jbHVkZSAiVjhXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oIgorI2luY2x1ZGUgIlY4V2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMuaCIKICNpbmNsdWRlICJWOFdlYkdMRGVidWdSZW5kZXJlcklu
Zm8uaCIKICNpbmNsdWRlICJWOFdlYkdMRGVidWdTaGFkZXJzLmgiCiAjaW5jbHVkZSAiVjhXZWJH
TEZyYW1lYnVmZmVyLmgiCkBAIC0xNTQsNiArMTU0LDggQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4T2JqZWN0KGNvbnN0IFdlYkdMR2V0SW5mbyYgaW5mbykKICAgICAgICAgcmV0
dXJuIHRvVjgoaW5mby5nZXRXZWJHTFRleHR1cmUoKSk7CiAgICAgY2FzZSBXZWJHTEdldEluZm86
OmtUeXBlV2ViR0xVbnNpZ25lZEJ5dGVBcnJheToKICAgICAgICAgcmV0dXJuIHRvVjgoaW5mby5n
ZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5KCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlw
ZVdlYkdMVW5zaWduZWRJbnRBcnJheToKKyAgICAgICAgcmV0dXJuIHRvVjgoaW5mby5nZXRXZWJH
TFVuc2lnbmVkSW50QXJyYXkoKSk7CiAgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUzoKICAgICAgICAgcmV0dXJuIHRvVjgoaW5mby5nZXRXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTKCkpOwogICAgIGRlZmF1bHQ6CkBAIC0xOTMsOSArMTk1LDkgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4T2JqZWN0KFdlYkdMRXh0ZW5zaW9uKiBl
eHRlbnNpb24sIHY4OjpIYW5kbGU8djgKICAgICAgICAgZXh0ZW5zaW9uT2JqZWN0ID0gdG9WOChz
dGF0aWNfY2FzdDxXZWJHTERlYnVnU2hhZGVycyo+KGV4dGVuc2lvbikpOwogICAgICAgICByZWZl
cmVuY2VOYW1lID0gIndlYkdMRGVidWdTaGFkZXJzTmFtZSI7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgV2ViR0xFeHRlbnNpb246OldlYktpdFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzTmFtZToK
LSAgICAgICAgZXh0ZW5zaW9uT2JqZWN0ID0gdG9WOChzdGF0aWNfY2FzdDxXZWJHTENvbXByZXNz
ZWRUZXh0dXJlcyo+KGV4dGVuc2lvbikpOwotICAgICAgICByZWZlcmVuY2VOYW1lID0gIndlYktp
dFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzTmFtZSI7CisgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6
V2ViS2l0V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENOYW1lOgorICAgICAgICBleHRlbnNpb25P
YmplY3QgPSB0b1Y4KHN0YXRpY19jYXN0PFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKj4oZXh0
ZW5zaW9uKSk7CisgICAgICAgIHJlZmVyZW5jZU5hbWUgPSAid2ViS2l0V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVENOYW1lIjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVCghZXh0
ZW5zaW9uT2JqZWN0LklzRW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDIz
NTdlZjM1MWRhMDg3MWMxMTc5MDg0MWEzOTNiODUwZjA5ZTk2NQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNw
cApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFdFQkdMKQorCisjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCIKKwor
I2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4
dC5oIgorCisjaW5jbHVkZSA8d3RmL0ludDMyQXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvT3duQXJy
YXlQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0KQorICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKK3sKKyAgICBjb250ZXh0LT5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1Mz
VENfRFhUMV9FWFQpOworICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4
dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQpOworICAgIGNvbnRleHQt
PmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUM19FWFQpOworICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOworfQorCitXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQzo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKCkKK3sK
K30KKworV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEM6OmdldE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBXZWJLaXRXZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQ05hbWU7Cit9CisKK1Bhc3NPd25QdHI8V2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEM+IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdD
b250ZXh0KiBjb250ZXh0KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEMoY29udGV4dCkpOworfQorCitib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQoreworICAg
IEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCkt
PmdldEV4dGVuc2lvbnMoKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKQorICAgICAgICB8fCAoZXh0ZW5zaW9ucy0+c3Vw
cG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKQorICAgICAgICAgICAgJiYg
ZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX3RleHR1cmVfY29tcHJlc3Npb25fZHh0
MyIpCisgICAgICAgICAgICAmJiBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fdGV4
dHVyZV9jb21wcmVzc2lvbl9keHQ1IikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzI0MmNi
ODM2MTA4YzcyMTNjODllZWIyOGNlYmY0NDBiMDRlYzRmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaApAQCAt
MCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ19o
CisjZGVmaW5lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDX2gKKworI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKKyNpbmNsdWRlICJXZWJHTEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViR0xUZXh0dXJl
OworCitjbGFzcyBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyA6IHB1YmxpYyBXZWJHTEV4dGVu
c2lvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEM+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKKworICAgIHN0YXRpYyBi
b29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKKworICAgIHZpcnR1YWwgfldl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKCk7CisgICAgdmlydHVhbCBFeHRlbnNpb25OYW1lIGdl
dE5hbWUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
QyhXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZmRlNWJiYTkwODYyZDIwZDZkNmRjNGY3ZTk1YjExYzhiMTllNWZiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEMuaWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgaHRtbCB7
CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCisgICAgICAgIEpT
R2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsQ29udGV4dCwKKyAgICAgICAgT21pdENvbnN0cnVjdG9y
LAorICAgICAgICBEb05vdENoZWNrQ29uc3RhbnRzCisgICAgXSBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQyB7CisgICAgICAgIC8qIENvbXByZXNzZWQgVGV4dHVyZSBGb3JtYXRzICovCisgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUICAgICAg
ICA9IDB4ODNGMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENPTVBSRVNTRURfUkdCQV9T
M1RDX0RYVDFfRVhUICAgICAgID0gMHg4M0YxOworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQg
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgICAgICAgPSAweDgzRjI7CisgICAgICAgIGNv
bnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCAgICAgICA9IDB4
ODNGMzsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxNTE5ODBjYWExOGIyODc4OWU2MDBlOTEwNDRkYzdkN2IyYzljZDJlLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQkdMKQot
Ci0jaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCIKLQotI2luY2x1ZGUgIkV4dGVu
c2lvbnMzRC5oIgotI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgotCi0jaW5jbHVk
ZSA8d3RmL0ludDMyQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1XZWJHTENvbXByZXNzZWRUZXh0dXJlczo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQotICAgIDogV2ViR0xF
eHRlbnNpb24oY29udGV4dCkKLSAgICAsIG1fc3VwcG9ydHNEeHQxKGZhbHNlKQotICAgICwgbV9z
dXBwb3J0c0R4dDUoZmFsc2UpCi0gICAgLCBtX3N1cHBvcnRzRXRjMShmYWxzZSkKLSAgICAsIG1f
c3VwcG9ydHNQdnJ0YyhmYWxzZSkKLXsKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBj
b250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgaWYgKGV4
dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIikpIHsK
LSAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fZHh0MSIpOwotICAgICAgICBtX3N1cHBvcnRzRHh0MSA9IHRydWU7Ci0gICAgfQotICAg
IGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0
YyIpKSB7Ci0gICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX3MzdGMiKTsKLSAgICAgICAgbV9zdXBwb3J0c0R4dDEgPSB0cnVlOwotICAg
ICAgICBtX3N1cHBvcnRzRHh0NSA9IHRydWU7Ci0gICAgfQotICAgIGlmIChleHRlbnNpb25zLT5z
dXBwb3J0cygiR0xfQ0hST01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1IikpIHsKLSAgICAg
ICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fdGV4dHVyZV9jb21wcmVz
c2lvbl9keHQ1Iik7Ci0gICAgICAgIG1fc3VwcG9ydHNEeHQ1ID0gdHJ1ZTsKLSAgICB9Ci0gICAg
aWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4
dHVyZSIpKSB7Ci0gICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX09FU19jb21w
cmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIik7Ci0gICAgICAgIG1fc3VwcG9ydHNFdGMxID0gdHJ1
ZTsKLSAgICB9Ci0gICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9JTUdfdGV4dHVyZV9j
b21wcmVzc2lvbl9wdnJ0YyIpKSB7Ci0gICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQo
IkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIik7Ci0gICAgICAgIG1fc3VwcG9ydHNQ
dnJ0YyA9IHRydWU7Ci0gICAgfQotCi0gICAgaWYgKG1fc3VwcG9ydHNEeHQxKSB7Ci0gICAgICAg
IG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFf
RVhUKTsKLSAgICAgICAgbV9mb3JtYXRzLmFwcGVuZChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDFfRVhUKTsKLSAgICB9Ci0KLSAgICBpZiAobV9zdXBwb3J0c0R4dDUpCi0g
ICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQ1X0VYVCk7Ci0KLSAgICBpZiAobV9zdXBwb3J0c0V0YzEpCi0gICAgICAgIG1fZm9ybWF0
cy5hcHBlbmQoRXh0ZW5zaW9uczNEOjpFVEMxX1JHQjhfT0VTKTsKLQotICAgIGlmIChtX3N1cHBv
cnRzUHZydGMpIHsKLSAgICAgICAgbV9mb3JtYXRzLmFwcGVuZChFeHRlbnNpb25zM0Q6OkNPTVBS
RVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcpOwotICAgICAgICBtX2Zvcm1hdHMuYXBwZW5kKEV4
dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcpOwotICAgIH0KLX0K
LQotV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6On5XZWJHTENvbXByZXNzZWRUZXh0dXJlcygpCi17
Ci19Ci0KLVdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVzOjpnZXROYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViS2l0V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZXNOYW1lOwotfQotCi1QYXNzT3duUHRyPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzPiBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlczo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29u
dGV4dCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVz
KGNvbnRleHQpKTsKLX0KLQotYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlczo6c3VwcG9ydGVk
KFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKLXsKLSAgICBFeHRlbnNpb25zM0QqIGV4
dGVuc2lvbnMgPSBjb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7
Ci0gICAgcmV0dXJuIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVz
c2lvbl9keHQxIikKLSAgICAgICAgfHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX3MzdGMiKQotICAgICAgICB8fCBleHRlbnNpb25zLT5zdXBwb3J0cygi
R0xfQ0hST01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1IikKLSAgICAgICAgfHwgZXh0ZW5z
aW9ucy0+c3VwcG9ydHMoIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIikKLSAg
ICAgICAgfHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9u
X3B2cnRjIik7Ci19Ci0KLWJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6OnZhbGlkYXRlQ29t
cHJlc3NlZFRleEZvcm1hdChHQzNEZW51bSBmb3JtYXQpCi17Ci0gICAgc3dpdGNoIChmb3JtYXQp
IHsKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoK
LSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0g
ICAgICAgIHJldHVybiBtX3N1cHBvcnRzRHh0MTsKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6RVRD
MV9SR0I4X09FUzoKLSAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNFdGMxOwotICAgIGNhc2UgRXh0
ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKLSAgICAgICAgcmV0dXJu
IG1fc3VwcG9ydHNEeHQ1OwotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9Q
VlJUQ180QlBQVjFfSU1HOgotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFf
UFZSVENfNEJQUFYxX0lNRzoKLSAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNQdnJ0YzsKLSAgICB9
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOjp2
YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQs
IEFycmF5QnVmZmVyVmlldyogcGl4ZWxzKQotewotICAgIGlmICghcGl4ZWxzKSB7Ci0gICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
VkFMVUUsIGZ1bmN0aW9uTmFtZSwgIm5vIHBpeGVscyIpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkgewotICAgICAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVF
LCBmdW5jdGlvbk5hbWUsICJ3aWR0aCBvciBoZWlnaHQgPCAwIik7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBpbnQgYnl0ZXNSZXF1aXJlZCA9IDA7Ci0KLSAg
ICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JH
Ql9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6RVRDMV9SR0I4X09FUzoKLSAg
ICAgICAgewotICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gNDsKLSAgICAgICAg
ICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OwotICAgICAgICAgICAgY29uc3QgaW50IGtC
bG9ja1NpemUgPSA4OwotICAgICAgICAgICAgaW50IG51bUJsb2Nrc0Fjcm9zcyA9ICh3aWR0aCAr
IGtCbG9ja1dpZHRoIC0gMSkgLyBrQmxvY2tXaWR0aDsKLSAgICAgICAgICAgIGludCBudW1CbG9j
a3NEb3duID0gKGhlaWdodCArIGtCbG9ja0hlaWdodCAtIDEpIC8ga0Jsb2NrSGVpZ2h0OwotICAg
ICAgICAgICAgaW50IG51bUJsb2NrcyA9IG51bUJsb2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd247
Ci0gICAgICAgICAgICBieXRlc1JlcXVpcmVkID0gbnVtQmxvY2tzICoga0Jsb2NrU2l6ZTsKLSAg
ICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUNV9FWFQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGludCBr
QmxvY2tXaWR0aCA9IDQ7Ci0gICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsK
LSAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7Ci0gICAgICAgICAgICBpbnQg
bnVtQmxvY2tzQWNyb3NzID0gKHdpZHRoICsga0Jsb2NrV2lkdGggLSAxKSAvIGtCbG9ja1dpZHRo
OwotICAgICAgICAgICAgaW50IG51bUJsb2Nrc0Rvd24gPSAoaGVpZ2h0ICsga0Jsb2NrSGVpZ2h0
IC0gMSkgLyBrQmxvY2tIZWlnaHQ7Ci0gICAgICAgICAgICBpbnQgbnVtQmxvY2tzID0gbnVtQmxv
Y2tzQWNyb3NzICogbnVtQmxvY2tzRG93bjsKLSAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBu
dW1CbG9ja3MgKiBrQmxvY2tTaXplOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgotICAgIGNh
c2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKLSAgICAg
ICAgewotICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IChzdGQ6Om1heCh3aWR0aCwgOCkgKiBz
dGQ6Om1heChoZWlnaHQsIDgpICsgNykgLyA4OwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBmb3JtYXQi
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChwaXhlbHMtPmJ5dGVM
ZW5ndGgoKSAhPSBieXRlc1JlcXVpcmVkKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwg
Imxlbmd0aCBvZiBBcnJheUJ1ZmZlclZpZXcgaXMgbm90IGNvcnJlY3QgZm9yIGRpbWVuc2lvbnMi
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQot
Ci1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJE
aW1lbnNpb25zKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0
LCBHQzNEaW50IHlvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBXZWJHTFRleHR1cmUqIHRleCkKLXsK
LSAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VE
X1JHQl9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQxX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUNV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkVUQzFfUkdCOF9PRVM6Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDQ7Ci0gICAgICAg
ICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKLSAgICAgICAgICAgIGlmICgoeG9mZnNl
dCAlIGtCbG9ja1dpZHRoKSB8fCAoeW9mZnNldCAlIGtCbG9ja0hlaWdodCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCF4b2Zmc2V0KSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHdpZHRoICE9IHRleC0+Z2V0V2lkdGgodGFyZ2V0LCBsZXZlbCkpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHdpZHRoICUga0Jsb2NrV2lkdGgpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgheW9mZnNldCkg
ewotICAgICAgICAgICAgICAgIGlmIChoZWlnaHQgIT0gdGV4LT5nZXRIZWlnaHQodGFyZ2V0LCBs
ZXZlbCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGhlaWdodCAlIGtCbG9ja0hlaWdodCkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NF
RF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NF
RF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh4b2Zm
c2V0IHx8IHlvZmZzZXQKLSAgICAgICAgICAgICAgICB8fCB3aWR0aCAhPSB0ZXgtPmdldFdpZHRo
KHRhcmdldCwgbGV2ZWwpIHx8IGhlaWdodCAhPSB0ZXgtPmdldEhlaWdodCh0YXJnZXQsIGxldmVs
KSkgewotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotdm9pZCBXZWJHTENvbXByZXNzZWRUZXh0dXJlczo6Y29tcHJlc3NlZFRleEltYWdlMkQo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0MzRHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIs
IEFycmF5QnVmZmVyVmlldyogZGF0YSkKLXsKLSAgICBpZiAobV9jb250ZXh0LT5pc0NvbnRleHRM
b3N0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleEZv
cm1hdChpbnRlcm5hbGZvcm1hdCkpIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCAiY29tcHJlc3NlZFRleEltYWdl
MkQiLCAiaW52YWxpZCBpbnRlcm5hbGZvcm1hdCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGlmIChib3JkZXIpIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImNvbXByZXNzZWRUZXhJbWFnZTJEIiwg
ImJvcmRlciBub3QgMCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghdmFsaWRh
dGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgd2lkdGgsIGhl
aWdodCwgaW50ZXJuYWxmb3JtYXQsIGRhdGEpKQotICAgICAgICByZXR1cm47Ci0gICAgV2ViR0xU
ZXh0dXJlKiB0ZXggPSBtX2NvbnRleHQtPnZhbGlkYXRlVGV4dHVyZUJpbmRpbmcoImNvbXByZXNz
ZWRUZXhJbWFnZTJEIiwgdGFyZ2V0LCB0cnVlKTsKLSAgICBpZiAoIXRleCkKLSAgICAgICAgcmV0
dXJuOwotICAgIGlmICghbV9jb250ZXh0LT5pc0dMRVMyTlBPVFN0cmljdCgpKSB7Ci0gICAgICAg
IGlmIChsZXZlbCAmJiBXZWJHTFRleHR1cmU6OmlzTlBPVCh3aWR0aCwgaGVpZ2h0KSkgewotICAg
ICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9WQUxVRSwgImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgImxldmVsID4gMCBub3QgcG93
ZXIgb2YgMiIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotICAgIG1f
Y29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIsIGRhdGEtPmJ5
dGVMZW5ndGgoKSwgZGF0YS0+YmFzZUFkZHJlc3MoKSk7Ci0gICAgdGV4LT5zZXRMZXZlbEluZm8o
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpVTlNJR05FRF9CWVRFKTsKLSAgICBtX2NvbnRleHQtPmNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7Ci19Ci0KLXZvaWQgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6OmNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGlu
dCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3KiBkYXRhKQot
ewotICAgIGlmIChtX2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KGZvcm1hdCkpIHsKLSAgICAgICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9F
TlVNLCAiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCAiaW52YWxpZCBmb3JtYXQiKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRh
KCJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YSkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFdlYkdMVGV4dHVyZSogdGV4ID0gbV9jb250ZXh0LT52
YWxpZGF0ZVRleHR1cmVCaW5kaW5nKCJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIsIHRhcmdldCwg
dHJ1ZSk7Ci0gICAgaWYgKCF0ZXgpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChmb3JtYXQg
IT0gdGV4LT5nZXRJbnRlcm5hbEZvcm1hdCh0YXJnZXQsIGxldmVsKSkgewotICAgICAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVF
LCAiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCAiZm9ybWF0IGRvZXMgbm90IG1hdGNoIHRleHR1
cmUgZm9ybWF0Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXZhbGlkYXRl
Q29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnModGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0ZXgpKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCAiY29t
cHJlc3NlZFRleFN1YkltYWdlMkQiLCAiZGltZW5zaW9ucyBpbnZhbGlkIGZvciBmb3JtYXQiKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0
M0QoKS0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YS0+Ynl0ZUxlbmd0aCgpLCBkYXRh
LT5iYXNlQWRkcmVzcygpKTsKLSAgICBtX2NvbnRleHQtPmNsZWFudXBBZnRlckdyYXBoaWNzQ2Fs
bChmYWxzZSk7Ci19Ci0KLVdlYkdMR2V0SW5mbyBXZWJHTENvbXByZXNzZWRUZXh0dXJlczo6Z2V0
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXRzKCkKLXsKLSAgICByZXR1cm4gV2ViR0xHZXRJbmZvKElu
dDMyQXJyYXk6OmNyZWF0ZSgmbV9mb3JtYXRzWzBdLCBtX2Zvcm1hdHMuc2l6ZSgpKSk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MmI3MWMyMTM3ZmNjNTkwNTJjZTQ1Zjg0
NjJlYzg0NTg4OTdmNzY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVz
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJHTENv
bXByZXNzZWRUZXh0dXJlc19oCi0jZGVmaW5lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzX2gKLQot
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJXZWJHTEV4dGVuc2lvbi5oIgot
I2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlclZpZXcuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkdMVGV4dHVyZTsKLQotY2xh
c3MgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewotcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzPiBjcmVh
dGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7Ci0KLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQo
V2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7Ci0KLSAgICB2aXJ0dWFsIH5XZWJHTENvbXByZXNzZWRU
ZXh0dXJlcygpOwotICAgIHZpcnR1YWwgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Q7Ci0K
LSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBB
cnJheUJ1ZmZlclZpZXcqIGRhdGEpOwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQg
eW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0
aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcqIGRh
dGEpOwotCi0gICAgV2ViR0xHZXRJbmZvIGdldENvbXByZXNzZWRUZXh0dXJlRm9ybWF0cygpOwot
Ci1wcml2YXRlOgotICAgIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCopOwotCi0gICAgYm9vbCB2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyogcGl4
ZWxzKTsKLQotICAgIGJvb2wgdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KEdDM0RlbnVtIGZv
cm1hdCk7Ci0KLSAgICBib29sIHZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9m
ZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNp
emVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIFdlYkdMVGV4dHVy
ZSopOwotCi0gICAgYm9vbCBtX3N1cHBvcnRzRHh0MTsKLSAgICBib29sIG1fc3VwcG9ydHNEeHQ1
OwotICAgIGJvb2wgbV9zdXBwb3J0c0V0YzE7Ci0gICAgYm9vbCBtX3N1cHBvcnRzUHZydGM7Ci0K
LSAgICBWZWN0b3I8aW50PiBtX2Zvcm1hdHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBXZWJHTENvbXByZXNzZWRUZXh0dXJlc19oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5pZGwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwOGI2MGEzZmI5YTZlNGRmNmYzMDhhMjU3Yjk3NjQ5
MTljNDdiMzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaWRsCisr
KyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLW1vZHVsZSBodG1sIHsKLSAgICBp
bnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1XRUJHTCwKLSAgICAgICAgSlNHZW5lcmF0
ZUlzUmVhY2hhYmxlPUltcGxDb250ZXh0LAotICAgICAgICBPbWl0Q29uc3RydWN0b3IsCi0gICAg
ICAgIERvTm90Q2hlY2tDb25zdGFudHMKLSAgICBdIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzIHsK
LSAgICAgICAgLyogQ29tcHJlc3NlZCBUZXh0dXJlIEZvcm1hdHMgKi8KLSAgICAgICAgY29uc3Qg
dW5zaWduZWQgaW50IENPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgICAgICAgID0gMHg4M0Yw
OwotICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9F
WFQgICAgICAgPSAweDgzRjE7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQ1X0VYVCAgICAgICA9IDB4ODNGMzsKLSAgICAgICAgY29uc3QgdW5zaWdu
ZWQgaW50IEVUQzFfUkdCOF9PRVMgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RDY0OwotICAg
ICAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyAg
ICAgPSAweDhDMDA7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQkFf
UFZSVENfNEJQUFYxX0lNRyAgICA9IDB4OEMwMjsKLQotICAgICAgICBbU3RyaWN0VHlwZUNoZWNr
aW5nXSB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBp
biBsb25nIGxldmVsLCBpbiB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGxvbmcgd2lk
dGgsIGluIGxvbmcgaGVpZ2h0LCBpbiBsb25nIGJvcmRlciwgaW4gQXJyYXlCdWZmZXJWaWV3IGRh
dGEpOwotICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIGNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiBsb25nIGxldmVsLCBpbiBsb25nIHhv
ZmZzZXQsIGluIGxvbmcgeW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBsb25nIHdpZHRoLCBpbiBsb25nIGhlaWdodCwg
aW4gdW5zaWduZWQgbG9uZyBmb3JtYXQsIGluIEFycmF5QnVmZmVyVmlldyBkYXRhKTsKLSAgICB9
OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKaW5kZXgg
NGZmOTY5MDg2ZDI5MWIxNzc1MzA4ZGRiZDMxYTJlMjE4OTk3YjJjOC4uZmY0ODJmYWNkOGYxNTJj
NzIyMWFiZjNiYWIxNjQwYzA5ZDljZjVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTEV4dGVuc2lvbi5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgT0VT
VmVydGV4QXJyYXlPYmplY3ROYW1lLAogICAgICAgICBXZWJHTERlYnVnUmVuZGVyZXJJbmZvTmFt
ZSwKICAgICAgICAgV2ViR0xEZWJ1Z1NoYWRlcnNOYW1lLAotICAgICAgICBXZWJLaXRXZWJHTENv
bXByZXNzZWRUZXh0dXJlc05hbWUsIC8vIFdFQktJVF8gcHJlZml4IHVudGlsIGV4dGVuc2lvbiBp
cyBvZmZpY2lhbAorICAgICAgICBXZWJLaXRXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ05hbWUs
IC8vIFdFQktJVF8gcHJlZml4IHVudGlsIGV4dGVuc2lvbiBpcyBvZmZpY2lhbAogICAgIH07CiAK
ICAgICB2b2lkIHJlZigpIHsgbV9jb250ZXh0LT5yZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHAKaW5kZXggODdiZWM3OTE5OGNmZjgzYWI2NzRiNGFm
MTgxNmE4MWFhM2E1NDMyYy4uZjcxNjZjNDE5MzJkYzM0NzZkOGI1YzJlMTFhM2VjNDJlNDQyNWIx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwCkBAIC0z
OCw2ICszOCw3IEBACiAjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgogI2lu
Y2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvSW50MzJBcnJheS5oPgor
I2luY2x1ZGUgPHd0Zi9VaW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5MSw2ICsxOTIsMTYgQEAgV2ViR0xHZXRJbmZv
OjpXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxVaW50OEFycmF5PiB2YWx1ZSkKIHsKIH0KIAorV2Vi
R0xHZXRJbmZvOjpXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gdmFsdWUpCisg
ICAgOiBtX3R5cGUoa1R5cGVXZWJHTFVuc2lnbmVkSW50QXJyYXkpCisgICAgLCBtX2Jvb2woZmFs
c2UpCisgICAgLCBtX2Zsb2F0KDApCisgICAgLCBtX2ludCgwKQorICAgICwgbV91bnNpZ25lZElu
dCgwKQorICAgICwgbV93ZWJnbFVuc2lnbmVkSW50QXJyYXkodmFsdWUpCit7Cit9CisKIFdlYkdM
R2V0SW5mbzo6V2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
Uz4gdmFsdWUpCiAgICAgOiBtX3R5cGUoa1R5cGVXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKQog
ICAgICwgbV9ib29sKGZhbHNlKQpAQCAtMjk0LDYgKzMwNSwxMiBAQCBQYXNzUmVmUHRyPFVpbnQ4
QXJyYXk+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fd2ViZ2xVbnNpZ25lZEJ5dGVBcnJheTsKIH0KIAorUGFzc1JlZlB0cjxVaW50
MzJBcnJheT4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTFVuc2lnbmVkSW50QXJyYXkoKSBjb25zdAor
eworICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVXZWJHTFVuc2lnbmVkSW50QXJyYXkpOwor
ICAgIHJldHVybiBtX3dlYmdsVW5zaWduZWRJbnRBcnJheTsKK30KKwogUGFzc1JlZlB0cjxXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTPiBXZWJHTEdldEluZm86OmdldFdlYkdMVmVydGV4QXJyYXlP
YmplY3RPRVMoKSBjb25zdAogewogICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMR2V0SW5mby5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJ
bmZvLmgKaW5kZXggZjc0N2EwOTAyYWRkNzBhNmU2ZGIyZDQyZTM5NWJkNjQ5MzMwODA1Yi4uZDFm
NzNhNjU2ZjUwOTBlODQ4Y2ZkMTE5ZGJkMWRmOTQwNTc1ZTQzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDx3
dGYvSW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VaW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0
Zi9VaW50OEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY3LDYgKzY4LDcgQEAg
cHVibGljOgogICAgICAgICBrVHlwZVdlYkdMUmVuZGVyYnVmZmVyLAogICAgICAgICBrVHlwZVdl
YkdMVGV4dHVyZSwKICAgICAgICAga1R5cGVXZWJHTFVuc2lnbmVkQnl0ZUFycmF5LAorICAgICAg
ICBrVHlwZVdlYkdMVW5zaWduZWRJbnRBcnJheSwKICAgICAgICAga1R5cGVXZWJHTFZlcnRleEFy
cmF5T2JqZWN0T0VTLAogICAgIH07CiAKQEAgLTg4LDYgKzkwLDcgQEAgcHVibGljOgogICAgIGV4
cGxpY2l0IFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiB2YWx1ZSk7
CiAgICAgZXhwbGljaXQgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPiB2YWx1
ZSk7CiAgICAgZXhwbGljaXQgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8VWludDhBcnJheT4gdmFs
dWUpOworICAgIGV4cGxpY2l0IFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiB2
YWx1ZSk7CiAgICAgZXhwbGljaXQgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUz4gdmFsdWUpOwogCiAgICAgdmlydHVhbCB+V2ViR0xHZXRJbmZvKCk7CkBA
IC0xMTAsNiArMTEzLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZm
ZXI+IGdldFdlYkdMUmVuZGVyYnVmZmVyKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxXZWJHTFRl
eHR1cmU+IGdldFdlYkdMVGV4dHVyZSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8VWludDhBcnJh
eT4gZ2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8VWlu
dDMyQXJyYXk+IGdldFdlYkdMVW5zaWduZWRJbnRBcnJheSgpIGNvbnN0OwogICAgIFBhc3NSZWZQ
dHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gZ2V0V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
UygpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMTMwLDYgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBtX3dlYmdsUmVuZGVyYnVmZmVyOwogICAgIFJlZlB0
cjxXZWJHTFRleHR1cmU+IG1fd2ViZ2xUZXh0dXJlOwogICAgIFJlZlB0cjxVaW50OEFycmF5PiBt
X3dlYmdsVW5zaWduZWRCeXRlQXJyYXk7CisgICAgUmVmUHRyPFVpbnQzMkFycmF5PiBtX3dlYmds
VW5zaWduZWRJbnRBcnJheTsKICAgICBSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4g
bV93ZWJnbFZlcnRleEFycmF5T2JqZWN0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xPYmplY3QuY3BwCmluZGV4IDE5Mjg1MmM3NTViNGJhYTgwY2FhOTE1YjQ2MjlkNDkz
ZGI5NjZjODAuLjZkN2I5ZDhjZjE2ZTAzZjk5ZjA2MDg4ZDI0YzIxNTFiZDI5Mjg4NTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKQEAgLTMyLDcgKzMyLDcg
QEAKICNpbmNsdWRlICJPRVNTdGFuZGFyZERlcml2YXRpdmVzLmgiCiAjaW5jbHVkZSAiT0VTVGV4
dHVyZUZsb2F0LmgiCiAjaW5jbHVkZSAiT0VTVmVydGV4QXJyYXlPYmplY3QuaCIKLSNpbmNsdWRl
ICJXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oIgorI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmgiCiAjaW5jbHVkZSAiV2ViR0xDb250ZXh0R3JvdXAuaCIKICNpbmNsdWRlICJX
ZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1NoYWRlcnMuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCmluZGV4IDYxOGI5MmQzNjg1MmFkMThjY2NjNWFhNmVhNmZlN2E4ZTVmNDg0MGUuLjZm
MTUxMzY1ZDc1ODc5YTQyYWMyYjA1M2U1ZTZjMTkzMGYxZDdjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNTQs
NyArNTQsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViR0xBY3RpdmVJ
bmZvLmgiCiAjaW5jbHVkZSAiV2ViR0xCdWZmZXIuaCIKLSNpbmNsdWRlICJXZWJHTENvbXByZXNz
ZWRUZXh0dXJlcy5oIgorI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgiCiAj
aW5jbHVkZSAiV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIldlYkdMQ29udGV4
dEV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViR0xDb250ZXh0R3JvdXAuaCIKQEAgLTcyLDYgKzcyLDcg
QEAKICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093bkFy
cmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1VpbnQxNkFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1Vp
bnQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYg
UExBVEZPUk0oUVQpCkBAIC01NDEsNiArNTQyLDEyIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjphbGxvd1ByaXZpbGVnZWRFeHRlbnNpb25zKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjphZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChHQzNEZW51bSBmb3JtYXQpCit7CisgICAgaWYgKCFtX2NvbXByZXNzZWRUZXh0dXJlRm9y
bWF0cy5jb250YWlucyhmb3JtYXQpKQorICAgICAgICBtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0
cy5hcHBlbmQoZm9ybWF0KTsKK30KKwogV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp+V2ViR0xSZW5k
ZXJpbmdDb250ZXh0KCkKIHsKICAgICAvLyBSZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8gV2ViR0xP
YmplY3RzIHNvIGlmIHRoZXkgYXJlIHRoZSBsYXN0IHJlZmVyZW5jZQpAQCAtMTIxMiwyNCArMTIx
OSw3MSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29tcGlsZVNoYWRlcihXZWJHTFNo
YWRlciogc2hhZGVyLCBFeGNlcHRpb25Db2RlJiBlYwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNz
Q2FsbChmYWxzZSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2Vk
VGV4SW1hZ2UyRChHQzNEZW51bSAvKnRhcmdldCovLCBHQzNEaW50IC8qbGV2ZWwqLywgR0MzRGVu
dW0gLyppbnRlcm5hbGZvcm1hdCovLCBHQzNEc2l6ZWkgLyp3aWR0aCovLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSAvKmhlaWdodCov
LCBHQzNEaW50IC8qYm9yZGVyKi8sIEFycmF5QnVmZmVyVmlldyogLypkYXRhKi8pCit2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0Rz
aXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpCiB7CiAg
ICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOworICAgIGlmICghdmFsaWRh
dGVUZXhGdW5jTGV2ZWwoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgdGFyZ2V0LCBsZXZlbCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KGlu
dGVybmFsZm9ybWF0KSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9FTlVNLCAiY29tcHJlc3NlZFRleEltYWdlMkQiLCAiaW52YWxpZCBpbnRl
cm5hbGZvcm1hdCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChib3JkZXIpIHsK
KyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFM
VUUsICJjb21wcmVzc2VkVGV4SW1hZ2UyRCIsICJib3JkZXIgbm90IDAiKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleERpbWVuc2lvbnMoImNv
bXByZXNzZWRUZXhJbWFnZTJEIiwgbGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGludGVybmFsZm9ybWF0
KSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0Rh
dGEoImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgd2lkdGgsIGhlaWdodCwgaW50ZXJuYWxmb3JtYXQs
IGRhdGEpKQorICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMu
Ci0gICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwg
ImNvbXByZXNzZWRUZXhJbWFnZTJEIiwgImludmFsaWQgaW50ZXJuYWxmb3JtYXQiKTsKKyAgICBX
ZWJHTFRleHR1cmUqIHRleCA9IHZhbGlkYXRlVGV4dHVyZUJpbmRpbmcoImNvbXByZXNzZWRUZXhJ
bWFnZTJEIiwgdGFyZ2V0LCB0cnVlKTsKKyAgICBpZiAoIXRleCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGlmICghaXNHTEVTMk5QT1RTdHJpY3QoKSkgeworICAgICAgICBpZiAobGV2ZWwgJiYgV2Vi
R0xUZXh0dXJlOjppc05QT1Qod2lkdGgsIGhlaWdodCkpIHsKKyAgICAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiY29tcHJlc3NlZFRl
eEltYWdlMkQiLCAibGV2ZWwgPiAwIG5vdCBwb3dlciBvZiAyIik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICB9CisgICAgZ3JhcGhpY3NDb250ZXh0M0QoKS0+Y29tcHJlc3Nl
ZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLCBk
YXRhLT5ieXRlTGVuZ3RoKCksIGRhdGEtPmJhc2VBZGRyZXNzKCkpOworICAgIHRleC0+c2V0TGV2
ZWxJbmZvKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSk7CisgICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIC8qdGFyZ2V0Ki8sIEdDM0RpbnQgLypsZXZlbCovLCBHQzNE
aW50IC8qeG9mZnNldCovLCBHQzNEaW50IC8qeW9mZnNldCovLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSAvKndpZHRoKi8sIEdD
M0RzaXplaSAvKmhlaWdodCovLCBHQzNEZW51bSAvKmZvcm1hdCovLCBBcnJheUJ1ZmZlclZpZXcq
IC8qZGF0YSovKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBH
QzNEaW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBm
b3JtYXQsIEFycmF5QnVmZmVyVmlldyogZGF0YSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgp
KQogICAgICAgICByZXR1cm47CisgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmNMZXZlbCgiY29tcHJl
c3NlZFRleFN1YkltYWdlMkQiLCB0YXJnZXQsIGxldmVsKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KGZvcm1hdCkpIHsKKyAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgImNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEIiwgImludmFsaWQgZm9ybWF0Iik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaWYgKCF2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YSgiY29tcHJlc3NlZFRl
eFN1YkltYWdlMkQiLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEpKQorICAgICAgICByZXR1
cm47CisKKyAgICBXZWJHTFRleHR1cmUqIHRleCA9IHZhbGlkYXRlVGV4dHVyZUJpbmRpbmcoImNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEIiwgdGFyZ2V0LCB0cnVlKTsKKyAgICBpZiAoIXRleCkKKyAg
ICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgotICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRCIsICJpbnZhbGlkIGZvcm1hdCIpOworICAgIGlmIChmb3JtYXQgIT0gdGV4
LT5nZXRJbnRlcm5hbEZvcm1hdCh0YXJnZXQsIGxldmVsKSkgeworICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sICJjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRCIsICJmb3JtYXQgZG9lcyBub3QgbWF0Y2ggdGV4dHVyZSBmb3JtYXQiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4
U3ViRGltZW5zaW9ucygiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCB0YXJnZXQsIGxldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHRleCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGdyYXBoaWNzQ29udGV4dDNEKCktPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhLT5i
eXRlTGVuZ3RoKCksIGRhdGEtPmJhc2VBZGRyZXNzKCkpOworICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb3B5VGV4
SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFs
Zm9ybWF0LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEaW50IGJvcmRlcikKQEAgLTIxOTAsMTEgKzIyNDQsMTEgQEAgV2ViR0xFeHRl
bnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
bmFtZSkKICAgICAgICAgICAgIG1fd2ViZ2xMb3NlQ29udGV4dCA9IFdlYkdMTG9zZUNvbnRleHQ6
OmNyZWF0ZSh0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xMb3NlQ29udGV4dC5nZXQoKTsK
ICAgICB9Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJXRUJLSVRfV0VCR0xfY29t
cHJlc3NlZF90ZXh0dXJlcyIpKSB7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJX
RUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKSkgewogICAgICAgICAvLyBVc2Ug
V0VCS0lUXyBwcmVmaXggdW50aWwgZXh0ZW5zaW9uIGlzIG9mZmljaWFsLgotICAgICAgICBpZiAo
IW1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZXMpCi0gICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3Nl
ZFRleHR1cmVzID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6OmNyZWF0ZSh0aGlzKTsKLSAgICAg
ICAgcmV0dXJuIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZXMuZ2V0KCk7CisgICAgICAgIGlmICgh
bV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQykKKyAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVz
c2VkVGV4dHVyZVMzVEMgPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6Y3JlYXRlKHRoaXMp
OworICAgICAgICByZXR1cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQy5nZXQoKTsKICAg
ICB9CiAKICAgICBpZiAoYWxsb3dQcml2aWxlZ2VkRXh0ZW5zaW9ucygpKSB7CkBAIC0yMzA3LDEw
ICsyMzYxLDcgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1l
dGVyKEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OkNPTE9SX1dSSVRFTUFTSzoKICAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5BcnJheVBh
cmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09NUFJFU1NFRF9U
RVhUVVJFX0ZPUk1BVFM6Ci0gICAgICAgIGlmIChtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVzKQot
ICAgICAgICAgICAgcmV0dXJuIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZXMtPmdldENvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0cygpOwotICAgICAgICAvLyBEZWZpbmVkIGFzIG51bGwgaW4gdGhlIHNw
ZWMKLSAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOworICAgICAgICByZXR1cm4gV2ViR0xH
ZXRJbmZvKFVpbnQzMkFycmF5OjpjcmVhdGUobV9jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMuZGF0
YSgpLCBtX2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5zaXplKCkpKTsKICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpDVUxMX0ZBQ0U6CiAgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1l
dGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDVUxMX0ZBQ0VfTU9ERToK
QEAgLTIzNjUsOSArMjQxNiw2IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldFBhcmFtZXRlcihHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYKICAgICAgICAgcmV0
dXJuIGdldEludFBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
TUFYX1ZJRVdQT1JUX0RJTVM6CiAgICAgICAgIHJldHVybiBnZXRXZWJHTEludEFycmF5UGFyYW1l
dGVyKHBuYW1lKTsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpOVU1fQ09NUFJFU1NFRF9U
RVhUVVJFX0ZPUk1BVFM6Ci0gICAgICAgIC8vIFdlYkdMIDEuMCBzcGVjaWZpZXMgdGhhdCB0aGVy
ZSBhcmUgbm8gY29tcHJlc3NlZCB0ZXh0dXJlIGZvcm1hdHMuCi0gICAgICAgIHJldHVybiBXZWJH
TEdldEluZm8oc3RhdGljX2Nhc3Q8aW50PigwKSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6TlVNX1NIQURFUl9CSU5BUllfRk9STUFUUzoKICAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3
ZSBhbHdheXMgcmV0dXJuIDAgZm9yIHRoaXM/CiAgICAgICAgIHJldHVybiBnZXRJbnRQYXJhbWV0
ZXIocG5hbWUpOwpAQCAtMjY0MCw4ICsyNjg4LDggQEAgVmVjdG9yPFN0cmluZz4gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKICAgICBpZiAobV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIp
KQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpOwogICAg
IHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9sb3NlX2NvbnRleHQiKTsKLSAgICBpZiAoV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZXM6OnN1cHBvcnRlZCh0aGlzKSkKLSAgICAgICAgcmVzdWx0LmFw
cGVuZCgiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZXMiKTsKKyAgICBpZiAoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCh0aGlzKSkKKyAgICAgICAgcmVzdWx0LmFw
cGVuZCgiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIik7CiAKICAgICBpZiAo
YWxsb3dQcml2aWxlZ2VkRXh0ZW5zaW9ucygpKSB7CiAgICAgICAgIGlmIChtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJj
ZSIpKQpAQCAtNDY4NSw2ICs0NzMzLDExNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dmFsaWRhdGVUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNvbXByZXNz
ZWRUZXhGb3JtYXQoR0MzRGVudW0gZm9ybWF0KQoreworICAgIHJldHVybiBtX2NvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0cy5jb250YWlucyhmb3JtYXQpOworfQorCitib29sIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBm
b3JtYXQsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzKQoreworICAgIGlmICghcGl4ZWxzKSB7Cisg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVF
LCBmdW5jdGlvbk5hbWUsICJubyBwaXhlbHMiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDApIHsKKyAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwg
IndpZHRoIG9yIGhlaWdodCA8IDAiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIHVuc2lnbmVkIGludCBieXRlc1JlcXVpcmVkID0gMDsKKworICAgIHN3aXRjaCAoZm9ybWF0
KSB7CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6
CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgor
ICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OworICAgICAg
ICAgICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7CisgICAgICAgICAgICBjb25zdCBpbnQg
a0Jsb2NrU2l6ZSA9IDg7CisgICAgICAgICAgICBpbnQgbnVtQmxvY2tzQWNyb3NzID0gKHdpZHRo
ICsga0Jsb2NrV2lkdGggLSAxKSAvIGtCbG9ja1dpZHRoOworICAgICAgICAgICAgaW50IG51bUJs
b2Nrc0Rvd24gPSAoaGVpZ2h0ICsga0Jsb2NrSGVpZ2h0IC0gMSkgLyBrQmxvY2tIZWlnaHQ7Cisg
ICAgICAgICAgICBpbnQgbnVtQmxvY2tzID0gbnVtQmxvY2tzQWNyb3NzICogbnVtQmxvY2tzRG93
bjsKKyAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9ja3MgKiBrQmxvY2tTaXplOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBr
QmxvY2tXaWR0aCA9IDQ7CisgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsK
KyAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7CisgICAgICAgICAgICBpbnQg
bnVtQmxvY2tzQWNyb3NzID0gKHdpZHRoICsga0Jsb2NrV2lkdGggLSAxKSAvIGtCbG9ja1dpZHRo
OworICAgICAgICAgICAgaW50IG51bUJsb2Nrc0Rvd24gPSAoaGVpZ2h0ICsga0Jsb2NrSGVpZ2h0
IC0gMSkgLyBrQmxvY2tIZWlnaHQ7CisgICAgICAgICAgICBpbnQgbnVtQmxvY2tzID0gbnVtQmxv
Y2tzQWNyb3NzICogbnVtQmxvY2tzRG93bjsKKyAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBu
dW1CbG9ja3MgKiBrQmxvY2tTaXplOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgZm9ybWF0Iik7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAocGl4ZWxzLT5ieXRlTGVuZ3RoKCkgIT0gYnl0ZXNS
ZXF1aXJlZCkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAibGVuZ3RoIG9mIEFycmF5QnVmZmVyVmlldyBp
cyBub3QgY29ycmVjdCBmb3IgZGltZW5zaW9ucyIpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp2YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1lbnNpb25zKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSwgR0MzRGludCBsZXZlbCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNE
ZW51bSBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIEV4dGVuc2lv
bnMzRDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMz
RDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6
OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpD
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDogeworICAgICAgICBjb25zdCBpbnQga0Jsb2Nr
V2lkdGggPSA0OworICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKKyAgICAgICAg
Ym9vbCB3aWR0aFZhbGlkID0gKGxldmVsICYmIHdpZHRoID09IDEpIHx8IChsZXZlbCAmJiB3aWR0
aCA9PSAyKSB8fCAhKHdpZHRoICUga0Jsb2NrV2lkdGgpOworICAgICAgICBib29sIGhlaWdodFZh
bGlkID0gKGxldmVsICYmIGhlaWdodCA9PSAxKSB8fCAobGV2ZWwgJiYgaGVpZ2h0ID09IDIpIHx8
ICEoaGVpZ2h0ICUga0Jsb2NrSGVpZ2h0KTsKKyAgICAgICAgaWYgKCF3aWR0aFZhbGlkIHx8ICFo
ZWlnaHRWYWxpZCkgeworICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAid2lkdGggb3IgaGVpZ2h0IGlu
dmFsaWQgZm9yIGxldmVsIik7CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorfQorCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVD
b21wcmVzc2VkVGV4U3ViRGltZW5zaW9ucyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZz
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZv
cm1hdCwgV2ViR0xUZXh0dXJlKiB0ZXgpCit7CisgICAgaWYgKHhvZmZzZXQgPCAwIHx8IHlvZmZz
ZXQgPCAwKSB7CisgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAieG9mZnNldCBvciB5b2Zmc2V0IDwgMCIpOworICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgY2Fz
ZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBF
eHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgRXh0
ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKKyAgICBjYXNlIEV4dGVu
c2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6IHsKKyAgICAgICAgY29uc3Qg
aW50IGtCbG9ja1dpZHRoID0gNDsKKyAgICAgICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7
CisgICAgICAgIGlmICgoeG9mZnNldCAlIGtCbG9ja1dpZHRoKSB8fCAoeW9mZnNldCAlIGtCbG9j
a0hlaWdodCkpIHsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAieG9mZnNldCBvciB5b2Zmc2V0
IG5vdCBtdWx0aXBsZSBvZiA0Iik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHdpZHRoIC0geG9mZnNldCA+IHRleC0+Z2V0V2lkdGgodGFyZ2V0LCBs
ZXZlbCkKKyAgICAgICAgICAgIHx8IGhlaWdodCAtIHlvZmZzZXQgPiB0ZXgtPmdldEhlaWdodCh0
YXJnZXQsIGxldmVsKSkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJkaW1lbnNpb25zIG91
dCBvZiByYW5nZSIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiB2YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1lbnNpb25zKGZ1bmN0aW9uTmFtZSwg
bGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCk7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp2YWxpZGF0ZURyYXdNb2RlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gbW9k
ZSkKIHsKICAgICBzd2l0Y2ggKG1vZGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggYjgxYzJiMDc3ZTYxZDVmYTRmMDVh
Y2JlNzUwMjhlZDYxNGQ2OGIzMC4uMDQ0OWVhZGUxYjAwY2Q1ZDllMmNkNThhNTAzYjY1YTdkY2Q1
Y2ZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgV2ViR0xBY3RpdmVJbmZvOwogY2xh
c3MgV2ViR0xCdWZmZXI7CiBjbGFzcyBXZWJHTENvbnRleHRHcm91cDsKIGNsYXNzIFdlYkdMQ29u
dGV4dE9iamVjdDsKLWNsYXNzIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOworY2xhc3MgV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEM7CiBjbGFzcyBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOwogY2xh
c3MgV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbzsKIGNsYXNzIFdlYkdMRGVidWdTaGFkZXJzOwpAQCAt
MzIxLDcgKzMyMSw3IEBAIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgV2ViR0xPYmplY3Q7CiAg
ICAgZnJpZW5kIGNsYXNzIE9FU1ZlcnRleEFycmF5T2JqZWN0OwogICAgIGZyaWVuZCBjbGFzcyBX
ZWJHTERlYnVnU2hhZGVyczsKLSAgICBmcmllbmQgY2xhc3MgV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZXM7CisgICAgZnJpZW5kIGNsYXNzIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOwogICAgIGZy
aWVuZCBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjazsKIAog
ICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCosIFBhc3NSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+LCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyk7CkBAIC0z
NjcsNiArMzY3LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCB2YWxpZGF0ZVdlYkdMT2JqZWN0KGNv
bnN0IGNoYXIqLCBXZWJHTE9iamVjdCopOwogCisgICAgLy8gQWRkcyBhIGNvbXByZXNzZWQgdGV4
dHVyZSBmb3JtYXQuCisgICAgdm9pZCBhZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHQzNEZW51
bSk7CisKICNpZiBFTkFCTEUoVklERU8pCiAgICAgUGFzc1JlZlB0cjxJbWFnZT4gdmlkZW9GcmFt
ZVRvSW1hZ2UoSFRNTFZpZGVvRWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgpAQCAt
NDQzLDYgKzQ0Niw4IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViR0xUZXh0dXJlPiBtX2JsYWNr
VGV4dHVyZTJEOwogICAgIFJlZlB0cjxXZWJHTFRleHR1cmU+IG1fYmxhY2tUZXh0dXJlQ3ViZU1h
cDsKIAorICAgIFZlY3RvcjxHQzNEZW51bT4gbV9jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHM7CisK
ICAgICAvLyBGaXhlZC1zaXplIGNhY2hlIG9mIHJldXNhYmxlIGltYWdlIGJ1ZmZlcnMgZm9yIHZp
ZGVvIHRleEltYWdlMkQgY2FsbHMuCiAgICAgY2xhc3MgTFJVSW1hZ2VCdWZmZXJDYWNoZSB7CiAg
ICAgcHVibGljOgpAQCAtNTAwLDcgKzUwNSw3IEBAIHB1YmxpYzoKICAgICBPd25QdHI8V2ViR0xM
b3NlQ29udGV4dD4gbV93ZWJnbExvc2VDb250ZXh0OwogICAgIE93blB0cjxXZWJHTERlYnVnUmVu
ZGVyZXJJbmZvPiBtX3dlYmdsRGVidWdSZW5kZXJlckluZm87CiAgICAgT3duUHRyPFdlYkdMRGVi
dWdTaGFkZXJzPiBtX3dlYmdsRGVidWdTaGFkZXJzOwotICAgIE93blB0cjxXZWJHTENvbXByZXNz
ZWRUZXh0dXJlcz4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlczsKKyAgICBPd25QdHI8V2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEM+IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEM7CiAKICAg
ICAvLyBIZWxwZXJzIGZvciBnZXRQYXJhbWV0ZXIgYW5kIG90aGVycwogICAgIFdlYkdMR2V0SW5m
byBnZXRCb29sZWFuUGFyYW1ldGVyKEdDM0RlbnVtKTsKQEAgLTU4OCw2ICs1OTMsMjQgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0Rl
bnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5QnVmZmVyVmlldyog
cGl4ZWxzKTsKIAorICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBjb21wcmVzc2Vk
IHRleHR1cmUgZGF0YSBpcyBjb3JyZWN0IHNpemUKKyAgICAvLyBmb3IgdGhlIGdpdmVuIGZvcm1h
dCBhbmQgZGltZW5zaW9ucy4KKyAgICBib29sIHZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRh
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJW
aWV3KiBwaXhlbHMpOworCisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB2YWxpZGF0aW5nIGNv
bXByZXNzZWQgdGV4dHVyZSBmb3JtYXRzLgorICAgIGJvb2wgdmFsaWRhdGVDb21wcmVzc2VkVGV4
Rm9ybWF0KEdDM0RlbnVtIGZvcm1hdCk7CisKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFs
aWRhdGUgY29tcHJlc3NlZCB0ZXh0dXJlIGRpbWVuc2lvbnMgYXJlIHZhbGlkIGZvcgorICAgIC8v
IHRoZSBnaXZlbiBmb3JtYXQuCisgICAgYm9vbCB2YWxpZGF0ZUNvbXByZXNzZWRUZXhEaW1lbnNp
b25zKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGludCBsZXZlbCwgR0MzRHNpemVpIHdp
ZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQpOworCisgICAgLy8gSGVscGVy
IGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGNvbXByZXNzZWQgdGV4dHVyZSBkaW1lbnNpb25zIGFyZSB2
YWxpZCBmb3IKKyAgICAvLyB0aGUgZ2l2ZW4gZm9ybWF0LgorICAgIGJvb2wgdmFsaWRhdGVDb21w
cmVzc2VkVGV4U3ViRGltZW5zaW9ucyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3
aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBXZWJHTFRleHR1cmUqKTsK
KwogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBtb2RlIGZvciBkcmF3e0FycmF5
cy9FbGVtZW50c30uCiAgICAgYm9vbCB2YWxpZGF0ZURyYXdNb2RlKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSwgR0MzRGVudW0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAppbmRleCA0ZDk5MmMxZTUxODcwZDRjZDVhYTY4
OWM0MTQwODYyZTY1ZmU1OTI2Li42ZGI4MTFkZDhjYzMzZjM0NmU1ZjZiMDFhMDEyMmViZTYwYjMy
MDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5pZGwKQEAgLTIwNiw3ICsyMDYsNiBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAg
IC8qICAgICAgVEVYVFVSRV9XUkFQX1MgKi8KICAgICAgICAgLyogICAgICBURVhUVVJFX1dSQVBf
VCAqLwogCi0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBOVU1fQ09NUFJFU1NFRF9URVhUVVJF
X0ZPUk1BVFMgPSAweDg2QTI7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VE
X1RFWFRVUkVfRk9STUFUUyAgICAgPSAweDg2QTM7CiAKICAgICAgICAgLyogSGludE1vZGUgKi8K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1YjdkMGI0Yjk1NDZkOWVjNmE5NmEyZTE3ODZlOWQ2NjliMmVlMjE5Li44OTg5ZTIw
YzAwMDllZjJjNzg4ZjkwNGE2ODhlZmU1ZjgzOGFhNDE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDItMDYgIEdyZWdnIFRhdmFyZXMgIDxnbWFuQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBJbXBsZW1lbnQgbmV3IFdFQkdMIGNvbXByZXNzZWQgdGV4dHVyZSBleHRlbnNpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzA2NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jYW52YXMv
d2ViZ2wvY29uc3RhbnRzLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0
LWNhbGxzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQt
Y2FsbHMuaHRtbDoKKwogMjAxMi0wMi0wNyAgRXVnZW5lIEdpcmFyZCAgPGdpcmFyZEBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCIGNyZWF0ZUluZGV4IHNob3VsZCBmYWlsIGlmIG9w
dGlvbnMgYXJnIGlzIGludmFsaWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL2NvbnN0YW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29u
c3RhbnRzLmh0bWwKaW5kZXggZTkyYTMxZTljNGU1ZmFiNWRiYjc3ZTgyMzk5MThkYzI0MGNhYjQ3
NS4uZjM2YzViZmNjMWU0ZDAxMzYzMmU0NWJkYzViYTQ4OGZlZDUzNDgwZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29uc3RhbnRzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29uc3RhbnRzLmh0bWwKQEAgLTE5NCw3ICsxOTQsNiBA
QCBTQU1QTEVfQ09WRVJBR0VfSU5WRVJUICAgICAgICAgOiAweDgwQUIsCiAgICAgLyogICAgICBU
RVhUVVJFX1dSQVBfUyAqLwogICAgIC8qICAgICAgVEVYVFVSRV9XUkFQX1QgKi8KICAgICAKLU5V
TV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyA6IDB4ODZBMiwKIENPTVBSRVNTRURfVEVYVFVS
RV9GT1JNQVRTICAgICA6IDB4ODZBMywKICAgICAKICAgICAvKiBIaW50TW9kZSAqLwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxscy1leHBlY3Rl
ZC50eHQKaW5kZXggOWFlZTQ1OWZmM2FkYjk3MGU4OGMzMzA2NjhlOGYyOTgwODBkODgxOS4uYWYw
YTJhM2Q0MjlkZWFmYjVkODY1MmY5NDYxOWRjNTNkZWFjZmVmNSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0CkBA
IC03NSw3ICs3NSw3IEBAIFBBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5WSUVXUE9S
VCkgaXMgWzAsIDAsIDIsIDJdCiBQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFY
X0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUykgPj0gMTYgaXMgdHJ1ZQogUEFTUyBjb250ZXh0Lmdl
dFBhcmFtZXRlcihjb250ZXh0Lk1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTKSA+PSAxMjggaXMg
dHJ1ZQogUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9WQVJZSU5HX1ZFQ1RP
UlMpID49IDggaXMgdHJ1ZQotUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk5VTV9D
T01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUykgaXMgMAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRl
cihjb250ZXh0LkNPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTKSBpcyBbXQogCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL2dsLWdldC1jYWxscy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvZ2wtZ2V0LWNhbGxzLmh0bWwKaW5kZXggMmRlZTM4MWU1OTYzN2EzMzVkOGE0ZTlhMDc2NDBj
MjFjOWU3NDVhZS4uYTFiYmY1ODc4NGRjZmQ4ZjZjOGRjNGRjZjhkNjMyYTNjNzRiY2QzYiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLmh0bWwKQEAg
LTEwNyw3ICsxMDcsNyBAQCBlbHNlIHsKICAgICBzaG91bGRCZVRydWUoJ2NvbnRleHQuZ2V0UGFy
YW1ldGVyKGNvbnRleHQuTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUykgPj0gMTYnKTsKICAg
ICBzaG91bGRCZVRydWUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX1ZFUlRFWF9V
TklGT1JNX1ZFQ1RPUlMpID49IDEyOCcpOwogICAgIHNob3VsZEJlVHJ1ZSgnY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5NQVhfVkFSWUlOR19WRUNUT1JTKSA+PSA4Jyk7Ci0gICAgc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9G
T1JNQVRTKScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRl
eHQuQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMpJywgJ1tdJyk7CiB9CiAKIGRlYnVnKCIiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125943</attachid>
            <date>2012-02-07 15:22:03 -0800</date>
            <delta_ts>2012-02-08 11:14:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77066-20120207152202.patch</filename>
            <type>text/plain</type>
            <size>75782</size>
            <attacher name="Gregg Tavares">gman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc4NjkxZjc5ZjcwNjM2
Yjk0ODU2YWI3OGJhZThiODhiODMzNTYxMC4uMjgwNGQ4YjZmNWI2ZjcwYjAyNzQ5N2U5YzE0ODgz
MjgyZTMyZTM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTAyLTA2ICBHcmVn
ZyBUYXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBuZXcgV0VC
R0wgY29tcHJlc3NlZCB0ZXh0dXJlIGV4dGVuc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MDY2CisKKyAgICAgICAgVGhpcyByZW1vdmVzIHRo
ZSBvbGQgZXhwZXJpbWVudGFsIGNvbXByZXNzZWQKKyAgICAgICAgdGV4dHVyZSBleHRlbnNpb24g
YW5kIGltcGxlbWVudHMgdGhlIGZpcnN0IG5ldworICAgICAgICBvbmUuCisKKyAgICAgICAgQSB0
ZXN0IGlzIGluIHRoZSBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0cyBpbgorICAgICAgICBleHRlbnNp
b25zL3dlYmdsLWNvbXByZXNzZWQtdGV4dHVyZS1zM3RjLmh0bWwKKyAgICAgICAgYW5kIHdpbGwg
YmUgY29waWVkIGhlcmUgaW4gYSBmdXR1cmUgcGF0Y2guCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUZXN0IGNvbWluZyBpbiBm
dXR1cmUgcGF0Y2guCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4T2JqZWN0KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6V2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEM6On5XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6Z2V0TmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmguCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5pZGw6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5pZGwuCisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmg6IFJlbW92
ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJ
bmZvOjpXZWJHTEdldEluZm8pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTEdldEluZm86OmdldFdlYkdMVW5zaWduZWRJbnRBcnJheSk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xHZXRJbmZvLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xPYmpl
Y3QuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5z
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRl
Q29tcHJlc3NlZFRleEZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ29tcHJl
c3NlZFRleFN1YkRpbWVuc2lvbnMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJHTFJlbmRlcmlu
Z0NvbnRleHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5p
ZGw6CisKIDIwMTItMDItMDcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIEFsbG93IHJldGFpbmluZyB0ZXh0dXJlIGFjcm9zcyBmcmFt
ZXMgaW4gY29tcG9zaXRlZCB2aWRlbyBwbGF5YmFjayBhbmQgY29ycmVjdGx5IGhhbmRsZSBsb3N0
IGNvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZGQwNGNmNmZiN2FmMjIyMTM0NjM4NTZh
YjY2YzNkMjFmYzQ3Y2FjYS4uMTEwZjg3YmM1YmRkYjAxNDczNGNjYzExNzZhNDQ5ZmM0ZGVkNjc2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIxODEsNyArMjE4MSw3IEBAIElGIChFTkFCTEVf
V0VCR0wpCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9WYWxp
ZGF0ZUxpbWl0YXRpb25zLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMv
Y29tcGlsZXIvVmFyaWFibGVJbmZvLmNwcAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZl
ci5jcHAKLSAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwCisg
ICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcAogICAgICAg
ICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb250
ZXh0R3JvdXAuY3BwCkBAIC0yMjE0LDcgKzIyMTQsNyBAQCBJRiAoRU5BQkxFX1dFQkdMKQogICAg
ICAgICBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5pZGwKICAgICAgICAgaHRtbC9j
YW52YXMvV2ViR0xBY3RpdmVJbmZvLmlkbAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZl
ci5pZGwKLSAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaWRsCisg
ICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlkbAogICAgICAg
ICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTENvbnRleHRFdmVudC5pZGwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1
Z1JlbmRlcmVySW5mby5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDgyOWI1
NjgwYjAyZjA0ODkwY2U5MjFhMjdhY2ViNGZiMDY5NDJmODAuLjBhOTVkZDczMWU2ZDEzNjM4YmRi
NjRhYmU5ZjAyNjY3NGFjYWQ3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAt
Mjg2LDcgKzI4Niw3IEBAIEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2Fu
dmFzL1VpbnQ4Q2xhbXBlZEFycmF5LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9X
ZWJHTEFjdGl2ZUluZm8uaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQnVm
ZmVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlcy5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0
dHJpYnV0ZXMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2
ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmlk
bCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKaW5kZXggYWI0MmY5Mjg3Mzc5N2JhMjYxYjI1
MWViY2RhYmRlNDdhZjE3ODZjNS4uNWFhYzRlYmFiYTY0ZDQ1MzcwOGI2MzJhYjQ5NzNhZDVmODBm
MmZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtMjI0LDYgKzIyNCw3IEBAIElE
TF9CSU5ESU5HUyArPSBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmpl
Y3QuaWRsIFwKICAgICAkJFBXRC9odG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8uaWRsIFwKICAg
ICAkJFBXRC9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5pZGwgXAorICAgICQkUFdEL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlkbCBcCiAgICAgJCRQV0QvaHRtbC9jYW52
YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwgXAogICAgICQkUFdEL2h0bWwvY2FudmFzL1dl
YkdMQ29udGV4dEV2ZW50LmlkbCBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1Jl
bmRlcmVySW5mby5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZGZlNDkz
MTFhYjZiNDQ2Mzg5MjhlMTM3YWM4N2ExNWFkNzA3NDlhNS4uNjkyMGUzY2EwYTM2MDlmY2FkMTBi
NGEyZWM3NDI3ZTM0MjVkYzQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC01
NDMsNiArNTQzLDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2ViR0xBY3RpdmVJbmZvLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJHTEJ1ZmZlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTEJ1ZmZl
ci5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMQ29udGV4dEF0dHJpYnV0
ZXMuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xDb250ZXh0QXR0cmlidXRl
cy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xDb250ZXh0RXZlbnQuY3BwIFwK
QEAgLTg0Nyw2ICs4NDksNyBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUpL2h0
bWwvY2FudmFzL1VpbnQ4Q2xhbXBlZEFycmF5LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL2NhbnZh
cy9XZWJHTEFjdGl2ZUluZm8uaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQnVm
ZmVyLmlkbCBcCisJJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQy5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRl
cy5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaWRsIFwK
IAkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaWRsIFwKQEAgLTU2MTMs
OCArNTYxNiw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xBY3RpdmVJbmZvLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQnVmZmVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIu
aCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMu
Y3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
cy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0
dHJpYnV0ZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRB
dHRyaWJ1dGVzLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2
ZW50LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBkMzRjNmQ5Nzg1NDUxYTg3MWQ2N2FiNWZjZWRhMDA4
MzU2ZTY0MDRmLi40Y2EzN2JjMzVkM2YxYjg2NjQ5OWFjMDE3Yjg5NzQ5NDgzODk3MmY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKQEAgLTM2OTMsNyArMzY5Myw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9X
RUJHTD0xKSB7CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmggXAogICAgICAgICBo
dG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8uaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdM
QnVmZmVyLmggXAotICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5o
IFwKKyAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBcCiAg
ICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBcCiAgICAgICAgIGh0
bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJH
TENvbnRleHRHcm91cC5oIFwKQEAgLTM3MzMsNyArMzczMyw3IEBAIGNvbnRhaW5zKERFRklORVMs
IEVOQUJMRV9XRUJHTD0xKSB7CiAgICAgICAgIGh0bWwvY2FudmFzL0NhbnZhc0NvbnRleHRBdHRy
aWJ1dGVzLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcCBcCiAgICAg
ICAgIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcCBcCi0gICAgICAgIGh0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcCBcCisgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4
dEF0dHJpYnV0ZXMuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQu
Y3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3JvdXAuY3BwIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCAwN2EzNDBmOGI2MmZmMTQxZWE3YmZkNTQ3Mzk3NTE3Njk1Y2U2MzM0Li5k
Yzk0YmQ2ZTNmN2ZkZmYxNDgxNzQ5NGZhNjQ0YmNlY2NkZGZhZTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CkBAIC05NjEsNyArOTYxLDcgQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9VaW50OENsYW1w
ZWRBcnJheS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQWN0aXZlSW5mby5p
ZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmlkbCcsCi0gICAgICAg
ICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaWRsJywKKyAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5pZGwnLAogICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsJywKICAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5pZGwnLAogICAgICAgICAgICAgJ2h0
bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaWRsJywKQEAgLTU0NDUsOCArNTQ0NSw4
IEBACiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xBY3RpdmVJbmZvLmgnLAogICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9j
YW52YXMvV2ViR0xCdWZmZXIuaCcsCi0gICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZXMuY3BwJywKLSAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlcy5oJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQy5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDLmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQ29udGV4
dEF0dHJpYnV0ZXMuY3BwJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbnRleHRB
dHRyaWJ1dGVzLmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50
LmNwcCcsCkBAIC03ODU4LDYgKzc4NTgsOCBAQAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTEFjdGl2ZUluZm8uaCcsCiAgICAgICAgICAg
ICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMQnVmZmVyLmNw
cCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1dlYkdMQnVmZmVyLmgnLAorICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAnLAorICAgICAgICAg
ICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQy5oJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAnLAogICAgICAgICAgICAg
JzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTENvbnRleHRBdHRy
aWJ1dGVzLmgnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXZWJHTEZyYW1lYnVmZmVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjIxNTIxMmI5OGMwODJjMDAyN2Zk
NmZiN2RlN2IwNGFmMThkMzg3Zi4uM2Y4ZDRjN2FhZGQ1MjZlYmY2YWM5NjQ1ZjRhMGNmMjMwNzI0
OTRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTc4MSwxMCArMTc4MSwxMCBAQAogCQk2NUZFQTg2OTA5ODMzQURFMDBCRUQ0
QUIgLyogUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NUZFQTg2ODA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAgKi87IH07CiAJCTZFMjFD
NkMwMTEyNjMzODUwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTIxQzZCRjExMjYzMzg1MDBBN0JF
MDIgLyogR3JhcGhpY3NDb250ZXh0M0QuY3BwICovOyB9OwogCQk2RTIxQzZDMjExMjYzMzk5MDBB
N0JFMDIgLyogR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTIxQzZDMTExMjYzMzk5MDBBN0JFMDIgLyogR3JhcGhp
Y3NDb250ZXh0M0RDRy5jcHAgKi87IH07Ci0JCTZFM0ZBRDM4MTQ3MzNGNDAwMEU0MjMwNiAvKiBK
U1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVzLmNwcCAqLzsgfTsKLQkJNkUzRkFEMzkxNDczM0Y0MDAwRTQyMzA2IC8q
IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRDM3MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVzLmggKi87IH07Ci0JCTZFM0ZBRThFMTQ3MzNGREIwMEU0MjMwNiAvKiBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUU4QzE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVz
c2VkVGV4dHVyZXMuY3BwICovOyB9OwotCQk2RTNGQUU4RjE0NzMzRkRCMDBFNDIzMDYgLyogV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZFM0ZBRThEMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlcy5oICovOyB9OworCQk2RTNGQUQzODE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RTNGQUQzNjE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQy5jcHAgKi87IH07CisJCTZFM0ZBRDM5MTQ3MzNGNDAwMEU0MjMwNiAvKiBK
U1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUQzNzE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQy5oICovOyB9OworCQk2RTNGQUU4RTE0NzMzRkRCMDBFNDIzMDYg
LyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFFOEMxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCAqLzsgfTsKKwkJNkUzRkFFOEYxNDczM0ZEQjAwRTQy
MzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUU4RDE0NzMzRkRCMDBFNDIzMDYgLyogV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCAqLzsgfTsKIAkJNkU0N0U2NjAxMEI3OTQ0QjAwQjE4
NkM4IC8qIFdlYkdMR2V0SW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RTQ3RTY1RTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNw
cCAqLzsgfTsKIAkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUYxMEI3
OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oICovOyB9OwogCQk2RTRBQkNENDEzOEVBMEI3
MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0QUJDRDIxMzhFQTBCNzAwNzFEMjkxIC8qIEpT
SFRNTFVua25vd25FbGVtZW50LmNwcCAqLzsgfTsKQEAgLTg2NDgsMTEgKzg2NDgsMTEgQEAKIAkJ
NjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2RTIxQzZCRjExMjYzMzg1MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0M0QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0M0QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTIxQzZDMTExMjYzMzk5MDBBN0JFMDIgLyog
R3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHcmFwaGljc0NvbnRleHQzRENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNkUzRkFEMzYxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTENvbXByZXNz
ZWRUZXh0dXJlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZFM0ZBRDM3MTQ3
MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNkUzRkFFOEMxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZFM0ZBRThE
MTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oOyBwYXRoID0g
Y2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTZFM0ZBRTkwMTQ3MzNGRUEwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJl
cy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaWRs
OyBwYXRoID0gY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNkUzRkFEMzYxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTZFM0ZBRDM3MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkUzRkFF
OEMxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDLmNwcDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFM0ZBRThEMTQ3MzNGREIwMEU0MjMwNiAvKiBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oOyBwYXRoID0gY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFM0ZB
RTkwMTQ3MzNGRUEwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsOyBwYXRo
ID0gY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNkU0N0U2NUUxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJHTEdldEluZm8uY3Bw
OyBwYXRoID0gY2FudmFzL1dlYkdMR2V0SW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViR0xHZXRJbmZvLmg7IHBhdGggPSBjYW52YXMv
V2ViR0xHZXRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNEFCQ0QyMTM4
RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxVbmtub3duRWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDQ4MCw5ICsxNDQ4MCw5IEBACiAJCQkJNDlDN0I5QTgx
MDQyRDMyRTAwMDlENDQ3IC8qIFdlYkdMQnVmZmVyLmNwcCAqLywKIAkJCQk0OUM3QjlBOTEwNDJE
MzJFMDAwOUQ0NDcgLyogV2ViR0xCdWZmZXIuaCAqLywKIAkJCQk0OUM3QjlBQTEwNDJEMzJFMDAw
OUQ0NDcgLyogV2ViR0xCdWZmZXIuaWRsICovLAotCQkJCTZFM0ZBRThDMTQ3MzNGREIwMEU0MjMw
NiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgKi8sCi0JCQkJNkUzRkFFOEQxNDczM0ZE
QjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmggKi8sCi0JCQkJNkUzRkFFOTAx
NDczM0ZFQTAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmlkbCAqLywKKwkJCQk2
RTNGQUU4QzE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3Bw
ICovLAorCQkJCTZFM0ZBRThEMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQy5oICovLAorCQkJCTZFM0ZBRTkwMTQ3MzNGRUEwMEU0MjMwNiAvKiBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQy5pZGwgKi8sCiAJCQkJNkU0RTkxQTkxMEY3RkIzMTAwQTI3NzlDIC8q
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwICovLAogCQkJCTZFNEU5MUFBMTBGN0ZCMzEwMEEy
Nzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi8sCiAJCQkJNkU0RTkxQUIxMEY3RkIz
MTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsICovLApAQCAtMTc0NjIsOCAr
MTc0NjIsOCBAQAogCQkJCUE3RDIwRjYxMTA3RjQwNjkwMEE4MDM5MiAvKiBKU1dlYkdMQWN0aXZl
SW5mby5oICovLAogCQkJCTQ5QzdCOTgwMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMQnVmZmVy
LmNwcCAqLywKIAkJCQk0OUM3Qjk4MTEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5o
ICovLAotCQkJCTZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVzLmNwcCAqLywKLQkJCQk2RTNGQUQzNzE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENv
bXByZXNzZWRUZXh0dXJlcy5oICovLAorCQkJCTZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNiAvKiBK
U1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCAqLywKKwkJCQk2RTNGQUQzNzE0NzMzRjQw
MDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oICovLAogCQkJCTZFRThB
NzcwMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwICovLAog
CQkJCTZFRThBNzcxMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMu
aCAqLywKIAkJCQlCQzJDQkY3QTE0MEYxRDU4MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVu
dC5jcHAgKi8sCkBAIC0yMjk5MCw3ICsyMjk5MCw3IEBACiAJCQkJRkQ4MkQ3RjgxM0Q0QzhCRDAw
NEU0MzcyIC8qIEpTV2F2ZVNoYXBlck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDIwRjYz
MTA3RjQwNjkwMEE4MDM5MiAvKiBKU1dlYkdMQWN0aXZlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDlDN0I5OTQxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xCdWZmZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTZFM0ZBRDM5MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk2RTNGQUQzOTE0NzMzRjQwMDBFNDIzMDYgLyog
SlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVFOEE3
NzMxMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMyQ0JGNEUxNDBGMUFCRDAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOTk4MTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dl
YkdMRnJhbWVidWZmZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjQwMTcsNyArMjQwMTcsNyBAQAog
CQkJCUJDNkRBREVGMEExOTVGREYwMEU1Q0QxNCAvKiBXZWJGb250Q2FjaGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3RDIwRjZEMTA3RjQzOEIwMEE4MDM5MiAvKiBXZWJHTEFjdGl2ZUluZm8uaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUM5MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEJ1ZmZl
ci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNkUzRkFFOEYxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk2RTNGQUU4RjE0NzMzRkRC
MDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTZFNEU5MUFGMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5M0Y2RjFFRTEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250
ZXh0RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTAxRDNDRjgzMTRCRDBBMzAwMEZFOTk3MCAv
KiBXZWJHTENvbnRleHRHcm91cC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjEzMyw3ICsyNjEzMyw3
IEBACiAJCQkJRkQ4RTlCREYxM0Q0Q0QyQjAwNTBEQzcyIC8qIEpTV2F2ZVNoYXBlck5vZGVDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEMjBGNjIxMDdGNDA2OTAwQTgwMzkyIC8qIEpT
V2ViR0xBY3RpdmVJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdCOTkzMTA0MkQyRDMw
MDA5RDQ0NyAvKiBKU1dlYkdMQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTZFM0ZBRDM4
MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTZFM0ZBRDM4MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVTM1RDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZFRThBNzcyMTBGODAzRjMwMDVB
NEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkMyQ0JGN0IxNDBGMUQ1ODAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDlDN0I5OTcxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xGcmFtZWJ1
ZmZlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2OTY2LDcgKzI2OTY2LDcgQEAKIAkJCQk5M0Yx
OUIwNzA4MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29yZVZpZXcubSBpbiBTb3VyY2VzICovLAogCQkJ
CUJDNkRBREZBMEExOTYwMkIwMEU1Q0QxNCAvKiBXZWJGb250Q2FjaGUubW0gaW4gU291cmNlcyAq
LywKIAkJCQk0OUM3QjlDODEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xCdWZmZXIuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJNkUzRkFFOEUxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTZFM0ZBRThFMTQ3MzNGREIwMEU0MjMw
NiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2
RTRFOTFBRTEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5M0Y2RjFFRDEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDFEM0NGODIxNEJEMEEzMDAwRkU5OTcwIC8q
IFdlYkdMQ29udGV4dEdyb3VwLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20u
Y3BwCmluZGV4IGI0ZjU2NjIzOWExNzA2Y2Y3NWZmNTgxNTU5YWQ4ZDdlZWJhNGNhNWIuLjBiZmE2
M2FmYjM1NWQ3MGRhMWRkNmYxZWQ3ZGYwYjAyMDQzNTRiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHAKQEAgLTQwLDggKzQwLDEwIEBACiAjaW5jbHVkZSAiSlNPRVNTdGFuZGFyZERlcml2YXRp
dmVzLmgiCiAjaW5jbHVkZSAiSlNPRVNUZXh0dXJlRmxvYXQuaCIKICNpbmNsdWRlICJKU09FU1Zl
cnRleEFycmF5T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNVaW50MzJBcnJheS5oIgogI2luY2x1ZGUg
IkpTVWludDhBcnJheS5oIgogI2luY2x1ZGUgIkpTV2ViR0xCdWZmZXIuaCIKKyNpbmNsdWRlICJK
U1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgiCiAjaW5jbHVkZSAiSlNXZWJHTEZyYW1lYnVm
ZmVyLmgiCiAjaW5jbHVkZSAiSlNXZWJHTExvc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiSlNXZWJH
TFByb2dyYW0uaCIKQEAgLTU2LDcgKzU4LDcgQEAKICNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXQu
aCIKICNpbmNsdWRlICJPRVNWZXJ0ZXhBcnJheU9iamVjdC5oIgogI2luY2x1ZGUgIldlYkdMQnVm
ZmVyLmgiCi0jaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCIKKyNpbmNsdWRlICJX
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIgogI2luY2x1ZGUgIldlYkdMRGVidWdSZW5kZXJl
ckluZm8uaCIKICNpbmNsdWRlICJXZWJHTERlYnVnU2hhZGVycy5oIgogI2luY2x1ZGUgIldlYkdM
RXh0ZW5zaW9uLmgiCkBAIC03MSw2ICs3Myw3IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KICNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0ludDMyQXJy
YXkuaD4KKyNpbmNsdWRlIDx3dGYvVWludDMyQXJyYXkuaD4KIAogI2lmIEVOQUJMRShWSURFTykK
ICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC0xMjEsNiArMTI0LDggQEAgc3RhdGlj
IEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFdlYkcKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0
LCBpbmZvLmdldFdlYkdMVGV4dHVyZSgpKTsKICAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVX
ZWJHTFVuc2lnbmVkQnl0ZUFycmF5OgogICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxP
YmplY3QsIGluZm8uZ2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpKTsKKyAgICBjYXNlIFdlYkdM
R2V0SW5mbzo6a1R5cGVXZWJHTFVuc2lnbmVkSW50QXJyYXk6CisgICAgICAgIHJldHVybiB0b0pT
KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5mby5nZXRXZWJHTFVuc2lnbmVkSW50QXJyYXkoKSk7CiAg
ICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzoKICAg
ICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbmZvLmdldFdlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVMoKSk7CiAgICAgZGVmYXVsdDoKQEAgLTE5Myw4ICsxOTgsOCBAQCBzdGF0
aWMgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgV2ViR0xFeHRlbgogICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmpl
Y3QsIHN0YXRpY19jYXN0PFdlYkdMRGVidWdSZW5kZXJlckluZm8qPihleHRlbnNpb24pKTsKICAg
ICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpXZWJHTERlYnVnU2hhZGVyc05hbWU6CiAgICAgICAgIHJl
dHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8V2ViR0xEZWJ1Z1NoYWRl
cnMqPihleHRlbnNpb24pKTsKLSAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpXZWJLaXRXZWJHTENv
bXByZXNzZWRUZXh0dXJlc05hbWU6Ci0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9i
amVjdCwgc3RhdGljX2Nhc3Q8V2ViR0xDb21wcmVzc2VkVGV4dHVyZXMqPihleHRlbnNpb24pKTsK
KyAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpXZWJLaXRXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
Q05hbWU6CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nh
c3Q8V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMqPihleHRlbnNpb24pKTsKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggZGUxNGQ0MzU0M2NiMWViNmNjYjQ5OGE3MmVk
MDRjNjg5OTQ0YTBhNC4uYzA3ODY4ODU4NTJkNjEwMmYxZWMzOWZhZTVjYjg4NDhkZjI5Zjg1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5k
ZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC01NSw3ICs1NSw3IEBA
CiAjaW5jbHVkZSAiVjhVaW50MzJBcnJheS5oIgogI2luY2x1ZGUgIlY4VWludDhBcnJheS5oIgog
I2luY2x1ZGUgIlY4V2ViR0xCdWZmZXIuaCIKLSNpbmNsdWRlICJWOFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVzLmgiCisjaW5jbHVkZSAiVjhXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIgogI2lu
Y2x1ZGUgIlY4V2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oIgogI2luY2x1ZGUgIlY4V2ViR0xEZWJ1
Z1NoYWRlcnMuaCIKICNpbmNsdWRlICJWOFdlYkdMRnJhbWVidWZmZXIuaCIKQEAgLTE1NCw2ICsx
NTQsOCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhPYmplY3QoY29uc3QgV2Vi
R0xHZXRJbmZvJiBpbmZvKQogICAgICAgICByZXR1cm4gdG9WOChpbmZvLmdldFdlYkdMVGV4dHVy
ZSgpKTsKICAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTFVuc2lnbmVkQnl0ZUFycmF5
OgogICAgICAgICByZXR1cm4gdG9WOChpbmZvLmdldFdlYkdMVW5zaWduZWRCeXRlQXJyYXkoKSk7
CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xVbnNpZ25lZEludEFycmF5OgorICAg
ICAgICByZXR1cm4gdG9WOChpbmZvLmdldFdlYkdMVW5zaWduZWRJbnRBcnJheSgpKTsKICAgICBj
YXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOgogICAgICAg
ICByZXR1cm4gdG9WOChpbmZvLmdldFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoKSk7CiAgICAg
ZGVmYXVsdDoKQEAgLTE5Myw5ICsxOTUsOSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjhPYmplY3QoV2ViR0xFeHRlbnNpb24qIGV4dGVuc2lvbiwgdjg6OkhhbmRsZTx2OAogICAg
ICAgICBleHRlbnNpb25PYmplY3QgPSB0b1Y4KHN0YXRpY19jYXN0PFdlYkdMRGVidWdTaGFkZXJz
Kj4oZXh0ZW5zaW9uKSk7CiAgICAgICAgIHJlZmVyZW5jZU5hbWUgPSAid2ViR0xEZWJ1Z1NoYWRl
cnNOYW1lIjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6V2ViS2l0
V2ViR0xDb21wcmVzc2VkVGV4dHVyZXNOYW1lOgotICAgICAgICBleHRlbnNpb25PYmplY3QgPSB0
b1Y4KHN0YXRpY19jYXN0PFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzKj4oZXh0ZW5zaW9uKSk7Ci0g
ICAgICAgIHJlZmVyZW5jZU5hbWUgPSAid2ViS2l0V2ViR0xDb21wcmVzc2VkVGV4dHVyZXNOYW1l
IjsKKyAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpXZWJLaXRXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQ05hbWU6CisgICAgICAgIGV4dGVuc2lvbk9iamVjdCA9IHRvVjgoc3RhdGljX2Nhc3Q8V2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMqPihleHRlbnNpb24pKTsKKyAgICAgICAgcmVmZXJlbmNl
TmFtZSA9ICJ3ZWJLaXRXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ05hbWUiOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgQVNTRVJUKCFleHRlbnNpb25PYmplY3QuSXNFbXB0eSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjM1N2VmMzUxZGEwODcxYzExNzkwODQxYTM5M2I4
NTBmMDllOTY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIgorCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCisj
aW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCisKKyNpbmNsdWRlIDx3dGYvSW50MzJB
cnJheS5oPgorI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCisgICAgOiBXZWJHTEV4dGVuc2lv
bihjb250ZXh0KQoreworICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4
dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCk7CisgICAgY29udGV4dC0+
YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQxX0VYVCk7CisgICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQo
RXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCk7CisgICAgY29udGV4
dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQ1X0VYVCk7Cit9CisKK1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjp+V2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMoKQoreworfQorCitXZWJHTEV4dGVuc2lvbjo6RXh0ZW5z
aW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6Z2V0TmFtZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIFdlYktpdFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDTmFtZTsKK30KKworUGFz
c093blB0cjxXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQz4gV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEM6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyhjb250ZXh0KSk7Cit9
CisKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZChXZWJHTFJlbmRl
cmluZ0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0g
Y29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpOworICAgIHJldHVy
biBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIp
CisgICAgICAgIHx8IChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fZHh0MSIpCisgICAgICAgICAgICAmJiBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hS
T01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQzIikKKyAgICAgICAgICAgICYmIGV4dGVuc2lv
bnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzMjQyY2I4MzYxMDhjNzIxM2M4OWVlYjI4Y2ViZjQ0MGIw
NGVjNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQy5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDX2gKKyNkZWZpbmUgV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVENfaAorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIldlYkdM
RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBXZWJHTFRleHR1cmU7CisKK2NsYXNzIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQz4gY3JlYXRlKFdlYkdMUmVuZGVy
aW5nQ29udGV4dCopOworCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5n
Q29udGV4dCopOworCisgICAgdmlydHVhbCB+V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMoKTsK
KyAgICB2aXJ0dWFsIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0OworCitwcml2YXRlOgor
ICAgIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVENfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmZGU1YmJhOTA4NjJk
MjBkNmQ2ZGM0ZjdlOTViMTFjOGIxOWU1ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5pZGwKQEAgLTAsMCAr
MSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK21vZHVsZSBodG1sIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBD
b25kaXRpb25hbD1XRUJHTCwKKyAgICAgICAgSlNHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxDb250
ZXh0LAorICAgICAgICBPbWl0Q29uc3RydWN0b3IsCisgICAgICAgIERvTm90Q2hlY2tDb25zdGFu
dHMKKyAgICBdIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDIHsKKyAgICAgICAgLyogQ29tcHJl
c3NlZCBUZXh0dXJlIEZvcm1hdHMgKi8KKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENPTVBS
RVNTRURfUkdCX1MzVENfRFhUMV9FWFQgICAgICAgID0gMHg4M0YwOworICAgICAgICBjb25zdCB1
bnNpZ25lZCBpbnQgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgICAgICAgPSAweDgzRjE7
CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VY
VCAgICAgICA9IDB4ODNGMjsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDVfRVhUICAgICAgID0gMHg4M0YzOworICAgIH07Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1MTk4MGNhYTE4YjI4Nzg5ZTYwMGU5MTA0
NGRjN2Q3YjJjOWNkMmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCR0wpCi0KLSNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRU
ZXh0dXJlcy5oIgotCi0jaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCi0jaW5jbHVkZSAiV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmgiCi0KLSNpbmNsdWRlIDx3dGYvSW50MzJBcnJheS5oPgotI2luY2x1
ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdlYkdMQ29t
cHJlc3NlZFRleHR1cmVzOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlcyhXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqIGNvbnRleHQpCi0gICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQotICAgICwgbV9z
dXBwb3J0c0R4dDEoZmFsc2UpCi0gICAgLCBtX3N1cHBvcnRzRHh0NShmYWxzZSkKLSAgICAsIG1f
c3VwcG9ydHNFdGMxKGZhbHNlKQotICAgICwgbV9zdXBwb3J0c1B2cnRjKGZhbHNlKQotewotICAg
IEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCkt
PmdldEV4dGVuc2lvbnMoKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VYVF90
ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKSkgewotICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVF
bmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7Ci0gICAgICAgIG1fc3Vw
cG9ydHNEeHQxID0gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJH
TF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIikpIHsKLSAgICAgICAgZXh0ZW5zaW9ucy0+
ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpOwotICAgICAg
ICBtX3N1cHBvcnRzRHh0MSA9IHRydWU7Ci0gICAgICAgIG1fc3VwcG9ydHNEeHQ1ID0gdHJ1ZTsK
LSAgICB9Ci0gICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV90ZXh0dXJl
X2NvbXByZXNzaW9uX2R4dDUiKSkgewotICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVk
KCJHTF9DSFJPTUlVTV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKTsKLSAgICAgICAgbV9zdXBw
b3J0c0R4dDUgPSB0cnVlOwotICAgIH0KLSAgICBpZiAoZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdM
X09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIikpIHsKLSAgICAgICAgZXh0ZW5zaW9u
cy0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsK
LSAgICAgICAgbV9zdXBwb3J0c0V0YzEgPSB0cnVlOwotICAgIH0KLSAgICBpZiAoZXh0ZW5zaW9u
cy0+c3VwcG9ydHMoIkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIikpIHsKLSAgICAg
ICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25f
cHZydGMiKTsKLSAgICAgICAgbV9zdXBwb3J0c1B2cnRjID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBp
ZiAobV9zdXBwb3J0c0R4dDEpIHsKLSAgICAgICAgbV9mb3JtYXRzLmFwcGVuZChFeHRlbnNpb25z
M0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQpOwotICAgICAgICBtX2Zvcm1hdHMuYXBw
ZW5kKEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQpOwotICAgIH0K
LQotICAgIGlmIChtX3N1cHBvcnRzRHh0NSkKLSAgICAgICAgbV9mb3JtYXRzLmFwcGVuZChFeHRl
bnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUKTsKLQotICAgIGlmIChtX3N1
cHBvcnRzRXRjMSkKLSAgICAgICAgbV9mb3JtYXRzLmFwcGVuZChFeHRlbnNpb25zM0Q6OkVUQzFf
UkdCOF9PRVMpOwotCi0gICAgaWYgKG1fc3VwcG9ydHNQdnJ0YykgewotICAgICAgICBtX2Zvcm1h
dHMuYXBwZW5kKEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyk7
Ci0gICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFf
UFZSVENfNEJQUFYxX0lNRyk7Ci0gICAgfQotfQotCi1XZWJHTENvbXByZXNzZWRUZXh0dXJlczo6
fldlYkdMQ29tcHJlc3NlZFRleHR1cmVzKCkKLXsKLX0KLQotV2ViR0xFeHRlbnNpb246OkV4dGVu
c2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6OmdldE5hbWUoKSBjb25zdAotewotICAg
IHJldHVybiBXZWJLaXRXZWJHTENvbXByZXNzZWRUZXh0dXJlc05hbWU7Ci19Ci0KLVBhc3NPd25Q
dHI8V2ViR0xDb21wcmVzc2VkVGV4dHVyZXM+IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOjpjcmVh
dGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQotewotICAgIHJldHVybiBhZG9wdFB0
cihuZXcgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMoY29udGV4dCkpOwotfQotCi1ib29sIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVzOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250
ZXh0KQotewotICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdyYXBoaWNz
Q29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy0+c3Vw
cG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKQotICAgICAgICB8fCBleHRl
bnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpCi0gICAg
ICAgIHx8IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV90ZXh0dXJlX2NvbXByZXNz
aW9uX2R4dDUiKQotICAgICAgICB8fCBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX2NvbXBy
ZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKQotICAgICAgICB8fCBleHRlbnNpb25zLT5zdXBwb3J0
cygiR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMiKTsKLX0KLQotYm9vbCBXZWJHTENv
bXByZXNzZWRUZXh0dXJlczo6dmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KEdDM0RlbnVtIGZv
cm1hdCkKLXsKLSAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpD
T01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKLSAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNEeHQx
OwotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpFVEMxX1JHQjhfT0VTOgotICAgICAgICByZXR1cm4g
bV9zdXBwb3J0c0V0YzE7Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9T
M1RDX0RYVDVfRVhUOgotICAgICAgICByZXR1cm4gbV9zdXBwb3J0c0R4dDU7Ci0gICAgY2FzZSBF
eHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUc6Ci0gICAgY2FzZSBF
eHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HOgotICAgICAgICBy
ZXR1cm4gbV9zdXBwb3J0c1B2cnRjOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJv
b2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRh
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMpCi17
Ci0gICAgaWYgKCFwaXhlbHMpIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAibm8gcGl4
ZWxzIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKHdpZHRoIDwgMCB8
fCBoZWlnaHQgPCAwKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgIndpZHRoIG9yIGhl
aWdodCA8IDAiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHVuc2lnbmVk
IGludCBieXRlc1JlcXVpcmVkID0gMDsKLQotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2FzZSBF
eHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2UgRXh0
ZW5zaW9uczNEOjpFVEMxX1JHQjhfT0VTOgotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBp
bnQga0Jsb2NrV2lkdGggPSA0OwotICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9
IDQ7Ci0gICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDg7Ci0gICAgICAgICAgICBp
bnQgbnVtQmxvY2tzQWNyb3NzID0gKHdpZHRoICsga0Jsb2NrV2lkdGggLSAxKSAvIGtCbG9ja1dp
ZHRoOwotICAgICAgICAgICAgaW50IG51bUJsb2Nrc0Rvd24gPSAoaGVpZ2h0ICsga0Jsb2NrSGVp
Z2h0IC0gMSkgLyBrQmxvY2tIZWlnaHQ7Ci0gICAgICAgICAgICBpbnQgbnVtQmxvY2tzID0gbnVt
QmxvY2tzQWNyb3NzICogbnVtQmxvY2tzRG93bjsKLSAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQg
PSBudW1CbG9ja3MgKiBrQmxvY2tTaXplOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKLSAgICAg
ICAgewotICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gNDsKLSAgICAgICAgICAg
IGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OwotICAgICAgICAgICAgY29uc3QgaW50IGtCbG9j
a1NpemUgPSAxNjsKLSAgICAgICAgICAgIGludCBudW1CbG9ja3NBY3Jvc3MgPSAod2lkdGggKyBr
QmxvY2tXaWR0aCAtIDEpIC8ga0Jsb2NrV2lkdGg7Ci0gICAgICAgICAgICBpbnQgbnVtQmxvY2tz
RG93biA9IChoZWlnaHQgKyBrQmxvY2tIZWlnaHQgLSAxKSAvIGtCbG9ja0hlaWdodDsKLSAgICAg
ICAgICAgIGludCBudW1CbG9ja3MgPSBudW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9ja3NEb3duOwot
ICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJsb2NrcyAqIGtCbG9ja1NpemU7Ci0gICAg
ICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURf
UkdCX1BWUlRDXzRCUFBWMV9JTUc6Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURf
UkdCQV9QVlJUQ180QlBQVjFfSU1HOgotICAgICAgICB7Ci0gICAgICAgICAgICBieXRlc1JlcXVp
cmVkID0gKHN0ZDo6bWF4KHdpZHRoLCA4KSAqIHN0ZDo6bWF4KGhlaWdodCwgOCkgKyA3KSAvIDg7
Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCBm
dW5jdGlvbk5hbWUsICJpbnZhbGlkIGZvcm1hdCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgaWYgKHBpeGVscy0+Ynl0ZUxlbmd0aCgpICE9IGJ5dGVzUmVxdWlyZWQpIHsK
LSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAibGVuZ3RoIG9mIEFycmF5QnVmZmVyVmlldyBp
cyBub3QgY29ycmVjdCBmb3IgZGltZW5zaW9ucyIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZXM6OnZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBm
b3JtYXQsIFdlYkdMVGV4dHVyZSogdGV4KQotewotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAg
Y2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgotICAgIGNhc2Ug
RXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKLSAgICBjYXNlIEV4
dGVuc2lvbnMzRDo6RVRDMV9SR0I4X09FUzoKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3Qg
aW50IGtCbG9ja1dpZHRoID0gNDsKLSAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQg
PSA0OwotICAgICAgICAgICAgaWYgKCh4b2Zmc2V0ICUga0Jsb2NrV2lkdGgpIHx8ICh5b2Zmc2V0
ICUga0Jsb2NrSGVpZ2h0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBpZiAoIXhvZmZzZXQpIHsKLSAgICAgICAgICAgICAgICBpZiAod2lkdGggIT0gdGV4LT5n
ZXRXaWR0aCh0YXJnZXQsIGxldmVsKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAod2lkdGggJSBrQmxv
Y2tXaWR0aCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKCF5b2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGhlaWdo
dCAhPSB0ZXgtPmdldEhlaWdodCh0YXJnZXQsIGxldmVsKSkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAo
aGVpZ2h0ICUga0Jsb2NrSGVpZ2h0KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAg
IGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgotICAg
IGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKHhvZmZzZXQgfHwgeW9mZnNldAotICAgICAgICAgICAg
ICAgIHx8IHdpZHRoICE9IHRleC0+Z2V0V2lkdGgodGFyZ2V0LCBsZXZlbCkgfHwgaGVpZ2h0ICE9
IHRleC0+Z2V0SGVpZ2h0KHRhcmdldCwgbGV2ZWwpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVzOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2
ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNE
c2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgQXJyYXlCdWZmZXJWaWV3KiBkYXRhKQotewot
ICAgIGlmIChtX2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KGludGVybmFsZm9ybWF0KSkgewotICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX0VOVU0sICJjb21wcmVzc2VkVGV4SW1hZ2UyRCIsICJpbnZhbGlkIGludGVybmFsZm9ybWF0
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGJvcmRlcikgewotICAgICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZB
TFVFLCAiY29tcHJlc3NlZFRleEltYWdlMkQiLCAiYm9yZGVyIG5vdCAwIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKCF2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YSgiY29t
cHJlc3NlZFRleEltYWdlMkQiLCB3aWR0aCwgaGVpZ2h0LCBpbnRlcm5hbGZvcm1hdCwgZGF0YSkp
Ci0gICAgICAgIHJldHVybjsKLSAgICBXZWJHTFRleHR1cmUqIHRleCA9IG1fY29udGV4dC0+dmFs
aWRhdGVUZXh0dXJlQmluZGluZygiY29tcHJlc3NlZFRleEltYWdlMkQiLCB0YXJnZXQsIHRydWUp
OwotICAgIGlmICghdGV4KQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFtX2NvbnRleHQtPmlz
R0xFUzJOUE9UU3RyaWN0KCkpIHsKLSAgICAgICAgaWYgKGxldmVsICYmIFdlYkdMVGV4dHVyZTo6
aXNOUE9UKHdpZHRoLCBoZWlnaHQpKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiY29tcHJlc3NlZFRl
eEltYWdlMkQiLCAibGV2ZWwgPiAwIG5vdCBwb3dlciBvZiAyIik7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgp
LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvcmRlciwgZGF0YS0+Ynl0ZUxlbmd0aCgpLCBkYXRhLT5iYXNlQWRkcmVz
cygpKTsKLSAgICB0ZXgtPnNldExldmVsSW5mbyh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpOwotICAg
IG1fY29udGV4dC0+Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLX0KLQotdm9pZCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlczo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9y
bWF0LCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpCi17Ci0gICAgaWYgKG1fY29udGV4dC0+aXNDb250
ZXh0TG9zdCgpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCF2YWxpZGF0ZUNvbXByZXNzZWRU
ZXhGb3JtYXQoZm9ybWF0KSkgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJjb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RCIsICJpbnZhbGlkIGZvcm1hdCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICgh
dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoImNvbXByZXNzZWRUZXhTdWJJbWFnZTJEIiwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2Vi
R0xUZXh0dXJlKiB0ZXggPSBtX2NvbnRleHQtPnZhbGlkYXRlVGV4dHVyZUJpbmRpbmcoImNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEIiwgdGFyZ2V0LCB0cnVlKTsKLSAgICBpZiAoIXRleCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKGZvcm1hdCAhPSB0ZXgtPmdldEludGVybmFsRm9ybWF0KHRh
cmdldCwgbGV2ZWwpKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIs
ICJmb3JtYXQgZG9lcyBub3QgbWF0Y2ggdGV4dHVyZSBmb3JtYXQiKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViRGltZW5zaW9ucyh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHRl
eCkpIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sICJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIsICJkaW1l
bnNpb25zIGludmFsaWQgZm9yIGZvcm1hdCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5jb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCBkYXRhLT5ieXRlTGVuZ3RoKCksIGRhdGEtPmJhc2VBZGRyZXNzKCkpOwotICAgIG1fY29u
dGV4dC0+Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLX0KLQotV2ViR0xHZXRJbmZv
IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOjpnZXRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMoKQot
ewotICAgIHJldHVybiBXZWJHTEdldEluZm8oSW50MzJBcnJheTo6Y3JlYXRlKCZtX2Zvcm1hdHNb
MF0sIG1fZm9ybWF0cy5zaXplKCkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDUyYjcxYzIxMzdmY2M1OTA1MmNlNDVmODQ2MmVjODQ1ODg5N2Y3NjQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzX2gKLSNkZWZpbmUg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZXNfaAotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgot
I2luY2x1ZGUgIldlYkdMRXh0ZW5zaW9uLmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmll
dy5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgV2ViR0xUZXh0dXJlOwotCi1jbGFzcyBXZWJHTENvbXByZXNzZWRUZXh0dXJlcyA6
IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
V2ViR0xDb21wcmVzc2VkVGV4dHVyZXM+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsK
LQotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKLQot
ICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3NlZFRleHR1cmVzKCk7Ci0gICAgdmlydHVhbCBFeHRl
bnNpb25OYW1lIGdldE5hbWUoKSBjb25zdDsKLQotICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdl
MkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0MzRHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNp
emVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEFycmF5QnVmZmVyVmlldyogZGF0YSk7Ci0gICAg
dm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2
ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51
bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyogZGF0YSk7Ci0KLSAgICBXZWJHTEdldEluZm8gZ2V0
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXRzKCk7Ci0KLXByaXZhdGU6Ci0gICAgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7Ci0KLSAgICBib29sIHZhbGlkYXRl
Q29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVt
IGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMpOwotCi0gICAgYm9vbCB2YWxpZGF0ZUNv
bXByZXNzZWRUZXhGb3JtYXQoR0MzRGVudW0gZm9ybWF0KTsKLQotICAgIGJvb2wgdmFsaWRhdGVD
b21wcmVzc2VkVGV4U3ViRGltZW5zaW9ucyhHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWws
IEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQs
IEdDM0RlbnVtIGZvcm1hdCwgV2ViR0xUZXh0dXJlKik7Ci0KLSAgICBib29sIG1fc3VwcG9ydHNE
eHQxOwotICAgIGJvb2wgbV9zdXBwb3J0c0R4dDU7Ci0gICAgYm9vbCBtX3N1cHBvcnRzRXRjMTsK
LSAgICBib29sIG1fc3VwcG9ydHNQdnJ0YzsKLQotICAgIFZlY3RvcjxpbnQ+IG1fZm9ybWF0czsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVzLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA4
YjYwYTNmYjlhNmU0ZGY2ZjMwOGEyNTdiOTc2NDkxOWM0N2IzOS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlcy5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotbW9kdWxlIGh0bWwgewotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlv
bmFsPVdFQkdMLAotICAgICAgICBKU0dlbmVyYXRlSXNSZWFjaGFibGU9SW1wbENvbnRleHQsCi0g
ICAgICAgIE9taXRDb25zdHJ1Y3RvciwKLSAgICAgICAgRG9Ob3RDaGVja0NvbnN0YW50cwotICAg
IF0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMgewotICAgICAgICAvKiBDb21wcmVzc2VkIFRleHR1
cmUgRm9ybWF0cyAqLwotICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ09NUFJFU1NFRF9SR0Jf
UzNUQ19EWFQxX0VYVCAgICAgICAgPSAweDgzRjA7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGlu
dCBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCAgICAgICA9IDB4ODNGMTsKLSAgICAgICAg
Y29uc3QgdW5zaWduZWQgaW50IENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUICAgICAgID0g
MHg4M0YzOwotICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgRVRDMV9SR0I4X09FUyAgICAgICAg
ICAgICAgICAgICAgICAgPSAweDhENjQ7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01Q
UkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HICAgICA9IDB4OEMwMDsKLSAgICAgICAgY29uc3Qg
dW5zaWduZWQgaW50IENPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HICAgID0gMHg4QzAy
OwotCi0gICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgY29tcHJlc3NlZFRleEltYWdl
MkQoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIGxvbmcgbGV2ZWwsIGluIHVuc2lnbmVkIGxv
bmcgaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gbG9uZyB3aWR0aCwgaW4gbG9uZyBoZWlnaHQsIGluIGxvbmcg
Ym9yZGVyLCBpbiBBcnJheUJ1ZmZlclZpZXcgZGF0YSk7Ci0gICAgICAgIFtTdHJpY3RUeXBlQ2hl
Y2tpbmddIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoaW4gdW5zaWduZWQgbG9uZyB0YXJn
ZXQsIGluIGxvbmcgbGV2ZWwsIGluIGxvbmcgeG9mZnNldCwgaW4gbG9uZyB5b2Zmc2V0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IGxvbmcgd2lkdGgsIGluIGxvbmcgaGVpZ2h0LCBpbiB1bnNpZ25lZCBsb25nIGZvcm1hdCwgaW4g
QXJyYXlCdWZmZXJWaWV3IGRhdGEpOwotICAgIH07Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xFeHRlbnNpb24uaAppbmRleCA0ZmY5NjkwODZkMjkxYjE3NzUzMDhkZGJkMzFh
MmUyMTg5OTdiMmM4Li5mZjQ4MmZhY2Q4ZjE1MmM3MjIxYWJmM2JhYjE2NDBjMDlkOWNmNWQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKQEAgLTQwLDcg
KzQwLDcgQEAgcHVibGljOgogICAgICAgICBPRVNWZXJ0ZXhBcnJheU9iamVjdE5hbWUsCiAgICAg
ICAgIFdlYkdMRGVidWdSZW5kZXJlckluZm9OYW1lLAogICAgICAgICBXZWJHTERlYnVnU2hhZGVy
c05hbWUsCi0gICAgICAgIFdlYktpdFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzTmFtZSwgLy8gV0VC
S0lUXyBwcmVmaXggdW50aWwgZXh0ZW5zaW9uIGlzIG9mZmljaWFsCisgICAgICAgIFdlYktpdFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDTmFtZSwgLy8gV0VCS0lUXyBwcmVmaXggdW50aWwgZXh0
ZW5zaW9uIGlzIG9mZmljaWFsCiAgICAgfTsKIAogICAgIHZvaWQgcmVmKCkgeyBtX2NvbnRleHQt
PnJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdl
dEluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcApp
bmRleCA4N2JlYzc5MTk4Y2ZmODNhYjY3NGI0YWYxODE2YTgxYWEzYTU0MzJjLi5mNzE2NmM0MTkz
MmRjMzQ3NmQ4YjVjMmUxMWEzZWM0MmU0NDI1YjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMR2V0SW5mby5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTLmgiCiAjaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgog
I2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MTkxLDYgKzE5MiwxNiBAQCBXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFVp
bnQ4QXJyYXk+IHZhbHVlKQogewogfQogCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhQYXNz
UmVmUHRyPFVpbnQzMkFycmF5PiB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlwZVdlYkdMVW5zaWdu
ZWRJbnRBcnJheSkKKyAgICAsIG1fYm9vbChmYWxzZSkKKyAgICAsIG1fZmxvYXQoMCkKKyAgICAs
IG1faW50KDApCisgICAgLCBtX3Vuc2lnbmVkSW50KDApCisgICAgLCBtX3dlYmdsVW5zaWduZWRJ
bnRBcnJheSh2YWx1ZSkKK3sKK30KKwogV2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8oUGFzc1Jl
ZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiB2YWx1ZSkKICAgICA6IG1fdHlwZShrVHlw
ZVdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMpCiAgICAgLCBtX2Jvb2woZmFsc2UpCkBAIC0yOTQs
NiArMzA1LDEyIEBAIFBhc3NSZWZQdHI8VWludDhBcnJheT4gV2ViR0xHZXRJbmZvOjpnZXRXZWJH
TFVuc2lnbmVkQnl0ZUFycmF5KCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJnbFVuc2lnbmVkQnl0
ZUFycmF5OwogfQogCitQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBXZWJHTEdldEluZm86OmdldFdl
YkdMVW5zaWduZWRJbnRBcnJheSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBr
VHlwZVdlYkdMVW5zaWduZWRJbnRBcnJheSk7CisgICAgcmV0dXJuIG1fd2ViZ2xVbnNpZ25lZElu
dEFycmF5OworfQorCiBQYXNzUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IFdlYkdM
R2V0SW5mbzo6Z2V0V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUygpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGdldFR5cGUoKSA9PSBrVHlwZVdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaAppbmRleCBmNzQ3YTA5MDJhZGQ3MGE2
ZTZkYjJkNDJlMzk1YmQ2NDkzMzA4MDViLi5kMWY3M2E2NTZmNTA5MGU4NDhjZmQxMTlkYmQxZGY5
NDA1NzVlNDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdl
dEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaApA
QCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1VpbnQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNjcsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGtUeXBlV2ViR0xS
ZW5kZXJidWZmZXIsCiAgICAgICAgIGtUeXBlV2ViR0xUZXh0dXJlLAogICAgICAgICBrVHlwZVdl
YkdMVW5zaWduZWRCeXRlQXJyYXksCisgICAgICAgIGtUeXBlV2ViR0xVbnNpZ25lZEludEFycmF5
LAogICAgICAgICBrVHlwZVdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMsCiAgICAgfTsKIApAQCAt
ODgsNiArOTAsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViR0xHZXRJbmZvKFBhc3NSZWZQ
dHI8V2ViR0xSZW5kZXJidWZmZXI+IHZhbHVlKTsKICAgICBleHBsaWNpdCBXZWJHTEdldEluZm8o
UGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IHZhbHVlKTsKICAgICBleHBsaWNpdCBXZWJHTEdldElu
Zm8oUGFzc1JlZlB0cjxVaW50OEFycmF5PiB2YWx1ZSk7CisgICAgZXhwbGljaXQgV2ViR0xHZXRJ
bmZvKFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IHZhbHVlKTsKICAgICBleHBsaWNpdCBXZWJHTEdl
dEluZm8oUGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiB2YWx1ZSk7CiAKICAg
ICB2aXJ0dWFsIH5XZWJHTEdldEluZm8oKTsKQEAgLTExMCw2ICsxMTMsNyBAQCBwdWJsaWM6CiAg
ICAgUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gZ2V0V2ViR0xSZW5kZXJidWZmZXIoKSBj
b25zdDsKICAgICBQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4gZ2V0V2ViR0xUZXh0dXJlKCkgY29u
c3Q7CiAgICAgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5
KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gZ2V0V2ViR0xVbnNpZ25lZElu
dEFycmF5KCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
PiBnZXRXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCkgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC0x
MzAsNiArMTM0LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IG1f
d2ViZ2xSZW5kZXJidWZmZXI7CiAgICAgUmVmUHRyPFdlYkdMVGV4dHVyZT4gbV93ZWJnbFRleHR1
cmU7CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IG1fd2ViZ2xVbnNpZ25lZEJ5dGVBcnJheTsKKyAg
ICBSZWZQdHI8VWludDMyQXJyYXk+IG1fd2ViZ2xVbnNpZ25lZEludEFycmF5OwogICAgIFJlZlB0
cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBtX3dlYmdsVmVydGV4QXJyYXlPYmplY3Q7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKaW5kZXggMTky
ODUyYzc1NWI0YmFhODBjYWE5MTViNDYyOWQ0OTNkYjk2NmM4MC4uNmQ3YjlkOGNmMTZlMDNmOTlm
MDYwODhkMjRjMjE1MWJkMjkyODg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMT2JqZWN0LmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIk9FU1N0YW5kYXJkRGVy
aXZhdGl2ZXMuaCIKICNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKICNpbmNsdWRlICJPRVNW
ZXJ0ZXhBcnJheU9iamVjdC5oIgotI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmgi
CisjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCIKICNpbmNsdWRlICJXZWJH
TENvbnRleHRHcm91cC5oIgogI2luY2x1ZGUgIldlYkdMRGVidWdSZW5kZXJlckluZm8uaCIKICNp
bmNsdWRlICJXZWJHTERlYnVnU2hhZGVycy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNjE4YjkyZDM2ODUyYWQx
OGNjY2M1YWE2ZWE2ZmU3YThlNWY0ODQwZS4uNmYxNTEzNjVkNzU4NzlhNDJhYzJiMDUzZTVlNmMx
OTMwZjFkN2M5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01NCw3ICs1NCw3IEBACiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJXZWJHTEFjdGl2ZUluZm8uaCIKICNpbmNsdWRlICJXZWJHTEJ1ZmZl
ci5oIgotI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmgiCisjaW5jbHVkZSAiV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCIKICNpbmNsdWRlICJXZWJHTENvbnRleHRBdHRyaWJ1
dGVzLmgiCiAjaW5jbHVkZSAiV2ViR0xDb250ZXh0RXZlbnQuaCIKICNpbmNsdWRlICJXZWJHTENv
bnRleHRHcm91cC5oIgpAQCAtNzIsNiArNzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvVWlu
dDE2QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvVWludDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKICNpZiBQTEFURk9STShRVCkKQEAgLTU0MSw2ICs1NDIs
MTIgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmFsbG93UHJpdmlsZWdlZEV4dGVuc2lv
bnMoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdDM0RlbnVtIGZvcm1hdCkKK3sKKyAg
ICBpZiAoIW1fY29tcHJlc3NlZFRleHR1cmVGb3JtYXRzLmNvbnRhaW5zKGZvcm1hdCkpCisgICAg
ICAgIG1fY29tcHJlc3NlZFRleHR1cmVGb3JtYXRzLmFwcGVuZChmb3JtYXQpOworfQorCiBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6On5XZWJHTFJlbmRlcmluZ0NvbnRleHQoKQogewogICAgIC8vIFJl
bW92ZSBhbGwgcmVmZXJlbmNlcyB0byBXZWJHTE9iamVjdHMgc28gaWYgdGhleSBhcmUgdGhlIGxh
c3QgcmVmZXJlbmNlCkBAIC0xMjEyLDI0ICsxMjE5LDcxIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojpjb21waWxlU2hhZGVyKFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNvZGUm
IGVjCiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIC8qdGFyZ2V0
Ki8sIEdDM0RpbnQgLypsZXZlbCovLCBHQzNEZW51bSAvKmludGVybmFsZm9ybWF0Ki8sIEdDM0Rz
aXplaSAvKndpZHRoKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0MzRHNpemVpIC8qaGVpZ2h0Ki8sIEdDM0RpbnQgLypib3JkZXIqLywgQXJyYXlC
dWZmZXJWaWV3KiAvKmRhdGEqLykKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVz
c2VkVGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIs
IEFycmF5QnVmZmVyVmlldyogZGF0YSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQogICAg
ICAgICByZXR1cm47CisgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmNMZXZlbCgiY29tcHJlc3NlZFRl
eEltYWdlMkQiLCB0YXJnZXQsIGxldmVsKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCF2
YWxpZGF0ZUNvbXByZXNzZWRUZXhGb3JtYXQoaW50ZXJuYWxmb3JtYXQpKSB7CisgICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJjb21wcmVz
c2VkVGV4SW1hZ2UyRCIsICJpbnZhbGlkIGludGVybmFsZm9ybWF0Iik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaWYgKGJvcmRlcikgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImNvbXByZXNzZWRUZXhJbWFnZTJEIiwg
ImJvcmRlciBub3QgMCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghdmFsaWRh
dGVDb21wcmVzc2VkVGV4RGltZW5zaW9ucygiY29tcHJlc3NlZFRleEltYWdlMkQiLCBsZXZlbCwg
d2lkdGgsIGhlaWdodCwgaW50ZXJuYWxmb3JtYXQpKQorICAgICAgICByZXR1cm47CisgICAgaWYg
KCF2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YSgiY29tcHJlc3NlZFRleEltYWdlMkQiLCB3
aWR0aCwgaGVpZ2h0LCBpbnRlcm5hbGZvcm1hdCwgZGF0YSkpCisgICAgICAgIHJldHVybjsKIAot
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KLSAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCAiY29tcHJlc3NlZFRleEltYWdlMkQiLCAiaW52
YWxpZCBpbnRlcm5hbGZvcm1hdCIpOworICAgIFdlYkdMVGV4dHVyZSogdGV4ID0gdmFsaWRhdGVU
ZXh0dXJlQmluZGluZygiY29tcHJlc3NlZFRleEltYWdlMkQiLCB0YXJnZXQsIHRydWUpOworICAg
IGlmICghdGV4KQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFpc0dMRVMyTlBPVFN0cmljdCgp
KSB7CisgICAgICAgIGlmIChsZXZlbCAmJiBXZWJHTFRleHR1cmU6OmlzTlBPVCh3aWR0aCwgaGVp
Z2h0KSkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfVkFMVUUsICJjb21wcmVzc2VkVGV4SW1hZ2UyRCIsICJsZXZlbCA+IDAgbm90IHBv
d2VyIG9mIDIiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBn
cmFwaGljc0NvbnRleHQzRCgpLT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib3JkZXIsIGRhdGEtPmJ5dGVMZW5ndGgoKSwgZGF0YS0+YmFz
ZUFkZHJlc3MoKSk7CisgICAgdGV4LT5zZXRMZXZlbEluZm8odGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRF
KTsKKyAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCi12b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gLyp0YXJn
ZXQqLywgR0MzRGludCAvKmxldmVsKi8sIEdDM0RpbnQgLyp4b2Zmc2V0Ki8sIEdDM0RpbnQgLyp5
b2Zmc2V0Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0MzRHNpemVpIC8qd2lkdGgqLywgR0MzRHNpemVpIC8qaGVpZ2h0Ki8sIEdDM0RlbnVt
IC8qZm9ybWF0Ki8sIEFycmF5QnVmZmVyVmlldyogLypkYXRhKi8pCit2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
aW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgs
IEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3KiBkYXRh
KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAo
IXZhbGlkYXRlVGV4RnVuY0xldmVsKCJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIsIHRhcmdldCwg
bGV2ZWwpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCF2YWxpZGF0ZUNvbXByZXNzZWRUZXhG
b3JtYXQoZm9ybWF0KSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9FTlVNLCAiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCAiaW52YWxpZCBm
b3JtYXQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIXZhbGlkYXRlQ29tcHJl
c3NlZFRleEZ1bmNEYXRhKCJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIsIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgZGF0YSkpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYkdMVGV4dHVyZSogdGV4
ID0gdmFsaWRhdGVUZXh0dXJlQmluZGluZygiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCB0YXJn
ZXQsIHRydWUpOworICAgIGlmICghdGV4KQorICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhN
RTogaW1wbGVtZW50IHRoaXMuCi0gICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfRU5VTSwgImNvbXByZXNzZWRUZXhTdWJJbWFnZTJEIiwgImludmFsaWQgZm9y
bWF0Iik7CisgICAgaWYgKGZvcm1hdCAhPSB0ZXgtPmdldEludGVybmFsRm9ybWF0KHRhcmdldCwg
bGV2ZWwpKSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX09QRVJBVElPTiwgImNvbXByZXNzZWRUZXhTdWJJbWFnZTJEIiwgImZvcm1hdCBkb2Vz
IG5vdCBtYXRjaCB0ZXh0dXJlIGZvcm1hdCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKCF2YWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJEaW1lbnNpb25zKCJjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRCIsIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdGV4KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ3JhcGhpY3NDb250ZXh0
M0QoKS0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEtPmJ5dGVMZW5ndGgoKSwgZGF0YS0+YmFzZUFkZHJl
c3MoKSk7CisgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5
LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKQpAQCAt
MjE5MCwxMSArMjI0NCwxMSBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAgICAgbV93ZWJnbExv
c2VDb250ZXh0ID0gV2ViR0xMb3NlQ29udGV4dDo6Y3JlYXRlKHRoaXMpOwogICAgICAgICByZXR1
cm4gbV93ZWJnbExvc2VDb250ZXh0LmdldCgpOwogICAgIH0KLSAgICBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UobmFtZSwgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVzIikpIHsKKyAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1
cmVfczN0YyIpKSB7CiAgICAgICAgIC8vIFVzZSBXRUJLSVRfIHByZWZpeCB1bnRpbCBleHRlbnNp
b24gaXMgb2ZmaWNpYWwuCi0gICAgICAgIGlmICghbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlcykK
LSAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZXMgPSBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlczo6Y3JlYXRlKHRoaXMpOwotICAgICAgICByZXR1cm4gbV93ZWJnbENvbXByZXNzZWRU
ZXh0dXJlcy5nZXQoKTsKKyAgICAgICAgaWYgKCFtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RD
KQorICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQyA9IFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpjcmVhdGUodGhpcyk7CisgICAgICAgIHJldHVybiBtX3dlYmdsQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmdldCgpOwogICAgIH0KIAogICAgIGlmIChhbGxvd1ByaXZpbGVn
ZWRFeHRlbnNpb25zKCkpIHsKQEAgLTIzMDcsMTAgKzIzNjEsNyBAQCBXZWJHTEdldEluZm8gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIoR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlv
bkNvZGUmCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfV1JJVEVNQVNLOgogICAg
ICAgICByZXR1cm4gZ2V0Qm9vbGVhbkFycmF5UGFyYW1ldGVyKHBuYW1lKTsKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpDT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUzoKLSAgICAgICAgaWYg
KG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZXMpCi0gICAgICAgICAgICByZXR1cm4gbV93ZWJnbENv
bXByZXNzZWRUZXh0dXJlcy0+Z2V0Q29tcHJlc3NlZFRleHR1cmVGb3JtYXRzKCk7Ci0gICAgICAg
IC8vIERlZmluZWQgYXMgbnVsbCBpbiB0aGUgc3BlYwotICAgICAgICByZXR1cm4gV2ViR0xHZXRJ
bmZvKCk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oVWludDMyQXJyYXk6OmNyZWF0ZSht
X2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5kYXRhKCksIG1fY29tcHJlc3NlZFRleHR1cmVGb3Jt
YXRzLnNpemUoKSkpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNVTExfRkFDRToKICAg
ICAgICAgcmV0dXJuIGdldEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOwogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkNVTExfRkFDRV9NT0RFOgpAQCAtMjM2NSw5ICsyNDE2LDYgQEAgV2ViR0xH
ZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1l
LCBFeGNlcHRpb25Db2RlJgogICAgICAgICByZXR1cm4gZ2V0SW50UGFyYW1ldGVyKHBuYW1lKTsK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVklFV1BPUlRfRElNUzoKICAgICAgICAg
cmV0dXJuIGdldFdlYkdMSW50QXJyYXlQYXJhbWV0ZXIocG5hbWUpOwotICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6Ok5VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUzoKLSAgICAgICAgLy8g
V2ViR0wgMS4wIHNwZWNpZmllcyB0aGF0IHRoZXJlIGFyZSBubyBjb21wcmVzc2VkIHRleHR1cmUg
Zm9ybWF0cy4KLSAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxpbnQ+KDAp
KTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpOVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRT
OgogICAgICAgICAvLyBGSVhNRTogc2hvdWxkIHdlIGFsd2F5cyByZXR1cm4gMCBmb3IgdGhpcz8K
ICAgICAgICAgcmV0dXJuIGdldEludFBhcmFtZXRlcihwbmFtZSk7CkBAIC0yNjQwLDggKzI2ODgs
OCBAQCBWZWN0b3I8U3RyaW5nPiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4
dGVuc2lvbnMoKQogICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMo
IkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9F
U192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX1dFQkdM
X2xvc2VfY29udGV4dCIpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlczo6c3VwcG9y
dGVkKHRoaXMpKQotICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJLSVRfV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlcyIpOworICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9y
dGVkKHRoaXMpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJLSVRfV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlX3MzdGMiKTsKIAogICAgIGlmIChhbGxvd1ByaXZpbGVnZWRFeHRlbnNpb25zKCkp
IHsKICAgICAgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xf
QU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIikpCkBAIC00Njg1LDYgKzQ3MzMsMTE3IEBA
IGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleEZ1bmNEYXRhKGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZvcm1hdChHQzNEZW51bSBmb3JtYXQp
Cit7CisgICAgcmV0dXJuIG1fY29tcHJlc3NlZFRleHR1cmVGb3JtYXRzLmNvbnRhaW5zKGZvcm1h
dCk7Cit9CisKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNvbXByZXNzZWRU
ZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBH
QzNEc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3KiBwaXhl
bHMpCit7CisgICAgaWYgKCFwaXhlbHMpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgIm5vIHBpeGVscyIp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmICh3aWR0aCA8IDAgfHwgaGVp
Z2h0IDwgMCkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAid2lkdGggb3IgaGVpZ2h0IDwgMCIpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgdW5zaWduZWQgaW50IGJ5dGVzUmVxdWly
ZWQgPSAwOworCisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6
Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0
IGludCBrQmxvY2tXaWR0aCA9IDQ7CisgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0
ID0gNDsKKyAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gODsKKyAgICAgICAgICAg
IGludCBudW1CbG9ja3NBY3Jvc3MgPSAod2lkdGggKyBrQmxvY2tXaWR0aCAtIDEpIC8ga0Jsb2Nr
V2lkdGg7CisgICAgICAgICAgICBpbnQgbnVtQmxvY2tzRG93biA9IChoZWlnaHQgKyBrQmxvY2tI
ZWlnaHQgLSAxKSAvIGtCbG9ja0hlaWdodDsKKyAgICAgICAgICAgIGludCBudW1CbG9ja3MgPSBu
dW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9ja3NEb3duOworICAgICAgICAgICAgYnl0ZXNSZXF1aXJl
ZCA9IG51bUJsb2NrcyAqIGtCbG9ja1NpemU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgorICAg
IGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKKyAgICAg
ICAgeworICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gNDsKKyAgICAgICAgICAg
IGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OworICAgICAgICAgICAgY29uc3QgaW50IGtCbG9j
a1NpemUgPSAxNjsKKyAgICAgICAgICAgIGludCBudW1CbG9ja3NBY3Jvc3MgPSAod2lkdGggKyBr
QmxvY2tXaWR0aCAtIDEpIC8ga0Jsb2NrV2lkdGg7CisgICAgICAgICAgICBpbnQgbnVtQmxvY2tz
RG93biA9IChoZWlnaHQgKyBrQmxvY2tIZWlnaHQgLSAxKSAvIGtCbG9ja0hlaWdodDsKKyAgICAg
ICAgICAgIGludCBudW1CbG9ja3MgPSBudW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9ja3NEb3duOwor
ICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJsb2NrcyAqIGtCbG9ja1NpemU7CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52
YWxpZCBmb3JtYXQiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChw
aXhlbHMtPmJ5dGVMZW5ndGgoKSAhPSBieXRlc1JlcXVpcmVkKSB7CisgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUs
ICJsZW5ndGggb2YgQXJyYXlCdWZmZXJWaWV3IGlzIG5vdCBjb3JyZWN0IGZvciBkaW1lbnNpb25z
Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQ29tcHJlc3NlZFRleERpbWVu
c2lvbnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEaW50IGxldmVsLCBHQzNEc2l6ZWkg
d2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCkKK3sKKyAgICBzd2l0Y2gg
KGZvcm1hdCkgeworICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RY
VDFfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQx
X0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19F
WFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhU
OiB7CisgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDQ7CisgICAgICAgIGNvbnN0IGlu
dCBrQmxvY2tIZWlnaHQgPSA0OworICAgICAgICBib29sIHdpZHRoVmFsaWQgPSAobGV2ZWwgJiYg
d2lkdGggPT0gMSkgfHwgKGxldmVsICYmIHdpZHRoID09IDIpIHx8ICEod2lkdGggJSBrQmxvY2tX
aWR0aCk7CisgICAgICAgIGJvb2wgaGVpZ2h0VmFsaWQgPSAobGV2ZWwgJiYgaGVpZ2h0ID09IDEp
IHx8IChsZXZlbCAmJiBoZWlnaHQgPT0gMikgfHwgIShoZWlnaHQgJSBrQmxvY2tIZWlnaHQpOwor
ICAgICAgICBpZiAoIXdpZHRoVmFsaWQgfHwgIWhlaWdodFZhbGlkKSB7CisgICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5j
dGlvbk5hbWUsICJ3aWR0aCBvciBoZWlnaHQgaW52YWxpZCBmb3IgbGV2ZWwiKTsKKyAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJEaW1lbnNpb25zKGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBH
QzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBXZWJHTFRleHR1cmUqIHRleCkKK3sK
KyAgICBpZiAoeG9mZnNldCA8IDAgfHwgeW9mZnNldCA8IDApIHsKKyAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJ4
b2Zmc2V0IG9yIHlvZmZzZXQgPCAwIik7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9S
R0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9T
M1RDX0RYVDNfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQ1X0VYVDogeworICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OworICAgICAg
ICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKKyAgICAgICAgaWYgKCh4b2Zmc2V0ICUga0Js
b2NrV2lkdGgpIHx8ICh5b2Zmc2V0ICUga0Jsb2NrSGVpZ2h0KSkgeworICAgICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5j
dGlvbk5hbWUsICJ4b2Zmc2V0IG9yIHlvZmZzZXQgbm90IG11bHRpcGxlIG9mIDQiKTsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAod2lkdGggLSB4b2Zm
c2V0ID4gdGV4LT5nZXRXaWR0aCh0YXJnZXQsIGxldmVsKQorICAgICAgICAgICAgfHwgaGVpZ2h0
IC0geW9mZnNldCA+IHRleC0+Z2V0SGVpZ2h0KHRhcmdldCwgbGV2ZWwpKSB7CisgICAgICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04s
IGZ1bmN0aW9uTmFtZSwgImRpbWVuc2lvbnMgb3V0IG9mIHJhbmdlIik7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlQ29tcHJlc3Nl
ZFRleERpbWVuc2lvbnMoZnVuY3Rpb25OYW1lLCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
KTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30K
KwogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlRHJhd01vZGUoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSBtb2RlKQogewogICAgIHN3aXRjaCAobW9kZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aAppbmRleCBiODFjMmIwNzdlNjFkNWZhNGYwNWFjYmU3NTAyOGVkNjE0ZDY4YjMwLi4wNDQ5ZWFk
ZTFiMDBjZDVkOWUyY2Q1OGE1MDNiNjVhN2RjZDVjZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaApAQCAtNTIsNyArNTIsNyBA
QCBjbGFzcyBXZWJHTEFjdGl2ZUluZm87CiBjbGFzcyBXZWJHTEJ1ZmZlcjsKIGNsYXNzIFdlYkdM
Q29udGV4dEdyb3VwOwogY2xhc3MgV2ViR0xDb250ZXh0T2JqZWN0OwotY2xhc3MgV2ViR0xDb21w
cmVzc2VkVGV4dHVyZXM7CitjbGFzcyBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzsKIGNsYXNz
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM7CiBjbGFzcyBXZWJHTERlYnVnUmVuZGVyZXJJbmZvOwog
Y2xhc3MgV2ViR0xEZWJ1Z1NoYWRlcnM7CkBAIC0zMjEsNyArMzIxLDcgQEAgcHVibGljOgogICAg
IGZyaWVuZCBjbGFzcyBXZWJHTE9iamVjdDsKICAgICBmcmllbmQgY2xhc3MgT0VTVmVydGV4QXJy
YXlPYmplY3Q7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdMRGVidWdTaGFkZXJzOwotICAgIGZyaWVu
ZCBjbGFzcyBXZWJHTENvbXByZXNzZWRUZXh0dXJlczsKKyAgICBmcmllbmQgY2xhc3MgV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEM7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrOwogCiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KEhU
TUxDYW52YXNFbGVtZW50KiwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIEdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dGVzKTsKQEAgLTM2Nyw2ICszNjcsOSBAQCBwdWJsaWM6CiAKICAg
ICBib29sIHZhbGlkYXRlV2ViR0xPYmplY3QoY29uc3QgY2hhciosIFdlYkdMT2JqZWN0Kik7CiAK
KyAgICAvLyBBZGRzIGEgY29tcHJlc3NlZCB0ZXh0dXJlIGZvcm1hdC4KKyAgICB2b2lkIGFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEdDM0RlbnVtKTsKKwogI2lmIEVOQUJMRShWSURFTykKICAg
ICBQYXNzUmVmUHRyPEltYWdlPiB2aWRlb0ZyYW1lVG9JbWFnZShIVE1MVmlkZW9FbGVtZW50Kiwg
RXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCkBAIC00NDMsNiArNDQ2LDggQEAgcHVibGljOgogICAg
IFJlZlB0cjxXZWJHTFRleHR1cmU+IG1fYmxhY2tUZXh0dXJlMkQ7CiAgICAgUmVmUHRyPFdlYkdM
VGV4dHVyZT4gbV9ibGFja1RleHR1cmVDdWJlTWFwOwogCisgICAgVmVjdG9yPEdDM0RlbnVtPiBt
X2NvbXByZXNzZWRUZXh0dXJlRm9ybWF0czsKKwogICAgIC8vIEZpeGVkLXNpemUgY2FjaGUgb2Yg
cmV1c2FibGUgaW1hZ2UgYnVmZmVycyBmb3IgdmlkZW8gdGV4SW1hZ2UyRCBjYWxscy4KICAgICBj
bGFzcyBMUlVJbWFnZUJ1ZmZlckNhY2hlIHsKICAgICBwdWJsaWM6CkBAIC01MDAsNyArNTA1LDcg
QEAgcHVibGljOgogICAgIE93blB0cjxXZWJHTExvc2VDb250ZXh0PiBtX3dlYmdsTG9zZUNvbnRl
eHQ7CiAgICAgT3duUHRyPFdlYkdMRGVidWdSZW5kZXJlckluZm8+IG1fd2ViZ2xEZWJ1Z1JlbmRl
cmVySW5mbzsKICAgICBPd25QdHI8V2ViR0xEZWJ1Z1NoYWRlcnM+IG1fd2ViZ2xEZWJ1Z1NoYWRl
cnM7Ci0gICAgT3duUHRyPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzPiBtX3dlYmdsQ29tcHJlc3Nl
ZFRleHR1cmVzOworICAgIE93blB0cjxXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQz4gbV93ZWJn
bENvbXByZXNzZWRUZXh0dXJlUzNUQzsKIAogICAgIC8vIEhlbHBlcnMgZm9yIGdldFBhcmFtZXRl
ciBhbmQgb3RoZXJzCiAgICAgV2ViR0xHZXRJbmZvIGdldEJvb2xlYW5QYXJhbWV0ZXIoR0MzRGVu
dW0pOwpAQCAtNTg4LDYgKzU5MywyNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMpOwogCisgICAgLy8gSGVscGVyIGZ1
bmN0aW9uIHRvIHZhbGlkYXRlIGNvbXByZXNzZWQgdGV4dHVyZSBkYXRhIGlzIGNvcnJlY3Qgc2l6
ZQorICAgIC8vIGZvciB0aGUgZ2l2ZW4gZm9ybWF0IGFuZCBkaW1lbnNpb25zLgorICAgIGJvb2wg
dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBH
QzNEc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0MzRGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcqIHBpeGVscyk7CisKKyAgICAvLyBIZWxw
ZXIgZnVuY3Rpb24gZm9yIHZhbGlkYXRpbmcgY29tcHJlc3NlZCB0ZXh0dXJlIGZvcm1hdHMuCisg
ICAgYm9vbCB2YWxpZGF0ZUNvbXByZXNzZWRUZXhGb3JtYXQoR0MzRGVudW0gZm9ybWF0KTsKKwor
ICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBjb21wcmVzc2VkIHRleHR1cmUgZGlt
ZW5zaW9ucyBhcmUgdmFsaWQgZm9yCisgICAgLy8gdGhlIGdpdmVuIGZvcm1hdC4KKyAgICBib29s
IHZhbGlkYXRlQ29tcHJlc3NlZFRleERpbWVuc2lvbnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1l
LCBHQzNEaW50IGxldmVsLCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0Rl
bnVtIGZvcm1hdCk7CisKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgY29tcHJl
c3NlZCB0ZXh0dXJlIGRpbWVuc2lvbnMgYXJlIHZhbGlkIGZvcgorICAgIC8vIHRoZSBnaXZlbiBm
b3JtYXQuCisgICAgYm9vbCB2YWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJEaW1lbnNpb25zKGNvbnN0
IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNE
aW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNE
ZW51bSBmb3JtYXQsIFdlYkdMVGV4dHVyZSopOworCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRv
IHZhbGlkYXRlIG1vZGUgZm9yIGRyYXd7QXJyYXlzL0VsZW1lbnRzfS4KICAgICBib29sIHZhbGlk
YXRlRHJhd01vZGUoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRs
CmluZGV4IDRkOTkyYzFlNTE4NzBkNGNkNWFhNjg5YzQxNDA4NjJlNjVmZTU5MjYuLjZkYjgxMWRk
OGNjMzNmMzQ2ZTVmNmIwMWEwMTIyZWJlNjBiMzIwNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbApAQCAtMjA2LDcgKzIw
Niw2IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgLyogICAgICBURVhUVVJFX1dSQVBfUyAqLwog
ICAgICAgICAvKiAgICAgIFRFWFRVUkVfV1JBUF9UICovCiAKLSAgICAgICAgY29uc3QgdW5zaWdu
ZWQgaW50IE5VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyA9IDB4ODZBMjsKICAgICAgICAg
Y29uc3QgdW5zaWduZWQgaW50IENPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTICAgICA9IDB4ODZB
MzsKIAogICAgICAgICAvKiBIaW50TW9kZSAqLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDViN2QwYjRiOTU0NmQ5ZWM2YTk2
YTJlMTc4NmU5ZDY2OWIyZWUyMTkuLjg5ODllMjBjMDAwOWVmMmM3ODhmOTA0YTY4OGVmZTVmODM4
YWE0MTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMi0wNiAgR3JlZ2cgVGF2YXJlcyAg
PGdtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBuZXcgV0VCR0wgY29tcHJl
c3NlZCB0ZXh0dXJlIGV4dGVuc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc3MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9jb25zdGFudHMuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxscy5odG1sOgorCiAyMDEyLTAyLTA3ICBF
dWdlbmUgR2lyYXJkICA8Z2lyYXJkQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREIg
Y3JlYXRlSW5kZXggc2hvdWxkIGZhaWwgaWYgb3B0aW9ucyBhcmcgaXMgaW52YWxpZApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29uc3RhbnRzLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb25zdGFudHMuaHRtbAppbmRleCBlOTJhMzFlOWM0
ZTVmYWI1ZGJiNzdlODIzOTkxOGRjMjQwY2FiNDc1Li5mMzZjNWJmY2MxZTRkMDEzNjMyZTQ1YmRj
NWJhNDg4ZmVkNTM0ODBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9jb25zdGFudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb25z
dGFudHMuaHRtbApAQCAtMTk0LDcgKzE5NCw2IEBAIFNBTVBMRV9DT1ZFUkFHRV9JTlZFUlQgICAg
ICAgICA6IDB4ODBBQiwKICAgICAvKiAgICAgIFRFWFRVUkVfV1JBUF9TICovCiAgICAgLyogICAg
ICBURVhUVVJFX1dSQVBfVCAqLwogICAgIAotTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRT
IDogMHg4NkEyLAogQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMgICAgIDogMHg4NkEzLAogICAg
IAogICAgIC8qIEhpbnRNb2RlICovCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9nbC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dAppbmRleCA5YWVlNDU5ZmYzYWRiOTcw
ZTg4YzMzMDY2OGU4ZjI5ODA4MGQ4ODE5Li5hZjBhMmEzZDQyOWRlYWZiNWQ4NjUyZjk0NjE5ZGM1
M2RlYWNmZWY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1n
ZXQtY2FsbHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L2dsLWdldC1jYWxscy1leHBlY3RlZC50eHQKQEAgLTc1LDcgKzc1LDcgQEAgUEFTUyBjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LlZJRVdQT1JUKSBpcyBbMCwgMCwgMiwgMl0KIFBBU1MgY29u
dGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTKSA+
PSAxNiBpcyB0cnVlCiBQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX1ZFUlRF
WF9VTklGT1JNX1ZFQ1RPUlMpID49IDEyOCBpcyB0cnVlCiBQQVNTIGNvbnRleHQuZ2V0UGFyYW1l
dGVyKGNvbnRleHQuTUFYX1ZBUllJTkdfVkVDVE9SUykgPj0gOCBpcyB0cnVlCi1QQVNTIGNvbnRl
eHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTKSBp
cyAwCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQ09NUFJFU1NFRF9URVhUVVJF
X0ZPUk1BVFMpIGlzIFtdCiAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMuaHRtbAppbmRleCAy
ZGVlMzgxZTU5NjM3YTMzNWQ4YTRlOWEwNzY0MGMyMWM5ZTc0NWFlLi5hMWJiZjU4Nzg0ZGNmZDhm
NmM4ZGM0ZGNmOGQ2MzJhM2M3NGJjZDNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9nbC1nZXQtY2FsbHMuaHRtbApAQCAtMTA3LDcgKzEwNyw3IEBAIGVsc2UgewogICAg
IHNob3VsZEJlVHJ1ZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5NQVhfRlJBR01FTlRf
VU5JRk9STV9WRUNUT1JTKSA+PSAxNicpOwogICAgIHNob3VsZEJlVHJ1ZSgnY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUykgPj0gMTI4Jyk7CiAg
ICAgc2hvdWxkQmVUcnVlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9WQVJZSU5H
X1ZFQ1RPUlMpID49IDgnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29u
dGV4dC5OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMpJywgJzAnKTsKKyAgICBzaG91bGRC
ZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFU
UyknLCAnW10nKTsKIH0KIAogZGVidWcoIiIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>