<?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>103897</bug_id>
          
          <creation_ts>2012-12-03 08:24:15 -0800</creation_ts>
          <short_desc>[chromium] Remove linux theme related files and switch to default</short_desc>
          <delta_ts>2012-12-07 13:35:29 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>103958</dependson>
    
    <dependson>104212</dependson>
    
    <dependson>104231</dependson>
    
    <dependson>104233</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Scott Violet">sky</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>peter+ews</cc>
    
    <cc>tasak</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>781480</commentid>
    <comment_count>0</comment_count>
    <who name="Scott Violet">sky</who>
    <bug_when>2012-12-03 08:24:15 -0800</bug_when>
    <thetext>Now that Chrome has switched from using the linux theme related files to those named &apos;default&apos;, we should be able to safely remove the existing linux theme files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781510</commentid>
    <comment_count>1</comment_count>
      <attachid>177265</attachid>
    <who name="Scott Violet">sky</who>
    <bug_when>2012-12-03 09:04:03 -0800</bug_when>
    <thetext>Created attachment 177265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781517</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-03 09:09:16 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781537</commentid>
    <comment_count>3</comment_count>
      <attachid>177265</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-12-03 09:33:38 -0800</bug_when>
    <thetext>Comment on attachment 177265
Patch

Attachment 177265 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15086985</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781687</commentid>
    <comment_count>4</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-12-03 11:19:35 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 177265 [details])
&gt; Attachment 177265 [details] did not pass cr-android-ews (chromium-android):
&gt; Output: http://queues.webkit.org/results/15086985

Looks like RenderThemeChromiumAndroid inherits from RenderThemeChromiumLinux.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781856</commentid>
    <comment_count>5</comment_count>
      <attachid>177322</attachid>
    <who name="Scott Violet">sky</who>
    <bug_when>2012-12-03 13:56:01 -0800</bug_when>
    <thetext>Created attachment 177322
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781873</commentid>
    <comment_count>6</comment_count>
      <attachid>177322</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-12-03 14:13:35 -0800</bug_when>
    <thetext>Comment on attachment 177322
Patch

Attachment 177322 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15106641</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781890</commentid>
    <comment_count>7</comment_count>
      <attachid>177333</attachid>
    <who name="Scott Violet">sky</who>
    <bug_when>2012-12-03 14:32:30 -0800</bug_when>
    <thetext>Created attachment 177333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782035</commentid>
    <comment_count>8</comment_count>
      <attachid>177333</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-03 16:49:04 -0800</bug_when>
    <thetext>Comment on attachment 177333
Patch

Rejecting attachment 177333 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ripts/update-webkit line 152.

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;, &apos;--force-update&apos;]&quot; exit_code: 2
Updating OpenSource
From http://git.chromium.org/external/Webkit
   c946dc2..4fff33e  HEAD       -&gt; origin/HEAD
error: Ref refs/remotes/origin/master is at 4fff33ef2c3643b9c03a8cb2127d86b4da5e5c22 but expected c946dc25a0c0757b0c8da5577f31cb3705943299
 ! c946dc2..4fff33e  master     -&gt; origin/master  (unable to update local ref)
Died at Tools/Scripts/update-webkit line 152.

Full output: http://queues.webkit.org/results/15103725</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782065</commentid>
    <comment_count>9</comment_count>
      <attachid>177333</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-03 17:21:54 -0800</bug_when>
    <thetext>Comment on attachment 177333
Patch

Clearing flags on attachment: 177333

Committed r136460: &lt;http://trac.webkit.org/changeset/136460&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782066</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-03 17:21:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782113</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-03 18:29:09 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 103958</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782123</commentid>
    <comment_count>12</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-12-03 18:47:19 -0800</bug_when>
    <thetext>Would you update chromium source, webkit/support/test_webkit_platform_support.cc?

The file includes WebThemeEngine.h. The following is compile error log:

In file included from webkit/support/test_webkit_platform_support.cc:65:
./third_party/WebKit/Source/WebKit/chromium/public/platform/linux/WebThemeEngine.h:31:10: fatal error: &apos;../../../../../Platform/chromium/public/linux/WebThemeEngine.h&apos; file not found
#include &quot;../../../../../Platform/chromium/public/linux/WebThemeEngine.h&quot;

Best regards,
Takashi Sakamoto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783825</commentid>
    <comment_count>13</comment_count>
      <attachid>177775</attachid>
    <who name="Scott Violet">sky</who>
    <bug_when>2012-12-05 09:20:16 -0800</bug_when>
    <thetext>Created attachment 177775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783828</commentid>
    <comment_count>14</comment_count>
    <who name="Scott Violet">sky</who>
    <bug_when>2012-12-05 09:22:34 -0800</bug_when>
    <thetext>Latest patch should work now that test_webkit_platform_support.cc has been updated in the chrome side. Additionally the third patchset missed one file that is no longer needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784347</commentid>
    <comment_count>15</comment_count>
      <attachid>177775</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 17:39:25 -0800</bug_when>
    <thetext>Comment on attachment 177775
Patch

Clearing flags on attachment: 177775

Committed r136784: &lt;http://trac.webkit.org/changeset/136784&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784348</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 17:39:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784573</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 21:37:02 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 104212</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785930</commentid>
    <comment_count>18</comment_count>
      <attachid>178229</attachid>
    <who name="Scott Violet">sky</who>
    <bug_when>2012-12-07 09:36:45 -0800</bug_when>
    <thetext>Created attachment 178229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785931</commentid>
    <comment_count>19</comment_count>
    <who name="Scott Violet">sky</who>
    <bug_when>2012-12-07 09:38:25 -0800</bug_when>
    <thetext>Patchset 5 should be the same as 4. Hopefully it&apos;ll take this time as necessary bits on the chrome side have been updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786021</commentid>
    <comment_count>20</comment_count>
      <attachid>178229</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 11:48:53 -0800</bug_when>
    <thetext>Comment on attachment 178229
Patch

Attachment 178229 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15185463

New failing tests:
inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786102</commentid>
    <comment_count>21</comment_count>
      <attachid>178229</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 13:35:23 -0800</bug_when>
    <thetext>Comment on attachment 178229
Patch

Clearing flags on attachment: 178229

Committed r136979: &lt;http://trac.webkit.org/changeset/136979&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786103</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 13:35:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177265</attachid>
            <date>2012-12-03 09:04:03 -0800</date>
            <delta_ts>2012-12-03 13:55:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103897-20121203090129.patch</filename>
            <type>text/plain</type>
            <size>63407</size>
            <attacher name="Scott Violet">sky</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2NDAzKQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEyLTAzICBTY290
dCBWaW9sZXQgIDxza3lAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVtb3Zl
IGxpbnV4IHRoZW1lIHJlbGF0ZWQgZmlsZXMgYW5kIHN3aXRjaCB0byBkZWZhdWx0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM4OTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9y
bWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2Ug
YWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAq
IFBsYXRmb3JtLmd5cGk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlRoZW1l
RW5naW5lLmg6IFJlbW92ZWQuCisKIDIwMTItMTEtMjggIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9t
bXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgQWRkIGJhc2ljIGltcGxlbWVudGF0aW9uIGZvciBN
ZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vUGxh
dGZvcm0uZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQko
cmV2aXNpb24gMTM2MTc4KQorKysgU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkJKHdvcmtp
bmcgY29weSkKQEAgLTE1Miw3ICsxNTIsNiBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1Ymxp
Yy9saW51eC9XZWJGb250SW5mby5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvbGlu
dXgvV2ViRm9udFJlbmRlclN0eWxlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9s
aW51eC9XZWJTYW5kYm94U3VwcG9ydC5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMv
bGludXgvV2ViVGhlbWVFbmdpbmUuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL21h
Yy9XZWJTYW5kYm94U3VwcG9ydC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvbWFj
L1dlYlRoZW1lRW5naW5lLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy93aW4vV2Vi
U2FuZGJveFN1cHBvcnQuaCcsCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L2xpbnV4L1dlYlRoZW1lRW5naW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9saW51eC9XZWJUaGVtZUVuZ2luZS5oCShyZXZpc2lvbiAxMzYxNzgpCisr
KyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlRoZW1lRW5naW5lX2gK
LSNkZWZpbmUgV2ViVGhlbWVFbmdpbmVfaAotCi0jaW5jbHVkZSAiLi4vV2ViQ2FudmFzLmgiCi0j
aW5jbHVkZSAiLi4vV2ViQ29sb3IuaCIKLSNpbmNsdWRlICIuLi9XZWJTaXplLmgiCi0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2ViUmVjdDsKLQotY2xhc3MgV2ViVGhlbWVFbmdpbmUg
ewotcHVibGljOgotICAgIC8vIFRoZSBVSSBwYXJ0IHdoaWNoIGlzIGJlaW5nIGFjY2Vzc2VkLgot
ICAgIGVudW0gUGFydCB7Ci0gICAgICAgIC8vIFNjcm9sbGJhclRoZW1lIHBhcnRzCi0gICAgICAg
IFBhcnRTY3JvbGxiYXJEb3duQXJyb3csCi0gICAgICAgIFBhcnRTY3JvbGxiYXJMZWZ0QXJyb3cs
Ci0gICAgICAgIFBhcnRTY3JvbGxiYXJSaWdodEFycm93LAotICAgICAgICBQYXJ0U2Nyb2xsYmFy
VXBBcnJvdywKLSAgICAgICAgUGFydFNjcm9sbGJhckhvcml6b250YWxUaHVtYiwKLSAgICAgICAg
UGFydFNjcm9sbGJhclZlcnRpY2FsVGh1bWIsCi0gICAgICAgIFBhcnRTY3JvbGxiYXJIb3Jpem9u
dGFsVHJhY2ssCi0gICAgICAgIFBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrLAotCi0gICAgICAg
IC8vIFJlbmRlclRoZW1lIHBhcnRzCi0gICAgICAgIFBhcnRDaGVja2JveCwKLSAgICAgICAgUGFy
dFJhZGlvLAotICAgICAgICBQYXJ0QnV0dG9uLAotICAgICAgICBQYXJ0VGV4dEZpZWxkLAotICAg
ICAgICBQYXJ0TWVudUxpc3QsCi0gICAgICAgIFBhcnRTbGlkZXJUcmFjaywKLSAgICAgICAgUGFy
dFNsaWRlclRodW1iLAotICAgICAgICBQYXJ0SW5uZXJTcGluQnV0dG9uLAotICAgICAgICBQYXJ0
UHJvZ3Jlc3NCYXIKLSAgICB9OwotCi0gICAgLy8gVGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGFz
c29jaWF0ZWQgUGFydC4KLSAgICBlbnVtIFN0YXRlIHsKLSAgICAgICAgU3RhdGVEaXNhYmxlZCwK
LSAgICAgICAgU3RhdGVIb3ZlciwKLSAgICAgICAgU3RhdGVOb3JtYWwsCi0gICAgICAgIFN0YXRl
UHJlc3NlZCwKLSAgICB9OwotCi0gICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgZHJhd2luZyB0
aGUgUGFydFNjcm9sbGJhckhvcml6b250YWxUcmFjayBhbmQKLSAgICAvLyBQYXJ0U2Nyb2xsYmFy
VmVydGljYWxUcmFjay4KLSAgICBzdHJ1Y3QgU2Nyb2xsYmFyVHJhY2tFeHRyYVBhcmFtcyB7Ci0g
ICAgICAgIC8vIFRoZSBib3VuZHMgb2YgdGhlIGVudGlyZSB0cmFjaywgYXMgb3Bwb3NlZCB0byB0
aGUgcGFydCBiZWluZyBwYWludGVkLgotICAgICAgICBpbnQgdHJhY2tYOwotICAgICAgICBpbnQg
dHJhY2tZOwotICAgICAgICBpbnQgdHJhY2tXaWR0aDsKLSAgICAgICAgaW50IHRyYWNrSGVpZ2h0
OwotICAgIH07Ci0KLSAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0Q2hlY2tib3gsIFBh
cnRQdXNoQnV0dG9uIGFuZCBQYXJ0UmFkaW8uCi0gICAgc3RydWN0IEJ1dHRvbkV4dHJhUGFyYW1z
IHsKLSAgICAgICAgYm9vbCBjaGVja2VkOwotICAgICAgICBib29sIGluZGV0ZXJtaW5hdGU7IC8v
IFdoZXRoZXIgdGhlIGJ1dHRvbiBzdGF0ZSBpcyBpbmRldGVybWluYXRlLgotICAgICAgICBib29s
IGlzRGVmYXVsdDsgLy8gV2hldGhlciB0aGUgYnV0dG9uIGlzIGRlZmF1bHQgYnV0dG9uLgotICAg
ICAgICBib29sIGhhc0JvcmRlcjsKLSAgICAgICAgV2ViQ29sb3IgYmFja2dyb3VuZENvbG9yOwot
ICAgIH07Ci0KLSAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0VGV4dEZpZWxkCi0gICAg
c3RydWN0IFRleHRGaWVsZEV4dHJhUGFyYW1zIHsKLSAgICAgICAgYm9vbCBpc1RleHRBcmVhOwot
ICAgICAgICBib29sIGlzTGlzdGJveDsKLSAgICAgICAgV2ViQ29sb3IgYmFja2dyb3VuZENvbG9y
OwotICAgIH07Ci0KLSAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0TWVudUxpc3QKLSAg
ICBzdHJ1Y3QgTWVudUxpc3RFeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgaGFzQm9yZGVyOwot
ICAgICAgICBib29sIGhhc0JvcmRlclJhZGl1czsKLSAgICAgICAgaW50IGFycm93WDsKLSAgICAg
ICAgaW50IGFycm93WTsKLSAgICAgICAgV2ViQ29sb3IgYmFja2dyb3VuZENvbG9yOwotICAgIH07
Ci0KLSAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0U2xpZGVyVHJhY2sgYW5kIFBhcnRT
bGlkZXJUaHVtYgotICAgIHN0cnVjdCBTbGlkZXJFeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wg
dmVydGljYWw7Ci0gICAgICAgIGJvb2wgaW5EcmFnOwotICAgIH07Ci0KLSAgICAvLyBFeHRyYSBw
YXJhbWV0ZXJzIGZvciBQYXJ0SW5uZXJTcGluQnV0dG9uCi0gICAgc3RydWN0IElubmVyU3BpbkJ1
dHRvbkV4dHJhUGFyYW1zIHsKLSAgICAgICAgYm9vbCBzcGluVXA7Ci0gICAgICAgIGJvb2wgcmVh
ZE9ubHk7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRQcm9ncmVz
c0JhcgotICAgIHN0cnVjdCBQcm9ncmVzc0JhckV4dHJhUGFyYW1zIHsKLSAgICAgICAgYm9vbCBk
ZXRlcm1pbmF0ZTsKLSAgICAgICAgaW50IHZhbHVlUmVjdFg7Ci0gICAgICAgIGludCB2YWx1ZVJl
Y3RZOwotICAgICAgICBpbnQgdmFsdWVSZWN0V2lkdGg7Ci0gICAgICAgIGludCB2YWx1ZVJlY3RI
ZWlnaHQ7Ci0gICAgfTsKLQotICAgIHVuaW9uIEV4dHJhUGFyYW1zIHsKLSAgICAgICAgU2Nyb2xs
YmFyVHJhY2tFeHRyYVBhcmFtcyBzY3JvbGxiYXJUcmFjazsKLSAgICAgICAgQnV0dG9uRXh0cmFQ
YXJhbXMgYnV0dG9uOwotICAgICAgICBUZXh0RmllbGRFeHRyYVBhcmFtcyB0ZXh0RmllbGQ7Ci0g
ICAgICAgIE1lbnVMaXN0RXh0cmFQYXJhbXMgbWVudUxpc3Q7Ci0gICAgICAgIFNsaWRlckV4dHJh
UGFyYW1zIHNsaWRlcjsKLSAgICAgICAgSW5uZXJTcGluQnV0dG9uRXh0cmFQYXJhbXMgaW5uZXJT
cGluOwotICAgICAgICBQcm9ncmVzc0JhckV4dHJhUGFyYW1zIHByb2dyZXNzQmFyOwotICAgIH07
Ci0KLSAgICAvLyBHZXRzIHRoZSBzaXplIG9mIHRoZSBnaXZlbiB0aGVtZSBwYXJ0LiBGb3IgdmFy
aWFibGUgc2l6ZWQgaXRlbXMKLSAgICAvLyBsaWtlIHZlcnRpY2FsIHNjcm9sbGJhciB0aHVtYnMs
IHRoZSB3aWR0aCB3aWxsIGJlIHRoZSByZXF1aXJlZCB3aWR0aCBvZgotICAgIC8vIHRoZSB0cmFj
ayB3aGlsZSB0aGUgaGVpZ2h0IHdpbGwgYmUgdGhlIG1pbmltdW0gaGVpZ2h0LgotICAgIHZpcnR1
YWwgV2ViU2l6ZSBnZXRTaXplKFBhcnQpIHsgcmV0dXJuIFdlYlNpemUoKTsgfQotICAgIC8vIFBh
aW50IHRoZSBnaXZlbiB0aGUgZ2l2ZW4gdGhlbWUgcGFydC4KLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoV2ViQ2FudmFzKiwgUGFydCwgU3RhdGUsIGNvbnN0IFdlYlJlY3QmLCBjb25zdCBFeHRyYVBh
cmFtcyopIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gMTM2NDAzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMTItMDMgIFNjb3R0IFZpb2xldCAg
PHNreUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgbGludXggdGhl
bWUgcmVsYXRlZCBmaWxlcyBhbmQgc3dpdGNoIHRvIGRlZmF1bHQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzg5NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGxpbnV4IHRoZW1lIHJlbGF0ZWQgZmlsZXMg
YXJlIG5vdyBuYW1lZCBkZWZhdWx0LiBUaGlzIHJlbW92ZXMKKyAgICAgICAgbGludXggZmlsZXMg
dXBkYXRlcyBidWlsZCBmaWxlcyBhbmQgcmVtb3ZlcyBpZmRlZnMuCisKKyAgICAgICAgQ29kZSBj
bGVhbnVwLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5
cDogVXBkYXRlIGJ1aWxkIHJ1bGVzCisgICAgICAgICogV2ViQ29yZS5neXBpOiBVcGRhdGUgYnVp
bGQgcnVsZXMKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21p
dW1MaW51eC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZv
cm1UaGVtZUNocm9taXVtTGludXguaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5oOiBSZW1vdmVk
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguaDogUmVt
b3ZlZC4KKwogMjAxMi0xMi0wMyAgWW9uZyBMaSAgPHlvbGlAcmltLmNvbT4KIAogICAgICAgICBF
TkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKTogU2hvdWxkIHVzZSBUVVJCT19KUEVH
X1JHQl9TV0laWkxFIGZhc3QgcGF0aCBmb3Igbm9uLXNjYWxlZCBpbWFnZXMKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkJKHJldmlzaW9uIDEzNjE3OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQkod29ya2luZyBjb3B5KQpAQCAtMzQ1OCw4ICszNDU4LDYgQEAKICAgICAgICAgICAgICdyZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUZvbnRQcm92aWRlci5oJywKICAgICAgICAgICAgICdy
ZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUZvbnRQcm92aWRlckxpbnV4LmNwcCcsCiAgICAg
ICAgICAgICAncmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Gb250UHJvdmlkZXJXaW4uY3Bw
JywKLSAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcCcs
Ci0gICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oJywKICAg
ICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5oJywKICAgICAgICAg
ICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5tbScsCiAgICAgICAgICAgICAn
cmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmNwcCcsCkBAIC00NjY5LDggKzQ2Njcs
NiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZh
dWx0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNo
cm9taXVtRGVmYXVsdC5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVRoZW1lQ2hyb21pdW1MaW51eC5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVt
L1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL1BsYXRmb3JtV2lkZ2V0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVt
L1BvcHVwQ29udGFpbmVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUG9w
dXBDb250YWluZXIuaCcsCkBAIC00Njg5LDggKzQ2ODUsNiBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURl
ZmF1bHQuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUxpbnV4LmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bUxpbnV4LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hy
b21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbScsCiAgICAgICAgICAgICAncGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5jcHAnLApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAJKHJldmlzaW9uIDEzNjE3OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAw
LDE3ICsxNzAwLDEyIEBACiAgICAgICAgIH1dLAogICAgICAgICBbJ3VzZV9kZWZhdWx0X3JlbmRl
cl90aGVtZT09MScsIHsKICAgICAgICAgICAnc291cmNlcy8nOiBbCi0gICAgICAgICAgICBbJ2V4
Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguaCdd
LAotICAgICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhl
bWVDaHJvbWl1bUxpbnV4LmNwcCddLAogICAgICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bVdpbi5oJ10sCiAgICAgICAgICAgICBbJ2V4
Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtV2luLmNwcCdd
LAotICAgICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW1MaW51eC5jcHAnXSwKLSAgICAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaCddLAogICAgICAgICAgICAg
WydleGNsdWRlJywgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4u
Y3BwJ10sCiAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bVdpbi5oJ10sCiAgICAgICAgICAgXSwKLSAgICAgICAgfV0sCi0gICAg
ICAgIFsndXNlX2RlZmF1bHRfcmVuZGVyX3RoZW1lPT0wJywgeworICAgICAgICB9LCB7ICMgdXNl
X2RlZmF1bHRfcmVuZGVyX3RoZW1lPT0wCiAgICAgICAgICAgJ3NvdXJjZXMvJzogWwogICAgICAg
ICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1
bURlZmF1bHQuY3BwJ10sCiAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21p
dW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdC5oJ10sCkBAIC0yMDEzLDcgKzIwMDgsNiBA
QAogICAgICAgICB9XSwKICAgICAgICAgWyd1c2VfZGVmYXVsdF9yZW5kZXJfdGhlbWU9PTEnLCB7
CiAgICAgICAgICAgJ3NvdXJjZXMvJzogWwotICAgICAgICAgICAgWydleGNsdWRlJywgJ1JlbmRl
clRoZW1lQ2hyb21pdW1MaW51eC4qJ10sCiAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnUmVuZGVy
VGhlbWVDaHJvbWl1bVdpbi4qJ10sCiAgICAgICAgICAgXSwKICAgICAgICAgfV0sCkBAIC0yMDYw
LDcgKzIwNTQsNyBAQAogICAgICAgICBbJ09TPT0iYW5kcm9pZCInLCB7CiAgICAgICAgICAgJ3Nv
dXJjZXMvJzogWwogICAgICAgICAgICAgWydpbmNsdWRlJywgJ3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUNocm9taXVtRm9udFByb3ZpZGVyTGludXhcXC5jcHAkJ10sCi0gICAgICAgICAgICBbJ2luY2x1
ZGUnLCAncmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eFxcLmNwcCQnXSwKKyAgICAg
ICAgICAgIFsnaW5jbHVkZScsICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHRc
XC5jcHAkJ10sCiAgICAgICAgICAgXSwKICAgICAgICAgfSx7ICMgT1MhPSJhbmRyb2lkIgogICAg
ICAgICAgICdzb3VyY2VzLyc6IFsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5jcHAJ
KHJldmlzaW9uIDEzNjE3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bs
YXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyMjEgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVRoZW1lQ2hyb21pdW1M
aW51eC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVuc2lnbmVkIFBsYXRmb3JtVGhlbWVD
aHJvbWl1bUxpbnV4OjpzX3RodW1iSW5hY3RpdmVDb2xvciA9IDB4ZWFlYWVhOwotdW5zaWduZWQg
UGxhdGZvcm1UaGVtZUNocm9taXVtTGludXg6OnNfdGh1bWJBY3RpdmVDb2xvciA9IDB4ZjRmNGY0
OwotdW5zaWduZWQgUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXg6OnNfdHJhY2tDb2xvciA9IDB4
ZDNkM2QzOwotCi12b2lkIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRTY3JvbGxiYXJD
b2xvcnMoCi0gICAgU2tDb2xvciBpbmFjdGl2ZUNvbG9yLCBTa0NvbG9yIGFjdGl2ZUNvbG9yLCBT
a0NvbG9yIHRyYWNrQ29sb3IpCi17Ci0gICAgc190aHVtYkluYWN0aXZlQ29sb3IgPSBpbmFjdGl2
ZUNvbG9yOwotICAgIHNfdGh1bWJBY3RpdmVDb2xvciA9IGFjdGl2ZUNvbG9yOwotICAgIHNfdHJh
Y2tDb2xvciA9IHRyYWNrQ29sb3I7Ci19Ci0KLXN0YXRpYyBTa1NjYWxhciBjbGFtcChTa1NjYWxh
ciB2YWx1ZSwgU2tTY2FsYXIgbWluLCBTa1NjYWxhciBtYXgpCi17Ci0gICAgcmV0dXJuIHN0ZDo6
bWluKHN0ZDo6bWF4KHZhbHVlLCBtaW4pLCBtYXgpOwotfQotCi1Ta0NvbG9yIFBsYXRmb3JtVGhl
bWVDaHJvbWl1bUxpbnV4OjpzYXR1cmF0ZUFuZEJyaWdodGVuKGNvbnN0IFNrU2NhbGFyIGhzdlsz
XSwgU2tTY2FsYXIgc2F0dXJhdGVBbW91bnQsIFNrU2NhbGFyIGJyaWdodGVuQW1vdW50KQotewot
ICAgIFNrU2NhbGFyIGNvbG9yWzNdOwotICAgIGNvbG9yWzBdID0gaHN2WzBdOwotICAgIGNvbG9y
WzFdID0gY2xhbXAoaHN2WzFdICsgc2F0dXJhdGVBbW91bnQsIDAuMCwgMS4wKTsKLSAgICBjb2xv
clsyXSA9IGNsYW1wKGhzdlsyXSArIGJyaWdodGVuQW1vdW50LCAwLjAsIDEuMCk7Ci0gICAgcmV0
dXJuIFNrSFNWVG9Db2xvcihjb2xvcik7Ci19Ci0KLVNrQ29sb3IgUGxhdGZvcm1UaGVtZUNocm9t
aXVtTGludXg6Om91dGxpbmVDb2xvcihjb25zdCBTa1NjYWxhciBoc3YxWzNdLCBjb25zdCBTa1Nj
YWxhciBoc3YyWzNdKQotewotICAgIC8vIEdUSyBUaGVtZSBlbmdpbmVzIGhhdmUgd2F5IHRvbyBt
dWNoIGNvbnRyb2wgb3ZlciB0aGUgbGF5b3V0IG9mCi0gICAgLy8gdGhlIHNjcm9sbGJhci4gV2Ug
bWlnaHQgYmUgYWJsZSB0byBtb3JlIGNsb3NlbHkgYXBwcm94aW1hdGUgaXRzCi0gICAgLy8gbG9v
ay1hbmQtZmVlbCwgaWYgd2Ugc2VudCB3aG9sZSBpbWFnZXMgaW5zdGVhZCBvZiBqdXN0IGNvbG9y
cwotICAgIC8vIGZyb20gdGhlIGJyb3dzZXIgdG8gdGhlIHJlbmRlcmVyLiBCdXQgZXZlbiB0aGVu
LCBzb21lIHRoZW1lcwotICAgIC8vIHdvdWxkIGp1c3QgYnJlYWsuCi0gICAgLy8KLSAgICAvLyBT
bywgaW5zdGVhZCwgd2UgZG9uJ3QgZXZlbiB0cnkgdG8gMTAwJSByZXBsaWNhdGUgdGhlIGxvb2sg
b2YKLSAgICAvLyB0aGUgbmF0aXZlIHNjcm9sbGJhci4gV2UgcmVuZGVyIG91ciBvd24gdmVyc2lv
biwgYnV0IHdlIG1ha2UKLSAgICAvLyBzdXJlIHRvIHBpY2sgY29sb3JzIHRoYXQgYmxlbmQgaW4g
bmljZWx5IHdpdGggdGhlIHN5c3RlbSBHVEsKLSAgICAvLyB0aGVtZS4gSW4gbW9zdCBjYXNlcywg
d2UgY2FuIGp1c3Qgc2FtcGxlIGEgY291cGxlIG9mIHBpeGVscwotICAgIC8vIGZyb20gdGhlIHN5
c3RlbSBzY3JvbGxiYXIgYW5kIHVzZSB0aG9zZSBjb2xvcnMgdG8gZHJhdyBvdXIKLSAgICAvLyBz
Y3JvbGxiYXIuCi0gICAgLy8KLSAgICAvLyBUaGlzIHdvcmtzIGZpbmUgZm9yIHRoZSB0cmFjayBj
b2xvciBhbmQgdGhlIG92ZXJhbGwgdGh1bWIKLSAgICAvLyBjb2xvci4gQnV0IGl0IGZhaWxzIHNw
ZWN0YWN1bGFybHkgZm9yIHRoZSBvdXRsaW5lIGNvbG9yIHVzZWQKLSAgICAvLyBhcm91bmQgdGhl
IHRodW1iIHBpZWNlLiBOb3QgYWxsIHRoZW1lcyBoYXZlIGEgY2xlYXJseSBkZWZpbmVkCi0gICAg
Ly8gb3V0bGluZS4gRm9yIHNvbWUgb2YgdGhlbSBpdCBpcyBwYXJ0aWFsbHkgdHJhbnNwYXJlbnQs
IGFuZCBmb3IKLSAgICAvLyBvdGhlcnMgdGhlIHRoaWNrbmVzcyBpcyB2ZXJ5IHVucHJlZGljdGFi
bGUuCi0gICAgLy8KLSAgICAvLyBTbywgaW5zdGVhZCBvZiB0cnlpbmcgdG8gYXBwcm94aW1hdGUg
dGhlIHN5c3RlbSB0aGVtZSwgd2UKLSAgICAvLyBpbnN0ZWFkIHRyeSB0byBjb21wdXRlIGEgcmVh
c29uYWJsZSBsb29raW5nIGNob2ljZSBiYXNlZCBvbiB0aGUKLSAgICAvLyBrbm93biBjb2xvciBv
ZiB0aGUgdHJhY2sgYW5kIHRoZSB0aHVtYiBwaWVjZS4gVGhpcyBpcyBkaWZmaWN1bHQKLSAgICAv
LyB3aGVuIHRyeWluZyB0byBkZWFsIGJvdGggd2l0aCBoaWdoLSBhbmQgbG93LWNvbnRyYXN0IHRo
ZW1lcywKLSAgICAvLyBhbmQgYm90aCB3aXRoIHBvc2l0aXZlIGFuZCBpbnZlcnRlZCB0aGVtZXMu
Ci0gICAgLy8KLSAgICAvLyBUaGUgZm9sbG93aW5nIGNvZGUgaGFzIGJlZW4gdGVzdGVkIHRvIGxv
b2sgT0sgd2l0aCBhbGwgb2YgdGhlCi0gICAgLy8gZGVmYXVsdCBHVEsgdGhlbWVzLgotICAgIFNr
U2NhbGFyIG1pbkRpZmYgPSBjbGFtcCgoaHN2MVsxXSArIGhzdjJbMV0pICogMS4yLCAwLjI4LCAw
LjUpOwotICAgIFNrU2NhbGFyIGRpZmYgPSBjbGFtcChmYWJzKGhzdjFbMl0gLSBoc3YyWzJdKSAv
IDIsIG1pbkRpZmYsIDAuNSk7Ci0KLSAgICBpZiAoaHN2MVsyXSArIGhzdjJbMl0gPiAxLjApCi0g
ICAgICAgIGRpZmYgPSAtZGlmZjsKLQotICAgIHJldHVybiBzYXR1cmF0ZUFuZEJyaWdodGVuKGhz
djIsIC0wLjIsIGRpZmYpOwotfQotCi12b2lkIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4Ojpw
YWludEFycm93QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IEludFJlY3QmIHJlY3Qs
IEFycm93RGlyZWN0aW9uIGRpcmVjdGlvbiwgQ29udHJvbFN0YXRlcyBzdGF0ZXMpCi17Ci0gICAg
UGxhdGZvcm1Db250ZXh0U2tpYSogcGxhdGZvcm1Db250ZXh0ID0gZ2MtPnBsYXRmb3JtQ29udGV4
dCgpOwotICAgIGludCB3aWR0aE1pZGRsZSwgbGVuZ3RoTWlkZGxlOwotICAgIFNrUGFpbnQgcGFp
bnQ7Ci0gICAgaWYgKGRpcmVjdGlvbiA9PSBOb3J0aCB8fCBkaXJlY3Rpb24gPT0gU291dGgpIHsK
LSAgICAgICAgd2lkdGhNaWRkbGUgPSByZWN0LndpZHRoKCkgLyAyICsgMTsKLSAgICAgICAgbGVu
Z3RoTWlkZGxlID0gcmVjdC5oZWlnaHQoKSAvIDIgKyAxOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IGxlbmd0aE1pZGRsZSA9IHJlY3Qud2lkdGgoKSAvIDIgKyAxOwotICAgICAgICB3aWR0aE1pZGRs
ZSA9IHJlY3QuaGVpZ2h0KCkgLyAyICsgMTsKLSAgICB9Ci0KLSAgICAvLyBDYWxjdWxhdGUgYnV0
dG9uIGNvbG9yLgotICAgIFNrU2NhbGFyIHRyYWNrSFNWWzNdOwotICAgIFNrQ29sb3JUb0hTVih0
cmFja0NvbG9yKCksIHRyYWNrSFNWKTsKLSAgICBTa0NvbG9yIGJ1dHRvbkNvbG9yID0gc2F0dXJh
dGVBbmRCcmlnaHRlbih0cmFja0hTViwgMCwgMC4yKTsKLSAgICBTa0NvbG9yIGJhY2tncm91bmRD
b2xvciA9IGJ1dHRvbkNvbG9yOwotICAgIGlmIChzdGF0ZXMgJiBQcmVzc2VkU3RhdGUpIHsKLSAg
ICAgICAgU2tTY2FsYXIgYnV0dG9uSFNWWzNdOwotICAgICAgICBTa0NvbG9yVG9IU1YoYnV0dG9u
Q29sb3IsIGJ1dHRvbkhTVik7Ci0gICAgICAgIGJ1dHRvbkNvbG9yID0gc2F0dXJhdGVBbmRCcmln
aHRlbihidXR0b25IU1YsIDAsIC0wLjEpOwotICAgIH0gZWxzZSBpZiAoc3RhdGVzICYgSG92ZXJT
dGF0ZSkgewotICAgICAgICBTa1NjYWxhciBidXR0b25IU1ZbM107Ci0gICAgICAgIFNrQ29sb3JU
b0hTVihidXR0b25Db2xvciwgYnV0dG9uSFNWKTsKLSAgICAgICAgYnV0dG9uQ29sb3IgPSBzYXR1
cmF0ZUFuZEJyaWdodGVuKGJ1dHRvbkhTViwgMCwgMC4wNSk7Ci0gICAgfQotCi0gICAgU2tJUmVj
dCBza3JlY3Q7Ci0gICAgc2tyZWN0LnNldChyZWN0LngoKSwgcmVjdC55KCksIHJlY3QueCgpICsg
cmVjdC53aWR0aCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOwotICAgIC8vIFBhaW50IHRo
ZSBiYWNrZ3JvdW5kICh0aGUgYXJlYSB2aXNpYmxlIGJlaGluZCB0aGUgcm91bmRlZCBjb3JuZXJz
KS4KLSAgICBwYWludC5zZXRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOwotICAgIHBsYXRmb3JtQ29u
dGV4dC0+ZHJhd0lSZWN0KHNrcmVjdCwgcGFpbnQpOwotCi0gICAgLy8gUGFpbnQgdGhlIGJ1dHRv
bidzIG91dGxpbmUgYW5kIGZpbGwgdGhlIG1pZGRsZQotICAgIFNrUGF0aCBvdXRsaW5lOwotICAg
IHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBOb3J0aDoKLSAgICAgICAgb3V0bGluZS5t
b3ZlVG8ocmVjdC54KCkgKyAwLjUsIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSArIDAuNSk7Ci0g
ICAgICAgIG91dGxpbmUuckxpbmVUbygwLCAtKHJlY3QuaGVpZ2h0KCkgLSAyKSk7Ci0gICAgICAg
IG91dGxpbmUuckxpbmVUbygyLCAtMik7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbyhyZWN0Lndp
ZHRoKCkgLSA1LCAwKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKDIsIDIpOwotICAgICAgICBv
dXRsaW5lLnJMaW5lVG8oMCwgcmVjdC5oZWlnaHQoKSAtIDIpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFNvdXRoOgotICAgICAgICBvdXRsaW5lLm1vdmVUbyhyZWN0LngoKSArIDAuNSwgcmVj
dC55KCkgLSAwLjUpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMCwgcmVjdC5oZWlnaHQoKSAt
IDIpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMiwgMik7Ci0gICAgICAgIG91dGxpbmUuckxp
bmVUbyhyZWN0LndpZHRoKCkgLSA1LCAwKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKDIsIC0y
KTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKDAsIC0ocmVjdC5oZWlnaHQoKSAtIDIpKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFYXN0OgotICAgICAgICBvdXRsaW5lLm1vdmVUbyhyZWN0
LngoKSAtIDAuNSwgcmVjdC55KCkgKyAwLjUpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8ocmVj
dC53aWR0aCgpIC0gMiwgMCk7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbygyLCAyKTsKLSAgICAg
ICAgb3V0bGluZS5yTGluZVRvKDAsIHJlY3QuaGVpZ2h0KCkgLSA1KTsKLSAgICAgICAgb3V0bGlu
ZS5yTGluZVRvKC0yLCAyKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKC0ocmVjdC53aWR0aCgp
IC0gMiksIDApOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlc3Q6Ci0gICAgICAgIG91dGxp
bmUubW92ZVRvKHJlY3QueCgpICsgcmVjdC53aWR0aCgpICsgMC41LCByZWN0LnkoKSArIDAuNSk7
Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbygtKHJlY3Qud2lkdGgoKSAtIDIpLCAwKTsKLSAgICAg
ICAgb3V0bGluZS5yTGluZVRvKC0yLCAyKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKDAsIHJl
Y3QuaGVpZ2h0KCkgLSA1KTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKDIsIDIpOwotICAgICAg
ICBvdXRsaW5lLnJMaW5lVG8ocmVjdC53aWR0aCgpIC0gMiwgMCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLSAgICBvdXRsaW5lLmNsb3NlKCk7Ci0KLSAgICBwYWludC5zZXRTdHlsZShTa1BhaW50
OjprRmlsbF9TdHlsZSk7Ci0gICAgcGFpbnQuc2V0Q29sb3IoYnV0dG9uQ29sb3IpOwotICAgIHBs
YXRmb3JtQ29udGV4dC0+ZHJhd1BhdGgob3V0bGluZSwgcGFpbnQpOwotCi0gICAgcGFpbnQuc2V0
QW50aUFsaWFzKHRydWUpOwotICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5
bGUpOwotICAgIFNrU2NhbGFyIHRodW1iSFNWWzNdOwotICAgIFNrQ29sb3JUb0hTVih0aHVtYklu
YWN0aXZlQ29sb3IoKSwgdGh1bWJIU1YpOwotICAgIHBhaW50LnNldENvbG9yKG91dGxpbmVDb2xv
cih0cmFja0hTViwgdGh1bWJIU1YpKTsKLSAgICBwbGF0Zm9ybUNvbnRleHQtPmRyYXdQYXRoKG91
dGxpbmUsIHBhaW50KTsKLQotICAgIC8vIElmIHRoZSBidXR0b24gaXMgZGlzYWJsZWQgb3IgcmVh
ZC1vbmx5LCB0aGUgYXJyb3cgaXMgZHJhd24gd2l0aCB0aGUgb3V0bGluZSBjb2xvci4KLSAgICBp
ZiAoc3RhdGVzICYgRW5hYmxlZFN0YXRlICYmICEoc3RhdGVzICYgUmVhZE9ubHlTdGF0ZSkpCi0g
ICAgICAgIHBhaW50LnNldENvbG9yKFNLX0NvbG9yQkxBQ0spOwotCi0gICAgcGFpbnQuc2V0QW50
aUFsaWFzKGZhbHNlKTsKLSAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7
Ci0KLSAgICBTa1BhdGggcGF0aDsKLSAgICAvLyBUaGUgY29uc3RhbnRzIGluIHRoaXMgYmxvY2sg
b2YgY29kZSBhcmUgaGFuZC10YWlsb3JlZCB0byBwcm9kdWNlIGdvb2QKLSAgICAvLyBsb29raW5n
IGFycm93cyB3aXRob3V0IGFudGktYWxpYXNpbmcuCi0gICAgc3dpdGNoIChkaXJlY3Rpb24pIHsK
LSAgICBjYXNlIE5vcnRoOgotICAgICAgICBwYXRoLm1vdmVUbyhyZWN0LngoKSArIHdpZHRoTWlk
ZGxlIC0gNCwgcmVjdC55KCkgKyBsZW5ndGhNaWRkbGUgKyAyKTsKLSAgICAgICAgcGF0aC5yTGlu
ZVRvKDcsIDApOwotICAgICAgICBwYXRoLnJMaW5lVG8oLTQsIC00KTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBTb3V0aDoKLSAgICAgICAgcGF0aC5tb3ZlVG8ocmVjdC54KCkgKyB3aWR0aE1p
ZGRsZSAtIDQsIHJlY3QueSgpICsgbGVuZ3RoTWlkZGxlIC0gMyk7Ci0gICAgICAgIHBhdGguckxp
bmVUbyg3LCAwKTsKLSAgICAgICAgcGF0aC5yTGluZVRvKC00LCA0KTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBFYXN0OgotICAgICAgICBwYXRoLm1vdmVUbyhyZWN0LngoKSArIGxlbmd0aE1p
ZGRsZSAtIDMsIHJlY3QueSgpICsgd2lkdGhNaWRkbGUgLSA0KTsKLSAgICAgICAgcGF0aC5yTGlu
ZVRvKDAsIDcpOwotICAgICAgICBwYXRoLnJMaW5lVG8oNCwgLTQpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFdlc3Q6Ci0gICAgICAgIHBhdGgubW92ZVRvKHJlY3QueCgpICsgbGVuZ3RoTWlk
ZGxlICsgMSwgcmVjdC55KCkgKyB3aWR0aE1pZGRsZSAtIDUpOwotICAgICAgICBwYXRoLnJMaW5l
VG8oMCwgOSk7Ci0gICAgICAgIHBhdGguckxpbmVUbygtNCwgLTQpOwotICAgICAgICBicmVhazsK
LSAgICB9Ci0gICAgcGF0aC5jbG9zZSgpOwotCi0gICAgcGxhdGZvcm1Db250ZXh0LT5kcmF3UGF0
aChwYXRoLCBwYWludCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXgu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVRoZW1lQ2hyb21pdW1MaW51eC5oCShyZXZpc2lvbiAxMzYxNzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4
X2gKLSNkZWZpbmUgUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXhfaAotCi0jaW5jbHVkZSAiUGxh
dGZvcm1Db250ZXh0U2tpYS5oIgotI2luY2x1ZGUgIlNrQ29sb3IuaCIKLSNpbmNsdWRlICJTa1Nj
YWxhci5oIgotI2luY2x1ZGUgIlRoZW1lVHlwZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eCB7Ci1wdWJsaWM6Ci0gICAgZW51bSBB
cnJvd0RpcmVjdGlvbiB7Ci0gICAgICAgIE5vcnRoLAotICAgICAgICBFYXN0LAotICAgICAgICBT
b3V0aCwKLSAgICAgICAgV2VzdCwKLSAgICB9OwotCi0gICAgc3RhdGljIHZvaWQgc2V0U2Nyb2xs
YmFyQ29sb3JzKHVuc2lnbmVkIGluYWN0aXZlQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGFjdGl2ZUNvbG9yLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCB0cmFja0NvbG9yKTsKLSAgICBzdGF0aWMgdW5zaWduZWQg
dGh1bWJJbmFjdGl2ZUNvbG9yKCkgeyByZXR1cm4gc190aHVtYkluYWN0aXZlQ29sb3I7IH0KLSAg
ICBzdGF0aWMgdW5zaWduZWQgdGh1bWJBY3RpdmVDb2xvcigpIHsgcmV0dXJuIHNfdGh1bWJBY3Rp
dmVDb2xvcjsgfQotICAgIHN0YXRpYyB1bnNpZ25lZCB0cmFja0NvbG9yKCkgeyByZXR1cm4gc190
cmFja0NvbG9yOyB9Ci0KLSAgICBzdGF0aWMgU2tDb2xvciBzYXR1cmF0ZUFuZEJyaWdodGVuKGNv
bnN0IFNrU2NhbGFyIGhzdlszXSwgU2tTY2FsYXIgc2F0dXJhdGVBbW91bnQsIFNrU2NhbGFyIGJy
aWdodGVuQW1vdW50KTsKLSAgICBzdGF0aWMgU2tDb2xvciBvdXRsaW5lQ29sb3IoY29uc3QgU2tT
Y2FsYXIgaHN2MVszXSwgY29uc3QgU2tTY2FsYXIgaHN2MlszXSk7Ci0gICAgc3RhdGljIHZvaWQg
cGFpbnRBcnJvd0J1dHRvbihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgQXJyb3dE
aXJlY3Rpb24sIENvbnRyb2xTdGF0ZXMpOwotCi1wcml2YXRlOgotICAgIFBsYXRmb3JtVGhlbWVD
aHJvbWl1bUxpbnV4KCkgeyB9Ci0KLSAgICBzdGF0aWMgdW5zaWduZWQgc190aHVtYkluYWN0aXZl
Q29sb3I7Ci0gICAgc3RhdGljIHVuc2lnbmVkIHNfdGh1bWJBY3RpdmVDb2xvcjsKLSAgICBzdGF0
aWMgdW5zaWduZWQgc190cmFja0NvbG9yOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXhfaApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJU
aGVtZUNocm9taXVtTGludXguY3BwCShyZXZpc2lvbiAxMzYxNzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDE0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCAy
MDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaCIKLQotI2luY2x1ZGUgIlBsYXRm
b3JtQ29udGV4dFNraWEuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKLSNpbmNs
dWRlICJTY3JvbGxiYXIuaCIKLSNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KLSNpbmNsdWRl
IDxwdWJsaWMvV2ViUmVjdC5oPgotI2luY2x1ZGUgPHB1YmxpYy9saW51eC9XZWJUaGVtZUVuZ2lu
ZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNjcm9sbGJhclRoZW1lKiBTY3JvbGxiYXJU
aGVtZTo6bmF0aXZlVGhlbWUoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUxpbnV4LCB0aGVtZSwgKCkpOwotICAgIHJldHVybiAmdGhlbWU7Ci19Ci0K
LWludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3Jv
bGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkKLXsKLSAgICAvLyBIb3JpeiBhbmQgVmVydCBz
Y3JvbGxiYXJzIGFyZSB0aGUgc2FtZSB0aGlja25lc3MuCi0gICAgSW50U2l6ZSBzY3JvbGxiYXJT
aXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXpl
KFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrKTsKLSAg
ICByZXR1cm4gc2Nyb2xsYmFyU2l6ZS53aWR0aCgpOwotfQotCi12b2lkIFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1MaW51eDo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJh
clBhcnQgcGFydFR5cGUpCi17Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3Rh
dGUgPSBzY3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkgPT0gcGFydFR5cGUgPyBXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lOjpTdGF0ZUhvdmVyIDogV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVOb3Jt
YWw7Ci0gICAgSW50UmVjdCBhbGlnblJlY3QgPSB0cmFja1JlY3Qoc2Nyb2xsYmFyLCBmYWxzZSk7
Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7Ci0g
ICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2Fu
dmFzKCk7Ci0gICAgZXh0cmFQYXJhbXMuc2Nyb2xsYmFyVHJhY2sudHJhY2tYID0gYWxpZ25SZWN0
LngoKTsKLSAgICBleHRyYVBhcmFtcy5zY3JvbGxiYXJUcmFjay50cmFja1kgPSBhbGlnblJlY3Qu
eSgpOwotICAgIGV4dHJhUGFyYW1zLnNjcm9sbGJhclRyYWNrLnRyYWNrV2lkdGggPSBhbGlnblJl
Y3Qud2lkdGgoKTsKLSAgICBleHRyYVBhcmFtcy5zY3JvbGxiYXJUcmFjay50cmFja0hlaWdodCA9
IGFsaWduUmVjdC5oZWlnaHQoKTsKLSAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRo
ZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhv
cml6b250YWxTY3JvbGxiYXIgPyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFy
SG9yaXpvbnRhbFRyYWNrIDogV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclZl
cnRpY2FsVHJhY2ssIHN0YXRlLCBXZWJLaXQ6OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7
Ci19Ci0KLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHRvbihHcmFw
aGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCi17Ci0gICAgV2ViS2l0OjpXZWJUaGVt
ZUVuZ2luZTo6UGFydCBwYWludFBhcnQ7Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3Rh
dGUgc3RhdGUgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZU5vcm1hbDsKLSAgICBXZWJL
aXQ6OldlYkNhbnZhcyogY2FudmFzID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsK
LSAgICBib29sIGNoZWNrTWluID0gZmFsc2U7Ci0gICAgYm9vbCBjaGVja01heCA9IGZhbHNlOwot
ICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikg
ewotICAgICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0KSB7Ci0gICAgICAgICAg
ICBwYWludFBhcnQgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyTGVmdEFy
cm93OwotICAgICAgICAgICAgY2hlY2tNaW4gPSB0cnVlOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgcGFpbnRQYXJ0ID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJh
clJpZ2h0QXJyb3c7Ci0gICAgICAgICAgICBjaGVja01heCA9IHRydWU7Ci0gICAgICAgIH0KLSAg
ICB9IGVsc2UgewotICAgICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0KSB7Ci0g
ICAgICAgICAgICBwYWludFBhcnQgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xs
YmFyVXBBcnJvdzsKLSAgICAgICAgICAgIGNoZWNrTWluID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIHBhaW50UGFydCA9IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRT
Y3JvbGxiYXJEb3duQXJyb3c7Ci0gICAgICAgICAgICBjaGVja01heCA9IHRydWU7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgaWYgKChjaGVja01pbiAmJiAoc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkg
PD0gMCkpCi0gICAgICAgIHx8IChjaGVja01heCAmJiBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSA9
PSBzY3JvbGxiYXItPm1heGltdW0oKSkpIHsKLSAgICAgICAgc3RhdGUgPSBXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChwYXJ0
ID09IHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSkKLSAgICAgICAgICAgIHN0YXRlID0gV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVQcmVzc2VkOwotICAgICAgICBlbHNlIGlmIChwYXJ0ID09
IHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSkKLSAgICAgICAgICAgIHN0YXRlID0gV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6U3RhdGVIb3ZlcjsKLSAgICB9Ci0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6
Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIHBhaW50UGFydCwgc3RhdGUs
IFdlYktpdDo6V2ViUmVjdChyZWN0KSwgMCk7Ci19Ci0KLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bUxpbnV4OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGU7Ci0gICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZh
cyA9IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7Ci0gICAgaWYgKHNjcm9sbGJhci0+
cHJlc3NlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCi0gICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJU
aGVtZUVuZ2luZTo6U3RhdGVQcmVzc2VkOwotICAgIGVsc2UgaWYgKHNjcm9sbGJhci0+aG92ZXJl
ZFBhcnQoKSA9PSBUaHVtYlBhcnQpCi0gICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6U3RhdGVIb3ZlcjsKLSAgICBlbHNlCi0gICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJU
aGVtZUVuZ2luZTo6U3RhdGVOb3JtYWw7Ci0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgp
LT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9
PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9s
bGJhckhvcml6b250YWxUaHVtYiA6IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxi
YXJWZXJ0aWNhbFRodW1iLCBzdGF0ZSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAwKTsKLX0KLQot
Ym9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNob3VsZENlbnRlck9uVGh1bWIoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKLXsKLSAg
ICByZXR1cm4gKGV2dC5zaGlmdEtleSgpICYmIGV2dC5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB8
fCAoZXZ0LmJ1dHRvbigpID09IE1pZGRsZUJ1dHRvbik7Ci19Ci0KLUludFNpemUgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUxpbnV4OjpidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIpCi17Ci0gICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNj
cm9sbGJhcikgewotICAgICAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJy
ZW50KCktPnRoZW1lRW5naW5lKCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFy
dFNjcm9sbGJhclVwQXJyb3cpOwotICAgICAgICByZXR1cm4gSW50U2l6ZShzaXplLndpZHRoKCks
IHNjcm9sbGJhci0+aGVpZ2h0KCkgPCAyICogc2l6ZS5oZWlnaHQoKSA/IHNjcm9sbGJhci0+aGVp
Z2h0KCkgLyAyIDogc2l6ZS5oZWlnaHQoKSk7Ci0gICAgfQotCi0gICAgLy8gSG9yaXpvbnRhbFNj
cm9sbGJhcgotICAgIEludFNpemUgc2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+
dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xs
YmFyTGVmdEFycm93KTsKLSAgICByZXR1cm4gSW50U2l6ZShzY3JvbGxiYXItPndpZHRoKCkgPCAy
ICogc2l6ZS53aWR0aCgpID8gc2Nyb2xsYmFyLT53aWR0aCgpIC8gMiA6IHNpemUud2lkdGgoKSwg
c2l6ZS5oZWlnaHQoKSk7Ci19Ci0KLWludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6Om1p
bmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQotewotICAg
IGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpIHsKLSAg
ICAgICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVu
Z2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0
aWNhbFRodW1iKTsKLSAgICAgICAgcmV0dXJuIHNpemUuaGVpZ2h0KCk7Ci0gICAgfQotCi0gICAg
SW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgp
LT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJIb3Jpem9udGFs
VGh1bWIpOwotICAgIHJldHVybiBzaXplLndpZHRoKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW1MaW51eC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5oCShyZXZpc2lvbiAxMzYxNzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtTGludXguaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRp
b24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bUxpbnV4X2gKLSNkZWZpbmUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxp
bnV4X2gKLQotI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2hyb21pdW0uaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotICAgIGNsYXNzIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eCA6IHB1Ymxp
YyBTY3JvbGxiYXJUaGVtZUNocm9taXVtIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwg
aW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSk7Ci0KLSAgICBwcm90
ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFy
dCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50Jik7Ci0gICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhclRo
ZW1lQ2xpZW50Kik7Ci0gICAgICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3Jv
bGxiYXJUaGVtZUNsaWVudCopOwotICAgIH07Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1M
aW51eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eC5jcHAJKHJldmlzaW9uIDEzNjE3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDM4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4KLSAq
IENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgotICogQ29weXJp
Z2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkg
R29vZ2xlIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbmRlclRoZW1lQ2hyb21p
dW1MaW51eC5oIgotCi0jaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgotI2luY2x1ZGUgIkNv
bG9yLmgiCi0jaW5jbHVkZSAiUGFpbnRJbmZvLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0
U2tpYS5oIgotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgotI2luY2x1ZGUgIlJlbmRlclByb2dy
ZXNzLmgiCi0jaW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCi0jaW5jbHVkZSAiU2Nyb2xsYmFyVGhl
bWUuaCIKLSNpbmNsdWRlICJVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIgotI2luY2x1ZGUgPHB1Ymxp
Yy9QbGF0Zm9ybS5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+Ci0jaW5jbHVkZSA8cHVi
bGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdW5z
aWduZWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjptX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91
bmRDb2xvciA9Ci0gICAgMHhmZjFlOTBmZjsKLXVuc2lnbmVkIFJlbmRlclRoZW1lQ2hyb21pdW1M
aW51eDo6bV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgPQotICAgIENvbG9yOjpibGFj
azsKLXVuc2lnbmVkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6bV9pbmFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvciA9Ci0gICAgMHhmZmM4YzhjODsKLXVuc2lnbmVkIFJlbmRlclRoZW1l
Q2hyb21pdW1MaW51eDo6bV9pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvciA9Ci0gICAg
MHhmZjMyMzIzMjsKLQotZG91YmxlIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6bV9jYXJldEJs
aW5rSW50ZXJ2YWw7Ci0KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0QnV0dG9uQmFja2dy
b3VuZENvbG9yID0gMHhmZmRkZGRkZDsKLQotc3RhdGljIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6
OlN0YXRlIGdldFdlYlRoZW1lU3RhdGUoY29uc3QgUmVuZGVyVGhlbWUqIHRoZW1lLCBjb25zdCBS
ZW5kZXJPYmplY3QqIG8pCi17Ci0gICAgaWYgKCF0aGVtZS0+aXNFbmFibGVkKG8pKQotICAgICAg
ICByZXR1cm4gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVEaXNhYmxlZDsKLSAgICBpZiAo
dGhlbWUtPmlzUHJlc3NlZChvKSkKLSAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViVGhlbWVFbmdp
bmU6OlN0YXRlUHJlc3NlZDsKLSAgICBpZiAodGhlbWUtPmlzSG92ZXJlZChvKSkKLSAgICAgICAg
cmV0dXJuIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlSG92ZXI7Ci0KLSAgICByZXR1cm4g
V2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVOb3JtYWw7Ci19Ci0KLVBhc3NSZWZQdHI8UmVu
ZGVyVGhlbWU+IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6Y3JlYXRlKCkKLXsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCgpKTsKLX0KLQotLy8gUmVu
ZGVyVGhlbWU6OnRoZW1lRm9yUGFnZSBmb3IgQW5kcm9pZCBpcyBkZWZpbmVkIGluIFJlbmRlclRo
ZW1lQ2hyb21pdW1BbmRyb2lkLmNwcC4KLSNpZiAhT1MoQU5EUk9JRCkKLVBhc3NSZWZQdHI8UmVu
ZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoUGFnZSogcGFnZSkKLXsKLSAgICBz
dGF0aWMgUmVuZGVyVGhlbWUqIHJ0ID0gUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpjcmVhdGUo
KS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHJ0OwotfQotI2VuZGlmCi0KLVJlbmRlclRoZW1lQ2hy
b21pdW1MaW51eDo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCkKLXsKLSAgICBtX2NhcmV0Qmxp
bmtJbnRlcnZhbCA9IFJlbmRlclRoZW1lOjpjYXJldEJsaW5rSW50ZXJ2YWwoKTsKLX0KLQotUmVu
ZGVyVGhlbWVDaHJvbWl1bUxpbnV4Ojp+UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCkKLXsKLX0K
LQotQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzeXN0ZW1Db2xvcihpbnQgY3NzVmFs
dWVJZCkgY29uc3QKLXsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3IgbGludXhCdXR0b25HcmF5Q29s
b3IoMHhmZmRkZGRkZCk7Ci0KLSAgICBpZiAoY3NzVmFsdWVJZCA9PSBDU1NWYWx1ZUJ1dHRvbmZh
Y2UpCi0gICAgICAgIHJldHVybiBsaW51eEJ1dHRvbkdyYXlDb2xvcjsKLSAgICByZXR1cm4gUmVu
ZGVyVGhlbWU6OnN5c3RlbUNvbG9yKGNzc1ZhbHVlSWQpOwotfQotCi1TdHJpbmcgUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4OjpleHRyYURlZmF1bHRTdHlsZVNoZWV0KCkKLXsKLSAgICByZXR1cm4g
UmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKSArCi0gICAg
ICAgICAgIFN0cmluZyh0aGVtZUNocm9taXVtTGludXhVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXpl
b2YodGhlbWVDaHJvbWl1bUxpbnV4VXNlckFnZW50U3R5bGVTaGVldCkpOwotfQotCi1ib29sIFJl
bmRlclRoZW1lQ2hyb21pdW1MaW51eDo6Y29udHJvbFN1cHBvcnRzVGludHMoY29uc3QgUmVuZGVy
T2JqZWN0KiBvKSBjb25zdAotewotICAgIHJldHVybiBpc0VuYWJsZWQobyk7Ci19Ci0KLUNvbG9y
IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91
bmRDb2xvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIENvbG9yKDB4MjgsIDB4MjgsIDB4MjgpOwot
fQotCi1Db2xvciBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmFjdGl2ZUxpc3RCb3hTZWxlY3Rp
b25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAotewotICAgIHJldHVybiBDb2xvcjo6YmxhY2s7Ci19
Ci0KLUNvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6aW5hY3RpdmVMaXN0Qm94U2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gQ29sb3IoMHhjOCwgMHhj
OCwgMHhjOCk7Ci19Ci0KLUNvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6aW5hY3RpdmVM
aXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gQ29s
b3IoMHgzMiwgMHgzMiwgMHgzMik7Ci19Ci0KLUNvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51
eDo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAotewotICAg
IHJldHVybiBtX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcjsKLX0KLQotQ29sb3IgUmVu
ZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3Vu
ZENvbG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91
bmRDb2xvcjsKLX0KLQotQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwbGF0Zm9ybUFj
dGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYWN0
aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwotfQotCi1Db2xvciBSZW5kZXJUaGVtZUNocm9t
aXVtTGludXg6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25z
dAotewotICAgIHJldHVybiBtX2luYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwotfQot
Ci0jaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi1JbnRTaXplIFJlbmRlclRoZW1lQ2hyb21p
dW1MaW51eDo6c2xpZGVyVGlja1NpemUoKSBjb25zdAotewotICAgIHJldHVybiBJbnRTaXplKDEs
IDYpOwotfQotCi1pbnQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzbGlkZXJUaWNrT2Zmc2V0
RnJvbVRyYWNrQ2VudGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gLTE2OwotfQotI2VuZGlmCi0K
LXZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVu
ZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAotewotICAgIEludFNpemUg
c2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6
ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2xpZGVyVGh1bWIpOwotCi0gICAgaWYgKHN0
eWxlLT5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCkgewotICAgICAg
ICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKHNpemUud2lkdGgoKSwgRml4ZWQpKTsKLSAgICAgICAg
c3R5bGUtPnNldEhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKLSAgICB9IGVs
c2UgaWYgKHN0eWxlLT5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQpIHsK
LSAgICAgICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChzaXplLmhlaWdodCgpLCBGaXhlZCkpOwot
ICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RTbGlkZXJU
aHVtYlNpemUoc3R5bGUsIGVsZW1lbnQpOwotfQotCi1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1M
aW51eDo6c3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdAotewotICAgIHJldHVybiB0cnVlOwot
fQotCi12b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c2V0Q2FyZXRCbGlua0ludGVydmFs
KGRvdWJsZSBpbnRlcnZhbCkKLXsKLSAgICBtX2NhcmV0QmxpbmtJbnRlcnZhbCA9IGludGVydmFs
OwotfQotCi1kb3VibGUgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpjYXJldEJsaW5rSW50ZXJ2
YWxJbnRlcm5hbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2FyZXRCbGlua0ludGVydmFsOwot
fQotCi12b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c2V0U2VsZWN0aW9uQ29sb3JzKAot
ICAgIHVuc2lnbmVkIGFjdGl2ZUJhY2tncm91bmRDb2xvciwKLSAgICB1bnNpZ25lZCBhY3RpdmVG
b3JlZ3JvdW5kQ29sb3IsCi0gICAgdW5zaWduZWQgaW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IsCi0g
ICAgdW5zaWduZWQgaW5hY3RpdmVGb3JlZ3JvdW5kQ29sb3IpCi17Ci0gICAgbV9hY3RpdmVTZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3IgPSBhY3RpdmVCYWNrZ3JvdW5kQ29sb3I7Ci0gICAgbV9hY3Rp
dmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgPSBhY3RpdmVGb3JlZ3JvdW5kQ29sb3I7Ci0gICAg
bV9pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9IGluYWN0aXZlQmFja2dyb3VuZENv
bG9yOwotICAgIG1faW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgPSBpbmFjdGl2ZUZv
cmVncm91bmRDb2xvcjsKLX0KLQotYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50
Q2hlY2tib3goUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJl
Y3QmIHJlY3QpCi17Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0
cmFQYXJhbXM7Ci0gICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwotICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5jaGVja2Vk
ID0gaXNDaGVja2VkKG8pOwotICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5pbmRldGVybWluYXRlID0g
aXNJbmRldGVybWluYXRlKG8pOwotCi0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50
aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRD
aGVja2JveCwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3Qp
LCAmZXh0cmFQYXJhbXMpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBSZW5kZXJUaGVt
ZUNocm9taXVtTGludXg6OnNldENoZWNrYm94U2l6ZShSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0
Ci17Ci0gICAgLy8gSWYgdGhlIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGJvdGggc3BlY2lmaWVkLCB0
aGVuIHdlIGhhdmUgbm90aGluZyB0byBkby4KLSAgICBpZiAoIXN0eWxlLT53aWR0aCgpLmlzSW50
cmluc2ljT3JBdXRvKCkgJiYgIXN0eWxlLT5oZWlnaHQoKS5pc0F1dG8oKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50
aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRDaGVja2Jv
eCk7Ci0gICAgc2V0U2l6ZUlmQXV0byhzdHlsZSwgc2l6ZSk7Ci19Ci0KLWJvb2wgUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4OjpwYWludFJhZGlvKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIFdlYktpdDo6V2ViVGhlbWVFbmdp
bmU6OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOwotICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52
YXMgPSBpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKLSAgICBleHRyYVBh
cmFtcy5idXR0b24uY2hlY2tlZCA9IGlzQ2hlY2tlZChvKTsKLQotICAgIFdlYktpdDo6UGxhdGZv
cm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lOjpQYXJ0UmFkaW8sIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6
V2ViUmVjdChyZWN0KSwgJmV4dHJhUGFyYW1zKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZv
aWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUqIHN0
eWxlKSBjb25zdAotewotICAgIC8vIElmIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBib3RoIHNw
ZWNpZmllZCwgdGhlbiB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8uCi0gICAgaWYgKCFzdHlsZS0+d2lk
dGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmICFzdHlsZS0+aGVpZ2h0KCkuaXNBdXRvKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIEludFNpemUgc2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1
cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQ
YXJ0UmFkaW8pOwotICAgIHNldFNpemVJZkF1dG8oc3R5bGUsIHNpemUpOwotfQotCi1ib29sIFJl
bmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25z
dCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgV2ViS2l0OjpXZWJU
aGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7Ci0gICAgV2ViS2l0OjpXZWJDYW52
YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwotICAg
IGV4dHJhUGFyYW1zLmJ1dHRvbi5pc0RlZmF1bHQgPSBpc0RlZmF1bHQobyk7Ci0gICAgZXh0cmFQ
YXJhbXMuYnV0dG9uLmhhc0JvcmRlciA9IHRydWU7Ci0gICAgZXh0cmFQYXJhbXMuYnV0dG9uLmJh
Y2tncm91bmRDb2xvciA9IGRlZmF1bHRCdXR0b25CYWNrZ3JvdW5kQ29sb3I7Ci0gICAgaWYgKG8t
Pmhhc0JhY2tncm91bmQoKSkKLSAgICAgICAgZXh0cmFQYXJhbXMuYnV0dG9uLmJhY2tncm91bmRD
b2xvciA9IG8tPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvcikucmdiKCk7Ci0KLSAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRo
ZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydEJ1
dHRvbiwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAm
ZXh0cmFQYXJhbXMpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSZW5kZXJUaGVtZUNo
cm9taXVtTGludXg6OnBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIC8vIFdlYlRoZW1lRW5naW5lIGRv
ZXMgbm90IGhhbmRsZSBib3JkZXIgcm91bmRlZCBjb3JuZXIgYW5kIGJhY2tncm91bmQgaW1hZ2UK
LSAgICAvLyBzbyByZXR1cm4gdHJ1ZSB0byBkcmF3IENTUyBib3JkZXIgYW5kIGJhY2tncm91bmQu
Ci0gICAgaWYgKG8tPnN0eWxlKCktPmhhc0JvcmRlclJhZGl1cygpIHx8IG8tPnN0eWxlKCktPmhh
c0JhY2tncm91bmRJbWFnZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIENvbnRyb2xQ
YXJ0IHBhcnQgPSBvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCk7Ci0KLSAgICBXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKLSAgICBleHRyYVBhcmFtcy50ZXh0
RmllbGQuaXNUZXh0QXJlYSA9IHBhcnQgPT0gVGV4dEFyZWFQYXJ0OwotICAgIGV4dHJhUGFyYW1z
LnRleHRGaWVsZC5pc0xpc3Rib3ggPSBwYXJ0ID09IExpc3Rib3hQYXJ0OwotCi0gICAgV2ViS2l0
OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZh
cygpOwotCi0gICAgLy8gRmFsbGJhY2sgdG8gd2hpdGUgaWYgdGhlIHNwZWNpZmllZCBjb2xvciBv
YmplY3QgaXMgaW52YWxpZC4KLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OndoaXRl
KTsKLSAgICBpZiAoby0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yKS5pc1ZhbGlkKCkpCi0gICAgICAgIGJhY2tncm91bmRDb2xvciA9IG8t
PnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cik7Ci0gICAgZXh0cmFQYXJhbXMudGV4dEZpZWxkLmJhY2tncm91bmRDb2xvciA9IGJhY2tncm91
bmRDb2xvci5yZ2IoKTsKLQotICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVF
bmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0VGV4dEZp
ZWxkLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6OldlYlJlY3QocmVjdCksICZl
eHRyYVBhcmFtcyk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlbmRlclRoZW1lQ2hy
b21pdW1MaW51eDo6cGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5m
byYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBpZiAoIW8tPmlzQm94KCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNvbnN0IGludCByaWdodCA9IHJlY3QueCgpICsgcmVj
dC53aWR0aCgpOwotICAgIGNvbnN0IGludCBtaWRkbGUgPSByZWN0LnkoKSArIHJlY3QuaGVpZ2h0
KCkgLyAyOwotCi0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQ
YXJhbXM7Ci0gICAgZXh0cmFQYXJhbXMubWVudUxpc3QuYXJyb3dYID0gKG8tPnN0eWxlKCktPmRp
cmVjdGlvbigpID09IFJUTCkgPyByZWN0LngoKSArIDcgOiByaWdodCAtIDEzOwotICAgIGV4dHJh
UGFyYW1zLm1lbnVMaXN0LmFycm93WSA9IG1pZGRsZTsKLSAgICBjb25zdCBSZW5kZXJCb3gqIGJv
eCA9IHRvUmVuZGVyQm94KG8pOwotICAgIC8vIE1hdGNoIENocm9taXVtIFdpbiBiZWhhdmlvdXIg
b2Ygc2hvd2luZyBhbGwgYm9yZGVycyBpZiBhbnkgYXJlIHNob3duLgotICAgIGV4dHJhUGFyYW1z
Lm1lbnVMaXN0Lmhhc0JvcmRlciA9IGJveC0+Ym9yZGVyUmlnaHQoKSB8fCBib3gtPmJvcmRlckxl
ZnQoKSB8fCBib3gtPmJvcmRlclRvcCgpIHx8IGJveC0+Ym9yZGVyQm90dG9tKCk7Ci0gICAgZXh0
cmFQYXJhbXMubWVudUxpc3QuaGFzQm9yZGVyUmFkaXVzID0gby0+c3R5bGUoKS0+aGFzQm9yZGVy
UmFkaXVzKCk7Ci0gICAgLy8gRmFsbGJhY2sgdG8gdHJhbnNwYXJlbnQgaWYgdGhlIHNwZWNpZmll
ZCBjb2xvciBvYmplY3QgaXMgaW52YWxpZC4KLSAgICBleHRyYVBhcmFtcy5tZW51TGlzdC5iYWNr
Z3JvdW5kQ29sb3IgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7Ci0gICAgaWYgKG8tPmhhc0JhY2tncm91
bmQoKSkKLSAgICAgICAgZXh0cmFQYXJhbXMubWVudUxpc3QuYmFja2dyb3VuZENvbG9yID0gby0+
c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
KS5yZ2IoKTsKLQotICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKLQotICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJl
bnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5l
OjpQYXJ0TWVudUxpc3QsIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6V2ViUmVj
dChyZWN0KSwgJmV4dHJhUGFyYW1zKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgUmVu
ZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywg
Y29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIFdlYktpdDo6
V2ViVGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOwotICAgIFdlYktpdDo6V2Vi
Q2FudmFzKiBjYW52YXMgPSBpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsK
LSAgICBleHRyYVBhcmFtcy5zbGlkZXIudmVydGljYWwgPSBvLT5zdHlsZSgpLT5hcHBlYXJhbmNl
KCkgPT0gU2xpZGVyVmVydGljYWxQYXJ0OwotCi0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVu
dCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6
OlBhcnRTbGlkZXJUcmFjaywgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJS
ZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMpOwotCi0jaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQp
Ci0gICAgcGFpbnRTbGlkZXJUaWNrcyhvLCBpLCByZWN0KTsKLSNlbmRpZgotCi0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRTbGlkZXJU
aHVtYihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYg
cmVjdCkKLXsKLSAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRyYVBh
cmFtczsKLSAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKS0+Y2FudmFzKCk7Ci0gICAgZXh0cmFQYXJhbXMuc2xpZGVyLnZlcnRpY2FsID0g
by0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0OwotICAg
IGV4dHJhUGFyYW1zLnNsaWRlci5pbkRyYWcgPSBpc1ByZXNzZWQobyk7Ci0KLSAgICBXZWJLaXQ6
OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNsaWRlclRodW1iLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMs
IG8pLCBXZWJLaXQ6OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi12b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6YWRqdXN0SW5uZXJTcGlu
QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCop
IGNvbnN0Ci17Ci0gICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgp
LT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRJbm5l
clNwaW5CdXR0b24pOwotCi0gICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChzaXplLndpZHRoKCks
IEZpeGVkKSk7Ci0gICAgc3R5bGUtPnNldE1pbldpZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZp
eGVkKSk7Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludElubmVyU3Bp
bkJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVj
dCYgcmVjdCkKLXsKLSAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRy
YVBhcmFtczsKLSAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7Ci0gICAgZXh0cmFQYXJhbXMuaW5uZXJTcGluLnNwaW5V
cCA9IChjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIobykgJiBTcGluVXBTdGF0ZSk7Ci0gICAgZXh0
cmFQYXJhbXMuaW5uZXJTcGluLnJlYWRPbmx5ID0gaXNSZWFkT25seUNvbnRyb2wobyk7Ci0KLSAg
ICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZh
cywgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydElubmVyU3BpbkJ1dHRvbiwgZ2V0V2ViVGhl
bWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMpOwot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotI2lmIEVOQUJMRShQUk9HUkVTU19FTEVNRU5UKQotCi1i
b29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmpl
Y3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBp
ZiAoIW8tPmlzUHJvZ3Jlc3MoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBSZW5kZXJQ
cm9ncmVzcyogcmVuZGVyUHJvZ3Jlc3MgPSB0b1JlbmRlclByb2dyZXNzKG8pOwotICAgIEludFJl
Y3QgdmFsdWVSZWN0ID0gcHJvZ3Jlc3NWYWx1ZVJlY3RGb3IocmVuZGVyUHJvZ3Jlc3MsIHJlY3Qp
OwotCi0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7
Ci0gICAgZXh0cmFQYXJhbXMucHJvZ3Jlc3NCYXIuZGV0ZXJtaW5hdGUgPSByZW5kZXJQcm9ncmVz
cy0+aXNEZXRlcm1pbmF0ZSgpOwotICAgIGV4dHJhUGFyYW1zLnByb2dyZXNzQmFyLnZhbHVlUmVj
dFggPSB2YWx1ZVJlY3QueCgpOwotICAgIGV4dHJhUGFyYW1zLnByb2dyZXNzQmFyLnZhbHVlUmVj
dFkgPSB2YWx1ZVJlY3QueSgpOwotICAgIGV4dHJhUGFyYW1zLnByb2dyZXNzQmFyLnZhbHVlUmVj
dFdpZHRoID0gdmFsdWVSZWN0LndpZHRoKCk7Ci0gICAgZXh0cmFQYXJhbXMucHJvZ3Jlc3NCYXIu
dmFsdWVSZWN0SGVpZ2h0ID0gdmFsdWVSZWN0LmhlaWdodCgpOwotCi0gICAgRGlyZWN0aW9uRmxp
cHBpbmdTY29wZSBzY29wZShvLCBpLCByZWN0KTsKLSAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2Fu
dmFzID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7Ci0gICAgV2ViS2l0
OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIFdlYktp
dDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRQcm9ncmVzc0JhciwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlz
LCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMpOwotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotI2VuZGlmCi0KLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzaG91
bGRPcGVuUGlja2VyV2l0aEY0S2V5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ2hyb21pdW1MaW51eC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguaAkocmV2aXNpb24gMTM2MTc4KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDExMiArMCwwIEBACi0vKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIFdlYktpdCBwcm9qZWN0LgotICoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21w
dXRlciwgSW5jLgotICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1l
bEBnbWFpbC5jb20KLSAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5
dGhlcgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+Ci0g
KiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlLCBJbmMuCi0gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAq
LwotCi0jaWZuZGVmIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eF9oCi0jZGVmaW5lIFJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eF9oCi0KLSNpbmNsdWRlICJSZW5kZXJUaGVtZUNocm9taXVtU2tpYS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBSZW5kZXJUaGVtZUNocm9taXVt
TGludXggOiBwdWJsaWMgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEgewotICAgIHB1YmxpYzoKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOwotICAgICAgICB2
aXJ0dWFsIFN0cmluZyBleHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7Ci0KLSAgICAgICAgdmlydHVh
bCBDb2xvciBzeXN0ZW1Db2xvcihpbnQgY3NzVmFsaWRJZCkgY29uc3Q7Ci0KLSAgICAgICAgLy8g
QSBtZXRob2QgYXNraW5nIGlmIHRoZSBjb250cm9sIGNoYW5nZXMgaXRzIHRpbnQgd2hlbiB0aGUg
d2luZG93IGhhcyBmb2N1cyBvciBub3QuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBjb250cm9sU3Vw
cG9ydHNUaW50cyhjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKLQotICAgICAgICAvLyBMaXN0
IEJveCBzZWxlY3Rpb24gY29sb3IKLSAgICAgICAgdmlydHVhbCBDb2xvciBhY3RpdmVMaXN0Qm94
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgQ29sb3Ig
YWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0OwotICAgICAgICB2
aXJ0dWFsIENvbG9yIGluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNv
bnN0OwotICAgICAgICB2aXJ0dWFsIENvbG9yIGluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvcigpIGNvbnN0OwotCi0gICAgICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3Rp
dmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBDb2xv
ciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Ci0gICAg
ICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3Io
KSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9u
Rm9yZWdyb3VuZENvbG9yKCkgY29uc3Q7Ci0KLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkK
LSAgICAgICAgdmlydHVhbCBJbnRTaXplIHNsaWRlclRpY2tTaXplKCkgY29uc3QgT1ZFUlJJREU7
Ci0gICAgICAgIHZpcnR1YWwgaW50IHNsaWRlclRpY2tPZmZzZXRGcm9tVHJhY2tDZW50ZXIoKSBj
b25zdCBPVkVSUklERTsKLSNlbmRpZgotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVy
VGh1bWJTaXplKFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwotCi0gICAgICAgIHN0YXRp
YyB2b2lkIHNldENhcmV0QmxpbmtJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpOwotICAgICAgICB2
aXJ0dWFsIGRvdWJsZSBjYXJldEJsaW5rSW50ZXJ2YWxJbnRlcm5hbCgpIGNvbnN0OwotCi0gICAg
ICAgIHZpcnR1YWwgYm9vbCBwYWludENoZWNrYm94KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldENoZWNrYm94
U2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OwotCi0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFJh
ZGlvKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIHNldFJhZGlvU2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OwotCi0g
ICAgICAgIHZpcnR1YWwgYm9vbCBwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRG
aWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0g
ICAgICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCosIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCBib29sIHBhaW50U2xp
ZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OwotICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0KLSAgICAgICAgdmlydHVhbCB2b2lk
IGFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSos
IEVsZW1lbnQqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBib29sIHBhaW50SW5uZXJTcGluQnV0
dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLQot
ICAgICAgICB2aXJ0dWFsIGJvb2wgcG9wc01lbnVCeVNwYWNlT3JSZXR1cm4oKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiB0cnVlOyB9Ci0KLSNpZiBFTkFCTEUoUFJPR1JFU1NfRUxFTUVOVCkKLSAg
ICAgICAgdmlydHVhbCBib29sIHBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotI2VuZGlmCi0KLSAgICAgICAgdmlydHVhbCBi
b29sIHNob3VsZE9wZW5QaWNrZXJXaXRoRjRLZXkoKSBjb25zdCBPVkVSUklERTsKLQotICAgICAg
ICBzdGF0aWMgdm9pZCBzZXRTZWxlY3Rpb25Db2xvcnModW5zaWduZWQgYWN0aXZlQmFja2dyb3Vu
ZENvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
YWN0aXZlRm9yZWdyb3VuZENvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmFjdGl2ZUZvcmVncm91bmRDb2xvcik7
Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCgpOwot
ICAgICAgICB2aXJ0dWFsIH5SZW5kZXJUaGVtZUNocm9taXVtTGludXgoKTsKLQotICAgIHByaXZh
dGU6Ci0gICAgICAgIC8vIEEgZ2VuZXJhbCBtZXRob2QgYXNraW5nIGlmIGFueSBjb250cm9sIHRp
bnRpbmcgaXMgc3VwcG9ydGVkIGF0IGFsbC4KLSAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
Q29udHJvbFRpbnRzKCkgY29uc3Q7Ci0KLSAgICAgICAgc3RhdGljIGRvdWJsZSBtX2NhcmV0Qmxp
bmtJbnRlcnZhbDsKLQotICAgICAgICBzdGF0aWMgdW5zaWduZWQgbV9hY3RpdmVTZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3I7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBtX2FjdGl2ZVNlbGVjdGlv
bkZvcmVncm91bmRDb2xvcjsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIG1faW5hY3RpdmVTZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3I7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBtX2luYWN0aXZl
U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eF9oCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2NDAzKQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0xMi0w
MyAgU2NvdHQgVmlvbGV0ICA8c2t5QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IFJlbW92ZSBsaW51eCB0aGVtZSByZWxhdGVkIGZpbGVzIGFuZCBzd2l0Y2ggdG8gZGVmYXVsdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzODk3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbGludXggdGhl
bWUgcmVsYXRlZCBmaWxlcyBhcmUgbm93IG5hbWVkIGRlZmF1bHQuIFRoaXMgcmVtb3ZlcworICAg
ICAgICBsaW51eCBmaWxlcyB1cGRhdGVzIGJ1aWxkIGZpbGVzIGFuZCByZW1vdmVzIGlmZGVmcy4K
KworICAgICAgICAqIFdlYktpdC5neXA6IHVwZGF0ZSBydWxlcy4KKyAgICAgICAgKiBwdWJsaWMv
bGludXgvV2ViUmVuZGVyVGhlbWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0U2Nyb2xsYmFyQ29sb3Jz
KTogVXBkYXRlIGlmZGVmcworICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0U2VsZWN0
aW9uQ29sb3JzKTogVXBkYXRlIGlmZGVmcworICAgICAgICAqIHNyYy9saW51eC9XZWJSZW5kZXJU
aGVtZS5jcHA6IFJlbW92ZWQuCisKIDIwMTItMTItMDMgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9t
bXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgU3BlZWNoIFJlY29nbml0aW9uIEFQSTogVXBkYXRl
IFNwZWVjaFJlY29nbml0aW9uRXZlbnQgdG8gbWF0Y2ggdGhlIHNwZWNpZmljYXRpb24KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDEzNjE3OCkKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtNDM4LDcgKzQzOCw2
IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9saW51eC9XZWJGb250SW5mby5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvbGludXgvV2ViRm9udFJlbmRlcmluZy5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvbGludXgvV2ViRm9udFJlbmRlclN0eWxlLmNwcCcsCi0gICAgICAgICAgICAgICAg
J3NyYy9saW51eC9XZWJSZW5kZXJUaGVtZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMveDEx
L1dlYlNjcmVlbkluZm9GYWN0b3J5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9tYWMvV2Vi
SW5wdXRFdmVudEZhY3RvcnkubW0nLAogICAgICAgICAgICAgICAgICdzcmMvbWFjL1dlYlNjcmVl
bkluZm9GYWN0b3J5Lm1tJywKQEAgLTg0NSwxMCArODQ0LDYgQEAKICAgICAgICAgICAgICAgICAg
ICAgXSwKICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ3VzZV9kZWZhdWx0
X3JlbmRlcl90aGVtZT09MScsIHsKLSAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMvJzogWwot
ICAgICAgICAgICAgICAgICAgICAgICAgWydleGNsdWRlJywgJ3NyYy9saW51eC9XZWJSZW5kZXJU
aGVtZS5jcHAnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICdwdWJsaWMv
bGludXgvV2ViUmVuZGVyVGhlbWUuaCddLAotICAgICAgICAgICAgICAgICAgICBdLAogICAgICAg
ICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzogWwogICAgICAgICAgICAgICAgICAgICAgICAg
J3B1YmxpYy9kZWZhdWx0JywKICAgICAgICAgICAgICAgICAgICAgXSwKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlJlbmRlclRoZW1lLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViUmVuZGVyVGhlbWUuaAko
cmV2aXNpb24gMTM2MTc4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgv
V2ViUmVuZGVyVGhlbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA5IEpvZWwgU3RhbmxleS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IFdlYlJlbmRlclRoZW1lX2gKLSNkZWZpbmUgV2ViUmVuZGVyVGhlbWVfaAotCi0jaW5jbHVkZSAi
Li4vcGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBTZXQg
Y2FyZXQgYmxpbmsgaW50ZXJ2YWwgZm9yIHRleHQgaW5wdXQgYXJlYXMuCi1XRUJLSVRfRVhQT1JU
IHZvaWQgc2V0Q2FyZXRCbGlua0ludGVydmFsKGRvdWJsZSk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAJKHJldmlzaW9uIDEzNjE3OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDEwICsxNzksNiBAQAogI2lu
Y2x1ZGUgIlJlbmRlclRoZW1lQ2hyb21pdW1XaW4uaCIKICNlbmRpZgogI2Vsc2UKLSNpZiBPUyhV
TklYKSAmJiAhT1MoREFSV0lOKSAmJiAhRU5BQkxFKERFRkFVTFRfUkVOREVSX1RIRU1FKQotI2lu
Y2x1ZGUgIlBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmgiCi0jaW5jbHVkZSAiUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4LmgiCi0jZW5kaWYKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2Vu
ZGlmCiAKQEAgLTM1NzMsOCArMzU2OSw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFNjcm9sbGJh
ckNvbG9ycyh1bnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCB0cmFja0NvbG9yKSB7CiAjaWYgRU5BQkxFKERFRkFVTFRfUkVOREVSX1RIRU1FKQogICAgIFBs
YXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnNldFNjcm9sbGJhckNvbG9ycyhpbmFjdGl2ZUNv
bG9yLCBhY3RpdmVDb2xvciwgdHJhY2tDb2xvcik7Ci0jZWxpZiBPUyhVTklYKSAmJiAhT1MoREFS
V0lOKSAmJiAhT1MoQU5EUk9JRCkKLSAgICBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6c2V0
U2Nyb2xsYmFyQ29sb3JzKGluYWN0aXZlQ29sb3IsIGFjdGl2ZUNvbG9yLCB0cmFja0NvbG9yKTsK
ICNlbmRpZgogfQogCkBAIC0zNTg1LDkgKzM1NzksNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRT
ZWxlY3Rpb25Db2xvcnModW5zCiAjaWYgRU5BQkxFKERFRkFVTFRfUkVOREVSX1RIRU1FKQogICAg
IFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpzZXRTZWxlY3Rpb25Db2xvcnMoYWN0aXZlQmFj
a2dyb3VuZENvbG9yLCBhY3RpdmVGb3JlZ3JvdW5kQ29sb3IsIGluYWN0aXZlQmFja2dyb3VuZENv
bG9yLCBpbmFjdGl2ZUZvcmVncm91bmRDb2xvcik7CiAgICAgdGhlbWUoKS0+cGxhdGZvcm1Db2xv
cnNEaWRDaGFuZ2UoKTsKLSNlbGlmIE9TKFVOSVgpICYmICFPUyhEQVJXSU4pICYmICFPUyhBTkRS
T0lEKQotICAgIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c2V0U2VsZWN0aW9uQ29sb3JzKGFj
dGl2ZUJhY2tncm91bmRDb2xvciwgYWN0aXZlRm9yZWdyb3VuZENvbG9yLCBpbmFjdGl2ZUJhY2tn
cm91bmRDb2xvciwgaW5hY3RpdmVGb3JlZ3JvdW5kQ29sb3IpOwotICAgIHRoZW1lKCktPnBsYXRm
b3JtQ29sb3JzRGlkQ2hhbmdlKCk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvbGludXgvV2ViUmVuZGVyVGhlbWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYlJlbmRlclRoZW1lLmNwcAkocmV2aXNpb24g
MTM2MTc4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXgvV2ViUmVuZGVyVGhl
bWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgSm9lbCBTdGFubGV5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24u
Ci0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXZWJSZW5kZXJUaGVtZS5oIgotCi0jaW5jbHVkZSAiUmVuZGVyVGhlbWVD
aHJvbWl1bUxpbnV4LmgiCi0jaW5jbHVkZSAiV2ViVmlldy5oIgotCi11c2luZyBXZWJDb3JlOjpS
ZW5kZXJUaGVtZTsKLXVzaW5nIFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDsKLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgc2V0Q2FyZXRCbGlua0ludGVydmFsKGRvdWJsZSBp
bnRlcnZhbCkKLXsKLSAgICBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldENhcmV0QmxpbmtJ
bnRlcnZhbChpbnRlcnZhbCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2
NDAzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTItMTItMDMgIFNjb3R0IFZpb2xldCAgPHNreUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W2Nocm9taXVtXSBSZW1vdmUgbGludXggdGhlbWUgcmVsYXRlZCBmaWxlcyBhbmQgc3dpdGNoIHRv
IGRlZmF1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMzg5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2J1aWxkX3VuaXR0ZXN0LnB5OgorICAg
ICAgICAoU2hvdWxkQnVpbGRUZXN0KTogbGludXgtPmRlZmF1bHQKKwogMjAxMi0xMi0wMyAgTGFz
emxvIEdvbWJvcyAgPGwuZ29tYm9zQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtDTWFrZV0gRW5h
YmxlIGJ1aWxkaW5nIFdlYktpdDItb25seSBidWlsZCBmb3IgdGhlIEVGTCBwb3J0CkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvYnVpbGRfdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2J1aWxkX3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiAxMzYxNzgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jb25maWcvYnVpbGRfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUy
LDcgQEAgY2xhc3MgU2hvdWxkQnVpbGRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKQogICAgICAgICAo
WyJTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZm9vIl0sIFsibWFjLWxlb3Bh
cmQiLCAibWFjLWxpb24iLCAgIm1hYy1tb3VudGFpbmxpb24iLCAibWFjLXNub3dsZW9wYXJkIl0p
LAogICAgICAgICAoWyJTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC93eGNvZGUvd2luL2ZvbyJd
LCBbXSksCiAgICAgICAgIChbIlNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbSIsICJTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaCJdLCBbIm1h
Yy1sZW9wYXJkIiwgIm1hYy1saW9uIiwgICJtYWMtbW91bnRhaW5saW9uIiwgIm1hYy1zbm93bGVv
cGFyZCJdKSwKLSAgICAgICAgKFsiU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q2hyb21pdW1MaW51eC5oIl0sIFsiY2hyb21pdW0tbGludXgiXSksCisgICAgICAgIChbIlNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5oIl0sIFsiY2hy
b21pdW0tbGludXgiXSksCiAgICAgICAgIChbIlNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZVdpbkNFLmgiXSwgW10pLAogICAgICAgICAoWyJUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9MZWFrc1ZpZXdlci9MZWFrc1Zp
ZXdlci5qcyJdLCBbXSksCiAgICAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177322</attachid>
            <date>2012-12-03 13:56:01 -0800</date>
            <delta_ts>2012-12-03 14:32:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103897-20121203135327.patch</filename>
            <type>text/plain</type>
            <size>64066</size>
            <attacher name="Scott Violet">sky</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2NDM2KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTEyLTAzICBTY290
dCBWaW9sZXQgIDxza3lAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVtb3Zl
IGxpbnV4IHRoZW1lIHJlbGF0ZWQgZmlsZXMgYW5kIHN3aXRjaCB0byBkZWZhdWx0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM4OTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6
IHJlbW92ZSBXZWJUaGVtZUVuZ2luZS5oCisgICAgICAgICogY2hyb21pdW0vcHVibGljL2xpbnV4
L1dlYlRoZW1lRW5naW5lLmg6IFJlbW92ZWQuCisKIDIwMTItMTItMDMgIFNhbWkgS3lvc3RpbGEg
IDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBUZWxsIFdlYklu
cHV0SGFuZGxlckNsaWVudCB3aGVuIGVuZCBvZiBpbnB1dCBpcyByZWFjaGVkIGZvciBjdXJyZW50
IHZzeW5jIHBlcmlvZApJbmRleDogU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkJKHJldmlzaW9uIDEzNjQwNikK
KysrIFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIs
NyArMTUyLDYgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udElu
Zm8uaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRSZW5kZXJT
dHlsZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViU2FuZGJveFN1
cHBvcnQuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlRoZW1lRW5n
aW5lLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9tYWMvV2ViU2FuZGJveFN1cHBv
cnQuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL21hYy9XZWJUaGVtZUVuZ2luZS5o
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvd2luL1dlYlNhbmRib3hTdXBwb3J0Lmgn
LApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJUaGVtZUVu
Z2luZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGlu
dXgvV2ViVGhlbWVFbmdpbmUuaAkocmV2aXNpb24gMTM2NDA2KQorKysgU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJUaGVtZUVuZ2luZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDE1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJUaGVtZUVuZ2luZV9oCi0jZGVmaW5lIFdlYlRoZW1l
RW5naW5lX2gKLQotI2luY2x1ZGUgIi4uL1dlYkNhbnZhcy5oIgotI2luY2x1ZGUgIi4uL1dlYkNv
bG9yLmgiCi0jaW5jbHVkZSAiLi4vV2ViU2l6ZS5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
c3RydWN0IFdlYlJlY3Q7Ci0KLWNsYXNzIFdlYlRoZW1lRW5naW5lIHsKLXB1YmxpYzoKLSAgICAv
LyBUaGUgVUkgcGFydCB3aGljaCBpcyBiZWluZyBhY2Nlc3NlZC4KLSAgICBlbnVtIFBhcnQgewot
ICAgICAgICAvLyBTY3JvbGxiYXJUaGVtZSBwYXJ0cwotICAgICAgICBQYXJ0U2Nyb2xsYmFyRG93
bkFycm93LAotICAgICAgICBQYXJ0U2Nyb2xsYmFyTGVmdEFycm93LAotICAgICAgICBQYXJ0U2Ny
b2xsYmFyUmlnaHRBcnJvdywKLSAgICAgICAgUGFydFNjcm9sbGJhclVwQXJyb3csCi0gICAgICAg
IFBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVGh1bWIsCi0gICAgICAgIFBhcnRTY3JvbGxiYXJWZXJ0
aWNhbFRodW1iLAotICAgICAgICBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNrLAotICAgICAg
ICBQYXJ0U2Nyb2xsYmFyVmVydGljYWxUcmFjaywKLQotICAgICAgICAvLyBSZW5kZXJUaGVtZSBw
YXJ0cwotICAgICAgICBQYXJ0Q2hlY2tib3gsCi0gICAgICAgIFBhcnRSYWRpbywKLSAgICAgICAg
UGFydEJ1dHRvbiwKLSAgICAgICAgUGFydFRleHRGaWVsZCwKLSAgICAgICAgUGFydE1lbnVMaXN0
LAotICAgICAgICBQYXJ0U2xpZGVyVHJhY2ssCi0gICAgICAgIFBhcnRTbGlkZXJUaHVtYiwKLSAg
ICAgICAgUGFydElubmVyU3BpbkJ1dHRvbiwKLSAgICAgICAgUGFydFByb2dyZXNzQmFyCi0gICAg
fTsKLQotICAgIC8vIFRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBhc3NvY2lhdGVkIFBhcnQuCi0g
ICAgZW51bSBTdGF0ZSB7Ci0gICAgICAgIFN0YXRlRGlzYWJsZWQsCi0gICAgICAgIFN0YXRlSG92
ZXIsCi0gICAgICAgIFN0YXRlTm9ybWFsLAotICAgICAgICBTdGF0ZVByZXNzZWQsCi0gICAgfTsK
LQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIGRyYXdpbmcgdGhlIFBhcnRTY3JvbGxiYXJI
b3Jpem9udGFsVHJhY2sgYW5kCi0gICAgLy8gUGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2suCi0g
ICAgc3RydWN0IFNjcm9sbGJhclRyYWNrRXh0cmFQYXJhbXMgewotICAgICAgICAvLyBUaGUgYm91
bmRzIG9mIHRoZSBlbnRpcmUgdHJhY2ssIGFzIG9wcG9zZWQgdG8gdGhlIHBhcnQgYmVpbmcgcGFp
bnRlZC4KLSAgICAgICAgaW50IHRyYWNrWDsKLSAgICAgICAgaW50IHRyYWNrWTsKLSAgICAgICAg
aW50IHRyYWNrV2lkdGg7Ci0gICAgICAgIGludCB0cmFja0hlaWdodDsKLSAgICB9OwotCi0gICAg
Ly8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydENoZWNrYm94LCBQYXJ0UHVzaEJ1dHRvbiBhbmQg
UGFydFJhZGlvLgotICAgIHN0cnVjdCBCdXR0b25FeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wg
Y2hlY2tlZDsKLSAgICAgICAgYm9vbCBpbmRldGVybWluYXRlOyAvLyBXaGV0aGVyIHRoZSBidXR0
b24gc3RhdGUgaXMgaW5kZXRlcm1pbmF0ZS4KLSAgICAgICAgYm9vbCBpc0RlZmF1bHQ7IC8vIFdo
ZXRoZXIgdGhlIGJ1dHRvbiBpcyBkZWZhdWx0IGJ1dHRvbi4KLSAgICAgICAgYm9vbCBoYXNCb3Jk
ZXI7Ci0gICAgICAgIFdlYkNvbG9yIGJhY2tncm91bmRDb2xvcjsKLSAgICB9OwotCi0gICAgLy8g
RXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydFRleHRGaWVsZAotICAgIHN0cnVjdCBUZXh0RmllbGRF
eHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgaXNUZXh0QXJlYTsKLSAgICAgICAgYm9vbCBpc0xp
c3Rib3g7Ci0gICAgICAgIFdlYkNvbG9yIGJhY2tncm91bmRDb2xvcjsKLSAgICB9OwotCi0gICAg
Ly8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydE1lbnVMaXN0Ci0gICAgc3RydWN0IE1lbnVMaXN0
RXh0cmFQYXJhbXMgewotICAgICAgICBib29sIGhhc0JvcmRlcjsKLSAgICAgICAgYm9vbCBoYXNC
b3JkZXJSYWRpdXM7Ci0gICAgICAgIGludCBhcnJvd1g7Ci0gICAgICAgIGludCBhcnJvd1k7Ci0g
ICAgICAgIFdlYkNvbG9yIGJhY2tncm91bmRDb2xvcjsKLSAgICB9OwotCi0gICAgLy8gRXh0cmEg
cGFyYW1ldGVycyBmb3IgUGFydFNsaWRlclRyYWNrIGFuZCBQYXJ0U2xpZGVyVGh1bWIKLSAgICBz
dHJ1Y3QgU2xpZGVyRXh0cmFQYXJhbXMgewotICAgICAgICBib29sIHZlcnRpY2FsOwotICAgICAg
ICBib29sIGluRHJhZzsKLSAgICB9OwotCi0gICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFy
dElubmVyU3BpbkJ1dHRvbgotICAgIHN0cnVjdCBJbm5lclNwaW5CdXR0b25FeHRyYVBhcmFtcyB7
Ci0gICAgICAgIGJvb2wgc3BpblVwOwotICAgICAgICBib29sIHJlYWRPbmx5OwotICAgIH07Ci0K
LSAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0UHJvZ3Jlc3NCYXIKLSAgICBzdHJ1Y3Qg
UHJvZ3Jlc3NCYXJFeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgZGV0ZXJtaW5hdGU7Ci0gICAg
ICAgIGludCB2YWx1ZVJlY3RYOwotICAgICAgICBpbnQgdmFsdWVSZWN0WTsKLSAgICAgICAgaW50
IHZhbHVlUmVjdFdpZHRoOwotICAgICAgICBpbnQgdmFsdWVSZWN0SGVpZ2h0OwotICAgIH07Ci0K
LSAgICB1bmlvbiBFeHRyYVBhcmFtcyB7Ci0gICAgICAgIFNjcm9sbGJhclRyYWNrRXh0cmFQYXJh
bXMgc2Nyb2xsYmFyVHJhY2s7Ci0gICAgICAgIEJ1dHRvbkV4dHJhUGFyYW1zIGJ1dHRvbjsKLSAg
ICAgICAgVGV4dEZpZWxkRXh0cmFQYXJhbXMgdGV4dEZpZWxkOwotICAgICAgICBNZW51TGlzdEV4
dHJhUGFyYW1zIG1lbnVMaXN0OwotICAgICAgICBTbGlkZXJFeHRyYVBhcmFtcyBzbGlkZXI7Ci0g
ICAgICAgIElubmVyU3BpbkJ1dHRvbkV4dHJhUGFyYW1zIGlubmVyU3BpbjsKLSAgICAgICAgUHJv
Z3Jlc3NCYXJFeHRyYVBhcmFtcyBwcm9ncmVzc0JhcjsKLSAgICB9OwotCi0gICAgLy8gR2V0cyB0
aGUgc2l6ZSBvZiB0aGUgZ2l2ZW4gdGhlbWUgcGFydC4gRm9yIHZhcmlhYmxlIHNpemVkIGl0ZW1z
Ci0gICAgLy8gbGlrZSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdGh1bWJzLCB0aGUgd2lkdGggd2lsbCBi
ZSB0aGUgcmVxdWlyZWQgd2lkdGggb2YKLSAgICAvLyB0aGUgdHJhY2sgd2hpbGUgdGhlIGhlaWdo
dCB3aWxsIGJlIHRoZSBtaW5pbXVtIGhlaWdodC4KLSAgICB2aXJ0dWFsIFdlYlNpemUgZ2V0U2l6
ZShQYXJ0KSB7IHJldHVybiBXZWJTaXplKCk7IH0KLSAgICAvLyBQYWludCB0aGUgZ2l2ZW4gdGhl
IGdpdmVuIHRoZW1lIHBhcnQuCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNhbnZhcyosIFBh
cnQsIFN0YXRlLCBjb25zdCBXZWJSZWN0JiwgY29uc3QgRXh0cmFQYXJhbXMqKSB7IH0KLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEzNjQzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDI1IEBACisyMDEyLTEyLTAzICBTY290dCBWaW9sZXQgIDxza3lAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIGxpbnV4IHRoZW1lIHJlbGF0ZWQgZmlsZXMg
YW5kIHN3aXRjaCB0byBkZWZhdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDM4OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBsaW51eCB0aGVtZSByZWxhdGVkIGZpbGVzIGFyZSBub3cgbmFtZWQgZGVm
YXVsdC4gVGhpcyByZW1vdmVzCisgICAgICAgIGxpbnV4IHRoZW1lIGZpbGVzLCB1cGRhdGVzIGJ1
aWxkIGZpbGVzIGFuZCByZW1vdmVzIGlmZGVmcy4KKworICAgICAgICBDb2RlIGNsZWFudXAsIG5v
IG5ldyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOiBVcGRhdGUg
YnVpbGQgcnVsZXMKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IFVwZGF0ZSBidWlsZCBydWxlcwor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hy
b21pdW1MaW51eC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4Lmg6IFJlbW92ZWQuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkLmg6IENoYW5nZSBzdXBlcmNs
YXNzCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oOiBS
ZW1vdmVkLgorCiAyMDEyLTEyLTAzICBGbG9yaW4gTWFsaXRhICA8Zm1hbGl0YUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW1NraWFdIERlZmVycmVkIFNrQ2FudmFzIHNhdmUoKQpJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQkocmV2aXNpb24gMTM2NDA2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCSh3b3JraW5nIGNvcHkpCkBAIC0zNDU4LDggKzM0NTgsNiBAQAogICAgICAgICAgICAgJ3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRm9udFByb3ZpZGVyLmgnLAogICAgICAgICAgICAg
J3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRm9udFByb3ZpZGVyTGludXguY3BwJywKICAg
ICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUZvbnRQcm92aWRlcldpbi5j
cHAnLAotICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3Bw
JywKLSAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmgnLAog
ICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTWFjLmgnLAogICAgICAg
ICAgICAgJ3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTWFjLm1tJywKICAgICAgICAgICAg
ICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuY3BwJywKQEAgLTQ2NzIsOCArNDY3
MCw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0Lmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURl
ZmF1bHQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1l
Q2hyb21pdW1EZWZhdWx0LmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRm
b3JtVGhlbWVDaHJvbWl1bUxpbnV4LmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1XaWRnZXQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vUG9wdXBDb250YWluZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cENvbnRhaW5lci5oJywKQEAgLTQ2OTIsOCArNDY4OCw2IEBACiAgICAgICAgICAgICAncGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURlZmF1bHQuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVt
RGVmYXVsdC5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtTGludXguY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtTGludXguaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcCcsCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAkocmV2aXNpb24gMTM2NDA2KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE3
MDAsMTcgKzE3MDAsMTIgQEAKICAgICAgICAgfV0sCiAgICAgICAgIFsndXNlX2RlZmF1bHRfcmVu
ZGVyX3RoZW1lPT0xJywgewogICAgICAgICAgICdzb3VyY2VzLyc6IFsKLSAgICAgICAgICAgIFsn
ZXhjbHVkZScsICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5o
J10sCi0gICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1U
aGVtZUNocm9taXVtTGludXguY3BwJ10sCiAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtV2luLmgnXSwKICAgICAgICAgICAgIFsn
ZXhjbHVkZScsICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1XaW4uY3Bw
J10sCi0gICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUxpbnV4LmNwcCddLAotICAgICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRm
b3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5oJ10sCiAgICAgICAgICAg
ICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bi5jcHAnXSwKICAgICAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtV2luLmgnXSwKICAgICAgICAgICBdLAotICAgICAgICB9XSwKLSAg
ICAgICAgWyd1c2VfZGVmYXVsdF9yZW5kZXJfdGhlbWU9PTAnLCB7CisgICAgICAgIH0sIHsgIyB1
c2VfZGVmYXVsdF9yZW5kZXJfdGhlbWU9PTAKICAgICAgICAgICAnc291cmNlcy8nOiBbCiAgICAg
ICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9t
aXVtRGVmYXVsdC5jcHAnXSwKICAgICAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0LmgnXSwKQEAgLTIwMTMsNyArMjAwOCw2
IEBACiAgICAgICAgIH1dLAogICAgICAgICBbJ3VzZV9kZWZhdWx0X3JlbmRlcl90aGVtZT09MScs
IHsKICAgICAgICAgICAnc291cmNlcy8nOiBbCi0gICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnUmVu
ZGVyVGhlbWVDaHJvbWl1bUxpbnV4LionXSwKICAgICAgICAgICAgIFsnZXhjbHVkZScsICdSZW5k
ZXJUaGVtZUNocm9taXVtV2luLionXSwKICAgICAgICAgICBdLAogICAgICAgICB9XSwKQEAgLTIw
NjAsNyArMjA1NCw3IEBACiAgICAgICAgIFsnT1M9PSJhbmRyb2lkIicsIHsKICAgICAgICAgICAn
c291cmNlcy8nOiBbCiAgICAgICAgICAgICBbJ2luY2x1ZGUnLCAncmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1Gb250UHJvdmlkZXJMaW51eFxcLmNwcCQnXSwKLSAgICAgICAgICAgIFsnaW5j
bHVkZScsICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4XFwuY3BwJCddLAorICAg
ICAgICAgICAgWydpbmNsdWRlJywgJ3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVs
dFxcLmNwcCQnXSwKICAgICAgICAgICBdLAogICAgICAgICB9LHsgIyBPUyE9ImFuZHJvaWQiCiAg
ICAgICAgICAgJ3NvdXJjZXMvJzogWwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmNw
cAkocmV2aXNpb24gMTM2NDA2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIyMSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0g
KgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtVGhlbWVDaHJvbWl1
bUxpbnV4LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdW5zaWduZWQgUGxhdGZvcm1UaGVt
ZUNocm9taXVtTGludXg6OnNfdGh1bWJJbmFjdGl2ZUNvbG9yID0gMHhlYWVhZWE7Ci11bnNpZ25l
ZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6c190aHVtYkFjdGl2ZUNvbG9yID0gMHhmNGY0
ZjQ7Ci11bnNpZ25lZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6c190cmFja0NvbG9yID0g
MHhkM2QzZDM7Ci0KLXZvaWQgUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXg6OnNldFNjcm9sbGJh
ckNvbG9ycygKLSAgICBTa0NvbG9yIGluYWN0aXZlQ29sb3IsIFNrQ29sb3IgYWN0aXZlQ29sb3Is
IFNrQ29sb3IgdHJhY2tDb2xvcikKLXsKLSAgICBzX3RodW1iSW5hY3RpdmVDb2xvciA9IGluYWN0
aXZlQ29sb3I7Ci0gICAgc190aHVtYkFjdGl2ZUNvbG9yID0gYWN0aXZlQ29sb3I7Ci0gICAgc190
cmFja0NvbG9yID0gdHJhY2tDb2xvcjsKLX0KLQotc3RhdGljIFNrU2NhbGFyIGNsYW1wKFNrU2Nh
bGFyIHZhbHVlLCBTa1NjYWxhciBtaW4sIFNrU2NhbGFyIG1heCkKLXsKLSAgICByZXR1cm4gc3Rk
OjptaW4oc3RkOjptYXgodmFsdWUsIG1pbiksIG1heCk7Ci19Ci0KLVNrQ29sb3IgUGxhdGZvcm1U
aGVtZUNocm9taXVtTGludXg6OnNhdHVyYXRlQW5kQnJpZ2h0ZW4oY29uc3QgU2tTY2FsYXIgaHN2
WzNdLCBTa1NjYWxhciBzYXR1cmF0ZUFtb3VudCwgU2tTY2FsYXIgYnJpZ2h0ZW5BbW91bnQpCi17
Ci0gICAgU2tTY2FsYXIgY29sb3JbM107Ci0gICAgY29sb3JbMF0gPSBoc3ZbMF07Ci0gICAgY29s
b3JbMV0gPSBjbGFtcChoc3ZbMV0gKyBzYXR1cmF0ZUFtb3VudCwgMC4wLCAxLjApOwotICAgIGNv
bG9yWzJdID0gY2xhbXAoaHN2WzJdICsgYnJpZ2h0ZW5BbW91bnQsIDAuMCwgMS4wKTsKLSAgICBy
ZXR1cm4gU2tIU1ZUb0NvbG9yKGNvbG9yKTsKLX0KLQotU2tDb2xvciBQbGF0Zm9ybVRoZW1lQ2hy
b21pdW1MaW51eDo6b3V0bGluZUNvbG9yKGNvbnN0IFNrU2NhbGFyIGhzdjFbM10sIGNvbnN0IFNr
U2NhbGFyIGhzdjJbM10pCi17Ci0gICAgLy8gR1RLIFRoZW1lIGVuZ2luZXMgaGF2ZSB3YXkgdG9v
IG11Y2ggY29udHJvbCBvdmVyIHRoZSBsYXlvdXQgb2YKLSAgICAvLyB0aGUgc2Nyb2xsYmFyLiBX
ZSBtaWdodCBiZSBhYmxlIHRvIG1vcmUgY2xvc2VseSBhcHByb3hpbWF0ZSBpdHMKLSAgICAvLyBs
b29rLWFuZC1mZWVsLCBpZiB3ZSBzZW50IHdob2xlIGltYWdlcyBpbnN0ZWFkIG9mIGp1c3QgY29s
b3JzCi0gICAgLy8gZnJvbSB0aGUgYnJvd3NlciB0byB0aGUgcmVuZGVyZXIuIEJ1dCBldmVuIHRo
ZW4sIHNvbWUgdGhlbWVzCi0gICAgLy8gd291bGQganVzdCBicmVhay4KLSAgICAvLwotICAgIC8v
IFNvLCBpbnN0ZWFkLCB3ZSBkb24ndCBldmVuIHRyeSB0byAxMDAlIHJlcGxpY2F0ZSB0aGUgbG9v
ayBvZgotICAgIC8vIHRoZSBuYXRpdmUgc2Nyb2xsYmFyLiBXZSByZW5kZXIgb3VyIG93biB2ZXJz
aW9uLCBidXQgd2UgbWFrZQotICAgIC8vIHN1cmUgdG8gcGljayBjb2xvcnMgdGhhdCBibGVuZCBp
biBuaWNlbHkgd2l0aCB0aGUgc3lzdGVtIEdUSwotICAgIC8vIHRoZW1lLiBJbiBtb3N0IGNhc2Vz
LCB3ZSBjYW4ganVzdCBzYW1wbGUgYSBjb3VwbGUgb2YgcGl4ZWxzCi0gICAgLy8gZnJvbSB0aGUg
c3lzdGVtIHNjcm9sbGJhciBhbmQgdXNlIHRob3NlIGNvbG9ycyB0byBkcmF3IG91cgotICAgIC8v
IHNjcm9sbGJhci4KLSAgICAvLwotICAgIC8vIFRoaXMgd29ya3MgZmluZSBmb3IgdGhlIHRyYWNr
IGNvbG9yIGFuZCB0aGUgb3ZlcmFsbCB0aHVtYgotICAgIC8vIGNvbG9yLiBCdXQgaXQgZmFpbHMg
c3BlY3RhY3VsYXJseSBmb3IgdGhlIG91dGxpbmUgY29sb3IgdXNlZAotICAgIC8vIGFyb3VuZCB0
aGUgdGh1bWIgcGllY2UuIE5vdCBhbGwgdGhlbWVzIGhhdmUgYSBjbGVhcmx5IGRlZmluZWQKLSAg
ICAvLyBvdXRsaW5lLiBGb3Igc29tZSBvZiB0aGVtIGl0IGlzIHBhcnRpYWxseSB0cmFuc3BhcmVu
dCwgYW5kIGZvcgotICAgIC8vIG90aGVycyB0aGUgdGhpY2tuZXNzIGlzIHZlcnkgdW5wcmVkaWN0
YWJsZS4KLSAgICAvLwotICAgIC8vIFNvLCBpbnN0ZWFkIG9mIHRyeWluZyB0byBhcHByb3hpbWF0
ZSB0aGUgc3lzdGVtIHRoZW1lLCB3ZQotICAgIC8vIGluc3RlYWQgdHJ5IHRvIGNvbXB1dGUgYSBy
ZWFzb25hYmxlIGxvb2tpbmcgY2hvaWNlIGJhc2VkIG9uIHRoZQotICAgIC8vIGtub3duIGNvbG9y
IG9mIHRoZSB0cmFjayBhbmQgdGhlIHRodW1iIHBpZWNlLiBUaGlzIGlzIGRpZmZpY3VsdAotICAg
IC8vIHdoZW4gdHJ5aW5nIHRvIGRlYWwgYm90aCB3aXRoIGhpZ2gtIGFuZCBsb3ctY29udHJhc3Qg
dGhlbWVzLAotICAgIC8vIGFuZCBib3RoIHdpdGggcG9zaXRpdmUgYW5kIGludmVydGVkIHRoZW1l
cy4KLSAgICAvLwotICAgIC8vIFRoZSBmb2xsb3dpbmcgY29kZSBoYXMgYmVlbiB0ZXN0ZWQgdG8g
bG9vayBPSyB3aXRoIGFsbCBvZiB0aGUKLSAgICAvLyBkZWZhdWx0IEdUSyB0aGVtZXMuCi0gICAg
U2tTY2FsYXIgbWluRGlmZiA9IGNsYW1wKChoc3YxWzFdICsgaHN2MlsxXSkgKiAxLjIsIDAuMjgs
IDAuNSk7Ci0gICAgU2tTY2FsYXIgZGlmZiA9IGNsYW1wKGZhYnMoaHN2MVsyXSAtIGhzdjJbMl0p
IC8gMiwgbWluRGlmZiwgMC41KTsKLQotICAgIGlmIChoc3YxWzJdICsgaHN2MlsyXSA+IDEuMCkK
LSAgICAgICAgZGlmZiA9IC1kaWZmOwotCi0gICAgcmV0dXJuIHNhdHVyYXRlQW5kQnJpZ2h0ZW4o
aHN2MiwgLTAuMiwgZGlmZik7Ci19Ci0KLXZvaWQgUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXg6
OnBhaW50QXJyb3dCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgSW50UmVjdCYgcmVj
dCwgQXJyb3dEaXJlY3Rpb24gZGlyZWN0aW9uLCBDb250cm9sU3RhdGVzIHN0YXRlcykKLXsKLSAg
ICBQbGF0Zm9ybUNvbnRleHRTa2lhKiBwbGF0Zm9ybUNvbnRleHQgPSBnYy0+cGxhdGZvcm1Db250
ZXh0KCk7Ci0gICAgaW50IHdpZHRoTWlkZGxlLCBsZW5ndGhNaWRkbGU7Ci0gICAgU2tQYWludCBw
YWludDsKLSAgICBpZiAoZGlyZWN0aW9uID09IE5vcnRoIHx8IGRpcmVjdGlvbiA9PSBTb3V0aCkg
ewotICAgICAgICB3aWR0aE1pZGRsZSA9IHJlY3Qud2lkdGgoKSAvIDIgKyAxOwotICAgICAgICBs
ZW5ndGhNaWRkbGUgPSByZWN0LmhlaWdodCgpIC8gMiArIDE7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgbGVuZ3RoTWlkZGxlID0gcmVjdC53aWR0aCgpIC8gMiArIDE7Ci0gICAgICAgIHdpZHRoTWlk
ZGxlID0gcmVjdC5oZWlnaHQoKSAvIDIgKyAxOwotICAgIH0KLQotICAgIC8vIENhbGN1bGF0ZSBi
dXR0b24gY29sb3IuCi0gICAgU2tTY2FsYXIgdHJhY2tIU1ZbM107Ci0gICAgU2tDb2xvclRvSFNW
KHRyYWNrQ29sb3IoKSwgdHJhY2tIU1YpOwotICAgIFNrQ29sb3IgYnV0dG9uQ29sb3IgPSBzYXR1
cmF0ZUFuZEJyaWdodGVuKHRyYWNrSFNWLCAwLCAwLjIpOwotICAgIFNrQ29sb3IgYmFja2dyb3Vu
ZENvbG9yID0gYnV0dG9uQ29sb3I7Ci0gICAgaWYgKHN0YXRlcyAmIFByZXNzZWRTdGF0ZSkgewot
ICAgICAgICBTa1NjYWxhciBidXR0b25IU1ZbM107Ci0gICAgICAgIFNrQ29sb3JUb0hTVihidXR0
b25Db2xvciwgYnV0dG9uSFNWKTsKLSAgICAgICAgYnV0dG9uQ29sb3IgPSBzYXR1cmF0ZUFuZEJy
aWdodGVuKGJ1dHRvbkhTViwgMCwgLTAuMSk7Ci0gICAgfSBlbHNlIGlmIChzdGF0ZXMgJiBIb3Zl
clN0YXRlKSB7Ci0gICAgICAgIFNrU2NhbGFyIGJ1dHRvbkhTVlszXTsKLSAgICAgICAgU2tDb2xv
clRvSFNWKGJ1dHRvbkNvbG9yLCBidXR0b25IU1YpOwotICAgICAgICBidXR0b25Db2xvciA9IHNh
dHVyYXRlQW5kQnJpZ2h0ZW4oYnV0dG9uSFNWLCAwLCAwLjA1KTsKLSAgICB9Ci0KLSAgICBTa0lS
ZWN0IHNrcmVjdDsKLSAgICBza3JlY3Quc2V0KHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC54KCkg
KyByZWN0LndpZHRoKCksIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSk7Ci0gICAgLy8gUGFpbnQg
dGhlIGJhY2tncm91bmQgKHRoZSBhcmVhIHZpc2libGUgYmVoaW5kIHRoZSByb3VuZGVkIGNvcm5l
cnMpLgotICAgIHBhaW50LnNldENvbG9yKGJhY2tncm91bmRDb2xvcik7Ci0gICAgcGxhdGZvcm1D
b250ZXh0LT5kcmF3SVJlY3Qoc2tyZWN0LCBwYWludCk7Ci0KLSAgICAvLyBQYWludCB0aGUgYnV0
dG9uJ3Mgb3V0bGluZSBhbmQgZmlsbCB0aGUgbWlkZGxlCi0gICAgU2tQYXRoIG91dGxpbmU7Ci0g
ICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIE5vcnRoOgotICAgICAgICBvdXRsaW5l
Lm1vdmVUbyhyZWN0LngoKSArIDAuNSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpICsgMC41KTsK
LSAgICAgICAgb3V0bGluZS5yTGluZVRvKDAsIC0ocmVjdC5oZWlnaHQoKSAtIDIpKTsKLSAgICAg
ICAgb3V0bGluZS5yTGluZVRvKDIsIC0yKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKHJlY3Qu
d2lkdGgoKSAtIDUsIDApOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMiwgMik7Ci0gICAgICAg
IG91dGxpbmUuckxpbmVUbygwLCByZWN0LmhlaWdodCgpIC0gMik7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgU291dGg6Ci0gICAgICAgIG91dGxpbmUubW92ZVRvKHJlY3QueCgpICsgMC41LCBy
ZWN0LnkoKSAtIDAuNSk7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbygwLCByZWN0LmhlaWdodCgp
IC0gMik7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbygyLCAyKTsKLSAgICAgICAgb3V0bGluZS5y
TGluZVRvKHJlY3Qud2lkdGgoKSAtIDUsIDApOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMiwg
LTIpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMCwgLShyZWN0LmhlaWdodCgpIC0gMikpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEVhc3Q6Ci0gICAgICAgIG91dGxpbmUubW92ZVRvKHJl
Y3QueCgpIC0gMC41LCByZWN0LnkoKSArIDAuNSk7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbyhy
ZWN0LndpZHRoKCkgLSAyLCAwKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKDIsIDIpOwotICAg
ICAgICBvdXRsaW5lLnJMaW5lVG8oMCwgcmVjdC5oZWlnaHQoKSAtIDUpOwotICAgICAgICBvdXRs
aW5lLnJMaW5lVG8oLTIsIDIpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8oLShyZWN0LndpZHRo
KCkgLSAyKSwgMCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2VzdDoKLSAgICAgICAgb3V0
bGluZS5tb3ZlVG8ocmVjdC54KCkgKyByZWN0LndpZHRoKCkgKyAwLjUsIHJlY3QueSgpICsgMC41
KTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKC0ocmVjdC53aWR0aCgpIC0gMiksIDApOwotICAg
ICAgICBvdXRsaW5lLnJMaW5lVG8oLTIsIDIpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMCwg
cmVjdC5oZWlnaHQoKSAtIDUpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMiwgMik7Ci0gICAg
ICAgIG91dGxpbmUuckxpbmVUbyhyZWN0LndpZHRoKCkgLSAyLCAwKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIG91dGxpbmUuY2xvc2UoKTsKLQotICAgIHBhaW50LnNldFN0eWxlKFNrUGFp
bnQ6OmtGaWxsX1N0eWxlKTsKLSAgICBwYWludC5zZXRDb2xvcihidXR0b25Db2xvcik7Ci0gICAg
cGxhdGZvcm1Db250ZXh0LT5kcmF3UGF0aChvdXRsaW5lLCBwYWludCk7Ci0KLSAgICBwYWludC5z
ZXRBbnRpQWxpYXModHJ1ZSk7Ci0gICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9T
dHlsZSk7Ci0gICAgU2tTY2FsYXIgdGh1bWJIU1ZbM107Ci0gICAgU2tDb2xvclRvSFNWKHRodW1i
SW5hY3RpdmVDb2xvcigpLCB0aHVtYkhTVik7Ci0gICAgcGFpbnQuc2V0Q29sb3Iob3V0bGluZUNv
bG9yKHRyYWNrSFNWLCB0aHVtYkhTVikpOwotICAgIHBsYXRmb3JtQ29udGV4dC0+ZHJhd1BhdGgo
b3V0bGluZSwgcGFpbnQpOwotCi0gICAgLy8gSWYgdGhlIGJ1dHRvbiBpcyBkaXNhYmxlZCBvciBy
ZWFkLW9ubHksIHRoZSBhcnJvdyBpcyBkcmF3biB3aXRoIHRoZSBvdXRsaW5lIGNvbG9yLgotICAg
IGlmIChzdGF0ZXMgJiBFbmFibGVkU3RhdGUgJiYgIShzdGF0ZXMgJiBSZWFkT25seVN0YXRlKSkK
LSAgICAgICAgcGFpbnQuc2V0Q29sb3IoU0tfQ29sb3JCTEFDSyk7Ci0KLSAgICBwYWludC5zZXRB
bnRpQWxpYXMoZmFsc2UpOwotICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxl
KTsKLQotICAgIFNrUGF0aCBwYXRoOwotICAgIC8vIFRoZSBjb25zdGFudHMgaW4gdGhpcyBibG9j
ayBvZiBjb2RlIGFyZSBoYW5kLXRhaWxvcmVkIHRvIHByb2R1Y2UgZ29vZAotICAgIC8vIGxvb2tp
bmcgYXJyb3dzIHdpdGhvdXQgYW50aS1hbGlhc2luZy4KLSAgICBzd2l0Y2ggKGRpcmVjdGlvbikg
ewotICAgIGNhc2UgTm9ydGg6Ci0gICAgICAgIHBhdGgubW92ZVRvKHJlY3QueCgpICsgd2lkdGhN
aWRkbGUgLSA0LCByZWN0LnkoKSArIGxlbmd0aE1pZGRsZSArIDIpOwotICAgICAgICBwYXRoLnJM
aW5lVG8oNywgMCk7Ci0gICAgICAgIHBhdGguckxpbmVUbygtNCwgLTQpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFNvdXRoOgotICAgICAgICBwYXRoLm1vdmVUbyhyZWN0LngoKSArIHdpZHRo
TWlkZGxlIC0gNCwgcmVjdC55KCkgKyBsZW5ndGhNaWRkbGUgLSAzKTsKLSAgICAgICAgcGF0aC5y
TGluZVRvKDcsIDApOwotICAgICAgICBwYXRoLnJMaW5lVG8oLTQsIDQpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEVhc3Q6Ci0gICAgICAgIHBhdGgubW92ZVRvKHJlY3QueCgpICsgbGVuZ3Ro
TWlkZGxlIC0gMywgcmVjdC55KCkgKyB3aWR0aE1pZGRsZSAtIDQpOwotICAgICAgICBwYXRoLnJM
aW5lVG8oMCwgNyk7Ci0gICAgICAgIHBhdGguckxpbmVUbyg0LCAtNCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgV2VzdDoKLSAgICAgICAgcGF0aC5tb3ZlVG8ocmVjdC54KCkgKyBsZW5ndGhN
aWRkbGUgKyAxLCByZWN0LnkoKSArIHdpZHRoTWlkZGxlIC0gNSk7Ci0gICAgICAgIHBhdGguckxp
bmVUbygwLCA5KTsKLSAgICAgICAgcGF0aC5yTGluZVRvKC00LCAtNCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLSAgICBwYXRoLmNsb3NlKCk7Ci0KLSAgICBwbGF0Zm9ybUNvbnRleHQtPmRyYXdQ
YXRoKHBhdGgsIHBhaW50KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51
eC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRm
b3JtVGhlbWVDaHJvbWl1bUxpbnV4LmgJKHJldmlzaW9uIDEzNjQwNikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUGxhdGZvcm1UaGVtZUNocm9taXVtTGlu
dXhfaAotI2RlZmluZSBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eF9oCi0KLSNpbmNsdWRlICJQ
bGF0Zm9ybUNvbnRleHRTa2lhLmgiCi0jaW5jbHVkZSAiU2tDb2xvci5oIgotI2luY2x1ZGUgIlNr
U2NhbGFyLmgiCi0jaW5jbHVkZSAiVGhlbWVUeXBlcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4IHsKLXB1YmxpYzoKLSAgICBlbnVt
IEFycm93RGlyZWN0aW9uIHsKLSAgICAgICAgTm9ydGgsCi0gICAgICAgIEVhc3QsCi0gICAgICAg
IFNvdXRoLAotICAgICAgICBXZXN0LAotICAgIH07Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRTY3Jv
bGxiYXJDb2xvcnModW5zaWduZWQgaW5hY3RpdmVDb2xvciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgYWN0aXZlQ29sb3IsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRyYWNrQ29sb3IpOwotICAgIHN0YXRpYyB1bnNpZ25l
ZCB0aHVtYkluYWN0aXZlQ29sb3IoKSB7IHJldHVybiBzX3RodW1iSW5hY3RpdmVDb2xvcjsgfQot
ICAgIHN0YXRpYyB1bnNpZ25lZCB0aHVtYkFjdGl2ZUNvbG9yKCkgeyByZXR1cm4gc190aHVtYkFj
dGl2ZUNvbG9yOyB9Ci0gICAgc3RhdGljIHVuc2lnbmVkIHRyYWNrQ29sb3IoKSB7IHJldHVybiBz
X3RyYWNrQ29sb3I7IH0KLQotICAgIHN0YXRpYyBTa0NvbG9yIHNhdHVyYXRlQW5kQnJpZ2h0ZW4o
Y29uc3QgU2tTY2FsYXIgaHN2WzNdLCBTa1NjYWxhciBzYXR1cmF0ZUFtb3VudCwgU2tTY2FsYXIg
YnJpZ2h0ZW5BbW91bnQpOwotICAgIHN0YXRpYyBTa0NvbG9yIG91dGxpbmVDb2xvcihjb25zdCBT
a1NjYWxhciBoc3YxWzNdLCBjb25zdCBTa1NjYWxhciBoc3YyWzNdKTsKLSAgICBzdGF0aWMgdm9p
ZCBwYWludEFycm93QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmLCBBcnJv
d0RpcmVjdGlvbiwgQ29udHJvbFN0YXRlcyk7Ci0KLXByaXZhdGU6Ci0gICAgUGxhdGZvcm1UaGVt
ZUNocm9taXVtTGludXgoKSB7IH0KLQotICAgIHN0YXRpYyB1bnNpZ25lZCBzX3RodW1iSW5hY3Rp
dmVDb2xvcjsKLSAgICBzdGF0aWMgdW5zaWduZWQgc190aHVtYkFjdGl2ZUNvbG9yOwotICAgIHN0
YXRpYyB1bnNpZ25lZCBzX3RyYWNrQ29sb3I7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eF9oCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eC5jcHAJKHJldmlzaW9uIDEzNjQwNikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDgs
IDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5oIgotCi0jaW5jbHVkZSAiUGxh
dGZvcm1Db250ZXh0U2tpYS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgotI2lu
Y2x1ZGUgIlNjcm9sbGJhci5oIgotI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgotI2luY2x1
ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+Ci0jaW5jbHVkZSA8cHVibGljL2xpbnV4L1dlYlRoZW1lRW5n
aW5lLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU2Nyb2xsYmFyVGhlbWUqIFNjcm9sbGJh
clRoZW1lOjpuYXRpdmVUaGVtZSgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTY3JvbGxi
YXJUaGVtZUNocm9taXVtTGludXgsIHRoZW1lLCAoKSk7Ci0gICAgcmV0dXJuICZ0aGVtZTsKLX0K
LQotaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNj
cm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQotewotICAgIC8vIEhvcml6IGFuZCBWZXJ0
IHNjcm9sbGJhcnMgYXJlIHRoZSBzYW1lIHRoaWNrbmVzcy4KLSAgICBJbnRTaXplIHNjcm9sbGJh
clNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPmdldFNp
emUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2spOwot
ICAgIHJldHVybiBzY3JvbGxiYXJTaXplLndpZHRoKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4OjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xs
YmFyUGFydCBwYXJ0VHlwZSkKLXsKLSAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZSBz
dGF0ZSA9IHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSA9PSBwYXJ0VHlwZSA/IFdlYktpdDo6V2Vi
VGhlbWVFbmdpbmU6OlN0YXRlSG92ZXIgOiBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZU5v
cm1hbDsKLSAgICBJbnRSZWN0IGFsaWduUmVjdCA9IHRyYWNrUmVjdChzY3JvbGxiYXIsIGZhbHNl
KTsKLSAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsK
LSAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5j
YW52YXMoKTsKLSAgICBleHRyYVBhcmFtcy5zY3JvbGxiYXJUcmFjay50cmFja1ggPSBhbGlnblJl
Y3QueCgpOwotICAgIGV4dHJhUGFyYW1zLnNjcm9sbGJhclRyYWNrLnRyYWNrWSA9IGFsaWduUmVj
dC55KCk7Ci0gICAgZXh0cmFQYXJhbXMuc2Nyb2xsYmFyVHJhY2sudHJhY2tXaWR0aCA9IGFsaWdu
UmVjdC53aWR0aCgpOwotICAgIGV4dHJhUGFyYW1zLnNjcm9sbGJhclRyYWNrLnRyYWNrSGVpZ2h0
ID0gYWxpZ25SZWN0LmhlaWdodCgpOwotICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+
dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0g
SG9yaXpvbnRhbFNjcm9sbGJhciA/IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxi
YXJIb3Jpem9udGFsVHJhY2sgOiBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFy
VmVydGljYWxUcmFjaywgc3RhdGUsIFdlYktpdDo6V2ViUmVjdChyZWN0KSwgJmV4dHJhUGFyYW1z
KTsKLX0KLQotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50QnV0dG9uKEdy
YXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0
IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKLXsKLSAgICBXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lOjpQYXJ0IHBhaW50UGFydDsKLSAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpT
dGF0ZSBzdGF0ZSA9IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlTm9ybWFsOwotICAgIFdl
YktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBnYy0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygp
OwotICAgIGJvb2wgY2hlY2tNaW4gPSBmYWxzZTsKLSAgICBib29sIGNoZWNrTWF4ID0gZmFsc2U7
Ci0gICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
KSB7Ci0gICAgICAgIGlmIChwYXJ0ID09IEJhY2tCdXR0b25TdGFydFBhcnQpIHsKLSAgICAgICAg
ICAgIHBhaW50UGFydCA9IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJMZWZ0
QXJyb3c7Ci0gICAgICAgICAgICBjaGVja01pbiA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBwYWludFBhcnQgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xs
YmFyUmlnaHRBcnJvdzsKLSAgICAgICAgICAgIGNoZWNrTWF4ID0gdHJ1ZTsKLSAgICAgICAgfQot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChwYXJ0ID09IEJhY2tCdXR0b25TdGFydFBhcnQpIHsK
LSAgICAgICAgICAgIHBhaW50UGFydCA9IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3Jv
bGxiYXJVcEFycm93OwotICAgICAgICAgICAgY2hlY2tNaW4gPSB0cnVlOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgcGFpbnRQYXJ0ID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFy
dFNjcm9sbGJhckRvd25BcnJvdzsKLSAgICAgICAgICAgIGNoZWNrTWF4ID0gdHJ1ZTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICBpZiAoKGNoZWNrTWluICYmIChzY3JvbGxiYXItPmN1cnJlbnRQb3Mo
KSA8PSAwKSkKLSAgICAgICAgfHwgKGNoZWNrTWF4ICYmIHNjcm9sbGJhci0+Y3VycmVudFBvcygp
ID09IHNjcm9sbGJhci0+bWF4aW11bSgpKSkgewotICAgICAgICBzdGF0ZSA9IFdlYktpdDo6V2Vi
VGhlbWVFbmdpbmU6OlN0YXRlRGlzYWJsZWQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHBh
cnQgPT0gc2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgpKQotICAgICAgICAgICAgc3RhdGUgPSBXZWJL
aXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZVByZXNzZWQ7Ci0gICAgICAgIGVsc2UgaWYgKHBhcnQg
PT0gc2Nyb2xsYmFyLT5ob3ZlcmVkUGFydCgpKQotICAgICAgICAgICAgc3RhdGUgPSBXZWJLaXQ6
OldlYlRoZW1lRW5naW5lOjpTdGF0ZUhvdmVyOwotICAgIH0KLSAgICBXZWJLaXQ6OlBsYXRmb3Jt
OjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgcGFpbnRQYXJ0LCBzdGF0
ZSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAwKTsKLX0KLQotdm9pZCBTY3JvbGxiYXJUaGVtZUNo
cm9taXVtTGludXg6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBXZWJLaXQ6
OldlYlRoZW1lRW5naW5lOjpTdGF0ZSBzdGF0ZTsKLSAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2Fu
dmFzID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKLSAgICBpZiAoc2Nyb2xsYmFy
LT5wcmVzc2VkUGFydCgpID09IFRodW1iUGFydCkKLSAgICAgICAgc3RhdGUgPSBXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpTdGF0ZVByZXNzZWQ7Ci0gICAgZWxzZSBpZiAoc2Nyb2xsYmFyLT5ob3Zl
cmVkUGFydCgpID09IFRodW1iUGFydCkKLSAgICAgICAgc3RhdGUgPSBXZWJLaXQ6OldlYlRoZW1l
RW5naW5lOjpTdGF0ZUhvdmVyOwotICAgIGVsc2UKLSAgICAgICAgc3RhdGUgPSBXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpTdGF0ZU5vcm1hbDsKLSAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50
KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigp
ID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Ny
b2xsYmFySG9yaXpvbnRhbFRodW1iIDogV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9s
bGJhclZlcnRpY2FsVGh1bWIsIHN0YXRlLCBXZWJLaXQ6OldlYlJlY3QocmVjdCksIDApOwotfQot
Ci1ib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6c2hvdWxkQ2VudGVyT25UaHVtYihT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQotewot
ICAgIHJldHVybiAoZXZ0LnNoaWZ0S2V5KCkgJiYgZXZ0LmJ1dHRvbigpID09IExlZnRCdXR0b24p
IHx8IChldnQuYnV0dG9uKCkgPT0gTWlkZGxlQnV0dG9uKTsKLX0KLQotSW50U2l6ZSBTY3JvbGxi
YXJUaGVtZUNocm9taXVtTGludXg6OmJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhcikKLXsKLSAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2Fs
U2Nyb2xsYmFyKSB7Ci0gICAgICAgIEludFNpemUgc2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1
cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQ
YXJ0U2Nyb2xsYmFyVXBBcnJvdyk7Ci0gICAgICAgIHJldHVybiBJbnRTaXplKHNpemUud2lkdGgo
KSwgc2Nyb2xsYmFyLT5oZWlnaHQoKSA8IDIgKiBzaXplLmhlaWdodCgpID8gc2Nyb2xsYmFyLT5o
ZWlnaHQoKSAvIDIgOiBzaXplLmhlaWdodCgpKTsKLSAgICB9Ci0KLSAgICAvLyBIb3Jpem9udGFs
U2Nyb2xsYmFyCi0gICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgp
LT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3Jv
bGxiYXJMZWZ0QXJyb3cpOwotICAgIHJldHVybiBJbnRTaXplKHNjcm9sbGJhci0+d2lkdGgoKSA8
IDIgKiBzaXplLndpZHRoKCkgPyBzY3JvbGxiYXItPndpZHRoKCkgLyAyIDogc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpKTsKLX0KLQotaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6
bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCi17Ci0g
ICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgewot
ICAgICAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1l
RW5naW5lKCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclZl
cnRpY2FsVGh1bWIpOwotICAgICAgICByZXR1cm4gc2l6ZS5oZWlnaHQoKTsKLSAgICB9Ci0KLSAg
ICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5l
KCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckhvcml6b250
YWxUaHVtYik7Ci0gICAgcmV0dXJuIHNpemUud2lkdGgoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUxpbnV4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmgJKHJldmlzaW9uIDEzNjQw
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1MaW51eC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTGludXhfaAotI2RlZmluZSBTY3JvbGxiYXJUaGVtZUNocm9taXVt
TGludXhfaAotCi0jaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4IDogcHVi
bGljIFNjcm9sbGJhclRoZW1lQ2hyb21pdW0gewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVh
bCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplKTsKLQotICAgIHBy
b3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0Nv
bnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQ
YXJ0KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxi
YXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCBib29sIHNo
b3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmKTsKLSAgICAgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqKTsKLSAgICAgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNj
cm9sbGJhclRoZW1lQ2xpZW50Kik7Ci0gICAgfTsKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1
bUFuZHJvaWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVDaHJvbWl1bUFuZHJvaWQuaAkocmV2aXNpb24gMTM2NDA2KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDExICsyNiwxMSBAQAogI2lmbmRlZiBSZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZF9o
CiAjZGVmaW5lIFJlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkX2gKIAotI2luY2x1ZGUgIlJlbmRl
clRoZW1lQ2hyb21pdW1MaW51eC5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lQ2hyb21pdW1EZWZh
dWx0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUmVuZGVyVGhlbWVDaHJvbWl1
bUFuZHJvaWQgOiBwdWJsaWMgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4IHsKK2NsYXNzIFJlbmRl
clRoZW1lQ2hyb21pdW1BbmRyb2lkIDogcHVibGljIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKCk7
CiAgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpIE9WRVJSSURFOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hy
b21pdW1MaW51eC5jcHAJKHJldmlzaW9uIDEzNjQwNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM4
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4KLSAqIENvcHly
aWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgotICogQ29weXJpZ2h0IChD
KSAyMDA4IENvbGxhYm9yYSBMdGQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xl
IEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbmRlclRoZW1lQ2hyb21pdW1MaW51
eC5oIgotCi0jaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgotI2luY2x1ZGUgIkNvbG9yLmgi
Ci0jaW5jbHVkZSAiUGFpbnRJbmZvLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5o
IgotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgotI2luY2x1ZGUgIlJlbmRlclByb2dyZXNzLmgi
Ci0jaW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCi0jaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIK
LSNpbmNsdWRlICJVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIgotI2luY2x1ZGUgPHB1YmxpYy9QbGF0
Zm9ybS5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+Ci0jaW5jbHVkZSA8cHVibGljL2xp
bnV4L1dlYlRoZW1lRW5naW5lLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdW5zaWduZWQg
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjptX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xv
ciA9Ci0gICAgMHhmZjFlOTBmZjsKLXVuc2lnbmVkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6
bV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgPQotICAgIENvbG9yOjpibGFjazsKLXVu
c2lnbmVkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6bV9pbmFjdGl2ZVNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvciA9Ci0gICAgMHhmZmM4YzhjODsKLXVuc2lnbmVkIFJlbmRlclRoZW1lQ2hyb21p
dW1MaW51eDo6bV9pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvciA9Ci0gICAgMHhmZjMy
MzIzMjsKLQotZG91YmxlIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6bV9jYXJldEJsaW5rSW50
ZXJ2YWw7Ci0KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0QnV0dG9uQmFja2dyb3VuZENv
bG9yID0gMHhmZmRkZGRkZDsKLQotc3RhdGljIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRl
IGdldFdlYlRoZW1lU3RhdGUoY29uc3QgUmVuZGVyVGhlbWUqIHRoZW1lLCBjb25zdCBSZW5kZXJP
YmplY3QqIG8pCi17Ci0gICAgaWYgKCF0aGVtZS0+aXNFbmFibGVkKG8pKQotICAgICAgICByZXR1
cm4gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVEaXNhYmxlZDsKLSAgICBpZiAodGhlbWUt
PmlzUHJlc3NlZChvKSkKLSAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0
YXRlUHJlc3NlZDsKLSAgICBpZiAodGhlbWUtPmlzSG92ZXJlZChvKSkKLSAgICAgICAgcmV0dXJu
IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlSG92ZXI7Ci0KLSAgICByZXR1cm4gV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVOb3JtYWw7Ci19Ci0KLVBhc3NSZWZQdHI8UmVuZGVyVGhl
bWU+IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCgpKTsKLX0KLQotLy8gUmVuZGVyVGhl
bWU6OnRoZW1lRm9yUGFnZSBmb3IgQW5kcm9pZCBpcyBkZWZpbmVkIGluIFJlbmRlclRoZW1lQ2hy
b21pdW1BbmRyb2lkLmNwcC4KLSNpZiAhT1MoQU5EUk9JRCkKLVBhc3NSZWZQdHI8UmVuZGVyVGhl
bWU+IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoUGFnZSogcGFnZSkKLXsKLSAgICBzdGF0aWMg
UmVuZGVyVGhlbWUqIHJ0ID0gUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpjcmVhdGUoKS5sZWFr
UmVmKCk7Ci0gICAgcmV0dXJuIHJ0OwotfQotI2VuZGlmCi0KLVJlbmRlclRoZW1lQ2hyb21pdW1M
aW51eDo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCkKLXsKLSAgICBtX2NhcmV0QmxpbmtJbnRl
cnZhbCA9IFJlbmRlclRoZW1lOjpjYXJldEJsaW5rSW50ZXJ2YWwoKTsKLX0KLQotUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4Ojp+UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCkKLXsKLX0KLQotQ29s
b3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzeXN0ZW1Db2xvcihpbnQgY3NzVmFsdWVJZCkg
Y29uc3QKLXsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3IgbGludXhCdXR0b25HcmF5Q29sb3IoMHhm
ZmRkZGRkZCk7Ci0KLSAgICBpZiAoY3NzVmFsdWVJZCA9PSBDU1NWYWx1ZUJ1dHRvbmZhY2UpCi0g
ICAgICAgIHJldHVybiBsaW51eEJ1dHRvbkdyYXlDb2xvcjsKLSAgICByZXR1cm4gUmVuZGVyVGhl
bWU6OnN5c3RlbUNvbG9yKGNzc1ZhbHVlSWQpOwotfQotCi1TdHJpbmcgUmVuZGVyVGhlbWVDaHJv
bWl1bUxpbnV4OjpleHRyYURlZmF1bHRTdHlsZVNoZWV0KCkKLXsKLSAgICByZXR1cm4gUmVuZGVy
VGhlbWVDaHJvbWl1bVNraWE6OmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKSArCi0gICAgICAgICAg
IFN0cmluZyh0aGVtZUNocm9taXVtTGludXhVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YodGhl
bWVDaHJvbWl1bUxpbnV4VXNlckFnZW50U3R5bGVTaGVldCkpOwotfQotCi1ib29sIFJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eDo6Y29udHJvbFN1cHBvcnRzVGludHMoY29uc3QgUmVuZGVyT2JqZWN0
KiBvKSBjb25zdAotewotICAgIHJldHVybiBpc0VuYWJsZWQobyk7Ci19Ci0KLUNvbG9yIFJlbmRl
clRoZW1lQ2hyb21pdW1MaW51eDo6YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xv
cigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIENvbG9yKDB4MjgsIDB4MjgsIDB4MjgpOwotfQotCi1D
b2xvciBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IoKSBjb25zdAotewotICAgIHJldHVybiBDb2xvcjo6YmxhY2s7Ci19Ci0KLUNv
bG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6aW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gQ29sb3IoMHhjOCwgMHhjOCwgMHhj
OCk7Ci19Ci0KLUNvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6aW5hY3RpdmVMaXN0Qm94
U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gQ29sb3IoMHgz
MiwgMHgzMiwgMHgzMik7Ci19Ci0KLUNvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGxh
dGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAotewotICAgIHJldHVy
biBtX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcjsKLX0KLQotQ29sb3IgUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4OjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9y
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xv
cjsKLX0KLQotQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwbGF0Zm9ybUFjdGl2ZVNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYWN0aXZlU2Vs
ZWN0aW9uRm9yZWdyb3VuZENvbG9yOwotfQotCi1Db2xvciBSZW5kZXJUaGVtZUNocm9taXVtTGlu
dXg6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2luYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwotfQotCi0jaWYg
RU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi1JbnRTaXplIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51
eDo6c2xpZGVyVGlja1NpemUoKSBjb25zdAotewotICAgIHJldHVybiBJbnRTaXplKDEsIDYpOwot
fQotCi1pbnQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzbGlkZXJUaWNrT2Zmc2V0RnJvbVRy
YWNrQ2VudGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gLTE2OwotfQotI2VuZGlmCi0KLXZvaWQg
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5
bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAotewotICAgIEludFNpemUgc2l6ZSA9
IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJL
aXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2xpZGVyVGh1bWIpOwotCi0gICAgaWYgKHN0eWxlLT5h
cHBlYXJhbmNlKCkgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCkgewotICAgICAgICBzdHls
ZS0+c2V0V2lkdGgoTGVuZ3RoKHNpemUud2lkdGgoKSwgRml4ZWQpKTsKLSAgICAgICAgc3R5bGUt
PnNldEhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKLSAgICB9IGVsc2UgaWYg
KHN0eWxlLT5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQpIHsKLSAgICAg
ICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChzaXplLmhlaWdodCgpLCBGaXhlZCkpOwotICAgICAg
ICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7Ci0gICAgfSBl
bHNlCi0gICAgICAgIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RTbGlkZXJUaHVtYlNp
emUoc3R5bGUsIGVsZW1lbnQpOwotfQotCi1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6
c3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdAotewotICAgIHJldHVybiB0cnVlOwotfQotCi12
b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c2V0Q2FyZXRCbGlua0ludGVydmFsKGRvdWJs
ZSBpbnRlcnZhbCkKLXsKLSAgICBtX2NhcmV0QmxpbmtJbnRlcnZhbCA9IGludGVydmFsOwotfQot
Ci1kb3VibGUgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpjYXJldEJsaW5rSW50ZXJ2YWxJbnRl
cm5hbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2FyZXRCbGlua0ludGVydmFsOwotfQotCi12
b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c2V0U2VsZWN0aW9uQ29sb3JzKAotICAgIHVu
c2lnbmVkIGFjdGl2ZUJhY2tncm91bmRDb2xvciwKLSAgICB1bnNpZ25lZCBhY3RpdmVGb3JlZ3Jv
dW5kQ29sb3IsCi0gICAgdW5zaWduZWQgaW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IsCi0gICAgdW5z
aWduZWQgaW5hY3RpdmVGb3JlZ3JvdW5kQ29sb3IpCi17Ci0gICAgbV9hY3RpdmVTZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IgPSBhY3RpdmVCYWNrZ3JvdW5kQ29sb3I7Ci0gICAgbV9hY3RpdmVTZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3IgPSBhY3RpdmVGb3JlZ3JvdW5kQ29sb3I7Ci0gICAgbV9pbmFj
dGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9IGluYWN0aXZlQmFja2dyb3VuZENvbG9yOwot
ICAgIG1faW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgPSBpbmFjdGl2ZUZvcmVncm91
bmRDb2xvcjsKLX0KLQotYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50Q2hlY2ti
b3goUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJl
Y3QpCi17Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJh
bXM7Ci0gICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCktPmNhbnZhcygpOwotICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5jaGVja2VkID0gaXND
aGVja2VkKG8pOwotICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5pbmRldGVybWluYXRlID0gaXNJbmRl
dGVybWluYXRlKG8pOwotCi0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVu
Z2luZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRDaGVja2Jv
eCwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0
cmFQYXJhbXMpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBSZW5kZXJUaGVtZUNocm9t
aXVtTGludXg6OnNldENoZWNrYm94U2l6ZShSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0Ci17Ci0g
ICAgLy8gSWYgdGhlIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGJvdGggc3BlY2lmaWVkLCB0aGVuIHdl
IGhhdmUgbm90aGluZyB0byBkby4KLSAgICBpZiAoIXN0eWxlLT53aWR0aCgpLmlzSW50cmluc2lj
T3JBdXRvKCkgJiYgIXN0eWxlLT5oZWlnaHQoKS5pc0F1dG8oKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVu
Z2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRDaGVja2JveCk7Ci0g
ICAgc2V0U2l6ZUlmQXV0byhzdHlsZSwgc2l6ZSk7Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVDaHJv
bWl1bUxpbnV4OjpwYWludFJhZGlvKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBp
LCBjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OkV4
dHJhUGFyYW1zIGV4dHJhUGFyYW1zOwotICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBp
LmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKLSAgICBleHRyYVBhcmFtcy5i
dXR0b24uY2hlY2tlZCA9IGlzQ2hlY2tlZChvKTsKLQotICAgIFdlYktpdDo6UGxhdGZvcm06OmN1
cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5n
aW5lOjpQYXJ0UmFkaW8sIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6V2ViUmVj
dChyZWN0KSwgJmV4dHJhUGFyYW1zKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgUmVu
ZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUqIHN0eWxlKSBj
b25zdAotewotICAgIC8vIElmIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBib3RoIHNwZWNpZmll
ZCwgdGhlbiB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8uCi0gICAgaWYgKCFzdHlsZS0+d2lkdGgoKS5p
c0ludHJpbnNpY09yQXV0bygpICYmICFzdHlsZS0+aGVpZ2h0KCkuaXNBdXRvKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEludFNpemUgc2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQo
KS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0UmFk
aW8pOwotICAgIHNldFNpemVJZkF1dG8oc3R5bGUsIHNpemUpOwotfQotCi1ib29sIFJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWlu
dEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7Ci0gICAgV2ViS2l0OjpXZWJDYW52YXMqIGNh
bnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwotICAgIGV4dHJh
UGFyYW1zLmJ1dHRvbi5pc0RlZmF1bHQgPSBpc0RlZmF1bHQobyk7Ci0gICAgZXh0cmFQYXJhbXMu
YnV0dG9uLmhhc0JvcmRlciA9IHRydWU7Ci0gICAgZXh0cmFQYXJhbXMuYnV0dG9uLmJhY2tncm91
bmRDb2xvciA9IGRlZmF1bHRCdXR0b25CYWNrZ3JvdW5kQ29sb3I7Ci0gICAgaWYgKG8tPmhhc0Jh
Y2tncm91bmQoKSkKLSAgICAgICAgZXh0cmFQYXJhbXMuYnV0dG9uLmJhY2tncm91bmRDb2xvciA9
IG8tPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcikucmdiKCk7Ci0KLSAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5n
aW5lKCktPnBhaW50KGNhbnZhcywgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydEJ1dHRvbiwg
Z2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0cmFQ
YXJhbXMpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSZW5kZXJUaGVtZUNocm9taXVt
TGludXg6OnBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBp
LCBjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIC8vIFdlYlRoZW1lRW5naW5lIGRvZXMgbm90
IGhhbmRsZSBib3JkZXIgcm91bmRlZCBjb3JuZXIgYW5kIGJhY2tncm91bmQgaW1hZ2UKLSAgICAv
LyBzbyByZXR1cm4gdHJ1ZSB0byBkcmF3IENTUyBib3JkZXIgYW5kIGJhY2tncm91bmQuCi0gICAg
aWYgKG8tPnN0eWxlKCktPmhhc0JvcmRlclJhZGl1cygpIHx8IG8tPnN0eWxlKCktPmhhc0JhY2tn
cm91bmRJbWFnZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIENvbnRyb2xQYXJ0IHBh
cnQgPSBvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCk7Ci0KLSAgICBXZWJLaXQ6OldlYlRoZW1lRW5n
aW5lOjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKLSAgICBleHRyYVBhcmFtcy50ZXh0RmllbGQu
aXNUZXh0QXJlYSA9IHBhcnQgPT0gVGV4dEFyZWFQYXJ0OwotICAgIGV4dHJhUGFyYW1zLnRleHRG
aWVsZC5pc0xpc3Rib3ggPSBwYXJ0ID09IExpc3Rib3hQYXJ0OwotCi0gICAgV2ViS2l0OjpXZWJD
YW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwot
Ci0gICAgLy8gRmFsbGJhY2sgdG8gd2hpdGUgaWYgdGhlIHNwZWNpZmllZCBjb2xvciBvYmplY3Qg
aXMgaW52YWxpZC4KLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OndoaXRlKTsKLSAg
ICBpZiAoby0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKS5pc1ZhbGlkKCkpCi0gICAgICAgIGJhY2tncm91bmRDb2xvciA9IG8tPnN0eWxl
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0g
ICAgZXh0cmFQYXJhbXMudGV4dEZpZWxkLmJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xv
ci5yZ2IoKTsKLQotICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUo
KS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0VGV4dEZpZWxkLCBn
ZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6OldlYlJlY3QocmVjdCksICZleHRyYVBh
cmFtcyk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1M
aW51eDo6cGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBpZiAoIW8tPmlzQm94KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGNvbnN0IGludCByaWdodCA9IHJlY3QueCgpICsgcmVjdC53aWR0
aCgpOwotICAgIGNvbnN0IGludCBtaWRkbGUgPSByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkgLyAy
OwotCi0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7
Ci0gICAgZXh0cmFQYXJhbXMubWVudUxpc3QuYXJyb3dYID0gKG8tPnN0eWxlKCktPmRpcmVjdGlv
bigpID09IFJUTCkgPyByZWN0LngoKSArIDcgOiByaWdodCAtIDEzOwotICAgIGV4dHJhUGFyYW1z
Lm1lbnVMaXN0LmFycm93WSA9IG1pZGRsZTsKLSAgICBjb25zdCBSZW5kZXJCb3gqIGJveCA9IHRv
UmVuZGVyQm94KG8pOwotICAgIC8vIE1hdGNoIENocm9taXVtIFdpbiBiZWhhdmlvdXIgb2Ygc2hv
d2luZyBhbGwgYm9yZGVycyBpZiBhbnkgYXJlIHNob3duLgotICAgIGV4dHJhUGFyYW1zLm1lbnVM
aXN0Lmhhc0JvcmRlciA9IGJveC0+Ym9yZGVyUmlnaHQoKSB8fCBib3gtPmJvcmRlckxlZnQoKSB8
fCBib3gtPmJvcmRlclRvcCgpIHx8IGJveC0+Ym9yZGVyQm90dG9tKCk7Ci0gICAgZXh0cmFQYXJh
bXMubWVudUxpc3QuaGFzQm9yZGVyUmFkaXVzID0gby0+c3R5bGUoKS0+aGFzQm9yZGVyUmFkaXVz
KCk7Ci0gICAgLy8gRmFsbGJhY2sgdG8gdHJhbnNwYXJlbnQgaWYgdGhlIHNwZWNpZmllZCBjb2xv
ciBvYmplY3QgaXMgaW52YWxpZC4KLSAgICBleHRyYVBhcmFtcy5tZW51TGlzdC5iYWNrZ3JvdW5k
Q29sb3IgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7Ci0gICAgaWYgKG8tPmhhc0JhY2tncm91bmQoKSkK
LSAgICAgICAgZXh0cmFQYXJhbXMubWVudUxpc3QuYmFja2dyb3VuZENvbG9yID0gby0+c3R5bGUo
KS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5yZ2Io
KTsKLQotICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLT5jYW52YXMoKTsKLQotICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+
dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0
TWVudUxpc3QsIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6V2ViUmVjdChyZWN0
KSwgJmV4dHJhUGFyYW1zKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4OjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3Qg
UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIFdlYktpdDo6V2ViVGhl
bWVFbmdpbmU6OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOwotICAgIFdlYktpdDo6V2ViQ2FudmFz
KiBjYW52YXMgPSBpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKLSAgICBl
eHRyYVBhcmFtcy5zbGlkZXIudmVydGljYWwgPSBvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0g
U2xpZGVyVmVydGljYWxQYXJ0OwotCi0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50
aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRT
bGlkZXJUcmFjaywgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJl
Y3QpLCAmZXh0cmFQYXJhbXMpOwotCi0jaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0gICAg
cGFpbnRTbGlkZXJUaWNrcyhvLCBpLCByZWN0KTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRTbGlkZXJUaHVtYihS
ZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkK
LXsKLSAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsK
LSAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKS0+Y2FudmFzKCk7Ci0gICAgZXh0cmFQYXJhbXMuc2xpZGVyLnZlcnRpY2FsID0gby0+c3R5
bGUoKS0+YXBwZWFyYW5jZSgpID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0OwotICAgIGV4dHJh
UGFyYW1zLnNsaWRlci5pbkRyYWcgPSBpc1ByZXNzZWQobyk7Ci0KLSAgICBXZWJLaXQ6OlBsYXRm
b3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2ViS2l0OjpXZWJU
aGVtZUVuZ2luZTo6UGFydFNsaWRlclRodW1iLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBX
ZWJLaXQ6OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi12b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6YWRqdXN0SW5uZXJTcGluQnV0dG9u
U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0
Ci17Ci0gICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVt
ZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRJbm5lclNwaW5C
dXR0b24pOwotCi0gICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZpeGVk
KSk7Ci0gICAgc3R5bGUtPnNldE1pbldpZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7
Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludElubmVyU3BpbkJ1dHRv
bihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVj
dCkKLXsKLSAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRyYVBhcmFt
czsKLSAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKS0+Y2FudmFzKCk7Ci0gICAgZXh0cmFQYXJhbXMuaW5uZXJTcGluLnNwaW5VcCA9IChj
b250cm9sU3RhdGVzRm9yUmVuZGVyZXIobykgJiBTcGluVXBTdGF0ZSk7Ci0gICAgZXh0cmFQYXJh
bXMuaW5uZXJTcGluLnJlYWRPbmx5ID0gaXNSZWFkT25seUNvbnRyb2wobyk7Ci0KLSAgICBXZWJL
aXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydElubmVyU3BpbkJ1dHRvbiwgZ2V0V2ViVGhlbWVTdGF0
ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMpOwotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotI2lmIEVOQUJMRShQUk9HUkVTU19FTEVNRU5UKQotCi1ib29sIFJl
bmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqIG8s
IGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBpZiAoIW8t
PmlzUHJvZ3Jlc3MoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBSZW5kZXJQcm9ncmVz
cyogcmVuZGVyUHJvZ3Jlc3MgPSB0b1JlbmRlclByb2dyZXNzKG8pOwotICAgIEludFJlY3QgdmFs
dWVSZWN0ID0gcHJvZ3Jlc3NWYWx1ZVJlY3RGb3IocmVuZGVyUHJvZ3Jlc3MsIHJlY3QpOwotCi0g
ICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7Ci0gICAg
ZXh0cmFQYXJhbXMucHJvZ3Jlc3NCYXIuZGV0ZXJtaW5hdGUgPSByZW5kZXJQcm9ncmVzcy0+aXNE
ZXRlcm1pbmF0ZSgpOwotICAgIGV4dHJhUGFyYW1zLnByb2dyZXNzQmFyLnZhbHVlUmVjdFggPSB2
YWx1ZVJlY3QueCgpOwotICAgIGV4dHJhUGFyYW1zLnByb2dyZXNzQmFyLnZhbHVlUmVjdFkgPSB2
YWx1ZVJlY3QueSgpOwotICAgIGV4dHJhUGFyYW1zLnByb2dyZXNzQmFyLnZhbHVlUmVjdFdpZHRo
ID0gdmFsdWVSZWN0LndpZHRoKCk7Ci0gICAgZXh0cmFQYXJhbXMucHJvZ3Jlc3NCYXIudmFsdWVS
ZWN0SGVpZ2h0ID0gdmFsdWVSZWN0LmhlaWdodCgpOwotCi0gICAgRGlyZWN0aW9uRmxpcHBpbmdT
Y29wZSBzY29wZShvLCBpLCByZWN0KTsKLSAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0g
aS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7Ci0gICAgV2ViS2l0OjpQbGF0
Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2Vi
VGhlbWVFbmdpbmU6OlBhcnRQcm9ncmVzc0JhciwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwg
V2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMpOwotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotI2VuZGlmCi0KLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzaG91bGRPcGVu
UGlja2VyV2l0aEY0S2V5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguaAkocmV2aXNpb24gMTM2NDA2KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDExMiArMCwwIEBACi0vKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBwcm9qZWN0LgotICoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwg
SW5jLgotICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFp
bC5jb20KLSAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgot
ICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+Ci0gKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlLCBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuCi0gKgot
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0j
aWZuZGVmIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eF9oCi0jZGVmaW5lIFJlbmRlclRoZW1lQ2hy
b21pdW1MaW51eF9oCi0KLSNpbmNsdWRlICJSZW5kZXJUaGVtZUNocm9taXVtU2tpYS5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBSZW5kZXJUaGVtZUNocm9taXVtTGludXgg
OiBwdWJsaWMgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEgewotICAgIHB1YmxpYzoKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOwotICAgICAgICB2aXJ0dWFs
IFN0cmluZyBleHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7Ci0KLSAgICAgICAgdmlydHVhbCBDb2xv
ciBzeXN0ZW1Db2xvcihpbnQgY3NzVmFsaWRJZCkgY29uc3Q7Ci0KLSAgICAgICAgLy8gQSBtZXRo
b2QgYXNraW5nIGlmIHRoZSBjb250cm9sIGNoYW5nZXMgaXRzIHRpbnQgd2hlbiB0aGUgd2luZG93
IGhhcyBmb2N1cyBvciBub3QuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBjb250cm9sU3VwcG9ydHNU
aW50cyhjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKLQotICAgICAgICAvLyBMaXN0IEJveCBz
ZWxlY3Rpb24gY29sb3IKLSAgICAgICAgdmlydHVhbCBDb2xvciBhY3RpdmVMaXN0Qm94U2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgQ29sb3IgYWN0aXZl
TGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0OwotICAgICAgICB2aXJ0dWFs
IENvbG9yIGluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0Owot
ICAgICAgICB2aXJ0dWFsIENvbG9yIGluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRD
b2xvcigpIGNvbnN0OwotCi0gICAgICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVTZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBDb2xvciBwbGF0
Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Ci0gICAgICAgIHZp
cnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25z
dDsKLSAgICAgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdy
b3VuZENvbG9yKCkgY29uc3Q7Ci0KLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICAg
ICAgdmlydHVhbCBJbnRTaXplIHNsaWRlclRpY2tTaXplKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAg
ICAgIHZpcnR1YWwgaW50IHNsaWRlclRpY2tPZmZzZXRGcm9tVHJhY2tDZW50ZXIoKSBjb25zdCBP
VkVSUklERTsKLSNlbmRpZgotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJT
aXplKFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwotCi0gICAgICAgIHN0YXRpYyB2b2lk
IHNldENhcmV0QmxpbmtJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpOwotICAgICAgICB2aXJ0dWFs
IGRvdWJsZSBjYXJldEJsaW5rSW50ZXJ2YWxJbnRlcm5hbCgpIGNvbnN0OwotCi0gICAgICAgIHZp
cnR1YWwgYm9vbCBwYWludENoZWNrYm94KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldENoZWNrYm94U2l6ZShS
ZW5kZXJTdHlsZSopIGNvbnN0OwotCi0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFJhZGlvKFJl
bmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAg
dmlydHVhbCB2b2lkIHNldFJhZGlvU2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OwotCi0gICAgICAg
IHZpcnR1YWwgYm9vbCBwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRGaWVsZChS
ZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAg
IHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVyVHJh
Y2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAg
ICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIGFkanVz
dElubmVyU3BpbkJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1l
bnQqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBib29sIHBhaW50SW5uZXJTcGluQnV0dG9uKFJl
bmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLQotICAgICAg
ICB2aXJ0dWFsIGJvb2wgcG9wc01lbnVCeVNwYWNlT3JSZXR1cm4oKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiB0cnVlOyB9Ci0KLSNpZiBFTkFCTEUoUFJPR1JFU1NfRUxFTUVOVCkKLSAgICAgICAg
dmlydHVhbCBib29sIHBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpOwotI2VuZGlmCi0KLSAgICAgICAgdmlydHVhbCBib29sIHNo
b3VsZE9wZW5QaWNrZXJXaXRoRjRLZXkoKSBjb25zdCBPVkVSUklERTsKLQotICAgICAgICBzdGF0
aWMgdm9pZCBzZXRTZWxlY3Rpb25Db2xvcnModW5zaWduZWQgYWN0aXZlQmFja2dyb3VuZENvbG9y
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYWN0aXZl
Rm9yZWdyb3VuZENvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmFjdGl2ZUZvcmVncm91bmRDb2xvcik7Ci0KLSAg
ICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCgpOwotICAgICAg
ICB2aXJ0dWFsIH5SZW5kZXJUaGVtZUNocm9taXVtTGludXgoKTsKLQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIC8vIEEgZ2VuZXJhbCBtZXRob2QgYXNraW5nIGlmIGFueSBjb250cm9sIHRpbnRpbmcg
aXMgc3VwcG9ydGVkIGF0IGFsbC4KLSAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJv
bFRpbnRzKCkgY29uc3Q7Ci0KLSAgICAgICAgc3RhdGljIGRvdWJsZSBtX2NhcmV0QmxpbmtJbnRl
cnZhbDsKLQotICAgICAgICBzdGF0aWMgdW5zaWduZWQgbV9hY3RpdmVTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3I7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBtX2FjdGl2ZVNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvcjsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIG1faW5hY3RpdmVTZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3I7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBtX2luYWN0aXZlU2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yOwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkocmV2aXNpb24gMTM2NDM2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0xMi0wMyAgU2Nv
dHQgVmlvbGV0ICA8c2t5QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJlbW92
ZSBsaW51eCB0aGVtZSByZWxhdGVkIGZpbGVzIGFuZCBzd2l0Y2ggdG8gZGVmYXVsdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzODk3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbGludXggdGhlbWUgcmVs
YXRlZCBmaWxlcyBhcmUgbm93IG5hbWVkIGRlZmF1bHQuIFRoaXMgcmVtb3ZlcworICAgICAgICBs
aW51eCBmaWxlcyB1cGRhdGVzIGJ1aWxkIGZpbGVzIGFuZCByZW1vdmVzIGlmZGVmcy4KKworICAg
ICAgICAqIFdlYktpdC5neXA6IHVwZGF0ZSBydWxlcy4KKyAgICAgICAgKiBwdWJsaWMvbGludXgv
V2ViUmVuZGVyVGhlbWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0U2Nyb2xsYmFyQ29sb3JzKTogVXBk
YXRlIGlmZGVmcworICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0U2VsZWN0aW9uQ29s
b3JzKTogVXBkYXRlIGlmZGVmcworICAgICAgICAqIHNyYy9saW51eC9XZWJSZW5kZXJUaGVtZS5j
cHA6IFJlbW92ZWQuCisKIDIwMTItMTItMDMgIEV1Z2VuZSBLbHl1Y2huaWtvdiAgPGV1c3Rhc0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTWFrZSBtYWluLXRocmVhZCBt
b25pdG9yaW5nIGdvIHRocm91Z2ggSW5zcGVjdG9yQ29udHJvbGxlcgpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gMTM2NDA2KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC00MzksNyArNDM5LDYgQEAKICAgICAg
ICAgICAgICAgICAnc3JjL2xpbnV4L1dlYkZvbnRJbmZvLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9saW51eC9XZWJGb250UmVuZGVyaW5nLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9s
aW51eC9XZWJGb250UmVuZGVyU3R5bGUuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL2xpbnV4
L1dlYlJlbmRlclRoZW1lLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy94MTEvV2ViU2NyZWVu
SW5mb0ZhY3RvcnkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL21hYy9XZWJJbnB1dEV2ZW50
RmFjdG9yeS5tbScsCiAgICAgICAgICAgICAgICAgJ3NyYy9tYWMvV2ViU2NyZWVuSW5mb0ZhY3Rv
cnkubW0nLApAQCAtODQ2LDEwICs4NDUsNiBAQAogICAgICAgICAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgIFsndXNlX2RlZmF1bHRfcmVuZGVyX3Ro
ZW1lPT0xJywgewotICAgICAgICAgICAgICAgICAgICAnc291cmNlcy8nOiBbCi0gICAgICAgICAg
ICAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnc3JjL2xpbnV4L1dlYlJlbmRlclRoZW1lLmNwcCdd
LAotICAgICAgICAgICAgICAgICAgICAgICAgWydleGNsdWRlJywgJ3B1YmxpYy9saW51eC9XZWJS
ZW5kZXJUaGVtZS5oJ10sCi0gICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAg
ICAgICdpbmNsdWRlX2RpcnMnOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAncHVibGljL2Rl
ZmF1bHQnLAogICAgICAgICAgICAgICAgICAgICBdLApJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvbGludXgvV2ViUmVuZGVyVGhlbWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJSZW5kZXJUaGVtZS5oCShyZXZpc2lvbiAx
MzY0MDYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJSZW5kZXJU
aGVtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgSm9lbCBTdGFubGV5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24u
Ci0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViUmVuZGVy
VGhlbWVfaAotI2RlZmluZSBXZWJSZW5kZXJUaGVtZV9oCi0KLSNpbmNsdWRlICIuLi9wbGF0Zm9y
bS9XZWJDb21tb24uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIFNldCBjYXJldCBibGlu
ayBpbnRlcnZhbCBmb3IgdGV4dCBpbnB1dCBhcmVhcy4KLVdFQktJVF9FWFBPUlQgdm9pZCBzZXRD
YXJldEJsaW5rSW50ZXJ2YWwoZG91YmxlKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAko
cmV2aXNpb24gMTM2NDA2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksMTAgKzE3OSw2IEBACiAjaW5jbHVkZSAiUmVu
ZGVyVGhlbWVDaHJvbWl1bVdpbi5oIgogI2VuZGlmCiAjZWxzZQotI2lmIE9TKFVOSVgpICYmICFP
UyhEQVJXSU4pICYmICFFTkFCTEUoREVGQVVMVF9SRU5ERVJfVEhFTUUpCi0jaW5jbHVkZSAiUGxh
dGZvcm1UaGVtZUNocm9taXVtTGludXguaCIKLSNpbmNsdWRlICJSZW5kZXJUaGVtZUNocm9taXVt
TGludXguaCIKLSNlbmRpZgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjZW5kaWYKIApAQCAt
MzU3Myw4ICszNTY5LDYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0U2Nyb2xsYmFyQ29sb3JzKHVu
cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRyYWNrQ29s
b3IpIHsKICNpZiBFTkFCTEUoREVGQVVMVF9SRU5ERVJfVEhFTUUpCiAgICAgUGxhdGZvcm1UaGVt
ZUNocm9taXVtRGVmYXVsdDo6c2V0U2Nyb2xsYmFyQ29sb3JzKGluYWN0aXZlQ29sb3IsIGFjdGl2
ZUNvbG9yLCB0cmFja0NvbG9yKTsKLSNlbGlmIE9TKFVOSVgpICYmICFPUyhEQVJXSU4pICYmICFP
UyhBTkRST0lEKQotICAgIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRTY3JvbGxiYXJD
b2xvcnMoaW5hY3RpdmVDb2xvciwgYWN0aXZlQ29sb3IsIHRyYWNrQ29sb3IpOwogI2VuZGlmCiB9
CiAKQEAgLTM1ODUsOSArMzU3OSw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFNlbGVjdGlvbkNv
bG9ycyh1bnMKICNpZiBFTkFCTEUoREVGQVVMVF9SRU5ERVJfVEhFTUUpCiAgICAgUmVuZGVyVGhl
bWVDaHJvbWl1bURlZmF1bHQ6OnNldFNlbGVjdGlvbkNvbG9ycyhhY3RpdmVCYWNrZ3JvdW5kQ29s
b3IsIGFjdGl2ZUZvcmVncm91bmRDb2xvciwgaW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IsIGluYWN0
aXZlRm9yZWdyb3VuZENvbG9yKTsKICAgICB0aGVtZSgpLT5wbGF0Zm9ybUNvbG9yc0RpZENoYW5n
ZSgpOwotI2VsaWYgT1MoVU5JWCkgJiYgIU9TKERBUldJTikgJiYgIU9TKEFORFJPSUQpCi0gICAg
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRTZWxlY3Rpb25Db2xvcnMoYWN0aXZlQmFja2dy
b3VuZENvbG9yLCBhY3RpdmVGb3JlZ3JvdW5kQ29sb3IsIGluYWN0aXZlQmFja2dyb3VuZENvbG9y
LCBpbmFjdGl2ZUZvcmVncm91bmRDb2xvcik7Ci0gICAgdGhlbWUoKS0+cGxhdGZvcm1Db2xvcnNE
aWRDaGFuZ2UoKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9saW51eC9XZWJSZW5kZXJUaGVtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvbGludXgvV2ViUmVuZGVyVGhlbWUuY3BwCShyZXZpc2lvbiAxMzY0MDYpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eC9XZWJSZW5kZXJUaGVtZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBK
b2VsIFN0YW5sZXkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldlYlJlbmRlclRoZW1lLmgiCi0KLSNpbmNsdWRlICJSZW5kZXJUaGVtZUNocm9taXVtTGlu
dXguaCIKLSNpbmNsdWRlICJXZWJWaWV3LmgiCi0KLXVzaW5nIFdlYkNvcmU6OlJlbmRlclRoZW1l
OwotdXNpbmcgV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OwotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotdm9pZCBzZXRDYXJldEJsaW5rSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQot
ewotICAgIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c2V0Q2FyZXRCbGlua0ludGVydmFsKGlu
dGVydmFsKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzY0MzYpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMi0w
MyAgU2NvdHQgVmlvbGV0ICA8c2t5QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IFJlbW92ZSBsaW51eCB0aGVtZSByZWxhdGVkIGZpbGVzIGFuZCBzd2l0Y2ggdG8gZGVmYXVsdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzODk3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jb25maWcvYnVpbGRfdW5pdHRlc3QucHk6CisgICAgICAgIChTaG91
bGRCdWlsZFRlc3QpOiBsaW51eC0+ZGVmYXVsdAorCiAyMDEyLTEyLTAzICBKdWxpZW4gQlJJQU5D
RUFVICAgPGpicmlhbmNlYXVAbmRzLmNvbT4KIAogICAgICAgICBBZGQgUXQvU0g0IGJ1aWxkIHNs
YXZlIHRvIGJ1aWxkLndlYmtpdC5vcmcKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NvbmZpZy9idWlsZF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jb25maWcvYnVpbGRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDEzNjQw
NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9idWlsZF91bml0dGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBTaG91bGRCdWlsZFRl
c3QodW5pdHRlc3QuVGVzdENhc2UpCiAgICAgICAgIChbIlNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9mb28iXSwgWyJtYWMtbGVvcGFyZCIsICJtYWMtbGlvbiIsICAibWFjLW1v
dW50YWlubGlvbiIsICJtYWMtc25vd2xlb3BhcmQiXSksCiAgICAgICAgIChbIlNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3d4L3d4Y29kZS93aW4vZm9vIl0sIFtdKSwKICAgICAgICAgKFsiU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIiwgIlNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oIl0sIFsibWFjLWxlb3BhcmQiLCAibWFjLWxpb24iLCAg
Im1hYy1tb3VudGFpbmxpb24iLCAibWFjLXNub3dsZW9wYXJkIl0pLAotICAgICAgICAoWyJTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmgiXSwgWyJjaHJv
bWl1bS1saW51eCJdKSwKKyAgICAgICAgKFsiU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lQ2hyb21pdW1EZWZhdWx0LmgiXSwgWyJjaHJvbWl1bS1saW51eCJdKSwKICAgICAgICAg
KFsiU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luQ0UuaCJdLCBbXSksCiAg
ICAgICAgIChbIlRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL0xlYWtzVmlld2VyL0xlYWtzVmlld2VyLmpzIl0sIFtdKSwKICAgICBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177333</attachid>
            <date>2012-12-03 14:32:30 -0800</date>
            <delta_ts>2012-12-05 09:20:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103897-20121203142956.patch</filename>
            <type>text/plain</type>
            <size>64798</size>
            <attacher name="Scott Violet">sky</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2NDM2KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTEyLTAzICBTY290
dCBWaW9sZXQgIDxza3lAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVtb3Zl
IGxpbnV4IHRoZW1lIHJlbGF0ZWQgZmlsZXMgYW5kIHN3aXRjaCB0byBkZWZhdWx0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM4OTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6
IHJlbW92ZSBXZWJUaGVtZUVuZ2luZS5oCisgICAgICAgICogY2hyb21pdW0vcHVibGljL2xpbnV4
L1dlYlRoZW1lRW5naW5lLmg6IFJlbW92ZWQuCisKIDIwMTItMTItMDMgIFNhbWkgS3lvc3RpbGEg
IDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBUZWxsIFdlYklu
cHV0SGFuZGxlckNsaWVudCB3aGVuIGVuZCBvZiBpbnB1dCBpcyByZWFjaGVkIGZvciBjdXJyZW50
IHZzeW5jIHBlcmlvZApJbmRleDogU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkJKHJldmlzaW9uIDEzNjQwNikK
KysrIFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIs
NyArMTUyLDYgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udElu
Zm8uaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRSZW5kZXJT
dHlsZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViU2FuZGJveFN1
cHBvcnQuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlRoZW1lRW5n
aW5lLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9tYWMvV2ViU2FuZGJveFN1cHBv
cnQuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL21hYy9XZWJUaGVtZUVuZ2luZS5o
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvd2luL1dlYlNhbmRib3hTdXBwb3J0Lmgn
LApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJUaGVtZUVu
Z2luZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGlu
dXgvV2ViVGhlbWVFbmdpbmUuaAkocmV2aXNpb24gMTM2NDA2KQorKysgU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJUaGVtZUVuZ2luZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDE1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJUaGVtZUVuZ2luZV9oCi0jZGVmaW5lIFdlYlRoZW1l
RW5naW5lX2gKLQotI2luY2x1ZGUgIi4uL1dlYkNhbnZhcy5oIgotI2luY2x1ZGUgIi4uL1dlYkNv
bG9yLmgiCi0jaW5jbHVkZSAiLi4vV2ViU2l6ZS5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
c3RydWN0IFdlYlJlY3Q7Ci0KLWNsYXNzIFdlYlRoZW1lRW5naW5lIHsKLXB1YmxpYzoKLSAgICAv
LyBUaGUgVUkgcGFydCB3aGljaCBpcyBiZWluZyBhY2Nlc3NlZC4KLSAgICBlbnVtIFBhcnQgewot
ICAgICAgICAvLyBTY3JvbGxiYXJUaGVtZSBwYXJ0cwotICAgICAgICBQYXJ0U2Nyb2xsYmFyRG93
bkFycm93LAotICAgICAgICBQYXJ0U2Nyb2xsYmFyTGVmdEFycm93LAotICAgICAgICBQYXJ0U2Ny
b2xsYmFyUmlnaHRBcnJvdywKLSAgICAgICAgUGFydFNjcm9sbGJhclVwQXJyb3csCi0gICAgICAg
IFBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVGh1bWIsCi0gICAgICAgIFBhcnRTY3JvbGxiYXJWZXJ0
aWNhbFRodW1iLAotICAgICAgICBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNrLAotICAgICAg
ICBQYXJ0U2Nyb2xsYmFyVmVydGljYWxUcmFjaywKLQotICAgICAgICAvLyBSZW5kZXJUaGVtZSBw
YXJ0cwotICAgICAgICBQYXJ0Q2hlY2tib3gsCi0gICAgICAgIFBhcnRSYWRpbywKLSAgICAgICAg
UGFydEJ1dHRvbiwKLSAgICAgICAgUGFydFRleHRGaWVsZCwKLSAgICAgICAgUGFydE1lbnVMaXN0
LAotICAgICAgICBQYXJ0U2xpZGVyVHJhY2ssCi0gICAgICAgIFBhcnRTbGlkZXJUaHVtYiwKLSAg
ICAgICAgUGFydElubmVyU3BpbkJ1dHRvbiwKLSAgICAgICAgUGFydFByb2dyZXNzQmFyCi0gICAg
fTsKLQotICAgIC8vIFRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBhc3NvY2lhdGVkIFBhcnQuCi0g
ICAgZW51bSBTdGF0ZSB7Ci0gICAgICAgIFN0YXRlRGlzYWJsZWQsCi0gICAgICAgIFN0YXRlSG92
ZXIsCi0gICAgICAgIFN0YXRlTm9ybWFsLAotICAgICAgICBTdGF0ZVByZXNzZWQsCi0gICAgfTsK
LQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIGRyYXdpbmcgdGhlIFBhcnRTY3JvbGxiYXJI
b3Jpem9udGFsVHJhY2sgYW5kCi0gICAgLy8gUGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2suCi0g
ICAgc3RydWN0IFNjcm9sbGJhclRyYWNrRXh0cmFQYXJhbXMgewotICAgICAgICAvLyBUaGUgYm91
bmRzIG9mIHRoZSBlbnRpcmUgdHJhY2ssIGFzIG9wcG9zZWQgdG8gdGhlIHBhcnQgYmVpbmcgcGFp
bnRlZC4KLSAgICAgICAgaW50IHRyYWNrWDsKLSAgICAgICAgaW50IHRyYWNrWTsKLSAgICAgICAg
aW50IHRyYWNrV2lkdGg7Ci0gICAgICAgIGludCB0cmFja0hlaWdodDsKLSAgICB9OwotCi0gICAg
Ly8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydENoZWNrYm94LCBQYXJ0UHVzaEJ1dHRvbiBhbmQg
UGFydFJhZGlvLgotICAgIHN0cnVjdCBCdXR0b25FeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wg
Y2hlY2tlZDsKLSAgICAgICAgYm9vbCBpbmRldGVybWluYXRlOyAvLyBXaGV0aGVyIHRoZSBidXR0
b24gc3RhdGUgaXMgaW5kZXRlcm1pbmF0ZS4KLSAgICAgICAgYm9vbCBpc0RlZmF1bHQ7IC8vIFdo
ZXRoZXIgdGhlIGJ1dHRvbiBpcyBkZWZhdWx0IGJ1dHRvbi4KLSAgICAgICAgYm9vbCBoYXNCb3Jk
ZXI7Ci0gICAgICAgIFdlYkNvbG9yIGJhY2tncm91bmRDb2xvcjsKLSAgICB9OwotCi0gICAgLy8g
RXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydFRleHRGaWVsZAotICAgIHN0cnVjdCBUZXh0RmllbGRF
eHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgaXNUZXh0QXJlYTsKLSAgICAgICAgYm9vbCBpc0xp
c3Rib3g7Ci0gICAgICAgIFdlYkNvbG9yIGJhY2tncm91bmRDb2xvcjsKLSAgICB9OwotCi0gICAg
Ly8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydE1lbnVMaXN0Ci0gICAgc3RydWN0IE1lbnVMaXN0
RXh0cmFQYXJhbXMgewotICAgICAgICBib29sIGhhc0JvcmRlcjsKLSAgICAgICAgYm9vbCBoYXNC
b3JkZXJSYWRpdXM7Ci0gICAgICAgIGludCBhcnJvd1g7Ci0gICAgICAgIGludCBhcnJvd1k7Ci0g
ICAgICAgIFdlYkNvbG9yIGJhY2tncm91bmRDb2xvcjsKLSAgICB9OwotCi0gICAgLy8gRXh0cmEg
cGFyYW1ldGVycyBmb3IgUGFydFNsaWRlclRyYWNrIGFuZCBQYXJ0U2xpZGVyVGh1bWIKLSAgICBz
dHJ1Y3QgU2xpZGVyRXh0cmFQYXJhbXMgewotICAgICAgICBib29sIHZlcnRpY2FsOwotICAgICAg
ICBib29sIGluRHJhZzsKLSAgICB9OwotCi0gICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFy
dElubmVyU3BpbkJ1dHRvbgotICAgIHN0cnVjdCBJbm5lclNwaW5CdXR0b25FeHRyYVBhcmFtcyB7
Ci0gICAgICAgIGJvb2wgc3BpblVwOwotICAgICAgICBib29sIHJlYWRPbmx5OwotICAgIH07Ci0K
LSAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0UHJvZ3Jlc3NCYXIKLSAgICBzdHJ1Y3Qg
UHJvZ3Jlc3NCYXJFeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgZGV0ZXJtaW5hdGU7Ci0gICAg
ICAgIGludCB2YWx1ZVJlY3RYOwotICAgICAgICBpbnQgdmFsdWVSZWN0WTsKLSAgICAgICAgaW50
IHZhbHVlUmVjdFdpZHRoOwotICAgICAgICBpbnQgdmFsdWVSZWN0SGVpZ2h0OwotICAgIH07Ci0K
LSAgICB1bmlvbiBFeHRyYVBhcmFtcyB7Ci0gICAgICAgIFNjcm9sbGJhclRyYWNrRXh0cmFQYXJh
bXMgc2Nyb2xsYmFyVHJhY2s7Ci0gICAgICAgIEJ1dHRvbkV4dHJhUGFyYW1zIGJ1dHRvbjsKLSAg
ICAgICAgVGV4dEZpZWxkRXh0cmFQYXJhbXMgdGV4dEZpZWxkOwotICAgICAgICBNZW51TGlzdEV4
dHJhUGFyYW1zIG1lbnVMaXN0OwotICAgICAgICBTbGlkZXJFeHRyYVBhcmFtcyBzbGlkZXI7Ci0g
ICAgICAgIElubmVyU3BpbkJ1dHRvbkV4dHJhUGFyYW1zIGlubmVyU3BpbjsKLSAgICAgICAgUHJv
Z3Jlc3NCYXJFeHRyYVBhcmFtcyBwcm9ncmVzc0JhcjsKLSAgICB9OwotCi0gICAgLy8gR2V0cyB0
aGUgc2l6ZSBvZiB0aGUgZ2l2ZW4gdGhlbWUgcGFydC4gRm9yIHZhcmlhYmxlIHNpemVkIGl0ZW1z
Ci0gICAgLy8gbGlrZSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdGh1bWJzLCB0aGUgd2lkdGggd2lsbCBi
ZSB0aGUgcmVxdWlyZWQgd2lkdGggb2YKLSAgICAvLyB0aGUgdHJhY2sgd2hpbGUgdGhlIGhlaWdo
dCB3aWxsIGJlIHRoZSBtaW5pbXVtIGhlaWdodC4KLSAgICB2aXJ0dWFsIFdlYlNpemUgZ2V0U2l6
ZShQYXJ0KSB7IHJldHVybiBXZWJTaXplKCk7IH0KLSAgICAvLyBQYWludCB0aGUgZ2l2ZW4gdGhl
IGdpdmVuIHRoZW1lIHBhcnQuCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNhbnZhcyosIFBh
cnQsIFN0YXRlLCBjb25zdCBXZWJSZWN0JiwgY29uc3QgRXh0cmFQYXJhbXMqKSB7IH0KLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEzNjQzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDI2IEBACisyMDEyLTEyLTAzICBTY290dCBWaW9sZXQgIDxza3lAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIGxpbnV4IHRoZW1lIHJlbGF0ZWQgZmlsZXMg
YW5kIHN3aXRjaCB0byBkZWZhdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDM4OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBsaW51eCB0aGVtZSByZWxhdGVkIGZpbGVzIGFyZSBub3cgbmFtZWQgZGVm
YXVsdC4gVGhpcyByZW1vdmVzCisgICAgICAgIGxpbnV4IHRoZW1lIGZpbGVzLCB1cGRhdGVzIGJ1
aWxkIGZpbGVzIGFuZCByZW1vdmVzIGlmZGVmcy4KKworICAgICAgICBDb2RlIGNsZWFudXAsIG5v
IG5ldyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOiBVcGRhdGUg
YnVpbGQgcnVsZXMKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IFVwZGF0ZSBidWlsZCBydWxlcwor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hy
b21pdW1MaW51eC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4Lmg6IFJlbW92ZWQuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkLmg6IENoYW5nZSBzdXBlcmNs
YXNzCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcDog
Q2hhbmdlIGNhbGwgdG8gc3VwZXJjbGFzcworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZUNocm9taXVtTGludXguY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZUNocm9taXVtTGludXguaDogUmVtb3ZlZC4KKwogMjAxMi0xMi0wMyAgRmxvcmluIE1hbGl0
YSAgPGZtYWxpdGFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtTa2lhXSBEZWZlcnJlZCBTa0Nh
bnZhcyBzYXZlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEzNjQwNikKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzQ1OCw4ICszNDU4
LDYgQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUZvbnRQcm92
aWRlci5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUZvbnRQ
cm92aWRlckxpbnV4LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hy
b21pdW1Gb250UHJvdmlkZXJXaW4uY3BwJywKLSAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4LmNwcCcsCi0gICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eC5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVD
aHJvbWl1bU1hYy5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1
bU1hYy5tbScsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lh
LmNwcCcsCkBAIC00NjcyLDggKzQ2NzAsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9t
aXVtL1BsYXRmb3JtU3VwcG9ydC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9Q
bGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdC5oJywKLSAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5jcHAnLAotICAgICAg
ICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtV2lkZ2V0LmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuaCcsCkBAIC00NjkyLDggKzQ2ODgs
NiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21p
dW1BbmRyb2lkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW1EZWZhdWx0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURlZmF1bHQuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcCcsCi0gICAgICAgICAgICAn
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5t
bScsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bVdpbi5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAJKHJl
dmlzaW9uIDEzNjQwNikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzAwLDE3ICsxNzAwLDEyIEBACiAgICAgICAgIH1dLAogICAg
ICAgICBbJ3VzZV9kZWZhdWx0X3JlbmRlcl90aGVtZT09MScsIHsKICAgICAgICAgICAnc291cmNl
cy8nOiBbCi0gICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZv
cm1UaGVtZUNocm9taXVtTGludXguaCddLAotICAgICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRm
b3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmNwcCddLAogICAgICAgICAg
ICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bVdp
bi5oJ10sCiAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZv
cm1UaGVtZUNocm9taXVtV2luLmNwcCddLAotICAgICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRm
b3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHAnXSwKLSAgICAgICAg
ICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVt
TGludXguaCddLAogICAgICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3BwJ10sCiAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAn
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5oJ10sCiAgICAgICAg
ICAgXSwKLSAgICAgICAgfV0sCi0gICAgICAgIFsndXNlX2RlZmF1bHRfcmVuZGVyX3RoZW1lPT0w
JywgeworICAgICAgICB9LCB7ICMgdXNlX2RlZmF1bHRfcmVuZGVyX3RoZW1lPT0wCiAgICAgICAg
ICAgJ3NvdXJjZXMvJzogWwogICAgICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL2Nocm9t
aXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwJ10sCiAgICAgICAgICAgICBbJ2V4
Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdC5o
J10sCkBAIC0yMDEzLDcgKzIwMDgsNiBAQAogICAgICAgICB9XSwKICAgICAgICAgWyd1c2VfZGVm
YXVsdF9yZW5kZXJfdGhlbWU9PTEnLCB7CiAgICAgICAgICAgJ3NvdXJjZXMvJzogWwotICAgICAg
ICAgICAgWydleGNsdWRlJywgJ1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC4qJ10sCiAgICAgICAg
ICAgICBbJ2V4Y2x1ZGUnLCAnUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi4qJ10sCiAgICAgICAgICAg
XSwKICAgICAgICAgfV0sCkBAIC0yMDYwLDcgKzIwNTQsNyBAQAogICAgICAgICBbJ09TPT0iYW5k
cm9pZCInLCB7CiAgICAgICAgICAgJ3NvdXJjZXMvJzogWwogICAgICAgICAgICAgWydpbmNsdWRl
JywgJ3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRm9udFByb3ZpZGVyTGludXhcXC5jcHAk
J10sCi0gICAgICAgICAgICBbJ2luY2x1ZGUnLCAncmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21p
dW1MaW51eFxcLmNwcCQnXSwKKyAgICAgICAgICAgIFsnaW5jbHVkZScsICdyZW5kZXJpbmcvUmVu
ZGVyVGhlbWVDaHJvbWl1bURlZmF1bHRcXC5jcHAkJ10sCiAgICAgICAgICAgXSwKICAgICAgICAg
fSx7ICMgT1MhPSJhbmRyb2lkIgogICAgICAgICAgICdzb3VyY2VzLyc6IFsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVRoZW1lQ2hyb21pdW1MaW51eC5jcHAJKHJldmlzaW9uIDEzNjQwNikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSwyMjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXVuc2lnbmVkIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpzX3RodW1iSW5hY3RpdmVDb2xv
ciA9IDB4ZWFlYWVhOwotdW5zaWduZWQgUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXg6OnNfdGh1
bWJBY3RpdmVDb2xvciA9IDB4ZjRmNGY0OwotdW5zaWduZWQgUGxhdGZvcm1UaGVtZUNocm9taXVt
TGludXg6OnNfdHJhY2tDb2xvciA9IDB4ZDNkM2QzOwotCi12b2lkIFBsYXRmb3JtVGhlbWVDaHJv
bWl1bUxpbnV4OjpzZXRTY3JvbGxiYXJDb2xvcnMoCi0gICAgU2tDb2xvciBpbmFjdGl2ZUNvbG9y
LCBTa0NvbG9yIGFjdGl2ZUNvbG9yLCBTa0NvbG9yIHRyYWNrQ29sb3IpCi17Ci0gICAgc190aHVt
YkluYWN0aXZlQ29sb3IgPSBpbmFjdGl2ZUNvbG9yOwotICAgIHNfdGh1bWJBY3RpdmVDb2xvciA9
IGFjdGl2ZUNvbG9yOwotICAgIHNfdHJhY2tDb2xvciA9IHRyYWNrQ29sb3I7Ci19Ci0KLXN0YXRp
YyBTa1NjYWxhciBjbGFtcChTa1NjYWxhciB2YWx1ZSwgU2tTY2FsYXIgbWluLCBTa1NjYWxhciBt
YXgpCi17Ci0gICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KHZhbHVlLCBtaW4pLCBtYXgpOwot
fQotCi1Ta0NvbG9yIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpzYXR1cmF0ZUFuZEJyaWdo
dGVuKGNvbnN0IFNrU2NhbGFyIGhzdlszXSwgU2tTY2FsYXIgc2F0dXJhdGVBbW91bnQsIFNrU2Nh
bGFyIGJyaWdodGVuQW1vdW50KQotewotICAgIFNrU2NhbGFyIGNvbG9yWzNdOwotICAgIGNvbG9y
WzBdID0gaHN2WzBdOwotICAgIGNvbG9yWzFdID0gY2xhbXAoaHN2WzFdICsgc2F0dXJhdGVBbW91
bnQsIDAuMCwgMS4wKTsKLSAgICBjb2xvclsyXSA9IGNsYW1wKGhzdlsyXSArIGJyaWdodGVuQW1v
dW50LCAwLjAsIDEuMCk7Ci0gICAgcmV0dXJuIFNrSFNWVG9Db2xvcihjb2xvcik7Ci19Ci0KLVNr
Q29sb3IgUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXg6Om91dGxpbmVDb2xvcihjb25zdCBTa1Nj
YWxhciBoc3YxWzNdLCBjb25zdCBTa1NjYWxhciBoc3YyWzNdKQotewotICAgIC8vIEdUSyBUaGVt
ZSBlbmdpbmVzIGhhdmUgd2F5IHRvbyBtdWNoIGNvbnRyb2wgb3ZlciB0aGUgbGF5b3V0IG9mCi0g
ICAgLy8gdGhlIHNjcm9sbGJhci4gV2UgbWlnaHQgYmUgYWJsZSB0byBtb3JlIGNsb3NlbHkgYXBw
cm94aW1hdGUgaXRzCi0gICAgLy8gbG9vay1hbmQtZmVlbCwgaWYgd2Ugc2VudCB3aG9sZSBpbWFn
ZXMgaW5zdGVhZCBvZiBqdXN0IGNvbG9ycwotICAgIC8vIGZyb20gdGhlIGJyb3dzZXIgdG8gdGhl
IHJlbmRlcmVyLiBCdXQgZXZlbiB0aGVuLCBzb21lIHRoZW1lcwotICAgIC8vIHdvdWxkIGp1c3Qg
YnJlYWsuCi0gICAgLy8KLSAgICAvLyBTbywgaW5zdGVhZCwgd2UgZG9uJ3QgZXZlbiB0cnkgdG8g
MTAwJSByZXBsaWNhdGUgdGhlIGxvb2sgb2YKLSAgICAvLyB0aGUgbmF0aXZlIHNjcm9sbGJhci4g
V2UgcmVuZGVyIG91ciBvd24gdmVyc2lvbiwgYnV0IHdlIG1ha2UKLSAgICAvLyBzdXJlIHRvIHBp
Y2sgY29sb3JzIHRoYXQgYmxlbmQgaW4gbmljZWx5IHdpdGggdGhlIHN5c3RlbSBHVEsKLSAgICAv
LyB0aGVtZS4gSW4gbW9zdCBjYXNlcywgd2UgY2FuIGp1c3Qgc2FtcGxlIGEgY291cGxlIG9mIHBp
eGVscwotICAgIC8vIGZyb20gdGhlIHN5c3RlbSBzY3JvbGxiYXIgYW5kIHVzZSB0aG9zZSBjb2xv
cnMgdG8gZHJhdyBvdXIKLSAgICAvLyBzY3JvbGxiYXIuCi0gICAgLy8KLSAgICAvLyBUaGlzIHdv
cmtzIGZpbmUgZm9yIHRoZSB0cmFjayBjb2xvciBhbmQgdGhlIG92ZXJhbGwgdGh1bWIKLSAgICAv
LyBjb2xvci4gQnV0IGl0IGZhaWxzIHNwZWN0YWN1bGFybHkgZm9yIHRoZSBvdXRsaW5lIGNvbG9y
IHVzZWQKLSAgICAvLyBhcm91bmQgdGhlIHRodW1iIHBpZWNlLiBOb3QgYWxsIHRoZW1lcyBoYXZl
IGEgY2xlYXJseSBkZWZpbmVkCi0gICAgLy8gb3V0bGluZS4gRm9yIHNvbWUgb2YgdGhlbSBpdCBp
cyBwYXJ0aWFsbHkgdHJhbnNwYXJlbnQsIGFuZCBmb3IKLSAgICAvLyBvdGhlcnMgdGhlIHRoaWNr
bmVzcyBpcyB2ZXJ5IHVucHJlZGljdGFibGUuCi0gICAgLy8KLSAgICAvLyBTbywgaW5zdGVhZCBv
ZiB0cnlpbmcgdG8gYXBwcm94aW1hdGUgdGhlIHN5c3RlbSB0aGVtZSwgd2UKLSAgICAvLyBpbnN0
ZWFkIHRyeSB0byBjb21wdXRlIGEgcmVhc29uYWJsZSBsb29raW5nIGNob2ljZSBiYXNlZCBvbiB0
aGUKLSAgICAvLyBrbm93biBjb2xvciBvZiB0aGUgdHJhY2sgYW5kIHRoZSB0aHVtYiBwaWVjZS4g
VGhpcyBpcyBkaWZmaWN1bHQKLSAgICAvLyB3aGVuIHRyeWluZyB0byBkZWFsIGJvdGggd2l0aCBo
aWdoLSBhbmQgbG93LWNvbnRyYXN0IHRoZW1lcywKLSAgICAvLyBhbmQgYm90aCB3aXRoIHBvc2l0
aXZlIGFuZCBpbnZlcnRlZCB0aGVtZXMuCi0gICAgLy8KLSAgICAvLyBUaGUgZm9sbG93aW5nIGNv
ZGUgaGFzIGJlZW4gdGVzdGVkIHRvIGxvb2sgT0sgd2l0aCBhbGwgb2YgdGhlCi0gICAgLy8gZGVm
YXVsdCBHVEsgdGhlbWVzLgotICAgIFNrU2NhbGFyIG1pbkRpZmYgPSBjbGFtcCgoaHN2MVsxXSAr
IGhzdjJbMV0pICogMS4yLCAwLjI4LCAwLjUpOwotICAgIFNrU2NhbGFyIGRpZmYgPSBjbGFtcChm
YWJzKGhzdjFbMl0gLSBoc3YyWzJdKSAvIDIsIG1pbkRpZmYsIDAuNSk7Ci0KLSAgICBpZiAoaHN2
MVsyXSArIGhzdjJbMl0gPiAxLjApCi0gICAgICAgIGRpZmYgPSAtZGlmZjsKLQotICAgIHJldHVy
biBzYXR1cmF0ZUFuZEJyaWdodGVuKGhzdjIsIC0wLjIsIGRpZmYpOwotfQotCi12b2lkIFBsYXRm
b3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEFycm93QnV0dG9uKEdyYXBoaWNzQ29udGV4dCog
Z2MsIGNvbnN0IEludFJlY3QmIHJlY3QsIEFycm93RGlyZWN0aW9uIGRpcmVjdGlvbiwgQ29udHJv
bFN0YXRlcyBzdGF0ZXMpCi17Ci0gICAgUGxhdGZvcm1Db250ZXh0U2tpYSogcGxhdGZvcm1Db250
ZXh0ID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpOwotICAgIGludCB3aWR0aE1pZGRsZSwgbGVuZ3Ro
TWlkZGxlOwotICAgIFNrUGFpbnQgcGFpbnQ7Ci0gICAgaWYgKGRpcmVjdGlvbiA9PSBOb3J0aCB8
fCBkaXJlY3Rpb24gPT0gU291dGgpIHsKLSAgICAgICAgd2lkdGhNaWRkbGUgPSByZWN0LndpZHRo
KCkgLyAyICsgMTsKLSAgICAgICAgbGVuZ3RoTWlkZGxlID0gcmVjdC5oZWlnaHQoKSAvIDIgKyAx
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGxlbmd0aE1pZGRsZSA9IHJlY3Qud2lkdGgoKSAvIDIg
KyAxOwotICAgICAgICB3aWR0aE1pZGRsZSA9IHJlY3QuaGVpZ2h0KCkgLyAyICsgMTsKLSAgICB9
Ci0KLSAgICAvLyBDYWxjdWxhdGUgYnV0dG9uIGNvbG9yLgotICAgIFNrU2NhbGFyIHRyYWNrSFNW
WzNdOwotICAgIFNrQ29sb3JUb0hTVih0cmFja0NvbG9yKCksIHRyYWNrSFNWKTsKLSAgICBTa0Nv
bG9yIGJ1dHRvbkNvbG9yID0gc2F0dXJhdGVBbmRCcmlnaHRlbih0cmFja0hTViwgMCwgMC4yKTsK
LSAgICBTa0NvbG9yIGJhY2tncm91bmRDb2xvciA9IGJ1dHRvbkNvbG9yOwotICAgIGlmIChzdGF0
ZXMgJiBQcmVzc2VkU3RhdGUpIHsKLSAgICAgICAgU2tTY2FsYXIgYnV0dG9uSFNWWzNdOwotICAg
ICAgICBTa0NvbG9yVG9IU1YoYnV0dG9uQ29sb3IsIGJ1dHRvbkhTVik7Ci0gICAgICAgIGJ1dHRv
bkNvbG9yID0gc2F0dXJhdGVBbmRCcmlnaHRlbihidXR0b25IU1YsIDAsIC0wLjEpOwotICAgIH0g
ZWxzZSBpZiAoc3RhdGVzICYgSG92ZXJTdGF0ZSkgewotICAgICAgICBTa1NjYWxhciBidXR0b25I
U1ZbM107Ci0gICAgICAgIFNrQ29sb3JUb0hTVihidXR0b25Db2xvciwgYnV0dG9uSFNWKTsKLSAg
ICAgICAgYnV0dG9uQ29sb3IgPSBzYXR1cmF0ZUFuZEJyaWdodGVuKGJ1dHRvbkhTViwgMCwgMC4w
NSk7Ci0gICAgfQotCi0gICAgU2tJUmVjdCBza3JlY3Q7Ci0gICAgc2tyZWN0LnNldChyZWN0Lngo
KSwgcmVjdC55KCksIHJlY3QueCgpICsgcmVjdC53aWR0aCgpLCByZWN0LnkoKSArIHJlY3QuaGVp
Z2h0KCkpOwotICAgIC8vIFBhaW50IHRoZSBiYWNrZ3JvdW5kICh0aGUgYXJlYSB2aXNpYmxlIGJl
aGluZCB0aGUgcm91bmRlZCBjb3JuZXJzKS4KLSAgICBwYWludC5zZXRDb2xvcihiYWNrZ3JvdW5k
Q29sb3IpOwotICAgIHBsYXRmb3JtQ29udGV4dC0+ZHJhd0lSZWN0KHNrcmVjdCwgcGFpbnQpOwot
Ci0gICAgLy8gUGFpbnQgdGhlIGJ1dHRvbidzIG91dGxpbmUgYW5kIGZpbGwgdGhlIG1pZGRsZQot
ICAgIFNrUGF0aCBvdXRsaW5lOwotICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBO
b3J0aDoKLSAgICAgICAgb3V0bGluZS5tb3ZlVG8ocmVjdC54KCkgKyAwLjUsIHJlY3QueSgpICsg
cmVjdC5oZWlnaHQoKSArIDAuNSk7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbygwLCAtKHJlY3Qu
aGVpZ2h0KCkgLSAyKSk7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbygyLCAtMik7Ci0gICAgICAg
IG91dGxpbmUuckxpbmVUbyhyZWN0LndpZHRoKCkgLSA1LCAwKTsKLSAgICAgICAgb3V0bGluZS5y
TGluZVRvKDIsIDIpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMCwgcmVjdC5oZWlnaHQoKSAt
IDIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNvdXRoOgotICAgICAgICBvdXRsaW5lLm1v
dmVUbyhyZWN0LngoKSArIDAuNSwgcmVjdC55KCkgLSAwLjUpOwotICAgICAgICBvdXRsaW5lLnJM
aW5lVG8oMCwgcmVjdC5oZWlnaHQoKSAtIDIpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMiwg
Mik7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbyhyZWN0LndpZHRoKCkgLSA1LCAwKTsKLSAgICAg
ICAgb3V0bGluZS5yTGluZVRvKDIsIC0yKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKDAsIC0o
cmVjdC5oZWlnaHQoKSAtIDIpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFYXN0OgotICAg
ICAgICBvdXRsaW5lLm1vdmVUbyhyZWN0LngoKSAtIDAuNSwgcmVjdC55KCkgKyAwLjUpOwotICAg
ICAgICBvdXRsaW5lLnJMaW5lVG8ocmVjdC53aWR0aCgpIC0gMiwgMCk7Ci0gICAgICAgIG91dGxp
bmUuckxpbmVUbygyLCAyKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKDAsIHJlY3QuaGVpZ2h0
KCkgLSA1KTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKC0yLCAyKTsKLSAgICAgICAgb3V0bGlu
ZS5yTGluZVRvKC0ocmVjdC53aWR0aCgpIC0gMiksIDApOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFdlc3Q6Ci0gICAgICAgIG91dGxpbmUubW92ZVRvKHJlY3QueCgpICsgcmVjdC53aWR0aCgp
ICsgMC41LCByZWN0LnkoKSArIDAuNSk7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbygtKHJlY3Qu
d2lkdGgoKSAtIDIpLCAwKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKC0yLCAyKTsKLSAgICAg
ICAgb3V0bGluZS5yTGluZVRvKDAsIHJlY3QuaGVpZ2h0KCkgLSA1KTsKLSAgICAgICAgb3V0bGlu
ZS5yTGluZVRvKDIsIDIpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8ocmVjdC53aWR0aCgpIC0g
MiwgMCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBvdXRsaW5lLmNsb3NlKCk7Ci0KLSAg
ICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7Ci0gICAgcGFpbnQuc2V0Q29s
b3IoYnV0dG9uQ29sb3IpOwotICAgIHBsYXRmb3JtQ29udGV4dC0+ZHJhd1BhdGgob3V0bGluZSwg
cGFpbnQpOwotCi0gICAgcGFpbnQuc2V0QW50aUFsaWFzKHRydWUpOwotICAgIHBhaW50LnNldFN0
eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOwotICAgIFNrU2NhbGFyIHRodW1iSFNWWzNdOwot
ICAgIFNrQ29sb3JUb0hTVih0aHVtYkluYWN0aXZlQ29sb3IoKSwgdGh1bWJIU1YpOwotICAgIHBh
aW50LnNldENvbG9yKG91dGxpbmVDb2xvcih0cmFja0hTViwgdGh1bWJIU1YpKTsKLSAgICBwbGF0
Zm9ybUNvbnRleHQtPmRyYXdQYXRoKG91dGxpbmUsIHBhaW50KTsKLQotICAgIC8vIElmIHRoZSBi
dXR0b24gaXMgZGlzYWJsZWQgb3IgcmVhZC1vbmx5LCB0aGUgYXJyb3cgaXMgZHJhd24gd2l0aCB0
aGUgb3V0bGluZSBjb2xvci4KLSAgICBpZiAoc3RhdGVzICYgRW5hYmxlZFN0YXRlICYmICEoc3Rh
dGVzICYgUmVhZE9ubHlTdGF0ZSkpCi0gICAgICAgIHBhaW50LnNldENvbG9yKFNLX0NvbG9yQkxB
Q0spOwotCi0gICAgcGFpbnQuc2V0QW50aUFsaWFzKGZhbHNlKTsKLSAgICBwYWludC5zZXRTdHls
ZShTa1BhaW50OjprRmlsbF9TdHlsZSk7Ci0KLSAgICBTa1BhdGggcGF0aDsKLSAgICAvLyBUaGUg
Y29uc3RhbnRzIGluIHRoaXMgYmxvY2sgb2YgY29kZSBhcmUgaGFuZC10YWlsb3JlZCB0byBwcm9k
dWNlIGdvb2QKLSAgICAvLyBsb29raW5nIGFycm93cyB3aXRob3V0IGFudGktYWxpYXNpbmcuCi0g
ICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIE5vcnRoOgotICAgICAgICBwYXRoLm1v
dmVUbyhyZWN0LngoKSArIHdpZHRoTWlkZGxlIC0gNCwgcmVjdC55KCkgKyBsZW5ndGhNaWRkbGUg
KyAyKTsKLSAgICAgICAgcGF0aC5yTGluZVRvKDcsIDApOwotICAgICAgICBwYXRoLnJMaW5lVG8o
LTQsIC00KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTb3V0aDoKLSAgICAgICAgcGF0aC5t
b3ZlVG8ocmVjdC54KCkgKyB3aWR0aE1pZGRsZSAtIDQsIHJlY3QueSgpICsgbGVuZ3RoTWlkZGxl
IC0gMyk7Ci0gICAgICAgIHBhdGguckxpbmVUbyg3LCAwKTsKLSAgICAgICAgcGF0aC5yTGluZVRv
KC00LCA0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFYXN0OgotICAgICAgICBwYXRoLm1v
dmVUbyhyZWN0LngoKSArIGxlbmd0aE1pZGRsZSAtIDMsIHJlY3QueSgpICsgd2lkdGhNaWRkbGUg
LSA0KTsKLSAgICAgICAgcGF0aC5yTGluZVRvKDAsIDcpOwotICAgICAgICBwYXRoLnJMaW5lVG8o
NCwgLTQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlc3Q6Ci0gICAgICAgIHBhdGgubW92
ZVRvKHJlY3QueCgpICsgbGVuZ3RoTWlkZGxlICsgMSwgcmVjdC55KCkgKyB3aWR0aE1pZGRsZSAt
IDUpOwotICAgICAgICBwYXRoLnJMaW5lVG8oMCwgOSk7Ci0gICAgICAgIHBhdGguckxpbmVUbygt
NCwgLTQpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcGF0aC5jbG9zZSgpOwotCi0gICAg
cGxhdGZvcm1Db250ZXh0LT5kcmF3UGF0aChwYXRoLCBwYWludCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxh
dGZvcm1UaGVtZUNocm9taXVtTGludXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5oCShyZXZpc2lvbiAx
MzY0MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1l
Q2hyb21pdW1MaW51eC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFBs
YXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4X2gKLSNkZWZpbmUgUGxhdGZvcm1UaGVtZUNocm9taXVt
TGludXhfaAotCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgotI2luY2x1ZGUgIlNr
Q29sb3IuaCIKLSNpbmNsdWRlICJTa1NjYWxhci5oIgotI2luY2x1ZGUgIlRoZW1lVHlwZXMuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51
eCB7Ci1wdWJsaWM6Ci0gICAgZW51bSBBcnJvd0RpcmVjdGlvbiB7Ci0gICAgICAgIE5vcnRoLAot
ICAgICAgICBFYXN0LAotICAgICAgICBTb3V0aCwKLSAgICAgICAgV2VzdCwKLSAgICB9OwotCi0g
ICAgc3RhdGljIHZvaWQgc2V0U2Nyb2xsYmFyQ29sb3JzKHVuc2lnbmVkIGluYWN0aXZlQ29sb3Is
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFjdGl2ZUNvbG9y
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0cmFja0NvbG9y
KTsKLSAgICBzdGF0aWMgdW5zaWduZWQgdGh1bWJJbmFjdGl2ZUNvbG9yKCkgeyByZXR1cm4gc190
aHVtYkluYWN0aXZlQ29sb3I7IH0KLSAgICBzdGF0aWMgdW5zaWduZWQgdGh1bWJBY3RpdmVDb2xv
cigpIHsgcmV0dXJuIHNfdGh1bWJBY3RpdmVDb2xvcjsgfQotICAgIHN0YXRpYyB1bnNpZ25lZCB0
cmFja0NvbG9yKCkgeyByZXR1cm4gc190cmFja0NvbG9yOyB9Ci0KLSAgICBzdGF0aWMgU2tDb2xv
ciBzYXR1cmF0ZUFuZEJyaWdodGVuKGNvbnN0IFNrU2NhbGFyIGhzdlszXSwgU2tTY2FsYXIgc2F0
dXJhdGVBbW91bnQsIFNrU2NhbGFyIGJyaWdodGVuQW1vdW50KTsKLSAgICBzdGF0aWMgU2tDb2xv
ciBvdXRsaW5lQ29sb3IoY29uc3QgU2tTY2FsYXIgaHN2MVszXSwgY29uc3QgU2tTY2FsYXIgaHN2
MlszXSk7Ci0gICAgc3RhdGljIHZvaWQgcGFpbnRBcnJvd0J1dHRvbihHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBJbnRSZWN0JiwgQXJyb3dEaXJlY3Rpb24sIENvbnRyb2xTdGF0ZXMpOwotCi1wcml2
YXRlOgotICAgIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4KCkgeyB9Ci0KLSAgICBzdGF0aWMg
dW5zaWduZWQgc190aHVtYkluYWN0aXZlQ29sb3I7Ci0gICAgc3RhdGljIHVuc2lnbmVkIHNfdGh1
bWJBY3RpdmVDb2xvcjsKLSAgICBzdGF0aWMgdW5zaWduZWQgc190cmFja0NvbG9yOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUGxhdGZvcm1UaGVtZUNocm9taXVt
TGludXhfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUxpbnV4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwCShyZXZpc2lvbiAx
MzY0MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtTGludXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0NiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNocm9taXVtTGlu
dXguaCIKLQotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKLSNpbmNsdWRlICJQbGF0
Zm9ybU1vdXNlRXZlbnQuaCIKLSNpbmNsdWRlICJTY3JvbGxiYXIuaCIKLSNpbmNsdWRlIDxwdWJs
aWMvUGxhdGZvcm0uaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViUmVjdC5oPgotI2luY2x1ZGUgPHB1
YmxpYy9saW51eC9XZWJUaGVtZUVuZ2luZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNj
cm9sbGJhclRoZW1lKiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKQotewotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LCB0aGVtZSwgKCkpOwot
ICAgIHJldHVybiAmdGhlbWU7Ci19Ci0KLWludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6
OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkKLXsK
LSAgICAvLyBIb3JpeiBhbmQgVmVydCBzY3JvbGxiYXJzIGFyZSB0aGUgc2FtZSB0aGlja25lc3Mu
Ci0gICAgSW50U2l6ZSBzY3JvbGxiYXJTaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgp
LT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3Jv
bGxiYXJWZXJ0aWNhbFRyYWNrKTsKLSAgICByZXR1cm4gc2Nyb2xsYmFyU2l6ZS53aWR0aCgpOwot
fQotCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUcmFja1BpZWNlKEdy
YXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0
IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUpCi17Ci0gICAgV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUgPSBzY3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkgPT0g
cGFydFR5cGUgPyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZUhvdmVyIDogV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6U3RhdGVOb3JtYWw7Ci0gICAgSW50UmVjdCBhbGlnblJlY3QgPSB0cmFj
a1JlY3Qoc2Nyb2xsYmFyLCBmYWxzZSk7Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0
cmFQYXJhbXMgZXh0cmFQYXJhbXM7Ci0gICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGdj
LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7Ci0gICAgZXh0cmFQYXJhbXMuc2Nyb2xsYmFy
VHJhY2sudHJhY2tYID0gYWxpZ25SZWN0LngoKTsKLSAgICBleHRyYVBhcmFtcy5zY3JvbGxiYXJU
cmFjay50cmFja1kgPSBhbGlnblJlY3QueSgpOwotICAgIGV4dHJhUGFyYW1zLnNjcm9sbGJhclRy
YWNrLnRyYWNrV2lkdGggPSBhbGlnblJlY3Qud2lkdGgoKTsKLSAgICBleHRyYVBhcmFtcy5zY3Jv
bGxiYXJUcmFjay50cmFja0hlaWdodCA9IGFsaWduUmVjdC5oZWlnaHQoKTsKLSAgICBXZWJLaXQ6
OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgc2Nyb2xs
YmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNrIDogV2ViS2l0OjpXZWJUaGVt
ZUVuZ2luZTo6UGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2ssIHN0YXRlLCBXZWJLaXQ6OldlYlJl
Y3QocmVjdCksICZleHRyYVBhcmFtcyk7Ci19Ci0KLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bUxpbnV4OjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQp
Ci17Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydCBwYWludFBhcnQ7Ci0gICAgV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5l
OjpTdGF0ZU5vcm1hbDsKLSAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gZ2MtPnBsYXRm
b3JtQ29udGV4dCgpLT5jYW52YXMoKTsKLSAgICBib29sIGNoZWNrTWluID0gZmFsc2U7Ci0gICAg
Ym9vbCBjaGVja01heCA9IGZhbHNlOwotICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkg
PT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewotICAgICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9u
U3RhcnRQYXJ0KSB7Ci0gICAgICAgICAgICBwYWludFBhcnQgPSBXZWJLaXQ6OldlYlRoZW1lRW5n
aW5lOjpQYXJ0U2Nyb2xsYmFyTGVmdEFycm93OwotICAgICAgICAgICAgY2hlY2tNaW4gPSB0cnVl
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGFpbnRQYXJ0ID0gV2ViS2l0OjpXZWJU
aGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclJpZ2h0QXJyb3c7Ci0gICAgICAgICAgICBjaGVja01h
eCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAocGFydCA9PSBC
YWNrQnV0dG9uU3RhcnRQYXJ0KSB7Ci0gICAgICAgICAgICBwYWludFBhcnQgPSBXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyVXBBcnJvdzsKLSAgICAgICAgICAgIGNoZWNrTWlu
ID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBhaW50UGFydCA9IFdlYktp
dDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJEb3duQXJyb3c7Ci0gICAgICAgICAgICBj
aGVja01heCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKChjaGVja01pbiAmJiAo
c2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkgPD0gMCkpCi0gICAgICAgIHx8IChjaGVja01heCAmJiBz
Y3JvbGxiYXItPmN1cnJlbnRQb3MoKSA9PSBzY3JvbGxiYXItPm1heGltdW0oKSkpIHsKLSAgICAg
ICAgc3RhdGUgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGlmIChwYXJ0ID09IHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSkKLSAg
ICAgICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVQcmVzc2VkOwot
ICAgICAgICBlbHNlIGlmIChwYXJ0ID09IHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSkKLSAgICAg
ICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVIb3ZlcjsKLSAgICB9
Ci0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChj
YW52YXMsIHBhaW50UGFydCwgc3RhdGUsIFdlYktpdDo6V2ViUmVjdChyZWN0KSwgMCk7Ci19Ci0K
LXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRodW1iKEdyYXBoaWNzQ29u
dGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3Qm
IHJlY3QpCi17Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGU7Ci0gICAg
V2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFz
KCk7Ci0gICAgaWYgKHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCi0gICAg
ICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVQcmVzc2VkOwotICAgIGVs
c2UgaWYgKHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCi0gICAgICAgIHN0
YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVIb3ZlcjsKLSAgICBlbHNlCi0gICAg
ICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVOb3JtYWw7Ci0gICAgV2Vi
S2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIHNj
cm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckhvcml6b250YWxUaHVtYiA6IFdlYktpdDo6V2Vi
VGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iLCBzdGF0ZSwgV2ViS2l0OjpX
ZWJSZWN0KHJlY3QpLCAwKTsKLX0KLQotYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6
OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIGV2dCkKLXsKLSAgICByZXR1cm4gKGV2dC5zaGlmdEtleSgpICYmIGV2dC5i
dXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB8fCAoZXZ0LmJ1dHRvbigpID09IE1pZGRsZUJ1dHRvbik7
Ci19Ci0KLUludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpidXR0b25TaXplKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCi17Ci0gICAgaWYgKHNjcm9sbGJhci0+b3Jp
ZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgewotICAgICAgICBJbnRTaXplIHNpemUg
PSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPmdldFNpemUoV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclVwQXJyb3cpOwotICAgICAgICByZXR1
cm4gSW50U2l6ZShzaXplLndpZHRoKCksIHNjcm9sbGJhci0+aGVpZ2h0KCkgPCAyICogc2l6ZS5o
ZWlnaHQoKSA/IHNjcm9sbGJhci0+aGVpZ2h0KCkgLyAyIDogc2l6ZS5oZWlnaHQoKSk7Ci0gICAg
fQotCi0gICAgLy8gSG9yaXpvbnRhbFNjcm9sbGJhcgotICAgIEludFNpemUgc2l6ZSA9IFdlYktp
dDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyTGVmdEFycm93KTsKLSAgICByZXR1cm4gSW50U2l6
ZShzY3JvbGxiYXItPndpZHRoKCkgPCAyICogc2l6ZS53aWR0aCgpID8gc2Nyb2xsYmFyLT53aWR0
aCgpIC8gMiA6IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci19Ci0KLWludCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtTGludXg6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyKQotewotICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0g
VmVydGljYWxTY3JvbGxiYXIpIHsKLSAgICAgICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0
Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVF
bmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iKTsKLSAgICAgICAgcmV0dXJuIHNpemUu
aGVpZ2h0KCk7Ci0gICAgfQotCi0gICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6
Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6
OlBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVGh1bWIpOwotICAgIHJldHVybiBzaXplLndpZHRoKCk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1M
aW51eC5oCShyZXZpc2lvbiAxMzY0MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4X2gKLSNkZWZpbmUg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4X2gKLQotI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1l
Q2hyb21pdW0uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1MaW51eCA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZUNocm9taXVtIHsKLSAgICBw
dWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJD
b250cm9sU2l6ZSk7Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25z
dCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1
dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7Ci0g
ICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAgICAgIHZpcnR1YWwgSW50U2l6
ZSBidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7Ci0gICAgICAgIHZpcnR1YWwgaW50
IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwotICAgIH07Ci19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwCShyZXZpc2lv
biAxMzY0MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1
bUFuZHJvaWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIFN0cmluZyBSZW5k
ZXJUaGVtZUNocm9taXVtQW5kcm9pZDo6ZXh0cmEKIAogU3RyaW5nIFJlbmRlclRoZW1lQ2hyb21p
dW1BbmRyb2lkOjpleHRyYURlZmF1bHRTdHlsZVNoZWV0KCkKIHsKLSAgICByZXR1cm4gUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4OjpleHRyYURlZmF1bHRTdHlsZVNoZWV0KCkgKworICAgIHJldHVy
biBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpICsK
ICAgICAgICAgU3RyaW5nKHRoZW1lQ2hyb21pdW1BbmRyb2lkVXNlckFnZW50U3R5bGVTaGVldCwg
c2l6ZW9mKHRoZW1lQ2hyb21pdW1BbmRyb2lkVXNlckFnZW50U3R5bGVTaGVldCkpOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJv
bWl1bUFuZHJvaWQuaAkocmV2aXNpb24gMTM2NDA2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEx
ICsyNiwxMSBAQAogI2lmbmRlZiBSZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZF9oCiAjZGVmaW5l
IFJlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkX2gKIAotI2luY2x1ZGUgIlJlbmRlclRoZW1lQ2hy
b21pdW1MaW51eC5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUmVuZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQg
OiBwdWJsaWMgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4IHsKK2NsYXNzIFJlbmRlclRoZW1lQ2hy
b21pdW1BbmRyb2lkIDogcHVibGljIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKCk7CiAgICAgdmly
dHVhbCBTdHJpbmcgZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpIE9WRVJSSURFOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51
eC5jcHAJKHJldmlzaW9uIDEzNjQwNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUNocm9taXVtTGludXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM4NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4KLSAqIENvcHlyaWdodCAoQykg
MjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDA4IENv
bGxhYm9yYSBMdGQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4KLSAq
IENvcHlyaWdodCAoQykgMjAwOSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oIgotCi0j
aW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVk
ZSAiUGFpbnRJbmZvLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgotI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgotI2luY2x1ZGUgIlJlbmRlclByb2dyZXNzLmgiCi0jaW5jbHVk
ZSAiUmVuZGVyU2xpZGVyLmgiCi0jaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKLSNpbmNsdWRl
ICJVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIgotI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgot
I2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+Ci0jaW5jbHVkZSA8cHVibGljL2xpbnV4L1dlYlRo
ZW1lRW5naW5lLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdW5zaWduZWQgUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4OjptX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9Ci0gICAg
MHhmZjFlOTBmZjsKLXVuc2lnbmVkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6bV9hY3RpdmVT
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgPQotICAgIENvbG9yOjpibGFjazsKLXVuc2lnbmVkIFJl
bmRlclRoZW1lQ2hyb21pdW1MaW51eDo6bV9pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xv
ciA9Ci0gICAgMHhmZmM4YzhjODsKLXVuc2lnbmVkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6
bV9pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvciA9Ci0gICAgMHhmZjMyMzIzMjsKLQot
ZG91YmxlIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6bV9jYXJldEJsaW5rSW50ZXJ2YWw7Ci0K
LXN0YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0QnV0dG9uQmFja2dyb3VuZENvbG9yID0gMHhm
ZmRkZGRkZDsKLQotc3RhdGljIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlIGdldFdlYlRo
ZW1lU3RhdGUoY29uc3QgUmVuZGVyVGhlbWUqIHRoZW1lLCBjb25zdCBSZW5kZXJPYmplY3QqIG8p
Ci17Ci0gICAgaWYgKCF0aGVtZS0+aXNFbmFibGVkKG8pKQotICAgICAgICByZXR1cm4gV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVEaXNhYmxlZDsKLSAgICBpZiAodGhlbWUtPmlzUHJlc3Nl
ZChvKSkKLSAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlUHJlc3Nl
ZDsKLSAgICBpZiAodGhlbWUtPmlzSG92ZXJlZChvKSkKLSAgICAgICAgcmV0dXJuIFdlYktpdDo6
V2ViVGhlbWVFbmdpbmU6OlN0YXRlSG92ZXI7Ci0KLSAgICByZXR1cm4gV2ViS2l0OjpXZWJUaGVt
ZUVuZ2luZTo6U3RhdGVOb3JtYWw7Ci19Ci0KLVBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRl
clRoZW1lQ2hyb21pdW1MaW51eDo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCgpKTsKLX0KLQotLy8gUmVuZGVyVGhlbWU6OnRoZW1l
Rm9yUGFnZSBmb3IgQW5kcm9pZCBpcyBkZWZpbmVkIGluIFJlbmRlclRoZW1lQ2hyb21pdW1BbmRy
b2lkLmNwcC4KLSNpZiAhT1MoQU5EUk9JRCkKLVBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRl
clRoZW1lOjp0aGVtZUZvclBhZ2UoUGFnZSogcGFnZSkKLXsKLSAgICBzdGF0aWMgUmVuZGVyVGhl
bWUqIHJ0ID0gUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpjcmVhdGUoKS5sZWFrUmVmKCk7Ci0g
ICAgcmV0dXJuIHJ0OwotfQotI2VuZGlmCi0KLVJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6UmVu
ZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCkKLXsKLSAgICBtX2NhcmV0QmxpbmtJbnRlcnZhbCA9IFJl
bmRlclRoZW1lOjpjYXJldEJsaW5rSW50ZXJ2YWwoKTsKLX0KLQotUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4Ojp+UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCkKLXsKLX0KLQotQ29sb3IgUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4OjpzeXN0ZW1Db2xvcihpbnQgY3NzVmFsdWVJZCkgY29uc3QKLXsK
LSAgICBzdGF0aWMgY29uc3QgQ29sb3IgbGludXhCdXR0b25HcmF5Q29sb3IoMHhmZmRkZGRkZCk7
Ci0KLSAgICBpZiAoY3NzVmFsdWVJZCA9PSBDU1NWYWx1ZUJ1dHRvbmZhY2UpCi0gICAgICAgIHJl
dHVybiBsaW51eEJ1dHRvbkdyYXlDb2xvcjsKLSAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnN5c3Rl
bUNvbG9yKGNzc1ZhbHVlSWQpOwotfQotCi1TdHJpbmcgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4
OjpleHRyYURlZmF1bHRTdHlsZVNoZWV0KCkKLXsKLSAgICByZXR1cm4gUmVuZGVyVGhlbWVDaHJv
bWl1bVNraWE6OmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKSArCi0gICAgICAgICAgIFN0cmluZyh0
aGVtZUNocm9taXVtTGludXhVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YodGhlbWVDaHJvbWl1
bUxpbnV4VXNlckFnZW50U3R5bGVTaGVldCkpOwotfQotCi1ib29sIFJlbmRlclRoZW1lQ2hyb21p
dW1MaW51eDo6Y29udHJvbFN1cHBvcnRzVGludHMoY29uc3QgUmVuZGVyT2JqZWN0KiBvKSBjb25z
dAotewotICAgIHJldHVybiBpc0VuYWJsZWQobyk7Ci19Ci0KLUNvbG9yIFJlbmRlclRoZW1lQ2hy
b21pdW1MaW51eDo6YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIENvbG9yKDB4MjgsIDB4MjgsIDB4MjgpOwotfQotCi1Db2xvciBSZW5k
ZXJUaGVtZUNocm9taXVtTGludXg6OmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29s
b3IoKSBjb25zdAotewotICAgIHJldHVybiBDb2xvcjo6YmxhY2s7Ci19Ci0KLUNvbG9yIFJlbmRl
clRoZW1lQ2hyb21pdW1MaW51eDo6aW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gQ29sb3IoMHhjOCwgMHhjOCwgMHhjOCk7Ci19Ci0K
LUNvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6aW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9u
Rm9yZWdyb3VuZENvbG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gQ29sb3IoMHgzMiwgMHgzMiwg
MHgzMik7Ci19Ci0KLUNvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGxhdGZvcm1BY3Rp
dmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAotewotICAgIHJldHVybiBtX2FjdGl2
ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcjsKLX0KLQotQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4OjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcjsKLX0KLQot
Q29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZv
cmVncm91bmRDb2xvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYWN0aXZlU2VsZWN0aW9uRm9y
ZWdyb3VuZENvbG9yOwotfQotCi1Db2xvciBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBsYXRm
b3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAotewotICAgIHJldHVy
biBtX2luYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwotfQotCi0jaWYgRU5BQkxFKERB
VEFMSVNUX0VMRU1FTlQpCi1JbnRTaXplIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c2xpZGVy
VGlja1NpemUoKSBjb25zdAotewotICAgIHJldHVybiBJbnRTaXplKDEsIDYpOwotfQotCi1pbnQg
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzbGlkZXJUaWNrT2Zmc2V0RnJvbVRyYWNrQ2VudGVy
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gLTE2OwotfQotI2VuZGlmCi0KLXZvaWQgUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4OjphZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAotewotICAgIEludFNpemUgc2l6ZSA9IFdlYktpdDo6
UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lOjpQYXJ0U2xpZGVyVGh1bWIpOwotCi0gICAgaWYgKHN0eWxlLT5hcHBlYXJhbmNl
KCkgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCkgewotICAgICAgICBzdHlsZS0+c2V0V2lk
dGgoTGVuZ3RoKHNpemUud2lkdGgoKSwgRml4ZWQpKTsKLSAgICAgICAgc3R5bGUtPnNldEhlaWdo
dChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKLSAgICB9IGVsc2UgaWYgKHN0eWxlLT5h
cHBlYXJhbmNlKCkgPT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQpIHsKLSAgICAgICAgc3R5bGUt
PnNldFdpZHRoKExlbmd0aChzaXplLmhlaWdodCgpLCBGaXhlZCkpOwotICAgICAgICBzdHlsZS0+
c2V0SGVpZ2h0KExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RTbGlkZXJUaHVtYlNpemUoc3R5bGUs
IGVsZW1lbnQpOwotfQotCi1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c3VwcG9ydHND
b250cm9sVGludHMoKSBjb25zdAotewotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFJlbmRl
clRoZW1lQ2hyb21pdW1MaW51eDo6c2V0Q2FyZXRCbGlua0ludGVydmFsKGRvdWJsZSBpbnRlcnZh
bCkKLXsKLSAgICBtX2NhcmV0QmxpbmtJbnRlcnZhbCA9IGludGVydmFsOwotfQotCi1kb3VibGUg
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpjYXJldEJsaW5rSW50ZXJ2YWxJbnRlcm5hbCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fY2FyZXRCbGlua0ludGVydmFsOwotfQotCi12b2lkIFJlbmRl
clRoZW1lQ2hyb21pdW1MaW51eDo6c2V0U2VsZWN0aW9uQ29sb3JzKAotICAgIHVuc2lnbmVkIGFj
dGl2ZUJhY2tncm91bmRDb2xvciwKLSAgICB1bnNpZ25lZCBhY3RpdmVGb3JlZ3JvdW5kQ29sb3Is
Ci0gICAgdW5zaWduZWQgaW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IsCi0gICAgdW5zaWduZWQgaW5h
Y3RpdmVGb3JlZ3JvdW5kQ29sb3IpCi17Ci0gICAgbV9hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3IgPSBhY3RpdmVCYWNrZ3JvdW5kQ29sb3I7Ci0gICAgbV9hY3RpdmVTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IgPSBhY3RpdmVGb3JlZ3JvdW5kQ29sb3I7Ci0gICAgbV9pbmFjdGl2ZVNlbGVj
dGlvbkJhY2tncm91bmRDb2xvciA9IGluYWN0aXZlQmFja2dyb3VuZENvbG9yOwotICAgIG1faW5h
Y3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgPSBpbmFjdGl2ZUZvcmVncm91bmRDb2xvcjsK
LX0KLQotYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50Q2hlY2tib3goUmVuZGVy
T2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0g
ICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7Ci0gICAg
V2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PmNhbnZhcygpOwotICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5jaGVja2VkID0gaXNDaGVja2VkKG8p
OwotICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5pbmRldGVybWluYXRlID0gaXNJbmRldGVybWluYXRl
KG8pOwotCi0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5w
YWludChjYW52YXMsIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRDaGVja2JveCwgZ2V0V2Vi
VGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMp
OwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6
OnNldENoZWNrYm94U2l6ZShSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0Ci17Ci0gICAgLy8gSWYg
dGhlIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGJvdGggc3BlY2lmaWVkLCB0aGVuIHdlIGhhdmUgbm90
aGluZyB0byBkby4KLSAgICBpZiAoIXN0eWxlLT53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkg
JiYgIXN0eWxlLT5oZWlnaHQoKS5pc0F1dG8oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSW50
U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5n
ZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRDaGVja2JveCk7Ci0gICAgc2V0U2l6
ZUlmQXV0byhzdHlsZSwgc2l6ZSk7Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4
OjpwYWludFJhZGlvKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQotewotICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1z
IGV4dHJhUGFyYW1zOwotICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKLSAgICBleHRyYVBhcmFtcy5idXR0b24uY2hl
Y2tlZCA9IGlzQ2hlY2tlZChvKTsKLQotICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+
dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0
UmFkaW8sIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6V2ViUmVjdChyZWN0KSwg
JmV4dHJhUGFyYW1zKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgUmVuZGVyVGhlbWVD
aHJvbWl1bUxpbnV4OjpzZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAotewot
ICAgIC8vIElmIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBib3RoIHNwZWNpZmllZCwgdGhlbiB3
ZSBoYXZlIG5vdGhpbmcgdG8gZG8uCi0gICAgaWYgKCFzdHlsZS0+d2lkdGgoKS5pc0ludHJpbnNp
Y09yQXV0bygpICYmICFzdHlsZS0+aGVpZ2h0KCkuaXNBdXRvKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIEludFNpemUgc2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVF
bmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0UmFkaW8pOwotICAg
IHNldFNpemVJZkF1dG8oc3R5bGUsIHNpemUpOwotfQotCi1ib29sIFJlbmRlclRoZW1lQ2hyb21p
dW1MaW51eDo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGks
IGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0
cmFQYXJhbXMgZXh0cmFQYXJhbXM7Ci0gICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGku
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwotICAgIGV4dHJhUGFyYW1zLmJ1
dHRvbi5pc0RlZmF1bHQgPSBpc0RlZmF1bHQobyk7Ci0gICAgZXh0cmFQYXJhbXMuYnV0dG9uLmhh
c0JvcmRlciA9IHRydWU7Ci0gICAgZXh0cmFQYXJhbXMuYnV0dG9uLmJhY2tncm91bmRDb2xvciA9
IGRlZmF1bHRCdXR0b25CYWNrZ3JvdW5kQ29sb3I7Ci0gICAgaWYgKG8tPmhhc0JhY2tncm91bmQo
KSkKLSAgICAgICAgZXh0cmFQYXJhbXMuYnV0dG9uLmJhY2tncm91bmRDb2xvciA9IG8tPnN0eWxl
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikucmdi
KCk7Ci0KLSAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBh
aW50KGNhbnZhcywgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydEJ1dHRvbiwgZ2V0V2ViVGhl
bWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMpOwot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBh
aW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQotewotICAgIC8vIFdlYlRoZW1lRW5naW5lIGRvZXMgbm90IGhhbmRsZSBi
b3JkZXIgcm91bmRlZCBjb3JuZXIgYW5kIGJhY2tncm91bmQgaW1hZ2UKLSAgICAvLyBzbyByZXR1
cm4gdHJ1ZSB0byBkcmF3IENTUyBib3JkZXIgYW5kIGJhY2tncm91bmQuCi0gICAgaWYgKG8tPnN0
eWxlKCktPmhhc0JvcmRlclJhZGl1cygpIHx8IG8tPnN0eWxlKCktPmhhc0JhY2tncm91bmRJbWFn
ZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIENvbnRyb2xQYXJ0IHBhcnQgPSBvLT5z
dHlsZSgpLT5hcHBlYXJhbmNlKCk7Ci0KLSAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRy
YVBhcmFtcyBleHRyYVBhcmFtczsKLSAgICBleHRyYVBhcmFtcy50ZXh0RmllbGQuaXNUZXh0QXJl
YSA9IHBhcnQgPT0gVGV4dEFyZWFQYXJ0OwotICAgIGV4dHJhUGFyYW1zLnRleHRGaWVsZC5pc0xp
c3Rib3ggPSBwYXJ0ID09IExpc3Rib3hQYXJ0OwotCi0gICAgV2ViS2l0OjpXZWJDYW52YXMqIGNh
bnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwotCi0gICAgLy8g
RmFsbGJhY2sgdG8gd2hpdGUgaWYgdGhlIHNwZWNpZmllZCBjb2xvciBvYmplY3QgaXMgaW52YWxp
ZC4KLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OndoaXRlKTsKLSAgICBpZiAoby0+
c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
KS5pc1ZhbGlkKCkpCi0gICAgICAgIGJhY2tncm91bmRDb2xvciA9IG8tPnN0eWxlKCktPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0gICAgZXh0cmFQ
YXJhbXMudGV4dEZpZWxkLmJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvci5yZ2IoKTsK
LQotICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQo
Y2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0VGV4dEZpZWxkLCBnZXRXZWJUaGVt
ZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFp
bnRNZW51TGlzdChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50
UmVjdCYgcmVjdCkKLXsKLSAgICBpZiAoIW8tPmlzQm94KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGNvbnN0IGludCByaWdodCA9IHJlY3QueCgpICsgcmVjdC53aWR0aCgpOwotICAg
IGNvbnN0IGludCBtaWRkbGUgPSByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkgLyAyOwotCi0gICAg
V2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7Ci0gICAgZXh0
cmFQYXJhbXMubWVudUxpc3QuYXJyb3dYID0gKG8tPnN0eWxlKCktPmRpcmVjdGlvbigpID09IFJU
TCkgPyByZWN0LngoKSArIDcgOiByaWdodCAtIDEzOwotICAgIGV4dHJhUGFyYW1zLm1lbnVMaXN0
LmFycm93WSA9IG1pZGRsZTsKLSAgICBjb25zdCBSZW5kZXJCb3gqIGJveCA9IHRvUmVuZGVyQm94
KG8pOwotICAgIC8vIE1hdGNoIENocm9taXVtIFdpbiBiZWhhdmlvdXIgb2Ygc2hvd2luZyBhbGwg
Ym9yZGVycyBpZiBhbnkgYXJlIHNob3duLgotICAgIGV4dHJhUGFyYW1zLm1lbnVMaXN0Lmhhc0Jv
cmRlciA9IGJveC0+Ym9yZGVyUmlnaHQoKSB8fCBib3gtPmJvcmRlckxlZnQoKSB8fCBib3gtPmJv
cmRlclRvcCgpIHx8IGJveC0+Ym9yZGVyQm90dG9tKCk7Ci0gICAgZXh0cmFQYXJhbXMubWVudUxp
c3QuaGFzQm9yZGVyUmFkaXVzID0gby0+c3R5bGUoKS0+aGFzQm9yZGVyUmFkaXVzKCk7Ci0gICAg
Ly8gRmFsbGJhY2sgdG8gdHJhbnNwYXJlbnQgaWYgdGhlIHNwZWNpZmllZCBjb2xvciBvYmplY3Qg
aXMgaW52YWxpZC4KLSAgICBleHRyYVBhcmFtcy5tZW51TGlzdC5iYWNrZ3JvdW5kQ29sb3IgPSBD
b2xvcjo6dHJhbnNwYXJlbnQ7Ci0gICAgaWYgKG8tPmhhc0JhY2tncm91bmQoKSkKLSAgICAgICAg
ZXh0cmFQYXJhbXMubWVudUxpc3QuYmFja2dyb3VuZENvbG9yID0gby0+c3R5bGUoKS0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5yZ2IoKTsKLQotICAg
IFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LT5jYW52YXMoKTsKLQotICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdp
bmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0TWVudUxpc3Qs
IGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6V2ViUmVjdChyZWN0KSwgJmV4dHJh
UGFyYW1zKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4OjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZv
JiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6
OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOwotICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMg
PSBpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKLSAgICBleHRyYVBhcmFt
cy5zbGlkZXIudmVydGljYWwgPSBvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVmVy
dGljYWxQYXJ0OwotCi0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2lu
ZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTbGlkZXJUcmFj
aywgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0
cmFQYXJhbXMpOwotCi0jaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0gICAgcGFpbnRTbGlk
ZXJUaWNrcyhvLCBpLCByZWN0KTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1i
b29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmpl
Y3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBX
ZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKLSAgICBXZWJL
aXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2Fu
dmFzKCk7Ci0gICAgZXh0cmFQYXJhbXMuc2xpZGVyLnZlcnRpY2FsID0gby0+c3R5bGUoKS0+YXBw
ZWFyYW5jZSgpID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0OwotICAgIGV4dHJhUGFyYW1zLnNs
aWRlci5pbkRyYWcgPSBpc1ByZXNzZWQobyk7Ci0KLSAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJy
ZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2ViS2l0OjpXZWJUaGVtZUVuZ2lu
ZTo6UGFydFNsaWRlclRodW1iLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6Oldl
YlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lk
IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5
bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Ci17Ci0gICAg
SW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgp
LT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRJbm5lclNwaW5CdXR0b24pOwot
Ci0gICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7Ci0gICAg
c3R5bGUtPnNldE1pbldpZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7Ci19Ci0KLWJv
b2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludElubmVyU3BpbkJ1dHRvbihSZW5kZXJP
YmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAg
ICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKLSAgICBX
ZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+
Y2FudmFzKCk7Ci0gICAgZXh0cmFQYXJhbXMuaW5uZXJTcGluLnNwaW5VcCA9IChjb250cm9sU3Rh
dGVzRm9yUmVuZGVyZXIobykgJiBTcGluVXBTdGF0ZSk7Ci0gICAgZXh0cmFQYXJhbXMuaW5uZXJT
cGluLnJlYWRPbmx5ID0gaXNSZWFkT25seUNvbnRyb2wobyk7Ci0KLSAgICBXZWJLaXQ6OlBsYXRm
b3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2ViS2l0OjpXZWJU
aGVtZUVuZ2luZTo6UGFydElubmVyU3BpbkJ1dHRvbiwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBv
KSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMpOwotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotI2lmIEVOQUJMRShQUk9HUkVTU19FTEVNRU5UKQotCi1ib29sIFJlbmRlclRoZW1l
Q2hyb21pdW1MaW51eDo6cGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBh
aW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBpZiAoIW8tPmlzUHJvZ3Jl
c3MoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBSZW5kZXJQcm9ncmVzcyogcmVuZGVy
UHJvZ3Jlc3MgPSB0b1JlbmRlclByb2dyZXNzKG8pOwotICAgIEludFJlY3QgdmFsdWVSZWN0ID0g
cHJvZ3Jlc3NWYWx1ZVJlY3RGb3IocmVuZGVyUHJvZ3Jlc3MsIHJlY3QpOwotCi0gICAgV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7Ci0gICAgZXh0cmFQYXJh
bXMucHJvZ3Jlc3NCYXIuZGV0ZXJtaW5hdGUgPSByZW5kZXJQcm9ncmVzcy0+aXNEZXRlcm1pbmF0
ZSgpOwotICAgIGV4dHJhUGFyYW1zLnByb2dyZXNzQmFyLnZhbHVlUmVjdFggPSB2YWx1ZVJlY3Qu
eCgpOwotICAgIGV4dHJhUGFyYW1zLnByb2dyZXNzQmFyLnZhbHVlUmVjdFkgPSB2YWx1ZVJlY3Qu
eSgpOwotICAgIGV4dHJhUGFyYW1zLnByb2dyZXNzQmFyLnZhbHVlUmVjdFdpZHRoID0gdmFsdWVS
ZWN0LndpZHRoKCk7Ci0gICAgZXh0cmFQYXJhbXMucHJvZ3Jlc3NCYXIudmFsdWVSZWN0SGVpZ2h0
ID0gdmFsdWVSZWN0LmhlaWdodCgpOwotCi0gICAgRGlyZWN0aW9uRmxpcHBpbmdTY29wZSBzY29w
ZShvLCBpLCByZWN0KTsKLSAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7Ci0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2ViVGhlbWVFbmdp
bmU6OlBhcnRQcm9ncmVzc0JhciwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpX
ZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotI2Vu
ZGlmCi0KLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzaG91bGRPcGVuUGlja2VyV2l0
aEY0S2V5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21p
dW1MaW51eC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUNocm9taXVtTGludXguaAkocmV2aXNpb24gMTM2NDA2KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDExMiArMCwwIEBACi0vKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9q
ZWN0LgotICoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgotICog
Q29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KLSAq
IENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgotICogQ29weXJp
Z2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+Ci0gKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMDkgR29vZ2xlLCBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIFJl
bmRlclRoZW1lQ2hyb21pdW1MaW51eF9oCi0jZGVmaW5lIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51
eF9oCi0KLSNpbmNsdWRlICJSZW5kZXJUaGVtZUNocm9taXVtU2tpYS5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBSZW5kZXJUaGVtZUNocm9taXVtTGludXggOiBwdWJsaWMg
UmVuZGVyVGhlbWVDaHJvbWl1bVNraWEgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOwotICAgICAgICB2aXJ0dWFsIFN0cmluZyBl
eHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7Ci0KLSAgICAgICAgdmlydHVhbCBDb2xvciBzeXN0ZW1D
b2xvcihpbnQgY3NzVmFsaWRJZCkgY29uc3Q7Ci0KLSAgICAgICAgLy8gQSBtZXRob2QgYXNraW5n
IGlmIHRoZSBjb250cm9sIGNoYW5nZXMgaXRzIHRpbnQgd2hlbiB0aGUgd2luZG93IGhhcyBmb2N1
cyBvciBub3QuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBjb250cm9sU3VwcG9ydHNUaW50cyhjb25z
dCBSZW5kZXJPYmplY3QqKSBjb25zdDsKLQotICAgICAgICAvLyBMaXN0IEJveCBzZWxlY3Rpb24g
Y29sb3IKLSAgICAgICAgdmlydHVhbCBDb2xvciBhY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgQ29sb3IgYWN0aXZlTGlzdEJveFNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIENvbG9yIGlu
YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0OwotICAgICAgICB2
aXJ0dWFsIENvbG9yIGluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNv
bnN0OwotCi0gICAgICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0
aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgQ29s
b3IgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICAg
ICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9y
KCkgY29uc3Q7Ci0KLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICAgICAgdmlydHVh
bCBJbnRTaXplIHNsaWRlclRpY2tTaXplKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgICAgIHZpcnR1
YWwgaW50IHNsaWRlclRpY2tPZmZzZXRGcm9tVHJhY2tDZW50ZXIoKSBjb25zdCBPVkVSUklERTsK
LSNlbmRpZgotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRl
clN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwotCi0gICAgICAgIHN0YXRpYyB2b2lkIHNldENhcmV0
QmxpbmtJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpOwotICAgICAgICB2aXJ0dWFsIGRvdWJsZSBj
YXJldEJsaW5rSW50ZXJ2YWxJbnRlcm5hbCgpIGNvbnN0OwotCi0gICAgICAgIHZpcnR1YWwgYm9v
bCBwYWludENoZWNrYm94KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldENoZWNrYm94U2l6ZShSZW5kZXJTdHls
ZSopIGNvbnN0OwotCi0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFJhZGlvKFJlbmRlck9iamVj
dCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIHNldFJhZGlvU2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OwotCi0gICAgICAgIHZpcnR1YWwg
Ym9vbCBwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRGaWVsZChSZW5kZXJPYmpl
Y3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwg
Ym9vbCBwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVyVHJhY2soUmVuZGVy
T2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0
dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0Jik7Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdElubmVyU3Bp
bkJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25z
dDsKLSAgICAgICAgdmlydHVhbCBib29sIHBhaW50SW5uZXJTcGluQnV0dG9uKFJlbmRlck9iamVj
dCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLQotICAgICAgICB2aXJ0dWFs
IGJvb2wgcG9wc01lbnVCeVNwYWNlT3JSZXR1cm4oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0
cnVlOyB9Ci0KLSNpZiBFTkFCTEUoUFJPR1JFU1NfRUxFTUVOVCkKLSAgICAgICAgdmlydHVhbCBi
b29sIHBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpOwotI2VuZGlmCi0KLSAgICAgICAgdmlydHVhbCBib29sIHNob3VsZE9wZW5Q
aWNrZXJXaXRoRjRLZXkoKSBjb25zdCBPVkVSUklERTsKLQotICAgICAgICBzdGF0aWMgdm9pZCBz
ZXRTZWxlY3Rpb25Db2xvcnModW5zaWduZWQgYWN0aXZlQmFja2dyb3VuZENvbG9yLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYWN0aXZlRm9yZWdyb3Vu
ZENvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbmFjdGl2ZUZvcmVncm91bmRDb2xvcik7Ci0KLSAgICBwcm90ZWN0
ZWQ6Ci0gICAgICAgIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCgpOwotICAgICAgICB2aXJ0dWFs
IH5SZW5kZXJUaGVtZUNocm9taXVtTGludXgoKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIC8v
IEEgZ2VuZXJhbCBtZXRob2QgYXNraW5nIGlmIGFueSBjb250cm9sIHRpbnRpbmcgaXMgc3VwcG9y
dGVkIGF0IGFsbC4KLSAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkg
Y29uc3Q7Ci0KLSAgICAgICAgc3RhdGljIGRvdWJsZSBtX2NhcmV0QmxpbmtJbnRlcnZhbDsKLQot
ICAgICAgICBzdGF0aWMgdW5zaWduZWQgbV9hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3I7
Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBtX2FjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xv
cjsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIG1faW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3I7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBtX2luYWN0aXZlU2VsZWN0aW9uRm9yZWdy
b3VuZENvbG9yOwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTM2NDM2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0xMi0wMyAgU2NvdHQgVmlvbGV0
ICA8c2t5QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBsaW51eCB0
aGVtZSByZWxhdGVkIGZpbGVzIGFuZCBzd2l0Y2ggdG8gZGVmYXVsdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzODk3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbGludXggdGhlbWUgcmVsYXRlZCBmaWxl
cyBhcmUgbm93IG5hbWVkIGRlZmF1bHQuIFRoaXMgcmVtb3ZlcworICAgICAgICBsaW51eCBmaWxl
cyB1cGRhdGVzIGJ1aWxkIGZpbGVzIGFuZCByZW1vdmVzIGlmZGVmcy4KKworICAgICAgICAqIFdl
YktpdC5neXA6IHVwZGF0ZSBydWxlcy4KKyAgICAgICAgKiBwdWJsaWMvbGludXgvV2ViUmVuZGVy
VGhlbWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0U2Nyb2xsYmFyQ29sb3JzKTogVXBkYXRlIGlmZGVm
cworICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0U2VsZWN0aW9uQ29sb3JzKTogVXBk
YXRlIGlmZGVmcworICAgICAgICAqIHNyYy9saW51eC9XZWJSZW5kZXJUaGVtZS5jcHA6IFJlbW92
ZWQuCisKIDIwMTItMTItMDMgIEV1Z2VuZSBLbHl1Y2huaWtvdiAgPGV1c3Rhc0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTWFrZSBtYWluLXRocmVhZCBtb25pdG9yaW5n
IGdvIHRocm91Z2ggSW5zcGVjdG9yQ29udHJvbGxlcgpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAkocmV2aXNpb24gMTM2NDA2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC00MzksNyArNDM5LDYgQEAKICAgICAgICAgICAgICAg
ICAnc3JjL2xpbnV4L1dlYkZvbnRJbmZvLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9saW51
eC9XZWJGb250UmVuZGVyaW5nLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9saW51eC9XZWJG
b250UmVuZGVyU3R5bGUuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL2xpbnV4L1dlYlJlbmRl
clRoZW1lLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy94MTEvV2ViU2NyZWVuSW5mb0ZhY3Rv
cnkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5t
bScsCiAgICAgICAgICAgICAgICAgJ3NyYy9tYWMvV2ViU2NyZWVuSW5mb0ZhY3RvcnkubW0nLApA
QCAtODQ2LDEwICs4NDUsNiBAQAogICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAg
ICAgIH1dLAogICAgICAgICAgICAgICAgIFsndXNlX2RlZmF1bHRfcmVuZGVyX3RoZW1lPT0xJywg
ewotICAgICAgICAgICAgICAgICAgICAnc291cmNlcy8nOiBbCi0gICAgICAgICAgICAgICAgICAg
ICAgICBbJ2V4Y2x1ZGUnLCAnc3JjL2xpbnV4L1dlYlJlbmRlclRoZW1lLmNwcCddLAotICAgICAg
ICAgICAgICAgICAgICAgICAgWydleGNsdWRlJywgJ3B1YmxpYy9saW51eC9XZWJSZW5kZXJUaGVt
ZS5oJ10sCi0gICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICdpbmNs
dWRlX2RpcnMnOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAncHVibGljL2RlZmF1bHQnLAog
ICAgICAgICAgICAgICAgICAgICBdLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvbGludXgvV2ViUmVuZGVyVGhlbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9saW51eC9XZWJSZW5kZXJUaGVtZS5oCShyZXZpc2lvbiAxMzY0MDYpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJSZW5kZXJUaGVtZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkg
Sm9lbCBTdGFubGV5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0g
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViUmVuZGVyVGhlbWVfaAot
I2RlZmluZSBXZWJSZW5kZXJUaGVtZV9oCi0KLSNpbmNsdWRlICIuLi9wbGF0Zm9ybS9XZWJDb21t
b24uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIFNldCBjYXJldCBibGluayBpbnRlcnZh
bCBmb3IgdGV4dCBpbnB1dCBhcmVhcy4KLVdFQktJVF9FWFBPUlQgdm9pZCBzZXRDYXJldEJsaW5r
SW50ZXJ2YWwoZG91YmxlKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNpb24g
MTM2NDA2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzksMTAgKzE3OSw2IEBACiAjaW5jbHVkZSAiUmVuZGVyVGhlbWVD
aHJvbWl1bVdpbi5oIgogI2VuZGlmCiAjZWxzZQotI2lmIE9TKFVOSVgpICYmICFPUyhEQVJXSU4p
ICYmICFFTkFCTEUoREVGQVVMVF9SRU5ERVJfVEhFTUUpCi0jaW5jbHVkZSAiUGxhdGZvcm1UaGVt
ZUNocm9taXVtTGludXguaCIKLSNpbmNsdWRlICJSZW5kZXJUaGVtZUNocm9taXVtTGludXguaCIK
LSNlbmRpZgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjZW5kaWYKIApAQCAtMzU3Myw4ICsz
NTY5LDYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0U2Nyb2xsYmFyQ29sb3JzKHVucwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRyYWNrQ29sb3IpIHsKICNp
ZiBFTkFCTEUoREVGQVVMVF9SRU5ERVJfVEhFTUUpCiAgICAgUGxhdGZvcm1UaGVtZUNocm9taXVt
RGVmYXVsdDo6c2V0U2Nyb2xsYmFyQ29sb3JzKGluYWN0aXZlQ29sb3IsIGFjdGl2ZUNvbG9yLCB0
cmFja0NvbG9yKTsKLSNlbGlmIE9TKFVOSVgpICYmICFPUyhEQVJXSU4pICYmICFPUyhBTkRST0lE
KQotICAgIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRTY3JvbGxiYXJDb2xvcnMoaW5h
Y3RpdmVDb2xvciwgYWN0aXZlQ29sb3IsIHRyYWNrQ29sb3IpOwogI2VuZGlmCiB9CiAKQEAgLTM1
ODUsOSArMzU3OSw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFNlbGVjdGlvbkNvbG9ycyh1bnMK
ICNpZiBFTkFCTEUoREVGQVVMVF9SRU5ERVJfVEhFTUUpCiAgICAgUmVuZGVyVGhlbWVDaHJvbWl1
bURlZmF1bHQ6OnNldFNlbGVjdGlvbkNvbG9ycyhhY3RpdmVCYWNrZ3JvdW5kQ29sb3IsIGFjdGl2
ZUZvcmVncm91bmRDb2xvciwgaW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IsIGluYWN0aXZlRm9yZWdy
b3VuZENvbG9yKTsKICAgICB0aGVtZSgpLT5wbGF0Zm9ybUNvbG9yc0RpZENoYW5nZSgpOwotI2Vs
aWYgT1MoVU5JWCkgJiYgIU9TKERBUldJTikgJiYgIU9TKEFORFJPSUQpCi0gICAgUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4OjpzZXRTZWxlY3Rpb25Db2xvcnMoYWN0aXZlQmFja2dyb3VuZENvbG9y
LCBhY3RpdmVGb3JlZ3JvdW5kQ29sb3IsIGluYWN0aXZlQmFja2dyb3VuZENvbG9yLCBpbmFjdGl2
ZUZvcmVncm91bmRDb2xvcik7Ci0gICAgdGhlbWUoKS0+cGxhdGZvcm1Db2xvcnNEaWRDaGFuZ2Uo
KTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eC9X
ZWJSZW5kZXJUaGVtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvbGludXgvV2ViUmVuZGVyVGhlbWUuY3BwCShyZXZpc2lvbiAxMzY0MDYpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9saW51eC9XZWJSZW5kZXJUaGVtZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBKb2VsIFN0YW5s
ZXkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYlJl
bmRlclRoZW1lLmgiCi0KLSNpbmNsdWRlICJSZW5kZXJUaGVtZUNocm9taXVtTGludXguaCIKLSNp
bmNsdWRlICJXZWJWaWV3LmgiCi0KLXVzaW5nIFdlYkNvcmU6OlJlbmRlclRoZW1lOwotdXNpbmcg
V2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OwotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotdm9pZCBzZXRDYXJldEJsaW5rSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQotewotICAgIFJl
bmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c2V0Q2FyZXRCbGlua0ludGVydmFsKGludGVydmFsKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzY0MzYpCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMi0wMyAgU2NvdHQg
VmlvbGV0ICA8c2t5QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBs
aW51eCB0aGVtZSByZWxhdGVkIGZpbGVzIGFuZCBzd2l0Y2ggdG8gZGVmYXVsdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzODk3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jb25maWcvYnVpbGRfdW5pdHRlc3QucHk6CisgICAgICAgIChTaG91bGRCdWlsZFRl
c3QpOiBsaW51eC0+ZGVmYXVsdAorCiAyMDEyLTEyLTAzICBKdWxpZW4gQlJJQU5DRUFVICAgPGpi
cmlhbmNlYXVAbmRzLmNvbT4KIAogICAgICAgICBBZGQgUXQvU0g0IGJ1aWxkIHNsYXZlIHRvIGJ1
aWxkLndlYmtpdC5vcmcKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZp
Zy9idWlsZF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jb25maWcvYnVpbGRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDEzNjQwNikKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9idWlsZF91bml0dGVzdC5weQkod29y
a2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBTaG91bGRCdWlsZFRlc3QodW5pdHRl
c3QuVGVzdENhc2UpCiAgICAgICAgIChbIlNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9mb28iXSwgWyJtYWMtbGVvcGFyZCIsICJtYWMtbGlvbiIsICAibWFjLW1vdW50YWlubGlv
biIsICJtYWMtc25vd2xlb3BhcmQiXSksCiAgICAgICAgIChbIlNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3d4L3d4Y29kZS93aW4vZm9vIl0sIFtdKSwKICAgICAgICAgKFsiU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIiwgIlNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5oIl0sIFsibWFjLWxlb3BhcmQiLCAibWFjLWxpb24iLCAgIm1hYy1tb3Vu
dGFpbmxpb24iLCAibWFjLXNub3dsZW9wYXJkIl0pLAotICAgICAgICAoWyJTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmgiXSwgWyJjaHJvbWl1bS1saW51
eCJdKSwKKyAgICAgICAgKFsiU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hy
b21pdW1EZWZhdWx0LmgiXSwgWyJjaHJvbWl1bS1saW51eCJdKSwKICAgICAgICAgKFsiU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luQ0UuaCJdLCBbXSksCiAgICAgICAgIChb
IlRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL0xlYWtzVmlld2VyL0xlYWtzVmlld2VyLmpzIl0sIFtdKSwKICAgICBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177775</attachid>
            <date>2012-12-05 09:20:16 -0800</date>
            <delta_ts>2012-12-07 09:36:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103897-20121205091741.patch</filename>
            <type>text/plain</type>
            <size>66677</size>
            <attacher name="Scott Violet">sky</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2NjkxKQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTEyLTA0ICBTY290
dCBWaW9sZXQgIDxza3lAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVtb3Zl
IGxpbnV4IHRoZW1lIHJlbGF0ZWQgZmlsZXMgYW5kIHN3aXRjaCB0byBkZWZhdWx0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM4OTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6
IFJlbW92ZSBXZWJUaGVtZUVuZ2luZS5oCisgICAgICAgICogY2hyb21pdW0vcHVibGljL2xpbnV4
L1dlYlRoZW1lRW5naW5lLmg6IFJlbW92ZWQuCisKIDIwMTItMTItMDQgIEtlbm5ldGggUnVzc2Vs
bCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIEFzc29jaWF0ZSBVUkxzIHdpdGggR3JhcGhp
Y3NDb250ZXh0M0QgaW5zdGFuY2VzIGNyZWF0ZWQgZm9yIFdlYkdMCkluZGV4OiBTb3VyY2UvUGxh
dGZvcm0vUGxhdGZvcm0uZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vUGxhdGZv
cm0uZ3lwaQkocmV2aXNpb24gMTM2NjkxKQorKysgU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5
cGkJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw3ICsxNTIsNiBAQAogICAgICAgICAgICAgJ2Nocm9t
aXVtL3B1YmxpYy9saW51eC9XZWJGb250SW5mby5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvbGludXgvV2ViRm9udFJlbmRlclN0eWxlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oJywKLSAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL21hYy9XZWJTYW5kYm94U3VwcG9ydC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvbWFjL1dlYlRoZW1lRW5naW5lLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1Ymxp
Yy93aW4vV2ViU2FuZGJveFN1cHBvcnQuaCcsCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJUaGVtZUVuZ2luZS5oCShyZXZpc2lvbiAx
MzY2OTEpCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlRoZW1l
RW5naW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9u
LgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlRoZW1l
RW5naW5lX2gKLSNkZWZpbmUgV2ViVGhlbWVFbmdpbmVfaAotCi0jaW5jbHVkZSAiLi4vV2ViQ2Fu
dmFzLmgiCi0jaW5jbHVkZSAiLi4vV2ViQ29sb3IuaCIKLSNpbmNsdWRlICIuLi9XZWJTaXplLmgi
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2ViUmVjdDsKLQotY2xhc3MgV2ViVGhl
bWVFbmdpbmUgewotcHVibGljOgotICAgIC8vIFRoZSBVSSBwYXJ0IHdoaWNoIGlzIGJlaW5nIGFj
Y2Vzc2VkLgotICAgIGVudW0gUGFydCB7Ci0gICAgICAgIC8vIFNjcm9sbGJhclRoZW1lIHBhcnRz
Ci0gICAgICAgIFBhcnRTY3JvbGxiYXJEb3duQXJyb3csCi0gICAgICAgIFBhcnRTY3JvbGxiYXJM
ZWZ0QXJyb3csCi0gICAgICAgIFBhcnRTY3JvbGxiYXJSaWdodEFycm93LAotICAgICAgICBQYXJ0
U2Nyb2xsYmFyVXBBcnJvdywKLSAgICAgICAgUGFydFNjcm9sbGJhckhvcml6b250YWxUaHVtYiwK
LSAgICAgICAgUGFydFNjcm9sbGJhclZlcnRpY2FsVGh1bWIsCi0gICAgICAgIFBhcnRTY3JvbGxi
YXJIb3Jpem9udGFsVHJhY2ssCi0gICAgICAgIFBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrLAot
Ci0gICAgICAgIC8vIFJlbmRlclRoZW1lIHBhcnRzCi0gICAgICAgIFBhcnRDaGVja2JveCwKLSAg
ICAgICAgUGFydFJhZGlvLAotICAgICAgICBQYXJ0QnV0dG9uLAotICAgICAgICBQYXJ0VGV4dEZp
ZWxkLAotICAgICAgICBQYXJ0TWVudUxpc3QsCi0gICAgICAgIFBhcnRTbGlkZXJUcmFjaywKLSAg
ICAgICAgUGFydFNsaWRlclRodW1iLAotICAgICAgICBQYXJ0SW5uZXJTcGluQnV0dG9uLAotICAg
ICAgICBQYXJ0UHJvZ3Jlc3NCYXIKLSAgICB9OwotCi0gICAgLy8gVGhlIGN1cnJlbnQgc3RhdGUg
b2YgdGhlIGFzc29jaWF0ZWQgUGFydC4KLSAgICBlbnVtIFN0YXRlIHsKLSAgICAgICAgU3RhdGVE
aXNhYmxlZCwKLSAgICAgICAgU3RhdGVIb3ZlciwKLSAgICAgICAgU3RhdGVOb3JtYWwsCi0gICAg
ICAgIFN0YXRlUHJlc3NlZCwKLSAgICB9OwotCi0gICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3Ig
ZHJhd2luZyB0aGUgUGFydFNjcm9sbGJhckhvcml6b250YWxUcmFjayBhbmQKLSAgICAvLyBQYXJ0
U2Nyb2xsYmFyVmVydGljYWxUcmFjay4KLSAgICBzdHJ1Y3QgU2Nyb2xsYmFyVHJhY2tFeHRyYVBh
cmFtcyB7Ci0gICAgICAgIC8vIFRoZSBib3VuZHMgb2YgdGhlIGVudGlyZSB0cmFjaywgYXMgb3Bw
b3NlZCB0byB0aGUgcGFydCBiZWluZyBwYWludGVkLgotICAgICAgICBpbnQgdHJhY2tYOwotICAg
ICAgICBpbnQgdHJhY2tZOwotICAgICAgICBpbnQgdHJhY2tXaWR0aDsKLSAgICAgICAgaW50IHRy
YWNrSGVpZ2h0OwotICAgIH07Ci0KLSAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0Q2hl
Y2tib3gsIFBhcnRQdXNoQnV0dG9uIGFuZCBQYXJ0UmFkaW8uCi0gICAgc3RydWN0IEJ1dHRvbkV4
dHJhUGFyYW1zIHsKLSAgICAgICAgYm9vbCBjaGVja2VkOwotICAgICAgICBib29sIGluZGV0ZXJt
aW5hdGU7IC8vIFdoZXRoZXIgdGhlIGJ1dHRvbiBzdGF0ZSBpcyBpbmRldGVybWluYXRlLgotICAg
ICAgICBib29sIGlzRGVmYXVsdDsgLy8gV2hldGhlciB0aGUgYnV0dG9uIGlzIGRlZmF1bHQgYnV0
dG9uLgotICAgICAgICBib29sIGhhc0JvcmRlcjsKLSAgICAgICAgV2ViQ29sb3IgYmFja2dyb3Vu
ZENvbG9yOwotICAgIH07Ci0KLSAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0VGV4dEZp
ZWxkCi0gICAgc3RydWN0IFRleHRGaWVsZEV4dHJhUGFyYW1zIHsKLSAgICAgICAgYm9vbCBpc1Rl
eHRBcmVhOwotICAgICAgICBib29sIGlzTGlzdGJveDsKLSAgICAgICAgV2ViQ29sb3IgYmFja2dy
b3VuZENvbG9yOwotICAgIH07Ci0KLSAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0TWVu
dUxpc3QKLSAgICBzdHJ1Y3QgTWVudUxpc3RFeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgaGFz
Qm9yZGVyOwotICAgICAgICBib29sIGhhc0JvcmRlclJhZGl1czsKLSAgICAgICAgaW50IGFycm93
WDsKLSAgICAgICAgaW50IGFycm93WTsKLSAgICAgICAgV2ViQ29sb3IgYmFja2dyb3VuZENvbG9y
OwotICAgIH07Ci0KLSAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0U2xpZGVyVHJhY2sg
YW5kIFBhcnRTbGlkZXJUaHVtYgotICAgIHN0cnVjdCBTbGlkZXJFeHRyYVBhcmFtcyB7Ci0gICAg
ICAgIGJvb2wgdmVydGljYWw7Ci0gICAgICAgIGJvb2wgaW5EcmFnOwotICAgIH07Ci0KLSAgICAv
LyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0SW5uZXJTcGluQnV0dG9uCi0gICAgc3RydWN0IElu
bmVyU3BpbkJ1dHRvbkV4dHJhUGFyYW1zIHsKLSAgICAgICAgYm9vbCBzcGluVXA7Ci0gICAgICAg
IGJvb2wgcmVhZE9ubHk7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBh
cnRQcm9ncmVzc0JhcgotICAgIHN0cnVjdCBQcm9ncmVzc0JhckV4dHJhUGFyYW1zIHsKLSAgICAg
ICAgYm9vbCBkZXRlcm1pbmF0ZTsKLSAgICAgICAgaW50IHZhbHVlUmVjdFg7Ci0gICAgICAgIGlu
dCB2YWx1ZVJlY3RZOwotICAgICAgICBpbnQgdmFsdWVSZWN0V2lkdGg7Ci0gICAgICAgIGludCB2
YWx1ZVJlY3RIZWlnaHQ7Ci0gICAgfTsKLQotICAgIHVuaW9uIEV4dHJhUGFyYW1zIHsKLSAgICAg
ICAgU2Nyb2xsYmFyVHJhY2tFeHRyYVBhcmFtcyBzY3JvbGxiYXJUcmFjazsKLSAgICAgICAgQnV0
dG9uRXh0cmFQYXJhbXMgYnV0dG9uOwotICAgICAgICBUZXh0RmllbGRFeHRyYVBhcmFtcyB0ZXh0
RmllbGQ7Ci0gICAgICAgIE1lbnVMaXN0RXh0cmFQYXJhbXMgbWVudUxpc3Q7Ci0gICAgICAgIFNs
aWRlckV4dHJhUGFyYW1zIHNsaWRlcjsKLSAgICAgICAgSW5uZXJTcGluQnV0dG9uRXh0cmFQYXJh
bXMgaW5uZXJTcGluOwotICAgICAgICBQcm9ncmVzc0JhckV4dHJhUGFyYW1zIHByb2dyZXNzQmFy
OwotICAgIH07Ci0KLSAgICAvLyBHZXRzIHRoZSBzaXplIG9mIHRoZSBnaXZlbiB0aGVtZSBwYXJ0
LiBGb3IgdmFyaWFibGUgc2l6ZWQgaXRlbXMKLSAgICAvLyBsaWtlIHZlcnRpY2FsIHNjcm9sbGJh
ciB0aHVtYnMsIHRoZSB3aWR0aCB3aWxsIGJlIHRoZSByZXF1aXJlZCB3aWR0aCBvZgotICAgIC8v
IHRoZSB0cmFjayB3aGlsZSB0aGUgaGVpZ2h0IHdpbGwgYmUgdGhlIG1pbmltdW0gaGVpZ2h0Lgot
ICAgIHZpcnR1YWwgV2ViU2l6ZSBnZXRTaXplKFBhcnQpIHsgcmV0dXJuIFdlYlNpemUoKTsgfQot
ICAgIC8vIFBhaW50IHRoZSBnaXZlbiB0aGUgZ2l2ZW4gdGhlbWUgcGFydC4KLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoV2ViQ2FudmFzKiwgUGFydCwgU3RhdGUsIGNvbnN0IFdlYlJlY3QmLCBjb25z
dCBFeHRyYVBhcmFtcyopIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2NjkxKQorKysgU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMTItMDQgIFNjb3R0
IFZpb2xldCAgPHNreUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUg
bGludXggdGhlbWUgcmVsYXRlZCBmaWxlcyBhbmQgc3dpdGNoIHRvIGRlZmF1bHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzg5NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExpbnV4IHJlbGF0ZWQgdGhl
bWUgZmlsZXMgYXJlIG5vdyBuYW1lZCBEZWZhdWx0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
Y29kZSBjbGVhbnVwLgorCisgICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6IFVwZGF0
ZSBmaWxlcworICAgICAgICAqIFdlYkNvcmUuZ3lwaTogVXBkYXRlIGZpbGVzCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUxpbnV4LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaDogUmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQpOiBMaW51eC0+
RGVmYXVsdAorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZC5o
OiBDaGFuZ2Ugc3VwZXJjbGFzcworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9t
aXVtTGludXguY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNo
cm9taXVtTGludXguaDogUmVtb3ZlZC4KKwogMjAxMi0xMi0wNSAgTWljaGFlbCBQcnVldHQgIDxt
aWNoYWVsQDY4ay5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBJbXBsZW1lbnQgSW5kZXhlZERC
IGJpbmRpbmdzIGZvciBKU0MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEzNjY5MSkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzQ2NCw4
ICszNDY0LDYgQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUZv
bnRQcm92aWRlci5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1
bUZvbnRQcm92aWRlckxpbnV4LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1Gb250UHJvdmlkZXJXaW4uY3BwJywKLSAgICAgICAgICAgICdyZW5kZXJpbmcv
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcCcsCi0gICAgICAgICAgICAncmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ2hyb21pdW1MaW51eC5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVy
VGhlbWVDaHJvbWl1bU1hYy5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVD
aHJvbWl1bU1hYy5tbScsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21p
dW1Ta2lhLmNwcCcsCkBAIC00NjgyLDggKzQ2ODAsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdC5oJywKLSAgICAgICAg
ICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5jcHAnLAot
ICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtV2lkZ2V0LmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuaCcsCkBAIC00NzAyLDgg
KzQ2OTgsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1l
Q2hyb21pdW1BbmRyb2lkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hy
b21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURlZmF1bHQuaCcsCi0gICAgICAgICAgICAncGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcCcsCi0gICAgICAg
ICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bU1hYy5tbScsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bVdpbi5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29y
ZS5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5n
eXAJKHJldmlzaW9uIDEzNjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNv
cmUuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAwLDE3ICsxNzAwLDEyIEBACiAgICAgICAgIH1d
LAogICAgICAgICBbJ3VzZV9kZWZhdWx0X3JlbmRlcl90aGVtZT09MScsIHsKICAgICAgICAgICAn
c291cmNlcy8nOiBbCi0gICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0v
UGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguaCddLAotICAgICAgICAgICAgWydleGNsdWRlJywg
J3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmNwcCddLAogICAg
ICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJv
bWl1bVdpbi5oJ10sCiAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0v
UGxhdGZvcm1UaGVtZUNocm9taXVtV2luLmNwcCddLAotICAgICAgICAgICAgWydleGNsdWRlJywg
J3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHAnXSwKLSAg
ICAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtTGludXguaCddLAogICAgICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL2Nocm9t
aXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3BwJ10sCiAgICAgICAgICAgICBbJ2V4Y2x1
ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5oJ10sCiAg
ICAgICAgICAgXSwKLSAgICAgICAgfV0sCi0gICAgICAgIFsndXNlX2RlZmF1bHRfcmVuZGVyX3Ro
ZW1lPT0wJywgeworICAgICAgICB9LCB7ICMgdXNlX2RlZmF1bHRfcmVuZGVyX3RoZW1lPT0wCiAg
ICAgICAgICAgJ3NvdXJjZXMvJzogWwogICAgICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwJ10sCiAgICAgICAgICAg
ICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVm
YXVsdC5oJ10sCkBAIC0yMDEzLDcgKzIwMDgsNiBAQAogICAgICAgICB9XSwKICAgICAgICAgWyd1
c2VfZGVmYXVsdF9yZW5kZXJfdGhlbWU9PTEnLCB7CiAgICAgICAgICAgJ3NvdXJjZXMvJzogWwot
ICAgICAgICAgICAgWydleGNsdWRlJywgJ1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC4qJ10sCiAg
ICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi4qJ10sCiAgICAg
ICAgICAgXSwKICAgICAgICAgfV0sCkBAIC0yMDYwLDcgKzIwNTQsNyBAQAogICAgICAgICBbJ09T
PT0iYW5kcm9pZCInLCB7CiAgICAgICAgICAgJ3NvdXJjZXMvJzogWwogICAgICAgICAgICAgWydp
bmNsdWRlJywgJ3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRm9udFByb3ZpZGVyTGludXhc
XC5jcHAkJ10sCi0gICAgICAgICAgICBbJ2luY2x1ZGUnLCAncmVuZGVyaW5nL1JlbmRlclRoZW1l
Q2hyb21pdW1MaW51eFxcLmNwcCQnXSwKKyAgICAgICAgICAgIFsnaW5jbHVkZScsICdyZW5kZXJp
bmcvUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHRcXC5jcHAkJ10sCiAgICAgICAgICAgXSwKICAg
ICAgICAgfSx7ICMgT1MhPSJhbmRyb2lkIgogICAgICAgICAgICdzb3VyY2VzLyc6IFsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxp
bnV4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
bGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5jcHAJKHJldmlzaW9uIDEzNjY5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSwyMjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXVuc2lnbmVkIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpzX3RodW1iSW5hY3Rp
dmVDb2xvciA9IDB4ZWFlYWVhOwotdW5zaWduZWQgUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXg6
OnNfdGh1bWJBY3RpdmVDb2xvciA9IDB4ZjRmNGY0OwotdW5zaWduZWQgUGxhdGZvcm1UaGVtZUNo
cm9taXVtTGludXg6OnNfdHJhY2tDb2xvciA9IDB4ZDNkM2QzOwotCi12b2lkIFBsYXRmb3JtVGhl
bWVDaHJvbWl1bUxpbnV4OjpzZXRTY3JvbGxiYXJDb2xvcnMoCi0gICAgU2tDb2xvciBpbmFjdGl2
ZUNvbG9yLCBTa0NvbG9yIGFjdGl2ZUNvbG9yLCBTa0NvbG9yIHRyYWNrQ29sb3IpCi17Ci0gICAg
c190aHVtYkluYWN0aXZlQ29sb3IgPSBpbmFjdGl2ZUNvbG9yOwotICAgIHNfdGh1bWJBY3RpdmVD
b2xvciA9IGFjdGl2ZUNvbG9yOwotICAgIHNfdHJhY2tDb2xvciA9IHRyYWNrQ29sb3I7Ci19Ci0K
LXN0YXRpYyBTa1NjYWxhciBjbGFtcChTa1NjYWxhciB2YWx1ZSwgU2tTY2FsYXIgbWluLCBTa1Nj
YWxhciBtYXgpCi17Ci0gICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KHZhbHVlLCBtaW4pLCBt
YXgpOwotfQotCi1Ta0NvbG9yIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpzYXR1cmF0ZUFu
ZEJyaWdodGVuKGNvbnN0IFNrU2NhbGFyIGhzdlszXSwgU2tTY2FsYXIgc2F0dXJhdGVBbW91bnQs
IFNrU2NhbGFyIGJyaWdodGVuQW1vdW50KQotewotICAgIFNrU2NhbGFyIGNvbG9yWzNdOwotICAg
IGNvbG9yWzBdID0gaHN2WzBdOwotICAgIGNvbG9yWzFdID0gY2xhbXAoaHN2WzFdICsgc2F0dXJh
dGVBbW91bnQsIDAuMCwgMS4wKTsKLSAgICBjb2xvclsyXSA9IGNsYW1wKGhzdlsyXSArIGJyaWdo
dGVuQW1vdW50LCAwLjAsIDEuMCk7Ci0gICAgcmV0dXJuIFNrSFNWVG9Db2xvcihjb2xvcik7Ci19
Ci0KLVNrQ29sb3IgUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXg6Om91dGxpbmVDb2xvcihjb25z
dCBTa1NjYWxhciBoc3YxWzNdLCBjb25zdCBTa1NjYWxhciBoc3YyWzNdKQotewotICAgIC8vIEdU
SyBUaGVtZSBlbmdpbmVzIGhhdmUgd2F5IHRvbyBtdWNoIGNvbnRyb2wgb3ZlciB0aGUgbGF5b3V0
IG9mCi0gICAgLy8gdGhlIHNjcm9sbGJhci4gV2UgbWlnaHQgYmUgYWJsZSB0byBtb3JlIGNsb3Nl
bHkgYXBwcm94aW1hdGUgaXRzCi0gICAgLy8gbG9vay1hbmQtZmVlbCwgaWYgd2Ugc2VudCB3aG9s
ZSBpbWFnZXMgaW5zdGVhZCBvZiBqdXN0IGNvbG9ycwotICAgIC8vIGZyb20gdGhlIGJyb3dzZXIg
dG8gdGhlIHJlbmRlcmVyLiBCdXQgZXZlbiB0aGVuLCBzb21lIHRoZW1lcwotICAgIC8vIHdvdWxk
IGp1c3QgYnJlYWsuCi0gICAgLy8KLSAgICAvLyBTbywgaW5zdGVhZCwgd2UgZG9uJ3QgZXZlbiB0
cnkgdG8gMTAwJSByZXBsaWNhdGUgdGhlIGxvb2sgb2YKLSAgICAvLyB0aGUgbmF0aXZlIHNjcm9s
bGJhci4gV2UgcmVuZGVyIG91ciBvd24gdmVyc2lvbiwgYnV0IHdlIG1ha2UKLSAgICAvLyBzdXJl
IHRvIHBpY2sgY29sb3JzIHRoYXQgYmxlbmQgaW4gbmljZWx5IHdpdGggdGhlIHN5c3RlbSBHVEsK
LSAgICAvLyB0aGVtZS4gSW4gbW9zdCBjYXNlcywgd2UgY2FuIGp1c3Qgc2FtcGxlIGEgY291cGxl
IG9mIHBpeGVscwotICAgIC8vIGZyb20gdGhlIHN5c3RlbSBzY3JvbGxiYXIgYW5kIHVzZSB0aG9z
ZSBjb2xvcnMgdG8gZHJhdyBvdXIKLSAgICAvLyBzY3JvbGxiYXIuCi0gICAgLy8KLSAgICAvLyBU
aGlzIHdvcmtzIGZpbmUgZm9yIHRoZSB0cmFjayBjb2xvciBhbmQgdGhlIG92ZXJhbGwgdGh1bWIK
LSAgICAvLyBjb2xvci4gQnV0IGl0IGZhaWxzIHNwZWN0YWN1bGFybHkgZm9yIHRoZSBvdXRsaW5l
IGNvbG9yIHVzZWQKLSAgICAvLyBhcm91bmQgdGhlIHRodW1iIHBpZWNlLiBOb3QgYWxsIHRoZW1l
cyBoYXZlIGEgY2xlYXJseSBkZWZpbmVkCi0gICAgLy8gb3V0bGluZS4gRm9yIHNvbWUgb2YgdGhl
bSBpdCBpcyBwYXJ0aWFsbHkgdHJhbnNwYXJlbnQsIGFuZCBmb3IKLSAgICAvLyBvdGhlcnMgdGhl
IHRoaWNrbmVzcyBpcyB2ZXJ5IHVucHJlZGljdGFibGUuCi0gICAgLy8KLSAgICAvLyBTbywgaW5z
dGVhZCBvZiB0cnlpbmcgdG8gYXBwcm94aW1hdGUgdGhlIHN5c3RlbSB0aGVtZSwgd2UKLSAgICAv
LyBpbnN0ZWFkIHRyeSB0byBjb21wdXRlIGEgcmVhc29uYWJsZSBsb29raW5nIGNob2ljZSBiYXNl
ZCBvbiB0aGUKLSAgICAvLyBrbm93biBjb2xvciBvZiB0aGUgdHJhY2sgYW5kIHRoZSB0aHVtYiBw
aWVjZS4gVGhpcyBpcyBkaWZmaWN1bHQKLSAgICAvLyB3aGVuIHRyeWluZyB0byBkZWFsIGJvdGgg
d2l0aCBoaWdoLSBhbmQgbG93LWNvbnRyYXN0IHRoZW1lcywKLSAgICAvLyBhbmQgYm90aCB3aXRo
IHBvc2l0aXZlIGFuZCBpbnZlcnRlZCB0aGVtZXMuCi0gICAgLy8KLSAgICAvLyBUaGUgZm9sbG93
aW5nIGNvZGUgaGFzIGJlZW4gdGVzdGVkIHRvIGxvb2sgT0sgd2l0aCBhbGwgb2YgdGhlCi0gICAg
Ly8gZGVmYXVsdCBHVEsgdGhlbWVzLgotICAgIFNrU2NhbGFyIG1pbkRpZmYgPSBjbGFtcCgoaHN2
MVsxXSArIGhzdjJbMV0pICogMS4yLCAwLjI4LCAwLjUpOwotICAgIFNrU2NhbGFyIGRpZmYgPSBj
bGFtcChmYWJzKGhzdjFbMl0gLSBoc3YyWzJdKSAvIDIsIG1pbkRpZmYsIDAuNSk7Ci0KLSAgICBp
ZiAoaHN2MVsyXSArIGhzdjJbMl0gPiAxLjApCi0gICAgICAgIGRpZmYgPSAtZGlmZjsKLQotICAg
IHJldHVybiBzYXR1cmF0ZUFuZEJyaWdodGVuKGhzdjIsIC0wLjIsIGRpZmYpOwotfQotCi12b2lk
IFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEFycm93QnV0dG9uKEdyYXBoaWNzQ29u
dGV4dCogZ2MsIGNvbnN0IEludFJlY3QmIHJlY3QsIEFycm93RGlyZWN0aW9uIGRpcmVjdGlvbiwg
Q29udHJvbFN0YXRlcyBzdGF0ZXMpCi17Ci0gICAgUGxhdGZvcm1Db250ZXh0U2tpYSogcGxhdGZv
cm1Db250ZXh0ID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpOwotICAgIGludCB3aWR0aE1pZGRsZSwg
bGVuZ3RoTWlkZGxlOwotICAgIFNrUGFpbnQgcGFpbnQ7Ci0gICAgaWYgKGRpcmVjdGlvbiA9PSBO
b3J0aCB8fCBkaXJlY3Rpb24gPT0gU291dGgpIHsKLSAgICAgICAgd2lkdGhNaWRkbGUgPSByZWN0
LndpZHRoKCkgLyAyICsgMTsKLSAgICAgICAgbGVuZ3RoTWlkZGxlID0gcmVjdC5oZWlnaHQoKSAv
IDIgKyAxOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGxlbmd0aE1pZGRsZSA9IHJlY3Qud2lkdGgo
KSAvIDIgKyAxOwotICAgICAgICB3aWR0aE1pZGRsZSA9IHJlY3QuaGVpZ2h0KCkgLyAyICsgMTsK
LSAgICB9Ci0KLSAgICAvLyBDYWxjdWxhdGUgYnV0dG9uIGNvbG9yLgotICAgIFNrU2NhbGFyIHRy
YWNrSFNWWzNdOwotICAgIFNrQ29sb3JUb0hTVih0cmFja0NvbG9yKCksIHRyYWNrSFNWKTsKLSAg
ICBTa0NvbG9yIGJ1dHRvbkNvbG9yID0gc2F0dXJhdGVBbmRCcmlnaHRlbih0cmFja0hTViwgMCwg
MC4yKTsKLSAgICBTa0NvbG9yIGJhY2tncm91bmRDb2xvciA9IGJ1dHRvbkNvbG9yOwotICAgIGlm
IChzdGF0ZXMgJiBQcmVzc2VkU3RhdGUpIHsKLSAgICAgICAgU2tTY2FsYXIgYnV0dG9uSFNWWzNd
OwotICAgICAgICBTa0NvbG9yVG9IU1YoYnV0dG9uQ29sb3IsIGJ1dHRvbkhTVik7Ci0gICAgICAg
IGJ1dHRvbkNvbG9yID0gc2F0dXJhdGVBbmRCcmlnaHRlbihidXR0b25IU1YsIDAsIC0wLjEpOwot
ICAgIH0gZWxzZSBpZiAoc3RhdGVzICYgSG92ZXJTdGF0ZSkgewotICAgICAgICBTa1NjYWxhciBi
dXR0b25IU1ZbM107Ci0gICAgICAgIFNrQ29sb3JUb0hTVihidXR0b25Db2xvciwgYnV0dG9uSFNW
KTsKLSAgICAgICAgYnV0dG9uQ29sb3IgPSBzYXR1cmF0ZUFuZEJyaWdodGVuKGJ1dHRvbkhTViwg
MCwgMC4wNSk7Ci0gICAgfQotCi0gICAgU2tJUmVjdCBza3JlY3Q7Ci0gICAgc2tyZWN0LnNldChy
ZWN0LngoKSwgcmVjdC55KCksIHJlY3QueCgpICsgcmVjdC53aWR0aCgpLCByZWN0LnkoKSArIHJl
Y3QuaGVpZ2h0KCkpOwotICAgIC8vIFBhaW50IHRoZSBiYWNrZ3JvdW5kICh0aGUgYXJlYSB2aXNp
YmxlIGJlaGluZCB0aGUgcm91bmRlZCBjb3JuZXJzKS4KLSAgICBwYWludC5zZXRDb2xvcihiYWNr
Z3JvdW5kQ29sb3IpOwotICAgIHBsYXRmb3JtQ29udGV4dC0+ZHJhd0lSZWN0KHNrcmVjdCwgcGFp
bnQpOwotCi0gICAgLy8gUGFpbnQgdGhlIGJ1dHRvbidzIG91dGxpbmUgYW5kIGZpbGwgdGhlIG1p
ZGRsZQotICAgIFNrUGF0aCBvdXRsaW5lOwotICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAg
Y2FzZSBOb3J0aDoKLSAgICAgICAgb3V0bGluZS5tb3ZlVG8ocmVjdC54KCkgKyAwLjUsIHJlY3Qu
eSgpICsgcmVjdC5oZWlnaHQoKSArIDAuNSk7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbygwLCAt
KHJlY3QuaGVpZ2h0KCkgLSAyKSk7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbygyLCAtMik7Ci0g
ICAgICAgIG91dGxpbmUuckxpbmVUbyhyZWN0LndpZHRoKCkgLSA1LCAwKTsKLSAgICAgICAgb3V0
bGluZS5yTGluZVRvKDIsIDIpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMCwgcmVjdC5oZWln
aHQoKSAtIDIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNvdXRoOgotICAgICAgICBvdXRs
aW5lLm1vdmVUbyhyZWN0LngoKSArIDAuNSwgcmVjdC55KCkgLSAwLjUpOwotICAgICAgICBvdXRs
aW5lLnJMaW5lVG8oMCwgcmVjdC5oZWlnaHQoKSAtIDIpOwotICAgICAgICBvdXRsaW5lLnJMaW5l
VG8oMiwgMik7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbyhyZWN0LndpZHRoKCkgLSA1LCAwKTsK
LSAgICAgICAgb3V0bGluZS5yTGluZVRvKDIsIC0yKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRv
KDAsIC0ocmVjdC5oZWlnaHQoKSAtIDIpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFYXN0
OgotICAgICAgICBvdXRsaW5lLm1vdmVUbyhyZWN0LngoKSAtIDAuNSwgcmVjdC55KCkgKyAwLjUp
OwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8ocmVjdC53aWR0aCgpIC0gMiwgMCk7Ci0gICAgICAg
IG91dGxpbmUuckxpbmVUbygyLCAyKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKDAsIHJlY3Qu
aGVpZ2h0KCkgLSA1KTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKC0yLCAyKTsKLSAgICAgICAg
b3V0bGluZS5yTGluZVRvKC0ocmVjdC53aWR0aCgpIC0gMiksIDApOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFdlc3Q6Ci0gICAgICAgIG91dGxpbmUubW92ZVRvKHJlY3QueCgpICsgcmVjdC53
aWR0aCgpICsgMC41LCByZWN0LnkoKSArIDAuNSk7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbygt
KHJlY3Qud2lkdGgoKSAtIDIpLCAwKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKC0yLCAyKTsK
LSAgICAgICAgb3V0bGluZS5yTGluZVRvKDAsIHJlY3QuaGVpZ2h0KCkgLSA1KTsKLSAgICAgICAg
b3V0bGluZS5yTGluZVRvKDIsIDIpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8ocmVjdC53aWR0
aCgpIC0gMiwgMCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBvdXRsaW5lLmNsb3NlKCk7
Ci0KLSAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7Ci0gICAgcGFpbnQu
c2V0Q29sb3IoYnV0dG9uQ29sb3IpOwotICAgIHBsYXRmb3JtQ29udGV4dC0+ZHJhd1BhdGgob3V0
bGluZSwgcGFpbnQpOwotCi0gICAgcGFpbnQuc2V0QW50aUFsaWFzKHRydWUpOwotICAgIHBhaW50
LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOwotICAgIFNrU2NhbGFyIHRodW1iSFNW
WzNdOwotICAgIFNrQ29sb3JUb0hTVih0aHVtYkluYWN0aXZlQ29sb3IoKSwgdGh1bWJIU1YpOwot
ICAgIHBhaW50LnNldENvbG9yKG91dGxpbmVDb2xvcih0cmFja0hTViwgdGh1bWJIU1YpKTsKLSAg
ICBwbGF0Zm9ybUNvbnRleHQtPmRyYXdQYXRoKG91dGxpbmUsIHBhaW50KTsKLQotICAgIC8vIElm
IHRoZSBidXR0b24gaXMgZGlzYWJsZWQgb3IgcmVhZC1vbmx5LCB0aGUgYXJyb3cgaXMgZHJhd24g
d2l0aCB0aGUgb3V0bGluZSBjb2xvci4KLSAgICBpZiAoc3RhdGVzICYgRW5hYmxlZFN0YXRlICYm
ICEoc3RhdGVzICYgUmVhZE9ubHlTdGF0ZSkpCi0gICAgICAgIHBhaW50LnNldENvbG9yKFNLX0Nv
bG9yQkxBQ0spOwotCi0gICAgcGFpbnQuc2V0QW50aUFsaWFzKGZhbHNlKTsKLSAgICBwYWludC5z
ZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7Ci0KLSAgICBTa1BhdGggcGF0aDsKLSAgICAv
LyBUaGUgY29uc3RhbnRzIGluIHRoaXMgYmxvY2sgb2YgY29kZSBhcmUgaGFuZC10YWlsb3JlZCB0
byBwcm9kdWNlIGdvb2QKLSAgICAvLyBsb29raW5nIGFycm93cyB3aXRob3V0IGFudGktYWxpYXNp
bmcuCi0gICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIE5vcnRoOgotICAgICAgICBw
YXRoLm1vdmVUbyhyZWN0LngoKSArIHdpZHRoTWlkZGxlIC0gNCwgcmVjdC55KCkgKyBsZW5ndGhN
aWRkbGUgKyAyKTsKLSAgICAgICAgcGF0aC5yTGluZVRvKDcsIDApOwotICAgICAgICBwYXRoLnJM
aW5lVG8oLTQsIC00KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTb3V0aDoKLSAgICAgICAg
cGF0aC5tb3ZlVG8ocmVjdC54KCkgKyB3aWR0aE1pZGRsZSAtIDQsIHJlY3QueSgpICsgbGVuZ3Ro
TWlkZGxlIC0gMyk7Ci0gICAgICAgIHBhdGguckxpbmVUbyg3LCAwKTsKLSAgICAgICAgcGF0aC5y
TGluZVRvKC00LCA0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFYXN0OgotICAgICAgICBw
YXRoLm1vdmVUbyhyZWN0LngoKSArIGxlbmd0aE1pZGRsZSAtIDMsIHJlY3QueSgpICsgd2lkdGhN
aWRkbGUgLSA0KTsKLSAgICAgICAgcGF0aC5yTGluZVRvKDAsIDcpOwotICAgICAgICBwYXRoLnJM
aW5lVG8oNCwgLTQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlc3Q6Ci0gICAgICAgIHBh
dGgubW92ZVRvKHJlY3QueCgpICsgbGVuZ3RoTWlkZGxlICsgMSwgcmVjdC55KCkgKyB3aWR0aE1p
ZGRsZSAtIDUpOwotICAgICAgICBwYXRoLnJMaW5lVG8oMCwgOSk7Ci0gICAgICAgIHBhdGguckxp
bmVUbygtNCwgLTQpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcGF0aC5jbG9zZSgpOwot
Ci0gICAgcGxhdGZvcm1Db250ZXh0LT5kcmF3UGF0aChwYXRoLCBwYWludCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5oCShyZXZp
c2lvbiAxMzY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVRoZW1lQ2hyb21pdW1MaW51eC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4X2gKLSNkZWZpbmUgUGxhdGZvcm1UaGVtZUNo
cm9taXVtTGludXhfaAotCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgotI2luY2x1
ZGUgIlNrQ29sb3IuaCIKLSNpbmNsdWRlICJTa1NjYWxhci5oIgotI2luY2x1ZGUgIlRoZW1lVHlw
ZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQbGF0Zm9ybVRoZW1lQ2hyb21p
dW1MaW51eCB7Ci1wdWJsaWM6Ci0gICAgZW51bSBBcnJvd0RpcmVjdGlvbiB7Ci0gICAgICAgIE5v
cnRoLAotICAgICAgICBFYXN0LAotICAgICAgICBTb3V0aCwKLSAgICAgICAgV2VzdCwKLSAgICB9
OwotCi0gICAgc3RhdGljIHZvaWQgc2V0U2Nyb2xsYmFyQ29sb3JzKHVuc2lnbmVkIGluYWN0aXZl
Q29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFjdGl2
ZUNvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0cmFj
a0NvbG9yKTsKLSAgICBzdGF0aWMgdW5zaWduZWQgdGh1bWJJbmFjdGl2ZUNvbG9yKCkgeyByZXR1
cm4gc190aHVtYkluYWN0aXZlQ29sb3I7IH0KLSAgICBzdGF0aWMgdW5zaWduZWQgdGh1bWJBY3Rp
dmVDb2xvcigpIHsgcmV0dXJuIHNfdGh1bWJBY3RpdmVDb2xvcjsgfQotICAgIHN0YXRpYyB1bnNp
Z25lZCB0cmFja0NvbG9yKCkgeyByZXR1cm4gc190cmFja0NvbG9yOyB9Ci0KLSAgICBzdGF0aWMg
U2tDb2xvciBzYXR1cmF0ZUFuZEJyaWdodGVuKGNvbnN0IFNrU2NhbGFyIGhzdlszXSwgU2tTY2Fs
YXIgc2F0dXJhdGVBbW91bnQsIFNrU2NhbGFyIGJyaWdodGVuQW1vdW50KTsKLSAgICBzdGF0aWMg
U2tDb2xvciBvdXRsaW5lQ29sb3IoY29uc3QgU2tTY2FsYXIgaHN2MVszXSwgY29uc3QgU2tTY2Fs
YXIgaHN2MlszXSk7Ci0gICAgc3RhdGljIHZvaWQgcGFpbnRBcnJvd0J1dHRvbihHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBJbnRSZWN0JiwgQXJyb3dEaXJlY3Rpb24sIENvbnRyb2xTdGF0ZXMpOwot
Ci1wcml2YXRlOgotICAgIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4KCkgeyB9Ci0KLSAgICBz
dGF0aWMgdW5zaWduZWQgc190aHVtYkluYWN0aXZlQ29sb3I7Ci0gICAgc3RhdGljIHVuc2lnbmVk
IHNfdGh1bWJBY3RpdmVDb2xvcjsKLSAgICBzdGF0aWMgdW5zaWduZWQgc190cmFja0NvbG9yOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUGxhdGZvcm1UaGVtZUNo
cm9taXVtTGludXhfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwCShyZXZp
c2lvbiAxMzY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxi
YXJUaGVtZUNocm9taXVtTGludXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNocm9t
aXVtTGludXguaCIKLQotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKLSNpbmNsdWRl
ICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKLSNpbmNsdWRlICJTY3JvbGxiYXIuaCIKLSNpbmNsdWRl
IDxwdWJsaWMvUGxhdGZvcm0uaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViUmVjdC5oPgotI2luY2x1
ZGUgPHB1YmxpYy9saW51eC9XZWJUaGVtZUVuZ2luZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLVNjcm9sbGJhclRoZW1lKiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKQotewotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LCB0aGVtZSwg
KCkpOwotICAgIHJldHVybiAmdGhlbWU7Ci19Ci0KLWludCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
TGludXg6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6
ZSkKLXsKLSAgICAvLyBIb3JpeiBhbmQgVmVydCBzY3JvbGxiYXJzIGFyZSB0aGUgc2FtZSB0aGlj
a25lc3MuCi0gICAgSW50U2l6ZSBzY3JvbGxiYXJTaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBh
cnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrKTsKLSAgICByZXR1cm4gc2Nyb2xsYmFyU2l6ZS53aWR0
aCgpOwotfQotCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUcmFja1Bp
ZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUpCi17Ci0gICAgV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUgPSBzY3JvbGxiYXItPmhvdmVyZWRQYXJ0
KCkgPT0gcGFydFR5cGUgPyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZUhvdmVyIDogV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVOb3JtYWw7Ci0gICAgSW50UmVjdCBhbGlnblJlY3Qg
PSB0cmFja1JlY3Qoc2Nyb2xsYmFyLCBmYWxzZSk7Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2lu
ZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7Ci0gICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZh
cyA9IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7Ci0gICAgZXh0cmFQYXJhbXMuc2Ny
b2xsYmFyVHJhY2sudHJhY2tYID0gYWxpZ25SZWN0LngoKTsKLSAgICBleHRyYVBhcmFtcy5zY3Jv
bGxiYXJUcmFjay50cmFja1kgPSBhbGlnblJlY3QueSgpOwotICAgIGV4dHJhUGFyYW1zLnNjcm9s
bGJhclRyYWNrLnRyYWNrV2lkdGggPSBhbGlnblJlY3Qud2lkdGgoKTsKLSAgICBleHRyYVBhcmFt
cy5zY3JvbGxiYXJUcmFjay50cmFja0hlaWdodCA9IGFsaWduUmVjdC5oZWlnaHQoKTsKLSAgICBX
ZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywg
c2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBXZWJLaXQ6
OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNrIDogV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2ssIHN0YXRlLCBXZWJLaXQ6
OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7Ci19Ci0KLXZvaWQgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUxpbnV4OjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0
IHBhcnQpCi17Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydCBwYWludFBhcnQ7Ci0g
ICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUgPSBXZWJLaXQ6OldlYlRoZW1l
RW5naW5lOjpTdGF0ZU5vcm1hbDsKLSAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gZ2Mt
PnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKLSAgICBib29sIGNoZWNrTWluID0gZmFsc2U7
Ci0gICAgYm9vbCBjaGVja01heCA9IGZhbHNlOwotICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0
aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewotICAgICAgICBpZiAocGFydCA9PSBCYWNr
QnV0dG9uU3RhcnRQYXJ0KSB7Ci0gICAgICAgICAgICBwYWludFBhcnQgPSBXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyTGVmdEFycm93OwotICAgICAgICAgICAgY2hlY2tNaW4g
PSB0cnVlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGFpbnRQYXJ0ID0gV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclJpZ2h0QXJyb3c7Ci0gICAgICAgICAgICBj
aGVja01heCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAocGFy
dCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0KSB7Ci0gICAgICAgICAgICBwYWludFBhcnQgPSBXZWJL
aXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyVXBBcnJvdzsKLSAgICAgICAgICAgIGNo
ZWNrTWluID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBhaW50UGFydCA9
IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJEb3duQXJyb3c7Ci0gICAgICAg
ICAgICBjaGVja01heCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKChjaGVja01p
biAmJiAoc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkgPD0gMCkpCi0gICAgICAgIHx8IChjaGVja01h
eCAmJiBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSA9PSBzY3JvbGxiYXItPm1heGltdW0oKSkpIHsK
LSAgICAgICAgc3RhdGUgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChwYXJ0ID09IHNjcm9sbGJhci0+cHJlc3NlZFBhcnQo
KSkKLSAgICAgICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVQcmVz
c2VkOwotICAgICAgICBlbHNlIGlmIChwYXJ0ID09IHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSkK
LSAgICAgICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVIb3ZlcjsK
LSAgICB9Ci0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5w
YWludChjYW52YXMsIHBhaW50UGFydCwgc3RhdGUsIFdlYktpdDo6V2ViUmVjdChyZWN0KSwgMCk7
Ci19Ci0KLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRodW1iKEdyYXBo
aWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCi17Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGU7
Ci0gICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+
Y2FudmFzKCk7Ci0gICAgaWYgKHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSA9PSBUaHVtYlBhcnQp
Ci0gICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVQcmVzc2VkOwot
ICAgIGVsc2UgaWYgKHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCi0gICAg
ICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVIb3ZlcjsKLSAgICBlbHNl
Ci0gICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVOb3JtYWw7Ci0g
ICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52
YXMsIHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckhvcml6b250YWxUaHVtYiA6IFdlYktp
dDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iLCBzdGF0ZSwgV2Vi
S2l0OjpXZWJSZWN0KHJlY3QpLCAwKTsKLX0KLQotYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
TGludXg6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKLXsKLSAgICByZXR1cm4gKGV2dC5zaGlmdEtleSgpICYm
IGV2dC5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB8fCAoZXZ0LmJ1dHRvbigpID09IE1pZGRsZUJ1
dHRvbik7Ci19Ci0KLUludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpidXR0b25T
aXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCi17Ci0gICAgaWYgKHNjcm9sbGJh
ci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgewotICAgICAgICBJbnRTaXpl
IHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPmdldFNp
emUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclVwQXJyb3cpOwotICAgICAg
ICByZXR1cm4gSW50U2l6ZShzaXplLndpZHRoKCksIHNjcm9sbGJhci0+aGVpZ2h0KCkgPCAyICog
c2l6ZS5oZWlnaHQoKSA/IHNjcm9sbGJhci0+aGVpZ2h0KCkgLyAyIDogc2l6ZS5oZWlnaHQoKSk7
Ci0gICAgfQotCi0gICAgLy8gSG9yaXpvbnRhbFNjcm9sbGJhcgotICAgIEludFNpemUgc2l6ZSA9
IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJL
aXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyTGVmdEFycm93KTsKLSAgICByZXR1cm4g
SW50U2l6ZShzY3JvbGxiYXItPndpZHRoKCkgPCAyICogc2l6ZS53aWR0aCgpID8gc2Nyb2xsYmFy
LT53aWR0aCgpIC8gMiA6IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci19Ci0KLWludCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyKQotewotICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9u
KCkgPT0gVmVydGljYWxTY3JvbGxiYXIpIHsKLSAgICAgICAgSW50U2l6ZSBzaXplID0gV2ViS2l0
OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2Vi
VGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iKTsKLSAgICAgICAgcmV0dXJu
IHNpemUuaGVpZ2h0KCk7Ci0gICAgfQotCi0gICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0
Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVF
bmdpbmU6OlBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVGh1bWIpOwotICAgIHJldHVybiBzaXplLndp
ZHRoKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1MaW51eC5oCShyZXZpc2lvbiAxMzY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4X2gKLSNk
ZWZpbmUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4X2gKLQotI2luY2x1ZGUgIlNjcm9sbGJh
clRoZW1lQ2hyb21pdW0uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1MaW51eCA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZUNocm9taXVtIHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3Jv
bGxiYXJDb250cm9sU2l6ZSk7Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBw
YWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0
IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1
bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0
Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAgICAgIHZpcnR1YWwg
SW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7Ci0gICAgICAgIHZpcnR1
YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwotICAgIH07
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwCShy
ZXZpc2lvbiAxMzY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVD
aHJvbWl1bUFuZHJvaWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIFN0cmlu
ZyBSZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZDo6ZXh0cmEKIAogU3RyaW5nIFJlbmRlclRoZW1l
Q2hyb21pdW1BbmRyb2lkOjpleHRyYURlZmF1bHRTdHlsZVNoZWV0KCkKIHsKLSAgICByZXR1cm4g
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpleHRyYURlZmF1bHRTdHlsZVNoZWV0KCkgKworICAg
IHJldHVybiBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6ZXh0cmFEZWZhdWx0U3R5bGVTaGVl
dCgpICsKICAgICAgICAgU3RyaW5nKHRoZW1lQ2hyb21pdW1BbmRyb2lkVXNlckFnZW50U3R5bGVT
aGVldCwgc2l6ZW9mKHRoZW1lQ2hyb21pdW1BbmRyb2lkVXNlckFnZW50U3R5bGVTaGVldCkpOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUFu
ZHJvaWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVDaHJvbWl1bUFuZHJvaWQuaAkocmV2aXNpb24gMTM2NjkxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDExICsyNiwxMSBAQAogI2lmbmRlZiBSZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZF9oCiAj
ZGVmaW5lIFJlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkX2gKIAotI2luY2x1ZGUgIlJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eC5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUmVuZGVyVGhlbWVDaHJvbWl1bUFu
ZHJvaWQgOiBwdWJsaWMgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4IHsKK2NsYXNzIFJlbmRlclRo
ZW1lQ2hyb21pdW1BbmRyb2lkIDogcHVibGljIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKCk7CiAg
ICAgdmlydHVhbCBTdHJpbmcgZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpIE9WRVJSSURFOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21p
dW1MaW51eC5jcHAJKHJldmlzaW9uIDEzNjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM4NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4KLSAqIENvcHlyaWdo
dCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgotICogQ29weXJpZ2h0IChDKSAy
MDA4IENvbGxhYm9yYSBMdGQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlIElu
Yy4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5o
IgotCi0jaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgotI2luY2x1ZGUgIkNvbG9yLmgiCi0j
aW5jbHVkZSAiUGFpbnRJbmZvLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgot
I2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgotI2luY2x1ZGUgIlJlbmRlclByb2dyZXNzLmgiCi0j
aW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCi0jaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKLSNp
bmNsdWRlICJVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIgotI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9y
bS5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+Ci0jaW5jbHVkZSA8cHVibGljL2xpbnV4
L1dlYlRoZW1lRW5naW5lLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdW5zaWduZWQgUmVu
ZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjptX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9
Ci0gICAgMHhmZjFlOTBmZjsKLXVuc2lnbmVkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6bV9h
Y3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgPQotICAgIENvbG9yOjpibGFjazsKLXVuc2ln
bmVkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6bV9pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91
bmRDb2xvciA9Ci0gICAgMHhmZmM4YzhjODsKLXVuc2lnbmVkIFJlbmRlclRoZW1lQ2hyb21pdW1M
aW51eDo6bV9pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvciA9Ci0gICAgMHhmZjMyMzIz
MjsKLQotZG91YmxlIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6bV9jYXJldEJsaW5rSW50ZXJ2
YWw7Ci0KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0QnV0dG9uQmFja2dyb3VuZENvbG9y
ID0gMHhmZmRkZGRkZDsKLQotc3RhdGljIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlIGdl
dFdlYlRoZW1lU3RhdGUoY29uc3QgUmVuZGVyVGhlbWUqIHRoZW1lLCBjb25zdCBSZW5kZXJPYmpl
Y3QqIG8pCi17Ci0gICAgaWYgKCF0aGVtZS0+aXNFbmFibGVkKG8pKQotICAgICAgICByZXR1cm4g
V2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVEaXNhYmxlZDsKLSAgICBpZiAodGhlbWUtPmlz
UHJlc3NlZChvKSkKLSAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRl
UHJlc3NlZDsKLSAgICBpZiAodGhlbWUtPmlzSG92ZXJlZChvKSkKLSAgICAgICAgcmV0dXJuIFdl
YktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlSG92ZXI7Ci0KLSAgICByZXR1cm4gV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6U3RhdGVOb3JtYWw7Ci19Ci0KLVBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+
IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCgpKTsKLX0KLQotLy8gUmVuZGVyVGhlbWU6
OnRoZW1lRm9yUGFnZSBmb3IgQW5kcm9pZCBpcyBkZWZpbmVkIGluIFJlbmRlclRoZW1lQ2hyb21p
dW1BbmRyb2lkLmNwcC4KLSNpZiAhT1MoQU5EUk9JRCkKLVBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+
IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoUGFnZSogcGFnZSkKLXsKLSAgICBzdGF0aWMgUmVu
ZGVyVGhlbWUqIHJ0ID0gUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpjcmVhdGUoKS5sZWFrUmVm
KCk7Ci0gICAgcmV0dXJuIHJ0OwotfQotI2VuZGlmCi0KLVJlbmRlclRoZW1lQ2hyb21pdW1MaW51
eDo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCkKLXsKLSAgICBtX2NhcmV0QmxpbmtJbnRlcnZh
bCA9IFJlbmRlclRoZW1lOjpjYXJldEJsaW5rSW50ZXJ2YWwoKTsKLX0KLQotUmVuZGVyVGhlbWVD
aHJvbWl1bUxpbnV4Ojp+UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCkKLXsKLX0KLQotQ29sb3Ig
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzeXN0ZW1Db2xvcihpbnQgY3NzVmFsdWVJZCkgY29u
c3QKLXsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3IgbGludXhCdXR0b25HcmF5Q29sb3IoMHhmZmRk
ZGRkZCk7Ci0KLSAgICBpZiAoY3NzVmFsdWVJZCA9PSBDU1NWYWx1ZUJ1dHRvbmZhY2UpCi0gICAg
ICAgIHJldHVybiBsaW51eEJ1dHRvbkdyYXlDb2xvcjsKLSAgICByZXR1cm4gUmVuZGVyVGhlbWU6
OnN5c3RlbUNvbG9yKGNzc1ZhbHVlSWQpOwotfQotCi1TdHJpbmcgUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4OjpleHRyYURlZmF1bHRTdHlsZVNoZWV0KCkKLXsKLSAgICByZXR1cm4gUmVuZGVyVGhl
bWVDaHJvbWl1bVNraWE6OmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKSArCi0gICAgICAgICAgIFN0
cmluZyh0aGVtZUNocm9taXVtTGludXhVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YodGhlbWVD
aHJvbWl1bUxpbnV4VXNlckFnZW50U3R5bGVTaGVldCkpOwotfQotCi1ib29sIFJlbmRlclRoZW1l
Q2hyb21pdW1MaW51eDo6Y29udHJvbFN1cHBvcnRzVGludHMoY29uc3QgUmVuZGVyT2JqZWN0KiBv
KSBjb25zdAotewotICAgIHJldHVybiBpc0VuYWJsZWQobyk7Ci19Ci0KLUNvbG9yIFJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eDo6YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIENvbG9yKDB4MjgsIDB4MjgsIDB4MjgpOwotfQotCi1Db2xv
ciBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3Jv
dW5kQ29sb3IoKSBjb25zdAotewotICAgIHJldHVybiBDb2xvcjo6YmxhY2s7Ci19Ci0KLUNvbG9y
IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6aW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gQ29sb3IoMHhjOCwgMHhjOCwgMHhjOCk7
Ci19Ci0KLUNvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6aW5hY3RpdmVMaXN0Qm94U2Vs
ZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gQ29sb3IoMHgzMiwg
MHgzMiwgMHgzMik7Ci19Ci0KLUNvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGxhdGZv
cm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAotewotICAgIHJldHVybiBt
X2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcjsKLX0KLQotQ29sb3IgUmVuZGVyVGhlbWVD
aHJvbWl1bUxpbnV4OjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcjsK
LX0KLQotQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwbGF0Zm9ybUFjdGl2ZVNlbGVj
dGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYWN0aXZlU2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yOwotfQotCi1Db2xvciBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6
OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAotewotICAg
IHJldHVybiBtX2luYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwotfQotCi0jaWYgRU5B
QkxFKERBVEFMSVNUX0VMRU1FTlQpCi1JbnRTaXplIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6
c2xpZGVyVGlja1NpemUoKSBjb25zdAotewotICAgIHJldHVybiBJbnRTaXplKDEsIDYpOwotfQot
Ci1pbnQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzbGlkZXJUaWNrT2Zmc2V0RnJvbVRyYWNr
Q2VudGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gLTE2OwotfQotI2VuZGlmCi0KLXZvaWQgUmVu
ZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUq
IHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAotewotICAgIEludFNpemUgc2l6ZSA9IFdl
YktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6
OldlYlRoZW1lRW5naW5lOjpQYXJ0U2xpZGVyVGh1bWIpOwotCi0gICAgaWYgKHN0eWxlLT5hcHBl
YXJhbmNlKCkgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCkgewotICAgICAgICBzdHlsZS0+
c2V0V2lkdGgoTGVuZ3RoKHNpemUud2lkdGgoKSwgRml4ZWQpKTsKLSAgICAgICAgc3R5bGUtPnNl
dEhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKLSAgICB9IGVsc2UgaWYgKHN0
eWxlLT5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQpIHsKLSAgICAgICAg
c3R5bGUtPnNldFdpZHRoKExlbmd0aChzaXplLmhlaWdodCgpLCBGaXhlZCkpOwotICAgICAgICBz
dHlsZS0+c2V0SGVpZ2h0KExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7Ci0gICAgfSBlbHNl
Ci0gICAgICAgIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RTbGlkZXJUaHVtYlNpemUo
c3R5bGUsIGVsZW1lbnQpOwotfQotCi1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c3Vw
cG9ydHNDb250cm9sVGludHMoKSBjb25zdAotewotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lk
IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c2V0Q2FyZXRCbGlua0ludGVydmFsKGRvdWJsZSBp
bnRlcnZhbCkKLXsKLSAgICBtX2NhcmV0QmxpbmtJbnRlcnZhbCA9IGludGVydmFsOwotfQotCi1k
b3VibGUgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpjYXJldEJsaW5rSW50ZXJ2YWxJbnRlcm5h
bCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2FyZXRCbGlua0ludGVydmFsOwotfQotCi12b2lk
IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c2V0U2VsZWN0aW9uQ29sb3JzKAotICAgIHVuc2ln
bmVkIGFjdGl2ZUJhY2tncm91bmRDb2xvciwKLSAgICB1bnNpZ25lZCBhY3RpdmVGb3JlZ3JvdW5k
Q29sb3IsCi0gICAgdW5zaWduZWQgaW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IsCi0gICAgdW5zaWdu
ZWQgaW5hY3RpdmVGb3JlZ3JvdW5kQ29sb3IpCi17Ci0gICAgbV9hY3RpdmVTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IgPSBhY3RpdmVCYWNrZ3JvdW5kQ29sb3I7Ci0gICAgbV9hY3RpdmVTZWxlY3Rp
b25Gb3JlZ3JvdW5kQ29sb3IgPSBhY3RpdmVGb3JlZ3JvdW5kQ29sb3I7Ci0gICAgbV9pbmFjdGl2
ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9IGluYWN0aXZlQmFja2dyb3VuZENvbG9yOwotICAg
IG1faW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgPSBpbmFjdGl2ZUZvcmVncm91bmRD
b2xvcjsKLX0KLQotYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50Q2hlY2tib3go
UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3Qp
Ci17Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7
Ci0gICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCktPmNhbnZhcygpOwotICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5jaGVja2VkID0gaXNDaGVj
a2VkKG8pOwotICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5pbmRldGVybWluYXRlID0gaXNJbmRldGVy
bWluYXRlKG8pOwotCi0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2lu
ZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRDaGVja2JveCwg
Z2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0cmFQ
YXJhbXMpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBSZW5kZXJUaGVtZUNocm9taXVt
TGludXg6OnNldENoZWNrYm94U2l6ZShSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0Ci17Ci0gICAg
Ly8gSWYgdGhlIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGJvdGggc3BlY2lmaWVkLCB0aGVuIHdlIGhh
dmUgbm90aGluZyB0byBkby4KLSAgICBpZiAoIXN0eWxlLT53aWR0aCgpLmlzSW50cmluc2ljT3JB
dXRvKCkgJiYgIXN0eWxlLT5oZWlnaHQoKS5pc0F1dG8oKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2lu
ZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRDaGVja2JveCk7Ci0gICAg
c2V0U2l6ZUlmQXV0byhzdHlsZSwgc2l6ZSk7Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4OjpwYWludFJhZGlvKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBj
b25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OkV4dHJh
UGFyYW1zIGV4dHJhUGFyYW1zOwotICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKLSAgICBleHRyYVBhcmFtcy5idXR0
b24uY2hlY2tlZCA9IGlzQ2hlY2tlZChvKTsKLQotICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJl
bnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5l
OjpQYXJ0UmFkaW8sIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6V2ViUmVjdChy
ZWN0KSwgJmV4dHJhUGFyYW1zKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25z
dAotewotICAgIC8vIElmIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBib3RoIHNwZWNpZmllZCwg
dGhlbiB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8uCi0gICAgaWYgKCFzdHlsZS0+d2lkdGgoKS5pc0lu
dHJpbnNpY09yQXV0bygpICYmICFzdHlsZS0+aGVpZ2h0KCkuaXNBdXRvKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEludFNpemUgc2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+
dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0UmFkaW8p
OwotICAgIHNldFNpemVJZkF1dG8oc3R5bGUsIHNpemUpOwotfQotCi1ib29sIFJlbmRlclRoZW1l
Q2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludElu
Zm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2lu
ZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7Ci0gICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZh
cyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwotICAgIGV4dHJhUGFy
YW1zLmJ1dHRvbi5pc0RlZmF1bHQgPSBpc0RlZmF1bHQobyk7Ci0gICAgZXh0cmFQYXJhbXMuYnV0
dG9uLmhhc0JvcmRlciA9IHRydWU7Ci0gICAgZXh0cmFQYXJhbXMuYnV0dG9uLmJhY2tncm91bmRD
b2xvciA9IGRlZmF1bHRCdXR0b25CYWNrZ3JvdW5kQ29sb3I7Ci0gICAgaWYgKG8tPmhhc0JhY2tn
cm91bmQoKSkKLSAgICAgICAgZXh0cmFQYXJhbXMuYnV0dG9uLmJhY2tncm91bmRDb2xvciA9IG8t
PnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cikucmdiKCk7Ci0KLSAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5l
KCktPnBhaW50KGNhbnZhcywgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydEJ1dHRvbiwgZ2V0
V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJh
bXMpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGlu
dXg6OnBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBj
b25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIC8vIFdlYlRoZW1lRW5naW5lIGRvZXMgbm90IGhh
bmRsZSBib3JkZXIgcm91bmRlZCBjb3JuZXIgYW5kIGJhY2tncm91bmQgaW1hZ2UKLSAgICAvLyBz
byByZXR1cm4gdHJ1ZSB0byBkcmF3IENTUyBib3JkZXIgYW5kIGJhY2tncm91bmQuCi0gICAgaWYg
KG8tPnN0eWxlKCktPmhhc0JvcmRlclJhZGl1cygpIHx8IG8tPnN0eWxlKCktPmhhc0JhY2tncm91
bmRJbWFnZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIENvbnRyb2xQYXJ0IHBhcnQg
PSBvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCk7Ci0KLSAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5l
OjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKLSAgICBleHRyYVBhcmFtcy50ZXh0RmllbGQuaXNU
ZXh0QXJlYSA9IHBhcnQgPT0gVGV4dEFyZWFQYXJ0OwotICAgIGV4dHJhUGFyYW1zLnRleHRGaWVs
ZC5pc0xpc3Rib3ggPSBwYXJ0ID09IExpc3Rib3hQYXJ0OwotCi0gICAgV2ViS2l0OjpXZWJDYW52
YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwotCi0g
ICAgLy8gRmFsbGJhY2sgdG8gd2hpdGUgaWYgdGhlIHNwZWNpZmllZCBjb2xvciBvYmplY3QgaXMg
aW52YWxpZC4KLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OndoaXRlKTsKLSAgICBp
ZiAoby0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKS5pc1ZhbGlkKCkpCi0gICAgICAgIGJhY2tncm91bmRDb2xvciA9IG8tPnN0eWxlKCkt
PnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0gICAg
ZXh0cmFQYXJhbXMudGV4dEZpZWxkLmJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvci5y
Z2IoKTsKLQotICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+
cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0VGV4dEZpZWxkLCBnZXRX
ZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFt
cyk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51
eDo6cGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29u
c3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBpZiAoIW8tPmlzQm94KCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGNvbnN0IGludCByaWdodCA9IHJlY3QueCgpICsgcmVjdC53aWR0aCgp
OwotICAgIGNvbnN0IGludCBtaWRkbGUgPSByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkgLyAyOwot
Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7Ci0g
ICAgZXh0cmFQYXJhbXMubWVudUxpc3QuYXJyb3dYID0gKG8tPnN0eWxlKCktPmRpcmVjdGlvbigp
ID09IFJUTCkgPyByZWN0LngoKSArIDcgOiByaWdodCAtIDEzOwotICAgIGV4dHJhUGFyYW1zLm1l
bnVMaXN0LmFycm93WSA9IG1pZGRsZTsKLSAgICBjb25zdCBSZW5kZXJCb3gqIGJveCA9IHRvUmVu
ZGVyQm94KG8pOwotICAgIC8vIE1hdGNoIENocm9taXVtIFdpbiBiZWhhdmlvdXIgb2Ygc2hvd2lu
ZyBhbGwgYm9yZGVycyBpZiBhbnkgYXJlIHNob3duLgotICAgIGV4dHJhUGFyYW1zLm1lbnVMaXN0
Lmhhc0JvcmRlciA9IGJveC0+Ym9yZGVyUmlnaHQoKSB8fCBib3gtPmJvcmRlckxlZnQoKSB8fCBi
b3gtPmJvcmRlclRvcCgpIHx8IGJveC0+Ym9yZGVyQm90dG9tKCk7Ci0gICAgZXh0cmFQYXJhbXMu
bWVudUxpc3QuaGFzQm9yZGVyUmFkaXVzID0gby0+c3R5bGUoKS0+aGFzQm9yZGVyUmFkaXVzKCk7
Ci0gICAgLy8gRmFsbGJhY2sgdG8gdHJhbnNwYXJlbnQgaWYgdGhlIHNwZWNpZmllZCBjb2xvciBv
YmplY3QgaXMgaW52YWxpZC4KLSAgICBleHRyYVBhcmFtcy5tZW51TGlzdC5iYWNrZ3JvdW5kQ29s
b3IgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7Ci0gICAgaWYgKG8tPmhhc0JhY2tncm91bmQoKSkKLSAg
ICAgICAgZXh0cmFQYXJhbXMubWVudUxpc3QuYmFja2dyb3VuZENvbG9yID0gby0+c3R5bGUoKS0+
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5yZ2IoKTsK
LQotICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5jYW52YXMoKTsKLQotICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhl
bWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0TWVu
dUxpc3QsIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6V2ViUmVjdChyZWN0KSwg
JmV4dHJhUGFyYW1zKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVD
aHJvbWl1bUxpbnV4OjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFp
bnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIFdlYktpdDo6V2ViVGhlbWVF
bmdpbmU6OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOwotICAgIFdlYktpdDo6V2ViQ2FudmFzKiBj
YW52YXMgPSBpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKLSAgICBleHRy
YVBhcmFtcy5zbGlkZXIudmVydGljYWwgPSBvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0gU2xp
ZGVyVmVydGljYWxQYXJ0OwotCi0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVt
ZUVuZ2luZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTbGlk
ZXJUcmFjaywgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3Qp
LCAmZXh0cmFQYXJhbXMpOwotCi0jaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0gICAgcGFp
bnRTbGlkZXJUaWNrcyhvLCBpLCByZWN0KTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRTbGlkZXJUaHVtYihSZW5k
ZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKLXsK
LSAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKLSAg
ICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+Y2FudmFzKCk7Ci0gICAgZXh0cmFQYXJhbXMuc2xpZGVyLnZlcnRpY2FsID0gby0+c3R5bGUo
KS0+YXBwZWFyYW5jZSgpID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0OwotICAgIGV4dHJhUGFy
YW1zLnNsaWRlci5pbkRyYWcgPSBpc1ByZXNzZWQobyk7Ci0KLSAgICBXZWJLaXQ6OlBsYXRmb3Jt
OjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2ViS2l0OjpXZWJUaGVt
ZUVuZ2luZTo6UGFydFNsaWRlclRodW1iLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJL
aXQ6OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci12b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5
bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Ci17
Ci0gICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVu
Z2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRJbm5lclNwaW5CdXR0
b24pOwotCi0gICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7
Ci0gICAgc3R5bGUtPnNldE1pbldpZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7Ci19
Ci0KLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludElubmVyU3BpbkJ1dHRvbihS
ZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkK
LXsKLSAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsK
LSAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKS0+Y2FudmFzKCk7Ci0gICAgZXh0cmFQYXJhbXMuaW5uZXJTcGluLnNwaW5VcCA9IChjb250
cm9sU3RhdGVzRm9yUmVuZGVyZXIobykgJiBTcGluVXBTdGF0ZSk7Ci0gICAgZXh0cmFQYXJhbXMu
aW5uZXJTcGluLnJlYWRPbmx5ID0gaXNSZWFkT25seUNvbnRyb2wobyk7Ci0KLSAgICBXZWJLaXQ6
OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6UGFydElubmVyU3BpbkJ1dHRvbiwgZ2V0V2ViVGhlbWVTdGF0ZSh0
aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMpOwotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotI2lmIEVOQUJMRShQUk9HUkVTU19FTEVNRU5UKQotCi1ib29sIFJlbmRl
clRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBpZiAoIW8tPmlz
UHJvZ3Jlc3MoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBSZW5kZXJQcm9ncmVzcyog
cmVuZGVyUHJvZ3Jlc3MgPSB0b1JlbmRlclByb2dyZXNzKG8pOwotICAgIEludFJlY3QgdmFsdWVS
ZWN0ID0gcHJvZ3Jlc3NWYWx1ZVJlY3RGb3IocmVuZGVyUHJvZ3Jlc3MsIHJlY3QpOwotCi0gICAg
V2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7Ci0gICAgZXh0
cmFQYXJhbXMucHJvZ3Jlc3NCYXIuZGV0ZXJtaW5hdGUgPSByZW5kZXJQcm9ncmVzcy0+aXNEZXRl
cm1pbmF0ZSgpOwotICAgIGV4dHJhUGFyYW1zLnByb2dyZXNzQmFyLnZhbHVlUmVjdFggPSB2YWx1
ZVJlY3QueCgpOwotICAgIGV4dHJhUGFyYW1zLnByb2dyZXNzQmFyLnZhbHVlUmVjdFkgPSB2YWx1
ZVJlY3QueSgpOwotICAgIGV4dHJhUGFyYW1zLnByb2dyZXNzQmFyLnZhbHVlUmVjdFdpZHRoID0g
dmFsdWVSZWN0LndpZHRoKCk7Ci0gICAgZXh0cmFQYXJhbXMucHJvZ3Jlc3NCYXIudmFsdWVSZWN0
SGVpZ2h0ID0gdmFsdWVSZWN0LmhlaWdodCgpOwotCi0gICAgRGlyZWN0aW9uRmxpcHBpbmdTY29w
ZSBzY29wZShvLCBpLCByZWN0KTsKLSAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5j
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7Ci0gICAgV2ViS2l0OjpQbGF0Zm9y
bTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2ViVGhl
bWVFbmdpbmU6OlBhcnRQcm9ncmVzc0JhciwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2Vi
S2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMpOwotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotI2VuZGlmCi0KLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzaG91bGRPcGVuUGlj
a2VyV2l0aEY0S2V5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q2hyb21pdW1MaW51eC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUNocm9taXVtTGludXguaAkocmV2aXNpb24gMTM2NjkxKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDExMiArMCwwIEBACi0vKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktp
dCBwcm9qZWN0LgotICoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
LgotICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5j
b20KLSAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgotICog
Q29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+Ci0gKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlLCBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZu
ZGVmIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eF9oCi0jZGVmaW5lIFJlbmRlclRoZW1lQ2hyb21p
dW1MaW51eF9oCi0KLSNpbmNsdWRlICJSZW5kZXJUaGVtZUNocm9taXVtU2tpYS5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBSZW5kZXJUaGVtZUNocm9taXVtTGludXggOiBw
dWJsaWMgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOwotICAgICAgICB2aXJ0dWFsIFN0
cmluZyBleHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7Ci0KLSAgICAgICAgdmlydHVhbCBDb2xvciBz
eXN0ZW1Db2xvcihpbnQgY3NzVmFsaWRJZCkgY29uc3Q7Ci0KLSAgICAgICAgLy8gQSBtZXRob2Qg
YXNraW5nIGlmIHRoZSBjb250cm9sIGNoYW5nZXMgaXRzIHRpbnQgd2hlbiB0aGUgd2luZG93IGhh
cyBmb2N1cyBvciBub3QuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBjb250cm9sU3VwcG9ydHNUaW50
cyhjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKLQotICAgICAgICAvLyBMaXN0IEJveCBzZWxl
Y3Rpb24gY29sb3IKLSAgICAgICAgdmlydHVhbCBDb2xvciBhY3RpdmVMaXN0Qm94U2VsZWN0aW9u
QmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgQ29sb3IgYWN0aXZlTGlz
dEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIENv
bG9yIGluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0OwotICAg
ICAgICB2aXJ0dWFsIENvbG9yIGluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xv
cigpIGNvbnN0OwotCi0gICAgICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVTZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9y
bUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1
YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdDsK
LSAgICAgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3Vu
ZENvbG9yKCkgY29uc3Q7Ci0KLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICAgICAg
dmlydHVhbCBJbnRTaXplIHNsaWRlclRpY2tTaXplKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgICAg
IHZpcnR1YWwgaW50IHNsaWRlclRpY2tPZmZzZXRGcm9tVHJhY2tDZW50ZXIoKSBjb25zdCBPVkVS
UklERTsKLSNlbmRpZgotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTaXpl
KFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwotCi0gICAgICAgIHN0YXRpYyB2b2lkIHNl
dENhcmV0QmxpbmtJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpOwotICAgICAgICB2aXJ0dWFsIGRv
dWJsZSBjYXJldEJsaW5rSW50ZXJ2YWxJbnRlcm5hbCgpIGNvbnN0OwotCi0gICAgICAgIHZpcnR1
YWwgYm9vbCBwYWludENoZWNrYm94KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldENoZWNrYm94U2l6ZShSZW5k
ZXJTdHlsZSopIGNvbnN0OwotCi0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFJhZGlvKFJlbmRl
ck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIHNldFJhZGlvU2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OwotCi0gICAgICAgIHZp
cnR1YWwgYm9vbCBwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRGaWVsZChSZW5k
ZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZp
cnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVyVHJhY2so
UmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgICAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdElu
bmVyU3BpbkJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQq
KSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBib29sIHBhaW50SW5uZXJTcGluQnV0dG9uKFJlbmRl
ck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLQotICAgICAgICB2
aXJ0dWFsIGJvb2wgcG9wc01lbnVCeVNwYWNlT3JSZXR1cm4oKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9Ci0KLSNpZiBFTkFCTEUoUFJPR1JFU1NfRUxFTUVOVCkKLSAgICAgICAgdmly
dHVhbCBib29sIHBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpOwotI2VuZGlmCi0KLSAgICAgICAgdmlydHVhbCBib29sIHNob3Vs
ZE9wZW5QaWNrZXJXaXRoRjRLZXkoKSBjb25zdCBPVkVSUklERTsKLQotICAgICAgICBzdGF0aWMg
dm9pZCBzZXRTZWxlY3Rpb25Db2xvcnModW5zaWduZWQgYWN0aXZlQmFja2dyb3VuZENvbG9yLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYWN0aXZlRm9y
ZWdyb3VuZENvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbmFjdGl2ZUZvcmVncm91bmRDb2xvcik7Ci0KLSAgICBw
cm90ZWN0ZWQ6Ci0gICAgICAgIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCgpOwotICAgICAgICB2
aXJ0dWFsIH5SZW5kZXJUaGVtZUNocm9taXVtTGludXgoKTsKLQotICAgIHByaXZhdGU6Ci0gICAg
ICAgIC8vIEEgZ2VuZXJhbCBtZXRob2QgYXNraW5nIGlmIGFueSBjb250cm9sIHRpbnRpbmcgaXMg
c3VwcG9ydGVkIGF0IGFsbC4KLSAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJvbFRp
bnRzKCkgY29uc3Q7Ci0KLSAgICAgICAgc3RhdGljIGRvdWJsZSBtX2NhcmV0QmxpbmtJbnRlcnZh
bDsKLQotICAgICAgICBzdGF0aWMgdW5zaWduZWQgbV9hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3I7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBtX2FjdGl2ZVNlbGVjdGlvbkZvcmVncm91
bmRDb2xvcjsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIG1faW5hY3RpdmVTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3I7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBtX2luYWN0aXZlU2VsZWN0aW9u
Rm9yZWdyb3VuZENvbG9yOwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkocmV2aXNpb24gMTM2NjkxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0xMi0wNCAgU2NvdHQg
VmlvbGV0ICA8c2t5QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBs
aW51eCB0aGVtZSByZWxhdGVkIGZpbGVzIGFuZCBzd2l0Y2ggdG8gZGVmYXVsdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzODk3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGludXggdGhlbWUgcmVsYXRl
ZCBmaWxlcyBhcmUgbm93IG5hbWVkIERlZmF1bHQuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgor
ICAgICAgICAqIHB1YmxpYy9saW51eC9XZWJSZW5kZXJUaGVtZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHB1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJUaGVtZUVuZ2luZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpzZXRTY3JvbGxiYXJDb2xvcnMpOiBDbGVhbnVwIGlmZGVmcy4KKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OnNldFNlbGVjdGlvbkNvbG9ycyk6IENsZWFudXAgaWZkZWZzLgorICAgICAg
ICAqIHNyYy9saW51eC9XZWJSZW5kZXJUaGVtZS5jcHA6IFJlbW92ZWQuCisKIDIwMTItMTItMDUg
IFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZC4gIFJvbGxlZCBERVBTLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAko
cmV2aXNpb24gMTM2NjkxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3
b3JraW5nIGNvcHkpCkBAIC00MzksNyArNDM5LDYgQEAKICAgICAgICAgICAgICAgICAnc3JjL2xp
bnV4L1dlYkZvbnRJbmZvLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9saW51eC9XZWJGb250
UmVuZGVyaW5nLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9saW51eC9XZWJGb250UmVuZGVy
U3R5bGUuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL2xpbnV4L1dlYlJlbmRlclRoZW1lLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy94MTEvV2ViU2NyZWVuSW5mb0ZhY3RvcnkuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5tbScsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9tYWMvV2ViU2NyZWVuSW5mb0ZhY3RvcnkubW0nLApAQCAtODQ2LDEw
ICs4NDUsNiBAQAogICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgIH1dLAog
ICAgICAgICAgICAgICAgIFsndXNlX2RlZmF1bHRfcmVuZGVyX3RoZW1lPT0xJywgewotICAgICAg
ICAgICAgICAgICAgICAnc291cmNlcy8nOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICBbJ2V4
Y2x1ZGUnLCAnc3JjL2xpbnV4L1dlYlJlbmRlclRoZW1lLmNwcCddLAotICAgICAgICAgICAgICAg
ICAgICAgICAgWydleGNsdWRlJywgJ3B1YmxpYy9saW51eC9XZWJSZW5kZXJUaGVtZS5oJ10sCi0g
ICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMn
OiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAncHVibGljL2RlZmF1bHQnLAogICAgICAgICAg
ICAgICAgICAgICBdLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgv
V2ViUmVuZGVyVGhlbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9saW51eC9XZWJSZW5kZXJUaGVtZS5oCShyZXZpc2lvbiAxMzY2OTEpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJSZW5kZXJUaGVtZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9lbCBTdGFu
bGV5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViUmVuZGVyVGhlbWVfaAotI2RlZmluZSBX
ZWJSZW5kZXJUaGVtZV9oCi0KLSNpbmNsdWRlICIuLi9wbGF0Zm9ybS9XZWJDb21tb24uaCIKLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIFNldCBjYXJldCBibGluayBpbnRlcnZhbCBmb3IgdGV4
dCBpbnB1dCBhcmVhcy4KLVdFQktJVF9FWFBPUlQgdm9pZCBzZXRDYXJldEJsaW5rSW50ZXJ2YWwo
ZG91YmxlKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXgvV2ViVGhlbWVFbmdpbmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51
eC9XZWJUaGVtZUVuZ2luZS5oCShyZXZpc2lvbiAxMzY2OTEpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJUaGVtZUVuZ2luZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiLi4vLi4vLi4vLi4vLi4vUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiAxMzY2OTEpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE3OSwxMCArMTc5LDYgQEAKICNpbmNsdWRlICJSZW5kZXJUaGVtZUNocm9taXVtV2luLmgiCiAj
ZW5kaWYKICNlbHNlCi0jaWYgT1MoVU5JWCkgJiYgIU9TKERBUldJTikgJiYgIUVOQUJMRShERUZB
VUxUX1JFTkRFUl9USEVNRSkKLSNpbmNsdWRlICJQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5o
IgotI2luY2x1ZGUgIlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oIgotI2VuZGlmCiAjaW5jbHVk
ZSAiUmVuZGVyVGhlbWUuaCIKICNlbmRpZgogCkBAIC0zNTcyLDggKzM1NjgsNiBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpzZXRTY3JvbGxiYXJDb2xvcnModW5zCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgdHJhY2tDb2xvcikgewogI2lmIEVOQUJMRShERUZBVUxU
X1JFTkRFUl9USEVNRSkKICAgICBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0OjpzZXRTY3Jv
bGxiYXJDb2xvcnMoaW5hY3RpdmVDb2xvciwgYWN0aXZlQ29sb3IsIHRyYWNrQ29sb3IpOwotI2Vs
aWYgT1MoVU5JWCkgJiYgIU9TKERBUldJTikgJiYgIU9TKEFORFJPSUQpCi0gICAgUGxhdGZvcm1U
aGVtZUNocm9taXVtTGludXg6OnNldFNjcm9sbGJhckNvbG9ycyhpbmFjdGl2ZUNvbG9yLCBhY3Rp
dmVDb2xvciwgdHJhY2tDb2xvcik7CiAjZW5kaWYKIH0KIApAQCAtMzU4NCw5ICszNTc4LDYgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6c2V0U2VsZWN0aW9uQ29sb3JzKHVucwogI2lmIEVOQUJMRShERUZB
VUxUX1JFTkRFUl9USEVNRSkKICAgICBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6c2V0U2Vs
ZWN0aW9uQ29sb3JzKGFjdGl2ZUJhY2tncm91bmRDb2xvciwgYWN0aXZlRm9yZWdyb3VuZENvbG9y
LCBpbmFjdGl2ZUJhY2tncm91bmRDb2xvciwgaW5hY3RpdmVGb3JlZ3JvdW5kQ29sb3IpOwogICAg
IHRoZW1lKCktPnBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7Ci0jZWxpZiBPUyhVTklYKSAmJiAh
T1MoREFSV0lOKSAmJiAhT1MoQU5EUk9JRCkKLSAgICBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6
OnNldFNlbGVjdGlvbkNvbG9ycyhhY3RpdmVCYWNrZ3JvdW5kQ29sb3IsIGFjdGl2ZUZvcmVncm91
bmRDb2xvciwgaW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IsIGluYWN0aXZlRm9yZWdyb3VuZENvbG9y
KTsKLSAgICB0aGVtZSgpLT5wbGF0Zm9ybUNvbG9yc0RpZENoYW5nZSgpOwogI2VuZGlmCiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYlJlbmRlclRoZW1lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eC9XZWJSZW5k
ZXJUaGVtZS5jcHAJKHJldmlzaW9uIDEzNjY5MSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL2xpbnV4L1dlYlJlbmRlclRoZW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0NyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEpvZWwgU3RhbmxleS4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViUmVuZGVyVGhlbWUuaCIKLQot
I2luY2x1ZGUgIlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oIgotI2luY2x1ZGUgIldlYlZpZXcu
aCIKLQotdXNpbmcgV2ViQ29yZTo6UmVuZGVyVGhlbWU7Ci11c2luZyBXZWJDb3JlOjpSZW5kZXJU
aGVtZUNocm9taXVtTGludXg7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIHNldENhcmV0
QmxpbmtJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCi17Ci0gICAgUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4OjpzZXRDYXJldEJsaW5rSW50ZXJ2YWwoaW50ZXJ2YWwpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEzNjY5MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTEyLTA0ICBTY290dCBWaW9sZXQgIDxza3lAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIGxpbnV4IHRoZW1lIHJlbGF0
ZWQgZmlsZXMgYW5kIHN3aXRjaCB0byBkZWZhdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM4OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9i
dWlsZF91bml0dGVzdC5weToKKyAgICAgICAgKFNob3VsZEJ1aWxkVGVzdCk6IGxpbnV4LT5kZWZh
dWx0CisKIDIwMTItMTItMDUgIEp1c3NpIEt1a2tvbmVuICA8anVzc2kua3Vra29uZW5AaW50ZWwu
Y29tPgogCiAgICAgICAgIFtXSzJdIEluamVjdGVkQnVuZGxlIHNob3VsZCBjaGVjayBJbnRlbnQg
dXJsIGZvciBudWxsCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcv
YnVpbGRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY29uZmlnL2J1aWxkX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxMzY2OTEpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvYnVpbGRfdW5pdHRlc3QucHkJKHdvcmtp
bmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgU2hvdWxkQnVpbGRUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKQogICAgICAgICAoWyJTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvZm9vIl0sIFsibWFjLWxlb3BhcmQiLCAibWFjLWxpb24iLCAgIm1hYy1tb3VudGFpbmxpb24i
LCAibWFjLXNub3dsZW9wYXJkIl0pLAogICAgICAgICAoWyJTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93eC93eGNvZGUvd2luL2ZvbyJdLCBbXSksCiAgICAgICAgIChbIlNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSIsICJTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMuaCJdLCBbIm1hYy1sZW9wYXJkIiwgIm1hYy1saW9uIiwgICJtYWMtbW91bnRh
aW5saW9uIiwgIm1hYy1zbm93bGVvcGFyZCJdKSwKLSAgICAgICAgKFsiU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oIl0sIFsiY2hyb21pdW0tbGludXgi
XSksCisgICAgICAgIChbIlNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9t
aXVtRGVmYXVsdC5oIl0sIFsiY2hyb21pdW0tbGludXgiXSksCiAgICAgICAgIChbIlNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmgiXSwgW10pLAogICAgICAgICAoWyJU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9MZWFrc1ZpZXdlci9MZWFrc1ZpZXdlci5qcyJdLCBbXSksCiAgICAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178229</attachid>
            <date>2012-12-07 09:36:45 -0800</date>
            <delta_ts>2012-12-07 13:35:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103897-20121207093408.patch</filename>
            <type>text/plain</type>
            <size>67092</size>
            <attacher name="Scott Violet">sky</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2OTU3KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTEyLTA3ICBTY290
dCBWaW9sZXQgIDxza3lAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVtb3Zl
IGxpbnV4IHRoZW1lIHJlbGF0ZWQgZmlsZXMgYW5kIHN3aXRjaCB0byBkZWZhdWx0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM4OTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6
IFJlbW92ZSBXZWJUaGVtZUVuZ2luZS5oCisgICAgICAgICogY2hyb21pdW0vcHVibGljL2xpbnV4
L1dlYlRoZW1lRW5naW5lLmg6IFJlbW92ZWQuCisKIDIwMTItMTItMDYgIFNhbWkgS3lvc3RpbGEg
IDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBJbnRyb2R1Y2Ug
c2V0dGluZyBmb3IgbG93IGxhdGVuY3kgcmVuZGVyaW5nCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0v
UGxhdGZvcm0uZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lw
aQkocmV2aXNpb24gMTM2OTU3KQorKysgU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkJKHdv
cmtpbmcgY29weSkKQEAgLTE1Miw3ICsxNTIsNiBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9saW51eC9XZWJGb250SW5mby5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMv
bGludXgvV2ViRm9udFJlbmRlclN0eWxlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1Ymxp
Yy9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJs
aWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L21hYy9XZWJTYW5kYm94U3VwcG9ydC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMv
bWFjL1dlYlRoZW1lRW5naW5lLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy93aW4v
V2ViU2FuZGJveFN1cHBvcnQuaCcsCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJUaGVtZUVuZ2luZS5oCShyZXZpc2lvbiAxMzY5NTcp
CisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlRoZW1lRW5naW5l
X2gKLSNkZWZpbmUgV2ViVGhlbWVFbmdpbmVfaAotCi0jaW5jbHVkZSAiLi4vV2ViQ2FudmFzLmgi
Ci0jaW5jbHVkZSAiLi4vV2ViQ29sb3IuaCIKLSNpbmNsdWRlICIuLi9XZWJTaXplLmgiCi0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2ViUmVjdDsKLQotY2xhc3MgV2ViVGhlbWVFbmdp
bmUgewotcHVibGljOgotICAgIC8vIFRoZSBVSSBwYXJ0IHdoaWNoIGlzIGJlaW5nIGFjY2Vzc2Vk
LgotICAgIGVudW0gUGFydCB7Ci0gICAgICAgIC8vIFNjcm9sbGJhclRoZW1lIHBhcnRzCi0gICAg
ICAgIFBhcnRTY3JvbGxiYXJEb3duQXJyb3csCi0gICAgICAgIFBhcnRTY3JvbGxiYXJMZWZ0QXJy
b3csCi0gICAgICAgIFBhcnRTY3JvbGxiYXJSaWdodEFycm93LAotICAgICAgICBQYXJ0U2Nyb2xs
YmFyVXBBcnJvdywKLSAgICAgICAgUGFydFNjcm9sbGJhckhvcml6b250YWxUaHVtYiwKLSAgICAg
ICAgUGFydFNjcm9sbGJhclZlcnRpY2FsVGh1bWIsCi0gICAgICAgIFBhcnRTY3JvbGxiYXJIb3Jp
em9udGFsVHJhY2ssCi0gICAgICAgIFBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrLAotCi0gICAg
ICAgIC8vIFJlbmRlclRoZW1lIHBhcnRzCi0gICAgICAgIFBhcnRDaGVja2JveCwKLSAgICAgICAg
UGFydFJhZGlvLAotICAgICAgICBQYXJ0QnV0dG9uLAotICAgICAgICBQYXJ0VGV4dEZpZWxkLAot
ICAgICAgICBQYXJ0TWVudUxpc3QsCi0gICAgICAgIFBhcnRTbGlkZXJUcmFjaywKLSAgICAgICAg
UGFydFNsaWRlclRodW1iLAotICAgICAgICBQYXJ0SW5uZXJTcGluQnV0dG9uLAotICAgICAgICBQ
YXJ0UHJvZ3Jlc3NCYXIKLSAgICB9OwotCi0gICAgLy8gVGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhl
IGFzc29jaWF0ZWQgUGFydC4KLSAgICBlbnVtIFN0YXRlIHsKLSAgICAgICAgU3RhdGVEaXNhYmxl
ZCwKLSAgICAgICAgU3RhdGVIb3ZlciwKLSAgICAgICAgU3RhdGVOb3JtYWwsCi0gICAgICAgIFN0
YXRlUHJlc3NlZCwKLSAgICB9OwotCi0gICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgZHJhd2lu
ZyB0aGUgUGFydFNjcm9sbGJhckhvcml6b250YWxUcmFjayBhbmQKLSAgICAvLyBQYXJ0U2Nyb2xs
YmFyVmVydGljYWxUcmFjay4KLSAgICBzdHJ1Y3QgU2Nyb2xsYmFyVHJhY2tFeHRyYVBhcmFtcyB7
Ci0gICAgICAgIC8vIFRoZSBib3VuZHMgb2YgdGhlIGVudGlyZSB0cmFjaywgYXMgb3Bwb3NlZCB0
byB0aGUgcGFydCBiZWluZyBwYWludGVkLgotICAgICAgICBpbnQgdHJhY2tYOwotICAgICAgICBp
bnQgdHJhY2tZOwotICAgICAgICBpbnQgdHJhY2tXaWR0aDsKLSAgICAgICAgaW50IHRyYWNrSGVp
Z2h0OwotICAgIH07Ci0KLSAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0Q2hlY2tib3gs
IFBhcnRQdXNoQnV0dG9uIGFuZCBQYXJ0UmFkaW8uCi0gICAgc3RydWN0IEJ1dHRvbkV4dHJhUGFy
YW1zIHsKLSAgICAgICAgYm9vbCBjaGVja2VkOwotICAgICAgICBib29sIGluZGV0ZXJtaW5hdGU7
IC8vIFdoZXRoZXIgdGhlIGJ1dHRvbiBzdGF0ZSBpcyBpbmRldGVybWluYXRlLgotICAgICAgICBi
b29sIGlzRGVmYXVsdDsgLy8gV2hldGhlciB0aGUgYnV0dG9uIGlzIGRlZmF1bHQgYnV0dG9uLgot
ICAgICAgICBib29sIGhhc0JvcmRlcjsKLSAgICAgICAgV2ViQ29sb3IgYmFja2dyb3VuZENvbG9y
OwotICAgIH07Ci0KLSAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0VGV4dEZpZWxkCi0g
ICAgc3RydWN0IFRleHRGaWVsZEV4dHJhUGFyYW1zIHsKLSAgICAgICAgYm9vbCBpc1RleHRBcmVh
OwotICAgICAgICBib29sIGlzTGlzdGJveDsKLSAgICAgICAgV2ViQ29sb3IgYmFja2dyb3VuZENv
bG9yOwotICAgIH07Ci0KLSAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0TWVudUxpc3QK
LSAgICBzdHJ1Y3QgTWVudUxpc3RFeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgaGFzQm9yZGVy
OwotICAgICAgICBib29sIGhhc0JvcmRlclJhZGl1czsKLSAgICAgICAgaW50IGFycm93WDsKLSAg
ICAgICAgaW50IGFycm93WTsKLSAgICAgICAgV2ViQ29sb3IgYmFja2dyb3VuZENvbG9yOwotICAg
IH07Ci0KLSAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0U2xpZGVyVHJhY2sgYW5kIFBh
cnRTbGlkZXJUaHVtYgotICAgIHN0cnVjdCBTbGlkZXJFeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJv
b2wgdmVydGljYWw7Ci0gICAgICAgIGJvb2wgaW5EcmFnOwotICAgIH07Ci0KLSAgICAvLyBFeHRy
YSBwYXJhbWV0ZXJzIGZvciBQYXJ0SW5uZXJTcGluQnV0dG9uCi0gICAgc3RydWN0IElubmVyU3Bp
bkJ1dHRvbkV4dHJhUGFyYW1zIHsKLSAgICAgICAgYm9vbCBzcGluVXA7Ci0gICAgICAgIGJvb2wg
cmVhZE9ubHk7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRQcm9n
cmVzc0JhcgotICAgIHN0cnVjdCBQcm9ncmVzc0JhckV4dHJhUGFyYW1zIHsKLSAgICAgICAgYm9v
bCBkZXRlcm1pbmF0ZTsKLSAgICAgICAgaW50IHZhbHVlUmVjdFg7Ci0gICAgICAgIGludCB2YWx1
ZVJlY3RZOwotICAgICAgICBpbnQgdmFsdWVSZWN0V2lkdGg7Ci0gICAgICAgIGludCB2YWx1ZVJl
Y3RIZWlnaHQ7Ci0gICAgfTsKLQotICAgIHVuaW9uIEV4dHJhUGFyYW1zIHsKLSAgICAgICAgU2Ny
b2xsYmFyVHJhY2tFeHRyYVBhcmFtcyBzY3JvbGxiYXJUcmFjazsKLSAgICAgICAgQnV0dG9uRXh0
cmFQYXJhbXMgYnV0dG9uOwotICAgICAgICBUZXh0RmllbGRFeHRyYVBhcmFtcyB0ZXh0RmllbGQ7
Ci0gICAgICAgIE1lbnVMaXN0RXh0cmFQYXJhbXMgbWVudUxpc3Q7Ci0gICAgICAgIFNsaWRlckV4
dHJhUGFyYW1zIHNsaWRlcjsKLSAgICAgICAgSW5uZXJTcGluQnV0dG9uRXh0cmFQYXJhbXMgaW5u
ZXJTcGluOwotICAgICAgICBQcm9ncmVzc0JhckV4dHJhUGFyYW1zIHByb2dyZXNzQmFyOwotICAg
IH07Ci0KLSAgICAvLyBHZXRzIHRoZSBzaXplIG9mIHRoZSBnaXZlbiB0aGVtZSBwYXJ0LiBGb3Ig
dmFyaWFibGUgc2l6ZWQgaXRlbXMKLSAgICAvLyBsaWtlIHZlcnRpY2FsIHNjcm9sbGJhciB0aHVt
YnMsIHRoZSB3aWR0aCB3aWxsIGJlIHRoZSByZXF1aXJlZCB3aWR0aCBvZgotICAgIC8vIHRoZSB0
cmFjayB3aGlsZSB0aGUgaGVpZ2h0IHdpbGwgYmUgdGhlIG1pbmltdW0gaGVpZ2h0LgotICAgIHZp
cnR1YWwgV2ViU2l6ZSBnZXRTaXplKFBhcnQpIHsgcmV0dXJuIFdlYlNpemUoKTsgfQotICAgIC8v
IFBhaW50IHRoZSBnaXZlbiB0aGUgZ2l2ZW4gdGhlbWUgcGFydC4KLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnQoV2ViQ2FudmFzKiwgUGFydCwgU3RhdGUsIGNvbnN0IFdlYlJlY3QmLCBjb25zdCBFeHRy
YVBhcmFtcyopIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMTM2OTU3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMTItMDcgIFNjb3R0IFZpb2xl
dCAgPHNreUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgbGludXgg
dGhlbWUgcmVsYXRlZCBmaWxlcyBhbmQgc3dpdGNoIHRvIGRlZmF1bHQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzg5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExpbnV4IHJlbGF0ZWQgdGhlbWUgZmls
ZXMgYXJlIG5vdyBuYW1lZCBEZWZhdWx0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY29kZSBj
bGVhbnVwLgorCisgICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6IFVwZGF0ZSBmaWxl
cworICAgICAgICAqIFdlYkNvcmUuZ3lwaTogVXBkYXRlIGZpbGVzCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4Lmg6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bUxpbnV4LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxi
YXJUaGVtZUNocm9taXVtTGludXguaDogUmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVDaHJvbWl1bUFuZHJvaWQ6OmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQpOiBMaW51eC0+RGVmYXVs
dAorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZC5oOiBDaGFu
Z2Ugc3VwZXJjbGFzcworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGlu
dXguY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVt
TGludXguaDogUmVtb3ZlZC4KKwogMjAxMi0xMi0wNyAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgVGhyb3cgYXdheSBTdHlsZVJlc29sdmVycyB0aGF0IGhhdmVu
J3QgYmVlbiB1c2VkIGZvciBhIGxvbmcgdGltZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlz
aW9uIDEzNjk1NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5
KQpAQCAtMjQxMyw4ICsyNDEzLDYgQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyVGhl
bWVDaHJvbWl1bUZvbnRQcm92aWRlci5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVy
VGhlbWVDaHJvbWl1bUZvbnRQcm92aWRlckxpbnV4LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVy
aW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Gb250UHJvdmlkZXJXaW4uY3BwJywKLSAgICAgICAgICAg
ICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcCcsCi0gICAgICAgICAgICAn
cmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oJywKICAgICAgICAgICAgICdyZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcv
UmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5tbScsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRl
clRoZW1lQ2hyb21pdW1Ta2lhLmNwcCcsCkBAIC0zNjQwLDggKzM2MzgsNiBAQAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdC5o
JywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1M
aW51eC5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVD
aHJvbWl1bUxpbnV4LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3Jt
V2lkZ2V0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVy
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuaCcs
CkBAIC0zNjYwLDggKzM2NTYsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bURlZmF1bHQuaCcsCi0gICAg
ICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNw
cCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bUxpbnV4LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1l
Q2hyb21pdW1NYWMuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYy5tbScsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXAvV2ViQ29yZS5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXAvV2ViQ29yZS5neXAJKHJldmlzaW9uIDEzNjk1NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwL1dlYkNvcmUuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjk2LDE3ICsxNjk2LDEyIEBA
CiAgICAgICAgIH1dLAogICAgICAgICBbJ3VzZV9kZWZhdWx0X3JlbmRlcl90aGVtZT09MScsIHsK
ICAgICAgICAgICAnc291cmNlcy8nOiBbCi0gICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguaCddLAotICAgICAgICAgICAg
WydleGNsdWRlJywgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4
LmNwcCddLAogICAgICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRm
b3JtVGhlbWVDaHJvbWl1bVdpbi5oJ10sCiAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtV2luLmNwcCddLAotICAgICAgICAgICAg
WydleGNsdWRlJywgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51
eC5jcHAnXSwKLSAgICAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtTGludXguaCddLAogICAgICAgICAgICAgWydleGNsdWRlJywgJ3Bs
YXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3BwJ10sCiAgICAgICAg
ICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bVdpbi5oJ10sCiAgICAgICAgICAgXSwKLSAgICAgICAgfV0sCi0gICAgICAgIFsndXNlX2RlZmF1
bHRfcmVuZGVyX3RoZW1lPT0wJywgeworICAgICAgICB9LCB7ICMgdXNlX2RlZmF1bHRfcmVuZGVy
X3RoZW1lPT0wCiAgICAgICAgICAgJ3NvdXJjZXMvJzogWwogICAgICAgICAgICAgWydleGNsdWRl
JywgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwJ10s
CiAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVt
ZUNocm9taXVtRGVmYXVsdC5oJ10sCkBAIC0yMDA4LDcgKzIwMDMsNiBAQAogICAgICAgICB9XSwK
ICAgICAgICAgWyd1c2VfZGVmYXVsdF9yZW5kZXJfdGhlbWU9PTEnLCB7CiAgICAgICAgICAgJ3Nv
dXJjZXMvJzogWwotICAgICAgICAgICAgWydleGNsdWRlJywgJ1JlbmRlclRoZW1lQ2hyb21pdW1M
aW51eC4qJ10sCiAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnUmVuZGVyVGhlbWVDaHJvbWl1bVdp
bi4qJ10sCiAgICAgICAgICAgXSwKICAgICAgICAgfV0sCkBAIC0yMDU1LDcgKzIwNDksNyBAQAog
ICAgICAgICBbJ09TPT0iYW5kcm9pZCInLCB7CiAgICAgICAgICAgJ3NvdXJjZXMvJzogWwogICAg
ICAgICAgICAgWydpbmNsdWRlJywgJ3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRm9udFBy
b3ZpZGVyTGludXhcXC5jcHAkJ10sCi0gICAgICAgICAgICBbJ2luY2x1ZGUnLCAncmVuZGVyaW5n
L1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eFxcLmNwcCQnXSwKKyAgICAgICAgICAgIFsnaW5jbHVk
ZScsICdyZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHRcXC5jcHAkJ10sCiAgICAg
ICAgICAgXSwKICAgICAgICAgfSx7ICMgT1MhPSJhbmRyb2lkIgogICAgICAgICAgICdzb3VyY2Vz
Lyc6IFsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhl
bWVDaHJvbWl1bUxpbnV4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5jcHAJKHJldmlzaW9uIDEzNjk1
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJv
bWl1bUxpbnV4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyMjEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmli
dXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXVuc2lnbmVkIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4Ojpz
X3RodW1iSW5hY3RpdmVDb2xvciA9IDB4ZWFlYWVhOwotdW5zaWduZWQgUGxhdGZvcm1UaGVtZUNo
cm9taXVtTGludXg6OnNfdGh1bWJBY3RpdmVDb2xvciA9IDB4ZjRmNGY0OwotdW5zaWduZWQgUGxh
dGZvcm1UaGVtZUNocm9taXVtTGludXg6OnNfdHJhY2tDb2xvciA9IDB4ZDNkM2QzOwotCi12b2lk
IFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRTY3JvbGxiYXJDb2xvcnMoCi0gICAgU2tD
b2xvciBpbmFjdGl2ZUNvbG9yLCBTa0NvbG9yIGFjdGl2ZUNvbG9yLCBTa0NvbG9yIHRyYWNrQ29s
b3IpCi17Ci0gICAgc190aHVtYkluYWN0aXZlQ29sb3IgPSBpbmFjdGl2ZUNvbG9yOwotICAgIHNf
dGh1bWJBY3RpdmVDb2xvciA9IGFjdGl2ZUNvbG9yOwotICAgIHNfdHJhY2tDb2xvciA9IHRyYWNr
Q29sb3I7Ci19Ci0KLXN0YXRpYyBTa1NjYWxhciBjbGFtcChTa1NjYWxhciB2YWx1ZSwgU2tTY2Fs
YXIgbWluLCBTa1NjYWxhciBtYXgpCi17Ci0gICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KHZh
bHVlLCBtaW4pLCBtYXgpOwotfQotCi1Ta0NvbG9yIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4
OjpzYXR1cmF0ZUFuZEJyaWdodGVuKGNvbnN0IFNrU2NhbGFyIGhzdlszXSwgU2tTY2FsYXIgc2F0
dXJhdGVBbW91bnQsIFNrU2NhbGFyIGJyaWdodGVuQW1vdW50KQotewotICAgIFNrU2NhbGFyIGNv
bG9yWzNdOwotICAgIGNvbG9yWzBdID0gaHN2WzBdOwotICAgIGNvbG9yWzFdID0gY2xhbXAoaHN2
WzFdICsgc2F0dXJhdGVBbW91bnQsIDAuMCwgMS4wKTsKLSAgICBjb2xvclsyXSA9IGNsYW1wKGhz
dlsyXSArIGJyaWdodGVuQW1vdW50LCAwLjAsIDEuMCk7Ci0gICAgcmV0dXJuIFNrSFNWVG9Db2xv
cihjb2xvcik7Ci19Ci0KLVNrQ29sb3IgUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXg6Om91dGxp
bmVDb2xvcihjb25zdCBTa1NjYWxhciBoc3YxWzNdLCBjb25zdCBTa1NjYWxhciBoc3YyWzNdKQot
ewotICAgIC8vIEdUSyBUaGVtZSBlbmdpbmVzIGhhdmUgd2F5IHRvbyBtdWNoIGNvbnRyb2wgb3Zl
ciB0aGUgbGF5b3V0IG9mCi0gICAgLy8gdGhlIHNjcm9sbGJhci4gV2UgbWlnaHQgYmUgYWJsZSB0
byBtb3JlIGNsb3NlbHkgYXBwcm94aW1hdGUgaXRzCi0gICAgLy8gbG9vay1hbmQtZmVlbCwgaWYg
d2Ugc2VudCB3aG9sZSBpbWFnZXMgaW5zdGVhZCBvZiBqdXN0IGNvbG9ycwotICAgIC8vIGZyb20g
dGhlIGJyb3dzZXIgdG8gdGhlIHJlbmRlcmVyLiBCdXQgZXZlbiB0aGVuLCBzb21lIHRoZW1lcwot
ICAgIC8vIHdvdWxkIGp1c3QgYnJlYWsuCi0gICAgLy8KLSAgICAvLyBTbywgaW5zdGVhZCwgd2Ug
ZG9uJ3QgZXZlbiB0cnkgdG8gMTAwJSByZXBsaWNhdGUgdGhlIGxvb2sgb2YKLSAgICAvLyB0aGUg
bmF0aXZlIHNjcm9sbGJhci4gV2UgcmVuZGVyIG91ciBvd24gdmVyc2lvbiwgYnV0IHdlIG1ha2UK
LSAgICAvLyBzdXJlIHRvIHBpY2sgY29sb3JzIHRoYXQgYmxlbmQgaW4gbmljZWx5IHdpdGggdGhl
IHN5c3RlbSBHVEsKLSAgICAvLyB0aGVtZS4gSW4gbW9zdCBjYXNlcywgd2UgY2FuIGp1c3Qgc2Ft
cGxlIGEgY291cGxlIG9mIHBpeGVscwotICAgIC8vIGZyb20gdGhlIHN5c3RlbSBzY3JvbGxiYXIg
YW5kIHVzZSB0aG9zZSBjb2xvcnMgdG8gZHJhdyBvdXIKLSAgICAvLyBzY3JvbGxiYXIuCi0gICAg
Ly8KLSAgICAvLyBUaGlzIHdvcmtzIGZpbmUgZm9yIHRoZSB0cmFjayBjb2xvciBhbmQgdGhlIG92
ZXJhbGwgdGh1bWIKLSAgICAvLyBjb2xvci4gQnV0IGl0IGZhaWxzIHNwZWN0YWN1bGFybHkgZm9y
IHRoZSBvdXRsaW5lIGNvbG9yIHVzZWQKLSAgICAvLyBhcm91bmQgdGhlIHRodW1iIHBpZWNlLiBO
b3QgYWxsIHRoZW1lcyBoYXZlIGEgY2xlYXJseSBkZWZpbmVkCi0gICAgLy8gb3V0bGluZS4gRm9y
IHNvbWUgb2YgdGhlbSBpdCBpcyBwYXJ0aWFsbHkgdHJhbnNwYXJlbnQsIGFuZCBmb3IKLSAgICAv
LyBvdGhlcnMgdGhlIHRoaWNrbmVzcyBpcyB2ZXJ5IHVucHJlZGljdGFibGUuCi0gICAgLy8KLSAg
ICAvLyBTbywgaW5zdGVhZCBvZiB0cnlpbmcgdG8gYXBwcm94aW1hdGUgdGhlIHN5c3RlbSB0aGVt
ZSwgd2UKLSAgICAvLyBpbnN0ZWFkIHRyeSB0byBjb21wdXRlIGEgcmVhc29uYWJsZSBsb29raW5n
IGNob2ljZSBiYXNlZCBvbiB0aGUKLSAgICAvLyBrbm93biBjb2xvciBvZiB0aGUgdHJhY2sgYW5k
IHRoZSB0aHVtYiBwaWVjZS4gVGhpcyBpcyBkaWZmaWN1bHQKLSAgICAvLyB3aGVuIHRyeWluZyB0
byBkZWFsIGJvdGggd2l0aCBoaWdoLSBhbmQgbG93LWNvbnRyYXN0IHRoZW1lcywKLSAgICAvLyBh
bmQgYm90aCB3aXRoIHBvc2l0aXZlIGFuZCBpbnZlcnRlZCB0aGVtZXMuCi0gICAgLy8KLSAgICAv
LyBUaGUgZm9sbG93aW5nIGNvZGUgaGFzIGJlZW4gdGVzdGVkIHRvIGxvb2sgT0sgd2l0aCBhbGwg
b2YgdGhlCi0gICAgLy8gZGVmYXVsdCBHVEsgdGhlbWVzLgotICAgIFNrU2NhbGFyIG1pbkRpZmYg
PSBjbGFtcCgoaHN2MVsxXSArIGhzdjJbMV0pICogMS4yLCAwLjI4LCAwLjUpOwotICAgIFNrU2Nh
bGFyIGRpZmYgPSBjbGFtcChmYWJzKGhzdjFbMl0gLSBoc3YyWzJdKSAvIDIsIG1pbkRpZmYsIDAu
NSk7Ci0KLSAgICBpZiAoaHN2MVsyXSArIGhzdjJbMl0gPiAxLjApCi0gICAgICAgIGRpZmYgPSAt
ZGlmZjsKLQotICAgIHJldHVybiBzYXR1cmF0ZUFuZEJyaWdodGVuKGhzdjIsIC0wLjIsIGRpZmYp
OwotfQotCi12b2lkIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEFycm93QnV0dG9u
KEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IEludFJlY3QmIHJlY3QsIEFycm93RGlyZWN0aW9u
IGRpcmVjdGlvbiwgQ29udHJvbFN0YXRlcyBzdGF0ZXMpCi17Ci0gICAgUGxhdGZvcm1Db250ZXh0
U2tpYSogcGxhdGZvcm1Db250ZXh0ID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpOwotICAgIGludCB3
aWR0aE1pZGRsZSwgbGVuZ3RoTWlkZGxlOwotICAgIFNrUGFpbnQgcGFpbnQ7Ci0gICAgaWYgKGRp
cmVjdGlvbiA9PSBOb3J0aCB8fCBkaXJlY3Rpb24gPT0gU291dGgpIHsKLSAgICAgICAgd2lkdGhN
aWRkbGUgPSByZWN0LndpZHRoKCkgLyAyICsgMTsKLSAgICAgICAgbGVuZ3RoTWlkZGxlID0gcmVj
dC5oZWlnaHQoKSAvIDIgKyAxOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGxlbmd0aE1pZGRsZSA9
IHJlY3Qud2lkdGgoKSAvIDIgKyAxOwotICAgICAgICB3aWR0aE1pZGRsZSA9IHJlY3QuaGVpZ2h0
KCkgLyAyICsgMTsKLSAgICB9Ci0KLSAgICAvLyBDYWxjdWxhdGUgYnV0dG9uIGNvbG9yLgotICAg
IFNrU2NhbGFyIHRyYWNrSFNWWzNdOwotICAgIFNrQ29sb3JUb0hTVih0cmFja0NvbG9yKCksIHRy
YWNrSFNWKTsKLSAgICBTa0NvbG9yIGJ1dHRvbkNvbG9yID0gc2F0dXJhdGVBbmRCcmlnaHRlbih0
cmFja0hTViwgMCwgMC4yKTsKLSAgICBTa0NvbG9yIGJhY2tncm91bmRDb2xvciA9IGJ1dHRvbkNv
bG9yOwotICAgIGlmIChzdGF0ZXMgJiBQcmVzc2VkU3RhdGUpIHsKLSAgICAgICAgU2tTY2FsYXIg
YnV0dG9uSFNWWzNdOwotICAgICAgICBTa0NvbG9yVG9IU1YoYnV0dG9uQ29sb3IsIGJ1dHRvbkhT
Vik7Ci0gICAgICAgIGJ1dHRvbkNvbG9yID0gc2F0dXJhdGVBbmRCcmlnaHRlbihidXR0b25IU1Ys
IDAsIC0wLjEpOwotICAgIH0gZWxzZSBpZiAoc3RhdGVzICYgSG92ZXJTdGF0ZSkgewotICAgICAg
ICBTa1NjYWxhciBidXR0b25IU1ZbM107Ci0gICAgICAgIFNrQ29sb3JUb0hTVihidXR0b25Db2xv
ciwgYnV0dG9uSFNWKTsKLSAgICAgICAgYnV0dG9uQ29sb3IgPSBzYXR1cmF0ZUFuZEJyaWdodGVu
KGJ1dHRvbkhTViwgMCwgMC4wNSk7Ci0gICAgfQotCi0gICAgU2tJUmVjdCBza3JlY3Q7Ci0gICAg
c2tyZWN0LnNldChyZWN0LngoKSwgcmVjdC55KCksIHJlY3QueCgpICsgcmVjdC53aWR0aCgpLCBy
ZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOwotICAgIC8vIFBhaW50IHRoZSBiYWNrZ3JvdW5kICh0
aGUgYXJlYSB2aXNpYmxlIGJlaGluZCB0aGUgcm91bmRlZCBjb3JuZXJzKS4KLSAgICBwYWludC5z
ZXRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOwotICAgIHBsYXRmb3JtQ29udGV4dC0+ZHJhd0lSZWN0
KHNrcmVjdCwgcGFpbnQpOwotCi0gICAgLy8gUGFpbnQgdGhlIGJ1dHRvbidzIG91dGxpbmUgYW5k
IGZpbGwgdGhlIG1pZGRsZQotICAgIFNrUGF0aCBvdXRsaW5lOwotICAgIHN3aXRjaCAoZGlyZWN0
aW9uKSB7Ci0gICAgY2FzZSBOb3J0aDoKLSAgICAgICAgb3V0bGluZS5tb3ZlVG8ocmVjdC54KCkg
KyAwLjUsIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSArIDAuNSk7Ci0gICAgICAgIG91dGxpbmUu
ckxpbmVUbygwLCAtKHJlY3QuaGVpZ2h0KCkgLSAyKSk7Ci0gICAgICAgIG91dGxpbmUuckxpbmVU
bygyLCAtMik7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbyhyZWN0LndpZHRoKCkgLSA1LCAwKTsK
LSAgICAgICAgb3V0bGluZS5yTGluZVRvKDIsIDIpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8o
MCwgcmVjdC5oZWlnaHQoKSAtIDIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNvdXRoOgot
ICAgICAgICBvdXRsaW5lLm1vdmVUbyhyZWN0LngoKSArIDAuNSwgcmVjdC55KCkgLSAwLjUpOwot
ICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMCwgcmVjdC5oZWlnaHQoKSAtIDIpOwotICAgICAgICBv
dXRsaW5lLnJMaW5lVG8oMiwgMik7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbyhyZWN0LndpZHRo
KCkgLSA1LCAwKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKDIsIC0yKTsKLSAgICAgICAgb3V0
bGluZS5yTGluZVRvKDAsIC0ocmVjdC5oZWlnaHQoKSAtIDIpKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBFYXN0OgotICAgICAgICBvdXRsaW5lLm1vdmVUbyhyZWN0LngoKSAtIDAuNSwgcmVj
dC55KCkgKyAwLjUpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8ocmVjdC53aWR0aCgpIC0gMiwg
MCk7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbygyLCAyKTsKLSAgICAgICAgb3V0bGluZS5yTGlu
ZVRvKDAsIHJlY3QuaGVpZ2h0KCkgLSA1KTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKC0yLCAy
KTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKC0ocmVjdC53aWR0aCgpIC0gMiksIDApOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFdlc3Q6Ci0gICAgICAgIG91dGxpbmUubW92ZVRvKHJlY3Qu
eCgpICsgcmVjdC53aWR0aCgpICsgMC41LCByZWN0LnkoKSArIDAuNSk7Ci0gICAgICAgIG91dGxp
bmUuckxpbmVUbygtKHJlY3Qud2lkdGgoKSAtIDIpLCAwKTsKLSAgICAgICAgb3V0bGluZS5yTGlu
ZVRvKC0yLCAyKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKDAsIHJlY3QuaGVpZ2h0KCkgLSA1
KTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKDIsIDIpOwotICAgICAgICBvdXRsaW5lLnJMaW5l
VG8ocmVjdC53aWR0aCgpIC0gMiwgMCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBvdXRs
aW5lLmNsb3NlKCk7Ci0KLSAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7
Ci0gICAgcGFpbnQuc2V0Q29sb3IoYnV0dG9uQ29sb3IpOwotICAgIHBsYXRmb3JtQ29udGV4dC0+
ZHJhd1BhdGgob3V0bGluZSwgcGFpbnQpOwotCi0gICAgcGFpbnQuc2V0QW50aUFsaWFzKHRydWUp
OwotICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOwotICAgIFNrU2Nh
bGFyIHRodW1iSFNWWzNdOwotICAgIFNrQ29sb3JUb0hTVih0aHVtYkluYWN0aXZlQ29sb3IoKSwg
dGh1bWJIU1YpOwotICAgIHBhaW50LnNldENvbG9yKG91dGxpbmVDb2xvcih0cmFja0hTViwgdGh1
bWJIU1YpKTsKLSAgICBwbGF0Zm9ybUNvbnRleHQtPmRyYXdQYXRoKG91dGxpbmUsIHBhaW50KTsK
LQotICAgIC8vIElmIHRoZSBidXR0b24gaXMgZGlzYWJsZWQgb3IgcmVhZC1vbmx5LCB0aGUgYXJy
b3cgaXMgZHJhd24gd2l0aCB0aGUgb3V0bGluZSBjb2xvci4KLSAgICBpZiAoc3RhdGVzICYgRW5h
YmxlZFN0YXRlICYmICEoc3RhdGVzICYgUmVhZE9ubHlTdGF0ZSkpCi0gICAgICAgIHBhaW50LnNl
dENvbG9yKFNLX0NvbG9yQkxBQ0spOwotCi0gICAgcGFpbnQuc2V0QW50aUFsaWFzKGZhbHNlKTsK
LSAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7Ci0KLSAgICBTa1BhdGgg
cGF0aDsKLSAgICAvLyBUaGUgY29uc3RhbnRzIGluIHRoaXMgYmxvY2sgb2YgY29kZSBhcmUgaGFu
ZC10YWlsb3JlZCB0byBwcm9kdWNlIGdvb2QKLSAgICAvLyBsb29raW5nIGFycm93cyB3aXRob3V0
IGFudGktYWxpYXNpbmcuCi0gICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIE5vcnRo
OgotICAgICAgICBwYXRoLm1vdmVUbyhyZWN0LngoKSArIHdpZHRoTWlkZGxlIC0gNCwgcmVjdC55
KCkgKyBsZW5ndGhNaWRkbGUgKyAyKTsKLSAgICAgICAgcGF0aC5yTGluZVRvKDcsIDApOwotICAg
ICAgICBwYXRoLnJMaW5lVG8oLTQsIC00KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTb3V0
aDoKLSAgICAgICAgcGF0aC5tb3ZlVG8ocmVjdC54KCkgKyB3aWR0aE1pZGRsZSAtIDQsIHJlY3Qu
eSgpICsgbGVuZ3RoTWlkZGxlIC0gMyk7Ci0gICAgICAgIHBhdGguckxpbmVUbyg3LCAwKTsKLSAg
ICAgICAgcGF0aC5yTGluZVRvKC00LCA0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFYXN0
OgotICAgICAgICBwYXRoLm1vdmVUbyhyZWN0LngoKSArIGxlbmd0aE1pZGRsZSAtIDMsIHJlY3Qu
eSgpICsgd2lkdGhNaWRkbGUgLSA0KTsKLSAgICAgICAgcGF0aC5yTGluZVRvKDAsIDcpOwotICAg
ICAgICBwYXRoLnJMaW5lVG8oNCwgLTQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlc3Q6
Ci0gICAgICAgIHBhdGgubW92ZVRvKHJlY3QueCgpICsgbGVuZ3RoTWlkZGxlICsgMSwgcmVjdC55
KCkgKyB3aWR0aE1pZGRsZSAtIDUpOwotICAgICAgICBwYXRoLnJMaW5lVG8oMCwgOSk7Ci0gICAg
ICAgIHBhdGguckxpbmVUbygtNCwgLTQpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcGF0
aC5jbG9zZSgpOwotCi0gICAgcGxhdGZvcm1Db250ZXh0LT5kcmF3UGF0aChwYXRoLCBwYWludCk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1M
aW51eC5oCShyZXZpc2lvbiAxMzY5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4X2gKLSNkZWZpbmUgUGxh
dGZvcm1UaGVtZUNocm9taXVtTGludXhfaAotCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tp
YS5oIgotI2luY2x1ZGUgIlNrQ29sb3IuaCIKLSNpbmNsdWRlICJTa1NjYWxhci5oIgotI2luY2x1
ZGUgIlRoZW1lVHlwZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQbGF0Zm9y
bVRoZW1lQ2hyb21pdW1MaW51eCB7Ci1wdWJsaWM6Ci0gICAgZW51bSBBcnJvd0RpcmVjdGlvbiB7
Ci0gICAgICAgIE5vcnRoLAotICAgICAgICBFYXN0LAotICAgICAgICBTb3V0aCwKLSAgICAgICAg
V2VzdCwKLSAgICB9OwotCi0gICAgc3RhdGljIHZvaWQgc2V0U2Nyb2xsYmFyQ29sb3JzKHVuc2ln
bmVkIGluYWN0aXZlQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGFjdGl2ZUNvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCB0cmFja0NvbG9yKTsKLSAgICBzdGF0aWMgdW5zaWduZWQgdGh1bWJJbmFjdGl2ZUNv
bG9yKCkgeyByZXR1cm4gc190aHVtYkluYWN0aXZlQ29sb3I7IH0KLSAgICBzdGF0aWMgdW5zaWdu
ZWQgdGh1bWJBY3RpdmVDb2xvcigpIHsgcmV0dXJuIHNfdGh1bWJBY3RpdmVDb2xvcjsgfQotICAg
IHN0YXRpYyB1bnNpZ25lZCB0cmFja0NvbG9yKCkgeyByZXR1cm4gc190cmFja0NvbG9yOyB9Ci0K
LSAgICBzdGF0aWMgU2tDb2xvciBzYXR1cmF0ZUFuZEJyaWdodGVuKGNvbnN0IFNrU2NhbGFyIGhz
dlszXSwgU2tTY2FsYXIgc2F0dXJhdGVBbW91bnQsIFNrU2NhbGFyIGJyaWdodGVuQW1vdW50KTsK
LSAgICBzdGF0aWMgU2tDb2xvciBvdXRsaW5lQ29sb3IoY29uc3QgU2tTY2FsYXIgaHN2MVszXSwg
Y29uc3QgU2tTY2FsYXIgaHN2MlszXSk7Ci0gICAgc3RhdGljIHZvaWQgcGFpbnRBcnJvd0J1dHRv
bihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgQXJyb3dEaXJlY3Rpb24sIENvbnRy
b2xTdGF0ZXMpOwotCi1wcml2YXRlOgotICAgIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4KCkg
eyB9Ci0KLSAgICBzdGF0aWMgdW5zaWduZWQgc190aHVtYkluYWN0aXZlQ29sb3I7Ci0gICAgc3Rh
dGljIHVuc2lnbmVkIHNfdGh1bWJBY3RpdmVDb2xvcjsKLSAgICBzdGF0aWMgdW5zaWduZWQgc190
cmFja0NvbG9yOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUGxh
dGZvcm1UaGVtZUNocm9taXVtTGludXhfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGlu
dXguY3BwCShyZXZpc2lvbiAxMzY5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDE0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTY3JvbGxi
YXJUaGVtZUNocm9taXVtTGludXguaCIKLQotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEu
aCIKLSNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKLSNpbmNsdWRlICJTY3JvbGxiYXIu
aCIKLSNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViUmVj
dC5oPgotI2luY2x1ZGUgPHB1YmxpYy9saW51eC9XZWJUaGVtZUVuZ2luZS5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLVNjcm9sbGJhclRoZW1lKiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhl
bWUoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxp
bnV4LCB0aGVtZSwgKCkpOwotICAgIHJldHVybiAmdGhlbWU7Ci19Ci0KLWludCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtTGludXg6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6
ZSBjb250cm9sU2l6ZSkKLXsKLSAgICAvLyBIb3JpeiBhbmQgVmVydCBzY3JvbGxiYXJzIGFyZSB0
aGUgc2FtZSB0aGlja25lc3MuCi0gICAgSW50U2l6ZSBzY3JvbGxiYXJTaXplID0gV2ViS2l0OjpQ
bGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhl
bWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrKTsKLSAgICByZXR1cm4gc2Nyb2xs
YmFyU2l6ZS53aWR0aCgpOwotfQotCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6
cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUp
Ci17Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUgPSBzY3JvbGxiYXIt
PmhvdmVyZWRQYXJ0KCkgPT0gcGFydFR5cGUgPyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0
ZUhvdmVyIDogV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVOb3JtYWw7Ci0gICAgSW50UmVj
dCBhbGlnblJlY3QgPSB0cmFja1JlY3Qoc2Nyb2xsYmFyLCBmYWxzZSk7Ci0gICAgV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7Ci0gICAgV2ViS2l0OjpXZWJD
YW52YXMqIGNhbnZhcyA9IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7Ci0gICAgZXh0
cmFQYXJhbXMuc2Nyb2xsYmFyVHJhY2sudHJhY2tYID0gYWxpZ25SZWN0LngoKTsKLSAgICBleHRy
YVBhcmFtcy5zY3JvbGxiYXJUcmFjay50cmFja1kgPSBhbGlnblJlY3QueSgpOwotICAgIGV4dHJh
UGFyYW1zLnNjcm9sbGJhclRyYWNrLnRyYWNrV2lkdGggPSBhbGlnblJlY3Qud2lkdGgoKTsKLSAg
ICBleHRyYVBhcmFtcy5zY3JvbGxiYXJUcmFjay50cmFja0hlaWdodCA9IGFsaWduUmVjdC5oZWln
aHQoKTsKLSAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBh
aW50KGNhbnZhcywgc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxi
YXIgPyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNr
IDogV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2ssIHN0
YXRlLCBXZWJLaXQ6OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7Ci19Ci0KLXZvaWQgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdj
LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBT
Y3JvbGxiYXJQYXJ0IHBhcnQpCi17Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydCBw
YWludFBhcnQ7Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUgPSBXZWJL
aXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZU5vcm1hbDsKLSAgICBXZWJLaXQ6OldlYkNhbnZhcyog
Y2FudmFzID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKLSAgICBib29sIGNoZWNr
TWluID0gZmFsc2U7Ci0gICAgYm9vbCBjaGVja01heCA9IGZhbHNlOwotICAgIGlmIChzY3JvbGxi
YXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewotICAgICAgICBpZiAo
cGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0KSB7Ci0gICAgICAgICAgICBwYWludFBhcnQgPSBX
ZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyTGVmdEFycm93OwotICAgICAgICAg
ICAgY2hlY2tNaW4gPSB0cnVlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGFpbnRQ
YXJ0ID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclJpZ2h0QXJyb3c7Ci0g
ICAgICAgICAgICBjaGVja01heCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAg
ICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0KSB7Ci0gICAgICAgICAgICBwYWlu
dFBhcnQgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyVXBBcnJvdzsKLSAg
ICAgICAgICAgIGNoZWNrTWluID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IHBhaW50UGFydCA9IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJEb3duQXJy
b3c7Ci0gICAgICAgICAgICBjaGVja01heCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
aWYgKChjaGVja01pbiAmJiAoc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkgPD0gMCkpCi0gICAgICAg
IHx8IChjaGVja01heCAmJiBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSA9PSBzY3JvbGxiYXItPm1h
eGltdW0oKSkpIHsKLSAgICAgICAgc3RhdGUgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0
ZURpc2FibGVkOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChwYXJ0ID09IHNjcm9sbGJhci0+
cHJlc3NlZFBhcnQoKSkKLSAgICAgICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2lu
ZTo6U3RhdGVQcmVzc2VkOwotICAgICAgICBlbHNlIGlmIChwYXJ0ID09IHNjcm9sbGJhci0+aG92
ZXJlZFBhcnQoKSkKLSAgICAgICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6
U3RhdGVIb3ZlcjsKLSAgICB9Ci0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVt
ZUVuZ2luZSgpLT5wYWludChjYW52YXMsIHBhaW50UGFydCwgc3RhdGUsIFdlYktpdDo6V2ViUmVj
dChyZWN0KSwgMCk7Ci19Ci0KLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWlu
dFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6
U3RhdGUgc3RhdGU7Ci0gICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGdjLT5wbGF0Zm9y
bUNvbnRleHQoKS0+Y2FudmFzKCk7Ci0gICAgaWYgKHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSA9
PSBUaHVtYlBhcnQpCi0gICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3Rh
dGVQcmVzc2VkOwotICAgIGVsc2UgaWYgKHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSA9PSBUaHVt
YlBhcnQpCi0gICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVIb3Zl
cjsKLSAgICBlbHNlCi0gICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3Rh
dGVOb3JtYWw7Ci0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgp
LT5wYWludChjYW52YXMsIHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Ny
b2xsYmFyID8gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckhvcml6b250YWxU
aHVtYiA6IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1i
LCBzdGF0ZSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAwKTsKLX0KLQotYm9vbCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtTGludXg6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKLXsKLSAgICByZXR1cm4gKGV2dC5z
aGlmdEtleSgpICYmIGV2dC5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB8fCAoZXZ0LmJ1dHRvbigp
ID09IE1pZGRsZUJ1dHRvbik7Ci19Ci0KLUludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxp
bnV4OjpidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCi17Ci0gICAg
aWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgewotICAg
ICAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5n
aW5lKCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclVwQXJy
b3cpOwotICAgICAgICByZXR1cm4gSW50U2l6ZShzaXplLndpZHRoKCksIHNjcm9sbGJhci0+aGVp
Z2h0KCkgPCAyICogc2l6ZS5oZWlnaHQoKSA/IHNjcm9sbGJhci0+aGVpZ2h0KCkgLyAyIDogc2l6
ZS5oZWlnaHQoKSk7Ci0gICAgfQotCi0gICAgLy8gSG9yaXpvbnRhbFNjcm9sbGJhcgotICAgIElu
dFNpemUgc2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+
Z2V0U2l6ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyTGVmdEFycm93KTsK
LSAgICByZXR1cm4gSW50U2l6ZShzY3JvbGxiYXItPndpZHRoKCkgPCAyICogc2l6ZS53aWR0aCgp
ID8gc2Nyb2xsYmFyLT53aWR0aCgpIC8gMiA6IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7
Ci19Ci0KLWludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6Om1pbmltdW1UaHVtYkxlbmd0
aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQotewotICAgIGlmIChzY3JvbGxiYXIt
Pm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpIHsKLSAgICAgICAgSW50U2l6ZSBz
aXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXpl
KFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iKTsKLSAg
ICAgICAgcmV0dXJuIHNpemUuaGVpZ2h0KCk7Ci0gICAgfQotCi0gICAgSW50U2l6ZSBzaXplID0g
V2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktp
dDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVGh1bWIpOwotICAgIHJl
dHVybiBzaXplLndpZHRoKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51
eC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW1MaW51eC5oCShyZXZpc2lvbiAxMzY5NTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDA5LCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bUxpbnV4X2gKLSNkZWZpbmUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4X2gKLQotI2luY2x1
ZGUgIlNjcm9sbGJhclRoZW1lQ2hyb21pdW0uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAg
IGNsYXNzIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eCA6IHB1YmxpYyBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRo
aWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSk7Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBj
b25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1i
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAg
ICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7Ci0g
ICAgICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVu
dCopOwotICAgIH07Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUFu
ZHJvaWQuY3BwCShyZXZpc2lvbiAxMzY5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3
NCw3IEBAIFN0cmluZyBSZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZDo6ZXh0cmEKIAogU3RyaW5n
IFJlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpleHRyYURlZmF1bHRTdHlsZVNoZWV0KCkKIHsK
LSAgICByZXR1cm4gUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpleHRyYURlZmF1bHRTdHlsZVNo
ZWV0KCkgKworICAgIHJldHVybiBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6ZXh0cmFEZWZh
dWx0U3R5bGVTaGVldCgpICsKICAgICAgICAgU3RyaW5nKHRoZW1lQ2hyb21pdW1BbmRyb2lkVXNl
ckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKHRoZW1lQ2hyb21pdW1BbmRyb2lkVXNlckFnZW50U3R5
bGVTaGVldCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVDaHJvbWl1bUFuZHJvaWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQuaAkocmV2aXNpb24gMTM2OTU3KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDExICsyNiwxMSBAQAogI2lmbmRlZiBSZW5kZXJUaGVtZUNocm9taXVt
QW5kcm9pZF9oCiAjZGVmaW5lIFJlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkX2gKIAotI2luY2x1
ZGUgIlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lQ2hy
b21pdW1EZWZhdWx0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUmVuZGVyVGhl
bWVDaHJvbWl1bUFuZHJvaWQgOiBwdWJsaWMgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4IHsKK2Ns
YXNzIFJlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkIDogcHVibGljIFJlbmRlclRoZW1lQ2hyb21p
dW1EZWZhdWx0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4g
Y3JlYXRlKCk7CiAgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpIE9W
RVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21p
dW1MaW51eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lQ2hyb21pdW1MaW51eC5jcHAJKHJldmlzaW9uIDEzNjk1NykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDM4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4K
LSAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgotICogQ29w
eXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MDkgR29vZ2xlIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSAqCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbmRlclRoZW1lQ2hy
b21pdW1MaW51eC5oIgotCi0jaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgotI2luY2x1ZGUg
IkNvbG9yLmgiCi0jaW5jbHVkZSAiUGFpbnRJbmZvLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250
ZXh0U2tpYS5oIgotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgotI2luY2x1ZGUgIlJlbmRlclBy
b2dyZXNzLmgiCi0jaW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCi0jaW5jbHVkZSAiU2Nyb2xsYmFy
VGhlbWUuaCIKLSNpbmNsdWRlICJVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIgotI2luY2x1ZGUgPHB1
YmxpYy9QbGF0Zm9ybS5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+Ci0jaW5jbHVkZSA8
cHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
dW5zaWduZWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjptX2FjdGl2ZVNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvciA9Ci0gICAgMHhmZjFlOTBmZjsKLXVuc2lnbmVkIFJlbmRlclRoZW1lQ2hyb21p
dW1MaW51eDo6bV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgPQotICAgIENvbG9yOjpi
bGFjazsKLXVuc2lnbmVkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6bV9pbmFjdGl2ZVNlbGVj
dGlvbkJhY2tncm91bmRDb2xvciA9Ci0gICAgMHhmZmM4YzhjODsKLXVuc2lnbmVkIFJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eDo6bV9pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvciA9Ci0g
ICAgMHhmZjMyMzIzMjsKLQotZG91YmxlIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6bV9jYXJl
dEJsaW5rSW50ZXJ2YWw7Ci0KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0QnV0dG9uQmFj
a2dyb3VuZENvbG9yID0gMHhmZmRkZGRkZDsKLQotc3RhdGljIFdlYktpdDo6V2ViVGhlbWVFbmdp
bmU6OlN0YXRlIGdldFdlYlRoZW1lU3RhdGUoY29uc3QgUmVuZGVyVGhlbWUqIHRoZW1lLCBjb25z
dCBSZW5kZXJPYmplY3QqIG8pCi17Ci0gICAgaWYgKCF0aGVtZS0+aXNFbmFibGVkKG8pKQotICAg
ICAgICByZXR1cm4gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVEaXNhYmxlZDsKLSAgICBp
ZiAodGhlbWUtPmlzUHJlc3NlZChvKSkKLSAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViVGhlbWVF
bmdpbmU6OlN0YXRlUHJlc3NlZDsKLSAgICBpZiAodGhlbWUtPmlzSG92ZXJlZChvKSkKLSAgICAg
ICAgcmV0dXJuIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlSG92ZXI7Ci0KLSAgICByZXR1
cm4gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVOb3JtYWw7Ci19Ci0KLVBhc3NSZWZQdHI8
UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6Y3JlYXRlKCkKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCgpKTsKLX0KLQotLy8g
UmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZSBmb3IgQW5kcm9pZCBpcyBkZWZpbmVkIGluIFJlbmRl
clRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcC4KLSNpZiAhT1MoQU5EUk9JRCkKLVBhc3NSZWZQdHI8
UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoUGFnZSogcGFnZSkKLXsKLSAg
ICBzdGF0aWMgUmVuZGVyVGhlbWUqIHJ0ID0gUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpjcmVh
dGUoKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHJ0OwotfQotI2VuZGlmCi0KLVJlbmRlclRoZW1l
Q2hyb21pdW1MaW51eDo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCkKLXsKLSAgICBtX2NhcmV0
QmxpbmtJbnRlcnZhbCA9IFJlbmRlclRoZW1lOjpjYXJldEJsaW5rSW50ZXJ2YWwoKTsKLX0KLQot
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4Ojp+UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCkKLXsK
LX0KLQotQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzeXN0ZW1Db2xvcihpbnQgY3Nz
VmFsdWVJZCkgY29uc3QKLXsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3IgbGludXhCdXR0b25HcmF5
Q29sb3IoMHhmZmRkZGRkZCk7Ci0KLSAgICBpZiAoY3NzVmFsdWVJZCA9PSBDU1NWYWx1ZUJ1dHRv
bmZhY2UpCi0gICAgICAgIHJldHVybiBsaW51eEJ1dHRvbkdyYXlDb2xvcjsKLSAgICByZXR1cm4g
UmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yKGNzc1ZhbHVlSWQpOwotfQotCi1TdHJpbmcgUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4OjpleHRyYURlZmF1bHRTdHlsZVNoZWV0KCkKLXsKLSAgICByZXR1
cm4gUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKSArCi0g
ICAgICAgICAgIFN0cmluZyh0aGVtZUNocm9taXVtTGludXhVc2VyQWdlbnRTdHlsZVNoZWV0LCBz
aXplb2YodGhlbWVDaHJvbWl1bUxpbnV4VXNlckFnZW50U3R5bGVTaGVldCkpOwotfQotCi1ib29s
IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6Y29udHJvbFN1cHBvcnRzVGludHMoY29uc3QgUmVu
ZGVyT2JqZWN0KiBvKSBjb25zdAotewotICAgIHJldHVybiBpc0VuYWJsZWQobyk7Ci19Ci0KLUNv
bG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIENvbG9yKDB4MjgsIDB4MjgsIDB4Mjgp
OwotfQotCi1Db2xvciBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmFjdGl2ZUxpc3RCb3hTZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAotewotICAgIHJldHVybiBDb2xvcjo6YmxhY2s7
Ci19Ci0KLUNvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6aW5hY3RpdmVMaXN0Qm94U2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gQ29sb3IoMHhjOCwg
MHhjOCwgMHhjOCk7Ci19Ci0KLUNvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6aW5hY3Rp
dmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
Q29sb3IoMHgzMiwgMHgzMiwgMHgzMik7Ci19Ci0KLUNvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1M
aW51eDo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcjsKLX0KLQotQ29sb3Ig
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbmFjdGl2ZVNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcjsKLX0KLQotQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwbGF0Zm9y
bUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
YWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwotfQotCi1Db2xvciBSZW5kZXJUaGVtZUNo
cm9taXVtTGludXg6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBj
b25zdAotewotICAgIHJldHVybiBtX2luYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwot
fQotCi0jaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi1JbnRTaXplIFJlbmRlclRoZW1lQ2hy
b21pdW1MaW51eDo6c2xpZGVyVGlja1NpemUoKSBjb25zdAotewotICAgIHJldHVybiBJbnRTaXpl
KDEsIDYpOwotfQotCi1pbnQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzbGlkZXJUaWNrT2Zm
c2V0RnJvbVRyYWNrQ2VudGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gLTE2OwotfQotI2VuZGlm
Ci0KLXZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphZGp1c3RTbGlkZXJUaHVtYlNpemUo
UmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAotewotICAgIEludFNp
emUgc2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0
U2l6ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2xpZGVyVGh1bWIpOwotCi0gICAgaWYg
KHN0eWxlLT5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCkgewotICAg
ICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKHNpemUud2lkdGgoKSwgRml4ZWQpKTsKLSAgICAg
ICAgc3R5bGUtPnNldEhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKLSAgICB9
IGVsc2UgaWYgKHN0eWxlLT5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQp
IHsKLSAgICAgICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChzaXplLmhlaWdodCgpLCBGaXhlZCkp
OwotICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7
Ci0gICAgfSBlbHNlCi0gICAgICAgIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RTbGlk
ZXJUaHVtYlNpemUoc3R5bGUsIGVsZW1lbnQpOwotfQotCi1ib29sIFJlbmRlclRoZW1lQ2hyb21p
dW1MaW51eDo6c3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdAotewotICAgIHJldHVybiB0cnVl
OwotfQotCi12b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c2V0Q2FyZXRCbGlua0ludGVy
dmFsKGRvdWJsZSBpbnRlcnZhbCkKLXsKLSAgICBtX2NhcmV0QmxpbmtJbnRlcnZhbCA9IGludGVy
dmFsOwotfQotCi1kb3VibGUgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpjYXJldEJsaW5rSW50
ZXJ2YWxJbnRlcm5hbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2FyZXRCbGlua0ludGVydmFs
OwotfQotCi12b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c2V0U2VsZWN0aW9uQ29sb3Jz
KAotICAgIHVuc2lnbmVkIGFjdGl2ZUJhY2tncm91bmRDb2xvciwKLSAgICB1bnNpZ25lZCBhY3Rp
dmVGb3JlZ3JvdW5kQ29sb3IsCi0gICAgdW5zaWduZWQgaW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3Is
Ci0gICAgdW5zaWduZWQgaW5hY3RpdmVGb3JlZ3JvdW5kQ29sb3IpCi17Ci0gICAgbV9hY3RpdmVT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IgPSBhY3RpdmVCYWNrZ3JvdW5kQ29sb3I7Ci0gICAgbV9h
Y3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgPSBhY3RpdmVGb3JlZ3JvdW5kQ29sb3I7Ci0g
ICAgbV9pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9IGluYWN0aXZlQmFja2dyb3Vu
ZENvbG9yOwotICAgIG1faW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgPSBpbmFjdGl2
ZUZvcmVncm91bmRDb2xvcjsKLX0KLQotYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBh
aW50Q2hlY2tib3goUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IElu
dFJlY3QmIHJlY3QpCi17Ci0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMg
ZXh0cmFQYXJhbXM7Ci0gICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwotICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5jaGVj
a2VkID0gaXNDaGVja2VkKG8pOwotICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5pbmRldGVybWluYXRl
ID0gaXNJbmRldGVybWluYXRlKG8pOwotCi0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgp
LT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBh
cnRDaGVja2JveCwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJl
Y3QpLCAmZXh0cmFQYXJhbXMpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBSZW5kZXJU
aGVtZUNocm9taXVtTGludXg6OnNldENoZWNrYm94U2l6ZShSZW5kZXJTdHlsZSogc3R5bGUpIGNv
bnN0Ci17Ci0gICAgLy8gSWYgdGhlIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGJvdGggc3BlY2lmaWVk
LCB0aGVuIHdlIGhhdmUgbm90aGluZyB0byBkby4KLSAgICBpZiAoIXN0eWxlLT53aWR0aCgpLmlz
SW50cmluc2ljT3JBdXRvKCkgJiYgIXN0eWxlLT5oZWlnaHQoKS5pc0F1dG8oKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgp
LT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRDaGVj
a2JveCk7Ci0gICAgc2V0U2l6ZUlmQXV0byhzdHlsZSwgc2l6ZSk7Ci19Ci0KLWJvb2wgUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFJhZGlvKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFp
bnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIFdlYktpdDo6V2ViVGhlbWVF
bmdpbmU6OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOwotICAgIFdlYktpdDo6V2ViQ2FudmFzKiBj
YW52YXMgPSBpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKLSAgICBleHRy
YVBhcmFtcy5idXR0b24uY2hlY2tlZCA9IGlzQ2hlY2tlZChvKTsKLQotICAgIFdlYktpdDo6UGxh
dGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpQYXJ0UmFkaW8sIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktp
dDo6V2ViUmVjdChyZWN0KSwgJmV4dHJhUGFyYW1zKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LXZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUq
IHN0eWxlKSBjb25zdAotewotICAgIC8vIElmIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBib3Ro
IHNwZWNpZmllZCwgdGhlbiB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8uCi0gICAgaWYgKCFzdHlsZS0+
d2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmICFzdHlsZS0+aGVpZ2h0KCkuaXNBdXRvKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIEludFNpemUgc2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06
OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5l
OjpQYXJ0UmFkaW8pOwotICAgIHNldFNpemVJZkF1dG8oc3R5bGUsIHNpemUpOwotfQotCi1ib29s
IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7Ci0gICAgV2ViS2l0OjpXZWJD
YW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwot
ICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5pc0RlZmF1bHQgPSBpc0RlZmF1bHQobyk7Ci0gICAgZXh0
cmFQYXJhbXMuYnV0dG9uLmhhc0JvcmRlciA9IHRydWU7Ci0gICAgZXh0cmFQYXJhbXMuYnV0dG9u
LmJhY2tncm91bmRDb2xvciA9IGRlZmF1bHRCdXR0b25CYWNrZ3JvdW5kQ29sb3I7Ci0gICAgaWYg
KG8tPmhhc0JhY2tncm91bmQoKSkKLSAgICAgICAgZXh0cmFQYXJhbXMuYnV0dG9uLmJhY2tncm91
bmRDb2xvciA9IG8tPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvcikucmdiKCk7Ci0KLSAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCkt
PnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFy
dEJ1dHRvbiwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3Qp
LCAmZXh0cmFQYXJhbXMpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSZW5kZXJUaGVt
ZUNocm9taXVtTGludXg6OnBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFp
bnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIC8vIFdlYlRoZW1lRW5naW5l
IGRvZXMgbm90IGhhbmRsZSBib3JkZXIgcm91bmRlZCBjb3JuZXIgYW5kIGJhY2tncm91bmQgaW1h
Z2UKLSAgICAvLyBzbyByZXR1cm4gdHJ1ZSB0byBkcmF3IENTUyBib3JkZXIgYW5kIGJhY2tncm91
bmQuCi0gICAgaWYgKG8tPnN0eWxlKCktPmhhc0JvcmRlclJhZGl1cygpIHx8IG8tPnN0eWxlKCkt
Pmhhc0JhY2tncm91bmRJbWFnZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIENvbnRy
b2xQYXJ0IHBhcnQgPSBvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCk7Ci0KLSAgICBXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKLSAgICBleHRyYVBhcmFtcy50
ZXh0RmllbGQuaXNUZXh0QXJlYSA9IHBhcnQgPT0gVGV4dEFyZWFQYXJ0OwotICAgIGV4dHJhUGFy
YW1zLnRleHRGaWVsZC5pc0xpc3Rib3ggPSBwYXJ0ID09IExpc3Rib3hQYXJ0OwotCi0gICAgV2Vi
S2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNh
bnZhcygpOwotCi0gICAgLy8gRmFsbGJhY2sgdG8gd2hpdGUgaWYgdGhlIHNwZWNpZmllZCBjb2xv
ciBvYmplY3QgaXMgaW52YWxpZC4KLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoQ29sb3I6Ondo
aXRlKTsKLSAgICBpZiAoby0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yKS5pc1ZhbGlkKCkpCi0gICAgICAgIGJhY2tncm91bmRDb2xvciA9
IG8tPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcik7Ci0gICAgZXh0cmFQYXJhbXMudGV4dEZpZWxkLmJhY2tncm91bmRDb2xvciA9IGJhY2tn
cm91bmRDb2xvci5yZ2IoKTsKLQotICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhl
bWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0VGV4
dEZpZWxkLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6OldlYlJlY3QocmVjdCks
ICZleHRyYVBhcmFtcyk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlbmRlclRoZW1l
Q2hyb21pdW1MaW51eDo6cGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50
SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBpZiAoIW8tPmlzQm94KCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNvbnN0IGludCByaWdodCA9IHJlY3QueCgpICsg
cmVjdC53aWR0aCgpOwotICAgIGNvbnN0IGludCBtaWRkbGUgPSByZWN0LnkoKSArIHJlY3QuaGVp
Z2h0KCkgLyAyOwotCi0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0
cmFQYXJhbXM7Ci0gICAgZXh0cmFQYXJhbXMubWVudUxpc3QuYXJyb3dYID0gKG8tPnN0eWxlKCkt
PmRpcmVjdGlvbigpID09IFJUTCkgPyByZWN0LngoKSArIDcgOiByaWdodCAtIDEzOwotICAgIGV4
dHJhUGFyYW1zLm1lbnVMaXN0LmFycm93WSA9IG1pZGRsZTsKLSAgICBjb25zdCBSZW5kZXJCb3gq
IGJveCA9IHRvUmVuZGVyQm94KG8pOwotICAgIC8vIE1hdGNoIENocm9taXVtIFdpbiBiZWhhdmlv
dXIgb2Ygc2hvd2luZyBhbGwgYm9yZGVycyBpZiBhbnkgYXJlIHNob3duLgotICAgIGV4dHJhUGFy
YW1zLm1lbnVMaXN0Lmhhc0JvcmRlciA9IGJveC0+Ym9yZGVyUmlnaHQoKSB8fCBib3gtPmJvcmRl
ckxlZnQoKSB8fCBib3gtPmJvcmRlclRvcCgpIHx8IGJveC0+Ym9yZGVyQm90dG9tKCk7Ci0gICAg
ZXh0cmFQYXJhbXMubWVudUxpc3QuaGFzQm9yZGVyUmFkaXVzID0gby0+c3R5bGUoKS0+aGFzQm9y
ZGVyUmFkaXVzKCk7Ci0gICAgLy8gRmFsbGJhY2sgdG8gdHJhbnNwYXJlbnQgaWYgdGhlIHNwZWNp
ZmllZCBjb2xvciBvYmplY3QgaXMgaW52YWxpZC4KLSAgICBleHRyYVBhcmFtcy5tZW51TGlzdC5i
YWNrZ3JvdW5kQ29sb3IgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7Ci0gICAgaWYgKG8tPmhhc0JhY2tn
cm91bmQoKSkKLSAgICAgICAgZXh0cmFQYXJhbXMubWVudUxpc3QuYmFja2dyb3VuZENvbG9yID0g
by0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yKS5yZ2IoKTsKLQotICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKLQotICAgIFdlYktpdDo6UGxhdGZvcm06OmN1
cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5n
aW5lOjpQYXJ0TWVudUxpc3QsIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6V2Vi
UmVjdChyZWN0KSwgJmV4dHJhUGFyYW1zKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wg
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCog
bywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIFdlYktp
dDo6V2ViVGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOwotICAgIFdlYktpdDo6
V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMo
KTsKLSAgICBleHRyYVBhcmFtcy5zbGlkZXIudmVydGljYWwgPSBvLT5zdHlsZSgpLT5hcHBlYXJh
bmNlKCkgPT0gU2xpZGVyVmVydGljYWxQYXJ0OwotCi0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2ViVGhlbWVFbmdp
bmU6OlBhcnRTbGlkZXJUcmFjaywgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpX
ZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMpOwotCi0jaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1F
TlQpCi0gICAgcGFpbnRTbGlkZXJUaWNrcyhvLCBpLCByZWN0KTsKLSNlbmRpZgotCi0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRTbGlk
ZXJUaHVtYihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVj
dCYgcmVjdCkKLXsKLSAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRy
YVBhcmFtczsKLSAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7Ci0gICAgZXh0cmFQYXJhbXMuc2xpZGVyLnZlcnRpY2Fs
ID0gby0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0Owot
ICAgIGV4dHJhUGFyYW1zLnNsaWRlci5pbkRyYWcgPSBpc1ByZXNzZWQobyk7Ci0KLSAgICBXZWJL
aXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNsaWRlclRodW1iLCBnZXRXZWJUaGVtZVN0YXRlKHRo
aXMsIG8pLCBXZWJLaXQ6OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi12b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6YWRqdXN0SW5uZXJT
cGluQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVu
dCopIGNvbnN0Ci17Ci0gICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVu
dCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRJ
bm5lclNwaW5CdXR0b24pOwotCi0gICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChzaXplLndpZHRo
KCksIEZpeGVkKSk7Ci0gICAgc3R5bGUtPnNldE1pbldpZHRoKExlbmd0aChzaXplLndpZHRoKCks
IEZpeGVkKSk7Ci19Ci0KLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludElubmVy
U3BpbkJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50
UmVjdCYgcmVjdCkKLXsKLSAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBl
eHRyYVBhcmFtczsKLSAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7Ci0gICAgZXh0cmFQYXJhbXMuaW5uZXJTcGluLnNw
aW5VcCA9IChjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIobykgJiBTcGluVXBTdGF0ZSk7Ci0gICAg
ZXh0cmFQYXJhbXMuaW5uZXJTcGluLnJlYWRPbmx5ID0gaXNSZWFkT25seUNvbnRyb2wobyk7Ci0K
LSAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNh
bnZhcywgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydElubmVyU3BpbkJ1dHRvbiwgZ2V0V2Vi
VGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMp
OwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotI2lmIEVOQUJMRShQUk9HUkVTU19FTEVNRU5UKQot
Ci1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRQcm9ncmVzc0JhcihSZW5kZXJP
YmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAg
ICBpZiAoIW8tPmlzUHJvZ3Jlc3MoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBSZW5k
ZXJQcm9ncmVzcyogcmVuZGVyUHJvZ3Jlc3MgPSB0b1JlbmRlclByb2dyZXNzKG8pOwotICAgIElu
dFJlY3QgdmFsdWVSZWN0ID0gcHJvZ3Jlc3NWYWx1ZVJlY3RGb3IocmVuZGVyUHJvZ3Jlc3MsIHJl
Y3QpOwotCi0gICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJh
bXM7Ci0gICAgZXh0cmFQYXJhbXMucHJvZ3Jlc3NCYXIuZGV0ZXJtaW5hdGUgPSByZW5kZXJQcm9n
cmVzcy0+aXNEZXRlcm1pbmF0ZSgpOwotICAgIGV4dHJhUGFyYW1zLnByb2dyZXNzQmFyLnZhbHVl
UmVjdFggPSB2YWx1ZVJlY3QueCgpOwotICAgIGV4dHJhUGFyYW1zLnByb2dyZXNzQmFyLnZhbHVl
UmVjdFkgPSB2YWx1ZVJlY3QueSgpOwotICAgIGV4dHJhUGFyYW1zLnByb2dyZXNzQmFyLnZhbHVl
UmVjdFdpZHRoID0gdmFsdWVSZWN0LndpZHRoKCk7Ci0gICAgZXh0cmFQYXJhbXMucHJvZ3Jlc3NC
YXIudmFsdWVSZWN0SGVpZ2h0ID0gdmFsdWVSZWN0LmhlaWdodCgpOwotCi0gICAgRGlyZWN0aW9u
RmxpcHBpbmdTY29wZSBzY29wZShvLCBpLCByZWN0KTsKLSAgICBXZWJLaXQ6OldlYkNhbnZhcyog
Y2FudmFzID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7Ci0gICAgV2Vi
S2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIFdl
YktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRQcm9ncmVzc0JhciwgZ2V0V2ViVGhlbWVTdGF0ZSh0
aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMpOwotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotI2VuZGlmCi0KLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4Ojpz
aG91bGRPcGVuUGlja2VyV2l0aEY0S2V5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguaAkocmV2aXNpb24gMTM2OTU3KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDExMiArMCwwIEBACi0vKgotICogVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIFdlYktpdCBwcm9qZWN0LgotICoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBD
b21wdXRlciwgSW5jLgotICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5l
bW1lbEBnbWFpbC5jb20KLSAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBG
cmV5dGhlcgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlLCBJbmMuCi0gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoK
LSAqLwotCi0jaWZuZGVmIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eF9oCi0jZGVmaW5lIFJlbmRl
clRoZW1lQ2hyb21pdW1MaW51eF9oCi0KLSNpbmNsdWRlICJSZW5kZXJUaGVtZUNocm9taXVtU2tp
YS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBSZW5kZXJUaGVtZUNocm9t
aXVtTGludXggOiBwdWJsaWMgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEgewotICAgIHB1YmxpYzoK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOwotICAgICAg
ICB2aXJ0dWFsIFN0cmluZyBleHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7Ci0KLSAgICAgICAgdmly
dHVhbCBDb2xvciBzeXN0ZW1Db2xvcihpbnQgY3NzVmFsaWRJZCkgY29uc3Q7Ci0KLSAgICAgICAg
Ly8gQSBtZXRob2QgYXNraW5nIGlmIHRoZSBjb250cm9sIGNoYW5nZXMgaXRzIHRpbnQgd2hlbiB0
aGUgd2luZG93IGhhcyBmb2N1cyBvciBub3QuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBjb250cm9s
U3VwcG9ydHNUaW50cyhjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKLQotICAgICAgICAvLyBM
aXN0IEJveCBzZWxlY3Rpb24gY29sb3IKLSAgICAgICAgdmlydHVhbCBDb2xvciBhY3RpdmVMaXN0
Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgQ29s
b3IgYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0OwotICAgICAg
ICB2aXJ0dWFsIENvbG9yIGluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
IGNvbnN0OwotICAgICAgICB2aXJ0dWFsIENvbG9yIGluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZv
cmVncm91bmRDb2xvcigpIGNvbnN0OwotCi0gICAgICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1B
Y3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBD
b2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Ci0g
ICAgICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29s
b3IoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Q7Ci0KLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVO
VCkKLSAgICAgICAgdmlydHVhbCBJbnRTaXplIHNsaWRlclRpY2tTaXplKCkgY29uc3QgT1ZFUlJJ
REU7Ci0gICAgICAgIHZpcnR1YWwgaW50IHNsaWRlclRpY2tPZmZzZXRGcm9tVHJhY2tDZW50ZXIo
KSBjb25zdCBPVkVSUklERTsKLSNlbmRpZgotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xp
ZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwotCi0gICAgICAgIHN0
YXRpYyB2b2lkIHNldENhcmV0QmxpbmtJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpOwotICAgICAg
ICB2aXJ0dWFsIGRvdWJsZSBjYXJldEJsaW5rSW50ZXJ2YWxJbnRlcm5hbCgpIGNvbnN0OwotCi0g
ICAgICAgIHZpcnR1YWwgYm9vbCBwYWludENoZWNrYm94KFJlbmRlck9iamVjdCosIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldENoZWNr
Ym94U2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OwotCi0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWlu
dFJhZGlvKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsK
LSAgICAgICAgdmlydHVhbCB2b2lkIHNldFJhZGlvU2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0Owot
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFRl
eHRGaWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCosIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCBib29sIHBhaW50
U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3Qq
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0KLSAgICAgICAgdmlydHVhbCB2
b2lkIGFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHls
ZSosIEVsZW1lbnQqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBib29sIHBhaW50SW5uZXJTcGlu
QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsK
LQotICAgICAgICB2aXJ0dWFsIGJvb2wgcG9wc01lbnVCeVNwYWNlT3JSZXR1cm4oKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiB0cnVlOyB9Ci0KLSNpZiBFTkFCTEUoUFJPR1JFU1NfRUxFTUVOVCkK
LSAgICAgICAgdmlydHVhbCBib29sIHBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotI2VuZGlmCi0KLSAgICAgICAgdmlydHVh
bCBib29sIHNob3VsZE9wZW5QaWNrZXJXaXRoRjRLZXkoKSBjb25zdCBPVkVSUklERTsKLQotICAg
ICAgICBzdGF0aWMgdm9pZCBzZXRTZWxlY3Rpb25Db2xvcnModW5zaWduZWQgYWN0aXZlQmFja2dy
b3VuZENvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgYWN0aXZlRm9yZWdyb3VuZENvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmFjdGl2ZUZvcmVncm91bmRDb2xv
cik7Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCgp
OwotICAgICAgICB2aXJ0dWFsIH5SZW5kZXJUaGVtZUNocm9taXVtTGludXgoKTsKLQotICAgIHBy
aXZhdGU6Ci0gICAgICAgIC8vIEEgZ2VuZXJhbCBtZXRob2QgYXNraW5nIGlmIGFueSBjb250cm9s
IHRpbnRpbmcgaXMgc3VwcG9ydGVkIGF0IGFsbC4KLSAgICAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzQ29udHJvbFRpbnRzKCkgY29uc3Q7Ci0KLSAgICAgICAgc3RhdGljIGRvdWJsZSBtX2NhcmV0
QmxpbmtJbnRlcnZhbDsKLQotICAgICAgICBzdGF0aWMgdW5zaWduZWQgbV9hY3RpdmVTZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3I7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBtX2FjdGl2ZVNlbGVj
dGlvbkZvcmVncm91bmRDb2xvcjsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIG1faW5hY3RpdmVT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3I7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBtX2luYWN0
aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eF9oCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2OTU3KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0x
Mi0wNyAgU2NvdHQgVmlvbGV0ICA8c2t5QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIFJlbW92ZSBsaW51eCB0aGVtZSByZWxhdGVkIGZpbGVzIGFuZCBzd2l0Y2ggdG8gZGVmYXVs
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzODk3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGludXgg
dGhlbWUgcmVsYXRlZCBmaWxlcyBhcmUgbm93IG5hbWVkIERlZmF1bHQuCisKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9saW51eC9XZWJSZW5kZXJUaGVtZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJUaGVtZUVuZ2luZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpzZXRTY3JvbGxiYXJDb2xvcnMpOiBDbGVhbnVwIGlmZGVmcy4KKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFNlbGVjdGlvbkNvbG9ycyk6IENsZWFudXAgaWZk
ZWZzLgorICAgICAgICAqIHNyYy9saW51eC9XZWJSZW5kZXJUaGVtZS5jcHA6IFJlbW92ZWQuCisK
IDIwMTItMTItMDcgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtDaHJvbWl1bV0gTW92ZSBXb3JrZXJDb250ZXh0UHJveHk6OmNyZWF0ZSBvdXQgb2YgUGxh
dGZvcm1TdXBwb3J0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiAx
MzY5NTcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5NCw3ICsyOTQsNiBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvZ3RrL1dlYklu
cHV0RXZlbnRGYWN0b3J5LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvbGludXgvV2ViRm9u
dFJlbmRlclN0eWxlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvbGludXgvV2ViRm9udFJl
bmRlcmluZy5oJywKLSAgICAgICAgICAgICAgICAncHVibGljL2xpbnV4L1dlYlJlbmRlclRoZW1l
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvbWFjL1dlYklucHV0RXZlbnRGYWN0b3J5Lmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvbWFjL1dlYlNhbmRib3hTdXBwb3J0LmgnLAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvbWFjL1dlYlNjcmVlbkluZm9GYWN0b3J5LmgnLApAQCAtNDM5
LDcgKzQzOCw2IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9saW51eC9XZWJGb250SW5mby5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvbGludXgvV2ViRm9udFJlbmRlcmluZy5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvbGludXgvV2ViRm9udFJlbmRlclN0eWxlLmNwcCcsCi0gICAgICAg
ICAgICAgICAgJ3NyYy9saW51eC9XZWJSZW5kZXJUaGVtZS5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMveDExL1dlYlNjcmVlbkluZm9GYWN0b3J5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkubW0nLAogICAgICAgICAgICAgICAgICdzcmMvbWFj
L1dlYlNjcmVlbkluZm9GYWN0b3J5Lm1tJywKQEAgLTg0NywxMCArODQ1LDYgQEAKICAgICAgICAg
ICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ3Vz
ZV9kZWZhdWx0X3JlbmRlcl90aGVtZT09MScsIHsKLSAgICAgICAgICAgICAgICAgICAgJ3NvdXJj
ZXMvJzogWwotICAgICAgICAgICAgICAgICAgICAgICAgWydleGNsdWRlJywgJ3NyYy9saW51eC9X
ZWJSZW5kZXJUaGVtZS5jcHAnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScs
ICdwdWJsaWMvbGludXgvV2ViUmVuZGVyVGhlbWUuaCddLAotICAgICAgICAgICAgICAgICAgICBd
LAogICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzogWwogICAgICAgICAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9kZWZhdWx0JywKICAgICAgICAgICAgICAgICAgICAgXSwKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlJlbmRlclRoZW1lLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViUmVuZGVy
VGhlbWUuaAkocmV2aXNpb24gMTM2OTU3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvbGludXgvV2ViUmVuZGVyVGhlbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0MyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEpvZWwgU3RhbmxleS4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIFdlYlJlbmRlclRoZW1lX2gKLSNkZWZpbmUgV2ViUmVuZGVyVGhlbWVfaAotCi0j
aW5jbHVkZSAiLi4vcGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci0vLyBTZXQgY2FyZXQgYmxpbmsgaW50ZXJ2YWwgZm9yIHRleHQgaW5wdXQgYXJlYXMuCi1XRUJL
SVRfRVhQT1JUIHZvaWQgc2V0Q2FyZXRCbGlua0ludGVydmFsKGRvdWJsZSk7Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL2xpbnV4L1dlYlRoZW1lRW5naW5lLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXgvV2ViVGhlbWVFbmdpbmUuaAko
cmV2aXNpb24gMTM2OTU3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZv
cm0vbGludXgvV2ViVGhlbWVFbmdpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzMSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgIi4uLy4uLy4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51eC9X
ZWJUaGVtZUVuZ2luZS5oIgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcAkocmV2aXNpb24gMTM2OTU3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksMTAgKzE3OSw2IEBACiAj
aW5jbHVkZSAiUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oIgogI2VuZGlmCiAjZWxzZQotI2lmIE9T
KFVOSVgpICYmICFPUyhEQVJXSU4pICYmICFFTkFCTEUoREVGQVVMVF9SRU5ERVJfVEhFTUUpCi0j
aW5jbHVkZSAiUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguaCIKLSNpbmNsdWRlICJSZW5kZXJU
aGVtZUNocm9taXVtTGludXguaCIKLSNlbmRpZgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAj
ZW5kaWYKIApAQCAtMzU3Miw4ICszNTY4LDYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0U2Nyb2xs
YmFyQ29sb3JzKHVucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHRyYWNrQ29sb3IpIHsKICNpZiBFTkFCTEUoREVGQVVMVF9SRU5ERVJfVEhFTUUpCiAgICAg
UGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdDo6c2V0U2Nyb2xsYmFyQ29sb3JzKGluYWN0aXZl
Q29sb3IsIGFjdGl2ZUNvbG9yLCB0cmFja0NvbG9yKTsKLSNlbGlmIE9TKFVOSVgpICYmICFPUyhE
QVJXSU4pICYmICFPUyhBTkRST0lEKQotICAgIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4Ojpz
ZXRTY3JvbGxiYXJDb2xvcnMoaW5hY3RpdmVDb2xvciwgYWN0aXZlQ29sb3IsIHRyYWNrQ29sb3Ip
OwogI2VuZGlmCiB9CiAKQEAgLTM1ODQsOSArMzU3OCw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNl
dFNlbGVjdGlvbkNvbG9ycyh1bnMKICNpZiBFTkFCTEUoREVGQVVMVF9SRU5ERVJfVEhFTUUpCiAg
ICAgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnNldFNlbGVjdGlvbkNvbG9ycyhhY3RpdmVC
YWNrZ3JvdW5kQ29sb3IsIGFjdGl2ZUZvcmVncm91bmRDb2xvciwgaW5hY3RpdmVCYWNrZ3JvdW5k
Q29sb3IsIGluYWN0aXZlRm9yZWdyb3VuZENvbG9yKTsKICAgICB0aGVtZSgpLT5wbGF0Zm9ybUNv
bG9yc0RpZENoYW5nZSgpOwotI2VsaWYgT1MoVU5JWCkgJiYgIU9TKERBUldJTikgJiYgIU9TKEFO
RFJPSUQpCi0gICAgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRTZWxlY3Rpb25Db2xvcnMo
YWN0aXZlQmFja2dyb3VuZENvbG9yLCBhY3RpdmVGb3JlZ3JvdW5kQ29sb3IsIGluYWN0aXZlQmFj
a2dyb3VuZENvbG9yLCBpbmFjdGl2ZUZvcmVncm91bmRDb2xvcik7Ci0gICAgdGhlbWUoKS0+cGxh
dGZvcm1Db2xvcnNEaWRDaGFuZ2UoKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9saW51eC9XZWJSZW5kZXJUaGVtZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXgvV2ViUmVuZGVyVGhlbWUuY3BwCShyZXZpc2lv
biAxMzY5NTcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eC9XZWJSZW5kZXJU
aGVtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBKb2VsIFN0YW5sZXkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldlYlJlbmRlclRoZW1lLmgiCi0KLSNpbmNsdWRlICJSZW5kZXJUaGVt
ZUNocm9taXVtTGludXguaCIKLSNpbmNsdWRlICJXZWJWaWV3LmgiCi0KLXVzaW5nIFdlYkNvcmU6
OlJlbmRlclRoZW1lOwotdXNpbmcgV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4Owot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBzZXRDYXJldEJsaW5rSW50ZXJ2YWwoZG91Ymxl
IGludGVydmFsKQotewotICAgIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c2V0Q2FyZXRCbGlu
a0ludGVydmFsKGludGVydmFsKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
MzY5NTcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAxMi0xMi0wNyAgU2NvdHQgVmlvbGV0ICA8c2t5QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBbY2hyb21pdW1dIFJlbW92ZSBsaW51eCB0aGVtZSByZWxhdGVkIGZpbGVzIGFuZCBzd2l0Y2gg
dG8gZGVmYXVsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAzODk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvYnVpbGRfdW5pdHRlc3QucHk6Cisg
ICAgICAgIChTaG91bGRCdWlsZFRlc3QpOiBsaW51eC0+ZGVmYXVsdAorCiAyMDEyLTEyLTA3ICBL
eXVuZ1RhZSBLaW0gIDxrdGYua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEZpeCB0
b29scyBmb3IgV2ViS2l0Mi1vbmx5IGJ1aWxkcwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vY29uZmlnL2J1aWxkX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9idWlsZF91bml0dGVzdC5weQkocmV2aXNpb24g
MTM2OTU3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2J1aWxkX3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIFNob3VsZEJ1
aWxkVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSkKICAgICAgICAgKFsiU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2ZvbyJdLCBbIm1hYy1sZW9wYXJkIiwgIm1hYy1saW9uIiwgICJt
YWMtbW91bnRhaW5saW9uIiwgIm1hYy1zbm93bGVvcGFyZCJdKSwKICAgICAgICAgKFsiU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd3gvd3hjb2RlL3dpbi9mb28iXSwgW10pLAogICAgICAgICAoWyJT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0iLCAiU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgiXSwgWyJtYWMtbGVvcGFyZCIsICJtYWMtbGlv
biIsICAibWFjLW1vdW50YWlubGlvbiIsICJtYWMtc25vd2xlb3BhcmQiXSksCi0gICAgICAgIChb
IlNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguaCJdLCBb
ImNocm9taXVtLWxpbnV4Il0pLAorICAgICAgICAoWyJTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQuaCJdLCBbImNocm9taXVtLWxpbnV4Il0pLAogICAg
ICAgICAoWyJTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5DRS5oIl0sIFtd
KSwKICAgICAgICAgKFsiVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvTGVha3NWaWV3ZXIuanMiXSwgW10pLAogICAg
IF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>