<?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>64326</bug_id>
          
          <creation_ts>2011-07-11 16:46:02 -0700</creation_ts>
          <short_desc>Change roundedIntRect to roundedRect</short_desc>
          <delta_ts>2011-07-12 11:55:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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>
          
          <blocked>63567</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>darin</cc>
    
    <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>jamesr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>435302</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-11 16:46:02 -0700</bug_when>
    <thetext>roundedIntRect should be based on Layout units, so I&apos;m renaming it to &quot;roundedRect&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435335</commentid>
    <comment_count>1</comment_count>
      <attachid>100390</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-11 17:32:54 -0700</bug_when>
    <thetext>Created attachment 100390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435339</commentid>
    <comment_count>2</comment_count>
      <attachid>100390</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-11 17:42:34 -0700</bug_when>
    <thetext>Comment on attachment 100390
Patch

Seems OK.  Could also be RoundedLayoutRect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435342</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-07-11 17:43:54 -0700</bug_when>
    <thetext>Actually I think when used in GraphicsContext methods, it should always be a float-based.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435352</commentid>
    <comment_count>4</comment_count>
      <attachid>100390</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-07-11 18:00:39 -0700</bug_when>
    <thetext>Comment on attachment 100390
Patch

Attachment 100390 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9009779</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435367</commentid>
    <comment_count>5</comment_count>
      <attachid>100390</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-07-11 18:11:16 -0700</bug_when>
    <thetext>Comment on attachment 100390
Patch

Attachment 100390 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9012651</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435717</commentid>
    <comment_count>6</comment_count>
      <attachid>100506</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-12 10:16:07 -0700</bug_when>
    <thetext>Created attachment 100506
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435720</commentid>
    <comment_count>7</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-12 10:19:06 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Actually I think when used in GraphicsContext methods, it should always be a float-based.

I think you&apos;re right. We plan on auditing all the rounding as part of our process. It&apos;ll be one of the most fun parts :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435734</commentid>
    <comment_count>8</comment_count>
      <attachid>100506</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-12 10:45:02 -0700</bug_when>
    <thetext>Comment on attachment 100506
Patch for landing

Just realized I missed one more file. Fixing and re-uploading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435787</commentid>
    <comment_count>9</comment_count>
      <attachid>100525</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-12 11:11:02 -0700</bug_when>
    <thetext>Created attachment 100525
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435814</commentid>
    <comment_count>10</comment_count>
      <attachid>100525</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-12 11:37:24 -0700</bug_when>
    <thetext>Comment on attachment 100525
Patch for landing

Clearing flags on attachment: 100525

Committed r90832: &lt;http://trac.webkit.org/changeset/90832&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435815</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-12 11:37:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435817</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-12 11:39:23 -0700</bug_when>
    <thetext>This is a layer violation.

Layout units is a higher level concept in the rendering engine, not one that should exist at the platform level.

If we can move to floating point for the rounded rectangle arguments for graphics context arguments, then we should do so. It seems like a very bad idea to have the graphics context layer be built on top of the layout units concept.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435837</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-07-12 11:55:47 -0700</bug_when>
    <thetext>Agree with Darin</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100390</attachid>
            <date>2011-07-11 17:32:54 -0700</date>
            <delta_ts>2011-07-12 10:16:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64326-20110711173253.patch</filename>
            <type>text/plain</type>
            <size>92460</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwNzk2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTAyIEBACisyMDExLTA3LTExICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2Ugcm91bmRlZElu
dFJlY3QgdG8gcm91bmRlZFJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY0MzI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVuYW1pbmcgUm91bmRlZEludFJlY3QgdG8gUm91bmRlZFJlY3QgYW5kIG1v
dmluZyB0aGUgdW5kZXJseWluZyB0eXBlIHRvIExheW91dCB1bml0cyBmcm9tCisgICAgICAgIGlu
dGVnZXItYmFzZWQgdmVyc2lvbnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBuZXcgZnVu
Y3Rpb25hbGl0eQorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUu
cHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjphZGRSb3VuZGVkUmVjdENsaXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjphZGRSb3VuZGVkUmVjdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1Jv
dW5kZWRJbnRSZWN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9S
b3VuZGVkSW50UmVjdC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1Jv
dW5kZWRSZWN0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUm91bmRlZEludFJlY3QuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJh
ZGlpOjppc1plcm8pOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzY2Fs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OmV4cGFuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6aW5mbGF0ZVdpdGhSYWRpaSk6CisgICAgICAgIChX
ZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OmluY2x1ZGVMb2dpY2FsRWRnZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpleGNsdWRlTG9naWNhbEVkZ2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJvdW5kZWRSZWN0OjpSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpSb3VuZGVkUmVjdDo6aW5jbHVkZUxvZ2ljYWxFZGdlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpSb3VuZGVkUmVjdDo6ZXhjbHVkZUxvZ2ljYWxFZGdlcyk6CisgICAgICAgIChXZWJDb3JlOjpS
b3VuZGVkUmVjdDo6aXNSZW5kZXJhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9S
b3VuZGVkUmVjdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Sb3VuZGVkSW50UmVjdC5oLgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlp
OjpSYWRpaSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnNldFRvcExl
ZnQpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzZXRUb3BSaWdodCk6
CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnNldEJvdHRvbUxlZnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzZXRCb3R0b21SaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnRvcExlZnQpOgorICAgICAgICAo
V2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjp0b3BSaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpSb3VuZGVkUmVjdDo6UmFkaWk6OmJvdHRvbUxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6Um91
bmRlZFJlY3Q6OlJhZGlpOjpib3R0b21SaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVk
UmVjdDo6UmFkaWk6OmV4cGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFk
aWk6OnNocmluayk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6cmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6c2V0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpS
b3VuZGVkUmVjdDo6bW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6aW5mbGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6ZXhwYW5kUmFkaWkpOgorICAgICAg
ICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OnNocmlua1JhZGlpKToKKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6c2V0TGFzdFNoYWRvd1ZhbHVlcyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpzZXRMYXN0SW5zZXRTaGFkb3dWYWx1
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6bWF0Y2hlc0xhc3RTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6bWF0Y2hlc0xhc3RJbnNldFNoYWRv
dyk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlU2xpY2VTaXplc0Zyb21SYWRpaSk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjp0ZW1wbGF0ZVNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93
Qmx1cjo6ZHJhd0luc2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRy
YXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVy
OjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
ZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd0JsdXI6OmRyYXdMYXllclBpZWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
U2hhZG93Qmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9s
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6Z2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50VHJhbnNsdWNlbnRCb3Jk
ZXJTaWRlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRC
b3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hT
aWRlRnJvbVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNs
aXBCb3JkZXJTaWRlUG9seWdvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3hTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRyYWNrKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y2FsY1JhZGlpRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGNDb25zdHJhaW50U2Nh
bGVGb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFJvdW5kZWRCb3JkZXJG
b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFJvdW5kZWRJbm5lckJvcmRl
ckZvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisKIDIwMTEt
MDctMTEgIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFN3
aXRjaCBsaW5lVG9wIGFuZCBsaW5lQm90dG9tIHRvIG5ldyBsYXlvdXQgdHlwZXMKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHJldmlzaW9uIDkwNzkzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCSh3b3JraW5nIGNvcHkpCkBAIC04NTUsNyArODU1LDcgQEAKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9QYXRoLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaCcs
Ci0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZEludFJlY3QuaCcsCisgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL1NWR0dseXBoLmgnLApAQCAtMzk3Myw3ICszOTczLDcgQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL1JvdW5kZWRJbnRSZWN0LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Um91bmRlZFJlY3QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50
ZWRGb250RGF0YS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRl
ZEZvbnREYXRhLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIu
Y3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA5MDc5MykKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC05OTksNyArOTk5LDcgQEAgU09VUkNF
UyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAgXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Bh
dHRlcm4uY3BwIFwKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkSW50UmVjdC5jcHAgXAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvU2VnbWVudGVkRm9udERhdGEuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU1ZHR2x5cGguY3BwIFwKQEAgLTE5
OTAsNyArMTk5MCw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
aCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmggXAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBcCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRl
ZEludFJlY3QuaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9xdC9TdGlsbEltYWdlUXQuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gOTA3OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc2NTcsMTEg
KzI3NjU3LDExIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xSb3VuZGVkSW50UmVjdC5jcHAiCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUm91bmRlZFJlY3QuY3BwIgogCQkJCQk+
CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcUm91bmRlZEludFJlY3QuaCIKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xSb3VuZGVkUmVjdC5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiA5MDc5MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI5NSw4ICszMjk1LDggQEAK
IAkJQTcxODc4OTAwQjJEMDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxODc4OEYwQjJEMDRB
QzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tICovOyB9OwogCQlBNzFDMzBCODEzODEy
NjVFMDBEQkMzNTEgLyogU2hhZG93Q29udGVudFNlbGVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MUMzMEI2MTM4MTI2NUUwMERCQzM1MSAv
KiBTaGFkb3dDb250ZW50U2VsZWN0b3IuY3BwICovOyB9OwogCQlBNzFDMzBCOTEzODEyNjVFMDBE
QkMzNTEgLyogU2hhZG93Q29udGVudFNlbGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzFDMzBCNzEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93
Q29udGVudFNlbGVjdG9yLmggKi87IH07Ci0JCUE3M0Y5NUZFMTJDOTdCRkUwMDMxQUFGOSAvKiBS
b3VuZGVkSW50UmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzNGOTVGQzEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJlY3QuY3BwICov
OyB9OwotCQlBNzNGOTVGRjEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJlY3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3M0Y5NUZEMTJDOTdC
RkUwMDMxQUFGOSAvKiBSb3VuZGVkSW50UmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3M0Y5NUZFMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3Vu
ZGVkUmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNzNGOTVGQzEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZFJlY3QuY3BwICovOyB9OworCQlB
NzNGOTVGRjEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZFJlY3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3M0Y5NUZEMTJDOTdCRkUwMDMxQUFGOSAv
KiBSb3VuZGVkUmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUE3NEMyRDNDMTM4MTFFMEQwMEY4MzU3MiAvKiBTaGFkb3dDb250ZW50RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc0QzJE
M0IxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc1RTQ5NzYxMDc1MkFDQjAw
QzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RTQ5NzQxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUE3NUU0OTc3MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTc1RTQ5NzUxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgKi87
IH07CkBAIC05ODI0LDggKzk4MjQsOCBAQAogCQlBNzFBNzBDOTExQUZCMDIwMDA5ODlENkQgLyog
SFRNTE1ldGVyRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTE1ldGVyRWxl
bWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MUMzMEI2MTM4MTI2NUUw
MERCQzM1MSAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2hhZG93Q29udGVudFNlbGVjdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTcxQzMwQjcxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0NvbnRl
bnRTZWxlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dDb250
ZW50U2VsZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTczRjk1RkMxMkM5
N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJvdW5kZWRJbnRSZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQTczRjk1RkQxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJvdW5kZWRJbnRSZWN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVk
UmVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSb3VuZGVkUmVj
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3M0Y5NUZEMTJDOTdCRkUwMDMx
QUFGOSAvKiBSb3VuZGVkUmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
b3VuZGVkUmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzRDMkQzQjEzODEx
RTBEMDBGODM1NzIgLyogU2hhZG93Q29udGVudEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2hhZG93Q29udGVudEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTc1RTQ5NzQxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc1RTQ5NzUxMDc1MkFDQjAw
QzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTgwODUsOCArMTgwODUsOCBAQAogCQkJCUE4OERENDg2MEI0NjI5
QTMwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuaCAqLywKIAkJCQlBOEZBNkU1QzBFNENG
REVEMDBENUNGNDkgLyogUGF0dGVybi5jcHAgKi8sCiAJCQkJQThGQTZFNUIwRTRDRkRFRDAwRDVD
RjQ5IC8qIFBhdHRlcm4uaCAqLywKLQkJCQlBNzNGOTVGQzEyQzk3QkZFMDAzMUFBRjkgLyogUm91
bmRlZEludFJlY3QuY3BwICovLAotCQkJCUE3M0Y5NUZEMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3Vu
ZGVkSW50UmVjdC5oICovLAorCQkJCUE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVk
UmVjdC5jcHAgKi8sCisJCQkJQTczRjk1RkQxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRSZWN0
LmggKi8sCiAJCQkJMzcxRjRGRkIwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRh
LmNwcCAqLywKIAkJCQkzNzFGNEZGQTBEMjVFN0YzMDBFQ0UwRDUgLyogU2VnbWVudGVkRm9udERh
dGEuaCAqLywKIAkJCQkwRjNERDQ0RDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5jcHAg
Ki8sCkBAIC0yMjQ1OCw3ICsyMjQ1OCw3IEBACiAJCQkJQkM3NERBMzcxMDEzRjNGNzAwNzk4N0FE
IC8qIFJHQkNvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjVFMTBBMTU1QTA1MDAwQTQy
MzQgLyogUm9vdElubGluZUJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQzkwRUY4NkQ0
NzAwOUQwQ0FGIC8qIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQTczRjk1RkYxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBNzNGOTVGRjEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZFJlY3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFDNjNBMjQ4MEY3MTY0NjYwMEMwOUQ1QSAvKiBSdW5Mb29wVGltZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDFGMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1l
X2FycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQyMTBEN0UyQjgyMDA3QzM5ODMgLyog
cnVudGltZV9tZXRob2QuaCBpbiBIZWFkZXJzICovLApAQCAtMjUzNjMsNyArMjUzNjMsNyBAQAog
CQkJCUJDNzREQTM4MTAxM0YzRjcwMDc5ODdBRCAvKiBSR0JDb2xvci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOENGRjVFNzBBMTU1QTA1MDAwQTQyMzQgLyogUm9vdElubGluZUJveC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0OUU5MTFDODBFRjg2RDQ3MDA5RDBDQUYgLyogUm90YXRlVHJhbnNm
b3JtT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE3M0Y5NUZFMTJDOTdCRkUwMDMx
QUFGOSAvKiBSb3VuZGVkSW50UmVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNzNGOTVGRTEy
Qzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZFJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM2
M0EyNDkwRjcxNjQ2NjAwQzA5RDVBIC8qIFJ1bkxvb3BUaW1lckNGLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBNTY5RDFFMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBNTY5RDIwMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX21ldGhv
ZC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2aXNpb24gOTA3OTMpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiR2VuZXJhdG9yLmgiCiAjaW5j
bHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiUm91
bmRlZEludFJlY3QuaCIKKyNpbmNsdWRlICJSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIlRleHRS
dW4uaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTU1NCw3ICs1NTQsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6Y2xpcChjb25zdCBJbnRSZWN0CiB9CiAjZW5kaWYKIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmFkZFJvdW5kZWRSZWN0Q2xpcChjb25zdCBSb3VuZGVkSW50UmVjdCYgcmVj
dCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGRSb3VuZGVkUmVjdENsaXAoY29uc3QgUm91bmRl
ZFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNTY0LDcgKzU2NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGRSb3VuZGVk
UmVjdENsaXAKICAgICBjbGlwKHBhdGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xp
cE91dFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRJbnRSZWN0JiByZWN0KQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVkUmVjdCYgcmVjdCkKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC02MjAsMTMg
KzYyMCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvCiAgICAg
c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHByZXZpb3VzT3BlcmF0b3IpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRJbnRSZWN0JiByZWN0LCBj
b25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENv
bG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIGZpbGxSb3VuZGVkUmVj
dChyZWN0LnJlY3QoKSwgcmVjdC5yYWRpaSgpLnRvcExlZnQoKSwgcmVjdC5yYWRpaSgpLnRvcFJp
Z2h0KCksIHJlY3QucmFkaWkoKS5ib3R0b21MZWZ0KCksIHJlY3QucmFkaWkoKS5ib3R0b21SaWdo
dCgpLCBjb2xvciwgY29sb3JTcGFjZSk7CiB9CiAKICNpZiAhVVNFKENHKQotdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IFJvdW5kZWRJbnRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0JiByb3Vu
ZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQog
ewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CShyZXZpc2lvbiA5MDc5MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgY2xhc3MgSW1hZ2VCdWZmZXI7CiAgICAgY2xhc3Mg
SW50UmVjdDsKLSAgICBjbGFzcyBSb3VuZGVkSW50UmVjdDsKKyAgICBjbGFzcyBSb3VuZGVkUmVj
dDsKICAgICBjbGFzcyBLVVJMOwogICAgIGNsYXNzIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOwog
ICAgIGNsYXNzIFRleHRSdW47CkBAIC0yOTksOCArMjk5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIEdlbmVyYXRvciYpOwog
ICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOwogICAgICAgICB2b2lkIGZpbGxSb3VuZGVkUmVj
dChjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYg
dG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRv
bVJpZ2h0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwotICAgICAgICB2b2lkIGZpbGxSb3Vu
ZGVkUmVjdChjb25zdCBSb3VuZGVkSW50UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7
Ci0gICAgICAgIHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYsIGNv
bnN0IFJvdW5kZWRJbnRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiwgQ29sb3JT
cGFjZSk7CisgICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0Jiwg
Y29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAgICAgICAgdm9pZCBmaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZShjb25zdCBJbnRSZWN0JiwgY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVj
dCwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKIAogICAgICAgICB2b2lkIGNsZWFyUmVjdChj
b25zdCBGbG9hdFJlY3QmKTsKIApAQCAtMzMwLDEwICszMzAsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIHZvaWQgY2xpcChjb25zdCBJbnRSZWN0Jik7CiAgICAgICAgIHZvaWQg
Y2xpcChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdENsaXAo
Y29uc3QgUm91bmRlZEludFJlY3QmKTsKKyAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdENsaXAo
Y29uc3QgUm91bmRlZFJlY3QmKTsKICAgICAgICAgdm9pZCBhZGRJbm5lclJvdW5kZWRSZWN0Q2xp
cChjb25zdCBJbnRSZWN0JiwgaW50IHRoaWNrbmVzcyk7CiAgICAgICAgIHZvaWQgY2xpcE91dChj
b25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZvaWQgY2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IFJv
dW5kZWRJbnRSZWN0Jik7CisgICAgICAgIHZvaWQgY2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IFJv
dW5kZWRSZWN0Jik7CiAgICAgICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxl
KTsKICAgICAgICAgdm9pZCBjbGlwQ29udmV4UG9seWdvbihzaXplX3QgbnVtUG9pbnRzLCBjb25z
dCBGbG9hdFBvaW50KiwgYm9vbCBhbnRpYWxpYXMgPSB0cnVlKTsKICAgICAgICAgdm9pZCBjbGlw
VG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIGNvbnN0IEZsb2F0UmVjdCYpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAJKHJldmlzaW9uIDkwNzkzKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkyLDcgKzkyLDcgQEAgZmxvYXQgUGF0aDo6bm9ybWFsQW5nbGVBdExlbmd0aChmbG9h
dCBsZQogfQogI2VuZGlmCiAKLXZvaWQgUGF0aDo6YWRkUm91bmRlZFJlY3QoY29uc3QgUm91bmRl
ZEludFJlY3QmIHIpCit2b2lkIFBhdGg6OmFkZFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0
JiByKQogewogICAgIGFkZFJvdW5kZWRSZWN0KHIucmVjdCgpLCByLnJhZGlpKCkudG9wTGVmdCgp
LCByLnJhZGlpKCkudG9wUmlnaHQoKSwgci5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgci5yYWRpaSgp
LmJvdHRvbVJpZ2h0KCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGguaAkocmV2aXNpb24gOTA3OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpZm5kZWYgUGF0
aF9oCiAjZGVmaW5lIFBhdGhfaAogCi0jaW5jbHVkZSAiUm91bmRlZEludFJlY3QuaCIKKyNpbmNs
dWRlICJSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtMTM4LDcgKzEzOCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBhZGRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpOwogICAgICAg
ICB2b2lkIGFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYg
cm91bmRpbmdSYWRpaSk7CiAgICAgICAgIHZvaWQgYWRkUm91bmRlZFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIHRv
cFJpZ2h0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEZs
b2F0U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMpOwotICAgICAgICB2b2lkIGFkZFJvdW5kZWRSZWN0
KGNvbnN0IFJvdW5kZWRJbnRSZWN0Jik7CisgICAgICAgIHZvaWQgYWRkUm91bmRlZFJlY3QoY29u
c3QgUm91bmRlZFJlY3QmKTsKIAogICAgICAgICB2b2lkIHRyYW5zbGF0ZShjb25zdCBGbG9hdFNp
emUmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZElu
dFJlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JvdW5kZWRJbnRSZWN0LmNwcAkocmV2aXNpb24gOTA3OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkSW50UmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlJvdW5kZWRJbnRSZWN0LmgiCi0KLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSA8
YWxnb3JpdGhtPgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWJvb2wgUm91bmRlZEludFJlY3Q6OlJhZGlpOjppc1plcm8oKSBjb25zdAotewotICAgIHJl
dHVybiBtX3RvcExlZnQuaXNaZXJvKCkgJiYgbV90b3BSaWdodC5pc1plcm8oKSAmJiBtX2JvdHRv
bUxlZnQuaXNaZXJvKCkgJiYgbV9ib3R0b21SaWdodC5pc1plcm8oKTsKLX0KLQotdm9pZCBSb3Vu
ZGVkSW50UmVjdDo6UmFkaWk6OnNjYWxlKGZsb2F0IGZhY3RvcikKLXsKLSAgICBpZiAoZmFjdG9y
ID09IDEpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIGVpdGhlciByYWRpdXMgb24gYSBj
b3JuZXIgYmVjb21lcyB6ZXJvLCByZXNldCBib3RoIHJhZGlpIG9uIHRoYXQgY29ybmVyLgotICAg
IG1fdG9wTGVmdC5zY2FsZShmYWN0b3IpOwotICAgIGlmICghbV90b3BMZWZ0LndpZHRoKCkgfHwg
IW1fdG9wTGVmdC5oZWlnaHQoKSkKLSAgICAgICAgbV90b3BMZWZ0ID0gSW50U2l6ZSgpOwotICAg
IG1fdG9wUmlnaHQuc2NhbGUoZmFjdG9yKTsKLSAgICBpZiAoIW1fdG9wUmlnaHQud2lkdGgoKSB8
fCAhbV90b3BSaWdodC5oZWlnaHQoKSkKLSAgICAgICAgbV90b3BSaWdodCA9IEludFNpemUoKTsK
LSAgICBtX2JvdHRvbUxlZnQuc2NhbGUoZmFjdG9yKTsKLSAgICBpZiAoIW1fYm90dG9tTGVmdC53
aWR0aCgpIHx8ICFtX2JvdHRvbUxlZnQuaGVpZ2h0KCkpCi0gICAgICAgIG1fYm90dG9tTGVmdCA9
IEludFNpemUoKTsKLSAgICBtX2JvdHRvbVJpZ2h0LnNjYWxlKGZhY3Rvcik7Ci0gICAgaWYgKCFt
X2JvdHRvbVJpZ2h0LndpZHRoKCkgfHwgIW1fYm90dG9tUmlnaHQuaGVpZ2h0KCkpCi0gICAgICAg
IG1fYm90dG9tUmlnaHQgPSBJbnRTaXplKCk7Ci0KLX0KLQotdm9pZCBSb3VuZGVkSW50UmVjdDo6
UmFkaWk6OmV4cGFuZChpbnQgdG9wV2lkdGgsIGludCBib3R0b21XaWR0aCwgaW50IGxlZnRXaWR0
aCwgaW50IHJpZ2h0V2lkdGgpCi17Ci0gICAgbV90b3BMZWZ0LnNldFdpZHRoKG1heCgwLCBtX3Rv
cExlZnQud2lkdGgoKSArIGxlZnRXaWR0aCkpOwotICAgIG1fdG9wTGVmdC5zZXRIZWlnaHQobWF4
KDAsIG1fdG9wTGVmdC5oZWlnaHQoKSArIHRvcFdpZHRoKSk7Ci0KLSAgICBtX3RvcFJpZ2h0LnNl
dFdpZHRoKG1heCgwLCBtX3RvcFJpZ2h0LndpZHRoKCkgKyByaWdodFdpZHRoKSk7Ci0gICAgbV90
b3BSaWdodC5zZXRIZWlnaHQobWF4KDAsIG1fdG9wUmlnaHQuaGVpZ2h0KCkgKyB0b3BXaWR0aCkp
OwotCi0gICAgbV9ib3R0b21MZWZ0LnNldFdpZHRoKG1heCgwLCBtX2JvdHRvbUxlZnQud2lkdGgo
KSArIGxlZnRXaWR0aCkpOwotICAgIG1fYm90dG9tTGVmdC5zZXRIZWlnaHQobWF4KDAsIG1fYm90
dG9tTGVmdC5oZWlnaHQoKSArIGJvdHRvbVdpZHRoKSk7Ci0KLSAgICBtX2JvdHRvbVJpZ2h0LnNl
dFdpZHRoKG1heCgwLCBtX2JvdHRvbVJpZ2h0LndpZHRoKCkgKyByaWdodFdpZHRoKSk7Ci0gICAg
bV9ib3R0b21SaWdodC5zZXRIZWlnaHQobWF4KDAsIG1fYm90dG9tUmlnaHQuaGVpZ2h0KCkgKyBi
b3R0b21XaWR0aCkpOwotfQotCi12b2lkIFJvdW5kZWRJbnRSZWN0OjppbmZsYXRlV2l0aFJhZGlp
KGludCBzaXplKQotewotICAgIEludFJlY3Qgb2xkID0gbV9yZWN0OwotCi0gICAgbV9yZWN0Lmlu
ZmxhdGUoc2l6ZSk7Ci0gICAgLy8gQ29uc2lkZXJpbmcgdGhlIGluZmxhdGlvbiBmYWN0b3Igb2Yg
c2hvcnRlciBzaXplIHRvIHNjYWxlIHRoZSByYWRpaSBzZWVtcyBhcHByb3ByaWF0ZSBoZXJlCi0g
ICAgZmxvYXQgZmFjdG9yOwotICAgIGlmIChtX3JlY3Qud2lkdGgoKSA8IG1fcmVjdC5oZWlnaHQo
KSkKLSAgICAgICAgZmFjdG9yID0gb2xkLndpZHRoKCkgPyAoZmxvYXQpbV9yZWN0LndpZHRoKCkg
LyBvbGQud2lkdGgoKSA6IDA7Ci0gICAgZWxzZQotICAgICAgICBmYWN0b3IgPSBvbGQuaGVpZ2h0
KCkgPyAoZmxvYXQpbV9yZWN0LmhlaWdodCgpIC8gb2xkLmhlaWdodCgpIDogMDsKLQotICAgIG1f
cmFkaWkuc2NhbGUoZmFjdG9yKTsKLX0KLQotdm9pZCBSb3VuZGVkSW50UmVjdDo6UmFkaWk6Omlu
Y2x1ZGVMb2dpY2FsRWRnZXMoY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiBlZGdlcywgYm9v
bCBpc0hvcml6b250YWwsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRl
TG9naWNhbFJpZ2h0RWRnZSkKLXsKLSAgICBpZiAoaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgewot
ICAgICAgICBpZiAoaXNIb3Jpem9udGFsKQotICAgICAgICAgICAgbV9ib3R0b21MZWZ0ID0gZWRn
ZXMuYm90dG9tTGVmdCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3RvcFJpZ2h0ID0g
ZWRnZXMudG9wUmlnaHQoKTsKLSAgICAgICAgbV90b3BMZWZ0ID0gZWRnZXMudG9wTGVmdCgpOwot
ICAgIH0KLQotICAgIGlmIChpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgewotICAgICAgICBpZiAo
aXNIb3Jpem9udGFsKQotICAgICAgICAgICAgbV90b3BSaWdodCA9IGVkZ2VzLnRvcFJpZ2h0KCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYm90dG9tTGVmdCA9IGVkZ2VzLmJvdHRvbUxl
ZnQoKTsKLSAgICAgICAgbV9ib3R0b21SaWdodCA9IGVkZ2VzLmJvdHRvbVJpZ2h0KCk7Ci0gICAg
fQotfQotCi12b2lkIFJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6ZXhjbHVkZUxvZ2ljYWxFZGdlcyhi
b29sIGlzSG9yaXpvbnRhbCwgYm9vbCBleGNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGV4Y2x1
ZGVMb2dpY2FsUmlnaHRFZGdlKQotewotICAgIGlmIChleGNsdWRlTG9naWNhbExlZnRFZGdlKSB7
Ci0gICAgICAgIGlmIChpc0hvcml6b250YWwpCi0gICAgICAgICAgICBtX2JvdHRvbUxlZnQgPSBJ
bnRTaXplKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fdG9wUmlnaHQgPSBJbnRTaXpl
KCk7Ci0gICAgICAgIG1fdG9wTGVmdCA9IEludFNpemUoKTsKLSAgICB9Ci0gICAgICAgIAotICAg
IGlmIChleGNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgewotICAgICAgICBpZiAoaXNIb3Jpem9udGFs
KQotICAgICAgICAgICAgbV90b3BSaWdodCA9IEludFNpemUoKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbV9ib3R0b21MZWZ0ID0gSW50U2l6ZSgpOwotICAgICAgICBtX2JvdHRvbVJpZ2h0
ID0gSW50U2l6ZSgpOwotICAgIH0KLX0KLQotUm91bmRlZEludFJlY3Q6OlJvdW5kZWRJbnRSZWN0
KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotICAgIDogbV9yZWN0KHgsIHks
IHdpZHRoLCBoZWlnaHQpCi17Ci19Ci0KLVJvdW5kZWRJbnRSZWN0OjpSb3VuZGVkSW50UmVjdChj
b25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBSYWRpaSYgcmFkaWkpCi0gICAgOiBtX3JlY3QocmVj
dCkKLSAgICAsIG1fcmFkaWkocmFkaWkpCi17Ci19Ci0KLVJvdW5kZWRJbnRSZWN0OjpSb3VuZGVk
SW50UmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25z
dCBJbnRTaXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50
U2l6ZSYgYm90dG9tUmlnaHQpCi0gICAgOiBtX3JlY3QocmVjdCkKLSAgICAsIG1fcmFkaWkodG9w
TGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KQotewotfQotCi12b2lkIFJv
dW5kZWRJbnRSZWN0OjppbmNsdWRlTG9naWNhbEVkZ2VzKGNvbnN0IFJhZGlpJiBlZGdlcywgYm9v
bCBpc0hvcml6b250YWwsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRl
TG9naWNhbFJpZ2h0RWRnZSkKLXsKLSAgICBtX3JhZGlpLmluY2x1ZGVMb2dpY2FsRWRnZXMoZWRn
ZXMsIGlzSG9yaXpvbnRhbCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UpOwotfQotCi12b2lkIFJvdW5kZWRJbnRSZWN0OjpleGNsdWRlTG9naWNhbEVkZ2Vz
KGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGV4Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgZXhj
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpCi17Ci0gICAgbV9yYWRpaS5leGNsdWRlTG9naWNhbEVkZ2Vz
KGlzSG9yaXpvbnRhbCwgZXhjbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgZXhjbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpOwotfQotCi1ib29sIFJvdW5kZWRJbnRSZWN0Ojppc1JlbmRlcmFibGUoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3JhZGlpLnRvcExlZnQoKS53aWR0aCgpICsgbV9yYWRpaS50b3BSaWdo
dCgpLndpZHRoKCkgPD0gbV9yZWN0LndpZHRoKCkKLSAgICAgICAgJiYgbV9yYWRpaS5ib3R0b21M
ZWZ0KCkud2lkdGgoKSArIG1fcmFkaWkuYm90dG9tUmlnaHQoKS53aWR0aCgpIDw9IG1fcmVjdC53
aWR0aCgpCi0gICAgICAgICYmIG1fcmFkaWkudG9wTGVmdCgpLmhlaWdodCgpICsgbV9yYWRpaS50
b3BSaWdodCgpLmhlaWdodCgpIDw9IG1fcmVjdC5oZWlnaHQoKQotICAgICAgICAmJiBtX3JhZGlp
LmJvdHRvbUxlZnQoKS5oZWlnaHQoKSArIG1fcmFkaWkuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSA8
PSBtX3JlY3QuaGVpZ2h0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRJbnRSZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZEludFJlY3QuaAko
cmV2aXNpb24gOTA3OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3Vu
ZGVkSW50UmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExNiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
Ci0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgUm91bmRlZEludFJlY3RfaAotI2RlZmluZSBSb3VuZGVkSW50UmVjdF9o
Ci0KLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotCi1jbGFz
cyBSb3VuZGVkSW50UmVjdCB7Ci1wdWJsaWM6Ci0gICAgY2xhc3MgUmFkaWkgewotICAgIHB1Ymxp
YzoKLSAgICAgICAgUmFkaWkoKSB7fQotICAgICAgICBSYWRpaShjb25zdCBJbnRTaXplJiB0b3BM
ZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwg
Y29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQpCi0gICAgICAgICAgICA6IG1fdG9wTGVmdCh0b3BM
ZWZ0KQotICAgICAgICAgICAgLCBtX3RvcFJpZ2h0KHRvcFJpZ2h0KQotICAgICAgICAgICAgLCBt
X2JvdHRvbUxlZnQoYm90dG9tTGVmdCkKLSAgICAgICAgICAgICwgbV9ib3R0b21SaWdodChib3R0
b21SaWdodCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBzZXRUb3BMZWZ0
KGNvbnN0IEludFNpemUmIHNpemUpIHsgbV90b3BMZWZ0ID0gc2l6ZTsgfQotICAgICAgICB2b2lk
IHNldFRvcFJpZ2h0KGNvbnN0IEludFNpemUmIHNpemUpIHsgbV90b3BSaWdodCA9IHNpemU7IH0K
LSAgICAgICAgdm9pZCBzZXRCb3R0b21MZWZ0KGNvbnN0IEludFNpemUmIHNpemUpIHsgbV9ib3R0
b21MZWZ0ID0gc2l6ZTsgfQotICAgICAgICB2b2lkIHNldEJvdHRvbVJpZ2h0KGNvbnN0IEludFNp
emUmIHNpemUpIHsgbV9ib3R0b21SaWdodCA9IHNpemU7IH0KLSAgICAgICAgY29uc3QgSW50U2l6
ZSYgdG9wTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGVmdDsgfQotICAgICAgICBjb25zdCBJ
bnRTaXplJiB0b3BSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wUmlnaHQ7IH0KLSAgICAgICAg
Y29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tTGVmdDsg
fQotICAgICAgICBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
Ym90dG9tUmlnaHQ7IH0KLQotICAgICAgICBib29sIGlzWmVybygpIGNvbnN0OwotCi0gICAgICAg
IHZvaWQgaW5jbHVkZUxvZ2ljYWxFZGdlcyhjb25zdCBSYWRpaSYgZWRnZXMsIGJvb2wgaXNIb3Jp
em9udGFsLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UpOwotICAgICAgICB2b2lkIGV4Y2x1ZGVMb2dpY2FsRWRnZXMoYm9vbCBpc0hvcml6
b250YWwsIGJvb2wgZXhjbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBleGNsdWRlTG9naWNhbFJp
Z2h0RWRnZSk7Ci0KLSAgICAgICAgdm9pZCBzY2FsZShmbG9hdCBmYWN0b3IpOwotICAgICAgICB2
b2lkIGV4cGFuZChpbnQgdG9wV2lkdGgsIGludCBib3R0b21XaWR0aCwgaW50IGxlZnRXaWR0aCwg
aW50IHJpZ2h0V2lkdGgpOwotICAgICAgICB2b2lkIGV4cGFuZChpbnQgc2l6ZSkgeyBleHBhbmQo
c2l6ZSwgc2l6ZSwgc2l6ZSwgc2l6ZSk7IH0KLSAgICAgICAgdm9pZCBzaHJpbmsoaW50IHRvcFdp
ZHRoLCBpbnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgsIGludCByaWdodFdpZHRoKSB7IGV4
cGFuZCgtdG9wV2lkdGgsIC1ib3R0b21XaWR0aCwgLWxlZnRXaWR0aCwgLXJpZ2h0V2lkdGgpOyB9
Ci0gICAgICAgIHZvaWQgc2hyaW5rKGludCBzaXplKSB7IHNocmluayhzaXplLCBzaXplLCBzaXpl
LCBzaXplKTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgSW50U2l6ZSBtX3RvcExlZnQ7Ci0g
ICAgICAgIEludFNpemUgbV90b3BSaWdodDsKLSAgICAgICAgSW50U2l6ZSBtX2JvdHRvbUxlZnQ7
Ci0gICAgICAgIEludFNpemUgbV9ib3R0b21SaWdodDsKLSAgICB9OwotCi0gICAgZXhwbGljaXQg
Um91bmRlZEludFJlY3QoY29uc3QgSW50UmVjdCYsIGNvbnN0IFJhZGlpJiA9IFJhZGlpKCkpOwot
ICAgIFJvdW5kZWRJbnRSZWN0KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsK
LSAgICBSb3VuZGVkSW50UmVjdChjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgdG9wTGVm
dCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNv
bnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KTsKLQotICAgIGNvbnN0IEludFJlY3QmIHJlY3QoKSBj
b25zdCB7IHJldHVybiBtX3JlY3Q7IH0KLSAgICBjb25zdCBSYWRpaSYgcmFkaWkoKSBjb25zdCB7
IHJldHVybiBtX3JhZGlpOyB9Ci0gICAgYm9vbCBpc1JvdW5kZWQoKSBjb25zdCB7IHJldHVybiAh
bV9yYWRpaS5pc1plcm8oKTsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVjdC5pc0VtcHR5KCk7IH0KLQotICAgIHZvaWQgc2V0UmVjdChjb25zdCBJbnRSZWN0JiByZWN0
KSB7IG1fcmVjdCA9IHJlY3Q7IH0KLSAgICB2b2lkIHNldFJhZGlpKGNvbnN0IFJhZGlpJiByYWRp
aSkgeyBtX3JhZGlpID0gcmFkaWk7IH0KLQotICAgIHZvaWQgbW92ZShjb25zdCBJbnRTaXplJiBz
aXplKSB7IG1fcmVjdC5tb3ZlKHNpemUpOyB9Ci0gICAgdm9pZCBpbmZsYXRlKGludCBzaXplKSB7
IG1fcmVjdC5pbmZsYXRlKHNpemUpOyAgfQotICAgIHZvaWQgaW5mbGF0ZVdpdGhSYWRpaShpbnQg
c2l6ZSk7Ci0gICAgdm9pZCBleHBhbmRSYWRpaShpbnQgc2l6ZSkgeyBtX3JhZGlpLmV4cGFuZChz
aXplKTsgfQotICAgIHZvaWQgc2hyaW5rUmFkaWkoaW50IHNpemUpIHsgbV9yYWRpaS5zaHJpbmso
c2l6ZSk7IH0KLQotICAgIHZvaWQgaW5jbHVkZUxvZ2ljYWxFZGdlcyhjb25zdCBSYWRpaSYgZWRn
ZXMsIGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wg
aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwotICAgIHZvaWQgZXhjbHVkZUxvZ2ljYWxFZGdlcyhi
b29sIGlzSG9yaXpvbnRhbCwgYm9vbCBleGNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGV4Y2x1
ZGVMb2dpY2FsUmlnaHRFZGdlKTsKLQotICAgIGJvb2wgaXNSZW5kZXJhYmxlKCkgY29uc3Q7Ci0K
LXByaXZhdGU6Ci0gICAgSW50UmVjdCBtX3JlY3Q7Ci0gICAgUmFkaWkgbV9yYWRpaTsKLX07Ci0K
LWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiBhLCBj
b25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmIGIpCi17Ci0gICAgcmV0dXJuIGEudG9wTGVmdCgp
ID09IGIudG9wTGVmdCgpICYmIGEudG9wUmlnaHQoKSA9PSBiLnRvcFJpZ2h0KCkgJiYgYS5ib3R0
b21MZWZ0KCkgPT0gYi5ib3R0b21MZWZ0KCkgJiYgYS5ib3R0b21SaWdodCgpID09IGIuYm90dG9t
UmlnaHQoKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSb3VuZGVkSW50UmVj
dCYgYSwgY29uc3QgUm91bmRlZEludFJlY3QmIGIpCi17Ci0gICAgcmV0dXJuIGEucmVjdCgpID09
IGIucmVjdCgpICYmIGEucmFkaWkoKSA9PSBiLnJhZGlpKCk7Ci19Ci0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUm91bmRlZEludFJlY3RfaApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAkocmV2aXNpb24g
OTA3OTMpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRJbnRS
ZWN0LmNwcDo5MDc5MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5k
ZWRSZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwNiwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUm91bmRlZEludFJlY3QuaCIKKwor
I2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKK3VzaW5nIG5hbWVz
cGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBSb3VuZGVkSW50UmVjdDo6
UmFkaWk6OmlzWmVybygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdG9wTGVmdC5pc1plcm8oKSAm
JiBtX3RvcFJpZ2h0LmlzWmVybygpICYmIG1fYm90dG9tTGVmdC5pc1plcm8oKSAmJiBtX2JvdHRv
bVJpZ2h0LmlzWmVybygpOworfQorCit2b2lkIFJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6c2NhbGUo
ZmxvYXQgZmFjdG9yKQoreworICAgIGlmIChmYWN0b3IgPT0gMSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgLy8gSWYgZWl0aGVyIHJhZGl1cyBvbiBhIGNvcm5lciBiZWNvbWVzIHplcm8sIHJlc2V0
IGJvdGggcmFkaWkgb24gdGhhdCBjb3JuZXIuCisgICAgbV90b3BMZWZ0LnNjYWxlKGZhY3Rvcik7
CisgICAgaWYgKCFtX3RvcExlZnQud2lkdGgoKSB8fCAhbV90b3BMZWZ0LmhlaWdodCgpKQorICAg
ICAgICBtX3RvcExlZnQgPSBJbnRTaXplKCk7CisgICAgbV90b3BSaWdodC5zY2FsZShmYWN0b3Ip
OworICAgIGlmICghbV90b3BSaWdodC53aWR0aCgpIHx8ICFtX3RvcFJpZ2h0LmhlaWdodCgpKQor
ICAgICAgICBtX3RvcFJpZ2h0ID0gSW50U2l6ZSgpOworICAgIG1fYm90dG9tTGVmdC5zY2FsZShm
YWN0b3IpOworICAgIGlmICghbV9ib3R0b21MZWZ0LndpZHRoKCkgfHwgIW1fYm90dG9tTGVmdC5o
ZWlnaHQoKSkKKyAgICAgICAgbV9ib3R0b21MZWZ0ID0gSW50U2l6ZSgpOworICAgIG1fYm90dG9t
UmlnaHQuc2NhbGUoZmFjdG9yKTsKKyAgICBpZiAoIW1fYm90dG9tUmlnaHQud2lkdGgoKSB8fCAh
bV9ib3R0b21SaWdodC5oZWlnaHQoKSkKKyAgICAgICAgbV9ib3R0b21SaWdodCA9IEludFNpemUo
KTsKKworfQorCit2b2lkIFJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6ZXhwYW5kKGludCB0b3BXaWR0
aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQgcmlnaHRXaWR0aCkKK3sKKyAg
ICBtX3RvcExlZnQuc2V0V2lkdGgobWF4KDAsIG1fdG9wTGVmdC53aWR0aCgpICsgbGVmdFdpZHRo
KSk7CisgICAgbV90b3BMZWZ0LnNldEhlaWdodChtYXgoMCwgbV90b3BMZWZ0LmhlaWdodCgpICsg
dG9wV2lkdGgpKTsKKworICAgIG1fdG9wUmlnaHQuc2V0V2lkdGgobWF4KDAsIG1fdG9wUmlnaHQu
d2lkdGgoKSArIHJpZ2h0V2lkdGgpKTsKKyAgICBtX3RvcFJpZ2h0LnNldEhlaWdodChtYXgoMCwg
bV90b3BSaWdodC5oZWlnaHQoKSArIHRvcFdpZHRoKSk7CisKKyAgICBtX2JvdHRvbUxlZnQuc2V0
V2lkdGgobWF4KDAsIG1fYm90dG9tTGVmdC53aWR0aCgpICsgbGVmdFdpZHRoKSk7CisgICAgbV9i
b3R0b21MZWZ0LnNldEhlaWdodChtYXgoMCwgbV9ib3R0b21MZWZ0LmhlaWdodCgpICsgYm90dG9t
V2lkdGgpKTsKKworICAgIG1fYm90dG9tUmlnaHQuc2V0V2lkdGgobWF4KDAsIG1fYm90dG9tUmln
aHQud2lkdGgoKSArIHJpZ2h0V2lkdGgpKTsKKyAgICBtX2JvdHRvbVJpZ2h0LnNldEhlaWdodCht
YXgoMCwgbV9ib3R0b21SaWdodC5oZWlnaHQoKSArIGJvdHRvbVdpZHRoKSk7Cit9CisKK3ZvaWQg
Um91bmRlZEludFJlY3Q6OmluZmxhdGVXaXRoUmFkaWkoaW50IHNpemUpCit7CisgICAgSW50UmVj
dCBvbGQgPSBtX3JlY3Q7CisKKyAgICBtX3JlY3QuaW5mbGF0ZShzaXplKTsKKyAgICAvLyBDb25z
aWRlcmluZyB0aGUgaW5mbGF0aW9uIGZhY3RvciBvZiBzaG9ydGVyIHNpemUgdG8gc2NhbGUgdGhl
IHJhZGlpIHNlZW1zIGFwcHJvcHJpYXRlIGhlcmUKKyAgICBmbG9hdCBmYWN0b3I7CisgICAgaWYg
KG1fcmVjdC53aWR0aCgpIDwgbV9yZWN0LmhlaWdodCgpKQorICAgICAgICBmYWN0b3IgPSBvbGQu
d2lkdGgoKSA/IChmbG9hdCltX3JlY3Qud2lkdGgoKSAvIG9sZC53aWR0aCgpIDogMDsKKyAgICBl
bHNlCisgICAgICAgIGZhY3RvciA9IG9sZC5oZWlnaHQoKSA/IChmbG9hdCltX3JlY3QuaGVpZ2h0
KCkgLyBvbGQuaGVpZ2h0KCkgOiAwOworCisgICAgbV9yYWRpaS5zY2FsZShmYWN0b3IpOworfQor
Cit2b2lkIFJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6aW5jbHVkZUxvZ2ljYWxFZGdlcyhjb25zdCBS
b3VuZGVkSW50UmVjdDo6UmFkaWkmIGVkZ2VzLCBib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQoreworICAg
IGlmIChpbmNsdWRlTG9naWNhbExlZnRFZGdlKSB7CisgICAgICAgIGlmIChpc0hvcml6b250YWwp
CisgICAgICAgICAgICBtX2JvdHRvbUxlZnQgPSBlZGdlcy5ib3R0b21MZWZ0KCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG1fdG9wUmlnaHQgPSBlZGdlcy50b3BSaWdodCgpOworICAgICAg
ICBtX3RvcExlZnQgPSBlZGdlcy50b3BMZWZ0KCk7CisgICAgfQorCisgICAgaWYgKGluY2x1ZGVM
b2dpY2FsUmlnaHRFZGdlKSB7CisgICAgICAgIGlmIChpc0hvcml6b250YWwpCisgICAgICAgICAg
ICBtX3RvcFJpZ2h0ID0gZWRnZXMudG9wUmlnaHQoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9ib3R0b21MZWZ0ID0gZWRnZXMuYm90dG9tTGVmdCgpOworICAgICAgICBtX2JvdHRvbVJp
Z2h0ID0gZWRnZXMuYm90dG9tUmlnaHQoKTsKKyAgICB9Cit9CisKK3ZvaWQgUm91bmRlZEludFJl
Y3Q6OlJhZGlpOjpleGNsdWRlTG9naWNhbEVkZ2VzKGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGV4
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgZXhjbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCit7Cisg
ICAgaWYgKGV4Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UpIHsKKyAgICAgICAgaWYgKGlzSG9yaXpvbnRh
bCkKKyAgICAgICAgICAgIG1fYm90dG9tTGVmdCA9IEludFNpemUoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbV90b3BSaWdodCA9IEludFNpemUoKTsKKyAgICAgICAgbV90b3BMZWZ0ID0g
SW50U2l6ZSgpOworICAgIH0KKyAgICAgICAgCisgICAgaWYgKGV4Y2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKSB7CisgICAgICAgIGlmIChpc0hvcml6b250YWwpCisgICAgICAgICAgICBtX3RvcFJpZ2h0
ID0gSW50U2l6ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2JvdHRvbUxlZnQgPSBJ
bnRTaXplKCk7CisgICAgICAgIG1fYm90dG9tUmlnaHQgPSBJbnRTaXplKCk7CisgICAgfQorfQor
CitSb3VuZGVkSW50UmVjdDo6Um91bmRlZEludFJlY3QoaW50IHgsIGludCB5LCBpbnQgd2lkdGgs
IGludCBoZWlnaHQpCisgICAgOiBtX3JlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkKK3sKK30KKwor
Um91bmRlZEludFJlY3Q6OlJvdW5kZWRJbnRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IFJhZGlpJiByYWRpaSkKKyAgICA6IG1fcmVjdChyZWN0KQorICAgICwgbV9yYWRpaShyYWRpaSkK
K3sKK30KKworUm91bmRlZEludFJlY3Q6OlJvdW5kZWRJbnRSZWN0KGNvbnN0IEludFJlY3QmIHJl
Y3QsIGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25z
dCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCkKKyAgICA6
IG1fcmVjdChyZWN0KQorICAgICwgbV9yYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVm
dCwgYm90dG9tUmlnaHQpCit7Cit9CisKK3ZvaWQgUm91bmRlZEludFJlY3Q6OmluY2x1ZGVMb2dp
Y2FsRWRnZXMoY29uc3QgUmFkaWkmIGVkZ2VzLCBib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQoreworICAg
IG1fcmFkaWkuaW5jbHVkZUxvZ2ljYWxFZGdlcyhlZGdlcywgaXNIb3Jpem9udGFsLCBpbmNsdWRl
TG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7Cit9CisKK3ZvaWQgUm91
bmRlZEludFJlY3Q6OmV4Y2x1ZGVMb2dpY2FsRWRnZXMoYm9vbCBpc0hvcml6b250YWwsIGJvb2wg
ZXhjbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBleGNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKK3sK
KyAgICBtX3JhZGlpLmV4Y2x1ZGVMb2dpY2FsRWRnZXMoaXNIb3Jpem9udGFsLCBleGNsdWRlTG9n
aWNhbExlZnRFZGdlLCBleGNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7Cit9CisKK2Jvb2wgUm91bmRl
ZEludFJlY3Q6OmlzUmVuZGVyYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmFkaWkudG9w
TGVmdCgpLndpZHRoKCkgKyBtX3JhZGlpLnRvcFJpZ2h0KCkud2lkdGgoKSA8PSBtX3JlY3Qud2lk
dGgoKQorICAgICAgICAmJiBtX3JhZGlpLmJvdHRvbUxlZnQoKS53aWR0aCgpICsgbV9yYWRpaS5i
b3R0b21SaWdodCgpLndpZHRoKCkgPD0gbV9yZWN0LndpZHRoKCkKKyAgICAgICAgJiYgbV9yYWRp
aS50b3BMZWZ0KCkuaGVpZ2h0KCkgKyBtX3JhZGlpLnRvcFJpZ2h0KCkuaGVpZ2h0KCkgPD0gbV9y
ZWN0LmhlaWdodCgpCisgICAgICAgICYmIG1fcmFkaWkuYm90dG9tTGVmdCgpLmhlaWdodCgpICsg
bV9yYWRpaS5ib3R0b21SaWdodCgpLmhlaWdodCgpIDw9IG1fcmVjdC5oZWlnaHQoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUm91bmRlZFJlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAkocmV2aXNpb24gOTA3OTMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDIxICsyNSwyMCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJSb3VuZGVkSW50UmVjdC5oIgorI2luY2x1ZGUgIlJvdW5kZWRSZWN0LmgiCiAKLSNpbmNsdWRl
ICJJbnRSZWN0LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgUm91bmRlZEludFJlY3Q6OlJhZGlpOjpp
c1plcm8oKSBjb25zdAorYm9vbCBSb3VuZGVkUmVjdDo6UmFkaWk6OmlzWmVybygpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fdG9wTGVmdC5pc1plcm8oKSAmJiBtX3RvcFJpZ2h0LmlzWmVybygpICYm
IG1fYm90dG9tTGVmdC5pc1plcm8oKSAmJiBtX2JvdHRvbVJpZ2h0LmlzWmVybygpOwogfQogCi12
b2lkIFJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6c2NhbGUoZmxvYXQgZmFjdG9yKQordm9pZCBSb3Vu
ZGVkUmVjdDo6UmFkaWk6OnNjYWxlKGZsb2F0IGZhY3RvcikKIHsKICAgICBpZiAoZmFjdG9yID09
IDEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ3LDIwICs0NiwyMCBAQCB2b2lkIFJvdW5kZWRJbnRS
ZWN0OjpSYWRpaTo6c2NhbGUoZmxvYXQgCiAgICAgLy8gSWYgZWl0aGVyIHJhZGl1cyBvbiBhIGNv
cm5lciBiZWNvbWVzIHplcm8sIHJlc2V0IGJvdGggcmFkaWkgb24gdGhhdCBjb3JuZXIuCiAgICAg
bV90b3BMZWZ0LnNjYWxlKGZhY3Rvcik7CiAgICAgaWYgKCFtX3RvcExlZnQud2lkdGgoKSB8fCAh
bV90b3BMZWZ0LmhlaWdodCgpKQotICAgICAgICBtX3RvcExlZnQgPSBJbnRTaXplKCk7CisgICAg
ICAgIG1fdG9wTGVmdCA9IExheW91dFNpemUoKTsKICAgICBtX3RvcFJpZ2h0LnNjYWxlKGZhY3Rv
cik7CiAgICAgaWYgKCFtX3RvcFJpZ2h0LndpZHRoKCkgfHwgIW1fdG9wUmlnaHQuaGVpZ2h0KCkp
Ci0gICAgICAgIG1fdG9wUmlnaHQgPSBJbnRTaXplKCk7CisgICAgICAgIG1fdG9wUmlnaHQgPSBM
YXlvdXRTaXplKCk7CiAgICAgbV9ib3R0b21MZWZ0LnNjYWxlKGZhY3Rvcik7CiAgICAgaWYgKCFt
X2JvdHRvbUxlZnQud2lkdGgoKSB8fCAhbV9ib3R0b21MZWZ0LmhlaWdodCgpKQotICAgICAgICBt
X2JvdHRvbUxlZnQgPSBJbnRTaXplKCk7CisgICAgICAgIG1fYm90dG9tTGVmdCA9IExheW91dFNp
emUoKTsKICAgICBtX2JvdHRvbVJpZ2h0LnNjYWxlKGZhY3Rvcik7CiAgICAgaWYgKCFtX2JvdHRv
bVJpZ2h0LndpZHRoKCkgfHwgIW1fYm90dG9tUmlnaHQuaGVpZ2h0KCkpCi0gICAgICAgIG1fYm90
dG9tUmlnaHQgPSBJbnRTaXplKCk7CisgICAgICAgIG1fYm90dG9tUmlnaHQgPSBMYXlvdXRTaXpl
KCk7CiAKIH0KIAotdm9pZCBSb3VuZGVkSW50UmVjdDo6UmFkaWk6OmV4cGFuZChpbnQgdG9wV2lk
dGgsIGludCBib3R0b21XaWR0aCwgaW50IGxlZnRXaWR0aCwgaW50IHJpZ2h0V2lkdGgpCit2b2lk
IFJvdW5kZWRSZWN0OjpSYWRpaTo6ZXhwYW5kKExheW91dFVuaXQgdG9wV2lkdGgsIExheW91dFVu
aXQgYm90dG9tV2lkdGgsIExheW91dFVuaXQgbGVmdFdpZHRoLCBMYXlvdXRVbml0IHJpZ2h0V2lk
dGgpCiB7CiAgICAgbV90b3BMZWZ0LnNldFdpZHRoKG1heCgwLCBtX3RvcExlZnQud2lkdGgoKSAr
IGxlZnRXaWR0aCkpOwogICAgIG1fdG9wTGVmdC5zZXRIZWlnaHQobWF4KDAsIG1fdG9wTGVmdC5o
ZWlnaHQoKSArIHRvcFdpZHRoKSk7CkBAIC03NSw5ICs3NCw5IEBAIHZvaWQgUm91bmRlZEludFJl
Y3Q6OlJhZGlpOjpleHBhbmQoaW50IHQKICAgICBtX2JvdHRvbVJpZ2h0LnNldEhlaWdodChtYXgo
MCwgbV9ib3R0b21SaWdodC5oZWlnaHQoKSArIGJvdHRvbVdpZHRoKSk7CiB9CiAKLXZvaWQgUm91
bmRlZEludFJlY3Q6OmluZmxhdGVXaXRoUmFkaWkoaW50IHNpemUpCit2b2lkIFJvdW5kZWRSZWN0
OjppbmZsYXRlV2l0aFJhZGlpKExheW91dFVuaXQgc2l6ZSkKIHsKLSAgICBJbnRSZWN0IG9sZCA9
IG1fcmVjdDsKKyAgICBMYXlvdXRSZWN0IG9sZCA9IG1fcmVjdDsKIAogICAgIG1fcmVjdC5pbmZs
YXRlKHNpemUpOwogICAgIC8vIENvbnNpZGVyaW5nIHRoZSBpbmZsYXRpb24gZmFjdG9yIG9mIHNo
b3J0ZXIgc2l6ZSB0byBzY2FsZSB0aGUgcmFkaWkgc2VlbXMgYXBwcm9wcmlhdGUgaGVyZQpAQCAt
OTAsNyArODksNyBAQCB2b2lkIFJvdW5kZWRJbnRSZWN0OjppbmZsYXRlV2l0aFJhZGlpKGluCiAg
ICAgbV9yYWRpaS5zY2FsZShmYWN0b3IpOwogfQogCi12b2lkIFJvdW5kZWRJbnRSZWN0OjpSYWRp
aTo6aW5jbHVkZUxvZ2ljYWxFZGdlcyhjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmIGVkZ2Vz
LCBib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGlu
Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQordm9pZCBSb3VuZGVkUmVjdDo6UmFkaWk6OmluY2x1ZGVM
b2dpY2FsRWRnZXMoY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiBlZGdlcywgYm9vbCBpc0hvcml6
b250YWwsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJp
Z2h0RWRnZSkKIHsKICAgICBpZiAoaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgewogICAgICAgICBp
ZiAoaXNIb3Jpem9udGFsKQpAQCAtMTA5LDUzICsxMDgsNTMgQEAgdm9pZCBSb3VuZGVkSW50UmVj
dDo6UmFkaWk6OmluY2x1ZGVMb2dpYwogICAgIH0KIH0KIAotdm9pZCBSb3VuZGVkSW50UmVjdDo6
UmFkaWk6OmV4Y2x1ZGVMb2dpY2FsRWRnZXMoYm9vbCBpc0hvcml6b250YWwsIGJvb2wgZXhjbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBleGNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKK3ZvaWQgUm91
bmRlZFJlY3Q6OlJhZGlpOjpleGNsdWRlTG9naWNhbEVkZ2VzKGJvb2wgaXNIb3Jpem9udGFsLCBi
b29sIGV4Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgZXhjbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
CiB7CiAgICAgaWYgKGV4Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UpIHsKICAgICAgICAgaWYgKGlzSG9y
aXpvbnRhbCkKLSAgICAgICAgICAgIG1fYm90dG9tTGVmdCA9IEludFNpemUoKTsKKyAgICAgICAg
ICAgIG1fYm90dG9tTGVmdCA9IExheW91dFNpemUoKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbV90b3BSaWdodCA9IEludFNpemUoKTsKLSAgICAgICAgbV90b3BMZWZ0ID0gSW50U2l6ZSgp
OworICAgICAgICAgICAgbV90b3BSaWdodCA9IExheW91dFNpemUoKTsKKyAgICAgICAgbV90b3BM
ZWZ0ID0gTGF5b3V0U2l6ZSgpOwogICAgIH0KICAgICAgICAgCiAgICAgaWYgKGV4Y2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKSB7CiAgICAgICAgIGlmIChpc0hvcml6b250YWwpCi0gICAgICAgICAgICBt
X3RvcFJpZ2h0ID0gSW50U2l6ZSgpOworICAgICAgICAgICAgbV90b3BSaWdodCA9IExheW91dFNp
emUoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9ib3R0b21MZWZ0ID0gSW50U2l6ZSgp
OwotICAgICAgICBtX2JvdHRvbVJpZ2h0ID0gSW50U2l6ZSgpOworICAgICAgICAgICAgbV9ib3R0
b21MZWZ0ID0gTGF5b3V0U2l6ZSgpOworICAgICAgICBtX2JvdHRvbVJpZ2h0ID0gTGF5b3V0U2l6
ZSgpOwogICAgIH0KIH0KIAotUm91bmRlZEludFJlY3Q6OlJvdW5kZWRJbnRSZWN0KGludCB4LCBp
bnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorUm91bmRlZFJlY3Q6OlJvdW5kZWRSZWN0KExh
eW91dFVuaXQgeCwgTGF5b3V0VW5pdCB5LCBMYXlvdXRVbml0IHdpZHRoLCBMYXlvdXRVbml0IGhl
aWdodCkKICAgICA6IG1fcmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KQogewogfQogCi1Sb3VuZGVk
SW50UmVjdDo6Um91bmRlZEludFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUmFkaWkm
IHJhZGlpKQorUm91bmRlZFJlY3Q6OlJvdW5kZWRSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3Qs
IGNvbnN0IFJhZGlpJiByYWRpaSkKICAgICA6IG1fcmVjdChyZWN0KQogICAgICwgbV9yYWRpaShy
YWRpaSkKIHsKIH0KIAotUm91bmRlZEludFJlY3Q6OlJvdW5kZWRJbnRSZWN0KGNvbnN0IEludFJl
Y3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0
LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCkK
K1JvdW5kZWRSZWN0OjpSb3VuZGVkUmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBM
YXlvdXRTaXplJiB0b3BMZWZ0LCBjb25zdCBMYXlvdXRTaXplJiB0b3BSaWdodCwgY29uc3QgTGF5
b3V0U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgTGF5b3V0U2l6ZSYgYm90dG9tUmlnaHQpCiAgICAg
OiBtX3JlY3QocmVjdCkKICAgICAsIG1fcmFkaWkodG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxl
ZnQsIGJvdHRvbVJpZ2h0KQogewogfQogCi12b2lkIFJvdW5kZWRJbnRSZWN0OjppbmNsdWRlTG9n
aWNhbEVkZ2VzKGNvbnN0IFJhZGlpJiBlZGdlcywgYm9vbCBpc0hvcml6b250YWwsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKK3ZvaWQg
Um91bmRlZFJlY3Q6OmluY2x1ZGVMb2dpY2FsRWRnZXMoY29uc3QgUmFkaWkmIGVkZ2VzLCBib29s
IGlzSG9yaXpvbnRhbCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVM
b2dpY2FsUmlnaHRFZGdlKQogewogICAgIG1fcmFkaWkuaW5jbHVkZUxvZ2ljYWxFZGdlcyhlZGdl
cywgaXNIb3Jpem9udGFsLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJp
Z2h0RWRnZSk7CiB9CiAKLXZvaWQgUm91bmRlZEludFJlY3Q6OmV4Y2x1ZGVMb2dpY2FsRWRnZXMo
Ym9vbCBpc0hvcml6b250YWwsIGJvb2wgZXhjbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBleGNs
dWRlTG9naWNhbFJpZ2h0RWRnZSkKK3ZvaWQgUm91bmRlZFJlY3Q6OmV4Y2x1ZGVMb2dpY2FsRWRn
ZXMoYm9vbCBpc0hvcml6b250YWwsIGJvb2wgZXhjbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBl
eGNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKIHsKICAgICBtX3JhZGlpLmV4Y2x1ZGVMb2dpY2FsRWRn
ZXMoaXNIb3Jpem9udGFsLCBleGNsdWRlTG9naWNhbExlZnRFZGdlLCBleGNsdWRlTG9naWNhbFJp
Z2h0RWRnZSk7CiB9CiAKLWJvb2wgUm91bmRlZEludFJlY3Q6OmlzUmVuZGVyYWJsZSgpIGNvbnN0
Citib29sIFJvdW5kZWRSZWN0Ojppc1JlbmRlcmFibGUoKSBjb25zdAogewogICAgIHJldHVybiBt
X3JhZGlpLnRvcExlZnQoKS53aWR0aCgpICsgbV9yYWRpaS50b3BSaWdodCgpLndpZHRoKCkgPD0g
bV9yZWN0LndpZHRoKCkKICAgICAgICAgJiYgbV9yYWRpaS5ib3R0b21MZWZ0KCkud2lkdGgoKSAr
IG1fcmFkaWkuYm90dG9tUmlnaHQoKS53aWR0aCgpIDw9IG1fcmVjdC53aWR0aCgpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmgJKHJldmlz
aW9uIDkwNzkzKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVk
SW50UmVjdC5oOjkwNzkzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91
bmRlZFJlY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwNiwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFJvdW5kZWRJbnRSZWN0X2gKKyNkZWZpbmUgUm91bmRlZEludFJlY3RfaAor
CisjaW5jbHVkZSAiSW50UmVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKworY2xhc3Mg
Um91bmRlZEludFJlY3QgeworcHVibGljOgorICAgIGNsYXNzIFJhZGlpIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIFJhZGlpKCkge30KKyAgICAgICAgUmFkaWkoY29uc3QgSW50U2l6ZSYgdG9wTGVm
dCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNv
bnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KQorICAgICAgICAgICAgOiBtX3RvcExlZnQodG9wTGVm
dCkKKyAgICAgICAgICAgICwgbV90b3BSaWdodCh0b3BSaWdodCkKKyAgICAgICAgICAgICwgbV9i
b3R0b21MZWZ0KGJvdHRvbUxlZnQpCisgICAgICAgICAgICAsIG1fYm90dG9tUmlnaHQoYm90dG9t
UmlnaHQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgc2V0VG9wTGVmdChj
b25zdCBJbnRTaXplJiBzaXplKSB7IG1fdG9wTGVmdCA9IHNpemU7IH0KKyAgICAgICAgdm9pZCBz
ZXRUb3BSaWdodChjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fdG9wUmlnaHQgPSBzaXplOyB9Cisg
ICAgICAgIHZvaWQgc2V0Qm90dG9tTGVmdChjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fYm90dG9t
TGVmdCA9IHNpemU7IH0KKyAgICAgICAgdm9pZCBzZXRCb3R0b21SaWdodChjb25zdCBJbnRTaXpl
JiBzaXplKSB7IG1fYm90dG9tUmlnaHQgPSBzaXplOyB9CisgICAgICAgIGNvbnN0IEludFNpemUm
IHRvcExlZnQoKSBjb25zdCB7IHJldHVybiBtX3RvcExlZnQ7IH0KKyAgICAgICAgY29uc3QgSW50
U2l6ZSYgdG9wUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3RvcFJpZ2h0OyB9CisgICAgICAgIGNv
bnN0IEludFNpemUmIGJvdHRvbUxlZnQoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbUxlZnQ7IH0K
KyAgICAgICAgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX2Jv
dHRvbVJpZ2h0OyB9CisKKyAgICAgICAgYm9vbCBpc1plcm8oKSBjb25zdDsKKworICAgICAgICB2
b2lkIGluY2x1ZGVMb2dpY2FsRWRnZXMoY29uc3QgUmFkaWkmIGVkZ2VzLCBib29sIGlzSG9yaXpv
bnRhbCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlKTsKKyAgICAgICAgdm9pZCBleGNsdWRlTG9naWNhbEVkZ2VzKGJvb2wgaXNIb3Jpem9u
dGFsLCBib29sIGV4Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgZXhjbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpOworCisgICAgICAgIHZvaWQgc2NhbGUoZmxvYXQgZmFjdG9yKTsKKyAgICAgICAgdm9p
ZCBleHBhbmQoaW50IHRvcFdpZHRoLCBpbnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgsIGlu
dCByaWdodFdpZHRoKTsKKyAgICAgICAgdm9pZCBleHBhbmQoaW50IHNpemUpIHsgZXhwYW5kKHNp
emUsIHNpemUsIHNpemUsIHNpemUpOyB9CisgICAgICAgIHZvaWQgc2hyaW5rKGludCB0b3BXaWR0
aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQgcmlnaHRXaWR0aCkgeyBleHBh
bmQoLXRvcFdpZHRoLCAtYm90dG9tV2lkdGgsIC1sZWZ0V2lkdGgsIC1yaWdodFdpZHRoKTsgfQor
ICAgICAgICB2b2lkIHNocmluayhpbnQgc2l6ZSkgeyBzaHJpbmsoc2l6ZSwgc2l6ZSwgc2l6ZSwg
c2l6ZSk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEludFNpemUgbV90b3BMZWZ0OworICAg
ICAgICBJbnRTaXplIG1fdG9wUmlnaHQ7CisgICAgICAgIEludFNpemUgbV9ib3R0b21MZWZ0Owor
ICAgICAgICBJbnRTaXplIG1fYm90dG9tUmlnaHQ7CisgICAgfTsKKworICAgIGV4cGxpY2l0IFJv
dW5kZWRJbnRSZWN0KGNvbnN0IEludFJlY3QmLCBjb25zdCBSYWRpaSYgPSBSYWRpaSgpKTsKKyAg
ICBSb3VuZGVkSW50UmVjdChpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCk7Cisg
ICAgUm91bmRlZEludFJlY3QoY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmIHRvcExlZnQs
IGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25z
dCBJbnRTaXplJiBib3R0b21SaWdodCk7CisKKyAgICBjb25zdCBJbnRSZWN0JiByZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9yZWN0OyB9CisgICAgY29uc3QgUmFkaWkmIHJhZGlpKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYWRpaTsgfQorICAgIGJvb2wgaXNSb3VuZGVkKCkgY29uc3QgeyByZXR1cm4gIW1f
cmFkaWkuaXNaZXJvKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3Jl
Y3QuaXNFbXB0eSgpOyB9CisKKyAgICB2b2lkIHNldFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkg
eyBtX3JlY3QgPSByZWN0OyB9CisgICAgdm9pZCBzZXRSYWRpaShjb25zdCBSYWRpaSYgcmFkaWkp
IHsgbV9yYWRpaSA9IHJhZGlpOyB9CisKKyAgICB2b2lkIG1vdmUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkgeyBtX3JlY3QubW92ZShzaXplKTsgfQorICAgIHZvaWQgaW5mbGF0ZShpbnQgc2l6ZSkgeyBt
X3JlY3QuaW5mbGF0ZShzaXplKTsgIH0KKyAgICB2b2lkIGluZmxhdGVXaXRoUmFkaWkoaW50IHNp
emUpOworICAgIHZvaWQgZXhwYW5kUmFkaWkoaW50IHNpemUpIHsgbV9yYWRpaS5leHBhbmQoc2l6
ZSk7IH0KKyAgICB2b2lkIHNocmlua1JhZGlpKGludCBzaXplKSB7IG1fcmFkaWkuc2hyaW5rKHNp
emUpOyB9CisKKyAgICB2b2lkIGluY2x1ZGVMb2dpY2FsRWRnZXMoY29uc3QgUmFkaWkmIGVkZ2Vz
LCBib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGlu
Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKKyAgICB2b2lkIGV4Y2x1ZGVMb2dpY2FsRWRnZXMoYm9v
bCBpc0hvcml6b250YWwsIGJvb2wgZXhjbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBleGNsdWRl
TG9naWNhbFJpZ2h0RWRnZSk7CisKKyAgICBib29sIGlzUmVuZGVyYWJsZSgpIGNvbnN0OworCitw
cml2YXRlOgorICAgIEludFJlY3QgbV9yZWN0OworICAgIFJhZGlpIG1fcmFkaWk7Cit9OworCitp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJvdW5kZWRJbnRSZWN0OjpSYWRpaSYgYSwgY29u
c3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiBiKQoreworICAgIHJldHVybiBhLnRvcExlZnQoKSA9
PSBiLnRvcExlZnQoKSAmJiBhLnRvcFJpZ2h0KCkgPT0gYi50b3BSaWdodCgpICYmIGEuYm90dG9t
TGVmdCgpID09IGIuYm90dG9tTGVmdCgpICYmIGEuYm90dG9tUmlnaHQoKSA9PSBiLmJvdHRvbVJp
Z2h0KCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUm91bmRlZEludFJlY3Qm
IGEsIGNvbnN0IFJvdW5kZWRJbnRSZWN0JiBiKQoreworICAgIHJldHVybiBhLnJlY3QoKSA9PSBi
LnJlY3QoKSAmJiBhLnJhZGlpKCkgPT0gYi5yYWRpaSgpOworfQorCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIFJvdW5kZWRJbnRSZWN0X2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaAkocmV2aXNpb24gOTA3OTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCwyMCArMjQsMjAgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBSb3VuZGVkSW50UmVjdF9oCi0jZGVmaW5lIFJvdW5kZWRJbnRSZWN0X2gKKyNpZm5kZWYgUm91
bmRlZFJlY3RfaAorI2RlZmluZSBSb3VuZGVkUmVjdF9oCiAKLSNpbmNsdWRlICJJbnRSZWN0Lmgi
CisjaW5jbHVkZSAiTGF5b3V0VHlwZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAKLWNs
YXNzIFJvdW5kZWRJbnRSZWN0IHsKK2NsYXNzIFJvdW5kZWRSZWN0IHsKIHB1YmxpYzoKICAgICBj
bGFzcyBSYWRpaSB7CiAgICAgcHVibGljOgogICAgICAgICBSYWRpaSgpIHt9Ci0gICAgICAgIFJh
ZGlpKGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25z
dCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCkKKyAgICAg
ICAgUmFkaWkoY29uc3QgTGF5b3V0U2l6ZSYgdG9wTGVmdCwgY29uc3QgTGF5b3V0U2l6ZSYgdG9w
UmlnaHQsIGNvbnN0IExheW91dFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IExheW91dFNpemUmIGJv
dHRvbVJpZ2h0KQogICAgICAgICAgICAgOiBtX3RvcExlZnQodG9wTGVmdCkKICAgICAgICAgICAg
ICwgbV90b3BSaWdodCh0b3BSaWdodCkKICAgICAgICAgICAgICwgbV9ib3R0b21MZWZ0KGJvdHRv
bUxlZnQpCkBAIC00NSwxNCArNDUsMTQgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgIH0K
IAotICAgICAgICB2b2lkIHNldFRvcExlZnQoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX3RvcExl
ZnQgPSBzaXplOyB9Ci0gICAgICAgIHZvaWQgc2V0VG9wUmlnaHQoY29uc3QgSW50U2l6ZSYgc2l6
ZSkgeyBtX3RvcFJpZ2h0ID0gc2l6ZTsgfQotICAgICAgICB2b2lkIHNldEJvdHRvbUxlZnQoY29u
c3QgSW50U2l6ZSYgc2l6ZSkgeyBtX2JvdHRvbUxlZnQgPSBzaXplOyB9Ci0gICAgICAgIHZvaWQg
c2V0Qm90dG9tUmlnaHQoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX2JvdHRvbVJpZ2h0ID0gc2l6
ZTsgfQotICAgICAgICBjb25zdCBJbnRTaXplJiB0b3BMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV90
b3BMZWZ0OyB9Ci0gICAgICAgIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbV90b3BSaWdodDsgfQotICAgICAgICBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0KCkgY29u
c3QgeyByZXR1cm4gbV9ib3R0b21MZWZ0OyB9Ci0gICAgICAgIGNvbnN0IEludFNpemUmIGJvdHRv
bVJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21SaWdodDsgfQorICAgICAgICB2b2lkIHNl
dFRvcExlZnQoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgeyBtX3RvcExlZnQgPSBzaXplOyB9Cisg
ICAgICAgIHZvaWQgc2V0VG9wUmlnaHQoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgeyBtX3RvcFJp
Z2h0ID0gc2l6ZTsgfQorICAgICAgICB2b2lkIHNldEJvdHRvbUxlZnQoY29uc3QgTGF5b3V0U2l6
ZSYgc2l6ZSkgeyBtX2JvdHRvbUxlZnQgPSBzaXplOyB9CisgICAgICAgIHZvaWQgc2V0Qm90dG9t
UmlnaHQoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgeyBtX2JvdHRvbVJpZ2h0ID0gc2l6ZTsgfQor
ICAgICAgICBjb25zdCBMYXlvdXRTaXplJiB0b3BMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV90b3BM
ZWZ0OyB9CisgICAgICAgIGNvbnN0IExheW91dFNpemUmIHRvcFJpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbV90b3BSaWdodDsgfQorICAgICAgICBjb25zdCBMYXlvdXRTaXplJiBib3R0b21MZWZ0KCkg
Y29uc3QgeyByZXR1cm4gbV9ib3R0b21MZWZ0OyB9CisgICAgICAgIGNvbnN0IExheW91dFNpemUm
IGJvdHRvbVJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21SaWdodDsgfQogCiAgICAgICAg
IGJvb2wgaXNaZXJvKCkgY29uc3Q7CiAKQEAgLTYwLDM1ICs2MCwzNSBAQCBwdWJsaWM6CiAgICAg
ICAgIHZvaWQgZXhjbHVkZUxvZ2ljYWxFZGdlcyhib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBleGNs
dWRlTG9naWNhbExlZnRFZGdlLCBib29sIGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIAogICAg
ICAgICB2b2lkIHNjYWxlKGZsb2F0IGZhY3Rvcik7Ci0gICAgICAgIHZvaWQgZXhwYW5kKGludCB0
b3BXaWR0aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQgcmlnaHRXaWR0aCk7
Ci0gICAgICAgIHZvaWQgZXhwYW5kKGludCBzaXplKSB7IGV4cGFuZChzaXplLCBzaXplLCBzaXpl
LCBzaXplKTsgfQotICAgICAgICB2b2lkIHNocmluayhpbnQgdG9wV2lkdGgsIGludCBib3R0b21X
aWR0aCwgaW50IGxlZnRXaWR0aCwgaW50IHJpZ2h0V2lkdGgpIHsgZXhwYW5kKC10b3BXaWR0aCwg
LWJvdHRvbVdpZHRoLCAtbGVmdFdpZHRoLCAtcmlnaHRXaWR0aCk7IH0KLSAgICAgICAgdm9pZCBz
aHJpbmsoaW50IHNpemUpIHsgc2hyaW5rKHNpemUsIHNpemUsIHNpemUsIHNpemUpOyB9CisgICAg
ICAgIHZvaWQgZXhwYW5kKExheW91dFVuaXQgdG9wV2lkdGgsIExheW91dFVuaXQgYm90dG9tV2lk
dGgsIExheW91dFVuaXQgbGVmdFdpZHRoLCBMYXlvdXRVbml0IHJpZ2h0V2lkdGgpOworICAgICAg
ICB2b2lkIGV4cGFuZChMYXlvdXRVbml0IHNpemUpIHsgZXhwYW5kKHNpemUsIHNpemUsIHNpemUs
IHNpemUpOyB9CisgICAgICAgIHZvaWQgc2hyaW5rKExheW91dFVuaXQgdG9wV2lkdGgsIExheW91
dFVuaXQgYm90dG9tV2lkdGgsIExheW91dFVuaXQgbGVmdFdpZHRoLCBMYXlvdXRVbml0IHJpZ2h0
V2lkdGgpIHsgZXhwYW5kKC10b3BXaWR0aCwgLWJvdHRvbVdpZHRoLCAtbGVmdFdpZHRoLCAtcmln
aHRXaWR0aCk7IH0KKyAgICAgICAgdm9pZCBzaHJpbmsoTGF5b3V0VW5pdCBzaXplKSB7IHNocmlu
ayhzaXplLCBzaXplLCBzaXplLCBzaXplKTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSW50
U2l6ZSBtX3RvcExlZnQ7Ci0gICAgICAgIEludFNpemUgbV90b3BSaWdodDsKLSAgICAgICAgSW50
U2l6ZSBtX2JvdHRvbUxlZnQ7Ci0gICAgICAgIEludFNpemUgbV9ib3R0b21SaWdodDsKKyAgICAg
ICAgTGF5b3V0U2l6ZSBtX3RvcExlZnQ7CisgICAgICAgIExheW91dFNpemUgbV90b3BSaWdodDsK
KyAgICAgICAgTGF5b3V0U2l6ZSBtX2JvdHRvbUxlZnQ7CisgICAgICAgIExheW91dFNpemUgbV9i
b3R0b21SaWdodDsKICAgICB9OwogCi0gICAgZXhwbGljaXQgUm91bmRlZEludFJlY3QoY29uc3Qg
SW50UmVjdCYsIGNvbnN0IFJhZGlpJiA9IFJhZGlpKCkpOwotICAgIFJvdW5kZWRJbnRSZWN0KGlu
dCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSAgICBSb3VuZGVkSW50UmVjdChj
b25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9w
UmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJp
Z2h0KTsKKyAgICBleHBsaWNpdCBSb3VuZGVkUmVjdChjb25zdCBMYXlvdXRSZWN0JiwgY29uc3Qg
UmFkaWkmID0gUmFkaWkoKSk7CisgICAgUm91bmRlZFJlY3QoTGF5b3V0VW5pdCB4LCBMYXlvdXRV
bml0IHksIExheW91dFVuaXQgd2lkdGgsIExheW91dFVuaXQgaGVpZ2h0KTsKKyAgICBSb3VuZGVk
UmVjdChjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgTGF5b3V0U2l6ZSYgdG9wTGVmdCwgY29uc3Qg
TGF5b3V0U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IExheW91dFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0
IExheW91dFNpemUmIGJvdHRvbVJpZ2h0KTsKIAotICAgIGNvbnN0IEludFJlY3QmIHJlY3QoKSBj
b25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBjb25zdCBMYXlvdXRSZWN0JiByZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9yZWN0OyB9CiAgICAgY29uc3QgUmFkaWkmIHJhZGlpKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYWRpaTsgfQogICAgIGJvb2wgaXNSb3VuZGVkKCkgY29uc3QgeyByZXR1cm4gIW1f
cmFkaWkuaXNaZXJvKCk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3Jl
Y3QuaXNFbXB0eSgpOyB9CiAKLSAgICB2b2lkIHNldFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkg
eyBtX3JlY3QgPSByZWN0OyB9CisgICAgdm9pZCBzZXRSZWN0KGNvbnN0IExheW91dFJlY3QmIHJl
Y3QpIHsgbV9yZWN0ID0gcmVjdDsgfQogICAgIHZvaWQgc2V0UmFkaWkoY29uc3QgUmFkaWkmIHJh
ZGlpKSB7IG1fcmFkaWkgPSByYWRpaTsgfQogCi0gICAgdm9pZCBtb3ZlKGNvbnN0IEludFNpemUm
IHNpemUpIHsgbV9yZWN0Lm1vdmUoc2l6ZSk7IH0KLSAgICB2b2lkIGluZmxhdGUoaW50IHNpemUp
IHsgbV9yZWN0LmluZmxhdGUoc2l6ZSk7ICB9Ci0gICAgdm9pZCBpbmZsYXRlV2l0aFJhZGlpKGlu
dCBzaXplKTsKLSAgICB2b2lkIGV4cGFuZFJhZGlpKGludCBzaXplKSB7IG1fcmFkaWkuZXhwYW5k
KHNpemUpOyB9Ci0gICAgdm9pZCBzaHJpbmtSYWRpaShpbnQgc2l6ZSkgeyBtX3JhZGlpLnNocmlu
ayhzaXplKTsgfQorICAgIHZvaWQgbW92ZShjb25zdCBMYXlvdXRTaXplJiBzaXplKSB7IG1fcmVj
dC5tb3ZlKHNpemUpOyB9CisgICAgdm9pZCBpbmZsYXRlKExheW91dFVuaXQgc2l6ZSkgeyBtX3Jl
Y3QuaW5mbGF0ZShzaXplKTsgIH0KKyAgICB2b2lkIGluZmxhdGVXaXRoUmFkaWkoTGF5b3V0VW5p
dCBzaXplKTsKKyAgICB2b2lkIGV4cGFuZFJhZGlpKExheW91dFVuaXQgc2l6ZSkgeyBtX3JhZGlp
LmV4cGFuZChzaXplKTsgfQorICAgIHZvaWQgc2hyaW5rUmFkaWkoTGF5b3V0VW5pdCBzaXplKSB7
IG1fcmFkaWkuc2hyaW5rKHNpemUpOyB9CiAKICAgICB2b2lkIGluY2x1ZGVMb2dpY2FsRWRnZXMo
Y29uc3QgUmFkaWkmIGVkZ2VzLCBib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBpbmNsdWRlTG9naWNh
bExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICB2b2lkIGV4Y2x1
ZGVMb2dpY2FsRWRnZXMoYm9vbCBpc0hvcml6b250YWwsIGJvb2wgZXhjbHVkZUxvZ2ljYWxMZWZ0
RWRnZSwgYm9vbCBleGNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CkBAIC05NiwxNiArOTYsMTYgQEAg
cHVibGljOgogICAgIGJvb2wgaXNSZW5kZXJhYmxlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAg
SW50UmVjdCBtX3JlY3Q7CisgICAgTGF5b3V0UmVjdCBtX3JlY3Q7CiAgICAgUmFkaWkgbV9yYWRp
aTsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUm91bmRlZEludFJlY3Q6OlJh
ZGlpJiBhLCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmIGIpCitpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgYSwgY29uc3QgUm91bmRlZFJlY3Q6OlJh
ZGlpJiBiKQogewogICAgIHJldHVybiBhLnRvcExlZnQoKSA9PSBiLnRvcExlZnQoKSAmJiBhLnRv
cFJpZ2h0KCkgPT0gYi50b3BSaWdodCgpICYmIGEuYm90dG9tTGVmdCgpID09IGIuYm90dG9tTGVm
dCgpICYmIGEuYm90dG9tUmlnaHQoKSA9PSBiLmJvdHRvbVJpZ2h0KCk7CiB9CiAKLWlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUm91bmRlZEludFJlY3QmIGEsIGNvbnN0IFJvdW5kZWRJbnRS
ZWN0JiBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSb3VuZGVkUmVjdCYgYSwgY29u
c3QgUm91bmRlZFJlY3QmIGIpCiB7CiAgICAgcmV0dXJuIGEucmVjdCgpID09IGIucmVjdCgpICYm
IGEucmFkaWkoKSA9PSBiLnJhZGlpKCk7CiB9CkBAIC0xMTMsNCArMTEzLDQgQEAgaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBSb3VuZGVkSW50UgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKLSNlbmRpZiAvLyBSb3VuZGVkSW50UmVjdF9oCisjZW5kaWYgLy8gUm91bmRlZFJlY3RfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHAJKHJldmlzaW9uIDkwNzkzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U2hhZG93Qmx1ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKICAgICB9CiAKLSAgICB2b2lkIHNl
dExhc3RTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBj
b2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3Qs
IGNvbnN0IFJvdW5kZWRJbnRSZWN0OjpSYWRpaSYgcmFkaWkpCisgICAgdm9pZCBzZXRMYXN0U2hh
ZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBS
b3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQogICAgIHsKICAgICAgICAgbV9sYXN0V2FzSW5zZXQg
PSBmYWxzZTsKICAgICAgICAgbV9sYXN0UmFkaXVzID0gcmFkaXVzOwpAQCAtOTMsNyArOTMsNyBA
QCBwdWJsaWM6CiAgICAgICAgIG1fbGFzdFJhZGlpID0gcmFkaWk7CiAgICAgfQogCi0gICAgdm9p
ZCBzZXRMYXN0SW5zZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0
IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGJv
dW5kcywgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBSb3VuZGVkSW50UmVjdDo6
UmFkaWkmIHJhZGlpKQorICAgIHZvaWQgc2V0TGFzdEluc2V0U2hhZG93VmFsdWVzKGNvbnN0IEZs
b2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwg
Y29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkKICAgICB7CiAgICAgICAgIG1fbGFzdFdh
c0luc2V0ID0gdHJ1ZTsKICAgICAgICAgbV9sYXN0SW5zZXRCb3VuZHMgPSBib3VuZHM7CkBAIC0x
MDQsMTQgKzEwNCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fbGFzdFJhZGlpID0gcmFkaWk7CiAg
ICAgfQogICAgIAotICAgIGJvb2wgbWF0Y2hlc0xhc3RTaGFkb3coY29uc3QgRmxvYXRTaXplJiBy
YWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IFJvdW5kZWRJbnRSZWN0OjpSYWRpaSYgcmFkaWkp
IGNvbnN0CisgICAgYm9vbCBtYXRjaGVzTGFzdFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIHJhZGl1
cywgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkgY29uc3QK
ICAgICB7CiAgICAgICAgIGlmIChtX2xhc3RXYXNJbnNldCkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgcmV0dXJuIG1fbGFzdFJhZGl1cyA9PSByYWRpdXMgJiYgbV9sYXN0Q29s
b3IgPT0gY29sb3IgJiYgbV9sYXN0Q29sb3JTcGFjZSA9PSBjb2xvclNwYWNlICYmIHNoYWRvd1Jl
Y3QgPT0gbV9sYXN0U2hhZG93UmVjdCAmJiByYWRpaSA9PSBtX2xhc3RSYWRpaTsKICAgICB9CiAK
LSAgICBib29sIG1hdGNoZXNMYXN0SW5zZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiByYWRpdXMs
IGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJl
Y3QmIGJvdW5kcywgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBSb3VuZGVkSW50
UmVjdDo6UmFkaWkmIHJhZGlpKSBjb25zdAorICAgIGJvb2wgbWF0Y2hlc0xhc3RJbnNldFNoYWRv
dyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFJlY3QmIHNo
YWRvd1JlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpIGNvbnN0CiAgICAgewog
ICAgICAgICBpZiAoIW1fbGFzdFdhc0luc2V0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTQ5LDcgKzE0OSw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgRmxvYXRSZWN0IG1fbGFzdElu
c2V0Qm91bmRzOwogICAgIEZsb2F0UmVjdCBtX2xhc3RTaGFkb3dSZWN0OwotICAgIFJvdW5kZWRJ
bnRSZWN0OjpSYWRpaSBtX2xhc3RSYWRpaTsKKyAgICBSb3VuZGVkUmVjdDo6UmFkaWkgbV9sYXN0
UmFkaWk7CiAgICAgQ29sb3IgbV9sYXN0Q29sb3I7CiAgICAgQ29sb3JTcGFjZSBtX2xhc3RDb2xv
clNwYWNlOwogICAgIEZsb2F0U2l6ZSBtX2xhc3RSYWRpdXM7CkBAIC00NzYsNyArNDc2LDcgQEAg
dm9pZCBTaGFkb3dCbHVyOjpkcmF3U2hhZG93QnVmZmVyKEdyYXBoaQogICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KG1fbGF5ZXJPcmlnaW4sIG1fc291cmNlUmVjdC5zaXpl
KCkpKTsKIH0KIAotc3RhdGljIHZvaWQgY29tcHV0ZVNsaWNlU2l6ZXNGcm9tUmFkaWkoY29uc3Qg
SW50U2l6ZSYgdHdpY2VSYWRpdXMsIGNvbnN0IFJvdW5kZWRJbnRSZWN0OjpSYWRpaSYgcmFkaWks
IGludCYgbGVmdFNsaWNlLCBpbnQmIHJpZ2h0U2xpY2UsIGludCYgdG9wU2xpY2UsIGludCYgYm90
dG9tU2xpY2UpCitzdGF0aWMgdm9pZCBjb21wdXRlU2xpY2VTaXplc0Zyb21SYWRpaShjb25zdCBJ
bnRTaXplJiB0d2ljZVJhZGl1cywgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgaW50
JiBsZWZ0U2xpY2UsIGludCYgcmlnaHRTbGljZSwgaW50JiB0b3BTbGljZSwgaW50JiBib3R0b21T
bGljZSkKIHsKICAgICBsZWZ0U2xpY2UgPSB0d2ljZVJhZGl1cy53aWR0aCgpICsgbWF4KHJhZGlp
LnRvcExlZnQoKS53aWR0aCgpLCByYWRpaS5ib3R0b21MZWZ0KCkud2lkdGgoKSk7IAogICAgIHJp
Z2h0U2xpY2UgPSB0d2ljZVJhZGl1cy53aWR0aCgpICsgbWF4KHJhZGlpLnRvcFJpZ2h0KCkud2lk
dGgoKSwgcmFkaWkuYm90dG9tUmlnaHQoKS53aWR0aCgpKTsgCkBAIC00ODUsNyArNDg1LDcgQEAg
c3RhdGljIHZvaWQgY29tcHV0ZVNsaWNlU2l6ZXNGcm9tUmFkaWkoYwogICAgIGJvdHRvbVNsaWNl
ID0gdHdpY2VSYWRpdXMuaGVpZ2h0KCkgKyBtYXgocmFkaWkuYm90dG9tTGVmdCgpLmhlaWdodCgp
LCByYWRpaS5ib3R0b21SaWdodCgpLmhlaWdodCgpKTsKIH0KIAotSW50U2l6ZSBTaGFkb3dCbHVy
Ojp0ZW1wbGF0ZVNpemUoY29uc3QgSW50U2l6ZSYgcmFkaXVzUGFkZGluZywgY29uc3QgUm91bmRl
ZEludFJlY3Q6OlJhZGlpJiByYWRpaSkgY29uc3QKK0ludFNpemUgU2hhZG93Qmx1cjo6dGVtcGxh
dGVTaXplKGNvbnN0IEludFNpemUmIHJhZGl1c1BhZGRpbmcsIGNvbnN0IFJvdW5kZWRSZWN0OjpS
YWRpaSYgcmFkaWkpIGNvbnN0CiB7CiAgICAgY29uc3QgaW50IHRlbXBsYXRlU2lkZUxlbmd0aCA9
IDE7CiAKQEAgLTUwMyw3ICs1MDMsNyBAQCBJbnRTaXplIFNoYWRvd0JsdXI6OnRlbXBsYXRlU2l6
ZShjb25zdCBJCiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVTaWRlTGVuZ3RoICsgdG9wU2xp
Y2UgKyBib3R0b21TbGljZSk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3co
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93
ZWRSZWN0LCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmIHJhZGlpKQordm9pZCBTaGFkb3dC
bHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFk
aWkpCiB7CiAgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVj
dChncmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdCwgZ3JhcGhpY3NDb250ZXh0LT5jbGlwQm91
bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQpAQCAtNTMwLDcgKzUzMCw3IEBA
IHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3MKICAgICBkcmF3UmVjdFNo
YWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIHJhZGlpLCB0ZW1w
bGF0ZVNpemUsIGVkZ2VTaXplKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFk
b3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlp
JiBob2xlUmFkaWkpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9h
dFJlY3QmIGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIGhvbGVSYWRpaSkKIHsK
ICAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGdyYXBo
aWNzQ29udGV4dCwgcmVjdCwgZ3JhcGhpY3NDb250ZXh0LT5jbGlwQm91bmRzKCkpOwogICAgIGlm
IChsYXllclJlY3QuaXNFbXB0eSgpKQpAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgU2hhZG93Qmx1
cjo6ZHJhd0luc2V0U2hhZG93KEdyYXBoaWMKICAgICBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5n
KGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgaG9sZVJlY3QsIGhvbGVSYWRpaSwgdGVtcGxhdGVTaXpl
LCBlZGdlU2l6ZSk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0
VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IHNoYWRvd2VkUmVjdCwgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3Qg
SW50UmVjdCYgbGF5ZXJSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhv
dXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgc2hhZG93ZWRSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJ
bnRSZWN0JiBsYXllclJlY3QpCiB7CiAgICAgbV9sYXllckltYWdlID0gU2NyYXRjaEJ1ZmZlcjo6
c2hhcmVkKCkuZ2V0U2NyYXRjaEJ1ZmZlcihsYXllclJlY3Quc2l6ZSgpKTsKICAgICBpZiAoIW1f
bGF5ZXJJbWFnZSkKQEAgLTU5MSw3ICs1OTEsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0
U2hhZG93V2l0aG91dFRpCiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2NoZWR1bGVTY3Jh
dGNoQnVmZmVyUHVyZ2UoKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dX
aXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IFJvdW5kZWRJbnRS
ZWN0OjpSYWRpaSYgaG9sZVJhZGlpLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lkIFNo
YWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBo
b2xlUmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiBob2xlUmFkaWksIGNvbnN0IEludFJl
Y3QmIGxheWVyUmVjdCkKIHsKICAgICBtX2xheWVySW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaGFy
ZWQoKS5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5zaXplKCkpOwogICAgIGlmICghbV9sYXll
ckltYWdlKQpAQCAtNjY0LDcgKzY2NCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hh
ZG93V2l0aG91dFQKICAgICAgdGhlIHNoYWRvdy4KICAqLwogCi12b2lkIFNoYWRvd0JsdXI6OmRy
YXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3Qg
Um91bmRlZEludFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXpl
LCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hh
ZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkUmVj
dDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNp
emUmIGVkZ2VTaXplKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqZ3JhcGhpY3NDb250ZXh0KTsKICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93KCk7
CkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRo
VGlsaQogICAgIFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1
cmdlKCk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd2Vk
UmVjdCwgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgSW50U2l6ZSYg
dGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKK3ZvaWQgU2hhZG93Qmx1cjo6
ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlp
JiByYWRpaSwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBlZGdl
U2l6ZSkKIHsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmdyYXBo
aWNzQ29udGV4dCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclNoYWRvdygpOwpAQCAtNzY5
LDcgKzc2OSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW4KICAg
ICBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwog
fQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IFJvdW5k
ZWRJbnRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFNpemUmIGJ1ZmZlclBhZGRpbmcsIGNv
bnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSwgU2hhZG93RGlyZWN0aW9uIGRpcmVjdGlvbikKK3Zv
aWQgU2hhZG93Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd0JvdW5kcywgY29uc3QgUm91bmRlZFJlY3Q6
OlJhZGlpJiByYWRpaSwgY29uc3QgSW50U2l6ZSYgYnVmZmVyUGFkZGluZywgY29uc3QgSW50U2l6
ZSYgdGVtcGxhdGVTaXplLCBTaGFkb3dEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIGNvbnN0
IEludFNpemUgdHdpY2VSYWRpdXMgPSBJbnRTaXplKGJ1ZmZlclBhZGRpbmcud2lkdGgoKSAqIDIs
IGJ1ZmZlclBhZGRpbmcuaGVpZ2h0KCkgKiAyKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAkocmV2aXNpb24gOTA3OTMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJSb3VuZGVkSW50UmVjdC5o
IgorI2luY2x1ZGUgIlJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYxLDggKzYxLDggQEAgcHVibGljOgogICAgIEdy
YXBoaWNzQ29udGV4dCogYmVnaW5TaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmIGxheWVyQXJlYSk7CiAgICAgdm9pZCBlbmRTaGFkb3dMYXllcihHcmFwaGljc0Nv
bnRleHQqKTsKIAotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJik7Ci0gICAgdm9pZCBk
cmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiBob2xlUmFk
aWkpOworICAgIHZvaWQgZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJik7CisgICAgdm9pZCBkcmF3SW5zZXRT
aGFkb3coR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0
JiBob2xlUmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiBob2xlUmFkaWkpOwogCiAgICAg
dm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYsIGludCBz
dHJpZGUpOwogCkBAIC04MiwxNSArODIsMTUgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIAogICAg
IEludFJlY3QgY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKLSAgICBJ
bnRTaXplIHRlbXBsYXRlU2l6ZShjb25zdCBJbnRTaXplJiBibHVycmVkRWRnZVNpemUsIGNvbnN0
IFJvdW5kZWRJbnRSZWN0OjpSYWRpaSYpIGNvbnN0OworICAgIEludFNpemUgdGVtcGxhdGVTaXpl
KGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlp
JikgY29uc3Q7CiAKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkm
LCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRo
VGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJvdW5kZWRJ
bnRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKKyAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aG91
dFRpbGluZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSb3VuZGVk
UmVjdDo6UmFkaWkmLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOworICAgIHZvaWQgZHJhd1Jl
Y3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6
ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKIAotICAgIHZvaWQgZHJhd0luc2V0
U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmLCBj
b25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aFRp
bGluZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
IGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmLCBjb25zdCBJbnRTaXplJiBz
aGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CisgICAg
dm9pZCBkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0
OjpSYWRpaSYsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBkcmF3SW5zZXRT
aGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IElu
dFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXpl
KTsKICAgICAKLSAgICB2b2lkIGRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmIHNoYWRvd0JvdW5kcywgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiwg
Y29uc3QgSW50U2l6ZSYgcm91bmRlZFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXpl
LCBTaGFkb3dEaXJlY3Rpb24pOworICAgIHZvaWQgZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93Qm91bmRzLCBjb25zdCBSb3VuZGVkUmVjdDo6
UmFkaWkmLCBjb25zdCBJbnRTaXplJiByb3VuZGVkUmFkaXVzLCBjb25zdCBJbnRTaXplJiB0ZW1w
bGF0ZVNpemUsIFNoYWRvd0RpcmVjdGlvbik7CiAgICAgCiAgICAgdm9pZCBibHVyU2hhZG93QnVm
ZmVyKGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSk7CiAgICAgdm9pZCBibHVyQW5kQ29sb3JT
aGFkb3dCdWZmZXIoY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5jcHAJKHJldmlzaW9uIDkwNzkzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDMsNyAr
NzAzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsbwogICAgICAg
ICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVpl
cm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhGbG9hdFNpemUo
c2hhZG93Qmx1ciwgc2hhZG93Qmx1ciksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRlLnNo
YWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRvd0NvbG9yU3BhY2UpOwotICAgICAgICBjb250ZXh0U2hh
ZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRJbnRSZWN0OjpSYWRpaSgpKTsK
KyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0LCBSb3VuZGVk
UmVjdDo6UmFkaWkoKSk7CiAgICAgfQogCiAgICAgQ0dDb250ZXh0RmlsbFJlY3QoY29udGV4dCwg
cmVjdCk7CkBAIC03MzIsNyArNzMyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0
KGNvbnN0IEZsbwogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1D
b250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4
dFNoYWRvdyhGbG9hdFNpemUoc2hhZG93Qmx1ciwgc2hhZG93Qmx1ciksIG1fc3RhdGUuc2hhZG93
T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRvd0NvbG9yU3BhY2UpOwot
ICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRJ
bnRSZWN0OjpSYWRpaSgpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0
aGlzLCByZWN0LCBSb3VuZGVkUmVjdDo6UmFkaWkoKSk7CiAgICAgfQogCiAgICAgQ0dDb250ZXh0
RmlsbFJlY3QoY29udGV4dCwgcmVjdCk7CkBAIC03NjUsNyArNzY1LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjbwogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dX
aXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCiAgICAgICAg
IFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhGbG9hdFNpemUoc2hhZG93Qmx1ciwgc2hhZG93Qmx1
ciksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNo
YWRvd0NvbG9yU3BhY2UpOwotICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRo
aXMsIHJlY3QsIFJvdW5kZWRJbnRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9t
TGVmdCwgYm90dG9tUmlnaHQpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRv
dyh0aGlzLCByZWN0LCBSb3VuZGVkUmVjdDo6UmFkaWkodG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRv
bUxlZnQsIGJvdHRvbVJpZ2h0KSk7CiAgICAgfQogCiAgICAgYm9vbCBlcXVhbFdpZHRocyA9ICh0
b3BMZWZ0LndpZHRoKCkgPT0gdG9wUmlnaHQud2lkdGgoKSAmJiB0b3BSaWdodC53aWR0aCgpID09
IGJvdHRvbUxlZnQud2lkdGgoKSAmJiBib3R0b21MZWZ0LndpZHRoKCkgPT0gYm90dG9tUmlnaHQu
d2lkdGgoKSk7CkBAIC03ODYsNyArNzg2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxS
b3VuZGVkUmVjdChjbwogICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29s
b3IsIG9sZENvbG9yU3BhY2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUm91bmRlZEludFJlY3Qm
IHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3Qg
SW50UmVjdCYgcmVjdCwgY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3Qg
Q29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDkwNzkzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1MCw3ICs4NTAsNyBAQCB2b2lk
IFJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWluCiAgICAgICAgIC8vIFRvIGF2b2lk
IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGJsZWVkaW5nIG91dCBiZWhpbmQgdGhlIGJvcmRlciwgd2Un
bGwgcmVuZGVyIGJhY2tncm91bmQgYW5kIGJvcmRlcgogICAgICAgICAvLyBpbnRvIGEgdHJhbnNw
YXJlbmN5IGxheWVyLCBhbmQgdGhlbiBjbGlwIHRoYXQgaW4gb25lIGdvICh3aGljaCByZXF1aXJl
cyBzZXR0aW5nIHVwIHRoZSBjbGlwIGJlZm9yZQogICAgICAgICAvLyBiZWdpbm5pbmcgdGhlIGxh
eWVyKS4KLSAgICAgICAgUm91bmRlZEludFJlY3QgYm9yZGVyID0gc3R5bGUoKS0+Z2V0Um91bmRl
ZEJvcmRlckZvcihwYWludFJlY3QpOworICAgICAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBzdHls
ZSgpLT5nZXRSb3VuZGVkQm9yZGVyRm9yKHBhaW50UmVjdCk7CiAgICAgICAgIHN0YXRlU2F2ZXIu
c2F2ZSgpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGJv
cmRlcik7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVy
KDEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCShyZXZpc2lvbiA5MDc5MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2MywxMiArNTYz
LDEyIEBAIGludCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZ0VuZChib28KICAgICByZXR1
cm4gcGFkZGluZy5jYWxjTWluVmFsdWUodyk7CiB9CiAKLVJvdW5kZWRJbnRSZWN0IFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpnZXRCYWNrZ3JvdW5kUm91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgYm9y
ZGVyUmVjdCwgSW5saW5lRmxvd0JveCogYm94LCBpbnQgaW5saW5lQm94V2lkdGgsIGludCBpbmxp
bmVCb3hIZWlnaHQsCitSb3VuZGVkUmVjdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Z2V0QmFja2dy
b3VuZFJvdW5kZWRSZWN0KGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIElubGluZUZsb3dC
b3gqIGJveCwgTGF5b3V0VW5pdCBpbmxpbmVCb3hXaWR0aCwgTGF5b3V0VW5pdCBpbmxpbmVCb3hI
ZWlnaHQsCiAgICAgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKQogewotICAgIFJvdW5kZWRJbnRSZWN0IGJvcmRlciA9IHN0eWxlKCktPmdl
dFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVyUmVjdCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgIFJvdW5kZWRSZWN0IGJvcmRlciA9IHN0eWxlKCkt
PmdldFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVyUmVjdCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwg
aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgIGlmIChib3ggJiYgKGJveC0+bmV4dExpbmVC
b3goKSB8fCBib3gtPnByZXZMaW5lQm94KCkpKSB7Ci0gICAgICAgIFJvdW5kZWRJbnRSZWN0IHNl
Z21lbnRCb3JkZXIgPSBzdHlsZSgpLT5nZXRSb3VuZGVkQm9yZGVyRm9yKEludFJlY3QoMCwgMCwg
aW5saW5lQm94V2lkdGgsIGlubGluZUJveEhlaWdodCksIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2Us
IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKKyAgICAgICAgUm91bmRlZFJlY3Qgc2VnbWVudEJv
cmRlciA9IHN0eWxlKCktPmdldFJvdW5kZWRCb3JkZXJGb3IoTGF5b3V0UmVjdCgwLCAwLCBpbmxp
bmVCb3hXaWR0aCwgaW5saW5lQm94SGVpZ2h0KSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgICAgICBib3JkZXIuc2V0UmFkaWkoc2VnbWVudEJv
cmRlci5yYWRpaSgpKTsKICAgICB9CiAKQEAgLTYzMSw3ICs2MzEsNyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgaWYgKGhhc1JvdW5kZWRCb3JkZXIgJiYgYmxlZWRBdm9pZGFuY2UgIT0gQmFja2dyb3VuZEJs
ZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIpIHsKLSAgICAgICAgICAgIFJvdW5kZWRJbnRSZWN0IGJv
cmRlciA9IGdldEJhY2tncm91bmRSb3VuZGVkUmVjdChiYWNrZ3JvdW5kUmVjdEFkanVzdGVkRm9y
QmxlZWRBdm9pZGFuY2UoY29udGV4dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UpLCBib3gsIGJveFNp
emUud2lkdGgoKSwgYm94U2l6ZS5oZWlnaHQoKSwgaW5jbHVkZUxlZnRFZGdlLCBpbmNsdWRlUmln
aHRFZGdlKTsKKyAgICAgICAgICAgIFJvdW5kZWRSZWN0IGJvcmRlciA9IGdldEJhY2tncm91bmRS
b3VuZGVkUmVjdChiYWNrZ3JvdW5kUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoY29udGV4
dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UpLCBib3gsIGJveFNpemUud2lkdGgoKSwgYm94U2l6ZS5o
ZWlnaHQoKSwgaW5jbHVkZUxlZnRFZGdlLCBpbmNsdWRlUmlnaHRFZGdlKTsKICAgICAgICAgICAg
IGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChib3JkZXIsIGJnQ29sb3IsIHN0eWxlKCktPmNvbG9y
U3BhY2UoKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3Qo
cmVjdCwgYmdDb2xvciwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpKTsKQEAgLTY0Miw3ICs2NDIsNyBA
QCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllCiAgICAgYm9vbCBjbGlw
VG9Cb3JkZXJSYWRpdXMgPSBoYXNSb3VuZGVkQm9yZGVyICYmIGJsZWVkQXZvaWRhbmNlICE9IEJh
Y2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyOwogICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgY2xpcFRvQm9yZGVyU3RhdGVTYXZlcigqY29udGV4dCwgY2xpcFRvQm9yZGVyUmFk
aXVzKTsKICAgICBpZiAoY2xpcFRvQm9yZGVyUmFkaXVzKSB7Ci0gICAgICAgIFJvdW5kZWRJbnRS
ZWN0IGJvcmRlciA9IGdldEJhY2tncm91bmRSb3VuZGVkUmVjdChiYWNrZ3JvdW5kUmVjdEFkanVz
dGVkRm9yQmxlZWRBdm9pZGFuY2UoY29udGV4dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UpLCBib3gs
IGJveFNpemUud2lkdGgoKSwgYm94U2l6ZS5oZWlnaHQoKSwgaW5jbHVkZUxlZnRFZGdlLCBpbmNs
dWRlUmlnaHRFZGdlKTsKKyAgICAgICAgUm91bmRlZFJlY3QgYm9yZGVyID0gZ2V0QmFja2dyb3Vu
ZFJvdW5kZWRSZWN0KGJhY2tncm91bmRSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZShjb250
ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5jZSksIGJveCwgYm94U2l6ZS53aWR0aCgpLCBib3hTaXpl
LmhlaWdodCgpLCBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOwogICAgICAgICBj
b250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyKTsKICAgICB9CiAgICAgCkBAIC0xMjI5
LDcgKzEyMjksNyBAQCBzdGF0aWMgYm9vbCBqb2luUmVxdWlyZXNNaXRyZShCb3hTaWRlIHNpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE9u
ZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJlbmRl
clN0eWxlKiBzdHlsZSwgY29uc3QgUm91bmRlZEludFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBS
b3VuZGVkSW50UmVjdCYgaW5uZXJCb3JkZXIsCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25z
dCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCiAgICAgY29uc3QgSW50UmVjdCYgc2lkZVJlY3Qs
IEJveFNpZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUxLCBCb3hTaWRlIGFkamFjZW50U2lk
ZTIsIGNvbnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgY29uc3QgUGF0aCogcGF0aCwgCiAgICAgQmFj
a2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2Fs
TGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzLCBj
b25zdCBDb2xvciogb3ZlcnJpZGVDb2xvcikKIHsKQEAgLTEyNjcsNyArMTI2Nyw3IEBAIHZvaWQg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50T25lQm9yZGUKICAgICB9CiB9CiAKLXZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgUm91bmRlZEludFJl
Y3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkSW50UmVjdCYgaW5uZXJCb3JkZXIsCit2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFJvdW5kZWRS
ZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCb3JkZXJFZGdlIGVk
Z2VzW10sIEJvcmRlckVkZ2VGbGFncyBlZGdlU2V0LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2Ug
YmxlZWRBdm9pZGFuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0
RWRnZSwgYm9vbCBhbnRpYWxpYXMsIGNvbnN0IENvbG9yKiBvdmVycmlkZUNvbG9yKQogewpAQCAt
MTI3OCw3ICsxMjc4LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXJT
aQogICAgICAgICByb3VuZGVkUGF0aC5hZGRSb3VuZGVkUmVjdChvdXRlckJvcmRlcik7CiAgICAg
CiAgICAgaWYgKGVkZ2VzW0JTVG9wXS5zaG91bGRSZW5kZXIoKSAmJiBpbmNsdWRlc0VkZ2UoZWRn
ZVNldCwgQlNUb3ApKSB7Ci0gICAgICAgIEludFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5y
ZWN0KCk7CisgICAgICAgIExheW91dFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7
CiAgICAgICAgIHNpZGVSZWN0LnNldEhlaWdodChlZGdlc1tCU1RvcF0ud2lkdGgpOwogCiAgICAg
ICAgIGJvb2wgdXNlUGF0aCA9IHJlbmRlclJhZGlpICYmIChib3JkZXJTdHlsZUhhc0lubmVyRGV0
YWlsKGVkZ2VzW0JTVG9wXS5zdHlsZSkgfHwgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShpbm5lckJv
cmRlci5yYWRpaSgpLnRvcExlZnQoKSwgaW5uZXJCb3JkZXIucmFkaWkoKS50b3BSaWdodCgpKSk7
CkBAIC0xMjg2LDcgKzEyODYsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJv
cmRlclNpCiAgICAgfQogCiAgICAgaWYgKGVkZ2VzW0JTQm90dG9tXS5zaG91bGRSZW5kZXIoKSAm
JiBpbmNsdWRlc0VkZ2UoZWRnZVNldCwgQlNCb3R0b20pKSB7Ci0gICAgICAgIEludFJlY3Qgc2lk
ZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CisgICAgICAgIExheW91dFJlY3Qgc2lkZVJlY3Qg
PSBvdXRlckJvcmRlci5yZWN0KCk7CiAgICAgICAgIHNpZGVSZWN0LnNoaWZ0WUVkZ2VUbyhzaWRl
UmVjdC5tYXhZKCkgLSBlZGdlc1tCU0JvdHRvbV0ud2lkdGgpOwogCiAgICAgICAgIGJvb2wgdXNl
UGF0aCA9IHJlbmRlclJhZGlpICYmIChib3JkZXJTdHlsZUhhc0lubmVyRGV0YWlsKGVkZ2VzW0JT
Qm90dG9tXS5zdHlsZSkgfHwgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShpbm5lckJvcmRlci5yYWRp
aSgpLmJvdHRvbUxlZnQoKSwgaW5uZXJCb3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpKSk7CkBA
IC0xMjk0LDcgKzEyOTQsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRl
clNpCiAgICAgfQogCiAgICAgaWYgKGVkZ2VzW0JTTGVmdF0uc2hvdWxkUmVuZGVyKCkgJiYgaW5j
bHVkZXNFZGdlKGVkZ2VTZXQsIEJTTGVmdCkpIHsKLSAgICAgICAgSW50UmVjdCBzaWRlUmVjdCA9
IG91dGVyQm9yZGVyLnJlY3QoKTsKKyAgICAgICAgTGF5b3V0UmVjdCBzaWRlUmVjdCA9IG91dGVy
Qm9yZGVyLnJlY3QoKTsKICAgICAgICAgc2lkZVJlY3Quc2V0V2lkdGgoZWRnZXNbQlNMZWZ0XS53
aWR0aCk7CiAKICAgICAgICAgYm9vbCB1c2VQYXRoID0gcmVuZGVyUmFkaWkgJiYgKGJvcmRlclN0
eWxlSGFzSW5uZXJEZXRhaWwoZWRnZXNbQlNMZWZ0XS5zdHlsZSkgfHwgYm9yZGVyV2lsbEFyY0lu
bmVyRWRnZShpbm5lckJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgaW5uZXJCb3JkZXIucmFk
aWkoKS50b3BMZWZ0KCkpKTsKQEAgLTEzMDIsNyArMTMwMiw3IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2kKICAgICB9CiAKICAgICBpZiAoZWRnZXNbQlNSaWdodF0u
c2hvdWxkUmVuZGVyKCkgJiYgaW5jbHVkZXNFZGdlKGVkZ2VTZXQsIEJTUmlnaHQpKSB7Ci0gICAg
ICAgIEludFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CisgICAgICAgIExheW91
dFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CiAgICAgICAgIHNpZGVSZWN0LnNo
aWZ0WEVkZ2VUbyhzaWRlUmVjdC5tYXhYKCkgLSBlZGdlc1tCU1JpZ2h0XS53aWR0aCk7CiAKICAg
ICAgICAgYm9vbCB1c2VQYXRoID0gcmVuZGVyUmFkaWkgJiYgKGJvcmRlclN0eWxlSGFzSW5uZXJE
ZXRhaWwoZWRnZXNbQlNSaWdodF0uc3R5bGUpIHx8IGJvcmRlcldpbGxBcmNJbm5lckVkZ2UoaW5u
ZXJCb3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpLCBpbm5lckJvcmRlci5yYWRpaSgpLnRvcFJp
Z2h0KCkpKTsKQEAgLTEzMTAsNyArMTMxMCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50Qm9yZGVyU2kKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50VHJhbnNsdWNlbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSb3VuZGVkSW50UmVjdCYgb3V0ZXJC
b3JkZXIsIGNvbnN0IFJvdW5kZWRJbnRSZWN0JiBpbm5lckJvcmRlciwKK3ZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50VHJhbnNsdWNlbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSb3VuZGVk
UmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBC
b3JkZXJFZGdlIGVkZ2VzW10sIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5j
ZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlLCBib29sIGFudGlhbGlhcykKIHsKICAgICBCb3JkZXJFZGdlRmxhZ3MgZWRnZXNUb0RyYXcg
PSBBbGxCb3JkZXJFZGdlczsKQEAgLTEzNjMsOCArMTM2Myw4IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEcKICAgICBCb3JkZXJFZGdlIGVkZ2VzWzRdOwogICAgIGdl
dEJvcmRlckVkZ2VJbmZvKGVkZ2VzLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSk7CiAKLSAgICBSb3VuZGVkSW50UmVjdCBvdXRlckJvcmRlciA9IHN0eWxl
LT5nZXRSb3VuZGVkQm9yZGVyRm9yKHJlY3QsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlKTsKLSAgICBSb3VuZGVkSW50UmVjdCBpbm5lckJvcmRlciA9IHN0
eWxlLT5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IocmVjdCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRn
ZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgIFJvdW5kZWRSZWN0IG91dGVyQm9yZGVy
ID0gc3R5bGUtPmdldFJvdW5kZWRCb3JkZXJGb3IocmVjdCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRn
ZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgIFJvdW5kZWRSZWN0IGlubmVyQm9yZGVy
ID0gc3R5bGUtPmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihyZWN0LCBpbmNsdWRlTG9naWNhbExl
ZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAKICAgICBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIGN1cnJlbnRDVE0gPSBncmFwaGljc0NvbnRleHQtPmdldENUTSgpOwogICAgIC8vIEZJ
WE1FOiB0aGlzIGlzbid0IHF1aXRlIGNvcnJlY3QuIFdlIG1heSB3YW50IHRvIGFudGlhbGlhcyB3
aGVuIHNjYWxlZCBieSBhIG5vbi1pbnRlZ3JhbCB2YWx1ZSwgb3Igd2hlbiB0aGUgdHJhbnNsYXRp
b24gaXMgbm9uLWludGVncmFsLgpAQCAtMTUxNiw3ICsxNTE2LDcgQEAgdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcgogICAgICAgICAvLyBEcmF3IGlubmVyIGJvcmRlciBs
aW5lCiAgICAgICAgIHsKICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0KTsKLSAgICAgICAgICAgIFJvdW5kZWRJbnRSZWN0IGlu
bmVyQ2xpcCA9IHN0eWxlLT5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVyUmVjdCwKKyAg
ICAgICAgICAgIFJvdW5kZWRSZWN0IGlubmVyQ2xpcCA9IHN0eWxlLT5nZXRSb3VuZGVkSW5uZXJC
b3JkZXJGb3IoYm9yZGVyUmVjdCwKICAgICAgICAgICAgICAgICBpbm5lckJvcmRlclRvcFdpZHRo
LCBpbm5lckJvcmRlckJvdHRvbVdpZHRoLCBpbm5lckJvcmRlckxlZnRXaWR0aCwgaW5uZXJCb3Jk
ZXJSaWdodFdpZHRoLAogICAgICAgICAgICAgICAgIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGlu
Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAgICAgIApAQCAtMTUzNiw3ICsxNTM2LDcg
QEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcgogICAgICAgICAgICAg
ICAgICsrb3V0ZXJCb3JkZXJSaWdodFdpZHRoOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgUm91bmRlZEludFJlY3Qgb3V0ZXJDbGlwID0gc3R5bGUtPmdldFJv
dW5kZWRJbm5lckJvcmRlckZvcihvdXRlclJlY3QsCisgICAgICAgICAgICBSb3VuZGVkUmVjdCBv
dXRlckNsaXAgPSBzdHlsZS0+Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKG91dGVyUmVjdCwKICAg
ICAgICAgICAgICAgICBvdXRlckJvcmRlclRvcFdpZHRoLCBvdXRlckJvcmRlckJvdHRvbVdpZHRo
LCBvdXRlckJvcmRlckxlZnRXaWR0aCwgb3V0ZXJCb3JkZXJSaWdodFdpZHRoLAogICAgICAgICAg
ICAgICAgIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsK
ICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KG91dGVyQ2xp
cCk7CkBAIC0xNTYyLDEyICsxNTYyLDEyIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRy
YXdCb3hTaWRlRnIKIAogICAgICAgICAvLyBQYWludCBpbm5lciBvbmx5CiAgICAgICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0KTsKLSAgICAg
ICAgaW50IHRvcFdpZHRoID0gZWRnZXNbQlNUb3BdLnVzZWRXaWR0aCgpIC8gMjsKLSAgICAgICAg
aW50IGJvdHRvbVdpZHRoID0gZWRnZXNbQlNCb3R0b21dLnVzZWRXaWR0aCgpIC8gMjsKLSAgICAg
ICAgaW50IGxlZnRXaWR0aCA9IGVkZ2VzW0JTTGVmdF0udXNlZFdpZHRoKCkgLyAyOwotICAgICAg
ICBpbnQgcmlnaHRXaWR0aCA9IGVkZ2VzW0JTUmlnaHRdLnVzZWRXaWR0aCgpIC8gMjsKKyAgICAg
ICAgTGF5b3V0VW5pdCB0b3BXaWR0aCA9IGVkZ2VzW0JTVG9wXS51c2VkV2lkdGgoKSAvIDI7Cisg
ICAgICAgIExheW91dFVuaXQgYm90dG9tV2lkdGggPSBlZGdlc1tCU0JvdHRvbV0udXNlZFdpZHRo
KCkgLyAyOworICAgICAgICBMYXlvdXRVbml0IGxlZnRXaWR0aCA9IGVkZ2VzW0JTTGVmdF0udXNl
ZFdpZHRoKCkgLyAyOworICAgICAgICBMYXlvdXRVbml0IHJpZ2h0V2lkdGggPSBlZGdlc1tCU1Jp
Z2h0XS51c2VkV2lkdGgoKSAvIDI7CiAKLSAgICAgICAgUm91bmRlZEludFJlY3QgY2xpcFJlY3Qg
PSBzdHlsZS0+Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlclJlY3QsCisgICAgICAgIFJv
dW5kZWRSZWN0IGNsaXBSZWN0ID0gc3R5bGUtPmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihib3Jk
ZXJSZWN0LAogICAgICAgICAgICAgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIHJp
Z2h0V2lkdGgsCiAgICAgICAgICAgICBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSk7CiAKQEAgLTE2MjIsNyArMTYyMiw3IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEcKICAgICBib29sIHJlbmRlckJvdHRvbSA9IGJvdHRvbVN0
eWxlID4gQkhJRERFTiAmJiAhYm90dG9tVHJhbnNwYXJlbnQgJiYgKGhvcml6b250YWwgfHwgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCiAKLSAgICBSb3VuZGVkSW50UmVjdCBib3JkZXIocmVj
dCk7CisgICAgUm91bmRlZFJlY3QgYm9yZGVyKHJlY3QpOwogICAgIAogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0LCBmYWxzZSk7CiAgICAg
aWYgKHN0eWxlLT5oYXNCb3JkZXJSYWRpdXMoKSkgewpAQCAtMTkyNiw3ICsxOTI2LDcgQEAgc3Rh
dGljIHZvaWQgZmluZElubmVyVmVydGV4KGNvbnN0IEZsb2F0UAogICAgICAgICBmaW5kSW50ZXJz
ZWN0aW9uKG91dGVyQ29ybmVyLCBpbm5lckNvcm5lciwgRmxvYXRQb2ludCgwLCBjZW50ZXJQb2lu
dC55KCkpLCBGbG9hdFBvaW50KDEwMCwgY2VudGVyUG9pbnQueSgpKSwgcmVzdWx0KTsKIH0KIAot
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBSb3VuZGVkSW50UmVjdCYgb3V0ZXJCb3Jk
ZXIsIGNvbnN0IFJvdW5kZWRJbnRSZWN0JiBpbm5lckJvcmRlciwKK3ZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVj
dCYgaW5uZXJCb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQm94U2lkZSBzaWRlLCBib29sIGZpcnN0RWRnZU1hdGNoZXMsIGJvb2wgc2Vjb25k
RWRnZU1hdGNoZXMpCiB7CiAgICAgRmxvYXRQb2ludCBxdWFkWzRdOwpAQCAtMjA5Nyw3ICsyMDk3
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkbwogICAgIGlmIChj
b250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIXMtPmJveFNoYWRvdygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBSb3VuZGVkSW50UmVjdCBib3JkZXIgPSAoc2hhZG93U3R5bGUgPT0gSW5z
ZXQpID8gcy0+Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKHBhaW50UmVjdCwgaW5jbHVkZUxvZ2lj
YWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCisgICAgUm91bmRlZFJlY3QgYm9y
ZGVyID0gKHNoYWRvd1N0eWxlID09IEluc2V0KSA/IHMtPmdldFJvdW5kZWRJbm5lckJvcmRlckZv
cihwYWludFJlY3QsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiBzLT5nZXRSb3VuZGVkQm9yZGVyRm9yKHBhaW50UmVjdCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRn
ZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCiAgICAgYm9vbCBoYXNCb3JkZXJSYWRpdXMg
PSBzLT5oYXNCb3JkZXJSYWRpdXMoKTsKQEAgLTIxMTgsNyArMjExOCw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG8KICAgICAgICAgY29uc3QgQ29sb3ImIHNoYWRv
d0NvbG9yID0gc2hhZG93LT5jb2xvcigpOwogCiAgICAgICAgIGlmIChzaGFkb3ctPnN0eWxlKCkg
PT0gTm9ybWFsKSB7Ci0gICAgICAgICAgICBSb3VuZGVkSW50UmVjdCBmaWxsUmVjdCA9IGJvcmRl
cjsKKyAgICAgICAgICAgIFJvdW5kZWRSZWN0IGZpbGxSZWN0ID0gYm9yZGVyOwogICAgICAgICAg
ICAgZmlsbFJlY3QuaW5mbGF0ZShzaGFkb3dTcHJlYWQpOwogICAgICAgICAgICAgaWYgKGZpbGxS
ZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIxNDIsNyArMjE0
Miw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG8KICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFk
b3dDb2xvciwgcy0+Y29sb3JTcGFjZSgpKTsKIAogICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJh
ZGl1cykgewotICAgICAgICAgICAgICAgIFJvdW5kZWRJbnRSZWN0IHJlY3RUb0NsaXBPdXQgPSBi
b3JkZXI7CisgICAgICAgICAgICAgICAgUm91bmRlZFJlY3QgcmVjdFRvQ2xpcE91dCA9IGJvcmRl
cjsKIAogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBib3ggaXMgb3BhcXVlLCBpdCBpcyB1bm5l
Y2Vzc2FyeSB0byBjbGlwIGl0IG91dC4gSG93ZXZlciwgZG9pbmcgc28gc2F2ZXMgdGltZQogICAg
ICAgICAgICAgICAgIC8vIHdoZW4gcGFpbnRpbmcgdGhlIHNoYWRvdy4gT24gdGhlIG90aGVyIGhh
bmQsIGl0IGludHJvZHVjZXMgc3VicGl4ZWwgZ2FwcyBhbG9uZyB0aGUKQEAgLTIyMDYsNyArMjIw
Niw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG8KICAgICAgICAg
ICAgIENvbG9yIGZpbGxDb2xvcihzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4o
KSwgc2hhZG93Q29sb3IuYmx1ZSgpLCAyNTUpOwogCiAgICAgICAgICAgICBMYXlvdXRSZWN0IG91
dGVyUmVjdCA9IGFyZWFDYXN0aW5nU2hhZG93SW5Ib2xlKGJvcmRlci5yZWN0KCksIHNoYWRvd0Js
dXIsIHNoYWRvd1NwcmVhZCwgc2hhZG93T2Zmc2V0KTsKLSAgICAgICAgICAgIFJvdW5kZWRJbnRS
ZWN0IHJvdW5kZWRIb2xlKGhvbGVSZWN0LCBib3JkZXIucmFkaWkoKSk7CisgICAgICAgICAgICBS
b3VuZGVkUmVjdCByb3VuZGVkSG9sZShob2xlUmVjdCwgYm9yZGVyLnJhZGlpKCkpOwogCiAgICAg
ICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwog
ICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJhZGl1cykgewpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgJKHJldmlzaW9uIDkwNzkzKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTE0OSwxNyArMTQ5LDE3IEBAIHByaXZhdGU6CiAKICAgICBJbnRTaXplIGNh
bGN1bGF0ZUZpbGxUaWxlU2l6ZShjb25zdCBGaWxsTGF5ZXIqLCBJbnRTaXplIHNjYWxlZFNpemUp
IGNvbnN0OwogCi0gICAgUm91bmRlZEludFJlY3QgZ2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KGNv
bnN0IEludFJlY3QmLCBJbmxpbmVGbG93Qm94KiwgaW50IGlubGluZUJveFdpZHRoLCBpbnQgaW5s
aW5lQm94SGVpZ2h0LAorICAgIFJvdW5kZWRSZWN0IGdldEJhY2tncm91bmRSb3VuZGVkUmVjdChj
b25zdCBMYXlvdXRSZWN0JiwgSW5saW5lRmxvd0JveCosIExheW91dFVuaXQgaW5saW5lQm94V2lk
dGgsIExheW91dFVuaXQgaW5saW5lQm94SGVpZ2h0LAogICAgICAgICBib29sIGluY2x1ZGVMb2dp
Y2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCi0gICAgdm9pZCBj
bGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUm91bmRlZEludFJl
Y3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkSW50UmVjdCYgaW5uZXJCb3JkZXIsCisgICAg
dm9pZCBjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUm91bmRl
ZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQm94U2lkZSwgYm9vbCBmaXJzdEVkZ2VNYXRjaGVz
LCBib29sIHNlY29uZEVkZ2VNYXRjaGVzKTsKLSAgICB2b2lkIHBhaW50T25lQm9yZGVyU2lkZShH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IFJvdW5kZWRJbnRSZWN0
JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZEludFJlY3QmIGlubmVyQm9yZGVyLAorICAgIHZv
aWQgcGFpbnRPbmVCb3JkZXJTaWRlKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxl
KiwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5u
ZXJCb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3Qm
IHNpZGVSZWN0LCBCb3hTaWRlLCBCb3hTaWRlIGFkamFjZW50U2lkZTEsIEJveFNpZGUgYWRqYWNl
bnRTaWRlMiwgY29uc3QgY2xhc3MgQm9yZGVyRWRnZVtdLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBQYXRoKiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wg
YW50aWFsaWFzLCBjb25zdCBDb2xvciogb3ZlcnJpZGVDb2xvciA9IDApOwotICAgIHZvaWQgcGFp
bnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0
eWxlKiwgY29uc3QgUm91bmRlZEludFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkSW50
UmVjdCYgaW5uZXJCb3JkZXIsCisgICAgdm9pZCBwYWludFRyYW5zbHVjZW50Qm9yZGVyU2lkZXMo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBSb3VuZGVkUmVjdCYg
b3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2xhc3MgQm9yZGVyRWRnZVtdLCBCYWNrZ3JvdW5kQmxlZWRB
dm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNh
bFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMgPSBmYWxzZSk7Ci0gICAgdm9pZCBwYWludEJvcmRl
clNpZGVzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgUm91bmRl
ZEludFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkSW50UmVjdCYgaW5uZXJCb3JkZXIs
CisgICAgdm9pZCBwYWludEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRl
clN0eWxlKiwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVj
dCYgaW5uZXJCb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsYXNzIEJv
cmRlckVkZ2VbXSwgQm9yZGVyRWRnZUZsYWdzLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9v
bCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMgPSBmYWxzZSwgY29uc3Qg
Q29sb3IqIG92ZXJyaWRlQ29sb3IgPSAwKTsKICAgICB2b2lkIGRyYXdCb3hTaWRlRnJvbVBhdGgo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IFBhdGgmLCBjb25zdCBjbGFz
cyBCb3JkZXJFZGdlW10sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCShyZXZpc2lvbiA5MDc5MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAyNCw3ICsxMDI0LDcgQEAgdm9p
ZCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbgogCiAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CiAKLSAgICBSb3Vu
ZGVkSW50UmVjdCBib3JkZXIgPSBvLT5zdHlsZSgpLT5nZXRSb3VuZGVkQm9yZGVyRm9yKHIpOwor
ICAgIFJvdW5kZWRSZWN0IGJvcmRlciA9IG8tPnN0eWxlKCktPmdldFJvdW5kZWRCb3JkZXJGb3Io
cik7CiAgICAgaW50IHJhZGl1cyA9IGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKS53aWR0aCgpOwog
CiAgICAgQ0dDb2xvclNwYWNlUmVmIGNzcGFjZSA9IGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsK
QEAgLTEwNTgsNyArMTA1OCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RC
dXR0b24KICAgICB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqcGFpbnRJbmZvLmNvbnRleHQpOwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRl
eHQsIHRvcEdyYWRpZW50KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRS
ZWN0Q2xpcChSb3VuZGVkSW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KHRvcEdyYWRpZW50KSwgYm9y
ZGVyLnJhZGlpKCkudG9wTGVmdCgpLCBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLCBJbnRTaXpl
KCksIEludFNpemUoKSkpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJl
Y3RDbGlwKFJvdW5kZWRSZWN0KGVuY2xvc2luZ0xheW91dFJlY3QodG9wR3JhZGllbnQpLCBib3Jk
ZXIucmFkaWkoKS50b3BMZWZ0KCksIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCksIEludFNpemUo
KSwgSW50U2l6ZSgpKSk7CiAgICAgICAgIGNvbnRleHQgPSBjZ0NvbnRleHRDb250YWluZXIuY29u
dGV4dCgpOwogICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCB0b3BTaGFkaW5n
LmdldCgpKTsKICAgICB9CkBAIC0xMDY2LDcgKzEwNjYsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFj
OjpwYWludE1lbnVMaXN0QnV0dG9uCiAgICAgaWYgKCFib3R0b21HcmFkaWVudC5pc0VtcHR5KCkp
IHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludElu
Zm8uY29udGV4dCk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgYm90dG9t
R3JhZGllbnQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlw
KFJvdW5kZWRJbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QoYm90dG9tR3JhZGllbnQpLCBJbnRTaXpl
KCksIEludFNpemUoKSwgYm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBib3JkZXIucmFkaWko
KS5ib3R0b21SaWdodCgpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVk
UmVjdENsaXAoUm91bmRlZFJlY3QoZW5jbG9zaW5nTGF5b3V0UmVjdChib3R0b21HcmFkaWVudCks
IEludFNpemUoKSwgSW50U2l6ZSgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCksIGJvcmRl
ci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpKTsKICAgICAgICAgY29udGV4dCA9IGNnQ29udGV4dENv
bnRhaW5lci5jb250ZXh0KCk7CiAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQs
IGJvdHRvbVNoYWRpbmcuZ2V0KCkpOwogICAgIH0KQEAgLTEyOTIsNyArMTI5Miw3IEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50U2xpZGVyVHJhY2soUmUKICAgICAgICAgbWFpblNoYWRpbmcu
YWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKGJvdW5kcy54
KCksICBib3VuZHMueSgpKSwgQ0dQb2ludE1ha2UoYm91bmRzLngoKSwgYm91bmRzLm1heFkoKSks
IG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAKICAgICBJbnRTaXplIHJhZGl1
cyh0cmFja1JhZGl1cywgdHJhY2tSYWRpdXMpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRS
b3VuZGVkUmVjdENsaXAoUm91bmRlZEludFJlY3QoYm91bmRzLCByYWRpdXMsIHJhZGl1cywgcmFk
aXVzLCByYWRpdXMpKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlw
KFJvdW5kZWRSZWN0KGJvdW5kcywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7CiAg
ICAgY29udGV4dCA9IGxvY2FsQ29udGV4dC5jZ0NvbnRleHQoKTsKICAgICBDR0NvbnRleHREcmF3
U2hhZGluZyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7CiAgICAgCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDkw
NzkzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzc0LDE5ICs3NzQsMjAgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0
Qm94U2hhZG93KFBhc3NPd25QdAogICAgIHJhcmVEYXRhLT5tX2JveFNoYWRvdyA9IHNoYWRvd0Rh
dGE7CiB9CiAKLXN0YXRpYyBSb3VuZGVkSW50UmVjdDo6UmFkaWkgY2FsY1JhZGlpRm9yKGNvbnN0
IEJvcmRlckRhdGEmIGJvcmRlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorc3RhdGljIFJvdW5k
ZWRSZWN0OjpSYWRpaSBjYWxjUmFkaWlGb3IoY29uc3QgQm9yZGVyRGF0YSYgYm9yZGVyLCBpbnQg
d2lkdGgsIGludCBoZWlnaHQpCiB7Ci0gICAgcmV0dXJuIFJvdW5kZWRJbnRSZWN0OjpSYWRpaShJ
bnRTaXplKGJvcmRlci50b3BMZWZ0KCkud2lkdGgoKS5jYWxjVmFsdWUod2lkdGgpLCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLnRvcExlZnQoKS5oZWln
aHQoKS5jYWxjVmFsdWUoaGVpZ2h0KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbnRTaXplKGJvcmRlci50b3BSaWdodCgpLndpZHRoKCkuY2FsY1ZhbHVlKHdpZHRoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLnRvcFJpZ2h0KCku
aGVpZ2h0KCkuY2FsY1ZhbHVlKGhlaWdodCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSW50U2l6ZShib3JkZXIuYm90dG9tTGVmdCgpLndpZHRoKCkuY2FsY1ZhbHVlKHdpZHRo
KSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci5ib3R0
b21MZWZ0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGhlaWdodCkpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSW50U2l6ZShib3JkZXIuYm90dG9tUmlnaHQoKS53aWR0aCgpLmNhbGNW
YWx1ZSh3aWR0aCksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b3JkZXIuYm90dG9tUmlnaHQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoaGVpZ2h0KSkpOworICAgIHJl
dHVybiBSb3VuZGVkUmVjdDo6UmFkaWkoCisgICAgICAgIExheW91dFNpemUoYm9yZGVyLnRvcExl
ZnQoKS53aWR0aCgpLmNhbGNWYWx1ZSh3aWR0aCksIAorICAgICAgICAgICAgICAgICAgIGJvcmRl
ci50b3BMZWZ0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGhlaWdodCkpLAorICAgICAgICBMYXlvdXRT
aXplKGJvcmRlci50b3BSaWdodCgpLndpZHRoKCkuY2FsY1ZhbHVlKHdpZHRoKSwKKyAgICAgICAg
ICAgICAgICAgICBib3JkZXIudG9wUmlnaHQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoaGVpZ2h0KSks
CisgICAgICAgIExheW91dFNpemUoYm9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpLmNhbGNWYWx1
ZSh3aWR0aCksIAorICAgICAgICAgICAgICAgICAgIGJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0
KCkuY2FsY1ZhbHVlKGhlaWdodCkpLAorICAgICAgICBMYXlvdXRTaXplKGJvcmRlci5ib3R0b21S
aWdodCgpLndpZHRoKCkuY2FsY1ZhbHVlKHdpZHRoKSwgCisgICAgICAgICAgICAgICAgICAgYm9y
ZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGhlaWdodCkpKTsKIH0KIAotc3Rh
dGljIGZsb2F0IGNhbGNDb25zdHJhaW50U2NhbGVGb3IoY29uc3QgSW50UmVjdCYgcmVjdCwgY29u
c3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiByYWRpaSkKK3N0YXRpYyBmbG9hdCBjYWxjQ29uc3Ry
YWludFNjYWxlRm9yKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRp
aSYgcmFkaWkpCiB7CiAgICAgLy8gQ29uc3RyYWluIGNvcm5lciByYWRpaSB1c2luZyBDU1MzIHJ1
bGVzOgogICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtYmFja2dyb3VuZC8jdGhlLWJv
cmRlci1yYWRpdXMKQEAgLTgxOCwxOCArODE5LDE4IEBAIHN0YXRpYyBmbG9hdCBjYWxjQ29uc3Ry
YWludFNjYWxlRm9yKGNvbnMKICAgICByZXR1cm4gZmFjdG9yOwogfQogCi1Sb3VuZGVkSW50UmVj
dCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZEJvcmRlckZvcihjb25zdCBJbnRSZWN0JiBib3JkZXJS
ZWN0LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpIGNvbnN0CitSb3VuZGVkUmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZEJvcmRlckZv
cihjb25zdCBJbnRSZWN0JiBib3JkZXJSZWN0LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2Us
IGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpIGNvbnN0CiB7Ci0gICAgUm91bmRlZEludFJl
Y3Qgcm91bmRlZFJlY3QoYm9yZGVyUmVjdCk7CisgICAgUm91bmRlZFJlY3Qgcm91bmRlZFJlY3Qo
Ym9yZGVyUmVjdCk7CiAgICAgaWYgKGhhc0JvcmRlclJhZGl1cygpKSB7Ci0gICAgICAgIFJvdW5k
ZWRJbnRSZWN0OjpSYWRpaSByYWRpaSA9IGNhbGNSYWRpaUZvcihzdXJyb3VuZC0+Ym9yZGVyLCBi
b3JkZXJSZWN0LndpZHRoKCksIGJvcmRlclJlY3QuaGVpZ2h0KCkpOworICAgICAgICBSb3VuZGVk
UmVjdDo6UmFkaWkgcmFkaWkgPSBjYWxjUmFkaWlGb3Ioc3Vycm91bmQtPmJvcmRlciwgYm9yZGVy
UmVjdC53aWR0aCgpLCBib3JkZXJSZWN0LmhlaWdodCgpKTsKICAgICAgICAgcmFkaWkuc2NhbGUo
Y2FsY0NvbnN0cmFpbnRTY2FsZUZvcihib3JkZXJSZWN0LCByYWRpaSkpOwogICAgICAgICByb3Vu
ZGVkUmVjdC5pbmNsdWRlTG9naWNhbEVkZ2VzKHJhZGlpLCBpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAg
ICAgfQogICAgIHJldHVybiByb3VuZGVkUmVjdDsKIH0KIAotUm91bmRlZEludFJlY3QgUmVuZGVy
U3R5bGU6OmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihjb25zdCBJbnRSZWN0JiBib3JkZXJSZWN0
LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVk
Z2UpIGNvbnN0CitSb3VuZGVkUmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZElubmVyQm9yZGVy
Rm9yKGNvbnN0IEludFJlY3QmIGJvcmRlclJlY3QsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRn
ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3QKIHsKICAgICBib29sIGhvcml6
b250YWwgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogCkBAIC04NDEsNyArODQyLDcgQEAg
Um91bmRlZEludFJlY3QgUmVuZGVyU3R5bGU6OmdldFJvdW5kZWRJbgogICAgIHJldHVybiBnZXRS
b3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVyUmVjdCwgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBs
ZWZ0V2lkdGgsIHJpZ2h0V2lkdGgsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKTsKIH0KIAotUm91bmRlZEludFJlY3QgUmVuZGVyU3R5bGU6OmdldFJvdW5k
ZWRJbm5lckJvcmRlckZvcihjb25zdCBJbnRSZWN0JiBib3JkZXJSZWN0LAorUm91bmRlZFJlY3Qg
UmVuZGVyU3R5bGU6OmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihjb25zdCBJbnRSZWN0JiBib3Jk
ZXJSZWN0LAogICAgIGludCB0b3BXaWR0aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRo
LCBpbnQgcmlnaHRXaWR0aCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlKSBjb25zdAogewogICAgIEludFJlY3QgaW5uZXJSZWN0KGJvcmRl
clJlY3QueCgpICsgbGVmdFdpZHRoLCAKQEAgLTg0OSwxMCArODUwLDEwIEBAIFJvdW5kZWRJbnRS
ZWN0IFJlbmRlclN0eWxlOjpnZXRSb3VuZGVkSW4KICAgICAgICAgICAgIGJvcmRlclJlY3Qud2lk
dGgoKSAtIGxlZnRXaWR0aCAtIHJpZ2h0V2lkdGgsIAogICAgICAgICAgICAgYm9yZGVyUmVjdC5o
ZWlnaHQoKSAtIHRvcFdpZHRoIC0gYm90dG9tV2lkdGgpOwogCi0gICAgUm91bmRlZEludFJlY3Qg
cm91bmRlZFJlY3QoaW5uZXJSZWN0KTsKKyAgICBSb3VuZGVkUmVjdCByb3VuZGVkUmVjdChpbm5l
clJlY3QpOwogCiAgICAgaWYgKGhhc0JvcmRlclJhZGl1cygpKSB7Ci0gICAgICAgIFJvdW5kZWRJ
bnRSZWN0OjpSYWRpaSByYWRpaSA9IGdldFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVyUmVjdCkucmFk
aWkoKTsKKyAgICAgICAgUm91bmRlZFJlY3Q6OlJhZGlpIHJhZGlpID0gZ2V0Um91bmRlZEJvcmRl
ckZvcihib3JkZXJSZWN0KS5yYWRpaSgpOwogICAgICAgICByYWRpaS5zaHJpbmsodG9wV2lkdGgs
IGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGgpOwogICAgICAgICByb3VuZGVkUmVj
dC5pbmNsdWRlTG9naWNhbEVkZ2VzKHJhZGlpLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpLCBp
bmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJl
dmlzaW9uIDkwNzkzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbmNsdWRlICJOaW5lUGll
Y2VJbWFnZS5oIgogI2luY2x1ZGUgIk91dGxpbmVWYWx1ZS5oIgogI2luY2x1ZGUgIlJlbmRlclN0
eWxlQ29uc3RhbnRzLmgiCi0jaW5jbHVkZSAiUm91bmRlZEludFJlY3QuaCIKKyNpbmNsdWRlICJS
b3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIlNoYWRvd0RhdGEuaCIKICNpbmNsdWRlICJTdHlsZUJh
Y2tncm91bmREYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVCb3hEYXRhLmgiCkBAIC04NzEsMTAgKzg3
MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplKExlbmd0
aChzLndpZHRoKCksIEZpeGVkKSwgTGVuZ3RoKHMuaGVpZ2h0KCksIEZpeGVkKSkpOwogICAgIH0K
ICAgICAKLSAgICBSb3VuZGVkSW50UmVjdCBnZXRSb3VuZGVkQm9yZGVyRm9yKGNvbnN0IEludFJl
Y3QmIGJvcmRlclJlY3QsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wg
aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UgPSB0cnVlKSBjb25zdDsKLSAgICBSb3VuZGVkSW50UmVj
dCBnZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoY29uc3QgSW50UmVjdCYgYm9yZGVyUmVjdCwgYm9v
bCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0
RWRnZSA9IHRydWUpIGNvbnN0OworICAgIFJvdW5kZWRSZWN0IGdldFJvdW5kZWRCb3JkZXJGb3Io
Y29uc3QgSW50UmVjdCYgYm9yZGVyUmVjdCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0g
dHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpIGNvbnN0OworICAgIFJv
dW5kZWRSZWN0IGdldFJvdW5kZWRJbm5lckJvcmRlckZvcihjb25zdCBJbnRSZWN0JiBib3JkZXJS
ZWN0LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlID0gdHJ1ZSkgY29uc3Q7CiAKLSAgICBSb3VuZGVkSW50UmVjdCBnZXRSb3Vu
ZGVkSW5uZXJCb3JkZXJGb3IoY29uc3QgSW50UmVjdCYgYm9yZGVyUmVjdCwKKyAgICBSb3VuZGVk
UmVjdCBnZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoY29uc3QgSW50UmVjdCYgYm9yZGVyUmVjdCwK
ICAgICAgICAgaW50IHRvcFdpZHRoLCBpbnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgsIGlu
dCByaWdodFdpZHRoLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxv
Z2ljYWxSaWdodEVkZ2UpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRCb3JkZXJMZWZ0V2lkdGgodW5z
aWduZWQgc2hvcnQgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0Lm1fd2lkdGgs
IHYpIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100506</attachid>
            <date>2011-07-12 10:16:07 -0700</date>
            <delta_ts>2011-07-12 11:10:57 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-64326-20110712101606.patch</filename>
            <type>text/plain</type>
            <size>93822</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwNzk2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTAyIEBACisyMDExLTA3LTExICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2Ugcm91bmRlZElu
dFJlY3QgdG8gcm91bmRlZFJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY0MzI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisK
KyAgICAgICAgUmVuYW1pbmcgUm91bmRlZEludFJlY3QgdG8gUm91bmRlZFJlY3QgYW5kIG1vdmlu
ZyB0aGUgdW5kZXJseWluZyB0eXBlIHRvIExheW91dCB1bml0cyBmcm9tCisgICAgICAgIGludGVn
ZXItYmFzZWQgdmVyc2lvbnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBuZXcgZnVuY3Rp
b25hbGl0eQorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJv
OgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjphZGRSb3VuZGVkUmVjdENsaXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjphZGRSb3VuZGVkUmVjdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvUGF0aC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5k
ZWRJbnRSZWN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3Vu
ZGVkSW50UmVjdC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5k
ZWRSZWN0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Um91bmRlZEludFJlY3QuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlp
Ojppc1plcm8pOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzY2FsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OmV4cGFuZCk6CisgICAgICAg
IChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6aW5mbGF0ZVdpdGhSYWRpaSk6CisgICAgICAgIChXZWJD
b3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OmluY2x1ZGVMb2dpY2FsRWRnZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpleGNsdWRlTG9naWNhbEVkZ2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJvdW5kZWRSZWN0OjpSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSb3VuZGVkUmVjdDo6aW5jbHVkZUxvZ2ljYWxFZGdlcyk6CisgICAgICAgIChXZWJDb3JlOjpS
b3VuZGVkUmVjdDo6ZXhjbHVkZUxvZ2ljYWxFZGdlcyk6CisgICAgICAgIChXZWJDb3JlOjpSb3Vu
ZGVkUmVjdDo6aXNSZW5kZXJhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3Vu
ZGVkUmVjdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
b3VuZGVkSW50UmVjdC5oLgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpS
YWRpaSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnNldFRvcExlZnQp
OgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzZXRUb3BSaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnNldEJvdHRvbUxlZnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzZXRCb3R0b21SaWdodCk6CisgICAg
ICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnRvcExlZnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjp0b3BSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpS
b3VuZGVkUmVjdDo6UmFkaWk6OmJvdHRvbUxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRl
ZFJlY3Q6OlJhZGlpOjpib3R0b21SaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVj
dDo6UmFkaWk6OmV4cGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6
OnNocmluayk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6cmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6c2V0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSb3Vu
ZGVkUmVjdDo6bW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6aW5mbGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6ZXhwYW5kUmFkaWkpOgorICAgICAgICAo
V2ViQ29yZTo6Um91bmRlZFJlY3Q6OnNocmlua1JhZGlpKToKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZXJhdG9yPT0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6c2V0TGFzdFNoYWRvd1ZhbHVlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpzZXRMYXN0SW5zZXRTaGFkb3dWYWx1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6bWF0Y2hlc0xhc3RTaGFkb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6bWF0Y2hlc0xhc3RJbnNldFNoYWRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlU2xpY2VTaXplc0Zyb21SYWRpaSk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dCbHVyOjp0ZW1wbGF0ZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1
cjo6ZHJhd0luc2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdS
ZWN0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpk
cmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Js
dXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93
Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d0JsdXI6OmRyYXdMYXllclBpZWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6Z2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50VHJhbnNsdWNlbnRCb3JkZXJT
aWRlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3Jk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRl
RnJvbVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBC
b3JkZXJTaWRlUG9seWdvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRCb3hTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRyYWNrKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y2FsY1JhZGlpRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGNDb25zdHJhaW50U2NhbGVG
b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFJvdW5kZWRCb3JkZXJGb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFJvdW5kZWRJbm5lckJvcmRlckZv
cik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisKIDIwMTEtMDct
MTEgIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFN3aXRj
aCBsaW5lVG9wIGFuZCBsaW5lQm90dG9tIHRvIG5ldyBsYXlvdXQgdHlwZXMKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiA5MDc5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDc5LDcgKzEwNzksNyBAQCBTRVQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVy
bi5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkSW50UmVjdC5jcHAKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TZWdt
ZW50ZWRGb250RGF0YS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcApJbmRleDogU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA5MDc5MykKKysrIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI1NDMsOCArMjU0Myw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
aFRyYXZlcnNhbFN0YXRlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dHRlcm4uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgg
XAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRJbnRSZWN0LmNwcCBc
Ci0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZEludFJlY3QuaCBcCisJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIFwKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkJKHJldmlzaW9uIDkwNzkzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3
b3JraW5nIGNvcHkpCkBAIC04NTUsNyArODU1LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaCcsCi0gICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZEludFJlY3QuaCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L1NWR0dseXBoLmgnLApAQCAtMzk3Myw3ICszOTczLDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvUGF0dGVybi5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1Jv
dW5kZWRJbnRSZWN0LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRl
ZFJlY3QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250
RGF0YS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnRE
YXRhLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwJywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA5MDc5MykKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC05OTksNyArOTk5LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4u
Y3BwIFwKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkSW50UmVjdC5jcHAgXAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
U2VnbWVudGVkRm9udERhdGEuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU1ZHR2x5cGguY3BwIFwKQEAgLTE5OTAsNyAr
MTk5MCw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaCBcCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmggXAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1BhdHRlcm4uaCBcCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZEludFJl
Y3QuaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaCBcCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9T
dGlsbEltYWdlUXQuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagkocmV2aXNpb24gOTA3OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc2NTcsMTEgKzI3NjU3
LDExIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xSb3VuZGVkSW50UmVjdC5jcHAiCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUm91bmRlZFJlY3QuY3BwIgogCQkJCQk+CiAJCQkJ
PC9GaWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcUm91bmRlZEludFJlY3QuaCIKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xSb3VuZGVkUmVjdC5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiA5MDc5MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI5NSw4ICszMjk1LDggQEAKIAkJQTcx
ODc4OTAwQjJEMDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxODc4OEYwQjJEMDRBQzAwQTE2
RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tICovOyB9OwogCQlBNzFDMzBCODEzODEyNjVFMDBE
QkMzNTEgLyogU2hhZG93Q29udGVudFNlbGVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MUMzMEI2MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFk
b3dDb250ZW50U2VsZWN0b3IuY3BwICovOyB9OwogCQlBNzFDMzBCOTEzODEyNjVFMDBEQkMzNTEg
LyogU2hhZG93Q29udGVudFNlbGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzFDMzBCNzEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93Q29udGVu
dFNlbGVjdG9yLmggKi87IH07Ci0JCUE3M0Y5NUZFMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVk
SW50UmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNzNGOTVGQzEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJlY3QuY3BwICovOyB9Owot
CQlBNzNGOTVGRjEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJlY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3M0Y5NUZEMTJDOTdCRkUwMDMx
QUFGOSAvKiBSb3VuZGVkSW50UmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUE3M0Y5NUZFMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkUmVj
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzNG
OTVGQzEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZFJlY3QuY3BwICovOyB9OworCQlBNzNGOTVG
RjEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3M0Y5NUZEMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3Vu
ZGVkUmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUE3NEMyRDNDMTM4MTFFMEQwMEY4MzU3MiAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc0QzJEM0IxMzgx
MUUwRDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc1RTQ5NzYxMDc1MkFDQjAwQzlCODk2
IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc1RTQ5NzQxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUE3NUU0OTc3MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RTQ5
NzUxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgKi87IH07CkBA
IC05ODI0LDggKzk4MjQsOCBAQAogCQlBNzFBNzBDOTExQUZCMDIwMDA5ODlENkQgLyogSFRNTE1l
dGVyRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTE1ldGVyRWxlbWVudC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MUMzMEI2MTM4MTI2NUUwMERCQzM1
MSAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2hhZG93Q29udGVudFNlbGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTcxQzMwQjcxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0NvbnRlbnRTZWxl
Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dDb250ZW50U2Vs
ZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTczRjk1RkMxMkM5N0JGRTAw
MzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJvdW5kZWRJbnRSZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQTczRjk1RkQxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJvdW5kZWRJbnRSZWN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkUmVjdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSb3VuZGVkUmVjdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3M0Y5NUZEMTJDOTdCRkUwMDMxQUFGOSAv
KiBSb3VuZGVkUmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSb3VuZGVk
UmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzRDMkQzQjEzODExRTBEMDBG
ODM1NzIgLyogU2hhZG93Q29udGVudEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2hhZG93Q29udGVudEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTc1RTQ5NzQxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc1RTQ5NzUxMDc1MkFDQjAwQzlCODk2
IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTgwODUsOCArMTgwODUsOCBAQAogCQkJCUE4OERENDg2MEI0NjI5QTMwMEMw
Mjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuaCAqLywKIAkJCQlBOEZBNkU1QzBFNENGREVEMDBE
NUNGNDkgLyogUGF0dGVybi5jcHAgKi8sCiAJCQkJQThGQTZFNUIwRTRDRkRFRDAwRDVDRjQ5IC8q
IFBhdHRlcm4uaCAqLywKLQkJCQlBNzNGOTVGQzEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZElu
dFJlY3QuY3BwICovLAotCQkJCUE3M0Y5NUZEMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkSW50
UmVjdC5oICovLAorCQkJCUE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkUmVjdC5j
cHAgKi8sCisJCQkJQTczRjk1RkQxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRSZWN0LmggKi8s
CiAJCQkJMzcxRjRGRkIwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRhLmNwcCAq
LywKIAkJCQkzNzFGNEZGQTBEMjVFN0YzMDBFQ0UwRDUgLyogU2VnbWVudGVkRm9udERhdGEuaCAq
LywKIAkJCQkwRjNERDQ0RDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5jcHAgKi8sCkBA
IC0yMjQ1OCw3ICsyMjQ1OCw3IEBACiAJCQkJQkM3NERBMzcxMDEzRjNGNzAwNzk4N0FEIC8qIFJH
QkNvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjVFMTBBMTU1QTA1MDAwQTQyMzQgLyog
Um9vdElubGluZUJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQzkwRUY4NkQ0NzAwOUQw
Q0FGIC8qIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTcz
Rjk1RkYxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQlBNzNGOTVGRjEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZFJlY3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFDNjNBMjQ4MEY3MTY0NjYwMEMwOUQ1QSAvKiBSdW5Mb29wVGltZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBNTY5RDFGMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQyMTBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGlt
ZV9tZXRob2QuaCBpbiBIZWFkZXJzICovLApAQCAtMjUzNjMsNyArMjUzNjMsNyBAQAogCQkJCUJD
NzREQTM4MTAxM0YzRjcwMDc5ODdBRCAvKiBSR0JDb2xvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBOENGRjVFNzBBMTU1QTA1MDAwQTQyMzQgLyogUm9vdElubGluZUJveC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0OUU5MTFDODBFRjg2RDQ3MDA5RDBDQUYgLyogUm90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE3M0Y5NUZFMTJDOTdCRkUwMDMxQUFGOSAv
KiBSb3VuZGVkSW50UmVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNzNGOTVGRTEyQzk3QkZF
MDAzMUFBRjkgLyogUm91bmRlZFJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM2M0EyNDkw
RjcxNjQ2NjAwQzA5RDVBIC8qIFJ1bkxvb3BUaW1lckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBNTY5RDFFMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBNTY5RDIwMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX21ldGhvZC5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2aXNpb24gOTA3OTMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiUm91bmRlZElu
dFJlY3QuaCIKKyNpbmNsdWRlICJSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIK
IAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTU1NCw3ICs1NTQsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6Y2xpcChjb25zdCBJbnRSZWN0CiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmFkZFJvdW5kZWRSZWN0Q2xpcChjb25zdCBSb3VuZGVkSW50UmVjdCYgcmVjdCkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjphZGRSb3VuZGVkUmVjdENsaXAoY29uc3QgUm91bmRlZFJlY3Qm
IHJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtNTY0LDcgKzU2NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGRSb3VuZGVkUmVjdENs
aXAKICAgICBjbGlwKHBhdGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJv
dW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRJbnRSZWN0JiByZWN0KQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVkUmVjdCYgcmVjdCkKIHsKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC02MjAsMTMgKzYyMCwx
MyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvCiAgICAgc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKHByZXZpb3VzT3BlcmF0b3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRJbnRSZWN0JiByZWN0LCBjb25zdCBD
b2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBj
b2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIGZpbGxSb3VuZGVkUmVjdChyZWN0
LnJlY3QoKSwgcmVjdC5yYWRpaSgpLnRvcExlZnQoKSwgcmVjdC5yYWRpaSgpLnRvcFJpZ2h0KCks
IHJlY3QucmFkaWkoKS5ib3R0b21MZWZ0KCksIHJlY3QucmFkaWkoKS5ib3R0b21SaWdodCgpLCBj
b2xvciwgY29sb3JTcGFjZSk7CiB9CiAKICNpZiAhVVNFKENHKQotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJv
dW5kZWRJbnRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5k
ZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0JiByb3VuZGVkSG9s
ZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCShyZXZp
c2lvbiA5MDc5MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogI2VuZGlmCiAgICAgY2xhc3MgSW1hZ2VCdWZmZXI7CiAgICAgY2xhc3MgSW50UmVj
dDsKLSAgICBjbGFzcyBSb3VuZGVkSW50UmVjdDsKKyAgICBjbGFzcyBSb3VuZGVkUmVjdDsKICAg
ICBjbGFzcyBLVVJMOwogICAgIGNsYXNzIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOwogICAgIGNs
YXNzIFRleHRSdW47CkBAIC0yOTksOCArMjk5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIEdlbmVyYXRvciYpOwogICAgICAg
ICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3IpOwogICAgICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25z
dCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmln
aHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0
LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwotICAgICAgICB2b2lkIGZpbGxSb3VuZGVkUmVj
dChjb25zdCBSb3VuZGVkSW50UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7Ci0gICAg
ICAgIHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYsIGNvbnN0IFJv
dW5kZWRJbnRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7
CisgICAgICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiwgY29uc3Qg
Q29sb3ImLCBDb2xvclNwYWNlKTsKKyAgICAgICAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9s
ZShjb25zdCBJbnRSZWN0JiwgY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29u
c3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKIAogICAgICAgICB2b2lkIGNsZWFyUmVjdChjb25zdCBG
bG9hdFJlY3QmKTsKIApAQCAtMzMwLDEwICszMzAsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIHZvaWQgY2xpcChjb25zdCBJbnRSZWN0Jik7CiAgICAgICAgIHZvaWQgY2xpcChj
b25zdCBGbG9hdFJlY3QmKTsKLSAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdENsaXAoY29uc3Qg
Um91bmRlZEludFJlY3QmKTsKKyAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdENsaXAoY29uc3Qg
Um91bmRlZFJlY3QmKTsKICAgICAgICAgdm9pZCBhZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChjb25z
dCBJbnRSZWN0JiwgaW50IHRoaWNrbmVzcyk7CiAgICAgICAgIHZvaWQgY2xpcE91dChjb25zdCBJ
bnRSZWN0Jik7Ci0gICAgICAgIHZvaWQgY2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRJ
bnRSZWN0Jik7CisgICAgICAgIHZvaWQgY2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRS
ZWN0Jik7CiAgICAgICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKTsKICAg
ICAgICAgdm9pZCBjbGlwQ29udmV4UG9seWdvbihzaXplX3QgbnVtUG9pbnRzLCBjb25zdCBGbG9h
dFBvaW50KiwgYm9vbCBhbnRpYWxpYXMgPSB0cnVlKTsKICAgICAgICAgdm9pZCBjbGlwVG9JbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIGNvbnN0IEZsb2F0UmVjdCYpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAJKHJldmlzaW9uIDkwNzkzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkyLDcgKzkyLDcgQEAgZmxvYXQgUGF0aDo6bm9ybWFsQW5nbGVBdExlbmd0aChmbG9hdCBsZQog
fQogI2VuZGlmCiAKLXZvaWQgUGF0aDo6YWRkUm91bmRlZFJlY3QoY29uc3QgUm91bmRlZEludFJl
Y3QmIHIpCit2b2lkIFBhdGg6OmFkZFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiByKQog
ewogICAgIGFkZFJvdW5kZWRSZWN0KHIucmVjdCgpLCByLnJhZGlpKCkudG9wTGVmdCgpLCByLnJh
ZGlpKCkudG9wUmlnaHQoKSwgci5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgci5yYWRpaSgpLmJvdHRv
bVJpZ2h0KCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
aAkocmV2aXNpb24gOTA3OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpZm5kZWYgUGF0aF9oCiAj
ZGVmaW5lIFBhdGhfaAogCi0jaW5jbHVkZSAiUm91bmRlZEludFJlY3QuaCIKKyNpbmNsdWRlICJS
b3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KIApAQCAtMTM4LDcgKzEzOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdm9pZCBhZGRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpOwogICAgICAgICB2b2lk
IGFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgcm91bmRp
bmdSYWRpaSk7CiAgICAgICAgIHZvaWQgYWRkUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0
UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6
ZSYgYm90dG9tUmlnaHRSYWRpdXMpOwotICAgICAgICB2b2lkIGFkZFJvdW5kZWRSZWN0KGNvbnN0
IFJvdW5kZWRJbnRSZWN0Jik7CisgICAgICAgIHZvaWQgYWRkUm91bmRlZFJlY3QoY29uc3QgUm91
bmRlZFJlY3QmKTsKIAogICAgICAgICB2b2lkIHRyYW5zbGF0ZShjb25zdCBGbG9hdFNpemUmKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZEludFJlY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5k
ZWRJbnRSZWN0LmNwcAkocmV2aXNpb24gOTA3OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Sb3VuZGVkSW50UmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTY2ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJv
dW5kZWRJbnRSZWN0LmgiCi0KLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSA8YWxnb3Jp
dGhtPgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWJv
b2wgUm91bmRlZEludFJlY3Q6OlJhZGlpOjppc1plcm8oKSBjb25zdAotewotICAgIHJldHVybiBt
X3RvcExlZnQuaXNaZXJvKCkgJiYgbV90b3BSaWdodC5pc1plcm8oKSAmJiBtX2JvdHRvbUxlZnQu
aXNaZXJvKCkgJiYgbV9ib3R0b21SaWdodC5pc1plcm8oKTsKLX0KLQotdm9pZCBSb3VuZGVkSW50
UmVjdDo6UmFkaWk6OnNjYWxlKGZsb2F0IGZhY3RvcikKLXsKLSAgICBpZiAoZmFjdG9yID09IDEp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIGVpdGhlciByYWRpdXMgb24gYSBjb3JuZXIg
YmVjb21lcyB6ZXJvLCByZXNldCBib3RoIHJhZGlpIG9uIHRoYXQgY29ybmVyLgotICAgIG1fdG9w
TGVmdC5zY2FsZShmYWN0b3IpOwotICAgIGlmICghbV90b3BMZWZ0LndpZHRoKCkgfHwgIW1fdG9w
TGVmdC5oZWlnaHQoKSkKLSAgICAgICAgbV90b3BMZWZ0ID0gSW50U2l6ZSgpOwotICAgIG1fdG9w
UmlnaHQuc2NhbGUoZmFjdG9yKTsKLSAgICBpZiAoIW1fdG9wUmlnaHQud2lkdGgoKSB8fCAhbV90
b3BSaWdodC5oZWlnaHQoKSkKLSAgICAgICAgbV90b3BSaWdodCA9IEludFNpemUoKTsKLSAgICBt
X2JvdHRvbUxlZnQuc2NhbGUoZmFjdG9yKTsKLSAgICBpZiAoIW1fYm90dG9tTGVmdC53aWR0aCgp
IHx8ICFtX2JvdHRvbUxlZnQuaGVpZ2h0KCkpCi0gICAgICAgIG1fYm90dG9tTGVmdCA9IEludFNp
emUoKTsKLSAgICBtX2JvdHRvbVJpZ2h0LnNjYWxlKGZhY3Rvcik7Ci0gICAgaWYgKCFtX2JvdHRv
bVJpZ2h0LndpZHRoKCkgfHwgIW1fYm90dG9tUmlnaHQuaGVpZ2h0KCkpCi0gICAgICAgIG1fYm90
dG9tUmlnaHQgPSBJbnRTaXplKCk7Ci0KLX0KLQotdm9pZCBSb3VuZGVkSW50UmVjdDo6UmFkaWk6
OmV4cGFuZChpbnQgdG9wV2lkdGgsIGludCBib3R0b21XaWR0aCwgaW50IGxlZnRXaWR0aCwgaW50
IHJpZ2h0V2lkdGgpCi17Ci0gICAgbV90b3BMZWZ0LnNldFdpZHRoKG1heCgwLCBtX3RvcExlZnQu
d2lkdGgoKSArIGxlZnRXaWR0aCkpOwotICAgIG1fdG9wTGVmdC5zZXRIZWlnaHQobWF4KDAsIG1f
dG9wTGVmdC5oZWlnaHQoKSArIHRvcFdpZHRoKSk7Ci0KLSAgICBtX3RvcFJpZ2h0LnNldFdpZHRo
KG1heCgwLCBtX3RvcFJpZ2h0LndpZHRoKCkgKyByaWdodFdpZHRoKSk7Ci0gICAgbV90b3BSaWdo
dC5zZXRIZWlnaHQobWF4KDAsIG1fdG9wUmlnaHQuaGVpZ2h0KCkgKyB0b3BXaWR0aCkpOwotCi0g
ICAgbV9ib3R0b21MZWZ0LnNldFdpZHRoKG1heCgwLCBtX2JvdHRvbUxlZnQud2lkdGgoKSArIGxl
ZnRXaWR0aCkpOwotICAgIG1fYm90dG9tTGVmdC5zZXRIZWlnaHQobWF4KDAsIG1fYm90dG9tTGVm
dC5oZWlnaHQoKSArIGJvdHRvbVdpZHRoKSk7Ci0KLSAgICBtX2JvdHRvbVJpZ2h0LnNldFdpZHRo
KG1heCgwLCBtX2JvdHRvbVJpZ2h0LndpZHRoKCkgKyByaWdodFdpZHRoKSk7Ci0gICAgbV9ib3R0
b21SaWdodC5zZXRIZWlnaHQobWF4KDAsIG1fYm90dG9tUmlnaHQuaGVpZ2h0KCkgKyBib3R0b21X
aWR0aCkpOwotfQotCi12b2lkIFJvdW5kZWRJbnRSZWN0OjppbmZsYXRlV2l0aFJhZGlpKGludCBz
aXplKQotewotICAgIEludFJlY3Qgb2xkID0gbV9yZWN0OwotCi0gICAgbV9yZWN0LmluZmxhdGUo
c2l6ZSk7Ci0gICAgLy8gQ29uc2lkZXJpbmcgdGhlIGluZmxhdGlvbiBmYWN0b3Igb2Ygc2hvcnRl
ciBzaXplIHRvIHNjYWxlIHRoZSByYWRpaSBzZWVtcyBhcHByb3ByaWF0ZSBoZXJlCi0gICAgZmxv
YXQgZmFjdG9yOwotICAgIGlmIChtX3JlY3Qud2lkdGgoKSA8IG1fcmVjdC5oZWlnaHQoKSkKLSAg
ICAgICAgZmFjdG9yID0gb2xkLndpZHRoKCkgPyAoZmxvYXQpbV9yZWN0LndpZHRoKCkgLyBvbGQu
d2lkdGgoKSA6IDA7Ci0gICAgZWxzZQotICAgICAgICBmYWN0b3IgPSBvbGQuaGVpZ2h0KCkgPyAo
ZmxvYXQpbV9yZWN0LmhlaWdodCgpIC8gb2xkLmhlaWdodCgpIDogMDsKLQotICAgIG1fcmFkaWku
c2NhbGUoZmFjdG9yKTsKLX0KLQotdm9pZCBSb3VuZGVkSW50UmVjdDo6UmFkaWk6OmluY2x1ZGVM
b2dpY2FsRWRnZXMoY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiBlZGdlcywgYm9vbCBpc0hv
cml6b250YWwsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNh
bFJpZ2h0RWRnZSkKLXsKLSAgICBpZiAoaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgewotICAgICAg
ICBpZiAoaXNIb3Jpem9udGFsKQotICAgICAgICAgICAgbV9ib3R0b21MZWZ0ID0gZWRnZXMuYm90
dG9tTGVmdCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3RvcFJpZ2h0ID0gZWRnZXMu
dG9wUmlnaHQoKTsKLSAgICAgICAgbV90b3BMZWZ0ID0gZWRnZXMudG9wTGVmdCgpOwotICAgIH0K
LQotICAgIGlmIChpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgewotICAgICAgICBpZiAoaXNIb3Jp
em9udGFsKQotICAgICAgICAgICAgbV90b3BSaWdodCA9IGVkZ2VzLnRvcFJpZ2h0KCk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG1fYm90dG9tTGVmdCA9IGVkZ2VzLmJvdHRvbUxlZnQoKTsK
LSAgICAgICAgbV9ib3R0b21SaWdodCA9IGVkZ2VzLmJvdHRvbVJpZ2h0KCk7Ci0gICAgfQotfQot
Ci12b2lkIFJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6ZXhjbHVkZUxvZ2ljYWxFZGdlcyhib29sIGlz
SG9yaXpvbnRhbCwgYm9vbCBleGNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGV4Y2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKQotewotICAgIGlmIChleGNsdWRlTG9naWNhbExlZnRFZGdlKSB7Ci0gICAg
ICAgIGlmIChpc0hvcml6b250YWwpCi0gICAgICAgICAgICBtX2JvdHRvbUxlZnQgPSBJbnRTaXpl
KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fdG9wUmlnaHQgPSBJbnRTaXplKCk7Ci0g
ICAgICAgIG1fdG9wTGVmdCA9IEludFNpemUoKTsKLSAgICB9Ci0gICAgICAgIAotICAgIGlmIChl
eGNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgewotICAgICAgICBpZiAoaXNIb3Jpem9udGFsKQotICAg
ICAgICAgICAgbV90b3BSaWdodCA9IEludFNpemUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbV9ib3R0b21MZWZ0ID0gSW50U2l6ZSgpOwotICAgICAgICBtX2JvdHRvbVJpZ2h0ID0gSW50
U2l6ZSgpOwotICAgIH0KLX0KLQotUm91bmRlZEludFJlY3Q6OlJvdW5kZWRJbnRSZWN0KGludCB4
LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotICAgIDogbV9yZWN0KHgsIHksIHdpZHRo
LCBoZWlnaHQpCi17Ci19Ci0KLVJvdW5kZWRJbnRSZWN0OjpSb3VuZGVkSW50UmVjdChjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBSYWRpaSYgcmFkaWkpCi0gICAgOiBtX3JlY3QocmVjdCkKLSAg
ICAsIG1fcmFkaWkocmFkaWkpCi17Ci19Ci0KLVJvdW5kZWRJbnRSZWN0OjpSb3VuZGVkSW50UmVj
dChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRT
aXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYg
Ym90dG9tUmlnaHQpCi0gICAgOiBtX3JlY3QocmVjdCkKLSAgICAsIG1fcmFkaWkodG9wTGVmdCwg
dG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KQotewotfQotCi12b2lkIFJvdW5kZWRJ
bnRSZWN0OjppbmNsdWRlTG9naWNhbEVkZ2VzKGNvbnN0IFJhZGlpJiBlZGdlcywgYm9vbCBpc0hv
cml6b250YWwsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNh
bFJpZ2h0RWRnZSkKLXsKLSAgICBtX3JhZGlpLmluY2x1ZGVMb2dpY2FsRWRnZXMoZWRnZXMsIGlz
SG9yaXpvbnRhbCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVk
Z2UpOwotfQotCi12b2lkIFJvdW5kZWRJbnRSZWN0OjpleGNsdWRlTG9naWNhbEVkZ2VzKGJvb2wg
aXNIb3Jpem9udGFsLCBib29sIGV4Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgZXhjbHVkZUxv
Z2ljYWxSaWdodEVkZ2UpCi17Ci0gICAgbV9yYWRpaS5leGNsdWRlTG9naWNhbEVkZ2VzKGlzSG9y
aXpvbnRhbCwgZXhjbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgZXhjbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
OwotfQotCi1ib29sIFJvdW5kZWRJbnRSZWN0Ojppc1JlbmRlcmFibGUoKSBjb25zdAotewotICAg
IHJldHVybiBtX3JhZGlpLnRvcExlZnQoKS53aWR0aCgpICsgbV9yYWRpaS50b3BSaWdodCgpLndp
ZHRoKCkgPD0gbV9yZWN0LndpZHRoKCkKLSAgICAgICAgJiYgbV9yYWRpaS5ib3R0b21MZWZ0KCku
d2lkdGgoKSArIG1fcmFkaWkuYm90dG9tUmlnaHQoKS53aWR0aCgpIDw9IG1fcmVjdC53aWR0aCgp
Ci0gICAgICAgICYmIG1fcmFkaWkudG9wTGVmdCgpLmhlaWdodCgpICsgbV9yYWRpaS50b3BSaWdo
dCgpLmhlaWdodCgpIDw9IG1fcmVjdC5oZWlnaHQoKQotICAgICAgICAmJiBtX3JhZGlpLmJvdHRv
bUxlZnQoKS5oZWlnaHQoKSArIG1fcmFkaWkuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSA8PSBtX3Jl
Y3QuaGVpZ2h0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRJbnRSZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZEludFJlY3QuaAkocmV2aXNp
b24gOTA3OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkSW50
UmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA2LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgUm91bmRlZEludFJlY3RfaAotI2RlZmluZSBSb3VuZGVkSW50UmVjdF9oCi0KLSNp
bmNsdWRlICJJbnRSZWN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotCi1jbGFzcyBSb3Vu
ZGVkSW50UmVjdCB7Ci1wdWJsaWM6Ci0gICAgY2xhc3MgUmFkaWkgewotICAgIHB1YmxpYzoKLSAg
ICAgICAgUmFkaWkoKSB7fQotICAgICAgICBSYWRpaShjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBj
b25zdCBJbnRTaXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3Qg
SW50U2l6ZSYgYm90dG9tUmlnaHQpCi0gICAgICAgICAgICA6IG1fdG9wTGVmdCh0b3BMZWZ0KQot
ICAgICAgICAgICAgLCBtX3RvcFJpZ2h0KHRvcFJpZ2h0KQotICAgICAgICAgICAgLCBtX2JvdHRv
bUxlZnQoYm90dG9tTGVmdCkKLSAgICAgICAgICAgICwgbV9ib3R0b21SaWdodChib3R0b21SaWdo
dCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBzZXRUb3BMZWZ0KGNvbnN0
IEludFNpemUmIHNpemUpIHsgbV90b3BMZWZ0ID0gc2l6ZTsgfQotICAgICAgICB2b2lkIHNldFRv
cFJpZ2h0KGNvbnN0IEludFNpemUmIHNpemUpIHsgbV90b3BSaWdodCA9IHNpemU7IH0KLSAgICAg
ICAgdm9pZCBzZXRCb3R0b21MZWZ0KGNvbnN0IEludFNpemUmIHNpemUpIHsgbV9ib3R0b21MZWZ0
ID0gc2l6ZTsgfQotICAgICAgICB2b2lkIHNldEJvdHRvbVJpZ2h0KGNvbnN0IEludFNpemUmIHNp
emUpIHsgbV9ib3R0b21SaWdodCA9IHNpemU7IH0KLSAgICAgICAgY29uc3QgSW50U2l6ZSYgdG9w
TGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGVmdDsgfQotICAgICAgICBjb25zdCBJbnRTaXpl
JiB0b3BSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wUmlnaHQ7IH0KLSAgICAgICAgY29uc3Qg
SW50U2l6ZSYgYm90dG9tTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tTGVmdDsgfQotICAg
ICAgICBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9t
UmlnaHQ7IH0KLQotICAgICAgICBib29sIGlzWmVybygpIGNvbnN0OwotCi0gICAgICAgIHZvaWQg
aW5jbHVkZUxvZ2ljYWxFZGdlcyhjb25zdCBSYWRpaSYgZWRnZXMsIGJvb2wgaXNIb3Jpem9udGFs
LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVk
Z2UpOwotICAgICAgICB2b2lkIGV4Y2x1ZGVMb2dpY2FsRWRnZXMoYm9vbCBpc0hvcml6b250YWws
IGJvb2wgZXhjbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBleGNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSk7Ci0KLSAgICAgICAgdm9pZCBzY2FsZShmbG9hdCBmYWN0b3IpOwotICAgICAgICB2b2lkIGV4
cGFuZChpbnQgdG9wV2lkdGgsIGludCBib3R0b21XaWR0aCwgaW50IGxlZnRXaWR0aCwgaW50IHJp
Z2h0V2lkdGgpOwotICAgICAgICB2b2lkIGV4cGFuZChpbnQgc2l6ZSkgeyBleHBhbmQoc2l6ZSwg
c2l6ZSwgc2l6ZSwgc2l6ZSk7IH0KLSAgICAgICAgdm9pZCBzaHJpbmsoaW50IHRvcFdpZHRoLCBp
bnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgsIGludCByaWdodFdpZHRoKSB7IGV4cGFuZCgt
dG9wV2lkdGgsIC1ib3R0b21XaWR0aCwgLWxlZnRXaWR0aCwgLXJpZ2h0V2lkdGgpOyB9Ci0gICAg
ICAgIHZvaWQgc2hyaW5rKGludCBzaXplKSB7IHNocmluayhzaXplLCBzaXplLCBzaXplLCBzaXpl
KTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgSW50U2l6ZSBtX3RvcExlZnQ7Ci0gICAgICAg
IEludFNpemUgbV90b3BSaWdodDsKLSAgICAgICAgSW50U2l6ZSBtX2JvdHRvbUxlZnQ7Ci0gICAg
ICAgIEludFNpemUgbV9ib3R0b21SaWdodDsKLSAgICB9OwotCi0gICAgZXhwbGljaXQgUm91bmRl
ZEludFJlY3QoY29uc3QgSW50UmVjdCYsIGNvbnN0IFJhZGlpJiA9IFJhZGlpKCkpOwotICAgIFJv
dW5kZWRJbnRSZWN0KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSAgICBS
b3VuZGVkSW50UmVjdChjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29u
c3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IElu
dFNpemUmIGJvdHRvbVJpZ2h0KTsKLQotICAgIGNvbnN0IEludFJlY3QmIHJlY3QoKSBjb25zdCB7
IHJldHVybiBtX3JlY3Q7IH0KLSAgICBjb25zdCBSYWRpaSYgcmFkaWkoKSBjb25zdCB7IHJldHVy
biBtX3JhZGlpOyB9Ci0gICAgYm9vbCBpc1JvdW5kZWQoKSBjb25zdCB7IHJldHVybiAhbV9yYWRp
aS5pc1plcm8oKTsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5p
c0VtcHR5KCk7IH0KLQotICAgIHZvaWQgc2V0UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KSB7IG1f
cmVjdCA9IHJlY3Q7IH0KLSAgICB2b2lkIHNldFJhZGlpKGNvbnN0IFJhZGlpJiByYWRpaSkgeyBt
X3JhZGlpID0gcmFkaWk7IH0KLQotICAgIHZvaWQgbW92ZShjb25zdCBJbnRTaXplJiBzaXplKSB7
IG1fcmVjdC5tb3ZlKHNpemUpOyB9Ci0gICAgdm9pZCBpbmZsYXRlKGludCBzaXplKSB7IG1fcmVj
dC5pbmZsYXRlKHNpemUpOyAgfQotICAgIHZvaWQgaW5mbGF0ZVdpdGhSYWRpaShpbnQgc2l6ZSk7
Ci0gICAgdm9pZCBleHBhbmRSYWRpaShpbnQgc2l6ZSkgeyBtX3JhZGlpLmV4cGFuZChzaXplKTsg
fQotICAgIHZvaWQgc2hyaW5rUmFkaWkoaW50IHNpemUpIHsgbV9yYWRpaS5zaHJpbmsoc2l6ZSk7
IH0KLQotICAgIHZvaWQgaW5jbHVkZUxvZ2ljYWxFZGdlcyhjb25zdCBSYWRpaSYgZWRnZXMsIGJv
b2wgaXNIb3Jpem9udGFsLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UpOwotICAgIHZvaWQgZXhjbHVkZUxvZ2ljYWxFZGdlcyhib29sIGlz
SG9yaXpvbnRhbCwgYm9vbCBleGNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGV4Y2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKTsKLQotICAgIGJvb2wgaXNSZW5kZXJhYmxlKCkgY29uc3Q7Ci0KLXByaXZh
dGU6Ci0gICAgSW50UmVjdCBtX3JlY3Q7Ci0gICAgUmFkaWkgbV9yYWRpaTsKLX07Ci0KLWlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiBhLCBjb25zdCBS
b3VuZGVkSW50UmVjdDo6UmFkaWkmIGIpCi17Ci0gICAgcmV0dXJuIGEudG9wTGVmdCgpID09IGIu
dG9wTGVmdCgpICYmIGEudG9wUmlnaHQoKSA9PSBiLnRvcFJpZ2h0KCkgJiYgYS5ib3R0b21MZWZ0
KCkgPT0gYi5ib3R0b21MZWZ0KCkgJiYgYS5ib3R0b21SaWdodCgpID09IGIuYm90dG9tUmlnaHQo
KTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSb3VuZGVkSW50UmVjdCYgYSwg
Y29uc3QgUm91bmRlZEludFJlY3QmIGIpCi17Ci0gICAgcmV0dXJuIGEucmVjdCgpID09IGIucmVj
dCgpICYmIGEucmFkaWkoKSA9PSBiLnJhZGlpKCk7Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gUm91bmRlZEludFJlY3RfaApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAkocmV2aXNpb24gOTA3OTMp
CShmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRJbnRSZWN0LmNw
cDo5MDc5MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNiwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUm91bmRlZEludFJlY3QuaCIKKworI2luY2x1
ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKK3VzaW5nIG5hbWVzcGFjZSBz
dGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBSb3VuZGVkSW50UmVjdDo6UmFkaWk6
OmlzWmVybygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdG9wTGVmdC5pc1plcm8oKSAmJiBtX3Rv
cFJpZ2h0LmlzWmVybygpICYmIG1fYm90dG9tTGVmdC5pc1plcm8oKSAmJiBtX2JvdHRvbVJpZ2h0
LmlzWmVybygpOworfQorCit2b2lkIFJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6c2NhbGUoZmxvYXQg
ZmFjdG9yKQoreworICAgIGlmIChmYWN0b3IgPT0gMSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gSWYgZWl0aGVyIHJhZGl1cyBvbiBhIGNvcm5lciBiZWNvbWVzIHplcm8sIHJlc2V0IGJvdGgg
cmFkaWkgb24gdGhhdCBjb3JuZXIuCisgICAgbV90b3BMZWZ0LnNjYWxlKGZhY3Rvcik7CisgICAg
aWYgKCFtX3RvcExlZnQud2lkdGgoKSB8fCAhbV90b3BMZWZ0LmhlaWdodCgpKQorICAgICAgICBt
X3RvcExlZnQgPSBJbnRTaXplKCk7CisgICAgbV90b3BSaWdodC5zY2FsZShmYWN0b3IpOworICAg
IGlmICghbV90b3BSaWdodC53aWR0aCgpIHx8ICFtX3RvcFJpZ2h0LmhlaWdodCgpKQorICAgICAg
ICBtX3RvcFJpZ2h0ID0gSW50U2l6ZSgpOworICAgIG1fYm90dG9tTGVmdC5zY2FsZShmYWN0b3Ip
OworICAgIGlmICghbV9ib3R0b21MZWZ0LndpZHRoKCkgfHwgIW1fYm90dG9tTGVmdC5oZWlnaHQo
KSkKKyAgICAgICAgbV9ib3R0b21MZWZ0ID0gSW50U2l6ZSgpOworICAgIG1fYm90dG9tUmlnaHQu
c2NhbGUoZmFjdG9yKTsKKyAgICBpZiAoIW1fYm90dG9tUmlnaHQud2lkdGgoKSB8fCAhbV9ib3R0
b21SaWdodC5oZWlnaHQoKSkKKyAgICAgICAgbV9ib3R0b21SaWdodCA9IEludFNpemUoKTsKKwor
fQorCit2b2lkIFJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6ZXhwYW5kKGludCB0b3BXaWR0aCwgaW50
IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQgcmlnaHRXaWR0aCkKK3sKKyAgICBtX3Rv
cExlZnQuc2V0V2lkdGgobWF4KDAsIG1fdG9wTGVmdC53aWR0aCgpICsgbGVmdFdpZHRoKSk7Cisg
ICAgbV90b3BMZWZ0LnNldEhlaWdodChtYXgoMCwgbV90b3BMZWZ0LmhlaWdodCgpICsgdG9wV2lk
dGgpKTsKKworICAgIG1fdG9wUmlnaHQuc2V0V2lkdGgobWF4KDAsIG1fdG9wUmlnaHQud2lkdGgo
KSArIHJpZ2h0V2lkdGgpKTsKKyAgICBtX3RvcFJpZ2h0LnNldEhlaWdodChtYXgoMCwgbV90b3BS
aWdodC5oZWlnaHQoKSArIHRvcFdpZHRoKSk7CisKKyAgICBtX2JvdHRvbUxlZnQuc2V0V2lkdGgo
bWF4KDAsIG1fYm90dG9tTGVmdC53aWR0aCgpICsgbGVmdFdpZHRoKSk7CisgICAgbV9ib3R0b21M
ZWZ0LnNldEhlaWdodChtYXgoMCwgbV9ib3R0b21MZWZ0LmhlaWdodCgpICsgYm90dG9tV2lkdGgp
KTsKKworICAgIG1fYm90dG9tUmlnaHQuc2V0V2lkdGgobWF4KDAsIG1fYm90dG9tUmlnaHQud2lk
dGgoKSArIHJpZ2h0V2lkdGgpKTsKKyAgICBtX2JvdHRvbVJpZ2h0LnNldEhlaWdodChtYXgoMCwg
bV9ib3R0b21SaWdodC5oZWlnaHQoKSArIGJvdHRvbVdpZHRoKSk7Cit9CisKK3ZvaWQgUm91bmRl
ZEludFJlY3Q6OmluZmxhdGVXaXRoUmFkaWkoaW50IHNpemUpCit7CisgICAgSW50UmVjdCBvbGQg
PSBtX3JlY3Q7CisKKyAgICBtX3JlY3QuaW5mbGF0ZShzaXplKTsKKyAgICAvLyBDb25zaWRlcmlu
ZyB0aGUgaW5mbGF0aW9uIGZhY3RvciBvZiBzaG9ydGVyIHNpemUgdG8gc2NhbGUgdGhlIHJhZGlp
IHNlZW1zIGFwcHJvcHJpYXRlIGhlcmUKKyAgICBmbG9hdCBmYWN0b3I7CisgICAgaWYgKG1fcmVj
dC53aWR0aCgpIDwgbV9yZWN0LmhlaWdodCgpKQorICAgICAgICBmYWN0b3IgPSBvbGQud2lkdGgo
KSA/IChmbG9hdCltX3JlY3Qud2lkdGgoKSAvIG9sZC53aWR0aCgpIDogMDsKKyAgICBlbHNlCisg
ICAgICAgIGZhY3RvciA9IG9sZC5oZWlnaHQoKSA/IChmbG9hdCltX3JlY3QuaGVpZ2h0KCkgLyBv
bGQuaGVpZ2h0KCkgOiAwOworCisgICAgbV9yYWRpaS5zY2FsZShmYWN0b3IpOworfQorCit2b2lk
IFJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6aW5jbHVkZUxvZ2ljYWxFZGdlcyhjb25zdCBSb3VuZGVk
SW50UmVjdDo6UmFkaWkmIGVkZ2VzLCBib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBpbmNsdWRlTG9n
aWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQoreworICAgIGlmIChp
bmNsdWRlTG9naWNhbExlZnRFZGdlKSB7CisgICAgICAgIGlmIChpc0hvcml6b250YWwpCisgICAg
ICAgICAgICBtX2JvdHRvbUxlZnQgPSBlZGdlcy5ib3R0b21MZWZ0KCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG1fdG9wUmlnaHQgPSBlZGdlcy50b3BSaWdodCgpOworICAgICAgICBtX3Rv
cExlZnQgPSBlZGdlcy50b3BMZWZ0KCk7CisgICAgfQorCisgICAgaWYgKGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlKSB7CisgICAgICAgIGlmIChpc0hvcml6b250YWwpCisgICAgICAgICAgICBtX3Rv
cFJpZ2h0ID0gZWRnZXMudG9wUmlnaHQoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9i
b3R0b21MZWZ0ID0gZWRnZXMuYm90dG9tTGVmdCgpOworICAgICAgICBtX2JvdHRvbVJpZ2h0ID0g
ZWRnZXMuYm90dG9tUmlnaHQoKTsKKyAgICB9Cit9CisKK3ZvaWQgUm91bmRlZEludFJlY3Q6OlJh
ZGlpOjpleGNsdWRlTG9naWNhbEVkZ2VzKGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGV4Y2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGJvb2wgZXhjbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCit7CisgICAgaWYg
KGV4Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UpIHsKKyAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkKKyAg
ICAgICAgICAgIG1fYm90dG9tTGVmdCA9IEludFNpemUoKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbV90b3BSaWdodCA9IEludFNpemUoKTsKKyAgICAgICAgbV90b3BMZWZ0ID0gSW50U2l6
ZSgpOworICAgIH0KKyAgICAgICAgCisgICAgaWYgKGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSB7
CisgICAgICAgIGlmIChpc0hvcml6b250YWwpCisgICAgICAgICAgICBtX3RvcFJpZ2h0ID0gSW50
U2l6ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2JvdHRvbUxlZnQgPSBJbnRTaXpl
KCk7CisgICAgICAgIG1fYm90dG9tUmlnaHQgPSBJbnRTaXplKCk7CisgICAgfQorfQorCitSb3Vu
ZGVkSW50UmVjdDo6Um91bmRlZEludFJlY3QoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQpCisgICAgOiBtX3JlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkKK3sKK30KKworUm91bmRl
ZEludFJlY3Q6OlJvdW5kZWRJbnRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJhZGlp
JiByYWRpaSkKKyAgICA6IG1fcmVjdChyZWN0KQorICAgICwgbV9yYWRpaShyYWRpaSkKK3sKK30K
KworUm91bmRlZEludFJlY3Q6OlJvdW5kZWRJbnRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRT
aXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCkKKyAgICA6IG1fcmVj
dChyZWN0KQorICAgICwgbV9yYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90
dG9tUmlnaHQpCit7Cit9CisKK3ZvaWQgUm91bmRlZEludFJlY3Q6OmluY2x1ZGVMb2dpY2FsRWRn
ZXMoY29uc3QgUmFkaWkmIGVkZ2VzLCBib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBpbmNsdWRlTG9n
aWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQoreworICAgIG1fcmFk
aWkuaW5jbHVkZUxvZ2ljYWxFZGdlcyhlZGdlcywgaXNIb3Jpem9udGFsLCBpbmNsdWRlTG9naWNh
bExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7Cit9CisKK3ZvaWQgUm91bmRlZElu
dFJlY3Q6OmV4Y2x1ZGVMb2dpY2FsRWRnZXMoYm9vbCBpc0hvcml6b250YWwsIGJvb2wgZXhjbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBleGNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKK3sKKyAgICBt
X3JhZGlpLmV4Y2x1ZGVMb2dpY2FsRWRnZXMoaXNIb3Jpem9udGFsLCBleGNsdWRlTG9naWNhbExl
ZnRFZGdlLCBleGNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7Cit9CisKK2Jvb2wgUm91bmRlZEludFJl
Y3Q6OmlzUmVuZGVyYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmFkaWkudG9wTGVmdCgp
LndpZHRoKCkgKyBtX3JhZGlpLnRvcFJpZ2h0KCkud2lkdGgoKSA8PSBtX3JlY3Qud2lkdGgoKQor
ICAgICAgICAmJiBtX3JhZGlpLmJvdHRvbUxlZnQoKS53aWR0aCgpICsgbV9yYWRpaS5ib3R0b21S
aWdodCgpLndpZHRoKCkgPD0gbV9yZWN0LndpZHRoKCkKKyAgICAgICAgJiYgbV9yYWRpaS50b3BM
ZWZ0KCkuaGVpZ2h0KCkgKyBtX3JhZGlpLnRvcFJpZ2h0KCkuaGVpZ2h0KCkgPD0gbV9yZWN0Lmhl
aWdodCgpCisgICAgICAgICYmIG1fcmFkaWkuYm90dG9tTGVmdCgpLmhlaWdodCgpICsgbV9yYWRp
aS5ib3R0b21SaWdodCgpLmhlaWdodCgpIDw9IG1fcmVjdC5oZWlnaHQoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Um91bmRlZFJlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JvdW5kZWRSZWN0LmNwcAkocmV2aXNpb24gOTA3OTMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1
LDIxICsyNSwyMCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSb3Vu
ZGVkSW50UmVjdC5oIgorI2luY2x1ZGUgIlJvdW5kZWRSZWN0LmgiCiAKLSNpbmNsdWRlICJJbnRS
ZWN0LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgUm91bmRlZEludFJlY3Q6OlJhZGlpOjppc1plcm8o
KSBjb25zdAorYm9vbCBSb3VuZGVkUmVjdDo6UmFkaWk6OmlzWmVybygpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fdG9wTGVmdC5pc1plcm8oKSAmJiBtX3RvcFJpZ2h0LmlzWmVybygpICYmIG1fYm90
dG9tTGVmdC5pc1plcm8oKSAmJiBtX2JvdHRvbVJpZ2h0LmlzWmVybygpOwogfQogCi12b2lkIFJv
dW5kZWRJbnRSZWN0OjpSYWRpaTo6c2NhbGUoZmxvYXQgZmFjdG9yKQordm9pZCBSb3VuZGVkUmVj
dDo6UmFkaWk6OnNjYWxlKGZsb2F0IGZhY3RvcikKIHsKICAgICBpZiAoZmFjdG9yID09IDEpCiAg
ICAgICAgIHJldHVybjsKQEAgLTQ3LDIwICs0NiwyMCBAQCB2b2lkIFJvdW5kZWRJbnRSZWN0OjpS
YWRpaTo6c2NhbGUoZmxvYXQgCiAgICAgLy8gSWYgZWl0aGVyIHJhZGl1cyBvbiBhIGNvcm5lciBi
ZWNvbWVzIHplcm8sIHJlc2V0IGJvdGggcmFkaWkgb24gdGhhdCBjb3JuZXIuCiAgICAgbV90b3BM
ZWZ0LnNjYWxlKGZhY3Rvcik7CiAgICAgaWYgKCFtX3RvcExlZnQud2lkdGgoKSB8fCAhbV90b3BM
ZWZ0LmhlaWdodCgpKQotICAgICAgICBtX3RvcExlZnQgPSBJbnRTaXplKCk7CisgICAgICAgIG1f
dG9wTGVmdCA9IExheW91dFNpemUoKTsKICAgICBtX3RvcFJpZ2h0LnNjYWxlKGZhY3Rvcik7CiAg
ICAgaWYgKCFtX3RvcFJpZ2h0LndpZHRoKCkgfHwgIW1fdG9wUmlnaHQuaGVpZ2h0KCkpCi0gICAg
ICAgIG1fdG9wUmlnaHQgPSBJbnRTaXplKCk7CisgICAgICAgIG1fdG9wUmlnaHQgPSBMYXlvdXRT
aXplKCk7CiAgICAgbV9ib3R0b21MZWZ0LnNjYWxlKGZhY3Rvcik7CiAgICAgaWYgKCFtX2JvdHRv
bUxlZnQud2lkdGgoKSB8fCAhbV9ib3R0b21MZWZ0LmhlaWdodCgpKQotICAgICAgICBtX2JvdHRv
bUxlZnQgPSBJbnRTaXplKCk7CisgICAgICAgIG1fYm90dG9tTGVmdCA9IExheW91dFNpemUoKTsK
ICAgICBtX2JvdHRvbVJpZ2h0LnNjYWxlKGZhY3Rvcik7CiAgICAgaWYgKCFtX2JvdHRvbVJpZ2h0
LndpZHRoKCkgfHwgIW1fYm90dG9tUmlnaHQuaGVpZ2h0KCkpCi0gICAgICAgIG1fYm90dG9tUmln
aHQgPSBJbnRTaXplKCk7CisgICAgICAgIG1fYm90dG9tUmlnaHQgPSBMYXlvdXRTaXplKCk7CiAK
IH0KIAotdm9pZCBSb3VuZGVkSW50UmVjdDo6UmFkaWk6OmV4cGFuZChpbnQgdG9wV2lkdGgsIGlu
dCBib3R0b21XaWR0aCwgaW50IGxlZnRXaWR0aCwgaW50IHJpZ2h0V2lkdGgpCit2b2lkIFJvdW5k
ZWRSZWN0OjpSYWRpaTo6ZXhwYW5kKExheW91dFVuaXQgdG9wV2lkdGgsIExheW91dFVuaXQgYm90
dG9tV2lkdGgsIExheW91dFVuaXQgbGVmdFdpZHRoLCBMYXlvdXRVbml0IHJpZ2h0V2lkdGgpCiB7
CiAgICAgbV90b3BMZWZ0LnNldFdpZHRoKG1heCgwLCBtX3RvcExlZnQud2lkdGgoKSArIGxlZnRX
aWR0aCkpOwogICAgIG1fdG9wTGVmdC5zZXRIZWlnaHQobWF4KDAsIG1fdG9wTGVmdC5oZWlnaHQo
KSArIHRvcFdpZHRoKSk7CkBAIC03NSw5ICs3NCw5IEBAIHZvaWQgUm91bmRlZEludFJlY3Q6OlJh
ZGlpOjpleHBhbmQoaW50IHQKICAgICBtX2JvdHRvbVJpZ2h0LnNldEhlaWdodChtYXgoMCwgbV9i
b3R0b21SaWdodC5oZWlnaHQoKSArIGJvdHRvbVdpZHRoKSk7CiB9CiAKLXZvaWQgUm91bmRlZElu
dFJlY3Q6OmluZmxhdGVXaXRoUmFkaWkoaW50IHNpemUpCit2b2lkIFJvdW5kZWRSZWN0OjppbmZs
YXRlV2l0aFJhZGlpKExheW91dFVuaXQgc2l6ZSkKIHsKLSAgICBJbnRSZWN0IG9sZCA9IG1fcmVj
dDsKKyAgICBMYXlvdXRSZWN0IG9sZCA9IG1fcmVjdDsKIAogICAgIG1fcmVjdC5pbmZsYXRlKHNp
emUpOwogICAgIC8vIENvbnNpZGVyaW5nIHRoZSBpbmZsYXRpb24gZmFjdG9yIG9mIHNob3J0ZXIg
c2l6ZSB0byBzY2FsZSB0aGUgcmFkaWkgc2VlbXMgYXBwcm9wcmlhdGUgaGVyZQpAQCAtOTAsNyAr
ODksNyBAQCB2b2lkIFJvdW5kZWRJbnRSZWN0OjppbmZsYXRlV2l0aFJhZGlpKGluCiAgICAgbV9y
YWRpaS5zY2FsZShmYWN0b3IpOwogfQogCi12b2lkIFJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6aW5j
bHVkZUxvZ2ljYWxFZGdlcyhjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmIGVkZ2VzLCBib29s
IGlzSG9yaXpvbnRhbCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVM
b2dpY2FsUmlnaHRFZGdlKQordm9pZCBSb3VuZGVkUmVjdDo6UmFkaWk6OmluY2x1ZGVMb2dpY2Fs
RWRnZXMoY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiBlZGdlcywgYm9vbCBpc0hvcml6b250YWws
IGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSkKIHsKICAgICBpZiAoaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgewogICAgICAgICBpZiAoaXNI
b3Jpem9udGFsKQpAQCAtMTA5LDUzICsxMDgsNTMgQEAgdm9pZCBSb3VuZGVkSW50UmVjdDo6UmFk
aWk6OmluY2x1ZGVMb2dpYwogICAgIH0KIH0KIAotdm9pZCBSb3VuZGVkSW50UmVjdDo6UmFkaWk6
OmV4Y2x1ZGVMb2dpY2FsRWRnZXMoYm9vbCBpc0hvcml6b250YWwsIGJvb2wgZXhjbHVkZUxvZ2lj
YWxMZWZ0RWRnZSwgYm9vbCBleGNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKK3ZvaWQgUm91bmRlZFJl
Y3Q6OlJhZGlpOjpleGNsdWRlTG9naWNhbEVkZ2VzKGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGV4
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgZXhjbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCiB7CiAg
ICAgaWYgKGV4Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UpIHsKICAgICAgICAgaWYgKGlzSG9yaXpvbnRh
bCkKLSAgICAgICAgICAgIG1fYm90dG9tTGVmdCA9IEludFNpemUoKTsKKyAgICAgICAgICAgIG1f
Ym90dG9tTGVmdCA9IExheW91dFNpemUoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV90
b3BSaWdodCA9IEludFNpemUoKTsKLSAgICAgICAgbV90b3BMZWZ0ID0gSW50U2l6ZSgpOworICAg
ICAgICAgICAgbV90b3BSaWdodCA9IExheW91dFNpemUoKTsKKyAgICAgICAgbV90b3BMZWZ0ID0g
TGF5b3V0U2l6ZSgpOwogICAgIH0KICAgICAgICAgCiAgICAgaWYgKGV4Y2x1ZGVMb2dpY2FsUmln
aHRFZGdlKSB7CiAgICAgICAgIGlmIChpc0hvcml6b250YWwpCi0gICAgICAgICAgICBtX3RvcFJp
Z2h0ID0gSW50U2l6ZSgpOworICAgICAgICAgICAgbV90b3BSaWdodCA9IExheW91dFNpemUoKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9ib3R0b21MZWZ0ID0gSW50U2l6ZSgpOwotICAg
ICAgICBtX2JvdHRvbVJpZ2h0ID0gSW50U2l6ZSgpOworICAgICAgICAgICAgbV9ib3R0b21MZWZ0
ID0gTGF5b3V0U2l6ZSgpOworICAgICAgICBtX2JvdHRvbVJpZ2h0ID0gTGF5b3V0U2l6ZSgpOwog
ICAgIH0KIH0KIAotUm91bmRlZEludFJlY3Q6OlJvdW5kZWRJbnRSZWN0KGludCB4LCBpbnQgeSwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorUm91bmRlZFJlY3Q6OlJvdW5kZWRSZWN0KExheW91dFVu
aXQgeCwgTGF5b3V0VW5pdCB5LCBMYXlvdXRVbml0IHdpZHRoLCBMYXlvdXRVbml0IGhlaWdodCkK
ICAgICA6IG1fcmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KQogewogfQogCi1Sb3VuZGVkSW50UmVj
dDo6Um91bmRlZEludFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUmFkaWkmIHJhZGlp
KQorUm91bmRlZFJlY3Q6OlJvdW5kZWRSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0
IFJhZGlpJiByYWRpaSkKICAgICA6IG1fcmVjdChyZWN0KQogICAgICwgbV9yYWRpaShyYWRpaSkK
IHsKIH0KIAotUm91bmRlZEludFJlY3Q6OlJvdW5kZWRJbnRSZWN0KGNvbnN0IEludFJlY3QmIHJl
Y3QsIGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25z
dCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCkKK1JvdW5k
ZWRSZWN0OjpSb3VuZGVkUmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBMYXlvdXRT
aXplJiB0b3BMZWZ0LCBjb25zdCBMYXlvdXRTaXplJiB0b3BSaWdodCwgY29uc3QgTGF5b3V0U2l6
ZSYgYm90dG9tTGVmdCwgY29uc3QgTGF5b3V0U2l6ZSYgYm90dG9tUmlnaHQpCiAgICAgOiBtX3Jl
Y3QocmVjdCkKICAgICAsIG1fcmFkaWkodG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJv
dHRvbVJpZ2h0KQogewogfQogCi12b2lkIFJvdW5kZWRJbnRSZWN0OjppbmNsdWRlTG9naWNhbEVk
Z2VzKGNvbnN0IFJhZGlpJiBlZGdlcywgYm9vbCBpc0hvcml6b250YWwsIGJvb2wgaW5jbHVkZUxv
Z2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKK3ZvaWQgUm91bmRl
ZFJlY3Q6OmluY2x1ZGVMb2dpY2FsRWRnZXMoY29uc3QgUmFkaWkmIGVkZ2VzLCBib29sIGlzSG9y
aXpvbnRhbCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlKQogewogICAgIG1fcmFkaWkuaW5jbHVkZUxvZ2ljYWxFZGdlcyhlZGdlcywgaXNI
b3Jpem9udGFsLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSk7CiB9CiAKLXZvaWQgUm91bmRlZEludFJlY3Q6OmV4Y2x1ZGVMb2dpY2FsRWRnZXMoYm9vbCBp
c0hvcml6b250YWwsIGJvb2wgZXhjbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBleGNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSkKK3ZvaWQgUm91bmRlZFJlY3Q6OmV4Y2x1ZGVMb2dpY2FsRWRnZXMoYm9v
bCBpc0hvcml6b250YWwsIGJvb2wgZXhjbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBleGNsdWRl
TG9naWNhbFJpZ2h0RWRnZSkKIHsKICAgICBtX3JhZGlpLmV4Y2x1ZGVMb2dpY2FsRWRnZXMoaXNI
b3Jpem9udGFsLCBleGNsdWRlTG9naWNhbExlZnRFZGdlLCBleGNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSk7CiB9CiAKLWJvb2wgUm91bmRlZEludFJlY3Q6OmlzUmVuZGVyYWJsZSgpIGNvbnN0Citib29s
IFJvdW5kZWRSZWN0Ojppc1JlbmRlcmFibGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3JhZGlp
LnRvcExlZnQoKS53aWR0aCgpICsgbV9yYWRpaS50b3BSaWdodCgpLndpZHRoKCkgPD0gbV9yZWN0
LndpZHRoKCkKICAgICAgICAgJiYgbV9yYWRpaS5ib3R0b21MZWZ0KCkud2lkdGgoKSArIG1fcmFk
aWkuYm90dG9tUmlnaHQoKS53aWR0aCgpIDw9IG1fcmVjdC53aWR0aCgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmgJKHJldmlzaW9uIDkw
NzkzKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkSW50UmVj
dC5oOjkwNzkzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNiwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFJvdW5kZWRJbnRSZWN0X2gKKyNkZWZpbmUgUm91bmRlZEludFJlY3RfaAorCisjaW5j
bHVkZSAiSW50UmVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKworY2xhc3MgUm91bmRl
ZEludFJlY3QgeworcHVibGljOgorICAgIGNsYXNzIFJhZGlpIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIFJhZGlpKCkge30KKyAgICAgICAgUmFkaWkoY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29u
c3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IElu
dFNpemUmIGJvdHRvbVJpZ2h0KQorICAgICAgICAgICAgOiBtX3RvcExlZnQodG9wTGVmdCkKKyAg
ICAgICAgICAgICwgbV90b3BSaWdodCh0b3BSaWdodCkKKyAgICAgICAgICAgICwgbV9ib3R0b21M
ZWZ0KGJvdHRvbUxlZnQpCisgICAgICAgICAgICAsIG1fYm90dG9tUmlnaHQoYm90dG9tUmlnaHQp
CisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgc2V0VG9wTGVmdChjb25zdCBJ
bnRTaXplJiBzaXplKSB7IG1fdG9wTGVmdCA9IHNpemU7IH0KKyAgICAgICAgdm9pZCBzZXRUb3BS
aWdodChjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fdG9wUmlnaHQgPSBzaXplOyB9CisgICAgICAg
IHZvaWQgc2V0Qm90dG9tTGVmdChjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fYm90dG9tTGVmdCA9
IHNpemU7IH0KKyAgICAgICAgdm9pZCBzZXRCb3R0b21SaWdodChjb25zdCBJbnRTaXplJiBzaXpl
KSB7IG1fYm90dG9tUmlnaHQgPSBzaXplOyB9CisgICAgICAgIGNvbnN0IEludFNpemUmIHRvcExl
ZnQoKSBjb25zdCB7IHJldHVybiBtX3RvcExlZnQ7IH0KKyAgICAgICAgY29uc3QgSW50U2l6ZSYg
dG9wUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3RvcFJpZ2h0OyB9CisgICAgICAgIGNvbnN0IElu
dFNpemUmIGJvdHRvbUxlZnQoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbUxlZnQ7IH0KKyAgICAg
ICAgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbVJp
Z2h0OyB9CisKKyAgICAgICAgYm9vbCBpc1plcm8oKSBjb25zdDsKKworICAgICAgICB2b2lkIGlu
Y2x1ZGVMb2dpY2FsRWRnZXMoY29uc3QgUmFkaWkmIGVkZ2VzLCBib29sIGlzSG9yaXpvbnRhbCwg
Ym9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdl
KTsKKyAgICAgICAgdm9pZCBleGNsdWRlTG9naWNhbEVkZ2VzKGJvb2wgaXNIb3Jpem9udGFsLCBi
b29sIGV4Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgZXhjbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
OworCisgICAgICAgIHZvaWQgc2NhbGUoZmxvYXQgZmFjdG9yKTsKKyAgICAgICAgdm9pZCBleHBh
bmQoaW50IHRvcFdpZHRoLCBpbnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgsIGludCByaWdo
dFdpZHRoKTsKKyAgICAgICAgdm9pZCBleHBhbmQoaW50IHNpemUpIHsgZXhwYW5kKHNpemUsIHNp
emUsIHNpemUsIHNpemUpOyB9CisgICAgICAgIHZvaWQgc2hyaW5rKGludCB0b3BXaWR0aCwgaW50
IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQgcmlnaHRXaWR0aCkgeyBleHBhbmQoLXRv
cFdpZHRoLCAtYm90dG9tV2lkdGgsIC1sZWZ0V2lkdGgsIC1yaWdodFdpZHRoKTsgfQorICAgICAg
ICB2b2lkIHNocmluayhpbnQgc2l6ZSkgeyBzaHJpbmsoc2l6ZSwgc2l6ZSwgc2l6ZSwgc2l6ZSk7
IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEludFNpemUgbV90b3BMZWZ0OworICAgICAgICBJ
bnRTaXplIG1fdG9wUmlnaHQ7CisgICAgICAgIEludFNpemUgbV9ib3R0b21MZWZ0OworICAgICAg
ICBJbnRTaXplIG1fYm90dG9tUmlnaHQ7CisgICAgfTsKKworICAgIGV4cGxpY2l0IFJvdW5kZWRJ
bnRSZWN0KGNvbnN0IEludFJlY3QmLCBjb25zdCBSYWRpaSYgPSBSYWRpaSgpKTsKKyAgICBSb3Vu
ZGVkSW50UmVjdChpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgUm91
bmRlZEludFJlY3QoY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0
IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRT
aXplJiBib3R0b21SaWdodCk7CisKKyAgICBjb25zdCBJbnRSZWN0JiByZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWN0OyB9CisgICAgY29uc3QgUmFkaWkmIHJhZGlpKCkgY29uc3QgeyByZXR1cm4g
bV9yYWRpaTsgfQorICAgIGJvb2wgaXNSb3VuZGVkKCkgY29uc3QgeyByZXR1cm4gIW1fcmFkaWku
aXNaZXJvKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3JlY3QuaXNF
bXB0eSgpOyB9CisKKyAgICB2b2lkIHNldFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkgeyBtX3Jl
Y3QgPSByZWN0OyB9CisgICAgdm9pZCBzZXRSYWRpaShjb25zdCBSYWRpaSYgcmFkaWkpIHsgbV9y
YWRpaSA9IHJhZGlpOyB9CisKKyAgICB2b2lkIG1vdmUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBt
X3JlY3QubW92ZShzaXplKTsgfQorICAgIHZvaWQgaW5mbGF0ZShpbnQgc2l6ZSkgeyBtX3JlY3Qu
aW5mbGF0ZShzaXplKTsgIH0KKyAgICB2b2lkIGluZmxhdGVXaXRoUmFkaWkoaW50IHNpemUpOwor
ICAgIHZvaWQgZXhwYW5kUmFkaWkoaW50IHNpemUpIHsgbV9yYWRpaS5leHBhbmQoc2l6ZSk7IH0K
KyAgICB2b2lkIHNocmlua1JhZGlpKGludCBzaXplKSB7IG1fcmFkaWkuc2hyaW5rKHNpemUpOyB9
CisKKyAgICB2b2lkIGluY2x1ZGVMb2dpY2FsRWRnZXMoY29uc3QgUmFkaWkmIGVkZ2VzLCBib29s
IGlzSG9yaXpvbnRhbCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVM
b2dpY2FsUmlnaHRFZGdlKTsKKyAgICB2b2lkIGV4Y2x1ZGVMb2dpY2FsRWRnZXMoYm9vbCBpc0hv
cml6b250YWwsIGJvb2wgZXhjbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBleGNsdWRlTG9naWNh
bFJpZ2h0RWRnZSk7CisKKyAgICBib29sIGlzUmVuZGVyYWJsZSgpIGNvbnN0OworCitwcml2YXRl
OgorICAgIEludFJlY3QgbV9yZWN0OworICAgIFJhZGlpIG1fcmFkaWk7Cit9OworCitpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFJvdW5kZWRJbnRSZWN0OjpSYWRpaSYgYSwgY29uc3QgUm91
bmRlZEludFJlY3Q6OlJhZGlpJiBiKQoreworICAgIHJldHVybiBhLnRvcExlZnQoKSA9PSBiLnRv
cExlZnQoKSAmJiBhLnRvcFJpZ2h0KCkgPT0gYi50b3BSaWdodCgpICYmIGEuYm90dG9tTGVmdCgp
ID09IGIuYm90dG9tTGVmdCgpICYmIGEuYm90dG9tUmlnaHQoKSA9PSBiLmJvdHRvbVJpZ2h0KCk7
Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUm91bmRlZEludFJlY3QmIGEsIGNv
bnN0IFJvdW5kZWRJbnRSZWN0JiBiKQoreworICAgIHJldHVybiBhLnJlY3QoKSA9PSBiLnJlY3Qo
KSAmJiBhLnJhZGlpKCkgPT0gYi5yYWRpaSgpOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFJvdW5kZWRJbnRSZWN0X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaAkocmV2aXNpb24gOTA3OTMpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCwyMCArMjQsMjAgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBSb3Vu
ZGVkSW50UmVjdF9oCi0jZGVmaW5lIFJvdW5kZWRJbnRSZWN0X2gKKyNpZm5kZWYgUm91bmRlZFJl
Y3RfaAorI2RlZmluZSBSb3VuZGVkUmVjdF9oCiAKLSNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5j
bHVkZSAiTGF5b3V0VHlwZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAKLWNsYXNzIFJv
dW5kZWRJbnRSZWN0IHsKK2NsYXNzIFJvdW5kZWRSZWN0IHsKIHB1YmxpYzoKICAgICBjbGFzcyBS
YWRpaSB7CiAgICAgcHVibGljOgogICAgICAgICBSYWRpaSgpIHt9Ci0gICAgICAgIFJhZGlpKGNv
bnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRT
aXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCkKKyAgICAgICAgUmFk
aWkoY29uc3QgTGF5b3V0U2l6ZSYgdG9wTGVmdCwgY29uc3QgTGF5b3V0U2l6ZSYgdG9wUmlnaHQs
IGNvbnN0IExheW91dFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IExheW91dFNpemUmIGJvdHRvbVJp
Z2h0KQogICAgICAgICAgICAgOiBtX3RvcExlZnQodG9wTGVmdCkKICAgICAgICAgICAgICwgbV90
b3BSaWdodCh0b3BSaWdodCkKICAgICAgICAgICAgICwgbV9ib3R0b21MZWZ0KGJvdHRvbUxlZnQp
CkBAIC00NSwxNCArNDUsMTQgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgIH0KIAotICAg
ICAgICB2b2lkIHNldFRvcExlZnQoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX3RvcExlZnQgPSBz
aXplOyB9Ci0gICAgICAgIHZvaWQgc2V0VG9wUmlnaHQoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBt
X3RvcFJpZ2h0ID0gc2l6ZTsgfQotICAgICAgICB2b2lkIHNldEJvdHRvbUxlZnQoY29uc3QgSW50
U2l6ZSYgc2l6ZSkgeyBtX2JvdHRvbUxlZnQgPSBzaXplOyB9Ci0gICAgICAgIHZvaWQgc2V0Qm90
dG9tUmlnaHQoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX2JvdHRvbVJpZ2h0ID0gc2l6ZTsgfQot
ICAgICAgICBjb25zdCBJbnRTaXplJiB0b3BMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV90b3BMZWZ0
OyB9Ci0gICAgICAgIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV90
b3BSaWdodDsgfQotICAgICAgICBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0KCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3R0b21MZWZ0OyB9Ci0gICAgICAgIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0
KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21SaWdodDsgfQorICAgICAgICB2b2lkIHNldFRvcExl
ZnQoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgeyBtX3RvcExlZnQgPSBzaXplOyB9CisgICAgICAg
IHZvaWQgc2V0VG9wUmlnaHQoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgeyBtX3RvcFJpZ2h0ID0g
c2l6ZTsgfQorICAgICAgICB2b2lkIHNldEJvdHRvbUxlZnQoY29uc3QgTGF5b3V0U2l6ZSYgc2l6
ZSkgeyBtX2JvdHRvbUxlZnQgPSBzaXplOyB9CisgICAgICAgIHZvaWQgc2V0Qm90dG9tUmlnaHQo
Y29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgeyBtX2JvdHRvbVJpZ2h0ID0gc2l6ZTsgfQorICAgICAg
ICBjb25zdCBMYXlvdXRTaXplJiB0b3BMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV90b3BMZWZ0OyB9
CisgICAgICAgIGNvbnN0IExheW91dFNpemUmIHRvcFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV90
b3BSaWdodDsgfQorICAgICAgICBjb25zdCBMYXlvdXRTaXplJiBib3R0b21MZWZ0KCkgY29uc3Qg
eyByZXR1cm4gbV9ib3R0b21MZWZ0OyB9CisgICAgICAgIGNvbnN0IExheW91dFNpemUmIGJvdHRv
bVJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21SaWdodDsgfQogCiAgICAgICAgIGJvb2wg
aXNaZXJvKCkgY29uc3Q7CiAKQEAgLTYwLDM1ICs2MCwzNSBAQCBwdWJsaWM6CiAgICAgICAgIHZv
aWQgZXhjbHVkZUxvZ2ljYWxFZGdlcyhib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBleGNsdWRlTG9n
aWNhbExlZnRFZGdlLCBib29sIGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIAogICAgICAgICB2
b2lkIHNjYWxlKGZsb2F0IGZhY3Rvcik7Ci0gICAgICAgIHZvaWQgZXhwYW5kKGludCB0b3BXaWR0
aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQgcmlnaHRXaWR0aCk7Ci0gICAg
ICAgIHZvaWQgZXhwYW5kKGludCBzaXplKSB7IGV4cGFuZChzaXplLCBzaXplLCBzaXplLCBzaXpl
KTsgfQotICAgICAgICB2b2lkIHNocmluayhpbnQgdG9wV2lkdGgsIGludCBib3R0b21XaWR0aCwg
aW50IGxlZnRXaWR0aCwgaW50IHJpZ2h0V2lkdGgpIHsgZXhwYW5kKC10b3BXaWR0aCwgLWJvdHRv
bVdpZHRoLCAtbGVmdFdpZHRoLCAtcmlnaHRXaWR0aCk7IH0KLSAgICAgICAgdm9pZCBzaHJpbmso
aW50IHNpemUpIHsgc2hyaW5rKHNpemUsIHNpemUsIHNpemUsIHNpemUpOyB9CisgICAgICAgIHZv
aWQgZXhwYW5kKExheW91dFVuaXQgdG9wV2lkdGgsIExheW91dFVuaXQgYm90dG9tV2lkdGgsIExh
eW91dFVuaXQgbGVmdFdpZHRoLCBMYXlvdXRVbml0IHJpZ2h0V2lkdGgpOworICAgICAgICB2b2lk
IGV4cGFuZChMYXlvdXRVbml0IHNpemUpIHsgZXhwYW5kKHNpemUsIHNpemUsIHNpemUsIHNpemUp
OyB9CisgICAgICAgIHZvaWQgc2hyaW5rKExheW91dFVuaXQgdG9wV2lkdGgsIExheW91dFVuaXQg
Ym90dG9tV2lkdGgsIExheW91dFVuaXQgbGVmdFdpZHRoLCBMYXlvdXRVbml0IHJpZ2h0V2lkdGgp
IHsgZXhwYW5kKC10b3BXaWR0aCwgLWJvdHRvbVdpZHRoLCAtbGVmdFdpZHRoLCAtcmlnaHRXaWR0
aCk7IH0KKyAgICAgICAgdm9pZCBzaHJpbmsoTGF5b3V0VW5pdCBzaXplKSB7IHNocmluayhzaXpl
LCBzaXplLCBzaXplLCBzaXplKTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSW50U2l6ZSBt
X3RvcExlZnQ7Ci0gICAgICAgIEludFNpemUgbV90b3BSaWdodDsKLSAgICAgICAgSW50U2l6ZSBt
X2JvdHRvbUxlZnQ7Ci0gICAgICAgIEludFNpemUgbV9ib3R0b21SaWdodDsKKyAgICAgICAgTGF5
b3V0U2l6ZSBtX3RvcExlZnQ7CisgICAgICAgIExheW91dFNpemUgbV90b3BSaWdodDsKKyAgICAg
ICAgTGF5b3V0U2l6ZSBtX2JvdHRvbUxlZnQ7CisgICAgICAgIExheW91dFNpemUgbV9ib3R0b21S
aWdodDsKICAgICB9OwogCi0gICAgZXhwbGljaXQgUm91bmRlZEludFJlY3QoY29uc3QgSW50UmVj
dCYsIGNvbnN0IFJhZGlpJiA9IFJhZGlpKCkpOwotICAgIFJvdW5kZWRJbnRSZWN0KGludCB4LCBp
bnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSAgICBSb3VuZGVkSW50UmVjdChjb25zdCBJ
bnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQs
IGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KTsK
KyAgICBleHBsaWNpdCBSb3VuZGVkUmVjdChjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmFkaWkm
ID0gUmFkaWkoKSk7CisgICAgUm91bmRlZFJlY3QoTGF5b3V0VW5pdCB4LCBMYXlvdXRVbml0IHks
IExheW91dFVuaXQgd2lkdGgsIExheW91dFVuaXQgaGVpZ2h0KTsKKyAgICBSb3VuZGVkUmVjdChj
b25zdCBMYXlvdXRSZWN0JiwgY29uc3QgTGF5b3V0U2l6ZSYgdG9wTGVmdCwgY29uc3QgTGF5b3V0
U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IExheW91dFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IExheW91
dFNpemUmIGJvdHRvbVJpZ2h0KTsKIAotICAgIGNvbnN0IEludFJlY3QmIHJlY3QoKSBjb25zdCB7
IHJldHVybiBtX3JlY3Q7IH0KKyAgICBjb25zdCBMYXlvdXRSZWN0JiByZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWN0OyB9CiAgICAgY29uc3QgUmFkaWkmIHJhZGlpKCkgY29uc3QgeyByZXR1cm4g
bV9yYWRpaTsgfQogICAgIGJvb2wgaXNSb3VuZGVkKCkgY29uc3QgeyByZXR1cm4gIW1fcmFkaWku
aXNaZXJvKCk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3JlY3QuaXNF
bXB0eSgpOyB9CiAKLSAgICB2b2lkIHNldFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkgeyBtX3Jl
Y3QgPSByZWN0OyB9CisgICAgdm9pZCBzZXRSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QpIHsg
bV9yZWN0ID0gcmVjdDsgfQogICAgIHZvaWQgc2V0UmFkaWkoY29uc3QgUmFkaWkmIHJhZGlpKSB7
IG1fcmFkaWkgPSByYWRpaTsgfQogCi0gICAgdm9pZCBtb3ZlKGNvbnN0IEludFNpemUmIHNpemUp
IHsgbV9yZWN0Lm1vdmUoc2l6ZSk7IH0KLSAgICB2b2lkIGluZmxhdGUoaW50IHNpemUpIHsgbV9y
ZWN0LmluZmxhdGUoc2l6ZSk7ICB9Ci0gICAgdm9pZCBpbmZsYXRlV2l0aFJhZGlpKGludCBzaXpl
KTsKLSAgICB2b2lkIGV4cGFuZFJhZGlpKGludCBzaXplKSB7IG1fcmFkaWkuZXhwYW5kKHNpemUp
OyB9Ci0gICAgdm9pZCBzaHJpbmtSYWRpaShpbnQgc2l6ZSkgeyBtX3JhZGlpLnNocmluayhzaXpl
KTsgfQorICAgIHZvaWQgbW92ZShjb25zdCBMYXlvdXRTaXplJiBzaXplKSB7IG1fcmVjdC5tb3Zl
KHNpemUpOyB9CisgICAgdm9pZCBpbmZsYXRlKExheW91dFVuaXQgc2l6ZSkgeyBtX3JlY3QuaW5m
bGF0ZShzaXplKTsgIH0KKyAgICB2b2lkIGluZmxhdGVXaXRoUmFkaWkoTGF5b3V0VW5pdCBzaXpl
KTsKKyAgICB2b2lkIGV4cGFuZFJhZGlpKExheW91dFVuaXQgc2l6ZSkgeyBtX3JhZGlpLmV4cGFu
ZChzaXplKTsgfQorICAgIHZvaWQgc2hyaW5rUmFkaWkoTGF5b3V0VW5pdCBzaXplKSB7IG1fcmFk
aWkuc2hyaW5rKHNpemUpOyB9CiAKICAgICB2b2lkIGluY2x1ZGVMb2dpY2FsRWRnZXMoY29uc3Qg
UmFkaWkmIGVkZ2VzLCBib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRF
ZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICB2b2lkIGV4Y2x1ZGVMb2dp
Y2FsRWRnZXMoYm9vbCBpc0hvcml6b250YWwsIGJvb2wgZXhjbHVkZUxvZ2ljYWxMZWZ0RWRnZSwg
Ym9vbCBleGNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CkBAIC05NiwxNiArOTYsMTYgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNSZW5kZXJhYmxlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgSW50UmVj
dCBtX3JlY3Q7CisgICAgTGF5b3V0UmVjdCBtX3JlY3Q7CiAgICAgUmFkaWkgbV9yYWRpaTsKIH07
CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiBh
LCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmIGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgYSwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiBi
KQogewogICAgIHJldHVybiBhLnRvcExlZnQoKSA9PSBiLnRvcExlZnQoKSAmJiBhLnRvcFJpZ2h0
KCkgPT0gYi50b3BSaWdodCgpICYmIGEuYm90dG9tTGVmdCgpID09IGIuYm90dG9tTGVmdCgpICYm
IGEuYm90dG9tUmlnaHQoKSA9PSBiLmJvdHRvbVJpZ2h0KCk7CiB9CiAKLWlubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUm91bmRlZEludFJlY3QmIGEsIGNvbnN0IFJvdW5kZWRJbnRSZWN0JiBi
KQoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSb3VuZGVkUmVjdCYgYSwgY29uc3QgUm91
bmRlZFJlY3QmIGIpCiB7CiAgICAgcmV0dXJuIGEucmVjdCgpID09IGIucmVjdCgpICYmIGEucmFk
aWkoKSA9PSBiLnJhZGlpKCk7CiB9CkBAIC0xMTMsNCArMTEzLDQgQEAgaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBSb3VuZGVkSW50UgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNl
bmRpZiAvLyBSb3VuZGVkSW50UmVjdF9oCisjZW5kaWYgLy8gUm91bmRlZFJlY3RfaApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAJKHJl
dmlzaW9uIDkwNzkzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKICAgICB9CiAKLSAgICB2b2lkIHNldExhc3RT
aGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0
IFJvdW5kZWRJbnRSZWN0OjpSYWRpaSYgcmFkaWkpCisgICAgdm9pZCBzZXRMYXN0U2hhZG93VmFs
dWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBSb3VuZGVk
UmVjdDo6UmFkaWkmIHJhZGlpKQogICAgIHsKICAgICAgICAgbV9sYXN0V2FzSW5zZXQgPSBmYWxz
ZTsKICAgICAgICAgbV9sYXN0UmFkaXVzID0gcmFkaXVzOwpAQCAtOTMsNyArOTMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fbGFzdFJhZGlpID0gcmFkaWk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRM
YXN0SW5zZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9y
JiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywg
Y29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkm
IHJhZGlpKQorICAgIHZvaWQgc2V0TGFzdEluc2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6
ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29u
c3QgRmxvYXRSZWN0JiBib3VuZHMsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3Qg
Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkKICAgICB7CiAgICAgICAgIG1fbGFzdFdhc0luc2V0
ID0gdHJ1ZTsKICAgICAgICAgbV9sYXN0SW5zZXRCb3VuZHMgPSBib3VuZHM7CkBAIC0xMDQsMTQg
KzEwNCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fbGFzdFJhZGlpID0gcmFkaWk7CiAgICAgfQog
ICAgIAotICAgIGJvb2wgbWF0Y2hlc0xhc3RTaGFkb3coY29uc3QgRmxvYXRTaXplJiByYWRpdXMs
IGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJl
Y3QmIHNoYWRvd1JlY3QsIGNvbnN0IFJvdW5kZWRJbnRSZWN0OjpSYWRpaSYgcmFkaWkpIGNvbnN0
CisgICAgYm9vbCBtYXRjaGVzTGFzdFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29u
c3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYg
c2hhZG93UmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkgY29uc3QKICAgICB7
CiAgICAgICAgIGlmIChtX2xhc3RXYXNJbnNldCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgcmV0dXJuIG1fbGFzdFJhZGl1cyA9PSByYWRpdXMgJiYgbV9sYXN0Q29sb3IgPT0g
Y29sb3IgJiYgbV9sYXN0Q29sb3JTcGFjZSA9PSBjb2xvclNwYWNlICYmIHNoYWRvd1JlY3QgPT0g
bV9sYXN0U2hhZG93UmVjdCAmJiByYWRpaSA9PSBtX2xhc3RSYWRpaTsKICAgICB9CiAKLSAgICBi
b29sIG1hdGNoZXNMYXN0SW5zZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0
IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGJv
dW5kcywgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBSb3VuZGVkSW50UmVjdDo6
UmFkaWkmIHJhZGlpKSBjb25zdAorICAgIGJvb2wgbWF0Y2hlc0xhc3RJbnNldFNoYWRvdyhjb25z
dCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1Jl
Y3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpIGNvbnN0CiAgICAgewogICAgICAg
ICBpZiAoIW1fbGFzdFdhc0luc2V0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ5
LDcgKzE0OSw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgRmxvYXRSZWN0IG1fbGFzdEluc2V0Qm91
bmRzOwogICAgIEZsb2F0UmVjdCBtX2xhc3RTaGFkb3dSZWN0OwotICAgIFJvdW5kZWRJbnRSZWN0
OjpSYWRpaSBtX2xhc3RSYWRpaTsKKyAgICBSb3VuZGVkUmVjdDo6UmFkaWkgbV9sYXN0UmFkaWk7
CiAgICAgQ29sb3IgbV9sYXN0Q29sb3I7CiAgICAgQ29sb3JTcGFjZSBtX2xhc3RDb2xvclNwYWNl
OwogICAgIEZsb2F0U2l6ZSBtX2xhc3RSYWRpdXM7CkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBT
aGFkb3dCbHVyOjpkcmF3U2hhZG93QnVmZmVyKEdyYXBoaQogICAgIGdyYXBoaWNzQ29udGV4dC0+
ZmlsbFJlY3QoRmxvYXRSZWN0KG1fbGF5ZXJPcmlnaW4sIG1fc291cmNlUmVjdC5zaXplKCkpKTsK
IH0KIAotc3RhdGljIHZvaWQgY29tcHV0ZVNsaWNlU2l6ZXNGcm9tUmFkaWkoY29uc3QgSW50U2l6
ZSYgdHdpY2VSYWRpdXMsIGNvbnN0IFJvdW5kZWRJbnRSZWN0OjpSYWRpaSYgcmFkaWksIGludCYg
bGVmdFNsaWNlLCBpbnQmIHJpZ2h0U2xpY2UsIGludCYgdG9wU2xpY2UsIGludCYgYm90dG9tU2xp
Y2UpCitzdGF0aWMgdm9pZCBjb21wdXRlU2xpY2VTaXplc0Zyb21SYWRpaShjb25zdCBJbnRTaXpl
JiB0d2ljZVJhZGl1cywgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgaW50JiBsZWZ0
U2xpY2UsIGludCYgcmlnaHRTbGljZSwgaW50JiB0b3BTbGljZSwgaW50JiBib3R0b21TbGljZSkK
IHsKICAgICBsZWZ0U2xpY2UgPSB0d2ljZVJhZGl1cy53aWR0aCgpICsgbWF4KHJhZGlpLnRvcExl
ZnQoKS53aWR0aCgpLCByYWRpaS5ib3R0b21MZWZ0KCkud2lkdGgoKSk7IAogICAgIHJpZ2h0U2xp
Y2UgPSB0d2ljZVJhZGl1cy53aWR0aCgpICsgbWF4KHJhZGlpLnRvcFJpZ2h0KCkud2lkdGgoKSwg
cmFkaWkuYm90dG9tUmlnaHQoKS53aWR0aCgpKTsgCkBAIC00ODUsNyArNDg1LDcgQEAgc3RhdGlj
IHZvaWQgY29tcHV0ZVNsaWNlU2l6ZXNGcm9tUmFkaWkoYwogICAgIGJvdHRvbVNsaWNlID0gdHdp
Y2VSYWRpdXMuaGVpZ2h0KCkgKyBtYXgocmFkaWkuYm90dG9tTGVmdCgpLmhlaWdodCgpLCByYWRp
aS5ib3R0b21SaWdodCgpLmhlaWdodCgpKTsKIH0KIAotSW50U2l6ZSBTaGFkb3dCbHVyOjp0ZW1w
bGF0ZVNpemUoY29uc3QgSW50U2l6ZSYgcmFkaXVzUGFkZGluZywgY29uc3QgUm91bmRlZEludFJl
Y3Q6OlJhZGlpJiByYWRpaSkgY29uc3QKK0ludFNpemUgU2hhZG93Qmx1cjo6dGVtcGxhdGVTaXpl
KGNvbnN0IEludFNpemUmIHJhZGl1c1BhZGRpbmcsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYg
cmFkaWkpIGNvbnN0CiB7CiAgICAgY29uc3QgaW50IHRlbXBsYXRlU2lkZUxlbmd0aCA9IDE7CiAK
QEAgLTUwMyw3ICs1MDMsNyBAQCBJbnRTaXplIFNoYWRvd0JsdXI6OnRlbXBsYXRlU2l6ZShjb25z
dCBJCiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVTaWRlTGVuZ3RoICsgdG9wU2xpY2UgKyBi
b3R0b21TbGljZSk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3coR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93ZWRSZWN0
LCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmIHJhZGlpKQordm9pZCBTaGFkb3dCbHVyOjpk
cmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpCiB7
CiAgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChncmFw
aGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdCwgZ3JhcGhpY3NDb250ZXh0LT5jbGlwQm91bmRzKCkp
OwogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQpAQCAtNTMwLDcgKzUzMCw3IEBAIHZvaWQg
U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3MKICAgICBkcmF3UmVjdFNoYWRvd1dp
dGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIHJhZGlpLCB0ZW1wbGF0ZVNp
emUsIGVkZ2VTaXplKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiBob2xl
UmFkaWkpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIGhvbGVSYWRpaSkKIHsKICAgICBJ
bnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGdyYXBoaWNzQ29u
dGV4dCwgcmVjdCwgZ3JhcGhpY3NDb250ZXh0LT5jbGlwQm91bmRzKCkpOwogICAgIGlmIChsYXll
clJlY3QuaXNFbXB0eSgpKQpAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93KEdyYXBoaWMKICAgICBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKGdyYXBo
aWNzQ29udGV4dCwgcmVjdCwgaG9sZVJlY3QsIGhvbGVSYWRpaSwgdGVtcGxhdGVTaXplLCBlZGdl
U2l6ZSk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5n
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRv
d2VkUmVjdCwgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgSW50UmVj
dCYgbGF5ZXJSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxp
bmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hh
ZG93ZWRSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJbnRSZWN0
JiBsYXllclJlY3QpCiB7CiAgICAgbV9sYXllckltYWdlID0gU2NyYXRjaEJ1ZmZlcjo6c2hhcmVk
KCkuZ2V0U2NyYXRjaEJ1ZmZlcihsYXllclJlY3Quc2l6ZSgpKTsKICAgICBpZiAoIW1fbGF5ZXJJ
bWFnZSkKQEAgLTU5MSw3ICs1OTEsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93
V2l0aG91dFRpCiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2NoZWR1bGVTY3JhdGNoQnVm
ZmVyUHVyZ2UoKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0
VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IFJvdW5kZWRJbnRSZWN0OjpS
YWRpaSYgaG9sZVJhZGlpLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lkIFNoYWRvd0Js
dXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVj
dCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiBob2xlUmFkaWksIGNvbnN0IEludFJlY3QmIGxh
eWVyUmVjdCkKIHsKICAgICBtX2xheWVySW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5n
ZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5zaXplKCkpOwogICAgIGlmICghbV9sYXllckltYWdl
KQpAQCAtNjY0LDcgKzY2NCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0
aG91dFQKICAgICAgdGhlIHNoYWRvdy4KICAqLwogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgUm91bmRl
ZEludFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBjb25z
dCBJbnRTaXplJiBlZGdlU2l6ZSkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0
aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFk
aWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGVk
Z2VTaXplKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqZ3Jh
cGhpY3NDb250ZXh0KTsKICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93KCk7CkBAIC03
MjYsNyArNzI2LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaQog
ICAgIFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7
CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd2VkUmVjdCwg
Y29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgSW50U2l6ZSYgdGVtcGxh
dGVTaXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd1Jl
Y3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRp
aSwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSkK
IHsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmdyYXBoaWNzQ29u
dGV4dCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclNoYWRvdygpOwpAQCAtNzY5LDcgKzc2
OSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW4KICAgICBTY3Jh
dGNoQnVmZmVyOjpzaGFyZWQoKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCi12
b2lkIFNoYWRvd0JsdXI6OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IFJvdW5kZWRJbnRS
ZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFNpemUmIGJ1ZmZlclBhZGRpbmcsIGNvbnN0IElu
dFNpemUmIHRlbXBsYXRlU2l6ZSwgU2hhZG93RGlyZWN0aW9uIGRpcmVjdGlvbikKK3ZvaWQgU2hh
ZG93Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd0JvdW5kcywgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlp
JiByYWRpaSwgY29uc3QgSW50U2l6ZSYgYnVmZmVyUGFkZGluZywgY29uc3QgSW50U2l6ZSYgdGVt
cGxhdGVTaXplLCBTaGFkb3dEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIGNvbnN0IEludFNp
emUgdHdpY2VSYWRpdXMgPSBJbnRTaXplKGJ1ZmZlclBhZGRpbmcud2lkdGgoKSAqIDIsIGJ1ZmZl
clBhZGRpbmcuaGVpZ2h0KCkgKiAyKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAkocmV2aXNpb24gOTA3OTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDcgKzMyLDcgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJSb3VuZGVkSW50UmVjdC5oIgorI2lu
Y2x1ZGUgIlJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYxLDggKzYxLDggQEAgcHVibGljOgogICAgIEdyYXBoaWNz
Q29udGV4dCogYmVnaW5TaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmIGxheWVyQXJlYSk7CiAgICAgdm9pZCBlbmRTaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQq
KTsKIAotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJik7Ci0gICAgdm9pZCBkcmF3SW5z
ZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiBob2xlUmVjdCwgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiBob2xlUmFkaWkpOwor
ICAgIHZvaWQgZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJik7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3co
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBob2xl
UmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiBob2xlUmFkaWkpOwogCiAgICAgdm9pZCBi
bHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYsIGludCBzdHJpZGUp
OwogCkBAIC04MiwxNSArODIsMTUgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIAogICAgIEludFJl
Y3QgY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKLSAgICBJbnRTaXpl
IHRlbXBsYXRlU2l6ZShjb25zdCBJbnRTaXplJiBibHVycmVkRWRnZVNpemUsIGNvbnN0IFJvdW5k
ZWRJbnRSZWN0OjpSYWRpaSYpIGNvbnN0OworICAgIEludFNpemUgdGVtcGxhdGVTaXplKGNvbnN0
IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJikgY29u
c3Q7CiAKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmLCBjb25z
dCBJbnRSZWN0JiBsYXllclJlY3QpOwotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5n
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJvdW5kZWRJbnRSZWN0
OjpSYWRpaSYsIGNvbnN0IEludFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6
ZSYgYmx1cnJlZEVkZ2VTaXplKTsKKyAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGlu
ZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSb3VuZGVkUmVjdDo6
UmFkaWkmLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOworICAgIHZvaWQgZHJhd1JlY3RTaGFk
b3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJv
dW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29u
c3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKIAotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93
V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmLCBjb25zdCBJ
bnRSZWN0JiBsYXllclJlY3QpOwotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGhvbGVS
ZWN0LCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmLCBjb25zdCBJbnRTaXplJiBzaGFkb3dU
ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CisgICAgdm9pZCBk
cmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRp
aSYsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3dX
aXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
UmVjdCYgaG9sZVJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFNpemUm
IHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKICAg
ICAKLSAgICB2b2lkIGRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmIHNoYWRvd0JvdW5kcywgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiwgY29uc3Qg
SW50U2l6ZSYgcm91bmRlZFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBTaGFk
b3dEaXJlY3Rpb24pOworICAgIHZvaWQgZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93Qm91bmRzLCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkm
LCBjb25zdCBJbnRTaXplJiByb3VuZGVkUmFkaXVzLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNp
emUsIFNoYWRvd0RpcmVjdGlvbik7CiAgICAgCiAgICAgdm9pZCBibHVyU2hhZG93QnVmZmVyKGNv
bnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSk7CiAgICAgdm9pZCBibHVyQW5kQ29sb3JTaGFkb3dC
dWZmZXIoY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHAJKHJldmlzaW9uIDkwNzkzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDMsNyArNzAzLDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsbwogICAgICAgICBDR0Nv
bnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAs
IDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhGbG9hdFNpemUoc2hhZG93
Qmx1ciwgc2hhZG93Qmx1ciksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0Nv
bG9yLCBtX3N0YXRlLnNoYWRvd0NvbG9yU3BhY2UpOwotICAgICAgICBjb250ZXh0U2hhZG93LmRy
YXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRJbnRSZWN0OjpSYWRpaSgpKTsKKyAgICAg
ICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0LCBSb3VuZGVkUmVjdDo6
UmFkaWkoKSk7CiAgICAgfQogCiAgICAgQ0dDb250ZXh0RmlsbFJlY3QoY29udGV4dCwgcmVjdCk7
CkBAIC03MzIsNyArNzMyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0
IEZsbwogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0
KCksIENHU2l6ZVplcm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRv
dyhGbG9hdFNpemUoc2hhZG93Qmx1ciwgc2hhZG93Qmx1ciksIG1fc3RhdGUuc2hhZG93T2Zmc2V0
LCBtX3N0YXRlLnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRvd0NvbG9yU3BhY2UpOwotICAgICAg
ICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRJbnRSZWN0
OjpSYWRpaSgpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCBy
ZWN0LCBSb3VuZGVkUmVjdDo6UmFkaWkoKSk7CiAgICAgfQogCiAgICAgQ0dDb250ZXh0RmlsbFJl
Y3QoY29udGV4dCwgcmVjdCk7CkBAIC03NjUsNyArNzY1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSb3VuZGVkUmVjdChjbwogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29s
b3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRv
d0JsdXIgY29udGV4dFNoYWRvdyhGbG9hdFNpemUoc2hhZG93Qmx1ciwgc2hhZG93Qmx1ciksIG1f
c3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRvd0Nv
bG9yU3BhY2UpOwotICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJl
Y3QsIFJvdW5kZWRJbnRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwg
Ym90dG9tUmlnaHQpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlz
LCByZWN0LCBSb3VuZGVkUmVjdDo6UmFkaWkodG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQs
IGJvdHRvbVJpZ2h0KSk7CiAgICAgfQogCiAgICAgYm9vbCBlcXVhbFdpZHRocyA9ICh0b3BMZWZ0
LndpZHRoKCkgPT0gdG9wUmlnaHQud2lkdGgoKSAmJiB0b3BSaWdodC53aWR0aCgpID09IGJvdHRv
bUxlZnQud2lkdGgoKSAmJiBib3R0b21MZWZ0LndpZHRoKCkgPT0gYm90dG9tUmlnaHQud2lkdGgo
KSk7CkBAIC03ODYsNyArNzg2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVk
UmVjdChjbwogICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29sb3IsIG9s
ZENvbG9yU3BhY2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91
bmRlZEhvbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUm91bmRlZEludFJlY3QmIHJvdW5k
ZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVj
dCYgcmVjdCwgY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAJKHJldmlzaW9uIDkwNzkzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1MCw3ICs4NTAsNyBAQCB2b2lkIFJlbmRl
ckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWluCiAgICAgICAgIC8vIFRvIGF2b2lkIHRoZSBi
YWNrZ3JvdW5kIGNvbG9yIGJsZWVkaW5nIG91dCBiZWhpbmQgdGhlIGJvcmRlciwgd2UnbGwgcmVu
ZGVyIGJhY2tncm91bmQgYW5kIGJvcmRlcgogICAgICAgICAvLyBpbnRvIGEgdHJhbnNwYXJlbmN5
IGxheWVyLCBhbmQgdGhlbiBjbGlwIHRoYXQgaW4gb25lIGdvICh3aGljaCByZXF1aXJlcyBzZXR0
aW5nIHVwIHRoZSBjbGlwIGJlZm9yZQogICAgICAgICAvLyBiZWdpbm5pbmcgdGhlIGxheWVyKS4K
LSAgICAgICAgUm91bmRlZEludFJlY3QgYm9yZGVyID0gc3R5bGUoKS0+Z2V0Um91bmRlZEJvcmRl
ckZvcihwYWludFJlY3QpOworICAgICAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBzdHlsZSgpLT5n
ZXRSb3VuZGVkQm9yZGVyRm9yKHBhaW50UmVjdCk7CiAgICAgICAgIHN0YXRlU2F2ZXIuc2F2ZSgp
OwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKGJvcmRlcik7
CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCShyZXZpc2lvbiA5MDc5MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2MywxMiArNTYzLDEyIEBA
IGludCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZ0VuZChib28KICAgICByZXR1cm4gcGFk
ZGluZy5jYWxjTWluVmFsdWUodyk7CiB9CiAKLVJvdW5kZWRJbnRSZWN0IFJlbmRlckJveE1vZGVs
T2JqZWN0OjpnZXRCYWNrZ3JvdW5kUm91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgYm9yZGVyUmVj
dCwgSW5saW5lRmxvd0JveCogYm94LCBpbnQgaW5saW5lQm94V2lkdGgsIGludCBpbmxpbmVCb3hI
ZWlnaHQsCitSb3VuZGVkUmVjdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Z2V0QmFja2dyb3VuZFJv
dW5kZWRSZWN0KGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIElubGluZUZsb3dCb3gqIGJv
eCwgTGF5b3V0VW5pdCBpbmxpbmVCb3hXaWR0aCwgTGF5b3V0VW5pdCBpbmxpbmVCb3hIZWlnaHQs
CiAgICAgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlKQogewotICAgIFJvdW5kZWRJbnRSZWN0IGJvcmRlciA9IHN0eWxlKCktPmdldFJvdW5k
ZWRCb3JkZXJGb3IoYm9yZGVyUmVjdCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxv
Z2ljYWxSaWdodEVkZ2UpOworICAgIFJvdW5kZWRSZWN0IGJvcmRlciA9IHN0eWxlKCktPmdldFJv
dW5kZWRCb3JkZXJGb3IoYm9yZGVyUmVjdCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgIGlmIChib3ggJiYgKGJveC0+bmV4dExpbmVCb3goKSB8
fCBib3gtPnByZXZMaW5lQm94KCkpKSB7Ci0gICAgICAgIFJvdW5kZWRJbnRSZWN0IHNlZ21lbnRC
b3JkZXIgPSBzdHlsZSgpLT5nZXRSb3VuZGVkQm9yZGVyRm9yKEludFJlY3QoMCwgMCwgaW5saW5l
Qm94V2lkdGgsIGlubGluZUJveEhlaWdodCksIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlKTsKKyAgICAgICAgUm91bmRlZFJlY3Qgc2VnbWVudEJvcmRlciA9
IHN0eWxlKCktPmdldFJvdW5kZWRCb3JkZXJGb3IoTGF5b3V0UmVjdCgwLCAwLCBpbmxpbmVCb3hX
aWR0aCwgaW5saW5lQm94SGVpZ2h0KSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxv
Z2ljYWxSaWdodEVkZ2UpOwogICAgICAgICBib3JkZXIuc2V0UmFkaWkoc2VnbWVudEJvcmRlci5y
YWRpaSgpKTsKICAgICB9CiAKQEAgLTYzMSw3ICs2MzEsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEZpbGxMYXllCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYg
KGhhc1JvdW5kZWRCb3JkZXIgJiYgYmxlZWRBdm9pZGFuY2UgIT0gQmFja2dyb3VuZEJsZWVkVXNl
VHJhbnNwYXJlbmN5TGF5ZXIpIHsKLSAgICAgICAgICAgIFJvdW5kZWRJbnRSZWN0IGJvcmRlciA9
IGdldEJhY2tncm91bmRSb3VuZGVkUmVjdChiYWNrZ3JvdW5kUmVjdEFkanVzdGVkRm9yQmxlZWRB
dm9pZGFuY2UoY29udGV4dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UpLCBib3gsIGJveFNpemUud2lk
dGgoKSwgYm94U2l6ZS5oZWlnaHQoKSwgaW5jbHVkZUxlZnRFZGdlLCBpbmNsdWRlUmlnaHRFZGdl
KTsKKyAgICAgICAgICAgIFJvdW5kZWRSZWN0IGJvcmRlciA9IGdldEJhY2tncm91bmRSb3VuZGVk
UmVjdChiYWNrZ3JvdW5kUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoY29udGV4dCwgcmVj
dCwgYmxlZWRBdm9pZGFuY2UpLCBib3gsIGJveFNpemUud2lkdGgoKSwgYm94U2l6ZS5oZWlnaHQo
KSwgaW5jbHVkZUxlZnRFZGdlLCBpbmNsdWRlUmlnaHRFZGdlKTsKICAgICAgICAgICAgIGNvbnRl
eHQtPmZpbGxSb3VuZGVkUmVjdChib3JkZXIsIGJnQ29sb3IsIHN0eWxlKCktPmNvbG9yU3BhY2Uo
KSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QocmVjdCwg
YmdDb2xvciwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpKTsKQEAgLTY0Miw3ICs2NDIsNyBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllCiAgICAgYm9vbCBjbGlwVG9Cb3Jk
ZXJSYWRpdXMgPSBoYXNSb3VuZGVkQm9yZGVyICYmIGJsZWVkQXZvaWRhbmNlICE9IEJhY2tncm91
bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyOwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgY2xpcFRvQm9yZGVyU3RhdGVTYXZlcigqY29udGV4dCwgY2xpcFRvQm9yZGVyUmFkaXVzKTsK
ICAgICBpZiAoY2xpcFRvQm9yZGVyUmFkaXVzKSB7Ci0gICAgICAgIFJvdW5kZWRJbnRSZWN0IGJv
cmRlciA9IGdldEJhY2tncm91bmRSb3VuZGVkUmVjdChiYWNrZ3JvdW5kUmVjdEFkanVzdGVkRm9y
QmxlZWRBdm9pZGFuY2UoY29udGV4dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UpLCBib3gsIGJveFNp
emUud2lkdGgoKSwgYm94U2l6ZS5oZWlnaHQoKSwgaW5jbHVkZUxlZnRFZGdlLCBpbmNsdWRlUmln
aHRFZGdlKTsKKyAgICAgICAgUm91bmRlZFJlY3QgYm9yZGVyID0gZ2V0QmFja2dyb3VuZFJvdW5k
ZWRSZWN0KGJhY2tncm91bmRSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZShjb250ZXh0LCBy
ZWN0LCBibGVlZEF2b2lkYW5jZSksIGJveCwgYm94U2l6ZS53aWR0aCgpLCBib3hTaXplLmhlaWdo
dCgpLCBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOwogICAgICAgICBjb250ZXh0
LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyKTsKICAgICB9CiAgICAgCkBAIC0xMjI5LDcgKzEy
MjksNyBAQCBzdGF0aWMgYm9vbCBqb2luUmVxdWlyZXNNaXRyZShCb3hTaWRlIHNpCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE9uZUJvcmRl
clNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxl
KiBzdHlsZSwgY29uc3QgUm91bmRlZEludFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVk
SW50UmVjdCYgaW5uZXJCb3JkZXIsCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE9u
ZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJlbmRl
clN0eWxlKiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3Vu
ZGVkUmVjdCYgaW5uZXJCb3JkZXIsCiAgICAgY29uc3QgSW50UmVjdCYgc2lkZVJlY3QsIEJveFNp
ZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUxLCBCb3hTaWRlIGFkamFjZW50U2lkZTIsIGNv
bnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgY29uc3QgUGF0aCogcGF0aCwgCiAgICAgQmFja2dyb3Vu
ZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVk
Z2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzLCBjb25zdCBD
b2xvciogb3ZlcnJpZGVDb2xvcikKIHsKQEAgLTEyNjcsNyArMTI2Nyw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50T25lQm9yZGUKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgUm91bmRlZEludFJlY3QmIG91
dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkSW50UmVjdCYgaW5uZXJCb3JkZXIsCit2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFJvdW5kZWRSZWN0JiBv
dXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCb3JkZXJFZGdlIGVkZ2VzW10s
IEJvcmRlckVkZ2VGbGFncyBlZGdlU2V0LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRB
dm9pZGFuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwg
Ym9vbCBhbnRpYWxpYXMsIGNvbnN0IENvbG9yKiBvdmVycmlkZUNvbG9yKQogewpAQCAtMTI3OCw3
ICsxMjc4LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXJTaQogICAg
ICAgICByb3VuZGVkUGF0aC5hZGRSb3VuZGVkUmVjdChvdXRlckJvcmRlcik7CiAgICAgCiAgICAg
aWYgKGVkZ2VzW0JTVG9wXS5zaG91bGRSZW5kZXIoKSAmJiBpbmNsdWRlc0VkZ2UoZWRnZVNldCwg
QlNUb3ApKSB7Ci0gICAgICAgIEludFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7
CisgICAgICAgIExheW91dFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CiAgICAg
ICAgIHNpZGVSZWN0LnNldEhlaWdodChlZGdlc1tCU1RvcF0ud2lkdGgpOwogCiAgICAgICAgIGJv
b2wgdXNlUGF0aCA9IHJlbmRlclJhZGlpICYmIChib3JkZXJTdHlsZUhhc0lubmVyRGV0YWlsKGVk
Z2VzW0JTVG9wXS5zdHlsZSkgfHwgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShpbm5lckJvcmRlci5y
YWRpaSgpLnRvcExlZnQoKSwgaW5uZXJCb3JkZXIucmFkaWkoKS50b3BSaWdodCgpKSk7CkBAIC0x
Mjg2LDcgKzEyODYsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlclNp
CiAgICAgfQogCiAgICAgaWYgKGVkZ2VzW0JTQm90dG9tXS5zaG91bGRSZW5kZXIoKSAmJiBpbmNs
dWRlc0VkZ2UoZWRnZVNldCwgQlNCb3R0b20pKSB7Ci0gICAgICAgIEludFJlY3Qgc2lkZVJlY3Qg
PSBvdXRlckJvcmRlci5yZWN0KCk7CisgICAgICAgIExheW91dFJlY3Qgc2lkZVJlY3QgPSBvdXRl
ckJvcmRlci5yZWN0KCk7CiAgICAgICAgIHNpZGVSZWN0LnNoaWZ0WUVkZ2VUbyhzaWRlUmVjdC5t
YXhZKCkgLSBlZGdlc1tCU0JvdHRvbV0ud2lkdGgpOwogCiAgICAgICAgIGJvb2wgdXNlUGF0aCA9
IHJlbmRlclJhZGlpICYmIChib3JkZXJTdHlsZUhhc0lubmVyRGV0YWlsKGVkZ2VzW0JTQm90dG9t
XS5zdHlsZSkgfHwgYm9yZGVyV2lsbEFyY0lubmVyRWRnZShpbm5lckJvcmRlci5yYWRpaSgpLmJv
dHRvbUxlZnQoKSwgaW5uZXJCb3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpKSk7CkBAIC0xMjk0
LDcgKzEyOTQsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlclNpCiAg
ICAgfQogCiAgICAgaWYgKGVkZ2VzW0JTTGVmdF0uc2hvdWxkUmVuZGVyKCkgJiYgaW5jbHVkZXNF
ZGdlKGVkZ2VTZXQsIEJTTGVmdCkpIHsKLSAgICAgICAgSW50UmVjdCBzaWRlUmVjdCA9IG91dGVy
Qm9yZGVyLnJlY3QoKTsKKyAgICAgICAgTGF5b3V0UmVjdCBzaWRlUmVjdCA9IG91dGVyQm9yZGVy
LnJlY3QoKTsKICAgICAgICAgc2lkZVJlY3Quc2V0V2lkdGgoZWRnZXNbQlNMZWZ0XS53aWR0aCk7
CiAKICAgICAgICAgYm9vbCB1c2VQYXRoID0gcmVuZGVyUmFkaWkgJiYgKGJvcmRlclN0eWxlSGFz
SW5uZXJEZXRhaWwoZWRnZXNbQlNMZWZ0XS5zdHlsZSkgfHwgYm9yZGVyV2lsbEFyY0lubmVyRWRn
ZShpbm5lckJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgaW5uZXJCb3JkZXIucmFkaWkoKS50
b3BMZWZ0KCkpKTsKQEAgLTEzMDIsNyArMTMwMiw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm9yZGVyU2kKICAgICB9CiAKICAgICBpZiAoZWRnZXNbQlNSaWdodF0uc2hvdWxk
UmVuZGVyKCkgJiYgaW5jbHVkZXNFZGdlKGVkZ2VTZXQsIEJTUmlnaHQpKSB7Ci0gICAgICAgIElu
dFJlY3Qgc2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CisgICAgICAgIExheW91dFJlY3Qg
c2lkZVJlY3QgPSBvdXRlckJvcmRlci5yZWN0KCk7CiAgICAgICAgIHNpZGVSZWN0LnNoaWZ0WEVk
Z2VUbyhzaWRlUmVjdC5tYXhYKCkgLSBlZGdlc1tCU1JpZ2h0XS53aWR0aCk7CiAKICAgICAgICAg
Ym9vbCB1c2VQYXRoID0gcmVuZGVyUmFkaWkgJiYgKGJvcmRlclN0eWxlSGFzSW5uZXJEZXRhaWwo
ZWRnZXNbQlNSaWdodF0uc3R5bGUpIHx8IGJvcmRlcldpbGxBcmNJbm5lckVkZ2UoaW5uZXJCb3Jk
ZXIucmFkaWkoKS5ib3R0b21SaWdodCgpLCBpbm5lckJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCkp
KTsKQEAgLTEzMTAsNyArMTMxMCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
Qm9yZGVyU2kKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50VHJh
bnNsdWNlbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSb3VuZGVkSW50UmVjdCYgb3V0ZXJCb3JkZXIs
IGNvbnN0IFJvdW5kZWRJbnRSZWN0JiBpbm5lckJvcmRlciwKK3ZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50VHJhbnNsdWNlbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSb3VuZGVkUmVjdCYg
b3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCb3JkZXJF
ZGdlIGVkZ2VzW10sIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgYm9v
bCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBi
b29sIGFudGlhbGlhcykKIHsKICAgICBCb3JkZXJFZGdlRmxhZ3MgZWRnZXNUb0RyYXcgPSBBbGxC
b3JkZXJFZGdlczsKQEAgLTEzNjMsOCArMTM2Myw4IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm9yZGVyKEcKICAgICBCb3JkZXJFZGdlIGVkZ2VzWzRdOwogICAgIGdldEJvcmRl
ckVkZ2VJbmZvKGVkZ2VzLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJp
Z2h0RWRnZSk7CiAKLSAgICBSb3VuZGVkSW50UmVjdCBvdXRlckJvcmRlciA9IHN0eWxlLT5nZXRS
b3VuZGVkQm9yZGVyRm9yKHJlY3QsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKTsKLSAgICBSb3VuZGVkSW50UmVjdCBpbm5lckJvcmRlciA9IHN0eWxlLT5n
ZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IocmVjdCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgIFJvdW5kZWRSZWN0IG91dGVyQm9yZGVyID0gc3R5
bGUtPmdldFJvdW5kZWRCb3JkZXJGb3IocmVjdCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgIFJvdW5kZWRSZWN0IGlubmVyQm9yZGVyID0gc3R5
bGUtPmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihyZWN0LCBpbmNsdWRlTG9naWNhbExlZnRFZGdl
LCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGN1cnJlbnRDVE0gPSBncmFwaGljc0NvbnRleHQtPmdldENUTSgpOwogICAgIC8vIEZJWE1FOiB0
aGlzIGlzbid0IHF1aXRlIGNvcnJlY3QuIFdlIG1heSB3YW50IHRvIGFudGlhbGlhcyB3aGVuIHNj
YWxlZCBieSBhIG5vbi1pbnRlZ3JhbCB2YWx1ZSwgb3Igd2hlbiB0aGUgdHJhbnNsYXRpb24gaXMg
bm9uLWludGVncmFsLgpAQCAtMTUxNiw3ICsxNTE2LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6ZHJhd0JveFNpZGVGcgogICAgICAgICAvLyBEcmF3IGlubmVyIGJvcmRlciBsaW5lCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqZ3JhcGhpY3NDb250ZXh0KTsKLSAgICAgICAgICAgIFJvdW5kZWRJbnRSZWN0IGlubmVyQ2xp
cCA9IHN0eWxlLT5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVyUmVjdCwKKyAgICAgICAg
ICAgIFJvdW5kZWRSZWN0IGlubmVyQ2xpcCA9IHN0eWxlLT5nZXRSb3VuZGVkSW5uZXJCb3JkZXJG
b3IoYm9yZGVyUmVjdCwKICAgICAgICAgICAgICAgICBpbm5lckJvcmRlclRvcFdpZHRoLCBpbm5l
ckJvcmRlckJvdHRvbVdpZHRoLCBpbm5lckJvcmRlckxlZnRXaWR0aCwgaW5uZXJCb3JkZXJSaWdo
dFdpZHRoLAogICAgICAgICAgICAgICAgIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVM
b2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAgICAgIApAQCAtMTUzNiw3ICsxNTM2LDcgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcgogICAgICAgICAgICAgICAgICsr
b3V0ZXJCb3JkZXJSaWdodFdpZHRoOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgUm91bmRlZEludFJlY3Qgb3V0ZXJDbGlwID0gc3R5bGUtPmdldFJvdW5kZWRJ
bm5lckJvcmRlckZvcihvdXRlclJlY3QsCisgICAgICAgICAgICBSb3VuZGVkUmVjdCBvdXRlckNs
aXAgPSBzdHlsZS0+Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKG91dGVyUmVjdCwKICAgICAgICAg
ICAgICAgICBvdXRlckJvcmRlclRvcFdpZHRoLCBvdXRlckJvcmRlckJvdHRvbVdpZHRoLCBvdXRl
ckJvcmRlckxlZnRXaWR0aCwgb3V0ZXJCb3JkZXJSaWdodFdpZHRoLAogICAgICAgICAgICAgICAg
IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KG91dGVyQ2xpcCk7CkBA
IC0xNTYyLDEyICsxNTYyLDEyIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hT
aWRlRnIKIAogICAgICAgICAvLyBQYWludCBpbm5lciBvbmx5CiAgICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0KTsKLSAgICAgICAgaW50
IHRvcFdpZHRoID0gZWRnZXNbQlNUb3BdLnVzZWRXaWR0aCgpIC8gMjsKLSAgICAgICAgaW50IGJv
dHRvbVdpZHRoID0gZWRnZXNbQlNCb3R0b21dLnVzZWRXaWR0aCgpIC8gMjsKLSAgICAgICAgaW50
IGxlZnRXaWR0aCA9IGVkZ2VzW0JTTGVmdF0udXNlZFdpZHRoKCkgLyAyOwotICAgICAgICBpbnQg
cmlnaHRXaWR0aCA9IGVkZ2VzW0JTUmlnaHRdLnVzZWRXaWR0aCgpIC8gMjsKKyAgICAgICAgTGF5
b3V0VW5pdCB0b3BXaWR0aCA9IGVkZ2VzW0JTVG9wXS51c2VkV2lkdGgoKSAvIDI7CisgICAgICAg
IExheW91dFVuaXQgYm90dG9tV2lkdGggPSBlZGdlc1tCU0JvdHRvbV0udXNlZFdpZHRoKCkgLyAy
OworICAgICAgICBMYXlvdXRVbml0IGxlZnRXaWR0aCA9IGVkZ2VzW0JTTGVmdF0udXNlZFdpZHRo
KCkgLyAyOworICAgICAgICBMYXlvdXRVbml0IHJpZ2h0V2lkdGggPSBlZGdlc1tCU1JpZ2h0XS51
c2VkV2lkdGgoKSAvIDI7CiAKLSAgICAgICAgUm91bmRlZEludFJlY3QgY2xpcFJlY3QgPSBzdHls
ZS0+Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlclJlY3QsCisgICAgICAgIFJvdW5kZWRS
ZWN0IGNsaXBSZWN0ID0gc3R5bGUtPmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihib3JkZXJSZWN0
LAogICAgICAgICAgICAgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lk
dGgsCiAgICAgICAgICAgICBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJp
Z2h0RWRnZSk7CiAKQEAgLTE2MjIsNyArMTYyMiw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm9yZGVyKEcKICAgICBib29sIHJlbmRlckJvdHRvbSA9IGJvdHRvbVN0eWxlID4g
QkhJRERFTiAmJiAhYm90dG9tVHJhbnNwYXJlbnQgJiYgKGhvcml6b250YWwgfHwgaW5jbHVkZUxv
Z2ljYWxSaWdodEVkZ2UpOwogCiAKLSAgICBSb3VuZGVkSW50UmVjdCBib3JkZXIocmVjdCk7Cisg
ICAgUm91bmRlZFJlY3QgYm9yZGVyKHJlY3QpOwogICAgIAogICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0LCBmYWxzZSk7CiAgICAgaWYgKHN0
eWxlLT5oYXNCb3JkZXJSYWRpdXMoKSkgewpAQCAtMTkyNiw3ICsxOTI2LDcgQEAgc3RhdGljIHZv
aWQgZmluZElubmVyVmVydGV4KGNvbnN0IEZsb2F0UAogICAgICAgICBmaW5kSW50ZXJzZWN0aW9u
KG91dGVyQ29ybmVyLCBpbm5lckNvcm5lciwgRmxvYXRQb2ludCgwLCBjZW50ZXJQb2ludC55KCkp
LCBGbG9hdFBvaW50KDEwMCwgY2VudGVyUG9pbnQueSgpKSwgcmVzdWx0KTsKIH0KIAotdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBSb3VuZGVkSW50UmVjdCYgb3V0ZXJCb3JkZXIsIGNv
bnN0IFJvdW5kZWRJbnRSZWN0JiBpbm5lckJvcmRlciwKK3ZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5u
ZXJCb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQm94U2lkZSBzaWRlLCBib29sIGZpcnN0RWRnZU1hdGNoZXMsIGJvb2wgc2Vjb25kRWRnZU1h
dGNoZXMpCiB7CiAgICAgRmxvYXRQb2ludCBxdWFkWzRdOwpAQCAtMjA5Nyw3ICsyMDk3LDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkbwogICAgIGlmIChjb250ZXh0
LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIXMtPmJveFNoYWRvdygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBSb3VuZGVkSW50UmVjdCBib3JkZXIgPSAoc2hhZG93U3R5bGUgPT0gSW5zZXQpID8g
cy0+Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKHBhaW50UmVjdCwgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCisgICAgUm91bmRlZFJlY3QgYm9yZGVyID0g
KHNoYWRvd1N0eWxlID09IEluc2V0KSA/IHMtPmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihwYWlu
dFJlY3QsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzLT5n
ZXRSb3VuZGVkQm9yZGVyRm9yKHBhaW50UmVjdCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCiAgICAgYm9vbCBoYXNCb3JkZXJSYWRpdXMgPSBzLT5o
YXNCb3JkZXJSYWRpdXMoKTsKQEAgLTIxMTgsNyArMjExOCw3IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm94U2hhZG8KICAgICAgICAgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9y
ID0gc2hhZG93LT5jb2xvcigpOwogCiAgICAgICAgIGlmIChzaGFkb3ctPnN0eWxlKCkgPT0gTm9y
bWFsKSB7Ci0gICAgICAgICAgICBSb3VuZGVkSW50UmVjdCBmaWxsUmVjdCA9IGJvcmRlcjsKKyAg
ICAgICAgICAgIFJvdW5kZWRSZWN0IGZpbGxSZWN0ID0gYm9yZGVyOwogICAgICAgICAgICAgZmls
bFJlY3QuaW5mbGF0ZShzaGFkb3dTcHJlYWQpOwogICAgICAgICAgICAgaWYgKGZpbGxSZWN0Lmlz
RW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIxNDIsNyArMjE0Miw3IEBA
IHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG8KICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xv
ciwgcy0+Y29sb3JTcGFjZSgpKTsKIAogICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJhZGl1cykg
ewotICAgICAgICAgICAgICAgIFJvdW5kZWRJbnRSZWN0IHJlY3RUb0NsaXBPdXQgPSBib3JkZXI7
CisgICAgICAgICAgICAgICAgUm91bmRlZFJlY3QgcmVjdFRvQ2xpcE91dCA9IGJvcmRlcjsKIAog
ICAgICAgICAgICAgICAgIC8vIElmIHRoZSBib3ggaXMgb3BhcXVlLCBpdCBpcyB1bm5lY2Vzc2Fy
eSB0byBjbGlwIGl0IG91dC4gSG93ZXZlciwgZG9pbmcgc28gc2F2ZXMgdGltZQogICAgICAgICAg
ICAgICAgIC8vIHdoZW4gcGFpbnRpbmcgdGhlIHNoYWRvdy4gT24gdGhlIG90aGVyIGhhbmQsIGl0
IGludHJvZHVjZXMgc3VicGl4ZWwgZ2FwcyBhbG9uZyB0aGUKQEAgLTIyMDYsNyArMjIwNiw3IEBA
IHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG8KICAgICAgICAgICAgIENv
bG9yIGZpbGxDb2xvcihzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hh
ZG93Q29sb3IuYmx1ZSgpLCAyNTUpOwogCiAgICAgICAgICAgICBMYXlvdXRSZWN0IG91dGVyUmVj
dCA9IGFyZWFDYXN0aW5nU2hhZG93SW5Ib2xlKGJvcmRlci5yZWN0KCksIHNoYWRvd0JsdXIsIHNo
YWRvd1NwcmVhZCwgc2hhZG93T2Zmc2V0KTsKLSAgICAgICAgICAgIFJvdW5kZWRJbnRSZWN0IHJv
dW5kZWRIb2xlKGhvbGVSZWN0LCBib3JkZXIucmFkaWkoKSk7CisgICAgICAgICAgICBSb3VuZGVk
UmVjdCByb3VuZGVkSG9sZShob2xlUmVjdCwgYm9yZGVyLnJhZGlpKCkpOwogCiAgICAgICAgICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwogICAgICAg
ICAgICAgaWYgKGhhc0JvcmRlclJhZGl1cykgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgJKHJldmlzaW9uIDkwNzkzKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0OSwxNyArMTQ5LDE3IEBAIHByaXZhdGU6CiAKICAgICBJbnRTaXplIGNhbGN1bGF0
ZUZpbGxUaWxlU2l6ZShjb25zdCBGaWxsTGF5ZXIqLCBJbnRTaXplIHNjYWxlZFNpemUpIGNvbnN0
OwogCi0gICAgUm91bmRlZEludFJlY3QgZ2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KGNvbnN0IElu
dFJlY3QmLCBJbmxpbmVGbG93Qm94KiwgaW50IGlubGluZUJveFdpZHRoLCBpbnQgaW5saW5lQm94
SGVpZ2h0LAorICAgIFJvdW5kZWRSZWN0IGdldEJhY2tncm91bmRSb3VuZGVkUmVjdChjb25zdCBM
YXlvdXRSZWN0JiwgSW5saW5lRmxvd0JveCosIExheW91dFVuaXQgaW5saW5lQm94V2lkdGgsIExh
eW91dFVuaXQgaW5saW5lQm94SGVpZ2h0LAogICAgICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVm
dEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCi0gICAgdm9pZCBjbGlwQm9y
ZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUm91bmRlZEludFJlY3QmIG91
dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkSW50UmVjdCYgaW5uZXJCb3JkZXIsCisgICAgdm9pZCBj
bGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUm91bmRlZFJlY3Qm
IG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQm94U2lkZSwgYm9vbCBmaXJzdEVkZ2VNYXRjaGVzLCBib29s
IHNlY29uZEVkZ2VNYXRjaGVzKTsKLSAgICB2b2lkIHBhaW50T25lQm9yZGVyU2lkZShHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IFJvdW5kZWRJbnRSZWN0JiBvdXRl
ckJvcmRlciwgY29uc3QgUm91bmRlZEludFJlY3QmIGlubmVyQm9yZGVyLAorICAgIHZvaWQgcGFp
bnRPbmVCb3JkZXJTaWRlKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxlKiwgY29u
c3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3Jk
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNpZGVS
ZWN0LCBCb3hTaWRlLCBCb3hTaWRlIGFkamFjZW50U2lkZTEsIEJveFNpZGUgYWRqYWNlbnRTaWRl
MiwgY29uc3QgY2xhc3MgQm9yZGVyRWRnZVtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBQYXRoKiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFs
aWFzLCBjb25zdCBDb2xvciogb3ZlcnJpZGVDb2xvciA9IDApOwotICAgIHZvaWQgcGFpbnRUcmFu
c2x1Y2VudEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxlKiwg
Y29uc3QgUm91bmRlZEludFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkSW50UmVjdCYg
aW5uZXJCb3JkZXIsCisgICAgdm9pZCBwYWludFRyYW5zbHVjZW50Qm9yZGVyU2lkZXMoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJC
b3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2xhc3MgQm9yZGVyRWRnZVtdLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFu
Y2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0
RWRnZSwgYm9vbCBhbnRpYWxpYXMgPSBmYWxzZSk7Ci0gICAgdm9pZCBwYWludEJvcmRlclNpZGVz
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgUm91bmRlZEludFJl
Y3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkSW50UmVjdCYgaW5uZXJCb3JkZXIsCisgICAg
dm9pZCBwYWludEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxl
KiwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5u
ZXJCb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsYXNzIEJvcmRlckVk
Z2VbXSwgQm9yZGVyRWRnZUZsYWdzLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMgPSBmYWxzZSwgY29uc3QgQ29sb3Iq
IG92ZXJyaWRlQ29sb3IgPSAwKTsKICAgICB2b2lkIGRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IFBhdGgmLCBjb25zdCBjbGFzcyBCb3Jk
ZXJFZGdlW10sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tCShyZXZpc2lvbiA5MDc5MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAyNCw3ICsxMDI0LDcgQEAgdm9pZCBSZW5k
ZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbgogCiAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CiAKLSAgICBSb3VuZGVkSW50
UmVjdCBib3JkZXIgPSBvLT5zdHlsZSgpLT5nZXRSb3VuZGVkQm9yZGVyRm9yKHIpOworICAgIFJv
dW5kZWRSZWN0IGJvcmRlciA9IG8tPnN0eWxlKCktPmdldFJvdW5kZWRCb3JkZXJGb3Iocik7CiAg
ICAgaW50IHJhZGl1cyA9IGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKS53aWR0aCgpOwogCiAgICAg
Q0dDb2xvclNwYWNlUmVmIGNzcGFjZSA9IGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKQEAgLTEw
NTgsNyArMTA1OCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b24K
ICAgICB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFp
bnRJbmZvLmNvbnRleHQpOwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHRv
cEdyYWRpZW50KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xp
cChSb3VuZGVkSW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KHRvcEdyYWRpZW50KSwgYm9yZGVyLnJh
ZGlpKCkudG9wTGVmdCgpLCBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLCBJbnRTaXplKCksIElu
dFNpemUoKSkpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlw
KFJvdW5kZWRSZWN0KGVuY2xvc2luZ0xheW91dFJlY3QodG9wR3JhZGllbnQpLCBib3JkZXIucmFk
aWkoKS50b3BMZWZ0KCksIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCksIEludFNpemUoKSwgSW50
U2l6ZSgpKSk7CiAgICAgICAgIGNvbnRleHQgPSBjZ0NvbnRleHRDb250YWluZXIuY29udGV4dCgp
OwogICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCB0b3BTaGFkaW5nLmdldCgp
KTsKICAgICB9CkBAIC0xMDY2LDcgKzEwNjYsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWlu
dE1lbnVMaXN0QnV0dG9uCiAgICAgaWYgKCFib3R0b21HcmFkaWVudC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29u
dGV4dCk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgYm90dG9tR3JhZGll
bnQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKFJvdW5k
ZWRJbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QoYm90dG9tR3JhZGllbnQpLCBJbnRTaXplKCksIElu
dFNpemUoKSwgYm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBib3JkZXIucmFkaWkoKS5ib3R0
b21SaWdodCgpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENs
aXAoUm91bmRlZFJlY3QoZW5jbG9zaW5nTGF5b3V0UmVjdChib3R0b21HcmFkaWVudCksIEludFNp
emUoKSwgSW50U2l6ZSgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCksIGJvcmRlci5yYWRp
aSgpLmJvdHRvbVJpZ2h0KCkpKTsKICAgICAgICAgY29udGV4dCA9IGNnQ29udGV4dENvbnRhaW5l
ci5jb250ZXh0KCk7CiAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIGJvdHRv
bVNoYWRpbmcuZ2V0KCkpOwogICAgIH0KQEAgLTEyOTIsNyArMTI5Miw3IEBAIGJvb2wgUmVuZGVy
VGhlbWVNYWM6OnBhaW50U2xpZGVyVHJhY2soUmUKICAgICAgICAgbWFpblNoYWRpbmcuYWRvcHRD
RihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKGJvdW5kcy54KCksICBi
b3VuZHMueSgpKSwgQ0dQb2ludE1ha2UoYm91bmRzLngoKSwgYm91bmRzLm1heFkoKSksIG1haW5G
dW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAKICAgICBJbnRTaXplIHJhZGl1cyh0cmFj
a1JhZGl1cywgdHJhY2tSYWRpdXMpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVk
UmVjdENsaXAoUm91bmRlZEludFJlY3QoYm91bmRzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCBy
YWRpdXMpKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKFJvdW5k
ZWRSZWN0KGJvdW5kcywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7CiAgICAgY29u
dGV4dCA9IGxvY2FsQ29udGV4dC5jZ0NvbnRleHQoKTsKICAgICBDR0NvbnRleHREcmF3U2hhZGlu
Zyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDkwNzkzKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzc0LDE5ICs3NzQsMjAgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm94U2hh
ZG93KFBhc3NPd25QdAogICAgIHJhcmVEYXRhLT5tX2JveFNoYWRvdyA9IHNoYWRvd0RhdGE7CiB9
CiAKLXN0YXRpYyBSb3VuZGVkSW50UmVjdDo6UmFkaWkgY2FsY1JhZGlpRm9yKGNvbnN0IEJvcmRl
ckRhdGEmIGJvcmRlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorc3RhdGljIFJvdW5kZWRSZWN0
OjpSYWRpaSBjYWxjUmFkaWlGb3IoY29uc3QgQm9yZGVyRGF0YSYgYm9yZGVyLCBpbnQgd2lkdGgs
IGludCBoZWlnaHQpCiB7Ci0gICAgcmV0dXJuIFJvdW5kZWRJbnRSZWN0OjpSYWRpaShJbnRTaXpl
KGJvcmRlci50b3BMZWZ0KCkud2lkdGgoKS5jYWxjVmFsdWUod2lkdGgpLCAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLnRvcExlZnQoKS5oZWlnaHQoKS5j
YWxjVmFsdWUoaGVpZ2h0KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRT
aXplKGJvcmRlci50b3BSaWdodCgpLndpZHRoKCkuY2FsY1ZhbHVlKHdpZHRoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLnRvcFJpZ2h0KCkuaGVpZ2h0
KCkuY2FsY1ZhbHVlKGhlaWdodCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SW50U2l6ZShib3JkZXIuYm90dG9tTGVmdCgpLndpZHRoKCkuY2FsY1ZhbHVlKHdpZHRoKSwgCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci5ib3R0b21MZWZ0
KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGhlaWdodCkpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSW50U2l6ZShib3JkZXIuYm90dG9tUmlnaHQoKS53aWR0aCgpLmNhbGNWYWx1ZSh3
aWR0aCksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIu
Ym90dG9tUmlnaHQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoaGVpZ2h0KSkpOworICAgIHJldHVybiBS
b3VuZGVkUmVjdDo6UmFkaWkoCisgICAgICAgIExheW91dFNpemUoYm9yZGVyLnRvcExlZnQoKS53
aWR0aCgpLmNhbGNWYWx1ZSh3aWR0aCksIAorICAgICAgICAgICAgICAgICAgIGJvcmRlci50b3BM
ZWZ0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGhlaWdodCkpLAorICAgICAgICBMYXlvdXRTaXplKGJv
cmRlci50b3BSaWdodCgpLndpZHRoKCkuY2FsY1ZhbHVlKHdpZHRoKSwKKyAgICAgICAgICAgICAg
ICAgICBib3JkZXIudG9wUmlnaHQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoaGVpZ2h0KSksCisgICAg
ICAgIExheW91dFNpemUoYm9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpLmNhbGNWYWx1ZSh3aWR0
aCksIAorICAgICAgICAgICAgICAgICAgIGJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkuY2Fs
Y1ZhbHVlKGhlaWdodCkpLAorICAgICAgICBMYXlvdXRTaXplKGJvcmRlci5ib3R0b21SaWdodCgp
LndpZHRoKCkuY2FsY1ZhbHVlKHdpZHRoKSwgCisgICAgICAgICAgICAgICAgICAgYm9yZGVyLmJv
dHRvbVJpZ2h0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGhlaWdodCkpKTsKIH0KIAotc3RhdGljIGZs
b2F0IGNhbGNDb25zdHJhaW50U2NhbGVGb3IoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUm91
bmRlZEludFJlY3Q6OlJhZGlpJiByYWRpaSkKK3N0YXRpYyBmbG9hdCBjYWxjQ29uc3RyYWludFNj
YWxlRm9yKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFk
aWkpCiB7CiAgICAgLy8gQ29uc3RyYWluIGNvcm5lciByYWRpaSB1c2luZyBDU1MzIHJ1bGVzOgog
ICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtYmFja2dyb3VuZC8jdGhlLWJvcmRlci1y
YWRpdXMKQEAgLTgxOCwxOCArODE5LDE4IEBAIHN0YXRpYyBmbG9hdCBjYWxjQ29uc3RyYWludFNj
YWxlRm9yKGNvbnMKICAgICByZXR1cm4gZmFjdG9yOwogfQogCi1Sb3VuZGVkSW50UmVjdCBSZW5k
ZXJTdHlsZTo6Z2V0Um91bmRlZEJvcmRlckZvcihjb25zdCBJbnRSZWN0JiBib3JkZXJSZWN0LCBi
b29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
IGNvbnN0CitSb3VuZGVkUmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZEJvcmRlckZvcihjb25z
dCBJbnRSZWN0JiBib3JkZXJSZWN0LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wg
aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpIGNvbnN0CiB7Ci0gICAgUm91bmRlZEludFJlY3Qgcm91
bmRlZFJlY3QoYm9yZGVyUmVjdCk7CisgICAgUm91bmRlZFJlY3Qgcm91bmRlZFJlY3QoYm9yZGVy
UmVjdCk7CiAgICAgaWYgKGhhc0JvcmRlclJhZGl1cygpKSB7Ci0gICAgICAgIFJvdW5kZWRJbnRS
ZWN0OjpSYWRpaSByYWRpaSA9IGNhbGNSYWRpaUZvcihzdXJyb3VuZC0+Ym9yZGVyLCBib3JkZXJS
ZWN0LndpZHRoKCksIGJvcmRlclJlY3QuaGVpZ2h0KCkpOworICAgICAgICBSb3VuZGVkUmVjdDo6
UmFkaWkgcmFkaWkgPSBjYWxjUmFkaWlGb3Ioc3Vycm91bmQtPmJvcmRlciwgYm9yZGVyUmVjdC53
aWR0aCgpLCBib3JkZXJSZWN0LmhlaWdodCgpKTsKICAgICAgICAgcmFkaWkuc2NhbGUoY2FsY0Nv
bnN0cmFpbnRTY2FsZUZvcihib3JkZXJSZWN0LCByYWRpaSkpOwogICAgICAgICByb3VuZGVkUmVj
dC5pbmNsdWRlTG9naWNhbEVkZ2VzKHJhZGlpLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpLCBp
bmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgfQog
ICAgIHJldHVybiByb3VuZGVkUmVjdDsKIH0KIAotUm91bmRlZEludFJlY3QgUmVuZGVyU3R5bGU6
OmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihjb25zdCBJbnRSZWN0JiBib3JkZXJSZWN0LCBib29s
IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpIGNv
bnN0CitSb3VuZGVkUmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGNv
bnN0IEludFJlY3QmIGJvcmRlclJlY3QsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9v
bCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3QKIHsKICAgICBib29sIGhvcml6b250YWwg
PSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogCkBAIC04NDEsNyArODQyLDcgQEAgUm91bmRl
ZEludFJlY3QgUmVuZGVyU3R5bGU6OmdldFJvdW5kZWRJbgogICAgIHJldHVybiBnZXRSb3VuZGVk
SW5uZXJCb3JkZXJGb3IoYm9yZGVyUmVjdCwgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lk
dGgsIHJpZ2h0V2lkdGgsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlKTsKIH0KIAotUm91bmRlZEludFJlY3QgUmVuZGVyU3R5bGU6OmdldFJvdW5kZWRJbm5l
ckJvcmRlckZvcihjb25zdCBJbnRSZWN0JiBib3JkZXJSZWN0LAorUm91bmRlZFJlY3QgUmVuZGVy
U3R5bGU6OmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihjb25zdCBJbnRSZWN0JiBib3JkZXJSZWN0
LAogICAgIGludCB0b3BXaWR0aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQg
cmlnaHRXaWR0aCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKSBjb25zdAogewogICAgIEludFJlY3QgaW5uZXJSZWN0KGJvcmRlclJlY3Qu
eCgpICsgbGVmdFdpZHRoLCAKQEAgLTg0OSwxMCArODUwLDEwIEBAIFJvdW5kZWRJbnRSZWN0IFJl
bmRlclN0eWxlOjpnZXRSb3VuZGVkSW4KICAgICAgICAgICAgIGJvcmRlclJlY3Qud2lkdGgoKSAt
IGxlZnRXaWR0aCAtIHJpZ2h0V2lkdGgsIAogICAgICAgICAgICAgYm9yZGVyUmVjdC5oZWlnaHQo
KSAtIHRvcFdpZHRoIC0gYm90dG9tV2lkdGgpOwogCi0gICAgUm91bmRlZEludFJlY3Qgcm91bmRl
ZFJlY3QoaW5uZXJSZWN0KTsKKyAgICBSb3VuZGVkUmVjdCByb3VuZGVkUmVjdChpbm5lclJlY3Qp
OwogCiAgICAgaWYgKGhhc0JvcmRlclJhZGl1cygpKSB7Ci0gICAgICAgIFJvdW5kZWRJbnRSZWN0
OjpSYWRpaSByYWRpaSA9IGdldFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVyUmVjdCkucmFkaWkoKTsK
KyAgICAgICAgUm91bmRlZFJlY3Q6OlJhZGlpIHJhZGlpID0gZ2V0Um91bmRlZEJvcmRlckZvcihi
b3JkZXJSZWN0KS5yYWRpaSgpOwogICAgICAgICByYWRpaS5zaHJpbmsodG9wV2lkdGgsIGJvdHRv
bVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGgpOwogICAgICAgICByb3VuZGVkUmVjdC5pbmNs
dWRlTG9naWNhbEVkZ2VzKHJhZGlpLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpLCBpbmNsdWRl
TG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9u
IDkwNzkzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbmNsdWRlICJOaW5lUGllY2VJbWFn
ZS5oIgogI2luY2x1ZGUgIk91dGxpbmVWYWx1ZS5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29u
c3RhbnRzLmgiCi0jaW5jbHVkZSAiUm91bmRlZEludFJlY3QuaCIKKyNpbmNsdWRlICJSb3VuZGVk
UmVjdC5oIgogI2luY2x1ZGUgIlNoYWRvd0RhdGEuaCIKICNpbmNsdWRlICJTdHlsZUJhY2tncm91
bmREYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVCb3hEYXRhLmgiCkBAIC04NzEsMTAgKzg3MSwxMCBA
QCBwdWJsaWM6CiAgICAgICAgIHNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplKExlbmd0aChzLndp
ZHRoKCksIEZpeGVkKSwgTGVuZ3RoKHMuaGVpZ2h0KCksIEZpeGVkKSkpOwogICAgIH0KICAgICAK
LSAgICBSb3VuZGVkSW50UmVjdCBnZXRSb3VuZGVkQm9yZGVyRm9yKGNvbnN0IEludFJlY3QmIGJv
cmRlclJlY3QsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UgPSB0cnVlKSBjb25zdDsKLSAgICBSb3VuZGVkSW50UmVjdCBnZXRS
b3VuZGVkSW5uZXJCb3JkZXJGb3IoY29uc3QgSW50UmVjdCYgYm9yZGVyUmVjdCwgYm9vbCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9
IHRydWUpIGNvbnN0OworICAgIFJvdW5kZWRSZWN0IGdldFJvdW5kZWRCb3JkZXJGb3IoY29uc3Qg
SW50UmVjdCYgYm9yZGVyUmVjdCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwg
Ym9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpIGNvbnN0OworICAgIFJvdW5kZWRS
ZWN0IGdldFJvdW5kZWRJbm5lckJvcmRlckZvcihjb25zdCBJbnRSZWN0JiBib3JkZXJSZWN0LCBi
b29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlID0gdHJ1ZSkgY29uc3Q7CiAKLSAgICBSb3VuZGVkSW50UmVjdCBnZXRSb3VuZGVkSW5u
ZXJCb3JkZXJGb3IoY29uc3QgSW50UmVjdCYgYm9yZGVyUmVjdCwKKyAgICBSb3VuZGVkUmVjdCBn
ZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoY29uc3QgSW50UmVjdCYgYm9yZGVyUmVjdCwKICAgICAg
ICAgaW50IHRvcFdpZHRoLCBpbnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgsIGludCByaWdo
dFdpZHRoLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRCb3JkZXJMZWZ0V2lkdGgodW5zaWduZWQg
c2hvcnQgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0Lm1fd2lkdGgsIHYpIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100525</attachid>
            <date>2011-07-12 11:11:02 -0700</date>
            <delta_ts>2011-07-12 11:37:24 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-64326-20110712111101.patch</filename>
            <type>text/plain</type>
            <size>111075</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwODIyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTAyIEBACisyMDExLTA3LTEyICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2Ugcm91bmRlZElu
dFJlY3QgdG8gcm91bmRlZFJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY0MzI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisK
KyAgICAgICAgUmVuYW1pbmcgUm91bmRlZEludFJlY3QgdG8gUm91bmRlZFJlY3QgYW5kIG1vdmlu
ZyB0aGUgdW5kZXJseWluZyB0eXBlIHRvIExheW91dCB1bml0cyBmcm9tCisgICAgICAgIGludGVn
ZXItYmFzZWQgdmVyc2lvbnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBuZXcgZnVuY3Rp
b25hbGl0eQorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJv
OgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjphZGRSb3VuZGVkUmVjdENsaXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjphZGRSb3VuZGVkUmVjdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvUGF0aC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5k
ZWRJbnRSZWN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3Vu
ZGVkSW50UmVjdC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5k
ZWRSZWN0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Um91bmRlZEludFJlY3QuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlp
Ojppc1plcm8pOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzY2FsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OmV4cGFuZCk6CisgICAgICAg
IChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6aW5mbGF0ZVdpdGhSYWRpaSk6CisgICAgICAgIChXZWJD
b3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OmluY2x1ZGVMb2dpY2FsRWRnZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpleGNsdWRlTG9naWNhbEVkZ2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJvdW5kZWRSZWN0OjpSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSb3VuZGVkUmVjdDo6aW5jbHVkZUxvZ2ljYWxFZGdlcyk6CisgICAgICAgIChXZWJDb3JlOjpS
b3VuZGVkUmVjdDo6ZXhjbHVkZUxvZ2ljYWxFZGdlcyk6CisgICAgICAgIChXZWJDb3JlOjpSb3Vu
ZGVkUmVjdDo6aXNSZW5kZXJhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3Vu
ZGVkUmVjdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
b3VuZGVkSW50UmVjdC5oLgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpS
YWRpaSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnNldFRvcExlZnQp
OgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzZXRUb3BSaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnNldEJvdHRvbUxlZnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjpzZXRCb3R0b21SaWdodCk6CisgICAg
ICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6OnRvcExlZnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Um91bmRlZFJlY3Q6OlJhZGlpOjp0b3BSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpS
b3VuZGVkUmVjdDo6UmFkaWk6OmJvdHRvbUxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRl
ZFJlY3Q6OlJhZGlpOjpib3R0b21SaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVj
dDo6UmFkaWk6OmV4cGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6UmFkaWk6
OnNocmluayk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6cmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6c2V0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSb3Vu
ZGVkUmVjdDo6bW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6aW5mbGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSb3VuZGVkUmVjdDo6ZXhwYW5kUmFkaWkpOgorICAgICAgICAo
V2ViQ29yZTo6Um91bmRlZFJlY3Q6OnNocmlua1JhZGlpKToKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZXJhdG9yPT0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6c2V0TGFzdFNoYWRvd1ZhbHVlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpzZXRMYXN0SW5zZXRTaGFkb3dWYWx1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6bWF0Y2hlc0xhc3RTaGFkb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6bWF0Y2hlc0xhc3RJbnNldFNoYWRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlU2xpY2VTaXplc0Zyb21SYWRpaSk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dCbHVyOjp0ZW1wbGF0ZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1
cjo6ZHJhd0luc2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdS
ZWN0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpk
cmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Js
dXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93
Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d0JsdXI6OmRyYXdMYXllclBpZWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6Z2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50VHJhbnNsdWNlbnRCb3JkZXJT
aWRlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3Jk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRl
RnJvbVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBC
b3JkZXJTaWRlUG9seWdvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRCb3hTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRyYWNrKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y2FsY1JhZGlpRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGNDb25zdHJhaW50U2NhbGVG
b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFJvdW5kZWRCb3JkZXJGb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFJvdW5kZWRJbm5lckJvcmRlckZv
cik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisKIDIwMTEtMDct
MTIgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogQ2FuY2VsbGluZyBhbiBlbXB0eSBlZGl0IGZhaWxzLgpJbmRleDogU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDkwODIyKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEwNzksNyArMTA3OSw3IEBAIFNFVChXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0
ZXJuLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRJbnRSZWN0LmNwcAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Nl
Z21lbnRlZEZvbnREYXRhLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDkwODIyKQorKysgU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMjU0Myw4ICsyNTQzLDggQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoVHJhdmVyc2FsU3RhdGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0dGVybi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4u
aCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZEludFJlY3QuY3Bw
IFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkSW50UmVjdC5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVudGVkRm9udERhdGEuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgXApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQkocmV2aXNpb24gOTA4MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJ
KHdvcmtpbmcgY29weSkKQEAgLTg1NSw3ICs4NTUsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGguaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oJywKLSAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkSW50UmVjdC5oJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvU1ZHR2x5cGguaCcsCkBAIC0zOTczLDcgKzM5NzMsNyBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9QYXR0ZXJuLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Um91bmRlZEludFJlY3QuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9Sb3Vu
ZGVkUmVjdC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZv
bnREYXRhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVudGVkRm9u
dERhdGEuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAn
LApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCShyZXZpc2lvbiA5MDgyMikKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUub3JkZXIJKHdvcmtpbmcgY29weSkKQEAgLTUyMTAsMTQgKzUyMTAsMTQgQEAg
X19aTjdXZWJDb3JlMjBSZW5kZXJCb3hNb2RlbE9iamVjdDExcGFpbgogX19aTjdXZWJDb3JlMjBS
ZW5kZXJCb3hNb2RlbE9iamVjdDE5cGFpbnROaW5lUGllY2VJbWFnZUVQTlNfMTVHcmFwaGljc0Nv
bnRleHRFUktOU183SW50UmVjdEVQS05TXzExUmVuZGVyU3R5bGVFUktOU18xNE5pbmVQaWVjZUlt
YWdlRU5TXzE3Q29tcG9zaXRlT3BlcmF0b3JFCiBfX1pOSzdXZWJDb3JlMjBSZW5kZXJCb3hNb2Rl
bE9iamVjdDE3Z2V0Qm9yZGVyRWRnZUluZm9FUE5TXzEwQm9yZGVyRWRnZUViYgogX19aTks3V2Vi
Q29yZTExUmVuZGVyU3R5bGUxOWdldFJvdW5kZWRCb3JkZXJGb3JFUktOU183SW50UmVjdEViYgot
X19aTjdXZWJDb3JlMTRSb3VuZGVkSW50UmVjdEMxRVJLTlNfN0ludFJlY3RFUktOUzBfNVJhZGlp
RQorX19aTjdXZWJDb3JlMTRSb3VuZGVkUmVjdEMxRVJLTlNfN0ludFJlY3RFUktOUzBfNVJhZGlp
RQogX19aTks3V2ViQ29yZTExUmVuZGVyU3R5bGUyNGdldFJvdW5kZWRJbm5lckJvcmRlckZvckVS
S05TXzdJbnRSZWN0RWJiCiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJTdHlsZTI0Z2V0Um91bmRlZElu
bmVyQm9yZGVyRm9yRVJLTlNfN0ludFJlY3RFaWlpaWJiCiBfX1pOSzdXZWJDb3JlMTVHcmFwaGlj
c0NvbnRleHQ2Z2V0Q1RNRXYKIF9fWk43V2ViQ29yZTE1QWZmaW5lVHJhbnNmb3JtQzFFZGRkZGRk
Ci1fX1pOSzdXZWJDb3JlMTRSb3VuZGVkSW50UmVjdDVSYWRpaTZpc1plcm9FdgotX19aTjdXZWJD
b3JlMjBSZW5kZXJCb3hNb2RlbE9iamVjdDE2cGFpbnRCb3JkZXJTaWRlc0VQTlNfMTVHcmFwaGlj
c0NvbnRleHRFUEtOU18xMVJlbmRlclN0eWxlRVJLTlNfMTRSb3VuZGVkSW50UmVjdEVTOF9QS05T
XzEwQm9yZGVyRWRnZUVqTlNfMjRCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2VFYmJiUEtOU181Q29s
b3JFCi1fX1pON1dlYkNvcmUyMFJlbmRlckJveE1vZGVsT2JqZWN0MThwYWludE9uZUJvcmRlclNp
ZGVFUE5TXzE1R3JhcGhpY3NDb250ZXh0RVBLTlNfMTFSZW5kZXJTdHlsZUVSS05TXzE0Um91bmRl
ZEludFJlY3RFUzhfUktOU183SW50UmVjdEVOU183Qm94U2lkZUVTQ19TQ19QS05TXzEwQm9yZGVy
RWRnZUVQS05TXzRQYXRoRU5TXzI0QmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlRWJiYlBLTlNfNUNv
bG9yRQorX19aTks3V2ViQ29yZTE0Um91bmRlZFJlY3Q1UmFkaWk2aXNaZXJvRXYKK19fWk43V2Vi
Q29yZTIwUmVuZGVyQm94TW9kZWxPYmplY3QxNnBhaW50Qm9yZGVyU2lkZXNFUE5TXzE1R3JhcGhp
Y3NDb250ZXh0RVBLTlNfMTFSZW5kZXJTdHlsZUVSS05TXzE0Um91bmRlZFJlY3RFUzhfUEtOU18x
MEJvcmRlckVkZ2VFak5TXzI0QmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlRWJiYlBLTlNfNUNvbG9y
RQorX19aTjdXZWJDb3JlMjBSZW5kZXJCb3hNb2RlbE9iamVjdDE4cGFpbnRPbmVCb3JkZXJTaWRl
RVBOU18xNUdyYXBoaWNzQ29udGV4dEVQS05TXzExUmVuZGVyU3R5bGVFUktOU18xNFJvdW5kZWRS
ZWN0RVM4X1JLTlNfN0ludFJlY3RFTlNfN0JveFNpZGVFU0NfU0NfUEtOU18xMEJvcmRlckVkZ2VF
UEtOU180UGF0aEVOU18yNEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZUViYmJQS05TXzVDb2xvckUK
IF9fWk43V2ViQ29yZUwxN2pvaW5SZXF1aXJlc01pdHJlRU5TXzdCb3hTaWRlRVMwX1BLTlNfMTBC
b3JkZXJFZGdlRWIKIF9fWk43V2ViQ29yZTEyUmVuZGVyT2JqZWN0MThkcmF3TGluZUZvckJveFNp
ZGVFUE5TXzE1R3JhcGhpY3NDb250ZXh0RWlpaWlOU183Qm94U2lkZUVOU181Q29sb3JFTlNfMTJF
Qm9yZGVyU3R5bGVFaWliCiBfX1pOSzdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxNXNob3VsZEFu
dGlhbGlhc0V2CkBAIC01NzU1LDcgKzU3NTUsNyBAQCBfX1pOSzdXZWJDb3JlOVJlbmRlckJveDI4
Y29tcHV0ZVJlcGxhY2VkCiBfX1pOSzdXZWJDb3JlNUltYWdlMTdoYXNSZWxhdGl2ZUhlaWdodEV2
CiBfX1pOSzdXZWJDb3JlOVJlbmRlckJveDI3Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoRWIK
IF9fWk43V2ViQ29yZTlSZW5kZXJCb3gyNnJlcGFpbnREdXJpbmdMYXlvdXRJZk1vdmVkRVJLTlNf
N0ludFJlY3RFCi1fX1pOSzdXZWJDb3JlMTRSb3VuZGVkSW50UmVjdDEyaXNSZW5kZXJhYmxlRXYK
K19fWk5LN1dlYkNvcmUxNFJvdW5kZWRSZWN0MTJpc1JlbmRlcmFibGVFdgogX19aTjdXZWJDb3Jl
MTFSZW5kZXJJbWFnZTEzcGFpbnRJbnRvUmVjdEVQTlNfMTVHcmFwaGljc0NvbnRleHRFUktOU183
SW50UmVjdEUKIF9fWk43V2ViQ29yZTIwUmVuZGVyQm94TW9kZWxPYmplY3QyM3Nob3VsZFBhaW50
QXRMb3dRdWFsaXR5RVBOU18xNUdyYXBoaWNzQ29udGV4dEVQTlNfNUltYWdlRVBLdlJLTlNfN0lu
dFNpemVFCiBfX1pON1dlYkNvcmUyMkltYWdlUXVhbGl0eUNvbnRyb2xsZXIyM3Nob3VsZFBhaW50
QXRMb3dRdWFsaXR5RVBOU18xNUdyYXBoaWNzQ29udGV4dEVQTlNfMjBSZW5kZXJCb3hNb2RlbE9i
amVjdEVQTlNfNUltYWdlRVBLdlJLTlNfN0ludFNpemVFCkBAIC05NzkyLDE2ICs5NzkyLDE2IEBA
IF9fWk43V2ViQ29yZTExTGF5b3V0U3RhdGVDMkVQTlNfMTJSZW5kZXIKIF9fWk43V2ViQ29yZTEx
UmVuZGVyU3R5bGU4c2V0UmlnaHRFTlNfNkxlbmd0aEUKIF9fWk5LN1dlYkNvcmUxMFNoYWRvd0Rh
dGExOWFkanVzdFJlY3RGb3JTaGFkb3dFUk5TXzdJbnRSZWN0RWkKIF9fWk43V2ViQ29yZTEwU2hh
ZG93Qmx1ckMxRVJLTlNfOUZsb2F0U2l6ZUVTM19SS05TXzVDb2xvckVOU18xMENvbG9yU3BhY2VF
Ci1fX1pON1dlYkNvcmUxMFNoYWRvd0JsdXIxNGRyYXdSZWN0U2hhZG93RVBOU18xNUdyYXBoaWNz
Q29udGV4dEVSS05TXzlGbG9hdFJlY3RFUktOU18xNFJvdW5kZWRJbnRSZWN0NVJhZGlpRQorX19a
TjdXZWJDb3JlMTBTaGFkb3dCbHVyMTRkcmF3UmVjdFNoYWRvd0VQTlNfMTVHcmFwaGljc0NvbnRl
eHRFUktOU185RmxvYXRSZWN0RVJLTlNfMTRSb3VuZGVkUmVjdDVSYWRpaUUKIF9fWk5LN1dlYkNv
cmUxNUdyYXBoaWNzQ29udGV4dDEwY2xpcEJvdW5kc0V2CiBfX1pON1dlYkNvcmUxMFNoYWRvd0Js
dXIyNmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0RVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05T
XzlGbG9hdFJlY3RFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTEwU2hhZG93Qmx1cjE2YWRq
dXN0Qmx1clJhZGl1c0VQTlNfMTVHcmFwaGljc0NvbnRleHRFCi1fX1pON1dlYkNvcmUxMFNoYWRv
d0JsdXIyNGRyYXdSZWN0U2hhZG93V2l0aFRpbGluZ0VQTlNfMTVHcmFwaGljc0NvbnRleHRFUktO
U185RmxvYXRSZWN0RVJLTlNfMTRSb3VuZGVkSW50UmVjdDVSYWRpaUVSS05TXzdJbnRTaXplRVND
XworX19aTjdXZWJDb3JlMTBTaGFkb3dCbHVyMjRkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmdFUE5T
XzE1R3JhcGhpY3NDb250ZXh0RVJLTlNfOUZsb2F0UmVjdEVSS05TXzE0Um91bmRlZFJlY3Q1UmFk
aWlFUktOU183SW50U2l6ZUVTQ18KIF9fWk43V2ViQ29yZTEzU2NyYXRjaEJ1ZmZlcjE2Z2V0U2Ny
YXRjaEJ1ZmZlckVSS05TXzdJbnRTaXplRQotX19aTks3V2ViQ29yZTEzU2NyYXRjaEJ1ZmZlcjE3
bWF0Y2hlc0xhc3RTaGFkb3dFUktOU185RmxvYXRTaXplRVJLTlNfNUNvbG9yRU5TXzEwQ29sb3JT
cGFjZUVSS05TXzlGbG9hdFJlY3RFUktOU18xNFJvdW5kZWRJbnRSZWN0NVJhZGlpRQorX19aTks3
V2ViQ29yZTEzU2NyYXRjaEJ1ZmZlcjE3bWF0Y2hlc0xhc3RTaGFkb3dFUktOU185RmxvYXRTaXpl
RVJLTlNfNUNvbG9yRU5TXzEwQ29sb3JTcGFjZUVSS05TXzlGbG9hdFJlY3RFUktOU18xNFJvdW5k
ZWRSZWN0NVJhZGlpRQogX19aTjdXZWJDb3JlMTBTaGFkb3dCbHVyMTZibHVyU2hhZG93QnVmZmVy
RVJLTlNfN0ludFNpemVFCiBfX1pON1dlYkNvcmUxMFNoYWRvd0JsdXIxNGJsdXJMYXllckltYWdl
RVBoUktOU183SW50U2l6ZUVpCi1fX1pON1dlYkNvcmUxMFNoYWRvd0JsdXIxNWRyYXdMYXllclBp
ZWNlc0VQTlNfMTVHcmFwaGljc0NvbnRleHRFUktOU185RmxvYXRSZWN0RVJLTlNfMTRSb3VuZGVk
SW50UmVjdDVSYWRpaUVSS05TXzdJbnRTaXplRVNDX05TMF8xNVNoYWRvd0RpcmVjdGlvbkUKK19f
Wk43V2ViQ29yZTEwU2hhZG93Qmx1cjE1ZHJhd0xheWVyUGllY2VzRVBOU18xNUdyYXBoaWNzQ29u
dGV4dEVSS05TXzlGbG9hdFJlY3RFUktOU18xNFJvdW5kZWRSZWN0NVJhZGlpRVJLTlNfN0ludFNp
emVFU0NfTlMwXzE1U2hhZG93RGlyZWN0aW9uRQogX19aTjdXZWJDb3JlNVRpbWVySU5TXzEzU2Ny
YXRjaEJ1ZmZlckVFNWZpcmVkRXYKIF9fWk43V2ViQ29yZTEzU2NyYXRjaEJ1ZmZlcjEwdGltZXJG
aXJlZEVQTlNfNVRpbWVySVMwX0VFCiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QyN29mZnNl
dEZyb21BbmNlc3RvckNvbnRhaW5lckVQUzBfCkBAIC0xMTIzNyw3ICsxMTIzNyw3IEBAIF9fWk5L
N1dlYkNvcmUxN0hUTUxPYmplY3RFbGVtZW50MjRpbWFnZVMKIF9fWk43V2ViQ29yZTE3SFRNTFBs
dWdJbkVsZW1lbnQxOWRlZmF1bHRFdmVudEhhbmRsZXJFUE5TXzVFdmVudEUKIF9fWk5LN1dlYkNv
cmUxNkhUTUxFbGVtZW50U3RhY2sxM2luQnV0dG9uU2NvcGVFUktOU18xM1F1YWxpZmllZE5hbWVF
CiBfX1pON1dlYkNvcmVMMjJkZWNvZGVOb25BU0NJSVNlcXVlbmNlRVBLaGoKLV9fWk43V2ViQ29y
ZTIwUmVuZGVyQm94TW9kZWxPYmplY3QyMWNsaXBCb3JkZXJTaWRlUG9seWdvbkVQTlNfMTVHcmFw
aGljc0NvbnRleHRFUktOU18xNFJvdW5kZWRJbnRSZWN0RVM1X05TXzdCb3hTaWRlRWJiCitfX1pO
N1dlYkNvcmUyMFJlbmRlckJveE1vZGVsT2JqZWN0MjFjbGlwQm9yZGVyU2lkZVBvbHlnb25FUE5T
XzE1R3JhcGhpY3NDb250ZXh0RVJLTlNfMTRSb3VuZGVkUmVjdEVTNV9OU183Qm94U2lkZUViYgog
X19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxN2NsaXBDb252ZXhQb2x5Z29uRW1QS05TXzEw
RmxvYXRQb2ludEViCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDhjbGlwUGF0aEVSS05T
XzRQYXRoRU5TXzhXaW5kUnVsZUUKIF9fWk4zV1RGOUhhc2hUYWJsZUlQS043V2ViQ29yZTE0U2lt
cGxlRm9udERhdGFFUzRfTlNfMTdJZGVudGl0eUV4dHJhY3RvcklTNF9FRU5TXzdQdHJIYXNoSVM0
X0VFTlNfMTBIYXNoVHJhaXRzSVM0X0VFU0FfRTNhZGRJUzRfUzRfTlNfMjJJZGVudGl0eUhhc2hU
cmFuc2xhdG9ySVM0X1M0X1M4X0VFRUVTdDRwYWlySU5TXzE3SGFzaFRhYmxlSXRlcmF0b3JJUzRf
UzRfUzZfUzhfU0FfU0FfRUViRVJLVF9SS1QwXwpAQCAtMTQyNjMsMTAgKzE0MjYzLDEwIEBAIF9f
Wk43V2ViQ29yZTE2SFRNTEltYWdlRWxlbWVudDI2d2lsbE1vdmUKIF9fWk43V2ViQ29yZTExSW1h
Z2VMb2FkZXIzM2VsZW1lbnRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudEV2CiBfX1pOSzdXZWJD
b3JlMTVSZW5kZXJUYWJsZUNlbGwyMGNlbGxCYXNlbGluZVBvc2l0aW9uRXYKIF9fWk5LN1dlYkNv
cmUxMVJlbmRlckJsb2NrMjBmaXJzdExpbmVCb3hCYXNlbGluZUV2Ci1fX1pON1dlYkNvcmUxNFJv
dW5kZWRJbnRSZWN0NVJhZGlpNXNjYWxlRWYKLV9fWk43V2ViQ29yZTE0Um91bmRlZEludFJlY3Qx
OWluY2x1ZGVMb2dpY2FsRWRnZXNFUktOUzBfNVJhZGlpRWJiYgotX19aTjdXZWJDb3JlMTRSb3Vu
ZGVkSW50UmVjdDVSYWRpaTZleHBhbmRFaWlpaQotX19aTjdXZWJDb3JlNFBhdGgxNGFkZFJvdW5k
ZWRSZWN0RVJLTlNfMTRSb3VuZGVkSW50UmVjdEUKK19fWk43V2ViQ29yZTE0Um91bmRlZFJlY3Q1
UmFkaWk1c2NhbGVFZgorX19aTjdXZWJDb3JlMTRSb3VuZGVkUmVjdDE5aW5jbHVkZUxvZ2ljYWxF
ZGdlc0VSS05TMF81UmFkaWlFYmJiCitfX1pON1dlYkNvcmUxNFJvdW5kZWRSZWN0NVJhZGlpNmV4
cGFuZEVpaWlpCitfX1pON1dlYkNvcmU0UGF0aDE0YWRkUm91bmRlZFJlY3RFUktOU18xNFJvdW5k
ZWRSZWN0RQogX19aTjdXZWJDb3JlNFBhdGgxNGFkZFJvdW5kZWRSZWN0RVJLTlNfOUZsb2F0UmVj
dEVSS05TXzlGbG9hdFNpemVFUzZfUzZfUzZfCiBfX1pON1dlYkNvcmUyMWNyZWF0ZUxpc3RJdGVt
RWxlbWVudEVQTlNfOERvY3VtZW50RQogX19aTjdXZWJDb3JlMTNIVE1MTElFbGVtZW50NmNyZWF0
ZUVQTlNfOERvY3VtZW50RQpAQCAtMTQzNjYsMTMgKzE0MzY2LDEzIEBAIF9fWk4zV1RGOUhhc2hU
YWJsZUlQS043V2ViQ29yZTEzSW5saW5lVGUKIF9fWk4zV1RGOUhhc2hUYWJsZUlQS043V2ViQ29y
ZTEzSW5saW5lVGV4dEJveEVTdDRwYWlySVM0X05TMV83SW50UmVjdEVFTlNfMThQYWlyRmlyc3RF
eHRyYWN0b3JJUzdfRUVOU183UHRySGFzaElTNF9FRU5TXzE0UGFpckhhc2hUcmFpdHNJTlNfMTBI
YXNoVHJhaXRzSVM0X0VFTlNEX0lTNl9FRUVFU0VfRTZsb29rdXBFUktTNF8KIF9fWk4zV1RGOUhh
c2hUYWJsZUlQS043V2ViQ29yZTEzSW5saW5lVGV4dEJveEVTdDRwYWlySVM0X05TMV83SW50UmVj
dEVFTlNfMThQYWlyRmlyc3RFeHRyYWN0b3JJUzdfRUVOU183UHRySGFzaElTNF9FRU5TXzE0UGFp
ckhhc2hUcmFpdHNJTlNfMTBIYXNoVHJhaXRzSVM0X0VFTlNEX0lTNl9FRUVFU0VfRTZyZWhhc2hF
aQogX19aTks3V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MjNzaGFkb3dzSWdub3JlVHJhbnNmb3Jt
c0V2Ci1fX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDE4Y2xpcE91dFJvdW5kZWRSZWN0RVJL
TlNfMTRSb3VuZGVkSW50UmVjdEUKK19fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MThjbGlw
T3V0Um91bmRlZFJlY3RFUktOU18xNFJvdW5kZWRSZWN0RQogX19aTjdXZWJDb3JlMTVHcmFwaGlj
c0NvbnRleHQ3Y2xpcE91dEVSS05TXzRQYXRoRQotX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRl
eHQxNWZpbGxSb3VuZGVkUmVjdEVSS05TXzE0Um91bmRlZEludFJlY3RFUktOU181Q29sb3JFTlNf
MTBDb2xvclNwYWNlRQorX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxNWZpbGxSb3VuZGVk
UmVjdEVSS05TXzE0Um91bmRlZFJlY3RFUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQogX19a
TjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxNWZpbGxSb3VuZGVkUmVjdEVSS05TXzdJbnRSZWN0
RVJLTlNfN0ludFNpemVFUzZfUzZfUzZfUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQogX19a
TjdXZWJDb3JlTDM5YmFja2dyb3VuZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlRVBOU18x
NUdyYXBoaWNzQ29udGV4dEVSS05TXzdJbnRSZWN0RU5TXzI0QmFja2dyb3VuZEJsZWVkQXZvaWRh
bmNlRQogX19aTjdXZWJDb3JlMjBSZW5kZXJCb3hNb2RlbE9iamVjdDI0Z2V0QmFja2dyb3VuZFJv
dW5kZWRSZWN0RVJLTlNfN0ludFJlY3RFUE5TXzEzSW5saW5lRmxvd0JveEVpaWJiCi1fX1pON1dl
YkNvcmUxNUdyYXBoaWNzQ29udGV4dDE4YWRkUm91bmRlZFJlY3RDbGlwRVJLTlNfMTRSb3VuZGVk
SW50UmVjdEUKK19fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MThhZGRSb3VuZGVkUmVjdENs
aXBFUktOU18xNFJvdW5kZWRSZWN0RQogX19aTjNXVEY5SGFzaFRhYmxlSU43V2ViQ29yZTdJbnRT
aXplRVN0NHBhaXJJUzJfTlNfNlJlZlB0cklOUzFfNUltYWdlRUVFRU5TXzE4UGFpckZpcnN0RXh0
cmFjdG9ySVM3X0VFTlNfN0ludEhhc2hJUzJfRUVOU18xNFBhaXJIYXNoVHJhaXRzSU5TXzEwSGFz
aFRyYWl0c0lTMl9FRU5TRF9JUzZfRUVFRVNFX0UxNmxvb2t1cEZvcldyaXRpbmdJUzJfTlNfMjJJ
ZGVudGl0eUhhc2hUcmFuc2xhdG9ySVMyX1M3X1NCX0VFRUVTM19JUFM3X2JFUktUXwogX19aTjNX
VEY5SGFzaFRhYmxlSU43V2ViQ29yZTdJbnRTaXplRVN0NHBhaXJJUzJfTlNfNlJlZlB0cklOUzFf
NUltYWdlRUVFRU5TXzE4UGFpckZpcnN0RXh0cmFjdG9ySVM3X0VFTlNfN0ludEhhc2hJUzJfRUVO
U18xNFBhaXJIYXNoVHJhaXRzSU5TXzEwSGFzaFRyYWl0c0lTMl9FRU5TRF9JUzZfRUVFRVNFX0Uz
YWRkSVMyX1M2X05TXzE3SGFzaE1hcFRyYW5zbGF0b3JJUzdfU0dfU0JfRUVFRVMzX0lOU18xN0hh
c2hUYWJsZUl0ZXJhdG9ySVMyX1M3X1M5X1NCX1NHX1NFX0VFYkVSS1RfUktUMF8KIF9fWk4zV1RG
OUhhc2hUYWJsZUlON1dlYkNvcmU3SW50U2l6ZUVTdDRwYWlySVMyX05TXzZSZWZQdHJJTlMxXzVJ
bWFnZUVFRUVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTN19FRU5TXzdJbnRIYXNoSVMyX0VFTlNf
MTRQYWlySGFzaFRyYWl0c0lOU18xMEhhc2hUcmFpdHNJUzJfRUVOU0RfSVM2X0VFRUVTRV9FNGZp
bmRJUzJfTlNfMjJJZGVudGl0eUhhc2hUcmFuc2xhdG9ySVMyX1M3X1NCX0VFRUVOU18xN0hhc2hU
YWJsZUl0ZXJhdG9ySVMyX1M3X1M5X1NCX1NHX1NFX0VFUktUXwpAQCAtMTQzODAsMTAgKzE0Mzgw
LDEwIEBAIF9fWk4zV1RGOUhhc2hUYWJsZUlON1dlYkNvcmU3SW50U2l6ZUVTdDQKIF9fWk4zV1RG
OUhhc2hUYWJsZUlON1dlYkNvcmU3SW50U2l6ZUVTdDRwYWlySVMyX05TXzZSZWZQdHJJTlMxXzVJ
bWFnZUVFRUVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTN19FRU5TXzdJbnRIYXNoSVMyX0VFTlNf
MTRQYWlySGFzaFRyYWl0c0lOU18xMEhhc2hUcmFpdHNJUzJfRUVOU0RfSVM2X0VFRUVTRV9FNnJl
aGFzaEVpCiBfX1pOM1dURjlIYXNoVGFibGVJTjdXZWJDb3JlN0ludFNpemVFU3Q0cGFpcklTMl9O
U182UmVmUHRySU5TMV81SW1hZ2VFRUVFTlNfMThQYWlyRmlyc3RFeHRyYWN0b3JJUzdfRUVOU183
SW50SGFzaElTMl9FRU5TXzE0UGFpckhhc2hUcmFpdHNJTlNfMTBIYXNoVHJhaXRzSVMyX0VFTlNE
X0lTNl9FRUVFU0VfRTZyZW1vdmVFUFM3XwogX19aTjNXVEY5SGFzaFRhYmxlSU43V2ViQ29yZTdJ
bnRTaXplRVN0NHBhaXJJUzJfTlNfNlJlZlB0cklOUzFfNUltYWdlRUVFRU5TXzE4UGFpckZpcnN0
RXh0cmFjdG9ySVM3X0VFTlNfN0ludEhhc2hJUzJfRUVOU18xNFBhaXJIYXNoVHJhaXRzSU5TXzEw
SGFzaFRyYWl0c0lTMl9FRU5TRF9JUzZfRUVFRVNFX0VEMUV2Ci1fX1pON1dlYkNvcmUxNUdyYXBo
aWNzQ29udGV4dDIzZmlsbFJlY3RXaXRoUm91bmRlZEhvbGVFUktOU183SW50UmVjdEVSS05TXzE0
Um91bmRlZEludFJlY3RFUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQotX19aTjdXZWJDb3Jl
MTBTaGFkb3dCbHVyMTVkcmF3SW5zZXRTaGFkb3dFUE5TXzE1R3JhcGhpY3NDb250ZXh0RVJLTlNf
OUZsb2F0UmVjdEVTNV9SS05TXzE0Um91bmRlZEludFJlY3Q1UmFkaWlFCi1fX1pON1dlYkNvcmUx
MFNoYWRvd0JsdXIyNWRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmdFUE5TXzE1R3JhcGhpY3NDb250
ZXh0RVJLTlNfOUZsb2F0UmVjdEVTNV9SS05TXzE0Um91bmRlZEludFJlY3Q1UmFkaWlFUktOU183
SW50U2l6ZUVTQ18KLV9fWk5LN1dlYkNvcmUxM1NjcmF0Y2hCdWZmZXIyMm1hdGNoZXNMYXN0SW5z
ZXRTaGFkb3dFUktOU185RmxvYXRTaXplRVJLTlNfNUNvbG9yRU5TXzEwQ29sb3JTcGFjZUVSS05T
XzlGbG9hdFJlY3RFU0FfUktOU18xNFJvdW5kZWRJbnRSZWN0NVJhZGlpRQorX19aTjdXZWJDb3Jl
MTVHcmFwaGljc0NvbnRleHQyM2ZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlRVJLTlNfN0ludFJlY3RF
UktOU18xNFJvdW5kZWRSZWN0RVJLTlNfNUNvbG9yRU5TXzEwQ29sb3JTcGFjZUUKK19fWk43V2Vi
Q29yZTEwU2hhZG93Qmx1cjE1ZHJhd0luc2V0U2hhZG93RVBOU18xNUdyYXBoaWNzQ29udGV4dEVS
S05TXzlGbG9hdFJlY3RFUzVfUktOU18xNFJvdW5kZWRSZWN0NVJhZGlpRQorX19aTjdXZWJDb3Jl
MTBTaGFkb3dCbHVyMjVkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nRVBOU18xNUdyYXBoaWNzQ29u
dGV4dEVSS05TXzlGbG9hdFJlY3RFUzVfUktOU18xNFJvdW5kZWRSZWN0NVJhZGlpRVJLTlNfN0lu
dFNpemVFU0NfCitfX1pOSzdXZWJDb3JlMTNTY3JhdGNoQnVmZmVyMjJtYXRjaGVzTGFzdEluc2V0
U2hhZG93RVJLTlNfOUZsb2F0U2l6ZUVSS05TXzVDb2xvckVOU18xMENvbG9yU3BhY2VFUktOU185
RmxvYXRSZWN0RVNBX1JLTlNfMTRSb3VuZGVkUmVjdDVSYWRpaUUKIF9fWk43V2ViQ29yZTE0R2Vu
ZXJhdGVkSW1hZ2UxMWRyYXdQYXR0ZXJuRVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05TXzlGbG9h
dFJlY3RFUktOU18xNUFmZmluZVRyYW5zZm9ybUVSS05TXzEwRmxvYXRQb2ludEVOU18xMENvbG9y
U3BhY2VFTlNfMTdDb21wb3NpdGVPcGVyYXRvckVTNV8KIF9fWk43V2ViQ29yZThHcmFkaWVudDMx
YWRqdXN0UGFyYW1ldGVyc0ZvclRpbGVkRHJhd2luZ0VSTlNfN0ludFNpemVFUk5TXzlGbG9hdFJl
Y3RFCiBfX1pON1dlYkNvcmUxMUltYWdlQnVmZmVyMTFkcmF3UGF0dGVybkVQTlNfMTVHcmFwaGlj
c0NvbnRleHRFUktOU185RmxvYXRSZWN0RVJLTlNfMTVBZmZpbmVUcmFuc2Zvcm1FUktOU18xMEZs
b2F0UG9pbnRFTlNfMTBDb2xvclNwYWNlRU5TXzE3Q29tcG9zaXRlT3BlcmF0b3JFUzVfCkBAIC0x
NjY5Miw3ICsxNjY5Miw3IEBAIF9fWk5LM1dURjlIYXNoVGFibGVJUEtON1dlYkNvcmUxM0lubGlu
ZVQKIF9fWk43V2ViQ29yZTEzSW5saW5lRmxvd0JveDI1ZmxpcExpbmVzSW5CbG9ja0RpcmVjdGlv
bkVpaQogX19aTjdXZWJDb3JlMTZmaW5kSW50ZXJzZWN0aW9uRVJLTlNfMTBGbG9hdFBvaW50RVMy
X1MyX1MyX1JTMF8KIF9fWk43V2ViQ29yZTIwUmVuZGVyQm94TW9kZWxPYmplY3QxOWRyYXdCb3hT
aWRlRnJvbVBhdGhFUE5TXzE1R3JhcGhpY3NDb250ZXh0RVJLTlNfN0ludFJlY3RFUktOU180UGF0
aEVQS05TXzEwQm9yZGVyRWRnZUVmZk5TXzdCb3hTaWRlRVBLTlNfMTFSZW5kZXJTdHlsZUVOU181
Q29sb3JFTlNfMTJFQm9yZGVyU3R5bGVFTlNfMjRCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2VFYmIK
LV9fWk43V2ViQ29yZTIwUmVuZGVyQm94TW9kZWxPYmplY3QyN3BhaW50VHJhbnNsdWNlbnRCb3Jk
ZXJTaWRlc0VQTlNfMTVHcmFwaGljc0NvbnRleHRFUEtOU18xMVJlbmRlclN0eWxlRVJLTlNfMTRS
b3VuZGVkSW50UmVjdEVTOF9QS05TXzEwQm9yZGVyRWRnZUVOU18yNEJhY2tncm91bmRCbGVlZEF2
b2lkYW5jZUViYmIKK19fWk43V2ViQ29yZTIwUmVuZGVyQm94TW9kZWxPYmplY3QyN3BhaW50VHJh
bnNsdWNlbnRCb3JkZXJTaWRlc0VQTlNfMTVHcmFwaGljc0NvbnRleHRFUEtOU18xMVJlbmRlclN0
eWxlRVJLTlNfMTRSb3VuZGVkUmVjdEVTOF9QS05TXzEwQm9yZGVyRWRnZUVOU18yNEJhY2tncm91
bmRCbGVlZEF2b2lkYW5jZUViYmIKIF9fWk4zV1RGOUhhc2hUYWJsZUlQTlNfMTVMaXN0SGFzaFNl
dE5vZGVJUE43V2ViQ29yZTExUmVuZGVyQmxvY2sxNEZsb2F0aW5nT2JqZWN0RUxtNEVFRVM3X05T
XzE3SWRlbnRpdHlFeHRyYWN0b3JJUzdfRUVOU18yOExpc3RIYXNoU2V0Tm9kZUhhc2hGdW5jdGlv
bnNJUzVfTG00RU5TM18yN0Zsb2F0aW5nT2JqZWN0SGFzaEZ1bmN0aW9uc0VFRU5TXzEwSGFzaFRy
YWl0c0lTN19FRVNFX0UxNmxvb2t1cEZvcldyaXRpbmdFUktTN18KIF9fWk4zV1RGOUhhc2hUYWJs
ZUlQTlNfMTVMaXN0SGFzaFNldE5vZGVJUE43V2ViQ29yZTExUmVuZGVyQmxvY2sxNEZsb2F0aW5n
T2JqZWN0RUxtNEVFRVM3X05TXzE3SWRlbnRpdHlFeHRyYWN0b3JJUzdfRUVOU18yOExpc3RIYXNo
U2V0Tm9kZUhhc2hGdW5jdGlvbnNJUzVfTG00RU5TM18yN0Zsb2F0aW5nT2JqZWN0SGFzaEZ1bmN0
aW9uc0VFRU5TXzEwSGFzaFRyYWl0c0lTN19FRVNFX0UzYWRkSVM1X1BOU18yNExpc3RIYXNoU2V0
Tm9kZUFsbG9jYXRvcklTNV9MbTRFRUVOU18yMUxpc3RIYXNoU2V0VHJhbnNsYXRvcklTNV9MbTRF
U0JfRUVFRVN0NHBhaXJJTlNfMTdIYXNoVGFibGVJdGVyYXRvcklTN19TN19TOV9TQ19TRV9TRV9F
RWJFUktUX1JLVDBfCiBfX1pOM1dURjlIYXNoVGFibGVJUE5TXzE1TGlzdEhhc2hTZXROb2RlSVBO
N1dlYkNvcmUxMVJlbmRlckJsb2NrMTRGbG9hdGluZ09iamVjdEVMbTRFRUVTN19OU18xN0lkZW50
aXR5RXh0cmFjdG9ySVM3X0VFTlNfMjhMaXN0SGFzaFNldE5vZGVIYXNoRnVuY3Rpb25zSVM1X0xt
NEVOUzNfMjdGbG9hdGluZ09iamVjdEhhc2hGdW5jdGlvbnNFRUVOU18xMEhhc2hUcmFpdHNJUzdf
RUVTRV9FNGZpbmRJUE5TMl85UmVuZGVyQm94RU5TXzI4TGlzdEhhc2hTZXRUcmFuc2xhdG9yQWRh
cHRlcklTNV9MbTRFU0lfTlMzXzI4RmxvYXRpbmdPYmplY3RIYXNoVHJhbnNsYXRvckVFRUVFTlNf
MTdIYXNoVGFibGVJdGVyYXRvcklTN19TN19TOV9TQ19TRV9TRV9FRVJLVF8KQEAgLTE3MTE1LDcg
KzE3MTE1LDcgQEAgX19aTks3V2ViQ29yZTExUmVuZGVyU3R5bGUxNWJvcmRlckxlZnRXaQogX19a
Tks3V2ViQ29yZTExUmVuZGVyU3R5bGUxN2JvcmRlckJvdHRvbVdpZHRoRXYKIF9fWk43V2ViQ29y
ZTExUmVuZGVyU3R5bGUxMnNldEJvcmRlckZpdEVOU18xMEVCb3JkZXJGaXRFCiBfX1pOSzdXZWJD
b3JlMTFSZW5kZXJCbG9jazE4YWRqdXN0Rm9yQm9yZGVyRml0RWlSaVMxXwotX19aTjdXZWJDb3Jl
MTBTaGFkb3dCbHVyMjdkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmdFUE5TXzE1R3JhcGhpY3ND
b250ZXh0RVJLTlNfOUZsb2F0UmVjdEVSS05TXzE0Um91bmRlZEludFJlY3Q1UmFkaWlFUktOU183
SW50UmVjdEUKK19fWk43V2ViQ29yZTEwU2hhZG93Qmx1cjI3ZHJhd1JlY3RTaGFkb3dXaXRob3V0
VGlsaW5nRVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05TXzlGbG9hdFJlY3RFUktOU18xNFJvdW5k
ZWRSZWN0NVJhZGlpRVJLTlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmUxMFNoYWRvd0JsdXIxNmRy
YXdTaGFkb3dCdWZmZXJFUE5TXzE1R3JhcGhpY3NDb250ZXh0RQogX19aTks3V2ViQ29yZTRQYXRo
Nmxlbmd0aEV2CiBfX1pON1dlYkNvcmUxOFBhdGhUcmF2ZXJzYWxTdGF0ZUMxRU5TMF8xOVBhdGhU
cmF2ZXJzYWxBY3Rpb25FCkBAIC0xNzEzMSw3ICsxNzEzMSw3IEBAIF9fWk4zV1RGNlZlY3Rvcklk
TG0wRUUxNGV4cGFuZENhcGFjaXR5RW0KIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTFz
ZXRMaW5lRGFzaEVSS04zV1RGNlZlY3RvcklkTG0wRUVFZgogX19aTjdXZWJDb3JlMTNJbmxpbmVG
bG93Qm94OXBhaW50TWFza0VSTlNfOVBhaW50SW5mb0VpaQogX19aTjdXZWJDb3JlOFNWR0ltYWdl
MjZuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZUV2Ci1fX1pON1dlYkNvcmUxMFNoYWRvd0JsdXIy
OGRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmdFUE5TXzE1R3JhcGhpY3NDb250ZXh0RVJLTlNf
OUZsb2F0UmVjdEVTNV9SS05TXzE0Um91bmRlZEludFJlY3Q1UmFkaWlFUktOU183SW50UmVjdEUK
K19fWk43V2ViQ29yZTEwU2hhZG93Qmx1cjI4ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZ0VQ
TlNfMTVHcmFwaGljc0NvbnRleHRFUktOU185RmxvYXRSZWN0RVM1X1JLTlNfMTRSb3VuZGVkUmVj
dDVSYWRpaUVSS05TXzdJbnRSZWN0RQogX19aTjdXZWJDb3JlMTFSZW5kZXJTdHlsZTEyc2V0TWF4
SGVpZ2h0RU5TXzZMZW5ndGhFCiBfX1pON1dlYkNvcmUxM0NTU1N0eWxlU2hlZXQxOGRldGVybWlu
ZU5hbWVzcGFjZUVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTBTdHlsZUlt
YWdlMTNlcnJvck9jY3VycmVkRXYKQEAgLTE5NDE2LDcgKzE5NDE2LDcgQEAgX19aTks3V2ViQ29y
ZTE3U3BpbkJ1dHRvbkVsZW1lbnQxOWlzU3BpbgogX19aTks3V2ViQ29yZTE3U3BpbkJ1dHRvbkVs
ZW1lbnQyMGlzRW5hYmxlZEZvcm1Db250cm9sRXYKIF9fWk5LN1dlYkNvcmUxN1NwaW5CdXR0b25F
bGVtZW50MjFpc1JlYWRPbmx5Rm9ybUNvbnRyb2xFdgogX19aTjdXZWJDb3JlMTRSZW5kZXJUaGVt
ZU1hYzE2cGFpbnRTbGlkZXJUcmFja0VQTlNfMTJSZW5kZXJPYmplY3RFUktOU185UGFpbnRJbmZv
RVJLTlNfN0ludFJlY3RFCi1fX1pON1dlYkNvcmUxNFJvdW5kZWRJbnRSZWN0QzFFUktOU183SW50
UmVjdEVSS05TXzdJbnRTaXplRVM2X1M2X1M2XworX19aTjdXZWJDb3JlMTRSb3VuZGVkUmVjdEMx
RVJLTlNfN0ludFJlY3RFUktOU183SW50U2l6ZUVTNl9TNl9TNl8KIF9fWk43V2ViQ29yZUwyNFRy
YWNrR3JhZGllbnRJbnRlcnBvbGF0ZUVQdlBLZFBkCiBfX1pON1dlYkNvcmUxNFJlbmRlclRoZW1l
TWFjMTZwYWludFNsaWRlclRodW1iRVBOU18xMlJlbmRlck9iamVjdEVSS05TXzlQYWludEluZm9F
UktOU183SW50UmVjdEUKIF9fWk5LN1dlYkNvcmUxNFJlbmRlclRoZW1lTWFjMjFzbGlkZXJUaHVt
Ykhvcml6b250YWxFdgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDkwODIyKQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTk5OSw3ICs5OTksNyBA
QCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0dGVybi5jcHAgXAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRJbnRSZWN0
LmNwcCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TVkdHbHlwaC5jcHAg
XApAQCAtMTk5MCw3ICsxOTkwLDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oIFwKLSAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9Sb3VuZGVkSW50UmVjdC5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5o
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmggXAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA5MDgyMikKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0y
NzY1NywxMSArMjc2NTcsMTEgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFJvdW5kZWRJbnRSZWN0LmNwcCIK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xSb3VuZGVkUmVjdC5jcHAi
CiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xSb3VuZGVkSW50UmVjdC5oIgorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXFJvdW5kZWRSZWN0LmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJ
CQkJPEZpbGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDkwODIyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMjk1LDggKzMy
OTUsOCBAQAogCQlBNzE4Nzg5MDBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzE4Nzg4
RjBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJNYWMubW0gKi87IH07CiAJCUE3MUMz
MEI4MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxQzMwQjYxMzgxMjY1RTAw
REJDMzUxIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3Rvci5jcHAgKi87IH07CiAJCUE3MUMzMEI5MTM4
MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MUMzMEI3MTM4MTI2NUUwMERCQzM1MSAv
KiBTaGFkb3dDb250ZW50U2VsZWN0b3IuaCAqLzsgfTsKLQkJQTczRjk1RkUxMkM5N0JGRTAwMzFB
QUY5IC8qIFJvdW5kZWRJbnRSZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkSW50UmVj
dC5jcHAgKi87IH07Ci0JCUE3M0Y5NUZGMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkSW50UmVj
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczRjk1
RkQxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTczRjk1RkUxMkM5N0JGRTAwMzFBQUY5
IC8qIFJvdW5kZWRSZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkUmVjdC5jcHAgKi87
IH07CisJCUE3M0Y5NUZGMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkUmVjdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczRjk1RkQxMkM5N0JGRTAw
MzFBQUY5IC8qIFJvdW5kZWRSZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTc0QzJEM0MxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRl
bnRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNzRDMkQzQjEzODExRTBEMDBGODM1NzIgLyogU2hhZG93Q29udGVudEVsZW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzVFNDk3NjEw
NzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYg
LyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc1RTQ5NzcxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzVFNDk3NTEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcCAqLzsgfTsKQEAgLTk4MjQsOCArOTgyNCw4IEBACiAJCUE3MUE3MEM5MTFBRkIwMjAwMDk4
OUQ2RCAvKiBIVE1MTWV0ZXJFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1M
TWV0ZXJFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxQzMwQjYx
MzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3Rvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFkb3dDb250ZW50U2VsZWN0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzFDMzBCNzEzODEyNjVFMDBEQkMzNTEgLyogU2hh
ZG93Q29udGVudFNlbGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNo
YWRvd0NvbnRlbnRTZWxlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNzNG
OTVGQzEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJlY3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUm91bmRlZEludFJlY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlBNzNGOTVGRDEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJl
Y3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUm91bmRlZEludFJlY3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTczRjk1RkMxMkM5N0JGRTAwMzFBQUY5IC8q
IFJvdW5kZWRSZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJv
dW5kZWRSZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTczRjk1RkQxMkM5
N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRSZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJvdW5kZWRSZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NEMy
RDNCMTM4MTFFMEQwMEY4MzU3MiAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dDb250ZW50RWxlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzVFNDk3NTEw
NzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODA4NSw4ICsxODA4NSw4IEBACiAJCQkJQTg4REQ0
ODYwQjQ2MjlBMzAwQzAyOTkwIC8qIFBhdGhUcmF2ZXJzYWxTdGF0ZS5oICovLAogCQkJCUE4RkE2
RTVDMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCAqLywKIAkJCQlBOEZBNkU1QjBFNENG
REVEMDBENUNGNDkgLyogUGF0dGVybi5oICovLAotCQkJCUE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFG
OSAvKiBSb3VuZGVkSW50UmVjdC5jcHAgKi8sCi0JCQkJQTczRjk1RkQxMkM5N0JGRTAwMzFBQUY5
IC8qIFJvdW5kZWRJbnRSZWN0LmggKi8sCisJCQkJQTczRjk1RkMxMkM5N0JGRTAwMzFBQUY5IC8q
IFJvdW5kZWRSZWN0LmNwcCAqLywKKwkJCQlBNzNGOTVGRDEyQzk3QkZFMDAzMUFBRjkgLyogUm91
bmRlZFJlY3QuaCAqLywKIAkJCQkzNzFGNEZGQjBEMjVFN0YzMDBFQ0UwRDUgLyogU2VnbWVudGVk
Rm9udERhdGEuY3BwICovLAogCQkJCTM3MUY0RkZBMEQyNUU3RjMwMEVDRTBENSAvKiBTZWdtZW50
ZWRGb250RGF0YS5oICovLAogCQkJCTBGM0RENDREMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dC
bHVyLmNwcCAqLywKQEAgLTIyNDU4LDcgKzIyNDU4LDcgQEAKIAkJCQlCQzc0REEzNzEwMTNGM0Y3
MDA3OTg3QUQgLyogUkdCQ29sb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGNUUxMEExNTVB
MDUwMDBBNDIzNCAvKiBSb290SW5saW5lQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFD
OTBFRjg2RDQ3MDA5RDBDQUYgLyogUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlBNzNGOTVGRjEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJlY3QuaCBp
biBIZWFkZXJzICovLAorCQkJCUE3M0Y5NUZGMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkUmVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM2M0EyNDgwRjcxNjQ2NjAwQzA5RDVBIC8qIFJ1bkxv
b3BUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMUYwRDdFMkI4MjAwN0MzOTgzIC8q
IHJ1bnRpbWVfYXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDIxMEQ3RTJCODIwMDdD
Mzk4MyAvKiBydW50aW1lX21ldGhvZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTM2Myw3ICsyNTM2
Myw3IEBACiAJCQkJQkM3NERBMzgxMDEzRjNGNzAwNzk4N0FEIC8qIFJHQkNvbG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE4Q0ZGNUU3MEExNTVBMDUwMDBBNDIzNCAvKiBSb290SW5saW5lQm94
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUM4MEVGODZENDcwMDlEMENBRiAvKiBSb3Rh
dGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTczRjk1RkUxMkM5
N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3
M0Y5NUZFMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkUmVjdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQzYzQTI0OTBGNzE2NDY2MDBDMDlENUEgLyogUnVuTG9vcFRpbWVyQ0YuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUE1NjlEMUUwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXku
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMjAwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRp
bWVfbWV0aG9kLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCShyZXZpc2lvbiA5MDgy
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNs
dWRlICJSb3VuZGVkSW50UmVjdC5oIgorI2luY2x1ZGUgIlJvdW5kZWRSZWN0LmgiCiAjaW5jbHVk
ZSAiVGV4dFJ1bi5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNTU0LDcgKzU1NCw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IEludFJlY3QKIH0KICNlbmRpZgogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkUm91bmRlZFJlY3RDbGlwKGNvbnN0IFJvdW5kZWRJbnRS
ZWN0JiByZWN0KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZFJvdW5kZWRSZWN0Q2xpcChjb25z
dCBSb3VuZGVkUmVjdCYgcmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CkBAIC01NjQsNyArNTY0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFk
ZFJvdW5kZWRSZWN0Q2xpcAogICAgIGNsaXAocGF0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgUm91bmRlZEludFJlY3QmIHJlY3QpCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiBy
ZWN0KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTYyMCwxMyArNjIwLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBG
bG8KICAgICBzZXRDb21wb3NpdGVPcGVyYXRpb24ocHJldmlvdXNPcGVyYXRvcik7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgUm91bmRlZEludFJlY3Qm
IHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVkUmVjdCYgcmVjdCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgZmlsbFJv
dW5kZWRSZWN0KHJlY3QucmVjdCgpLCByZWN0LnJhZGlpKCkudG9wTGVmdCgpLCByZWN0LnJhZGlp
KCkudG9wUmlnaHQoKSwgcmVjdC5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgcmVjdC5yYWRpaSgpLmJv
dHRvbVJpZ2h0KCksIGNvbG9yLCBjb2xvclNwYWNlKTsKIH0KIAogI2lmICFVU0UoQ0cpCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYg
cmVjdCwgY29uc3QgUm91bmRlZEludFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUm91bmRlZFJl
Y3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgJKHJldmlzaW9uIDkwODIyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICBjbGFzcyBJbWFnZUJ1ZmZlcjsKICAg
ICBjbGFzcyBJbnRSZWN0OwotICAgIGNsYXNzIFJvdW5kZWRJbnRSZWN0OworICAgIGNsYXNzIFJv
dW5kZWRSZWN0OwogICAgIGNsYXNzIEtVUkw7CiAgICAgY2xhc3MgU2hhcmVkR3JhcGhpY3NDb250
ZXh0M0Q7CiAgICAgY2xhc3MgVGV4dFJ1bjsKQEAgLTI5OSw4ICsyOTksOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgR2VuZXJh
dG9yJik7CiAgICAgICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29s
b3ImLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAgICAgICAgIHZvaWQgZmlsbFJv
dW5kZWRSZWN0KGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJ
bnRTaXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6
ZSYgYm90dG9tUmlnaHQsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7Ci0gICAgICAgIHZvaWQg
ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRJbnRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xv
clNwYWNlKTsKLSAgICAgICAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBJbnRS
ZWN0JiwgY29uc3QgUm91bmRlZEludFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3Im
LCBDb2xvclNwYWNlKTsKKyAgICAgICAgdm9pZCBmaWxsUm91bmRlZFJlY3QoY29uc3QgUm91bmRl
ZFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgICAgICB2b2lkIGZpbGxSZWN0
V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3QmLCBjb25zdCBSb3VuZGVkUmVjdCYgcm91bmRl
ZEhvbGVSZWN0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwogCiAgICAgICAgIHZvaWQgY2xl
YXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogCkBAIC0zMzAsMTAgKzMzMCwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBjbGlwKGNvbnN0IEludFJlY3QmKTsKICAgICAg
ICAgdm9pZCBjbGlwKGNvbnN0IEZsb2F0UmVjdCYpOwotICAgICAgICB2b2lkIGFkZFJvdW5kZWRS
ZWN0Q2xpcChjb25zdCBSb3VuZGVkSW50UmVjdCYpOworICAgICAgICB2b2lkIGFkZFJvdW5kZWRS
ZWN0Q2xpcChjb25zdCBSb3VuZGVkUmVjdCYpOwogICAgICAgICB2b2lkIGFkZElubmVyUm91bmRl
ZFJlY3RDbGlwKGNvbnN0IEludFJlY3QmLCBpbnQgdGhpY2tuZXNzKTsKICAgICAgICAgdm9pZCBj
bGlwT3V0KGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdm9pZCBjbGlwT3V0Um91bmRlZFJlY3Qo
Y29uc3QgUm91bmRlZEludFJlY3QmKTsKKyAgICAgICAgdm9pZCBjbGlwT3V0Um91bmRlZFJlY3Qo
Y29uc3QgUm91bmRlZFJlY3QmKTsKICAgICAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwg
V2luZFJ1bGUpOwogICAgICAgICB2b2lkIGNsaXBDb252ZXhQb2x5Z29uKHNpemVfdCBudW1Qb2lu
dHMsIGNvbnN0IEZsb2F0UG9pbnQqLCBib29sIGFudGlhbGlhcyA9IHRydWUpOwogICAgICAgICB2
b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgY29uc3QgRmxvYXRSZWN0Jik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAkocmV2aXNpb24g
OTA4MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBmbG9hdCBQYXRoOjpub3JtYWxBbmdsZUF0TGVu
Z3RoKGZsb2F0IGxlCiB9CiAjZW5kaWYKIAotdm9pZCBQYXRoOjphZGRSb3VuZGVkUmVjdChjb25z
dCBSb3VuZGVkSW50UmVjdCYgcikKK3ZvaWQgUGF0aDo6YWRkUm91bmRlZFJlY3QoY29uc3QgUm91
bmRlZFJlY3QmIHIpCiB7CiAgICAgYWRkUm91bmRlZFJlY3Qoci5yZWN0KCksIHIucmFkaWkoKS50
b3BMZWZ0KCksIHIucmFkaWkoKS50b3BSaWdodCgpLCByLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBy
LnJhZGlpKCkuYm90dG9tUmlnaHQoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0aC5oCShyZXZpc2lvbiA5MDgyMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdGguaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2lm
bmRlZiBQYXRoX2gKICNkZWZpbmUgUGF0aF9oCiAKLSNpbmNsdWRlICJSb3VuZGVkSW50UmVjdC5o
IgorI2luY2x1ZGUgIlJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2Uu
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC0xMzgsNyArMTM4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGFkZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0Jik7
CiAgICAgICAgIHZvaWQgYWRkUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRTaXplJiByb3VuZGluZ1JhZGlpKTsKICAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdChjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEZsb2F0
U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywg
Y29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodFJhZGl1cyk7Ci0gICAgICAgIHZvaWQgYWRkUm91
bmRlZFJlY3QoY29uc3QgUm91bmRlZEludFJlY3QmKTsKKyAgICAgICAgdm9pZCBhZGRSb3VuZGVk
UmVjdChjb25zdCBSb3VuZGVkUmVjdCYpOwogCiAgICAgICAgIHZvaWQgdHJhbnNsYXRlKGNvbnN0
IEZsb2F0U2l6ZSYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
b3VuZGVkSW50UmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUm91bmRlZEludFJlY3QuY3BwCShyZXZpc2lvbiA5MDgyMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRJbnRSZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSwxNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiUm91bmRlZEludFJlY3QuaCIKLQotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNp
bmNsdWRlIDxhbGdvcml0aG0+Ci0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotYm9vbCBSb3VuZGVkSW50UmVjdDo6UmFkaWk6OmlzWmVybygpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fdG9wTGVmdC5pc1plcm8oKSAmJiBtX3RvcFJpZ2h0LmlzWmVybygpICYm
IG1fYm90dG9tTGVmdC5pc1plcm8oKSAmJiBtX2JvdHRvbVJpZ2h0LmlzWmVybygpOwotfQotCi12
b2lkIFJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6c2NhbGUoZmxvYXQgZmFjdG9yKQotewotICAgIGlm
IChmYWN0b3IgPT0gMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gSWYgZWl0aGVyIHJhZGl1
cyBvbiBhIGNvcm5lciBiZWNvbWVzIHplcm8sIHJlc2V0IGJvdGggcmFkaWkgb24gdGhhdCBjb3Ju
ZXIuCi0gICAgbV90b3BMZWZ0LnNjYWxlKGZhY3Rvcik7Ci0gICAgaWYgKCFtX3RvcExlZnQud2lk
dGgoKSB8fCAhbV90b3BMZWZ0LmhlaWdodCgpKQotICAgICAgICBtX3RvcExlZnQgPSBJbnRTaXpl
KCk7Ci0gICAgbV90b3BSaWdodC5zY2FsZShmYWN0b3IpOwotICAgIGlmICghbV90b3BSaWdodC53
aWR0aCgpIHx8ICFtX3RvcFJpZ2h0LmhlaWdodCgpKQotICAgICAgICBtX3RvcFJpZ2h0ID0gSW50
U2l6ZSgpOwotICAgIG1fYm90dG9tTGVmdC5zY2FsZShmYWN0b3IpOwotICAgIGlmICghbV9ib3R0
b21MZWZ0LndpZHRoKCkgfHwgIW1fYm90dG9tTGVmdC5oZWlnaHQoKSkKLSAgICAgICAgbV9ib3R0
b21MZWZ0ID0gSW50U2l6ZSgpOwotICAgIG1fYm90dG9tUmlnaHQuc2NhbGUoZmFjdG9yKTsKLSAg
ICBpZiAoIW1fYm90dG9tUmlnaHQud2lkdGgoKSB8fCAhbV9ib3R0b21SaWdodC5oZWlnaHQoKSkK
LSAgICAgICAgbV9ib3R0b21SaWdodCA9IEludFNpemUoKTsKLQotfQotCi12b2lkIFJvdW5kZWRJ
bnRSZWN0OjpSYWRpaTo6ZXhwYW5kKGludCB0b3BXaWR0aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQg
bGVmdFdpZHRoLCBpbnQgcmlnaHRXaWR0aCkKLXsKLSAgICBtX3RvcExlZnQuc2V0V2lkdGgobWF4
KDAsIG1fdG9wTGVmdC53aWR0aCgpICsgbGVmdFdpZHRoKSk7Ci0gICAgbV90b3BMZWZ0LnNldEhl
aWdodChtYXgoMCwgbV90b3BMZWZ0LmhlaWdodCgpICsgdG9wV2lkdGgpKTsKLQotICAgIG1fdG9w
UmlnaHQuc2V0V2lkdGgobWF4KDAsIG1fdG9wUmlnaHQud2lkdGgoKSArIHJpZ2h0V2lkdGgpKTsK
LSAgICBtX3RvcFJpZ2h0LnNldEhlaWdodChtYXgoMCwgbV90b3BSaWdodC5oZWlnaHQoKSArIHRv
cFdpZHRoKSk7Ci0KLSAgICBtX2JvdHRvbUxlZnQuc2V0V2lkdGgobWF4KDAsIG1fYm90dG9tTGVm
dC53aWR0aCgpICsgbGVmdFdpZHRoKSk7Ci0gICAgbV9ib3R0b21MZWZ0LnNldEhlaWdodChtYXgo
MCwgbV9ib3R0b21MZWZ0LmhlaWdodCgpICsgYm90dG9tV2lkdGgpKTsKLQotICAgIG1fYm90dG9t
UmlnaHQuc2V0V2lkdGgobWF4KDAsIG1fYm90dG9tUmlnaHQud2lkdGgoKSArIHJpZ2h0V2lkdGgp
KTsKLSAgICBtX2JvdHRvbVJpZ2h0LnNldEhlaWdodChtYXgoMCwgbV9ib3R0b21SaWdodC5oZWln
aHQoKSArIGJvdHRvbVdpZHRoKSk7Ci19Ci0KLXZvaWQgUm91bmRlZEludFJlY3Q6OmluZmxhdGVX
aXRoUmFkaWkoaW50IHNpemUpCi17Ci0gICAgSW50UmVjdCBvbGQgPSBtX3JlY3Q7Ci0KLSAgICBt
X3JlY3QuaW5mbGF0ZShzaXplKTsKLSAgICAvLyBDb25zaWRlcmluZyB0aGUgaW5mbGF0aW9uIGZh
Y3RvciBvZiBzaG9ydGVyIHNpemUgdG8gc2NhbGUgdGhlIHJhZGlpIHNlZW1zIGFwcHJvcHJpYXRl
IGhlcmUKLSAgICBmbG9hdCBmYWN0b3I7Ci0gICAgaWYgKG1fcmVjdC53aWR0aCgpIDwgbV9yZWN0
LmhlaWdodCgpKQotICAgICAgICBmYWN0b3IgPSBvbGQud2lkdGgoKSA/IChmbG9hdCltX3JlY3Qu
d2lkdGgoKSAvIG9sZC53aWR0aCgpIDogMDsKLSAgICBlbHNlCi0gICAgICAgIGZhY3RvciA9IG9s
ZC5oZWlnaHQoKSA/IChmbG9hdCltX3JlY3QuaGVpZ2h0KCkgLyBvbGQuaGVpZ2h0KCkgOiAwOwot
Ci0gICAgbV9yYWRpaS5zY2FsZShmYWN0b3IpOwotfQotCi12b2lkIFJvdW5kZWRJbnRSZWN0OjpS
YWRpaTo6aW5jbHVkZUxvZ2ljYWxFZGdlcyhjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmIGVk
Z2VzLCBib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29s
IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQotewotICAgIGlmIChpbmNsdWRlTG9naWNhbExlZnRF
ZGdlKSB7Ci0gICAgICAgIGlmIChpc0hvcml6b250YWwpCi0gICAgICAgICAgICBtX2JvdHRvbUxl
ZnQgPSBlZGdlcy5ib3R0b21MZWZ0KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fdG9w
UmlnaHQgPSBlZGdlcy50b3BSaWdodCgpOwotICAgICAgICBtX3RvcExlZnQgPSBlZGdlcy50b3BM
ZWZ0KCk7Ci0gICAgfQotCi0gICAgaWYgKGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSB7Ci0gICAg
ICAgIGlmIChpc0hvcml6b250YWwpCi0gICAgICAgICAgICBtX3RvcFJpZ2h0ID0gZWRnZXMudG9w
UmlnaHQoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9ib3R0b21MZWZ0ID0gZWRnZXMu
Ym90dG9tTGVmdCgpOwotICAgICAgICBtX2JvdHRvbVJpZ2h0ID0gZWRnZXMuYm90dG9tUmlnaHQo
KTsKLSAgICB9Ci19Ci0KLXZvaWQgUm91bmRlZEludFJlY3Q6OlJhZGlpOjpleGNsdWRlTG9naWNh
bEVkZ2VzKGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGV4Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJv
b2wgZXhjbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCi17Ci0gICAgaWYgKGV4Y2x1ZGVMb2dpY2FsTGVm
dEVkZ2UpIHsKLSAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkKLSAgICAgICAgICAgIG1fYm90dG9t
TGVmdCA9IEludFNpemUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV90b3BSaWdodCA9
IEludFNpemUoKTsKLSAgICAgICAgbV90b3BMZWZ0ID0gSW50U2l6ZSgpOwotICAgIH0KLSAgICAg
ICAgCi0gICAgaWYgKGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSB7Ci0gICAgICAgIGlmIChpc0hv
cml6b250YWwpCi0gICAgICAgICAgICBtX3RvcFJpZ2h0ID0gSW50U2l6ZSgpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX2JvdHRvbUxlZnQgPSBJbnRTaXplKCk7Ci0gICAgICAgIG1fYm90
dG9tUmlnaHQgPSBJbnRTaXplKCk7Ci0gICAgfQotfQotCi1Sb3VuZGVkSW50UmVjdDo6Um91bmRl
ZEludFJlY3QoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCi0gICAgOiBtX3Jl
Y3QoeCwgeSwgd2lkdGgsIGhlaWdodCkKLXsKLX0KLQotUm91bmRlZEludFJlY3Q6OlJvdW5kZWRJ
bnRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJhZGlpJiByYWRpaSkKLSAgICA6IG1f
cmVjdChyZWN0KQotICAgICwgbV9yYWRpaShyYWRpaSkKLXsKLX0KLQotUm91bmRlZEludFJlY3Q6
OlJvdW5kZWRJbnRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExl
ZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBj
b25zdCBJbnRTaXplJiBib3R0b21SaWdodCkKLSAgICA6IG1fcmVjdChyZWN0KQotICAgICwgbV9y
YWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpCi17Ci19Ci0K
LXZvaWQgUm91bmRlZEludFJlY3Q6OmluY2x1ZGVMb2dpY2FsRWRnZXMoY29uc3QgUmFkaWkmIGVk
Z2VzLCBib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29s
IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQotewotICAgIG1fcmFkaWkuaW5jbHVkZUxvZ2ljYWxF
ZGdlcyhlZGdlcywgaXNIb3Jpem9udGFsLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRl
TG9naWNhbFJpZ2h0RWRnZSk7Ci19Ci0KLXZvaWQgUm91bmRlZEludFJlY3Q6OmV4Y2x1ZGVMb2dp
Y2FsRWRnZXMoYm9vbCBpc0hvcml6b250YWwsIGJvb2wgZXhjbHVkZUxvZ2ljYWxMZWZ0RWRnZSwg
Ym9vbCBleGNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKLXsKLSAgICBtX3JhZGlpLmV4Y2x1ZGVMb2dp
Y2FsRWRnZXMoaXNIb3Jpem9udGFsLCBleGNsdWRlTG9naWNhbExlZnRFZGdlLCBleGNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSk7Ci19Ci0KLWJvb2wgUm91bmRlZEludFJlY3Q6OmlzUmVuZGVyYWJsZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcmFkaWkudG9wTGVmdCgpLndpZHRoKCkgKyBtX3JhZGlp
LnRvcFJpZ2h0KCkud2lkdGgoKSA8PSBtX3JlY3Qud2lkdGgoKQotICAgICAgICAmJiBtX3JhZGlp
LmJvdHRvbUxlZnQoKS53aWR0aCgpICsgbV9yYWRpaS5ib3R0b21SaWdodCgpLndpZHRoKCkgPD0g
bV9yZWN0LndpZHRoKCkKLSAgICAgICAgJiYgbV9yYWRpaS50b3BMZWZ0KCkuaGVpZ2h0KCkgKyBt
X3JhZGlpLnRvcFJpZ2h0KCkuaGVpZ2h0KCkgPD0gbV9yZWN0LmhlaWdodCgpCi0gICAgICAgICYm
IG1fcmFkaWkuYm90dG9tTGVmdCgpLmhlaWdodCgpICsgbV9yYWRpaS5ib3R0b21SaWdodCgpLmhl
aWdodCgpIDw9IG1fcmVjdC5oZWlnaHQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZEludFJlY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkSW50
UmVjdC5oCShyZXZpc2lvbiA5MDgyMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JvdW5kZWRJbnRSZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTE2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBSb3VuZGVkSW50UmVjdF9oCi0jZGVmaW5lIFJvdW5kZWRJ
bnRSZWN0X2gKLQotI2luY2x1ZGUgIkludFJlY3QuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci0KLWNsYXNzIFJvdW5kZWRJbnRSZWN0IHsKLXB1YmxpYzoKLSAgICBjbGFzcyBSYWRpaSB7Ci0g
ICAgcHVibGljOgotICAgICAgICBSYWRpaSgpIHt9Ci0gICAgICAgIFJhZGlpKGNvbnN0IEludFNp
emUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0
b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCkKLSAgICAgICAgICAgIDogbV90b3BM
ZWZ0KHRvcExlZnQpCi0gICAgICAgICAgICAsIG1fdG9wUmlnaHQodG9wUmlnaHQpCi0gICAgICAg
ICAgICAsIG1fYm90dG9tTGVmdChib3R0b21MZWZ0KQotICAgICAgICAgICAgLCBtX2JvdHRvbVJp
Z2h0KGJvdHRvbVJpZ2h0KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHNl
dFRvcExlZnQoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX3RvcExlZnQgPSBzaXplOyB9Ci0gICAg
ICAgIHZvaWQgc2V0VG9wUmlnaHQoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX3RvcFJpZ2h0ID0g
c2l6ZTsgfQotICAgICAgICB2b2lkIHNldEJvdHRvbUxlZnQoY29uc3QgSW50U2l6ZSYgc2l6ZSkg
eyBtX2JvdHRvbUxlZnQgPSBzaXplOyB9Ci0gICAgICAgIHZvaWQgc2V0Qm90dG9tUmlnaHQoY29u
c3QgSW50U2l6ZSYgc2l6ZSkgeyBtX2JvdHRvbVJpZ2h0ID0gc2l6ZTsgfQotICAgICAgICBjb25z
dCBJbnRTaXplJiB0b3BMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV90b3BMZWZ0OyB9Ci0gICAgICAg
IGNvbnN0IEludFNpemUmIHRvcFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV90b3BSaWdodDsgfQot
ICAgICAgICBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0
b21MZWZ0OyB9Ci0gICAgICAgIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3R0b21SaWdodDsgfQotCi0gICAgICAgIGJvb2wgaXNaZXJvKCkgY29uc3Q7Ci0K
LSAgICAgICAgdm9pZCBpbmNsdWRlTG9naWNhbEVkZ2VzKGNvbnN0IFJhZGlpJiBlZGdlcywgYm9v
bCBpc0hvcml6b250YWwsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRl
TG9naWNhbFJpZ2h0RWRnZSk7Ci0gICAgICAgIHZvaWQgZXhjbHVkZUxvZ2ljYWxFZGdlcyhib29s
IGlzSG9yaXpvbnRhbCwgYm9vbCBleGNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGV4Y2x1ZGVM
b2dpY2FsUmlnaHRFZGdlKTsKLQotICAgICAgICB2b2lkIHNjYWxlKGZsb2F0IGZhY3Rvcik7Ci0g
ICAgICAgIHZvaWQgZXhwYW5kKGludCB0b3BXaWR0aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQgbGVm
dFdpZHRoLCBpbnQgcmlnaHRXaWR0aCk7Ci0gICAgICAgIHZvaWQgZXhwYW5kKGludCBzaXplKSB7
IGV4cGFuZChzaXplLCBzaXplLCBzaXplLCBzaXplKTsgfQotICAgICAgICB2b2lkIHNocmluayhp
bnQgdG9wV2lkdGgsIGludCBib3R0b21XaWR0aCwgaW50IGxlZnRXaWR0aCwgaW50IHJpZ2h0V2lk
dGgpIHsgZXhwYW5kKC10b3BXaWR0aCwgLWJvdHRvbVdpZHRoLCAtbGVmdFdpZHRoLCAtcmlnaHRX
aWR0aCk7IH0KLSAgICAgICAgdm9pZCBzaHJpbmsoaW50IHNpemUpIHsgc2hyaW5rKHNpemUsIHNp
emUsIHNpemUsIHNpemUpOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBJbnRTaXplIG1fdG9w
TGVmdDsKLSAgICAgICAgSW50U2l6ZSBtX3RvcFJpZ2h0OwotICAgICAgICBJbnRTaXplIG1fYm90
dG9tTGVmdDsKLSAgICAgICAgSW50U2l6ZSBtX2JvdHRvbVJpZ2h0OwotICAgIH07Ci0KLSAgICBl
eHBsaWNpdCBSb3VuZGVkSW50UmVjdChjb25zdCBJbnRSZWN0JiwgY29uc3QgUmFkaWkmID0gUmFk
aWkoKSk7Ci0gICAgUm91bmRlZEludFJlY3QoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQpOwotICAgIFJvdW5kZWRJbnRSZWN0KGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXpl
JiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9t
TGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQpOwotCi0gICAgY29uc3QgSW50UmVjdCYg
cmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQotICAgIGNvbnN0IFJhZGlpJiByYWRpaSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmFkaWk7IH0KLSAgICBib29sIGlzUm91bmRlZCgpIGNvbnN0IHsg
cmV0dXJuICFtX3JhZGlpLmlzWmVybygpOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWN0LmlzRW1wdHkoKTsgfQotCi0gICAgdm9pZCBzZXRSZWN0KGNvbnN0IEludFJl
Y3QmIHJlY3QpIHsgbV9yZWN0ID0gcmVjdDsgfQotICAgIHZvaWQgc2V0UmFkaWkoY29uc3QgUmFk
aWkmIHJhZGlpKSB7IG1fcmFkaWkgPSByYWRpaTsgfQotCi0gICAgdm9pZCBtb3ZlKGNvbnN0IElu
dFNpemUmIHNpemUpIHsgbV9yZWN0Lm1vdmUoc2l6ZSk7IH0KLSAgICB2b2lkIGluZmxhdGUoaW50
IHNpemUpIHsgbV9yZWN0LmluZmxhdGUoc2l6ZSk7ICB9Ci0gICAgdm9pZCBpbmZsYXRlV2l0aFJh
ZGlpKGludCBzaXplKTsKLSAgICB2b2lkIGV4cGFuZFJhZGlpKGludCBzaXplKSB7IG1fcmFkaWku
ZXhwYW5kKHNpemUpOyB9Ci0gICAgdm9pZCBzaHJpbmtSYWRpaShpbnQgc2l6ZSkgeyBtX3JhZGlp
LnNocmluayhzaXplKTsgfQotCi0gICAgdm9pZCBpbmNsdWRlTG9naWNhbEVkZ2VzKGNvbnN0IFJh
ZGlpJiBlZGdlcywgYm9vbCBpc0hvcml6b250YWwsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRn
ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7Ci0gICAgdm9pZCBleGNsdWRlTG9naWNh
bEVkZ2VzKGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGV4Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJv
b2wgZXhjbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwotCi0gICAgYm9vbCBpc1JlbmRlcmFibGUoKSBj
b25zdDsKLQotcHJpdmF0ZToKLSAgICBJbnRSZWN0IG1fcmVjdDsKLSAgICBSYWRpaSBtX3JhZGlp
OwotfTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFk
aWkmIGEsIGNvbnN0IFJvdW5kZWRJbnRSZWN0OjpSYWRpaSYgYikKLXsKLSAgICByZXR1cm4gYS50
b3BMZWZ0KCkgPT0gYi50b3BMZWZ0KCkgJiYgYS50b3BSaWdodCgpID09IGIudG9wUmlnaHQoKSAm
JiBhLmJvdHRvbUxlZnQoKSA9PSBiLmJvdHRvbUxlZnQoKSAmJiBhLmJvdHRvbVJpZ2h0KCkgPT0g
Yi5ib3R0b21SaWdodCgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJvdW5k
ZWRJbnRSZWN0JiBhLCBjb25zdCBSb3VuZGVkSW50UmVjdCYgYikKLXsKLSAgICByZXR1cm4gYS5y
ZWN0KCkgPT0gYi5yZWN0KCkgJiYgYS5yYWRpaSgpID09IGIucmFkaWkoKTsKLX0KLQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBSb3VuZGVkSW50UmVjdF9oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCShy
ZXZpc2lvbiA5MDgyMikJKGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91
bmRlZEludFJlY3QuY3BwOjkwODIyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUm91bmRlZFJlY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSb3VuZGVkSW50UmVj
dC5oIgorCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKwordXNp
bmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIFJvdW5kZWRJ
bnRSZWN0OjpSYWRpaTo6aXNaZXJvKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90b3BMZWZ0Lmlz
WmVybygpICYmIG1fdG9wUmlnaHQuaXNaZXJvKCkgJiYgbV9ib3R0b21MZWZ0LmlzWmVybygpICYm
IG1fYm90dG9tUmlnaHQuaXNaZXJvKCk7Cit9CisKK3ZvaWQgUm91bmRlZEludFJlY3Q6OlJhZGlp
OjpzY2FsZShmbG9hdCBmYWN0b3IpCit7CisgICAgaWYgKGZhY3RvciA9PSAxKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBJZiBlaXRoZXIgcmFkaXVzIG9uIGEgY29ybmVyIGJlY29tZXMgemVy
bywgcmVzZXQgYm90aCByYWRpaSBvbiB0aGF0IGNvcm5lci4KKyAgICBtX3RvcExlZnQuc2NhbGUo
ZmFjdG9yKTsKKyAgICBpZiAoIW1fdG9wTGVmdC53aWR0aCgpIHx8ICFtX3RvcExlZnQuaGVpZ2h0
KCkpCisgICAgICAgIG1fdG9wTGVmdCA9IEludFNpemUoKTsKKyAgICBtX3RvcFJpZ2h0LnNjYWxl
KGZhY3Rvcik7CisgICAgaWYgKCFtX3RvcFJpZ2h0LndpZHRoKCkgfHwgIW1fdG9wUmlnaHQuaGVp
Z2h0KCkpCisgICAgICAgIG1fdG9wUmlnaHQgPSBJbnRTaXplKCk7CisgICAgbV9ib3R0b21MZWZ0
LnNjYWxlKGZhY3Rvcik7CisgICAgaWYgKCFtX2JvdHRvbUxlZnQud2lkdGgoKSB8fCAhbV9ib3R0
b21MZWZ0LmhlaWdodCgpKQorICAgICAgICBtX2JvdHRvbUxlZnQgPSBJbnRTaXplKCk7CisgICAg
bV9ib3R0b21SaWdodC5zY2FsZShmYWN0b3IpOworICAgIGlmICghbV9ib3R0b21SaWdodC53aWR0
aCgpIHx8ICFtX2JvdHRvbVJpZ2h0LmhlaWdodCgpKQorICAgICAgICBtX2JvdHRvbVJpZ2h0ID0g
SW50U2l6ZSgpOworCit9CisKK3ZvaWQgUm91bmRlZEludFJlY3Q6OlJhZGlpOjpleHBhbmQoaW50
IHRvcFdpZHRoLCBpbnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgsIGludCByaWdodFdpZHRo
KQoreworICAgIG1fdG9wTGVmdC5zZXRXaWR0aChtYXgoMCwgbV90b3BMZWZ0LndpZHRoKCkgKyBs
ZWZ0V2lkdGgpKTsKKyAgICBtX3RvcExlZnQuc2V0SGVpZ2h0KG1heCgwLCBtX3RvcExlZnQuaGVp
Z2h0KCkgKyB0b3BXaWR0aCkpOworCisgICAgbV90b3BSaWdodC5zZXRXaWR0aChtYXgoMCwgbV90
b3BSaWdodC53aWR0aCgpICsgcmlnaHRXaWR0aCkpOworICAgIG1fdG9wUmlnaHQuc2V0SGVpZ2h0
KG1heCgwLCBtX3RvcFJpZ2h0LmhlaWdodCgpICsgdG9wV2lkdGgpKTsKKworICAgIG1fYm90dG9t
TGVmdC5zZXRXaWR0aChtYXgoMCwgbV9ib3R0b21MZWZ0LndpZHRoKCkgKyBsZWZ0V2lkdGgpKTsK
KyAgICBtX2JvdHRvbUxlZnQuc2V0SGVpZ2h0KG1heCgwLCBtX2JvdHRvbUxlZnQuaGVpZ2h0KCkg
KyBib3R0b21XaWR0aCkpOworCisgICAgbV9ib3R0b21SaWdodC5zZXRXaWR0aChtYXgoMCwgbV9i
b3R0b21SaWdodC53aWR0aCgpICsgcmlnaHRXaWR0aCkpOworICAgIG1fYm90dG9tUmlnaHQuc2V0
SGVpZ2h0KG1heCgwLCBtX2JvdHRvbVJpZ2h0LmhlaWdodCgpICsgYm90dG9tV2lkdGgpKTsKK30K
Kwordm9pZCBSb3VuZGVkSW50UmVjdDo6aW5mbGF0ZVdpdGhSYWRpaShpbnQgc2l6ZSkKK3sKKyAg
ICBJbnRSZWN0IG9sZCA9IG1fcmVjdDsKKworICAgIG1fcmVjdC5pbmZsYXRlKHNpemUpOworICAg
IC8vIENvbnNpZGVyaW5nIHRoZSBpbmZsYXRpb24gZmFjdG9yIG9mIHNob3J0ZXIgc2l6ZSB0byBz
Y2FsZSB0aGUgcmFkaWkgc2VlbXMgYXBwcm9wcmlhdGUgaGVyZQorICAgIGZsb2F0IGZhY3RvcjsK
KyAgICBpZiAobV9yZWN0LndpZHRoKCkgPCBtX3JlY3QuaGVpZ2h0KCkpCisgICAgICAgIGZhY3Rv
ciA9IG9sZC53aWR0aCgpID8gKGZsb2F0KW1fcmVjdC53aWR0aCgpIC8gb2xkLndpZHRoKCkgOiAw
OworICAgIGVsc2UKKyAgICAgICAgZmFjdG9yID0gb2xkLmhlaWdodCgpID8gKGZsb2F0KW1fcmVj
dC5oZWlnaHQoKSAvIG9sZC5oZWlnaHQoKSA6IDA7CisKKyAgICBtX3JhZGlpLnNjYWxlKGZhY3Rv
cik7Cit9CisKK3ZvaWQgUm91bmRlZEludFJlY3Q6OlJhZGlpOjppbmNsdWRlTG9naWNhbEVkZ2Vz
KGNvbnN0IFJvdW5kZWRJbnRSZWN0OjpSYWRpaSYgZWRnZXMsIGJvb2wgaXNIb3Jpem9udGFsLCBi
b29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
Cit7CisgICAgaWYgKGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UpIHsKKyAgICAgICAgaWYgKGlzSG9y
aXpvbnRhbCkKKyAgICAgICAgICAgIG1fYm90dG9tTGVmdCA9IGVkZ2VzLmJvdHRvbUxlZnQoKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV90b3BSaWdodCA9IGVkZ2VzLnRvcFJpZ2h0KCk7
CisgICAgICAgIG1fdG9wTGVmdCA9IGVkZ2VzLnRvcExlZnQoKTsKKyAgICB9CisKKyAgICBpZiAo
aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpIHsKKyAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkKKyAg
ICAgICAgICAgIG1fdG9wUmlnaHQgPSBlZGdlcy50b3BSaWdodCgpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX2JvdHRvbUxlZnQgPSBlZGdlcy5ib3R0b21MZWZ0KCk7CisgICAgICAgIG1f
Ym90dG9tUmlnaHQgPSBlZGdlcy5ib3R0b21SaWdodCgpOworICAgIH0KK30KKwordm9pZCBSb3Vu
ZGVkSW50UmVjdDo6UmFkaWk6OmV4Y2x1ZGVMb2dpY2FsRWRnZXMoYm9vbCBpc0hvcml6b250YWws
IGJvb2wgZXhjbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBleGNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSkKK3sKKyAgICBpZiAoZXhjbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgeworICAgICAgICBpZiAoaXNI
b3Jpem9udGFsKQorICAgICAgICAgICAgbV9ib3R0b21MZWZ0ID0gSW50U2l6ZSgpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBtX3RvcFJpZ2h0ID0gSW50U2l6ZSgpOworICAgICAgICBtX3Rv
cExlZnQgPSBJbnRTaXplKCk7CisgICAgfQorICAgICAgICAKKyAgICBpZiAoZXhjbHVkZUxvZ2lj
YWxSaWdodEVkZ2UpIHsKKyAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkKKyAgICAgICAgICAgIG1f
dG9wUmlnaHQgPSBJbnRTaXplKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYm90dG9t
TGVmdCA9IEludFNpemUoKTsKKyAgICAgICAgbV9ib3R0b21SaWdodCA9IEludFNpemUoKTsKKyAg
ICB9Cit9CisKK1JvdW5kZWRJbnRSZWN0OjpSb3VuZGVkSW50UmVjdChpbnQgeCwgaW50IHksIGlu
dCB3aWR0aCwgaW50IGhlaWdodCkKKyAgICA6IG1fcmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KQor
eworfQorCitSb3VuZGVkSW50UmVjdDo6Um91bmRlZEludFJlY3QoY29uc3QgSW50UmVjdCYgcmVj
dCwgY29uc3QgUmFkaWkmIHJhZGlpKQorICAgIDogbV9yZWN0KHJlY3QpCisgICAgLCBtX3JhZGlp
KHJhZGlpKQoreworfQorCitSb3VuZGVkSW50UmVjdDo6Um91bmRlZEludFJlY3QoY29uc3QgSW50
UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmln
aHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0
KQorICAgIDogbV9yZWN0KHJlY3QpCisgICAgLCBtX3JhZGlpKHRvcExlZnQsIHRvcFJpZ2h0LCBi
b3R0b21MZWZ0LCBib3R0b21SaWdodCkKK3sKK30KKwordm9pZCBSb3VuZGVkSW50UmVjdDo6aW5j
bHVkZUxvZ2ljYWxFZGdlcyhjb25zdCBSYWRpaSYgZWRnZXMsIGJvb2wgaXNIb3Jpem9udGFsLCBi
b29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
Cit7CisgICAgbV9yYWRpaS5pbmNsdWRlTG9naWNhbEVkZ2VzKGVkZ2VzLCBpc0hvcml6b250YWws
IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKK30KKwor
dm9pZCBSb3VuZGVkSW50UmVjdDo6ZXhjbHVkZUxvZ2ljYWxFZGdlcyhib29sIGlzSG9yaXpvbnRh
bCwgYm9vbCBleGNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGV4Y2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKQoreworICAgIG1fcmFkaWkuZXhjbHVkZUxvZ2ljYWxFZGdlcyhpc0hvcml6b250YWwsIGV4
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKK30KKworYm9v
bCBSb3VuZGVkSW50UmVjdDo6aXNSZW5kZXJhYmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9y
YWRpaS50b3BMZWZ0KCkud2lkdGgoKSArIG1fcmFkaWkudG9wUmlnaHQoKS53aWR0aCgpIDw9IG1f
cmVjdC53aWR0aCgpCisgICAgICAgICYmIG1fcmFkaWkuYm90dG9tTGVmdCgpLndpZHRoKCkgKyBt
X3JhZGlpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSA8PSBtX3JlY3Qud2lkdGgoKQorICAgICAgICAm
JiBtX3JhZGlpLnRvcExlZnQoKS5oZWlnaHQoKSArIG1fcmFkaWkudG9wUmlnaHQoKS5oZWlnaHQo
KSA8PSBtX3JlY3QuaGVpZ2h0KCkKKyAgICAgICAgJiYgbV9yYWRpaS5ib3R0b21MZWZ0KCkuaGVp
Z2h0KCkgKyBtX3JhZGlpLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkgPD0gbV9yZWN0LmhlaWdodCgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCShyZXZpc2lvbiA5MDgyMikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsMjEgKzI1LDIwIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlJvdW5kZWRJbnRSZWN0LmgiCisjaW5jbHVkZSAiUm91bmRlZFJlY3QuaCIKIAot
I2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBSb3VuZGVkSW50UmVjdDo6
UmFkaWk6OmlzWmVybygpIGNvbnN0Citib29sIFJvdW5kZWRSZWN0OjpSYWRpaTo6aXNaZXJvKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV90b3BMZWZ0LmlzWmVybygpICYmIG1fdG9wUmlnaHQuaXNa
ZXJvKCkgJiYgbV9ib3R0b21MZWZ0LmlzWmVybygpICYmIG1fYm90dG9tUmlnaHQuaXNaZXJvKCk7
CiB9CiAKLXZvaWQgUm91bmRlZEludFJlY3Q6OlJhZGlpOjpzY2FsZShmbG9hdCBmYWN0b3IpCit2
b2lkIFJvdW5kZWRSZWN0OjpSYWRpaTo6c2NhbGUoZmxvYXQgZmFjdG9yKQogewogICAgIGlmIChm
YWN0b3IgPT0gMSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDcsMjAgKzQ2LDIwIEBAIHZvaWQgUm91
bmRlZEludFJlY3Q6OlJhZGlpOjpzY2FsZShmbG9hdCAKICAgICAvLyBJZiBlaXRoZXIgcmFkaXVz
IG9uIGEgY29ybmVyIGJlY29tZXMgemVybywgcmVzZXQgYm90aCByYWRpaSBvbiB0aGF0IGNvcm5l
ci4KICAgICBtX3RvcExlZnQuc2NhbGUoZmFjdG9yKTsKICAgICBpZiAoIW1fdG9wTGVmdC53aWR0
aCgpIHx8ICFtX3RvcExlZnQuaGVpZ2h0KCkpCi0gICAgICAgIG1fdG9wTGVmdCA9IEludFNpemUo
KTsKKyAgICAgICAgbV90b3BMZWZ0ID0gTGF5b3V0U2l6ZSgpOwogICAgIG1fdG9wUmlnaHQuc2Nh
bGUoZmFjdG9yKTsKICAgICBpZiAoIW1fdG9wUmlnaHQud2lkdGgoKSB8fCAhbV90b3BSaWdodC5o
ZWlnaHQoKSkKLSAgICAgICAgbV90b3BSaWdodCA9IEludFNpemUoKTsKKyAgICAgICAgbV90b3BS
aWdodCA9IExheW91dFNpemUoKTsKICAgICBtX2JvdHRvbUxlZnQuc2NhbGUoZmFjdG9yKTsKICAg
ICBpZiAoIW1fYm90dG9tTGVmdC53aWR0aCgpIHx8ICFtX2JvdHRvbUxlZnQuaGVpZ2h0KCkpCi0g
ICAgICAgIG1fYm90dG9tTGVmdCA9IEludFNpemUoKTsKKyAgICAgICAgbV9ib3R0b21MZWZ0ID0g
TGF5b3V0U2l6ZSgpOwogICAgIG1fYm90dG9tUmlnaHQuc2NhbGUoZmFjdG9yKTsKICAgICBpZiAo
IW1fYm90dG9tUmlnaHQud2lkdGgoKSB8fCAhbV9ib3R0b21SaWdodC5oZWlnaHQoKSkKLSAgICAg
ICAgbV9ib3R0b21SaWdodCA9IEludFNpemUoKTsKKyAgICAgICAgbV9ib3R0b21SaWdodCA9IExh
eW91dFNpemUoKTsKIAogfQogCi12b2lkIFJvdW5kZWRJbnRSZWN0OjpSYWRpaTo6ZXhwYW5kKGlu
dCB0b3BXaWR0aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQgcmlnaHRXaWR0
aCkKK3ZvaWQgUm91bmRlZFJlY3Q6OlJhZGlpOjpleHBhbmQoTGF5b3V0VW5pdCB0b3BXaWR0aCwg
TGF5b3V0VW5pdCBib3R0b21XaWR0aCwgTGF5b3V0VW5pdCBsZWZ0V2lkdGgsIExheW91dFVuaXQg
cmlnaHRXaWR0aCkKIHsKICAgICBtX3RvcExlZnQuc2V0V2lkdGgobWF4KDAsIG1fdG9wTGVmdC53
aWR0aCgpICsgbGVmdFdpZHRoKSk7CiAgICAgbV90b3BMZWZ0LnNldEhlaWdodChtYXgoMCwgbV90
b3BMZWZ0LmhlaWdodCgpICsgdG9wV2lkdGgpKTsKQEAgLTc1LDkgKzc0LDkgQEAgdm9pZCBSb3Vu
ZGVkSW50UmVjdDo6UmFkaWk6OmV4cGFuZChpbnQgdAogICAgIG1fYm90dG9tUmlnaHQuc2V0SGVp
Z2h0KG1heCgwLCBtX2JvdHRvbVJpZ2h0LmhlaWdodCgpICsgYm90dG9tV2lkdGgpKTsKIH0KIAot
dm9pZCBSb3VuZGVkSW50UmVjdDo6aW5mbGF0ZVdpdGhSYWRpaShpbnQgc2l6ZSkKK3ZvaWQgUm91
bmRlZFJlY3Q6OmluZmxhdGVXaXRoUmFkaWkoTGF5b3V0VW5pdCBzaXplKQogewotICAgIEludFJl
Y3Qgb2xkID0gbV9yZWN0OworICAgIExheW91dFJlY3Qgb2xkID0gbV9yZWN0OwogCiAgICAgbV9y
ZWN0LmluZmxhdGUoc2l6ZSk7CiAgICAgLy8gQ29uc2lkZXJpbmcgdGhlIGluZmxhdGlvbiBmYWN0
b3Igb2Ygc2hvcnRlciBzaXplIHRvIHNjYWxlIHRoZSByYWRpaSBzZWVtcyBhcHByb3ByaWF0ZSBo
ZXJlCkBAIC05MCw3ICs4OSw3IEBAIHZvaWQgUm91bmRlZEludFJlY3Q6OmluZmxhdGVXaXRoUmFk
aWkoaW4KICAgICBtX3JhZGlpLnNjYWxlKGZhY3Rvcik7CiB9CiAKLXZvaWQgUm91bmRlZEludFJl
Y3Q6OlJhZGlpOjppbmNsdWRlTG9naWNhbEVkZ2VzKGNvbnN0IFJvdW5kZWRJbnRSZWN0OjpSYWRp
aSYgZWRnZXMsIGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2Us
IGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCit2b2lkIFJvdW5kZWRSZWN0OjpSYWRpaTo6
aW5jbHVkZUxvZ2ljYWxFZGdlcyhjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIGVkZ2VzLCBib29s
IGlzSG9yaXpvbnRhbCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVM
b2dpY2FsUmlnaHRFZGdlKQogewogICAgIGlmIChpbmNsdWRlTG9naWNhbExlZnRFZGdlKSB7CiAg
ICAgICAgIGlmIChpc0hvcml6b250YWwpCkBAIC0xMDksNTMgKzEwOCw1MyBAQCB2b2lkIFJvdW5k
ZWRJbnRSZWN0OjpSYWRpaTo6aW5jbHVkZUxvZ2ljCiAgICAgfQogfQogCi12b2lkIFJvdW5kZWRJ
bnRSZWN0OjpSYWRpaTo6ZXhjbHVkZUxvZ2ljYWxFZGdlcyhib29sIGlzSG9yaXpvbnRhbCwgYm9v
bCBleGNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQor
dm9pZCBSb3VuZGVkUmVjdDo6UmFkaWk6OmV4Y2x1ZGVMb2dpY2FsRWRnZXMoYm9vbCBpc0hvcml6
b250YWwsIGJvb2wgZXhjbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBleGNsdWRlTG9naWNhbFJp
Z2h0RWRnZSkKIHsKICAgICBpZiAoZXhjbHVkZUxvZ2ljYWxMZWZ0RWRnZSkgewogICAgICAgICBp
ZiAoaXNIb3Jpem9udGFsKQotICAgICAgICAgICAgbV9ib3R0b21MZWZ0ID0gSW50U2l6ZSgpOwor
ICAgICAgICAgICAgbV9ib3R0b21MZWZ0ID0gTGF5b3V0U2l6ZSgpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX3RvcFJpZ2h0ID0gSW50U2l6ZSgpOwotICAgICAgICBtX3RvcExlZnQgPSBJ
bnRTaXplKCk7CisgICAgICAgICAgICBtX3RvcFJpZ2h0ID0gTGF5b3V0U2l6ZSgpOworICAgICAg
ICBtX3RvcExlZnQgPSBMYXlvdXRTaXplKCk7CiAgICAgfQogICAgICAgICAKICAgICBpZiAoZXhj
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpIHsKICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkKLSAgICAg
ICAgICAgIG1fdG9wUmlnaHQgPSBJbnRTaXplKCk7CisgICAgICAgICAgICBtX3RvcFJpZ2h0ID0g
TGF5b3V0U2l6ZSgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2JvdHRvbUxlZnQgPSBJ
bnRTaXplKCk7Ci0gICAgICAgIG1fYm90dG9tUmlnaHQgPSBJbnRTaXplKCk7CisgICAgICAgICAg
ICBtX2JvdHRvbUxlZnQgPSBMYXlvdXRTaXplKCk7CisgICAgICAgIG1fYm90dG9tUmlnaHQgPSBM
YXlvdXRTaXplKCk7CiAgICAgfQogfQogCi1Sb3VuZGVkSW50UmVjdDo6Um91bmRlZEludFJlY3Qo
aW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCitSb3VuZGVkUmVjdDo6Um91bmRl
ZFJlY3QoTGF5b3V0VW5pdCB4LCBMYXlvdXRVbml0IHksIExheW91dFVuaXQgd2lkdGgsIExheW91
dFVuaXQgaGVpZ2h0KQogICAgIDogbV9yZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpCiB7CiB9CiAK
LVJvdW5kZWRJbnRSZWN0OjpSb3VuZGVkSW50UmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25z
dCBSYWRpaSYgcmFkaWkpCitSb3VuZGVkUmVjdDo6Um91bmRlZFJlY3QoY29uc3QgTGF5b3V0UmVj
dCYgcmVjdCwgY29uc3QgUmFkaWkmIHJhZGlpKQogICAgIDogbV9yZWN0KHJlY3QpCiAgICAgLCBt
X3JhZGlpKHJhZGlpKQogewogfQogCi1Sb3VuZGVkSW50UmVjdDo6Um91bmRlZEludFJlY3QoY29u
c3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYg
dG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRv
bVJpZ2h0KQorUm91bmRlZFJlY3Q6OlJvdW5kZWRSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3Qs
IGNvbnN0IExheW91dFNpemUmIHRvcExlZnQsIGNvbnN0IExheW91dFNpemUmIHRvcFJpZ2h0LCBj
b25zdCBMYXlvdXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBMYXlvdXRTaXplJiBib3R0b21SaWdo
dCkKICAgICA6IG1fcmVjdChyZWN0KQogICAgICwgbV9yYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwg
Ym90dG9tTGVmdCwgYm90dG9tUmlnaHQpCiB7CiB9CiAKLXZvaWQgUm91bmRlZEludFJlY3Q6Omlu
Y2x1ZGVMb2dpY2FsRWRnZXMoY29uc3QgUmFkaWkmIGVkZ2VzLCBib29sIGlzSG9yaXpvbnRhbCwg
Ym9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdl
KQordm9pZCBSb3VuZGVkUmVjdDo6aW5jbHVkZUxvZ2ljYWxFZGdlcyhjb25zdCBSYWRpaSYgZWRn
ZXMsIGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wg
aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCiB7CiAgICAgbV9yYWRpaS5pbmNsdWRlTG9naWNhbEVk
Z2VzKGVkZ2VzLCBpc0hvcml6b250YWwsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVM
b2dpY2FsUmlnaHRFZGdlKTsKIH0KIAotdm9pZCBSb3VuZGVkSW50UmVjdDo6ZXhjbHVkZUxvZ2lj
YWxFZGdlcyhib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBleGNsdWRlTG9naWNhbExlZnRFZGdlLCBi
b29sIGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQordm9pZCBSb3VuZGVkUmVjdDo6ZXhjbHVkZUxv
Z2ljYWxFZGdlcyhib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBleGNsdWRlTG9naWNhbExlZnRFZGdl
LCBib29sIGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQogewogICAgIG1fcmFkaWkuZXhjbHVkZUxv
Z2ljYWxFZGdlcyhpc0hvcml6b250YWwsIGV4Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGV4Y2x1ZGVM
b2dpY2FsUmlnaHRFZGdlKTsKIH0KIAotYm9vbCBSb3VuZGVkSW50UmVjdDo6aXNSZW5kZXJhYmxl
KCkgY29uc3QKK2Jvb2wgUm91bmRlZFJlY3Q6OmlzUmVuZGVyYWJsZSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fcmFkaWkudG9wTGVmdCgpLndpZHRoKCkgKyBtX3JhZGlpLnRvcFJpZ2h0KCkud2lk
dGgoKSA8PSBtX3JlY3Qud2lkdGgoKQogICAgICAgICAmJiBtX3JhZGlpLmJvdHRvbUxlZnQoKS53
aWR0aCgpICsgbV9yYWRpaS5ib3R0b21SaWdodCgpLndpZHRoKCkgPD0gbV9yZWN0LndpZHRoKCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3Qu
aAkocmV2aXNpb24gOTA4MjIpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JvdW5kZWRJbnRSZWN0Lmg6OTA4MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Sb3VuZGVkUmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgUm91bmRlZEludFJlY3RfaAorI2RlZmluZSBSb3VuZGVkSW50
UmVjdF9oCisKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
CitjbGFzcyBSb3VuZGVkSW50UmVjdCB7CitwdWJsaWM6CisgICAgY2xhc3MgUmFkaWkgeworICAg
IHB1YmxpYzoKKyAgICAgICAgUmFkaWkoKSB7fQorICAgICAgICBSYWRpaShjb25zdCBJbnRTaXpl
JiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9t
TGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQpCisgICAgICAgICAgICA6IG1fdG9wTGVm
dCh0b3BMZWZ0KQorICAgICAgICAgICAgLCBtX3RvcFJpZ2h0KHRvcFJpZ2h0KQorICAgICAgICAg
ICAgLCBtX2JvdHRvbUxlZnQoYm90dG9tTGVmdCkKKyAgICAgICAgICAgICwgbV9ib3R0b21SaWdo
dChib3R0b21SaWdodCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZXRU
b3BMZWZ0KGNvbnN0IEludFNpemUmIHNpemUpIHsgbV90b3BMZWZ0ID0gc2l6ZTsgfQorICAgICAg
ICB2b2lkIHNldFRvcFJpZ2h0KGNvbnN0IEludFNpemUmIHNpemUpIHsgbV90b3BSaWdodCA9IHNp
emU7IH0KKyAgICAgICAgdm9pZCBzZXRCb3R0b21MZWZ0KGNvbnN0IEludFNpemUmIHNpemUpIHsg
bV9ib3R0b21MZWZ0ID0gc2l6ZTsgfQorICAgICAgICB2b2lkIHNldEJvdHRvbVJpZ2h0KGNvbnN0
IEludFNpemUmIHNpemUpIHsgbV9ib3R0b21SaWdodCA9IHNpemU7IH0KKyAgICAgICAgY29uc3Qg
SW50U2l6ZSYgdG9wTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGVmdDsgfQorICAgICAgICBj
b25zdCBJbnRTaXplJiB0b3BSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wUmlnaHQ7IH0KKyAg
ICAgICAgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9t
TGVmdDsgfQorICAgICAgICBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCgpIGNvbnN0IHsgcmV0
dXJuIG1fYm90dG9tUmlnaHQ7IH0KKworICAgICAgICBib29sIGlzWmVybygpIGNvbnN0OworCisg
ICAgICAgIHZvaWQgaW5jbHVkZUxvZ2ljYWxFZGdlcyhjb25zdCBSYWRpaSYgZWRnZXMsIGJvb2wg
aXNIb3Jpem9udGFsLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxv
Z2ljYWxSaWdodEVkZ2UpOworICAgICAgICB2b2lkIGV4Y2x1ZGVMb2dpY2FsRWRnZXMoYm9vbCBp
c0hvcml6b250YWwsIGJvb2wgZXhjbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBleGNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSk7CisKKyAgICAgICAgdm9pZCBzY2FsZShmbG9hdCBmYWN0b3IpOworICAg
ICAgICB2b2lkIGV4cGFuZChpbnQgdG9wV2lkdGgsIGludCBib3R0b21XaWR0aCwgaW50IGxlZnRX
aWR0aCwgaW50IHJpZ2h0V2lkdGgpOworICAgICAgICB2b2lkIGV4cGFuZChpbnQgc2l6ZSkgeyBl
eHBhbmQoc2l6ZSwgc2l6ZSwgc2l6ZSwgc2l6ZSk7IH0KKyAgICAgICAgdm9pZCBzaHJpbmsoaW50
IHRvcFdpZHRoLCBpbnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgsIGludCByaWdodFdpZHRo
KSB7IGV4cGFuZCgtdG9wV2lkdGgsIC1ib3R0b21XaWR0aCwgLWxlZnRXaWR0aCwgLXJpZ2h0V2lk
dGgpOyB9CisgICAgICAgIHZvaWQgc2hyaW5rKGludCBzaXplKSB7IHNocmluayhzaXplLCBzaXpl
LCBzaXplLCBzaXplKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgSW50U2l6ZSBtX3RvcExl
ZnQ7CisgICAgICAgIEludFNpemUgbV90b3BSaWdodDsKKyAgICAgICAgSW50U2l6ZSBtX2JvdHRv
bUxlZnQ7CisgICAgICAgIEludFNpemUgbV9ib3R0b21SaWdodDsKKyAgICB9OworCisgICAgZXhw
bGljaXQgUm91bmRlZEludFJlY3QoY29uc3QgSW50UmVjdCYsIGNvbnN0IFJhZGlpJiA9IFJhZGlp
KCkpOworICAgIFJvdW5kZWRJbnRSZWN0KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KTsKKyAgICBSb3VuZGVkSW50UmVjdChjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYg
dG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxl
ZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KTsKKworICAgIGNvbnN0IEludFJlY3QmIHJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBjb25zdCBSYWRpaSYgcmFkaWkoKSBj
b25zdCB7IHJldHVybiBtX3JhZGlpOyB9CisgICAgYm9vbCBpc1JvdW5kZWQoKSBjb25zdCB7IHJl
dHVybiAhbV9yYWRpaS5pc1plcm8oKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVjdC5pc0VtcHR5KCk7IH0KKworICAgIHZvaWQgc2V0UmVjdChjb25zdCBJbnRSZWN0
JiByZWN0KSB7IG1fcmVjdCA9IHJlY3Q7IH0KKyAgICB2b2lkIHNldFJhZGlpKGNvbnN0IFJhZGlp
JiByYWRpaSkgeyBtX3JhZGlpID0gcmFkaWk7IH0KKworICAgIHZvaWQgbW92ZShjb25zdCBJbnRT
aXplJiBzaXplKSB7IG1fcmVjdC5tb3ZlKHNpemUpOyB9CisgICAgdm9pZCBpbmZsYXRlKGludCBz
aXplKSB7IG1fcmVjdC5pbmZsYXRlKHNpemUpOyAgfQorICAgIHZvaWQgaW5mbGF0ZVdpdGhSYWRp
aShpbnQgc2l6ZSk7CisgICAgdm9pZCBleHBhbmRSYWRpaShpbnQgc2l6ZSkgeyBtX3JhZGlpLmV4
cGFuZChzaXplKTsgfQorICAgIHZvaWQgc2hyaW5rUmFkaWkoaW50IHNpemUpIHsgbV9yYWRpaS5z
aHJpbmsoc2l6ZSk7IH0KKworICAgIHZvaWQgaW5jbHVkZUxvZ2ljYWxFZGdlcyhjb25zdCBSYWRp
aSYgZWRnZXMsIGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2Us
IGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgIHZvaWQgZXhjbHVkZUxvZ2ljYWxF
ZGdlcyhib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBleGNsdWRlTG9naWNhbExlZnRFZGdlLCBib29s
IGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKKworICAgIGJvb2wgaXNSZW5kZXJhYmxlKCkgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgSW50UmVjdCBtX3JlY3Q7CisgICAgUmFkaWkgbV9yYWRpaTsK
K307CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlp
JiBhLCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmIGIpCit7CisgICAgcmV0dXJuIGEudG9w
TGVmdCgpID09IGIudG9wTGVmdCgpICYmIGEudG9wUmlnaHQoKSA9PSBiLnRvcFJpZ2h0KCkgJiYg
YS5ib3R0b21MZWZ0KCkgPT0gYi5ib3R0b21MZWZ0KCkgJiYgYS5ib3R0b21SaWdodCgpID09IGIu
Ym90dG9tUmlnaHQoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSb3VuZGVk
SW50UmVjdCYgYSwgY29uc3QgUm91bmRlZEludFJlY3QmIGIpCit7CisgICAgcmV0dXJuIGEucmVj
dCgpID09IGIucmVjdCgpICYmIGEucmFkaWkoKSA9PSBiLnJhZGlpKCk7Cit9CisKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUm91bmRlZEludFJlY3RfaApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCShyZXZpc2lv
biA5MDgyMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDIwICsyNCwyMCBAQAogICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIFJvdW5kZWRJbnRSZWN0X2gKLSNkZWZpbmUgUm91bmRlZEludFJlY3RfaAorI2lm
bmRlZiBSb3VuZGVkUmVjdF9oCisjZGVmaW5lIFJvdW5kZWRSZWN0X2gKIAotI2luY2x1ZGUgIklu
dFJlY3QuaCIKKyNpbmNsdWRlICJMYXlvdXRUeXBlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIAotY2xhc3MgUm91bmRlZEludFJlY3QgeworY2xhc3MgUm91bmRlZFJlY3QgewogcHVibGlj
OgogICAgIGNsYXNzIFJhZGlpIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJhZGlpKCkge30KLSAg
ICAgICAgUmFkaWkoY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmln
aHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0
KQorICAgICAgICBSYWRpaShjb25zdCBMYXlvdXRTaXplJiB0b3BMZWZ0LCBjb25zdCBMYXlvdXRT
aXplJiB0b3BSaWdodCwgY29uc3QgTGF5b3V0U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgTGF5b3V0
U2l6ZSYgYm90dG9tUmlnaHQpCiAgICAgICAgICAgICA6IG1fdG9wTGVmdCh0b3BMZWZ0KQogICAg
ICAgICAgICAgLCBtX3RvcFJpZ2h0KHRvcFJpZ2h0KQogICAgICAgICAgICAgLCBtX2JvdHRvbUxl
ZnQoYm90dG9tTGVmdCkKQEAgLTQ1LDE0ICs0NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAg
ICAgICAgfQogCi0gICAgICAgIHZvaWQgc2V0VG9wTGVmdChjb25zdCBJbnRTaXplJiBzaXplKSB7
IG1fdG9wTGVmdCA9IHNpemU7IH0KLSAgICAgICAgdm9pZCBzZXRUb3BSaWdodChjb25zdCBJbnRT
aXplJiBzaXplKSB7IG1fdG9wUmlnaHQgPSBzaXplOyB9Ci0gICAgICAgIHZvaWQgc2V0Qm90dG9t
TGVmdChjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fYm90dG9tTGVmdCA9IHNpemU7IH0KLSAgICAg
ICAgdm9pZCBzZXRCb3R0b21SaWdodChjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fYm90dG9tUmln
aHQgPSBzaXplOyB9Ci0gICAgICAgIGNvbnN0IEludFNpemUmIHRvcExlZnQoKSBjb25zdCB7IHJl
dHVybiBtX3RvcExlZnQ7IH0KLSAgICAgICAgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQoKSBjb25z
dCB7IHJldHVybiBtX3RvcFJpZ2h0OyB9Ci0gICAgICAgIGNvbnN0IEludFNpemUmIGJvdHRvbUxl
ZnQoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbUxlZnQ7IH0KLSAgICAgICAgY29uc3QgSW50U2l6
ZSYgYm90dG9tUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbVJpZ2h0OyB9CisgICAgICAg
IHZvaWQgc2V0VG9wTGVmdChjb25zdCBMYXlvdXRTaXplJiBzaXplKSB7IG1fdG9wTGVmdCA9IHNp
emU7IH0KKyAgICAgICAgdm9pZCBzZXRUb3BSaWdodChjb25zdCBMYXlvdXRTaXplJiBzaXplKSB7
IG1fdG9wUmlnaHQgPSBzaXplOyB9CisgICAgICAgIHZvaWQgc2V0Qm90dG9tTGVmdChjb25zdCBM
YXlvdXRTaXplJiBzaXplKSB7IG1fYm90dG9tTGVmdCA9IHNpemU7IH0KKyAgICAgICAgdm9pZCBz
ZXRCb3R0b21SaWdodChjb25zdCBMYXlvdXRTaXplJiBzaXplKSB7IG1fYm90dG9tUmlnaHQgPSBz
aXplOyB9CisgICAgICAgIGNvbnN0IExheW91dFNpemUmIHRvcExlZnQoKSBjb25zdCB7IHJldHVy
biBtX3RvcExlZnQ7IH0KKyAgICAgICAgY29uc3QgTGF5b3V0U2l6ZSYgdG9wUmlnaHQoKSBjb25z
dCB7IHJldHVybiBtX3RvcFJpZ2h0OyB9CisgICAgICAgIGNvbnN0IExheW91dFNpemUmIGJvdHRv
bUxlZnQoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbUxlZnQ7IH0KKyAgICAgICAgY29uc3QgTGF5
b3V0U2l6ZSYgYm90dG9tUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbVJpZ2h0OyB9CiAK
ICAgICAgICAgYm9vbCBpc1plcm8oKSBjb25zdDsKIApAQCAtNjAsMzUgKzYwLDM1IEBAIHB1Ymxp
YzoKICAgICAgICAgdm9pZCBleGNsdWRlTG9naWNhbEVkZ2VzKGJvb2wgaXNIb3Jpem9udGFsLCBi
b29sIGV4Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgZXhjbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
OwogCiAgICAgICAgIHZvaWQgc2NhbGUoZmxvYXQgZmFjdG9yKTsKLSAgICAgICAgdm9pZCBleHBh
bmQoaW50IHRvcFdpZHRoLCBpbnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgsIGludCByaWdo
dFdpZHRoKTsKLSAgICAgICAgdm9pZCBleHBhbmQoaW50IHNpemUpIHsgZXhwYW5kKHNpemUsIHNp
emUsIHNpemUsIHNpemUpOyB9Ci0gICAgICAgIHZvaWQgc2hyaW5rKGludCB0b3BXaWR0aCwgaW50
IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQgcmlnaHRXaWR0aCkgeyBleHBhbmQoLXRv
cFdpZHRoLCAtYm90dG9tV2lkdGgsIC1sZWZ0V2lkdGgsIC1yaWdodFdpZHRoKTsgfQotICAgICAg
ICB2b2lkIHNocmluayhpbnQgc2l6ZSkgeyBzaHJpbmsoc2l6ZSwgc2l6ZSwgc2l6ZSwgc2l6ZSk7
IH0KKyAgICAgICAgdm9pZCBleHBhbmQoTGF5b3V0VW5pdCB0b3BXaWR0aCwgTGF5b3V0VW5pdCBi
b3R0b21XaWR0aCwgTGF5b3V0VW5pdCBsZWZ0V2lkdGgsIExheW91dFVuaXQgcmlnaHRXaWR0aCk7
CisgICAgICAgIHZvaWQgZXhwYW5kKExheW91dFVuaXQgc2l6ZSkgeyBleHBhbmQoc2l6ZSwgc2l6
ZSwgc2l6ZSwgc2l6ZSk7IH0KKyAgICAgICAgdm9pZCBzaHJpbmsoTGF5b3V0VW5pdCB0b3BXaWR0
aCwgTGF5b3V0VW5pdCBib3R0b21XaWR0aCwgTGF5b3V0VW5pdCBsZWZ0V2lkdGgsIExheW91dFVu
aXQgcmlnaHRXaWR0aCkgeyBleHBhbmQoLXRvcFdpZHRoLCAtYm90dG9tV2lkdGgsIC1sZWZ0V2lk
dGgsIC1yaWdodFdpZHRoKTsgfQorICAgICAgICB2b2lkIHNocmluayhMYXlvdXRVbml0IHNpemUp
IHsgc2hyaW5rKHNpemUsIHNpemUsIHNpemUsIHNpemUpOyB9CiAKICAgICBwcml2YXRlOgotICAg
ICAgICBJbnRTaXplIG1fdG9wTGVmdDsKLSAgICAgICAgSW50U2l6ZSBtX3RvcFJpZ2h0OwotICAg
ICAgICBJbnRTaXplIG1fYm90dG9tTGVmdDsKLSAgICAgICAgSW50U2l6ZSBtX2JvdHRvbVJpZ2h0
OworICAgICAgICBMYXlvdXRTaXplIG1fdG9wTGVmdDsKKyAgICAgICAgTGF5b3V0U2l6ZSBtX3Rv
cFJpZ2h0OworICAgICAgICBMYXlvdXRTaXplIG1fYm90dG9tTGVmdDsKKyAgICAgICAgTGF5b3V0
U2l6ZSBtX2JvdHRvbVJpZ2h0OwogICAgIH07CiAKLSAgICBleHBsaWNpdCBSb3VuZGVkSW50UmVj
dChjb25zdCBJbnRSZWN0JiwgY29uc3QgUmFkaWkmID0gUmFkaWkoKSk7Ci0gICAgUm91bmRlZElu
dFJlY3QoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotICAgIFJvdW5kZWRJ
bnRSZWN0KGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRT
aXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYg
Ym90dG9tUmlnaHQpOworICAgIGV4cGxpY2l0IFJvdW5kZWRSZWN0KGNvbnN0IExheW91dFJlY3Qm
LCBjb25zdCBSYWRpaSYgPSBSYWRpaSgpKTsKKyAgICBSb3VuZGVkUmVjdChMYXlvdXRVbml0IHgs
IExheW91dFVuaXQgeSwgTGF5b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCBoZWlnaHQpOworICAg
IFJvdW5kZWRSZWN0KGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBMYXlvdXRTaXplJiB0b3BMZWZ0
LCBjb25zdCBMYXlvdXRTaXplJiB0b3BSaWdodCwgY29uc3QgTGF5b3V0U2l6ZSYgYm90dG9tTGVm
dCwgY29uc3QgTGF5b3V0U2l6ZSYgYm90dG9tUmlnaHQpOwogCi0gICAgY29uc3QgSW50UmVjdCYg
cmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQorICAgIGNvbnN0IExheW91dFJlY3QmIHJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KICAgICBjb25zdCBSYWRpaSYgcmFkaWkoKSBj
b25zdCB7IHJldHVybiBtX3JhZGlpOyB9CiAgICAgYm9vbCBpc1JvdW5kZWQoKSBjb25zdCB7IHJl
dHVybiAhbV9yYWRpaS5pc1plcm8oKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVjdC5pc0VtcHR5KCk7IH0KIAotICAgIHZvaWQgc2V0UmVjdChjb25zdCBJbnRSZWN0
JiByZWN0KSB7IG1fcmVjdCA9IHJlY3Q7IH0KKyAgICB2b2lkIHNldFJlY3QoY29uc3QgTGF5b3V0
UmVjdCYgcmVjdCkgeyBtX3JlY3QgPSByZWN0OyB9CiAgICAgdm9pZCBzZXRSYWRpaShjb25zdCBS
YWRpaSYgcmFkaWkpIHsgbV9yYWRpaSA9IHJhZGlpOyB9CiAKLSAgICB2b2lkIG1vdmUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkgeyBtX3JlY3QubW92ZShzaXplKTsgfQotICAgIHZvaWQgaW5mbGF0ZShp
bnQgc2l6ZSkgeyBtX3JlY3QuaW5mbGF0ZShzaXplKTsgIH0KLSAgICB2b2lkIGluZmxhdGVXaXRo
UmFkaWkoaW50IHNpemUpOwotICAgIHZvaWQgZXhwYW5kUmFkaWkoaW50IHNpemUpIHsgbV9yYWRp
aS5leHBhbmQoc2l6ZSk7IH0KLSAgICB2b2lkIHNocmlua1JhZGlpKGludCBzaXplKSB7IG1fcmFk
aWkuc2hyaW5rKHNpemUpOyB9CisgICAgdm9pZCBtb3ZlKGNvbnN0IExheW91dFNpemUmIHNpemUp
IHsgbV9yZWN0Lm1vdmUoc2l6ZSk7IH0KKyAgICB2b2lkIGluZmxhdGUoTGF5b3V0VW5pdCBzaXpl
KSB7IG1fcmVjdC5pbmZsYXRlKHNpemUpOyAgfQorICAgIHZvaWQgaW5mbGF0ZVdpdGhSYWRpaShM
YXlvdXRVbml0IHNpemUpOworICAgIHZvaWQgZXhwYW5kUmFkaWkoTGF5b3V0VW5pdCBzaXplKSB7
IG1fcmFkaWkuZXhwYW5kKHNpemUpOyB9CisgICAgdm9pZCBzaHJpbmtSYWRpaShMYXlvdXRVbml0
IHNpemUpIHsgbV9yYWRpaS5zaHJpbmsoc2l6ZSk7IH0KIAogICAgIHZvaWQgaW5jbHVkZUxvZ2lj
YWxFZGdlcyhjb25zdCBSYWRpaSYgZWRnZXMsIGJvb2wgaXNIb3Jpem9udGFsLCBib29sIGluY2x1
ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgIHZv
aWQgZXhjbHVkZUxvZ2ljYWxFZGdlcyhib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBleGNsdWRlTG9n
aWNhbExlZnRFZGdlLCBib29sIGV4Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKQEAgLTk2LDE2ICs5
NiwxNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1JlbmRlcmFibGUoKSBjb25zdDsKIAogcHJpdmF0
ZToKLSAgICBJbnRSZWN0IG1fcmVjdDsKKyAgICBMYXlvdXRSZWN0IG1fcmVjdDsKICAgICBSYWRp
aSBtX3JhZGlpOwogfTsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSb3VuZGVkSW50
UmVjdDo6UmFkaWkmIGEsIGNvbnN0IFJvdW5kZWRJbnRSZWN0OjpSYWRpaSYgYikKK2lubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiBhLCBjb25zdCBSb3VuZGVk
UmVjdDo6UmFkaWkmIGIpCiB7CiAgICAgcmV0dXJuIGEudG9wTGVmdCgpID09IGIudG9wTGVmdCgp
ICYmIGEudG9wUmlnaHQoKSA9PSBiLnRvcFJpZ2h0KCkgJiYgYS5ib3R0b21MZWZ0KCkgPT0gYi5i
b3R0b21MZWZ0KCkgJiYgYS5ib3R0b21SaWdodCgpID09IGIuYm90dG9tUmlnaHQoKTsKIH0KIAot
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSb3VuZGVkSW50UmVjdCYgYSwgY29uc3QgUm91
bmRlZEludFJlY3QmIGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJvdW5kZWRSZWN0
JiBhLCBjb25zdCBSb3VuZGVkUmVjdCYgYikKIHsKICAgICByZXR1cm4gYS5yZWN0KCkgPT0gYi5y
ZWN0KCkgJiYgYS5yYWRpaSgpID09IGIucmFkaWkoKTsKIH0KQEAgLTExMyw0ICsxMTMsNCBAQCBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJvdW5kZWRJbnRSCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAotI2VuZGlmIC8vIFJvdW5kZWRJbnRSZWN0X2gKKyNlbmRpZiAvLyBSb3VuZGVk
UmVjdF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcAkocmV2aXNpb24gOTA4MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaGFkb3dCbHVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyLmdldCgpOwogICAgIH0KIAotICAg
IHZvaWQgc2V0TGFzdFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3Qg
Q29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgc2hh
ZG93UmVjdCwgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiByYWRpaSkKKyAgICB2b2lkIHNl
dExhc3RTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBj
b2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3Qs
IGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpCiAgICAgewogICAgICAgICBtX2xhc3RX
YXNJbnNldCA9IGZhbHNlOwogICAgICAgICBtX2xhc3RSYWRpdXMgPSByYWRpdXM7CkBAIC05Myw3
ICs5Myw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9sYXN0UmFkaWkgPSByYWRpaTsKICAgICB9CiAK
LSAgICB2b2lkIHNldExhc3RJbnNldFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1
cywgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IFJvdW5kZWRJ
bnRSZWN0OjpSYWRpaSYgcmFkaWkpCisgICAgdm9pZCBzZXRMYXN0SW5zZXRTaGFkb3dWYWx1ZXMo
Y29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3QgRmxvYXRSZWN0JiBzaGFk
b3dSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQogICAgIHsKICAgICAgICAg
bV9sYXN0V2FzSW5zZXQgPSB0cnVlOwogICAgICAgICBtX2xhc3RJbnNldEJvdW5kcyA9IGJvdW5k
czsKQEAgLTEwNCwxNCArMTA0LDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9sYXN0UmFkaWkgPSBy
YWRpaTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBtYXRjaGVzTGFzdFNoYWRvdyhjb25zdCBGbG9h
dFNpemUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Us
IGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlp
JiByYWRpaSkgY29uc3QKKyAgICBib29sIG1hdGNoZXNMYXN0U2hhZG93KGNvbnN0IEZsb2F0U2l6
ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29u
c3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlp
KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fbGFzdFdhc0luc2V0KQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gbV9sYXN0UmFkaXVzID09IHJhZGl1cyAmJiBt
X2xhc3RDb2xvciA9PSBjb2xvciAmJiBtX2xhc3RDb2xvclNwYWNlID09IGNvbG9yU3BhY2UgJiYg
c2hhZG93UmVjdCA9PSBtX2xhc3RTaGFkb3dSZWN0ICYmIHJhZGlpID09IG1fbGFzdFJhZGlpOwog
ICAgIH0KIAotICAgIGJvb2wgbWF0Y2hlc0xhc3RJbnNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUm
IHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0
IEZsb2F0UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IFJv
dW5kZWRJbnRSZWN0OjpSYWRpaSYgcmFkaWkpIGNvbnN0CisgICAgYm9vbCBtYXRjaGVzTGFzdElu
c2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIGNvbnN0IEZsb2F0
UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkgY29uc3QK
ICAgICB7CiAgICAgICAgIGlmICghbV9sYXN0V2FzSW5zZXQpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xNDksNyArMTQ5LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBGbG9hdFJlY3Qg
bV9sYXN0SW5zZXRCb3VuZHM7CiAgICAgRmxvYXRSZWN0IG1fbGFzdFNoYWRvd1JlY3Q7Ci0gICAg
Um91bmRlZEludFJlY3Q6OlJhZGlpIG1fbGFzdFJhZGlpOworICAgIFJvdW5kZWRSZWN0OjpSYWRp
aSBtX2xhc3RSYWRpaTsKICAgICBDb2xvciBtX2xhc3RDb2xvcjsKICAgICBDb2xvclNwYWNlIG1f
bGFzdENvbG9yU3BhY2U7CiAgICAgRmxvYXRTaXplIG1fbGFzdFJhZGl1czsKQEAgLTQ3Niw3ICs0
NzYsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZmZXIoR3JhcGhpCiAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QobV9sYXllck9yaWdpbiwgbV9zb3VyY2VS
ZWN0LnNpemUoKSkpOwogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlU2xpY2VTaXplc0Zyb21SYWRp
aShjb25zdCBJbnRTaXplJiB0d2ljZVJhZGl1cywgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlp
JiByYWRpaSwgaW50JiBsZWZ0U2xpY2UsIGludCYgcmlnaHRTbGljZSwgaW50JiB0b3BTbGljZSwg
aW50JiBib3R0b21TbGljZSkKK3N0YXRpYyB2b2lkIGNvbXB1dGVTbGljZVNpemVzRnJvbVJhZGlp
KGNvbnN0IEludFNpemUmIHR3aWNlUmFkaXVzLCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJh
ZGlpLCBpbnQmIGxlZnRTbGljZSwgaW50JiByaWdodFNsaWNlLCBpbnQmIHRvcFNsaWNlLCBpbnQm
IGJvdHRvbVNsaWNlKQogewogICAgIGxlZnRTbGljZSA9IHR3aWNlUmFkaXVzLndpZHRoKCkgKyBt
YXgocmFkaWkudG9wTGVmdCgpLndpZHRoKCksIHJhZGlpLmJvdHRvbUxlZnQoKS53aWR0aCgpKTsg
CiAgICAgcmlnaHRTbGljZSA9IHR3aWNlUmFkaXVzLndpZHRoKCkgKyBtYXgocmFkaWkudG9wUmln
aHQoKS53aWR0aCgpLCByYWRpaS5ib3R0b21SaWdodCgpLndpZHRoKCkpOyAKQEAgLTQ4NSw3ICs0
ODUsNyBAQCBzdGF0aWMgdm9pZCBjb21wdXRlU2xpY2VTaXplc0Zyb21SYWRpaShjCiAgICAgYm90
dG9tU2xpY2UgPSB0d2ljZVJhZGl1cy5oZWlnaHQoKSArIG1heChyYWRpaS5ib3R0b21MZWZ0KCku
aGVpZ2h0KCksIHJhZGlpLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkpOwogfQogCi1JbnRTaXplIFNo
YWRvd0JsdXI6OnRlbXBsYXRlU2l6ZShjb25zdCBJbnRTaXplJiByYWRpdXNQYWRkaW5nLCBjb25z
dCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmIHJhZGlpKSBjb25zdAorSW50U2l6ZSBTaGFkb3dCbHVy
Ojp0ZW1wbGF0ZVNpemUoY29uc3QgSW50U2l6ZSYgcmFkaXVzUGFkZGluZywgY29uc3QgUm91bmRl
ZFJlY3Q6OlJhZGlpJiByYWRpaSkgY29uc3QKIHsKICAgICBjb25zdCBpbnQgdGVtcGxhdGVTaWRl
TGVuZ3RoID0gMTsKIApAQCAtNTAzLDcgKzUwMyw3IEBAIEludFNpemUgU2hhZG93Qmx1cjo6dGVt
cGxhdGVTaXplKGNvbnN0IEkKICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVNpZGVMZW5ndGgg
KyB0b3BTbGljZSArIGJvdHRvbVNsaWNlKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVj
dFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBzaGFkb3dlZFJlY3QsIGNvbnN0IFJvdW5kZWRJbnRSZWN0OjpSYWRpaSYgcmFkaWkpCit2b2lk
IFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJh
ZGlpJiByYWRpaSkKIHsKICAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91
bmRpbmdSZWN0KGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRSZWN0LCBncmFwaGljc0NvbnRleHQt
PmNsaXBCb3VuZHMoKSk7CiAgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCkBAIC01MzAsNyAr
NTMwLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljcwogICAgIGRy
YXdSZWN0U2hhZG93V2l0aFRpbGluZyhncmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdCwgcmFk
aWksIHRlbXBsYXRlU2l6ZSwgZWRnZVNpemUpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdJ
bnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkSW50UmVj
dDo6UmFkaWkmIGhvbGVSYWRpaSkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgaG9sZVJh
ZGlpKQogewogICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1Jl
Y3QoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBncmFwaGljc0NvbnRleHQtPmNsaXBCb3VuZHMoKSk7
CiAgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCkBAIC01NTcsNyArNTU3LDcgQEAgdm9pZCBT
aGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coR3JhcGhpYwogICAgIGRyYXdJbnNldFNoYWRvd1dp
dGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBob2xlUmVjdCwgaG9sZVJhZGlpLCB0ZW1w
bGF0ZVNpemUsIGVkZ2VTaXplKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRv
d1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmIHJhZGlp
LCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hh
ZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWks
IGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKIHsKICAgICBtX2xheWVySW1hZ2UgPSBTY3JhdGNo
QnVmZmVyOjpzaGFyZWQoKS5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5zaXplKCkpOwogICAg
IGlmICghbV9sYXllckltYWdlKQpAQCAtNTkxLDcgKzU5MSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6
ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGkKICAgICBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zY2hl
ZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgUm91
bmRlZEludFJlY3Q6OlJhZGlpJiBob2xlUmFkaWksIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkK
K3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9h
dFJlY3QmIGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIGhvbGVSYWRpaSwgY29u
c3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogewogICAgIG1fbGF5ZXJJbWFnZSA9IFNjcmF0Y2hCdWZm
ZXI6OnNoYXJlZCgpLmdldFNjcmF0Y2hCdWZmZXIobGF5ZXJSZWN0LnNpemUoKSk7CiAgICAgaWYg
KCFtX2xheWVySW1hZ2UpCkBAIC02NjQsNyArNjY0LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3dXaXRob3V0VAogICAgICB0aGUgc2hhZG93LgogICovCiAKLXZvaWQgU2hhZG93
Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0
LCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiB0ZW1w
bGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IFJv
dW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSwgY29u
c3QgSW50U2l6ZSYgZWRnZVNpemUpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJT
aGFkb3coKTsKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNo
YWRvd1dpdGhUaWxpCiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2NoZWR1bGVTY3JhdGNo
QnVmZmVyUHVyZ2UoKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhU
aWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
c2hhZG93ZWRSZWN0LCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJ
bnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQordm9pZCBTaGFk
b3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBSb3VuZGVkUmVj
dDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNp
emUmIGVkZ2VTaXplKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqZ3JhcGhpY3NDb250ZXh0KTsKICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93KCk7
CkBAIC03NjksNyArNzY5LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhU
aWxpbgogICAgIFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1
cmdlKCk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd0JvdW5kcywgY29u
c3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgSW50U2l6ZSYgYnVmZmVyUGFk
ZGluZywgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBTaGFkb3dEaXJlY3Rpb24gZGlyZWN0
aW9uKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93Qm91bmRzLCBjb25zdCBSb3Vu
ZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiBidWZmZXJQYWRkaW5nLCBjb25z
dCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIFNoYWRvd0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAg
ICAgY29uc3QgSW50U2l6ZSB0d2ljZVJhZGl1cyA9IEludFNpemUoYnVmZmVyUGFkZGluZy53aWR0
aCgpICogMiwgYnVmZmVyUGFkZGluZy5oZWlnaHQoKSAqIDIpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCShyZXZpc2lvbiA5MDgyMikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAi
Q29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIlJvdW5kZWRJ
bnRSZWN0LmgiCisjaW5jbHVkZSAiUm91bmRlZFJlY3QuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjEsOCArNjEsOCBAQCBwdWJsaWM6
CiAgICAgR3JhcGhpY3NDb250ZXh0KiBiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhKTsKICAgICB2b2lkIGVuZFNoYWRvd0xheWVyKEdy
YXBoaWNzQ29udGV4dCopOwogCi0gICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmKTsKLSAg
ICB2b2lkIGRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkm
IGhvbGVSYWRpaSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmKTsKKyAgICB2b2lkIGRy
YXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmIGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIGhvbGVSYWRpaSk7
CiAKICAgICB2b2lkIGJsdXJMYXllckltYWdlKHVuc2lnbmVkIGNoYXIqLCBjb25zdCBJbnRTaXpl
JiwgaW50IHN0cmlkZSk7CiAKQEAgLTgyLDE1ICs4MiwxNSBAQCBwcml2YXRlOgogICAgIH07CiAg
ICAgCiAgICAgSW50UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3Qp
OwotICAgIEludFNpemUgdGVtcGxhdGVTaXplKGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6
ZSwgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJikgY29uc3Q7CisgICAgSW50U2l6ZSB0ZW1w
bGF0ZVNpemUoY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplLCBjb25zdCBSb3VuZGVkUmVj
dDo6UmFkaWkmKSBjb25zdDsKIAotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5n
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJvdW5kZWRJbnRSZWN0
OjpSYWRpaSYsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7Ci0gICAgdm9pZCBkcmF3UmVjdFNo
YWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
Um91bmRlZEludFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50U2l6ZSYgc2hhZG93VGVtcGxhdGVTaXpl
LCBjb25zdCBJbnRTaXplJiBibHVycmVkRWRnZVNpemUpOworICAgIHZvaWQgZHJhd1JlY3RTaGFk
b3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9p
ZCBkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50U2l6ZSYgc2hhZG93VGVt
cGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBibHVycmVkRWRnZVNpemUpOwogCi0gICAgdm9pZCBk
cmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IFJvdW5kZWRJbnRSZWN0OjpS
YWRpaSYsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7Ci0gICAgdm9pZCBkcmF3SW5zZXRTaGFk
b3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IFJvdW5kZWRJbnRSZWN0OjpSYWRpaSYsIGNvbnN0IElu
dFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXpl
KTsKKyAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgUm91
bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKKyAgICB2b2lkIGRy
YXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiBob2xlUmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiwg
Y29uc3QgSW50U2l6ZSYgc2hhZG93VGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBibHVycmVk
RWRnZVNpemUpOwogICAgIAotICAgIHZvaWQgZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93Qm91bmRzLCBjb25zdCBSb3VuZGVkSW50UmVjdDo6
UmFkaWkmLCBjb25zdCBJbnRTaXplJiByb3VuZGVkUmFkaXVzLCBjb25zdCBJbnRTaXplJiB0ZW1w
bGF0ZVNpemUsIFNoYWRvd0RpcmVjdGlvbik7CisgICAgdm9pZCBkcmF3TGF5ZXJQaWVjZXMoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IFJvdW5k
ZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFNpemUmIHJvdW5kZWRSYWRpdXMsIGNvbnN0IEludFNp
emUmIHRlbXBsYXRlU2l6ZSwgU2hhZG93RGlyZWN0aW9uKTsKICAgICAKICAgICB2b2lkIGJsdXJT
aGFkb3dCdWZmZXIoY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplKTsKICAgICB2b2lkIGJsdXJB
bmRDb2xvclNoYWRvd0J1ZmZlcihjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gOTA4MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcwMyw3ICs3MDMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxv
CiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwg
Q0dTaXplWmVybywgMCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KEZs
b2F0U2l6ZShzaGFkb3dCbHVyLCBzaGFkb3dCbHVyKSwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQsIG1f
c3RhdGUuc2hhZG93Q29sb3IsIG1fc3RhdGUuc2hhZG93Q29sb3JTcGFjZSk7Ci0gICAgICAgIGNv
bnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywgcmVjdCwgUm91bmRlZEludFJlY3Q6OlJh
ZGlpKCkpOworICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3Qs
IFJvdW5kZWRSZWN0OjpSYWRpaSgpKTsKICAgICB9CiAKICAgICBDR0NvbnRleHRGaWxsUmVjdChj
b250ZXh0LCByZWN0KTsKQEAgLTczMiw3ICs3MzIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3QoY29uc3QgRmxvCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihw
bGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1
ciBjb250ZXh0U2hhZG93KEZsb2F0U2l6ZShzaGFkb3dCbHVyLCBzaGFkb3dCbHVyKSwgbV9zdGF0
ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Q29sb3IsIG1fc3RhdGUuc2hhZG93Q29sb3JT
cGFjZSk7Ci0gICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywgcmVjdCwg
Um91bmRlZEludFJlY3Q6OlJhZGlpKCkpOworICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0
U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSgpKTsKICAgICB9CiAKICAgICBD
R0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCByZWN0KTsKQEAgLTc2NSw3ICs3NjUsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvCiAgICAgICAgIENHQ29udGV4dFNl
dFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAK
ICAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KEZsb2F0U2l6ZShzaGFkb3dCbHVyLCBz
aGFkb3dCbHVyKSwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Q29sb3IsIG1f
c3RhdGUuc2hhZG93Q29sb3JTcGFjZSk7Ci0gICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RT
aGFkb3codGhpcywgcmVjdCwgUm91bmRlZEludFJlY3Q6OlJhZGlpKHRvcExlZnQsIHRvcFJpZ2h0
LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCkpOworICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdS
ZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdo
dCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpKTsKICAgICB9CiAKICAgICBib29sIGVxdWFsV2lk
dGhzID0gKHRvcExlZnQud2lkdGgoKSA9PSB0b3BSaWdodC53aWR0aCgpICYmIHRvcFJpZ2h0Lndp
ZHRoKCkgPT0gYm90dG9tTGVmdC53aWR0aCgpICYmIGJvdHRvbUxlZnQud2lkdGgoKSA9PSBib3R0
b21SaWdodC53aWR0aCgpKTsKQEAgLTc4Niw3ICs3ODYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZmlsbFJvdW5kZWRSZWN0KGNvCiAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9s
ZEZpbGxDb2xvciwgb2xkQ29sb3JTcGFjZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpm
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBSb3VuZGVk
SW50UmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9s
ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0
LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gOTA4MjIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUwLDcgKzg1MCw3
IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW4KICAgICAgICAgLy8g
VG8gYXZvaWQgdGhlIGJhY2tncm91bmQgY29sb3IgYmxlZWRpbmcgb3V0IGJlaGluZCB0aGUgYm9y
ZGVyLCB3ZSdsbCByZW5kZXIgYmFja2dyb3VuZCBhbmQgYm9yZGVyCiAgICAgICAgIC8vIGludG8g
YSB0cmFuc3BhcmVuY3kgbGF5ZXIsIGFuZCB0aGVuIGNsaXAgdGhhdCBpbiBvbmUgZ28gKHdoaWNo
IHJlcXVpcmVzIHNldHRpbmcgdXAgdGhlIGNsaXAgYmVmb3JlCiAgICAgICAgIC8vIGJlZ2lubmlu
ZyB0aGUgbGF5ZXIpLgotICAgICAgICBSb3VuZGVkSW50UmVjdCBib3JkZXIgPSBzdHlsZSgpLT5n
ZXRSb3VuZGVkQm9yZGVyRm9yKHBhaW50UmVjdCk7CisgICAgICAgIFJvdW5kZWRSZWN0IGJvcmRl
ciA9IHN0eWxlKCktPmdldFJvdW5kZWRCb3JkZXJGb3IocGFpbnRSZWN0KTsKICAgICAgICAgc3Rh
dGVTYXZlci5zYXZlKCk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVj
dENsaXAoYm9yZGVyKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXIoMSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDkwODIyKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYz
LDEyICs1NjMsMTIgQEAgaW50IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nRW5kKGJvbwog
ICAgIHJldHVybiBwYWRkaW5nLmNhbGNNaW5WYWx1ZSh3KTsKIH0KIAotUm91bmRlZEludFJlY3Qg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OmdldEJhY2tncm91bmRSb3VuZGVkUmVjdChjb25zdCBJbnRS
ZWN0JiBib3JkZXJSZWN0LCBJbmxpbmVGbG93Qm94KiBib3gsIGludCBpbmxpbmVCb3hXaWR0aCwg
aW50IGlubGluZUJveEhlaWdodCwKK1JvdW5kZWRSZWN0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpn
ZXRCYWNrZ3JvdW5kUm91bmRlZFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgSW5s
aW5lRmxvd0JveCogYm94LCBMYXlvdXRVbml0IGlubGluZUJveFdpZHRoLCBMYXlvdXRVbml0IGlu
bGluZUJveEhlaWdodCwKICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpCiB7Ci0gICAgUm91bmRlZEludFJlY3QgYm9yZGVyID0gc3R5
bGUoKS0+Z2V0Um91bmRlZEJvcmRlckZvcihib3JkZXJSZWN0LCBpbmNsdWRlTG9naWNhbExlZnRF
ZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CisgICAgUm91bmRlZFJlY3QgYm9yZGVyID0g
c3R5bGUoKS0+Z2V0Um91bmRlZEJvcmRlckZvcihib3JkZXJSZWN0LCBpbmNsdWRlTG9naWNhbExl
ZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgaWYgKGJveCAmJiAoYm94LT5u
ZXh0TGluZUJveCgpIHx8IGJveC0+cHJldkxpbmVCb3goKSkpIHsKLSAgICAgICAgUm91bmRlZElu
dFJlY3Qgc2VnbWVudEJvcmRlciA9IHN0eWxlKCktPmdldFJvdW5kZWRCb3JkZXJGb3IoSW50UmVj
dCgwLCAwLCBpbmxpbmVCb3hXaWR0aCwgaW5saW5lQm94SGVpZ2h0KSwgaW5jbHVkZUxvZ2ljYWxM
ZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgICAgICBSb3VuZGVkUmVjdCBz
ZWdtZW50Qm9yZGVyID0gc3R5bGUoKS0+Z2V0Um91bmRlZEJvcmRlckZvcihMYXlvdXRSZWN0KDAs
IDAsIGlubGluZUJveFdpZHRoLCBpbmxpbmVCb3hIZWlnaHQpLCBpbmNsdWRlTG9naWNhbExlZnRF
ZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgICAgIGJvcmRlci5zZXRSYWRpaShz
ZWdtZW50Qm9yZGVyLnJhZGlpKCkpOwogICAgIH0KIApAQCAtNjMxLDcgKzYzMSw3IEBAIHZvaWQg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWUKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICBpZiAoaGFzUm91bmRlZEJvcmRlciAmJiBibGVlZEF2b2lkYW5jZSAhPSBCYWNr
Z3JvdW5kQmxlZWRVc2VUcmFuc3BhcmVuY3lMYXllcikgewotICAgICAgICAgICAgUm91bmRlZElu
dFJlY3QgYm9yZGVyID0gZ2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KGJhY2tncm91bmRSZWN0QWRq
dXN0ZWRGb3JCbGVlZEF2b2lkYW5jZShjb250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5jZSksIGJv
eCwgYm94U2l6ZS53aWR0aCgpLCBib3hTaXplLmhlaWdodCgpLCBpbmNsdWRlTGVmdEVkZ2UsIGlu
Y2x1ZGVSaWdodEVkZ2UpOworICAgICAgICAgICAgUm91bmRlZFJlY3QgYm9yZGVyID0gZ2V0QmFj
a2dyb3VuZFJvdW5kZWRSZWN0KGJhY2tncm91bmRSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5j
ZShjb250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5jZSksIGJveCwgYm94U2l6ZS53aWR0aCgpLCBi
b3hTaXplLmhlaWdodCgpLCBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOwogICAg
ICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KGJvcmRlciwgYmdDb2xvciwgc3R5bGUo
KS0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBjb250ZXh0LT5m
aWxsUmVjdChyZWN0LCBiZ0NvbG9yLCBzdHlsZSgpLT5jb2xvclNwYWNlKCkpOwpAQCAtNjQyLDcg
KzY0Miw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWUKICAgICBi
b29sIGNsaXBUb0JvcmRlclJhZGl1cyA9IGhhc1JvdW5kZWRCb3JkZXIgJiYgYmxlZWRBdm9pZGFu
Y2UgIT0gQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXI7CiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBjbGlwVG9Cb3JkZXJTdGF0ZVNhdmVyKCpjb250ZXh0LCBjbGlwVG9C
b3JkZXJSYWRpdXMpOwogICAgIGlmIChjbGlwVG9Cb3JkZXJSYWRpdXMpIHsKLSAgICAgICAgUm91
bmRlZEludFJlY3QgYm9yZGVyID0gZ2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KGJhY2tncm91bmRS
ZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZShjb250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5j
ZSksIGJveCwgYm94U2l6ZS53aWR0aCgpLCBib3hTaXplLmhlaWdodCgpLCBpbmNsdWRlTGVmdEVk
Z2UsIGluY2x1ZGVSaWdodEVkZ2UpOworICAgICAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBnZXRC
YWNrZ3JvdW5kUm91bmRlZFJlY3QoYmFja2dyb3VuZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRh
bmNlKGNvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlKSwgYm94LCBib3hTaXplLndpZHRoKCks
IGJveFNpemUuaGVpZ2h0KCksIGluY2x1ZGVMZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSk7CiAg
ICAgICAgIGNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChib3JkZXIpOwogICAgIH0KICAgICAK
QEAgLTEyMjksNyArMTIyOSw3IEBAIHN0YXRpYyBib29sIGpvaW5SZXF1aXJlc01pdHJlKEJveFNp
ZGUgc2kKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSb3VuZGVkSW50UmVjdCYgb3V0ZXJCb3JkZXIs
IGNvbnN0IFJvdW5kZWRJbnRSZWN0JiBpbm5lckJvcmRlciwKK3ZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3Jk
ZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAgICBjb25zdCBJbnRSZWN0JiBz
aWRlUmVjdCwgQm94U2lkZSBzaWRlLCBCb3hTaWRlIGFkamFjZW50U2lkZTEsIEJveFNpZGUgYWRq
YWNlbnRTaWRlMiwgY29uc3QgQm9yZGVyRWRnZSBlZGdlc1tdLCBjb25zdCBQYXRoKiBwYXRoLCAK
ICAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRp
YWxpYXMsIGNvbnN0IENvbG9yKiBvdmVycmlkZUNvbG9yKQogewpAQCAtMTI2Nyw3ICsxMjY3LDcg
QEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRPbmVCb3JkZQogICAgIH0KIH0KIAot
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSb3Vu
ZGVkSW50UmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRJbnRSZWN0JiBpbm5lckJvcmRl
ciwKK3ZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3Qg
Um91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJvcmRl
ckVkZ2UgZWRnZXNbXSwgQm9yZGVyRWRnZUZsYWdzIGVkZ2VTZXQsIEJhY2tncm91bmRCbGVlZEF2
b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlLCBib29sIGFudGlhbGlhcywgY29uc3QgQ29sb3IqIG92ZXJyaWRlQ29sb3Ip
CiB7CkBAIC0xMjc4LDcgKzEyNzgsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEJvcmRlclNpCiAgICAgICAgIHJvdW5kZWRQYXRoLmFkZFJvdW5kZWRSZWN0KG91dGVyQm9yZGVy
KTsKICAgICAKICAgICBpZiAoZWRnZXNbQlNUb3BdLnNob3VsZFJlbmRlcigpICYmIGluY2x1ZGVz
RWRnZShlZGdlU2V0LCBCU1RvcCkpIHsKLSAgICAgICAgSW50UmVjdCBzaWRlUmVjdCA9IG91dGVy
Qm9yZGVyLnJlY3QoKTsKKyAgICAgICAgTGF5b3V0UmVjdCBzaWRlUmVjdCA9IG91dGVyQm9yZGVy
LnJlY3QoKTsKICAgICAgICAgc2lkZVJlY3Quc2V0SGVpZ2h0KGVkZ2VzW0JTVG9wXS53aWR0aCk7
CiAKICAgICAgICAgYm9vbCB1c2VQYXRoID0gcmVuZGVyUmFkaWkgJiYgKGJvcmRlclN0eWxlSGFz
SW5uZXJEZXRhaWwoZWRnZXNbQlNUb3BdLnN0eWxlKSB8fCBib3JkZXJXaWxsQXJjSW5uZXJFZGdl
KGlubmVyQm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLCBpbm5lckJvcmRlci5yYWRpaSgpLnRvcFJp
Z2h0KCkpKTsKQEAgLTEyODYsNyArMTI4Niw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50Qm9yZGVyU2kKICAgICB9CiAKICAgICBpZiAoZWRnZXNbQlNCb3R0b21dLnNob3VsZFJl
bmRlcigpICYmIGluY2x1ZGVzRWRnZShlZGdlU2V0LCBCU0JvdHRvbSkpIHsKLSAgICAgICAgSW50
UmVjdCBzaWRlUmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKKyAgICAgICAgTGF5b3V0UmVjdCBz
aWRlUmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKICAgICAgICAgc2lkZVJlY3Quc2hpZnRZRWRn
ZVRvKHNpZGVSZWN0Lm1heFkoKSAtIGVkZ2VzW0JTQm90dG9tXS53aWR0aCk7CiAKICAgICAgICAg
Ym9vbCB1c2VQYXRoID0gcmVuZGVyUmFkaWkgJiYgKGJvcmRlclN0eWxlSGFzSW5uZXJEZXRhaWwo
ZWRnZXNbQlNCb3R0b21dLnN0eWxlKSB8fCBib3JkZXJXaWxsQXJjSW5uZXJFZGdlKGlubmVyQm9y
ZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBpbm5lckJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0
KCkpKTsKQEAgLTEyOTQsNyArMTI5NCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50Qm9yZGVyU2kKICAgICB9CiAKICAgICBpZiAoZWRnZXNbQlNMZWZ0XS5zaG91bGRSZW5kZXIo
KSAmJiBpbmNsdWRlc0VkZ2UoZWRnZVNldCwgQlNMZWZ0KSkgewotICAgICAgICBJbnRSZWN0IHNp
ZGVSZWN0ID0gb3V0ZXJCb3JkZXIucmVjdCgpOworICAgICAgICBMYXlvdXRSZWN0IHNpZGVSZWN0
ID0gb3V0ZXJCb3JkZXIucmVjdCgpOwogICAgICAgICBzaWRlUmVjdC5zZXRXaWR0aChlZGdlc1tC
U0xlZnRdLndpZHRoKTsKIAogICAgICAgICBib29sIHVzZVBhdGggPSByZW5kZXJSYWRpaSAmJiAo
Ym9yZGVyU3R5bGVIYXNJbm5lckRldGFpbChlZGdlc1tCU0xlZnRdLnN0eWxlKSB8fCBib3JkZXJX
aWxsQXJjSW5uZXJFZGdlKGlubmVyQm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBpbm5lckJv
cmRlci5yYWRpaSgpLnRvcExlZnQoKSkpOwpAQCAtMTMwMiw3ICsxMzAyLDcgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXJTaQogICAgIH0KIAogICAgIGlmIChlZGdlc1tC
U1JpZ2h0XS5zaG91bGRSZW5kZXIoKSAmJiBpbmNsdWRlc0VkZ2UoZWRnZVNldCwgQlNSaWdodCkp
IHsKLSAgICAgICAgSW50UmVjdCBzaWRlUmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKKyAgICAg
ICAgTGF5b3V0UmVjdCBzaWRlUmVjdCA9IG91dGVyQm9yZGVyLnJlY3QoKTsKICAgICAgICAgc2lk
ZVJlY3Quc2hpZnRYRWRnZVRvKHNpZGVSZWN0Lm1heFgoKSAtIGVkZ2VzW0JTUmlnaHRdLndpZHRo
KTsKIAogICAgICAgICBib29sIHVzZVBhdGggPSByZW5kZXJSYWRpaSAmJiAoYm9yZGVyU3R5bGVI
YXNJbm5lckRldGFpbChlZGdlc1tCU1JpZ2h0XS5zdHlsZSkgfHwgYm9yZGVyV2lsbEFyY0lubmVy
RWRnZShpbm5lckJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCksIGlubmVyQm9yZGVyLnJhZGlp
KCkudG9wUmlnaHQoKSkpOwpAQCAtMTMxMCw3ICsxMzEwLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3JkZXJTaQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFJvdW5kZWRJbnRSZWN0
JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZEludFJlY3QmIGlubmVyQm9yZGVyLAordm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0
IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVk
QXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzKQogewogICAgIEJvcmRlckVkZ2VGbGFncyBlZGdl
c1RvRHJhdyA9IEFsbEJvcmRlckVkZ2VzOwpAQCAtMTM2Myw4ICsxMzYzLDggQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoRwogICAgIEJvcmRlckVkZ2UgZWRnZXNbNF07
CiAgICAgZ2V0Qm9yZGVyRWRnZUluZm8oZWRnZXMsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGlu
Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIAotICAgIFJvdW5kZWRJbnRSZWN0IG91dGVyQm9yZGVy
ID0gc3R5bGUtPmdldFJvdW5kZWRCb3JkZXJGb3IocmVjdCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRn
ZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwotICAgIFJvdW5kZWRJbnRSZWN0IGlubmVyQm9y
ZGVyID0gc3R5bGUtPmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihyZWN0LCBpbmNsdWRlTG9naWNh
bExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CisgICAgUm91bmRlZFJlY3Qgb3V0
ZXJCb3JkZXIgPSBzdHlsZS0+Z2V0Um91bmRlZEJvcmRlckZvcihyZWN0LCBpbmNsdWRlTG9naWNh
bExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CisgICAgUm91bmRlZFJlY3QgaW5u
ZXJCb3JkZXIgPSBzdHlsZS0+Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKHJlY3QsIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIAogICAgIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgY3VycmVudENUTSA9IGdyYXBoaWNzQ29udGV4dC0+Z2V0Q1RNKCk7CiAg
ICAgLy8gRklYTUU6IHRoaXMgaXNuJ3QgcXVpdGUgY29ycmVjdC4gV2UgbWF5IHdhbnQgdG8gYW50
aWFsaWFzIHdoZW4gc2NhbGVkIGJ5IGEgbm9uLWludGVncmFsIHZhbHVlLCBvciB3aGVuIHRoZSB0
cmFuc2xhdGlvbiBpcyBub24taW50ZWdyYWwuCkBAIC0xNTE2LDcgKzE1MTYsNyBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyCiAgICAgICAgIC8vIERyYXcgaW5uZXIg
Ym9yZGVyIGxpbmUKICAgICAgICAgewogICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQpOwotICAgICAgICAgICAgUm91bmRlZElu
dFJlY3QgaW5uZXJDbGlwID0gc3R5bGUtPmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihib3JkZXJS
ZWN0LAorICAgICAgICAgICAgUm91bmRlZFJlY3QgaW5uZXJDbGlwID0gc3R5bGUtPmdldFJvdW5k
ZWRJbm5lckJvcmRlckZvcihib3JkZXJSZWN0LAogICAgICAgICAgICAgICAgIGlubmVyQm9yZGVy
VG9wV2lkdGgsIGlubmVyQm9yZGVyQm90dG9tV2lkdGgsIGlubmVyQm9yZGVyTGVmdFdpZHRoLCBp
bm5lckJvcmRlclJpZ2h0V2lkdGgsCiAgICAgICAgICAgICAgICAgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgICAgICAgICAgCkBAIC0xNTM2LDcg
KzE1MzYsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyCiAgICAg
ICAgICAgICAgICAgKytvdXRlckJvcmRlclJpZ2h0V2lkdGg7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICBSb3VuZGVkSW50UmVjdCBvdXRlckNsaXAgPSBzdHls
ZS0+Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKG91dGVyUmVjdCwKKyAgICAgICAgICAgIFJvdW5k
ZWRSZWN0IG91dGVyQ2xpcCA9IHN0eWxlLT5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3Iob3V0ZXJS
ZWN0LAogICAgICAgICAgICAgICAgIG91dGVyQm9yZGVyVG9wV2lkdGgsIG91dGVyQm9yZGVyQm90
dG9tV2lkdGgsIG91dGVyQm9yZGVyTGVmdFdpZHRoLCBvdXRlckJvcmRlclJpZ2h0V2lkdGgsCiAg
ICAgICAgICAgICAgICAgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3Qo
b3V0ZXJDbGlwKTsKQEAgLTE1NjIsMTIgKzE1NjIsMTIgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6ZHJhd0JveFNpZGVGcgogCiAgICAgICAgIC8vIFBhaW50IGlubmVyIG9ubHkKICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQp
OwotICAgICAgICBpbnQgdG9wV2lkdGggPSBlZGdlc1tCU1RvcF0udXNlZFdpZHRoKCkgLyAyOwot
ICAgICAgICBpbnQgYm90dG9tV2lkdGggPSBlZGdlc1tCU0JvdHRvbV0udXNlZFdpZHRoKCkgLyAy
OwotICAgICAgICBpbnQgbGVmdFdpZHRoID0gZWRnZXNbQlNMZWZ0XS51c2VkV2lkdGgoKSAvIDI7
Ci0gICAgICAgIGludCByaWdodFdpZHRoID0gZWRnZXNbQlNSaWdodF0udXNlZFdpZHRoKCkgLyAy
OworICAgICAgICBMYXlvdXRVbml0IHRvcFdpZHRoID0gZWRnZXNbQlNUb3BdLnVzZWRXaWR0aCgp
IC8gMjsKKyAgICAgICAgTGF5b3V0VW5pdCBib3R0b21XaWR0aCA9IGVkZ2VzW0JTQm90dG9tXS51
c2VkV2lkdGgoKSAvIDI7CisgICAgICAgIExheW91dFVuaXQgbGVmdFdpZHRoID0gZWRnZXNbQlNM
ZWZ0XS51c2VkV2lkdGgoKSAvIDI7CisgICAgICAgIExheW91dFVuaXQgcmlnaHRXaWR0aCA9IGVk
Z2VzW0JTUmlnaHRdLnVzZWRXaWR0aCgpIC8gMjsKIAotICAgICAgICBSb3VuZGVkSW50UmVjdCBj
bGlwUmVjdCA9IHN0eWxlLT5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVyUmVjdCwKKyAg
ICAgICAgUm91bmRlZFJlY3QgY2xpcFJlY3QgPSBzdHlsZS0+Z2V0Um91bmRlZElubmVyQm9yZGVy
Rm9yKGJvcmRlclJlY3QsCiAgICAgICAgICAgICB0b3BXaWR0aCwgYm90dG9tV2lkdGgsIGxlZnRX
aWR0aCwgcmlnaHRXaWR0aCwKICAgICAgICAgICAgIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGlu
Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIApAQCAtMTYyMiw3ICsxNjIyLDcgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoRwogICAgIGJvb2wgcmVuZGVyQm90dG9tID0g
Ym90dG9tU3R5bGUgPiBCSElEREVOICYmICFib3R0b21UcmFuc3BhcmVudCAmJiAoaG9yaXpvbnRh
bCB8fCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAKIAotICAgIFJvdW5kZWRJbnRSZWN0IGJv
cmRlcihyZWN0KTsKKyAgICBSb3VuZGVkUmVjdCBib3JkZXIocmVjdCk7CiAgICAgCiAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQsIGZhbHNl
KTsKICAgICBpZiAoc3R5bGUtPmhhc0JvcmRlclJhZGl1cygpKSB7CkBAIC0xOTI2LDcgKzE5MjYs
NyBAQCBzdGF0aWMgdm9pZCBmaW5kSW5uZXJWZXJ0ZXgoY29uc3QgRmxvYXRQCiAgICAgICAgIGZp
bmRJbnRlcnNlY3Rpb24ob3V0ZXJDb3JuZXIsIGlubmVyQ29ybmVyLCBGbG9hdFBvaW50KDAsIGNl
bnRlclBvaW50LnkoKSksIEZsb2F0UG9pbnQoMTAwLCBjZW50ZXJQb2ludC55KCkpLCByZXN1bHQp
OwogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24o
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJvdW5kZWRJbnRSZWN0JiBv
dXRlckJvcmRlciwgY29uc3QgUm91bmRlZEludFJlY3QmIGlubmVyQm9yZGVyLAordm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJv
dW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCb3hTaWRlIHNpZGUsIGJvb2wgZmlyc3RFZGdlTWF0Y2hlcywgYm9v
bCBzZWNvbmRFZGdlTWF0Y2hlcykKIHsKICAgICBGbG9hdFBvaW50IHF1YWRbNF07CkBAIC0yMDk3
LDcgKzIwOTcsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvCiAg
ICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCAhcy0+Ym94U2hhZG93KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJvdW5kZWRJbnRSZWN0IGJvcmRlciA9IChzaGFkb3dTdHls
ZSA9PSBJbnNldCkgPyBzLT5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IocGFpbnRSZWN0LCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKKyAgICBSb3VuZGVk
UmVjdCBib3JkZXIgPSAoc2hhZG93U3R5bGUgPT0gSW5zZXQpID8gcy0+Z2V0Um91bmRlZElubmVy
Qm9yZGVyRm9yKHBhaW50UmVjdCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6IHMtPmdldFJvdW5kZWRCb3JkZXJGb3IocGFpbnRSZWN0LCBpbmNsdWRlTG9naWNh
bExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAKICAgICBib29sIGhhc0JvcmRl
clJhZGl1cyA9IHMtPmhhc0JvcmRlclJhZGl1cygpOwpAQCAtMjExOCw3ICsyMTE4LDcgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkbwogICAgICAgICBjb25zdCBDb2xv
ciYgc2hhZG93Q29sb3IgPSBzaGFkb3ctPmNvbG9yKCk7CiAKICAgICAgICAgaWYgKHNoYWRvdy0+
c3R5bGUoKSA9PSBOb3JtYWwpIHsKLSAgICAgICAgICAgIFJvdW5kZWRJbnRSZWN0IGZpbGxSZWN0
ID0gYm9yZGVyOworICAgICAgICAgICAgUm91bmRlZFJlY3QgZmlsbFJlY3QgPSBib3JkZXI7CiAg
ICAgICAgICAgICBmaWxsUmVjdC5pbmZsYXRlKHNoYWRvd1NwcmVhZCk7CiAgICAgICAgICAgICBp
ZiAoZmlsbFJlY3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjE0
Miw3ICsyMTQyLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkbwog
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0Js
dXIsIHNoYWRvd0NvbG9yLCBzLT5jb2xvclNwYWNlKCkpOwogCiAgICAgICAgICAgICBpZiAoaGFz
Qm9yZGVyUmFkaXVzKSB7Ci0gICAgICAgICAgICAgICAgUm91bmRlZEludFJlY3QgcmVjdFRvQ2xp
cE91dCA9IGJvcmRlcjsKKyAgICAgICAgICAgICAgICBSb3VuZGVkUmVjdCByZWN0VG9DbGlwT3V0
ID0gYm9yZGVyOwogCiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGJveCBpcyBvcGFxdWUsIGl0
IGlzIHVubmVjZXNzYXJ5IHRvIGNsaXAgaXQgb3V0LiBIb3dldmVyLCBkb2luZyBzbyBzYXZlcyB0
aW1lCiAgICAgICAgICAgICAgICAgLy8gd2hlbiBwYWludGluZyB0aGUgc2hhZG93LiBPbiB0aGUg
b3RoZXIgaGFuZCwgaXQgaW50cm9kdWNlcyBzdWJwaXhlbCBnYXBzIGFsb25nIHRoZQpAQCAtMjIw
Niw3ICsyMjA2LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkbwog
ICAgICAgICAgICAgQ29sb3IgZmlsbENvbG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xv
ci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCksIDI1NSk7CiAKICAgICAgICAgICAgIExheW91
dFJlY3Qgb3V0ZXJSZWN0ID0gYXJlYUNhc3RpbmdTaGFkb3dJbkhvbGUoYm9yZGVyLnJlY3QoKSwg
c2hhZG93Qmx1ciwgc2hhZG93U3ByZWFkLCBzaGFkb3dPZmZzZXQpOwotICAgICAgICAgICAgUm91
bmRlZEludFJlY3Qgcm91bmRlZEhvbGUoaG9sZVJlY3QsIGJvcmRlci5yYWRpaSgpKTsKKyAgICAg
ICAgICAgIFJvdW5kZWRSZWN0IHJvdW5kZWRIb2xlKGhvbGVSZWN0LCBib3JkZXIucmFkaWkoKSk7
CiAKICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29u
dGV4dCk7CiAgICAgICAgICAgICBpZiAoaGFzQm9yZGVyUmFkaXVzKSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAkocmV2aXNpb24g
OTA4MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDE3ICsxNDksMTcgQEAgcHJpdmF0ZToKIAogICAgIElu
dFNpemUgY2FsY3VsYXRlRmlsbFRpbGVTaXplKGNvbnN0IEZpbGxMYXllciosIEludFNpemUgc2Nh
bGVkU2l6ZSkgY29uc3Q7CiAKLSAgICBSb3VuZGVkSW50UmVjdCBnZXRCYWNrZ3JvdW5kUm91bmRl
ZFJlY3QoY29uc3QgSW50UmVjdCYsIElubGluZUZsb3dCb3gqLCBpbnQgaW5saW5lQm94V2lkdGgs
IGludCBpbmxpbmVCb3hIZWlnaHQsCisgICAgUm91bmRlZFJlY3QgZ2V0QmFja2dyb3VuZFJvdW5k
ZWRSZWN0KGNvbnN0IExheW91dFJlY3QmLCBJbmxpbmVGbG93Qm94KiwgTGF5b3V0VW5pdCBpbmxp
bmVCb3hXaWR0aCwgTGF5b3V0VW5pdCBpbmxpbmVCb3hIZWlnaHQsCiAgICAgICAgIGJvb2wgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAKLSAg
ICB2b2lkIGNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSb3Vu
ZGVkSW50UmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRJbnRSZWN0JiBpbm5lckJvcmRl
ciwKKyAgICB2b2lkIGNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3hTaWRlLCBib29sIGZpcnN0RWRn
ZU1hdGNoZXMsIGJvb2wgc2Vjb25kRWRnZU1hdGNoZXMpOwotICAgIHZvaWQgcGFpbnRPbmVCb3Jk
ZXJTaWRlKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgUm91bmRl
ZEludFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkSW50UmVjdCYgaW5uZXJCb3JkZXIs
CisgICAgdm9pZCBwYWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUmVu
ZGVyU3R5bGUqLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRS
ZWN0JiBpbm5lckJvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
SW50UmVjdCYgc2lkZVJlY3QsIEJveFNpZGUsIEJveFNpZGUgYWRqYWNlbnRTaWRlMSwgQm94U2lk
ZSBhZGphY2VudFNpZGUyLCBjb25zdCBjbGFzcyBCb3JkZXJFZGdlW10sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhdGgqLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2Us
IGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSwgYm9vbCBhbnRpYWxpYXMsIGNvbnN0IENvbG9yKiBvdmVycmlkZUNvbG9yID0gMCk7Ci0gICAg
dm9pZCBwYWludFRyYW5zbHVjZW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
UmVuZGVyU3R5bGUqLCBjb25zdCBSb3VuZGVkSW50UmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJv
dW5kZWRJbnRSZWN0JiBpbm5lckJvcmRlciwKKyAgICB2b2lkIHBhaW50VHJhbnNsdWNlbnRCb3Jk
ZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IFJvdW5k
ZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbGFzcyBCb3JkZXJFZGdlW10sIEJhY2tncm91
bmRCbGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlLCBib29sIGFudGlhbGlhcyA9IGZhbHNlKTsKLSAgICB2b2lkIHBh
aW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBjb25z
dCBSb3VuZGVkSW50UmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRJbnRSZWN0JiBpbm5l
ckJvcmRlciwKKyAgICB2b2lkIHBhaW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgUmVuZGVyU3R5bGUqLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJv
dW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2xhc3MgQm9yZGVyRWRnZVtdLCBCb3JkZXJFZGdlRmxhZ3MsIEJhY2tncm91bmRCbGVlZEF2b2lk
YW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRF
ZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBib29sIGFudGlhbGlhcyA9IGZhbHNl
LCBjb25zdCBDb2xvciogb3ZlcnJpZGVDb2xvciA9IDApOwogICAgIHZvaWQgZHJhd0JveFNpZGVG
cm9tUGF0aChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgUGF0aCYsIGNv
bnN0IGNsYXNzIEJvcmRlckVkZ2VbXSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0JKHJldmlzaW9uIDkwODIyKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI0LDcgKzEwMjQs
NyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uCiAKICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKIAot
ICAgIFJvdW5kZWRJbnRSZWN0IGJvcmRlciA9IG8tPnN0eWxlKCktPmdldFJvdW5kZWRCb3JkZXJG
b3Iocik7CisgICAgUm91bmRlZFJlY3QgYm9yZGVyID0gby0+c3R5bGUoKS0+Z2V0Um91bmRlZEJv
cmRlckZvcihyKTsKICAgICBpbnQgcmFkaXVzID0gYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLndp
ZHRoKCk7CiAKICAgICBDR0NvbG9yU3BhY2VSZWYgY3NwYWNlID0gZGV2aWNlUkdCQ29sb3JTcGFj
ZVJlZigpOwpAQCAtMTA1OCw3ICsxMDU4LDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRN
ZW51TGlzdEJ1dHRvbgogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1Jl
Y3QoY29udGV4dCwgdG9wR3JhZGllbnQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+YWRk
Um91bmRlZFJlY3RDbGlwKFJvdW5kZWRJbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGll
bnQpLCBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCksIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCks
IEludFNpemUoKSwgSW50U2l6ZSgpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRS
b3VuZGVkUmVjdENsaXAoUm91bmRlZFJlY3QoZW5jbG9zaW5nTGF5b3V0UmVjdCh0b3BHcmFkaWVu
dCksIGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKSwgYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKSwg
SW50U2l6ZSgpLCBJbnRTaXplKCkpKTsKICAgICAgICAgY29udGV4dCA9IGNnQ29udGV4dENvbnRh
aW5lci5jb250ZXh0KCk7CiAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHRv
cFNoYWRpbmcuZ2V0KCkpOwogICAgIH0KQEAgLTEwNjYsNyArMTA2Niw3IEBAIHZvaWQgUmVuZGVy
VGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b24KICAgICBpZiAoIWJvdHRvbUdyYWRpZW50Lmlz
RW1wdHkoKSkgewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
KnBhaW50SW5mby5jb250ZXh0KTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0
LCBib3R0b21HcmFkaWVudCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVk
UmVjdENsaXAoUm91bmRlZEludFJlY3QoZW5jbG9zaW5nSW50UmVjdChib3R0b21HcmFkaWVudCks
IEludFNpemUoKSwgSW50U2l6ZSgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCksIGJvcmRl
ci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFk
ZFJvdW5kZWRSZWN0Q2xpcChSb3VuZGVkUmVjdChlbmNsb3NpbmdMYXlvdXRSZWN0KGJvdHRvbUdy
YWRpZW50KSwgSW50U2l6ZSgpLCBJbnRTaXplKCksIGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQo
KSwgYm9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQoKSkpOwogICAgICAgICBjb250ZXh0ID0gY2dD
b250ZXh0Q29udGFpbmVyLmNvbnRleHQoKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmco
Y29udGV4dCwgYm90dG9tU2hhZGluZy5nZXQoKSk7CiAgICAgfQpAQCAtMTI5Miw3ICsxMjkyLDcg
QEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUcmFjayhSZQogICAgICAgICBtYWlu
U2hhZGluZy5hZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2Uo
Ym91bmRzLngoKSwgIGJvdW5kcy55KCkpLCBDR1BvaW50TWFrZShib3VuZHMueCgpLCBib3VuZHMu
bWF4WSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKIAogICAgIEludFNp
emUgcmFkaXVzKHRyYWNrUmFkaXVzLCB0cmFja1JhZGl1cyk7Ci0gICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChSb3VuZGVkSW50UmVjdChib3VuZHMsIHJhZGl1cywgcmFk
aXVzLCByYWRpdXMsIHJhZGl1cykpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVk
UmVjdENsaXAoUm91bmRlZFJlY3QoYm91bmRzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRp
dXMpKTsKICAgICBjb250ZXh0ID0gbG9jYWxDb250ZXh0LmNnQ29udGV4dCgpOwogICAgIENHQ29u
dGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIG1haW5TaGFkaW5nLmdldCgpKTsKICAgICAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAkocmV2
aXNpb24gOTA4MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZh
cmkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTMsNyArNzUzLDcgQEAgdm9pZCBSZW5kZXJUaGVt
ZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dAogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUo
KTsKIAotICAgIFJvdW5kZWRJbnRSZWN0IGJvdW5kID0gby0+c3R5bGUoKS0+Z2V0Um91bmRlZEJv
cmRlckZvcihyKTsKKyAgICBSb3VuZGVkUmVjdCBib3VuZCA9IG8tPnN0eWxlKCktPmdldFJvdW5k
ZWRCb3JkZXJGb3Iocik7CiAgICAgaW50IHJhZGl1cyA9IGJvdW5kLnJhZGlpKCkudG9wTGVmdCgp
LndpZHRoKCk7CiAKICAgICBDR0NvbG9yU3BhY2VSZWYgY3NwYWNlID0gZGV2aWNlUkdCQ29sb3JT
cGFjZVJlZigpOwpAQCAtNzgzLDE0ICs3ODMsMTQgQEAgdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6
cGFpbnRNZW51TGlzdEJ1dAogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICBD
R0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHRvcEdyYWRpZW50KTsKLSAgICBwYWludEluZm8u
Y29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlwKFJvdW5kZWRJbnRSZWN0KGVuY2xvc2luZ0ludFJl
Y3QodG9wR3JhZGllbnQpLCBib3VuZC5yYWRpaSgpLnRvcExlZnQoKSwgYm91bmQucmFkaWkoKS50
b3BSaWdodCgpLCBJbnRTaXplKCksIEludFNpemUoKSkpOworICAgIHBhaW50SW5mby5jb250ZXh0
LT5hZGRSb3VuZGVkUmVjdENsaXAoUm91bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVjdCh0b3BHcmFk
aWVudCksIGJvdW5kLnJhZGlpKCkudG9wTGVmdCgpLCBib3VuZC5yYWRpaSgpLnRvcFJpZ2h0KCks
IEludFNpemUoKSwgSW50U2l6ZSgpKSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4
dCwgdG9wU2hhZGluZy5nZXQoKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsK
IAogICAgIGlmICghYm90dG9tR3JhZGllbnQuaXNFbXB0eSgpKSB7CiAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5zYXZlKCk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwg
Ym90dG9tR3JhZGllbnQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJl
Y3RDbGlwKFJvdW5kZWRJbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QoYm90dG9tR3JhZGllbnQpLCBJ
bnRTaXplKCksIEludFNpemUoKSwgYm91bmQucmFkaWkoKS5ib3R0b21MZWZ0KCksIGJvdW5kLnJh
ZGlpKCkuYm90dG9tUmlnaHQoKSkpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91
bmRlZFJlY3RDbGlwKFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QoYm90dG9tR3JhZGllbnQp
LCBJbnRTaXplKCksIEludFNpemUoKSwgYm91bmQucmFkaWkoKS5ib3R0b21MZWZ0KCksIGJvdW5k
LnJhZGlpKCkuYm90dG9tUmlnaHQoKSkpOwogICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhj
b250ZXh0LCBib3R0b21TaGFkaW5nLmdldCgpKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnJlc3RvcmUoKTsKICAgICB9CkBAIC05NTQsNyArOTU0LDcgQEAgY29uc3QgaW50IHRyYWNrUmFk
aXVzID0gMjsKIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVHJhY2soUmVuZGVy
T2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikK
IHsKICAgICBJbnRTaXplIHJhZGl1cyh0cmFja1JhZGl1cywgdHJhY2tSYWRpdXMpOwotICAgIFJv
dW5kZWRJbnRSZWN0IGJvdW5kcyhyLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMpOwor
ICAgIFJvdW5kZWRSZWN0IGJvdW5kcyhyLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMp
OwogCiAgICAgaWYgKG8tPnN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSAgU2xpZGVySG9yaXpvbnRh
bFBhcnQpCiAgICAgICAgIGJvdW5kcy5zZXRSZWN0KEludFJlY3Qoci54KCksCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5DRS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luQ0UuY3BwCShyZXZpc2lvbiA5
MDgyMikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzc4LDcgKzM3OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW5DRTo6
cGFpbnRTZWFyY2hGaWVsZEMKICAgICBpbnQgeSA9IHIueSgpICsgKHIuaGVpZ2h0KCkgLSBjYW5j
ZWxTaXplLmhlaWdodCgpKSAvIDIgKyAxOwogICAgIEludFJlY3QgY2FuY2VsQm91bmRzKEludFBv
aW50KHgsIHkpLCBjYW5jZWxTaXplKTsKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoUm91bmRlZEludFJlY3Qo
Y2FuY2VsQm91bmRzLCBjYW5jZWxSYWRpdXMsIGNhbmNlbFJhZGl1cywgY2FuY2VsUmFkaXVzLCBj
YW5jZWxSYWRpdXMpKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlw
KFJvdW5kZWRSZWN0KGNhbmNlbEJvdW5kcywgY2FuY2VsUmFkaXVzLCBjYW5jZWxSYWRpdXMsIGNh
bmNlbFJhZGl1cywgY2FuY2VsUmFkaXVzKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxS
ZWN0KGNhbmNlbEJvdW5kcywgYnV0dG9uQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAg
ICAgLy8gRHJhdyB0aGUgJ3gnCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDkwODIyKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzc0LDE5
ICs3NzQsMjAgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm94U2hhZG93KFBhc3NPd25QdAogICAg
IHJhcmVEYXRhLT5tX2JveFNoYWRvdyA9IHNoYWRvd0RhdGE7CiB9CiAKLXN0YXRpYyBSb3VuZGVk
SW50UmVjdDo6UmFkaWkgY2FsY1JhZGlpRm9yKGNvbnN0IEJvcmRlckRhdGEmIGJvcmRlciwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KQorc3RhdGljIFJvdW5kZWRSZWN0OjpSYWRpaSBjYWxjUmFkaWlG
b3IoY29uc3QgQm9yZGVyRGF0YSYgYm9yZGVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7Ci0g
ICAgcmV0dXJuIFJvdW5kZWRJbnRSZWN0OjpSYWRpaShJbnRTaXplKGJvcmRlci50b3BMZWZ0KCku
d2lkdGgoKS5jYWxjVmFsdWUod2lkdGgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9yZGVyLnRvcExlZnQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoaGVpZ2h0KSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRTaXplKGJvcmRlci50b3BSaWdo
dCgpLndpZHRoKCkuY2FsY1ZhbHVlKHdpZHRoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9yZGVyLnRvcFJpZ2h0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGhlaWdo
dCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50U2l6ZShib3JkZXIuYm90
dG9tTGVmdCgpLndpZHRoKCkuY2FsY1ZhbHVlKHdpZHRoKSwgCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkuY2FsY1Zh
bHVlKGhlaWdodCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50U2l6ZShi
b3JkZXIuYm90dG9tUmlnaHQoKS53aWR0aCgpLmNhbGNWYWx1ZSh3aWR0aCksIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIuYm90dG9tUmlnaHQoKS5oZWln
aHQoKS5jYWxjVmFsdWUoaGVpZ2h0KSkpOworICAgIHJldHVybiBSb3VuZGVkUmVjdDo6UmFkaWko
CisgICAgICAgIExheW91dFNpemUoYm9yZGVyLnRvcExlZnQoKS53aWR0aCgpLmNhbGNWYWx1ZSh3
aWR0aCksIAorICAgICAgICAgICAgICAgICAgIGJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCkuY2Fs
Y1ZhbHVlKGhlaWdodCkpLAorICAgICAgICBMYXlvdXRTaXplKGJvcmRlci50b3BSaWdodCgpLndp
ZHRoKCkuY2FsY1ZhbHVlKHdpZHRoKSwKKyAgICAgICAgICAgICAgICAgICBib3JkZXIudG9wUmln
aHQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoaGVpZ2h0KSksCisgICAgICAgIExheW91dFNpemUoYm9y
ZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpLmNhbGNWYWx1ZSh3aWR0aCksIAorICAgICAgICAgICAg
ICAgICAgIGJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGhlaWdodCkpLAor
ICAgICAgICBMYXlvdXRTaXplKGJvcmRlci5ib3R0b21SaWdodCgpLndpZHRoKCkuY2FsY1ZhbHVl
KHdpZHRoKSwgCisgICAgICAgICAgICAgICAgICAgYm9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0
KCkuY2FsY1ZhbHVlKGhlaWdodCkpKTsKIH0KIAotc3RhdGljIGZsb2F0IGNhbGNDb25zdHJhaW50
U2NhbGVGb3IoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlp
JiByYWRpaSkKK3N0YXRpYyBmbG9hdCBjYWxjQ29uc3RyYWludFNjYWxlRm9yKGNvbnN0IEludFJl
Y3QmIHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpCiB7CiAgICAgLy8gQ29u
c3RyYWluIGNvcm5lciByYWRpaSB1c2luZyBDU1MzIHJ1bGVzOgogICAgIC8vIGh0dHA6Ly93d3cu
dzMub3JnL1RSL2NzczMtYmFja2dyb3VuZC8jdGhlLWJvcmRlci1yYWRpdXMKQEAgLTgxOCwxOCAr
ODE5LDE4IEBAIHN0YXRpYyBmbG9hdCBjYWxjQ29uc3RyYWludFNjYWxlRm9yKGNvbnMKICAgICBy
ZXR1cm4gZmFjdG9yOwogfQogCi1Sb3VuZGVkSW50UmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRl
ZEJvcmRlckZvcihjb25zdCBJbnRSZWN0JiBib3JkZXJSZWN0LCBib29sIGluY2x1ZGVMb2dpY2Fs
TGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpIGNvbnN0CitSb3VuZGVkUmVj
dCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZEJvcmRlckZvcihjb25zdCBJbnRSZWN0JiBib3JkZXJS
ZWN0LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpIGNvbnN0CiB7Ci0gICAgUm91bmRlZEludFJlY3Qgcm91bmRlZFJlY3QoYm9yZGVyUmVj
dCk7CisgICAgUm91bmRlZFJlY3Qgcm91bmRlZFJlY3QoYm9yZGVyUmVjdCk7CiAgICAgaWYgKGhh
c0JvcmRlclJhZGl1cygpKSB7Ci0gICAgICAgIFJvdW5kZWRJbnRSZWN0OjpSYWRpaSByYWRpaSA9
IGNhbGNSYWRpaUZvcihzdXJyb3VuZC0+Ym9yZGVyLCBib3JkZXJSZWN0LndpZHRoKCksIGJvcmRl
clJlY3QuaGVpZ2h0KCkpOworICAgICAgICBSb3VuZGVkUmVjdDo6UmFkaWkgcmFkaWkgPSBjYWxj
UmFkaWlGb3Ioc3Vycm91bmQtPmJvcmRlciwgYm9yZGVyUmVjdC53aWR0aCgpLCBib3JkZXJSZWN0
LmhlaWdodCgpKTsKICAgICAgICAgcmFkaWkuc2NhbGUoY2FsY0NvbnN0cmFpbnRTY2FsZUZvcihi
b3JkZXJSZWN0LCByYWRpaSkpOwogICAgICAgICByb3VuZGVkUmVjdC5pbmNsdWRlTG9naWNhbEVk
Z2VzKHJhZGlpLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpLCBpbmNsdWRlTG9naWNhbExlZnRF
ZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgfQogICAgIHJldHVybiByb3VuZGVk
UmVjdDsKIH0KIAotUm91bmRlZEludFJlY3QgUmVuZGVyU3R5bGU6OmdldFJvdW5kZWRJbm5lckJv
cmRlckZvcihjb25zdCBJbnRSZWN0JiBib3JkZXJSZWN0LCBib29sIGluY2x1ZGVMb2dpY2FsTGVm
dEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpIGNvbnN0CitSb3VuZGVkUmVjdCBS
ZW5kZXJTdHlsZTo6Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGNvbnN0IEludFJlY3QmIGJvcmRl
clJlY3QsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJp
Z2h0RWRnZSkgY29uc3QKIHsKICAgICBib29sIGhvcml6b250YWwgPSBpc0hvcml6b250YWxXcml0
aW5nTW9kZSgpOwogCkBAIC04NDEsNyArODQyLDcgQEAgUm91bmRlZEludFJlY3QgUmVuZGVyU3R5
bGU6OmdldFJvdW5kZWRJbgogICAgIHJldHVybiBnZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9y
ZGVyUmVjdCwgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGgsIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIH0KIAotUm91
bmRlZEludFJlY3QgUmVuZGVyU3R5bGU6OmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihjb25zdCBJ
bnRSZWN0JiBib3JkZXJSZWN0LAorUm91bmRlZFJlY3QgUmVuZGVyU3R5bGU6OmdldFJvdW5kZWRJ
bm5lckJvcmRlckZvcihjb25zdCBJbnRSZWN0JiBib3JkZXJSZWN0LAogICAgIGludCB0b3BXaWR0
aCwgaW50IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQgcmlnaHRXaWR0aCwgYm9vbCBp
bmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSBjb25z
dAogewogICAgIEludFJlY3QgaW5uZXJSZWN0KGJvcmRlclJlY3QueCgpICsgbGVmdFdpZHRoLCAK
QEAgLTg0OSwxMCArODUwLDEwIEBAIFJvdW5kZWRJbnRSZWN0IFJlbmRlclN0eWxlOjpnZXRSb3Vu
ZGVkSW4KICAgICAgICAgICAgIGJvcmRlclJlY3Qud2lkdGgoKSAtIGxlZnRXaWR0aCAtIHJpZ2h0
V2lkdGgsIAogICAgICAgICAgICAgYm9yZGVyUmVjdC5oZWlnaHQoKSAtIHRvcFdpZHRoIC0gYm90
dG9tV2lkdGgpOwogCi0gICAgUm91bmRlZEludFJlY3Qgcm91bmRlZFJlY3QoaW5uZXJSZWN0KTsK
KyAgICBSb3VuZGVkUmVjdCByb3VuZGVkUmVjdChpbm5lclJlY3QpOwogCiAgICAgaWYgKGhhc0Jv
cmRlclJhZGl1cygpKSB7Ci0gICAgICAgIFJvdW5kZWRJbnRSZWN0OjpSYWRpaSByYWRpaSA9IGdl
dFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVyUmVjdCkucmFkaWkoKTsKKyAgICAgICAgUm91bmRlZFJl
Y3Q6OlJhZGlpIHJhZGlpID0gZ2V0Um91bmRlZEJvcmRlckZvcihib3JkZXJSZWN0KS5yYWRpaSgp
OwogICAgICAgICByYWRpaS5zaHJpbmsodG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgs
IHJpZ2h0V2lkdGgpOwogICAgICAgICByb3VuZGVkUmVjdC5pbmNsdWRlTG9naWNhbEVkZ2VzKHJh
ZGlpLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBp
bmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDkwODIyKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDcgKzQ0LDcgQEAKICNpbmNsdWRlICJOaW5lUGllY2VJbWFnZS5oIgogI2luY2x1ZGUgIk91
dGxpbmVWYWx1ZS5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCi0jaW5jbHVk
ZSAiUm91bmRlZEludFJlY3QuaCIKKyNpbmNsdWRlICJSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUg
IlNoYWRvd0RhdGEuaCIKICNpbmNsdWRlICJTdHlsZUJhY2tncm91bmREYXRhLmgiCiAjaW5jbHVk
ZSAiU3R5bGVCb3hEYXRhLmgiCkBAIC04NzEsMTAgKzg3MSwxMCBAQCBwdWJsaWM6CiAgICAgICAg
IHNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplKExlbmd0aChzLndpZHRoKCksIEZpeGVkKSwgTGVu
Z3RoKHMuaGVpZ2h0KCksIEZpeGVkKSkpOwogICAgIH0KICAgICAKLSAgICBSb3VuZGVkSW50UmVj
dCBnZXRSb3VuZGVkQm9yZGVyRm9yKGNvbnN0IEludFJlY3QmIGJvcmRlclJlY3QsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2Ug
PSB0cnVlKSBjb25zdDsKLSAgICBSb3VuZGVkSW50UmVjdCBnZXRSb3VuZGVkSW5uZXJCb3JkZXJG
b3IoY29uc3QgSW50UmVjdCYgYm9yZGVyUmVjdCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdl
ID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpIGNvbnN0OworICAg
IFJvdW5kZWRSZWN0IGdldFJvdW5kZWRCb3JkZXJGb3IoY29uc3QgSW50UmVjdCYgYm9yZGVyUmVj
dCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNh
bFJpZ2h0RWRnZSA9IHRydWUpIGNvbnN0OworICAgIFJvdW5kZWRSZWN0IGdldFJvdW5kZWRJbm5l
ckJvcmRlckZvcihjb25zdCBJbnRSZWN0JiBib3JkZXJSZWN0LCBib29sIGluY2x1ZGVMb2dpY2Fs
TGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1ZSkgY29u
c3Q7CiAKLSAgICBSb3VuZGVkSW50UmVjdCBnZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoY29uc3Qg
SW50UmVjdCYgYm9yZGVyUmVjdCwKKyAgICBSb3VuZGVkUmVjdCBnZXRSb3VuZGVkSW5uZXJCb3Jk
ZXJGb3IoY29uc3QgSW50UmVjdCYgYm9yZGVyUmVjdCwKICAgICAgICAgaW50IHRvcFdpZHRoLCBp
bnQgYm90dG9tV2lkdGgsIGludCBsZWZ0V2lkdGgsIGludCByaWdodFdpZHRoLCBib29sIGluY2x1
ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpIGNvbnN0Owog
CiAgICAgdm9pZCBzZXRCb3JkZXJMZWZ0V2lkdGgodW5zaWduZWQgc2hvcnQgdikgeyBTRVRfVkFS
KHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0Lm1fd2lkdGgsIHYpIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>