<?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>87029</bug_id>
          
          <creation_ts>2012-05-21 10:23:56 -0700</creation_ts>
          <short_desc>Expose WEBGL_depth_texture extension to WebGL</short_desc>
          <delta_ts>2012-06-18 21:34:59 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Gregg Tavares">gman</assigned_to>
          <cc>abarth</cc>
    
    <cc>dino</cc>
    
    <cc>gman</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>senorblanco</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>629234</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-05-21 10:23:56 -0700</bug_when>
    <thetext>Customers have requested the OES_depth_texture WebGL extension be exposed in the near term for some deliverables for upcoming conferences. It is in draft status in the WebGL extension registry; for the time being it should be exposed via getExtension(&quot;WEBKIT_OES_depth_texture&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629680</commentid>
    <comment_count>1</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-05-21 16:17:52 -0700</bug_when>
    <thetext>Sounds good. In general is there any process for how stable an extension should be before we land it in trunk? Since it&apos;s prefixed it is protected to some extent.

(BTW - I have no opinion either way. I tend to think it&apos;s better to land features soon because you get more feedback that way)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629703</commentid>
    <comment_count>2</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-05-21 16:32:37 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Sounds good. In general is there any process for how stable an extension should be before we land it in trunk? Since it&apos;s prefixed it is protected to some extent.

An extension should have Draft status in the WebGL extension registry before implementation. Collectively the WG and community have agreed that extension &quot;proposals&quot; shouldn&apos;t be implemented, not even under vendor prefixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637884</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-05-30 18:06:04 -0700</bug_when>
    <thetext>Gregg, did you mention you might have time to do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637992</commentid>
    <comment_count>4</comment_count>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-05-30 21:45:03 -0700</bug_when>
    <thetext>Me? I suppose I can but we don&apos;t have OES_depth_texture. We have ANGLE_depth_texture which has different restrictions.

No cubemaps
No uploading data (TexImage2D must be passed NULL, TexSubImage2D always generats INVALID_OP)
No copying (CopyTexImage2D, CopySubTexImage2D) always generate INVALID_OP

I don&apos;t think that should be exposed as OES_depth_texture since it&apos;s not OES_depth_texture</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640957</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-06-04 16:16:32 -0700</bug_when>
    <thetext>Agreed about the naming; in the process of renaming the extension to WEBGL_depth_texture and imposing the ANGLE limitations. Gregg indicated he&apos;s working on this, so marking Assigned to prevent accidental duplicated work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651538</commentid>
    <comment_count>6</comment_count>
      <attachid>148128</attachid>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-06-18 10:59:22 -0700</bug_when>
    <thetext>Created attachment 148128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651539</commentid>
    <comment_count>7</comment_count>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-06-18 11:00:09 -0700</bug_when>
    <thetext>Note: This page does not support DEPTH_STENCIL formats for depth textures. I&apos;ll add that in another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651639</commentid>
    <comment_count>8</comment_count>
      <attachid>148154</attachid>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-06-18 13:03:56 -0700</bug_when>
    <thetext>Created attachment 148154
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651649</commentid>
    <comment_count>9</comment_count>
      <attachid>148156</attachid>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-06-18 13:14:37 -0700</bug_when>
    <thetext>Created attachment 148156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651947</commentid>
    <comment_count>10</comment_count>
      <attachid>148156</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-06-18 18:20:56 -0700</bug_when>
    <thetext>Comment on attachment 148156
Patch

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

Looks great overall. Nice test. Two minor questions. Marking r+, but not touching cq bit in case you want or need to address either.

&gt; Source/WebCore/html/canvas/WebGLRenderingContext.cpp:3560
&gt; +                                                             border, format, type, m_unpackAlignment);

A little subtle given the offline discussions about ANGLE_depth_texture and the fact that it can&apos;t upload data to the texture. Is it worth a comment here that on some platforms, it may be tricky to implement initialization of depth or depth/stencil textures?

&gt; LayoutTests/fast/canvas/webgl/webgl-depth-texture.html:1
&gt; +ï»¿&lt;!DOCTYPE html&gt;

Are there a few garbage characters here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651961</commentid>
    <comment_count>11</comment_count>
      <attachid>148223</attachid>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-06-18 18:48:21 -0700</bug_when>
    <thetext>Created attachment 148223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652015</commentid>
    <comment_count>12</comment_count>
      <attachid>148223</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-18 21:34:53 -0700</bug_when>
    <thetext>Comment on attachment 148223
Patch

Clearing flags on attachment: 148223

Committed r120668: &lt;http://trac.webkit.org/changeset/120668&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652016</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-18 21:34:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148128</attachid>
            <date>2012-06-18 10:59:22 -0700</date>
            <delta_ts>2012-06-18 13:03:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87029-20120618105922.patch</filename>
            <type>text/plain</type>
            <size>77882</size>
            <attacher name="Gregg Tavares">gman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQ5MjY5YjBmODY5ZjQ5
NGExNTE4MDdhMzM2ODVlOTY0MGViNDA2ZC4uZTQ3OTAyNzdjOGJmZTg1NDFlOWFhOGRhMmE3MTQ3
N2VmMjFmYTk2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTA2LTEzICBHcmVn
ZyBUYXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBXRUJHTF9kZXB0
aF90ZXh0dXJlIGV4dGVuc2lvbiB0byBXZWJHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcwMjkKKyAgICAgICAgCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL3dlYmdsL3dlYmds
LWRlcHRoLXRleHR1cmUuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4T2JqZWN0KToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmguCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpXZWJHTERlcHRo
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6fldlYkdMRGVw
dGhUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpnZXROYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViR0xEZXB0aFRleHR1cmUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhU
ZXh0dXJlLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xF
eHRlbnNpb24uaC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6aW5pdGlhbGl6ZUF0dGFjaG1lbnRzKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlU2V0dGFi
bGVUZXhGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpj
b3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmNvcHlUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyREJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyREJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4RnVuY1Bh
cmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxp
ZGF0ZVRleEZ1bmNEYXRhKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViR0xSZW5kZXJpbmdDb250
ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q2xlYXJCaXRzQnlBdHRh
Y2htZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRDbGVhckJpdHNCeUZvcm1hdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKworMjAxMi0wNi0xNCAgR3JlZ2cgVGF2YXJl
cyAgPGdtYW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBGaXggZnJhbWVidWZmZXIgY29tcGxldGVu
ZXNzIHRlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIGp1c3QgZml4aW5nIGZhaWxpbmcgdGVzdHMuCisKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJh
bWVidWZmZXI6OmluaXRpYWxpemVBdHRhY2htZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppc1RleEludGVybmFsRm9ybWF0Q29sb3JC
dWZmZXJDb21iaW5hdGlvblZhbGlkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0Q2xlYXJCaXRzQnlBdHRhY2htZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRDbGVhckJpdHNCeUZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1h
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKwog
MjAxMi0wNi0xNCAgQW5kcmV5IEFkYWlraW4gIDxhYW5kcmV5QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBSZW1vdmUgZGV2dG9vbHNJbmplY3RlZFNjcmlwdCBoaWRkZW4g
cHJvcGVydHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTFhYzNmOGZlNzhmYzg1YzBjNGQxNWMw
ODk3NmI1ZGIyZDE1MmJhYy4uNTc4YWQ0NzAzZTBjNmRiNTQxZjkzOTM5Y2JjMGQwMTBkODMyMjA2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIzNDUsNiArMjM0NSw3IEBAIElGIChFTkFCTEVf
V0VCR0wpCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5jcHAKICAgICAg
ICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5jcHAKICAgICAgICAgaHRtbC9j
YW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCisgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRGVw
dGhUZXh0dXJlLmNwcAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcAog
ICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwCiAgICAgICAgIGh0bWwvY2FudmFz
L1dlYkdMTG9zZUNvbnRleHQuY3BwCkBAIC0yMzc5LDYgKzIzODAsNyBAQCBJRiAoRU5BQkxFX1dF
QkdMKQogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5pZGwKICAgICAgICAg
aHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5pZGwKICAgICAgICAgaHRtbC9jYW52
YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaWRsCisgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhU
ZXh0dXJlLmlkbAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmlkbAogICAg
ICAgICBodG1sL2NhbnZhcy9XZWJHTExvc2VDb250ZXh0LmlkbAogICAgICAgICBodG1sL2NhbnZh
cy9XZWJHTFByb2dyYW0uaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAyMzhj
YjAyNTA3NTJkOTI1OGY0ZmUwM2Q4MzQ4OTg1Mjc4ZGM0YTY3Li45ODhhNWY3NGExMDYyMGNmNTBj
MTRhYzc1NTI2Y2VlNWI3ZTQxOGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTM3MSw2ICszNzEsNyBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRt
bC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRt
bC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2Fu
dmFzL1dlYkdMRGVwdGhUZXh0dXJlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9X
ZWJHTEZyYW1lYnVmZmVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTExv
c2VDb250ZXh0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0u
aWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaSBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCA3YjczZTllN2RmNjU1MzkyOTdm
ZTk5ZjBmOTgwMmJiOWExNzcwM2FhLi45YjU0YzdlNDNhNTUxN2MzNDM0NmM2ZWEyM2FkZjNhNmY4
MzAxMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKKysr
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCkBAIC0yOTYsNiArMjk2LDcgQEAg
SURMX0JJTkRJTkdTICs9IFwKICAgICAkJFBXRC9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVu
dC5pZGwgXAogICAgICQkUFdEL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaWRs
IFwKICAgICAkJFBXRC9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5pZGwgXAorICAgICQk
UFdEL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmlkbCBcCiAgICAgJCRQV0QvaHRtbC9j
YW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5pZGwgXAogICAgICQkUFdEL2h0bWwvY2FudmFzL1dlYkdM
TG9zZUNvbnRleHQuaWRsIFwKICAgICAkJFBXRC9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaWRs
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDU0ZjkxZmMwNzk1NTUxMzE3ZDdh
N2I1NGU1MGI0YjQ1MThjZTEzYWIuLmI5ODk5NzkwMWMxYmY4NGJlOWYyYTNhMDA5ZTk2YzFhMmUx
N2Q0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysr
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTc0LDYgKzU3NCw4IEBA
IHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dl
YkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdM
Q29udGV4dEV2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMQ29udGV4
dEV2ZW50LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTERlcHRoVGV4dHVyZS5j
cHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTERlcHRoVGV4dHVyZS5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xGcmFtZWJ1ZmZlci5jcHAgXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJHTEZyYW1lYnVmZmVyLmggXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXZWJHTExvc2VDb250ZXh0LmNwcCBcCkBAIC05MTQsNiArOTE2LDcgQEAgZG9tX2Jp
bmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQy5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0
cmlidXRlcy5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQu
aWRsIFwKKwkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmlkbCBcCiAJ
JChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmlkbCBcCiAJJChXZWJDb3Jl
KS9odG1sL2NhbnZhcy9XZWJHTExvc2VDb250ZXh0LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL2Nh
bnZhcy9XZWJHTFByb2dyYW0uaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDE0ZjdlZDE4MGE3MTJiZTUw
NDg4YWM4NWM2MWM2Y2U0MjZkN2QzODQuLjNjYmUzMTgxM2JhM2UxMjk0NDAwNTY2NzdmMWQ2Nzhm
YWM2YjhmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMzg1Miw2ICszODUyLDcgQEAgY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0
T2JqZWN0LmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgg
XAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5oIFwKKyAgICAgICAgaHRt
bC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdM
RXh0ZW5zaW9uLmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmggXAog
ICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaCBcCkBAIC0zODk0LDYgKzM4OTUsNyBA
QCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9MSkgewogICAgICAgICBodG1sL2NhbnZh
cy9XZWJHTENvbnRleHRPYmplY3QuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1
Z1JlbmRlcmVySW5mby5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVy
cy5jcHAgXAorICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAgXAogICAg
ICAgICBodG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAgXAogICAgICAgICBodG1sL2NhbnZh
cy9XZWJHTEZyYW1lYnVmZmVyLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5m
by5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDg4ZjdlNTRjZjhhZmJmOWJiNWJiNzI4YjcwZTVj
OTNmMWY1Yjk0ODcuLmE3MGY0YmQ0NmRjOThiZDY2YTU0MDZjYWNhYzQ3ZmZkNDA5YmJmYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKQEAgLTExMTUsNiArMTExNSw3IEBACiAgICAgICAgICAgICAnaHRtbC9j
YW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9X
ZWJHTERlYnVnUmVuZGVyZXJJbmZvLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2Vi
R0xEZWJ1Z1NoYWRlcnMuaWRsJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTERlcHRo
VGV4dHVyZS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIu
aWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTExvc2VDb250ZXh0LmlkbCcsCiAg
ICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmlkbCcsCkBAIC01NzYwLDYgKzU3
NjEsOCBAQAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8u
aCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwJywKICAg
ICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5oJywKKyAgICAgICAgICAg
ICdodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAnLAorICAgICAgICAgICAgJ2h0bWwv
Y2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dl
YkdMRXh0ZW5zaW9uLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNp
b24uaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAnLApA
QCAtODIxOCw2ICs4MjIxLDggQEAKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCcsCiAgICAgICAg
ICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMQ29udGV4
dEF0dHJpYnV0ZXMuY3BwJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oJywKKyAgICAgICAgICAgICc8
KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xEZXB0aFRleHR1cmUu
Y3BwJywKKyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViR0xEZXB0aFRleHR1cmUuaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMRnJhbWVidWZmZXIuY3BwJywKICAgICAgICAgICAg
ICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xGcmFtZWJ1ZmZl
ci5oJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViR0xMb3NlQ29udGV4dC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYxYTc4NWE1ZjRjMmFmMGM4YTRiMTMxOTg4
ODRmNDA3ZjE3ZDZhMzEuLjY0ODY0NTI1MWZjY2YwNGM0MWNkYTFkYmMzZjBjODM3Mzk5NjZhYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE3NzgsNiArMTc3OCwxMCBAQAogCQk2RTNGQUQzOTE0NzMzRjQwMDBFNDIzMDYgLyog
SlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFEMzcxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMuaCAqLzsgfTsKIAkJNkUzRkFFOEUxNDczM0ZEQjAwRTQyMzA2
IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRThDMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgKi87IH07CiAJCTZFM0ZBRThGMTQ3MzNGREIwMEU0
MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFFOEQxNDczM0ZEQjAwRTQyMzA2IC8qIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggKi87IH07CisJCTZFM0ZBRDM4MTQ3MzNGNDAwMEU0
MjMwNyAvKiBKU1dlYkdMRGVwdGhUZXh0dXJlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNyAvKiBKU1dlYkdM
RGVwdGhUZXh0dXJlLmNwcCAqLzsgfTsKKwkJNkUzRkFEMzkxNDczM0Y0MDAwRTQyMzA3IC8qIEpT
V2ViR0xEZXB0aFRleHR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZFM0ZBRDM3MTQ3MzNGNDAwMEU0MjMwNyAvKiBKU1dlYkdMRGVwdGhUZXh0dXJl
LmggKi87IH07CisJCTZFM0ZBRThFMTQ3MzNGREIwMEU0MjMwNyAvKiBXZWJHTERlcHRoVGV4dHVy
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNG
QUU4QzE0NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1cmUuY3BwICovOyB9OworCQk2
RTNGQUU4RjE0NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1cmUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRThEMTQ3MzNGREIwMEU0
MjMwNyAvKiBXZWJHTERlcHRoVGV4dHVyZS5oICovOyB9OwogCQk2RTQ3RTY2MDEwQjc5NDRCMDBC
MTg2QzggLyogV2ViR0xHZXRJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZFNDdFNjVFMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8u
Y3BwICovOyB9OwogCQk2RTQ3RTY2MTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEw
Qjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmggKi87IH07CiAJCTZFNEFCQ0Q0MTM4RUEw
QjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRBQkNEMjEzOEVBMEI3MDA3MUQyOTEgLyog
SlNIVE1MVW5rbm93bkVsZW1lbnQuY3BwICovOyB9OwpAQCAtODg0OCw2ICs4ODUyLDExIEBACiAJ
CTZFM0ZBRThDMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQy5jcHA7IHBhdGggPSBjYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTNGQUU4RDE0NzMzRkRCMDBFNDIz
MDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaDsgcGF0aCA9IGNhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2RTNGQUU5MDE0NzMzRkVBMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlk
bDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNyAvKiBKU1dlYkdM
RGVwdGhUZXh0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
V2ViR0xEZXB0aFRleHR1cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTNG
QUQzNzE0NzMzRjQwMDBFNDIzMDcgLyogSlNXZWJHTERlcHRoVGV4dHVyZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMRGVwdGhUZXh0dXJlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTZFM0ZBRThDMTQ3MzNGREIwMEU0MjMwNyAvKiBXZWJHTERlcHRo
VGV4dHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJHTERl
cHRoVGV4dHVyZS5jcHA7IHBhdGggPSBjYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTNGQUU4RDE0NzMzRkRCMDBFNDIzMDcgLyogV2Vi
R0xEZXB0aFRleHR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViR0xE
ZXB0aFRleHR1cmUuaDsgcGF0aCA9IGNhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk2RTNGQUU5MDE0NzMzRkVBMDBFNDIzMDcgLyogV2ViR0xE
ZXB0aFRleHR1cmUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdlYkdMRGVwdGhUZXh0dXJl
LmlkbDsgcGF0aCA9IGNhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTZFNDdFNjVFMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xHZXRJbmZvLmNw
cDsgcGF0aCA9IGNhbnZhcy9XZWJHTEdldEluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMR2V0SW5mby5oOyBwYXRoID0gY2FudmFz
L1dlYkdMR2V0SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTRBQkNEMjEz
OEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MVW5rbm93bkVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ4ODEsNiArMTQ4OTAsOSBAQAogCQkJCUEwRUUwREYz
MTQ0RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnU2hhZGVycy5jcHAgKi8sCiAJCQkJQTBFRTBE
RjQxNDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmggKi8sCiAJCQkJQTBFRTBE
RUYxNDRGODIzMjAwRjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmlkbCAqLywKKwkJCQk2RTNG
QUU4QzE0NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1cmUuY3BwICovLAorCQkJCTZF
M0ZBRThEMTQ3MzNGREIwMEU0MjMwNyAvKiBXZWJHTERlcHRoVGV4dHVyZS5oICovLAorCQkJCTZF
M0ZBRTkwMTQ3MzNGRUEwMEU0MjMwNyAvKiBXZWJHTERlcHRoVGV4dHVyZS5pZGwgKi8sCiAJCQkJ
NkVCRjBFNTIxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmNwcCAqLywKIAkJCQk2
RUJGMEU1MzEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uaCAqLywKIAkJCQk0OUM3
QjlBRTEwNDJEMzJFMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5jcHAgKi8sCkBAIC0xODE2
NCw2ICsxODE3Niw4IEBACiAJCQkJNkVFOEE3NzExMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xD
b250ZXh0QXR0cmlidXRlcy5oICovLAogCQkJCUJDMkNCRjdBMTQwRjFENTgwMDM4NzlCRSAvKiBK
U1dlYkdMQ29udGV4dEV2ZW50LmNwcCAqLywKIAkJCQlCQzJDQkY0QjE0MEYxQTY1MDAzODc5QkUg
LyogSlNXZWJHTENvbnRleHRFdmVudC5oICovLAorCQkJCTZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMw
NyAvKiBKU1dlYkdMRGVwdGhUZXh0dXJlLmNwcCAqLywKKwkJCQk2RTNGQUQzNzE0NzMzRjQwMDBF
NDIzMDcgLyogSlNXZWJHTERlcHRoVGV4dHVyZS5oICovLAogCQkJCTQ5QzdCOTg0MTA0MkQyRDMw
MDA5RDQ0NyAvKiBKU1dlYkdMRnJhbWVidWZmZXIuY3BwICovLAogCQkJCTQ5QzdCOTg1MTA0MkQy
RDMwMDA5RDQ0NyAvKiBKU1dlYkdMRnJhbWVidWZmZXIuaCAqLywKIAkJCQk5M0YxRDVCRTEyRDUz
MzU2MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmNwcCAqLywKQEAgLTIzODUxLDYgKzIz
ODY1LDcgQEAKIAkJCQk2RTNGQUQzOTE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVFOEE3NzMxMEY4MDNGMzAwNUE0
QTI0IC8qIEpTV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMy
Q0JGNEUxNDBGMUFCRDAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTZFM0ZBRDM5MTQ3MzNGNDAwMEU0MjMwNyAvKiBKU1dlYkdMRGVwdGhUZXh0dXJl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3Qjk5ODEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJH
TEZyYW1lYnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxRDVDMTEyRDUzMzU2MDA4MzJC
RUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3Qjk5QzEw
NDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTFByb2dyYW0uaCBpbiBIZWFkZXJzICovLApAQCAtMjQ5
MzAsNiArMjQ5NDUsNyBAQAogCQkJCTAxRDNDRjg1MTRCRDBBMzAwMEZFOTk3MCAvKiBXZWJHTENv
bnRleHRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUEwRUUwREY2MTQ0RjgyNTUwMEY4MEIw
RCAvKiBXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMEVFMERG
ODE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1NoYWRlcnMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTZFM0ZBRThGMTQ3MzNGREIwMEU0MjMwNyAvKiBXZWJHTERlcHRoVGV4dHVyZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNkVCRjBFNTUxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlDRjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xG
cmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4
IC8qIFdlYkdMR2V0SW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzA4OSw2ICsyNzEwNSw3IEBA
CiAJCQkJNkUzRkFEMzgxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkVFOEE3NzIxMEY4MDNGMzAwNUE0QTI0IC8q
IEpTV2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzJDQkY3
QjE0MEYxRDU4MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk2RTNGQUQzODE0NzMzRjQwMDBFNDIzMDcgLyogSlNXZWJHTERlcHRoVGV4dHVyZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUM3Qjk5NzEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJH
TEZyYW1lYnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjFENUMwMTJENTMzNTYwMDgz
MkJFQyAvKiBKU1dlYkdMTG9zZUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlDN0I5
OUIxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xQcm9ncmFtLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMjc5ODEsNiArMjc5OTgsNyBAQAogCQkJCTAxRDNDRjg0MTRCRDBBMzAwMEZFOTk3MCAvKiBX
ZWJHTENvbnRleHRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTBFRTBERjUxNDRGODI1
NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTBFRTBERjcxNDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTZFM0ZBRThFMTQ3MzNGREIwMEU0MjMwNyAvKiBXZWJHTERlcHRoVGV4
dHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2RUJGMEU1NDEyQTg5Mjk4MDBEQjE3MDkgLyog
V2ViR0xFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlDN0I5Q0UxMDQyRDMyRjAw
MDlENDQ3IC8qIFdlYkdMRnJhbWVidWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkU0N0U2
NjAxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250
ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcAppbmRleCBkNmNmNGFkMmY4OGIzN2YwMWZhODM2YmVmZGMyNDMw
N2NkM2JjNzAzLi5kNmExNzFmYjk0OTgyYjNhNzY4YzVmNDc2NDNmMzNkNjBmMDkxMDQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiSlNVaW50
OEFycmF5LmgiCiAjaW5jbHVkZSAiSlNXZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMuaCIKKyNpbmNsdWRlICJKU1dlYkdMRGVwdGhUZXh0dXJlLmgi
CiAjaW5jbHVkZSAiSlNXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNXZWJHTExvc2VD
b250ZXh0LmgiCiAjaW5jbHVkZSAiSlNXZWJHTFByb2dyYW0uaCIKQEAgLTYzLDYgKzY0LDcgQEAK
ICNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIgogI2luY2x1ZGUgIldlYkdM
RGVidWdSZW5kZXJlckluZm8uaCIKICNpbmNsdWRlICJXZWJHTERlYnVnU2hhZGVycy5oIgorI2lu
Y2x1ZGUgIldlYkdMRGVwdGhUZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2ViR0xFeHRlbnNpb24uaCIK
ICNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xHZXRJbmZvLmgi
CkBAIC0yMDQsNiArMjA2LDggQEAgc3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdlYkdMRXh0ZW4KICAgICAgICAgcmV0
dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxXZWJHTERlYnVnU2hhZGVy
cyo+KGV4dGVuc2lvbikpOwogICAgIGNhc2UgV2ViR0xFeHRlbnNpb246OldlYktpdFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDTmFtZToKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFs
T2JqZWN0LCBzdGF0aWNfY2FzdDxXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyo+KGV4dGVuc2lv
bikpOworICAgIGNhc2UgV2ViR0xFeHRlbnNpb246OldlYktpdFdlYkdMRGVwdGhUZXh0dXJlTmFt
ZToKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxX
ZWJHTERlcHRoVGV4dHVyZSo+KGV4dGVuc2lvbikpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4ganNOdWxsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcAppbmRleCA4NTI3YmMyMWI4ODZlNmUwYzFiNWI0MTgzZDk2NGU5MDRjYTVhYjcz
Li41MDU5ZGRmMGE1NDZhODIwNDIxMWM1ODJiNWE5Yzk4YTUzMzZlOWFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdM
UmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJW
OFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgiCiAjaW5jbHVkZSAiVjhXZWJHTERlYnVnUmVu
ZGVyZXJJbmZvLmgiCiAjaW5jbHVkZSAiVjhXZWJHTERlYnVnU2hhZGVycy5oIgorI2luY2x1ZGUg
IlY4V2ViR0xEZXB0aFRleHR1cmUuaCIKICNpbmNsdWRlICJWOFdlYkdMRnJhbWVidWZmZXIuaCIK
ICNpbmNsdWRlICJWOFdlYkdMTG9zZUNvbnRleHQuaCIKICNpbmNsdWRlICJWOFdlYkdMUHJvZ3Jh
bS5oIgpAQCAtMjA0LDYgKzIwNSwxMCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjhPYmplY3QoV2ViR0xFeHRlbnNpb24qIGV4dGVuc2lvbiwgdjg6OkhhbmRsZTx2OAogICAgICAg
ICBleHRlbnNpb25PYmplY3QgPSB0b1Y4KHN0YXRpY19jYXN0PFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDKj4oZXh0ZW5zaW9uKSwgaXNvbGF0ZSk7CiAgICAgICAgIHJlZmVyZW5jZU5hbWUgPSAi
d2ViS2l0V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENOYW1lIjsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6V2ViS2l0V2ViR0xEZXB0aFRleHR1cmVOYW1lOgorICAg
ICAgICBleHRlbnNpb25PYmplY3QgPSB0b1Y4KHN0YXRpY19jYXN0PFdlYkdMRGVwdGhUZXh0dXJl
Kj4oZXh0ZW5zaW9uKSwgaXNvbGF0ZSk7CisgICAgICAgIHJlZmVyZW5jZU5hbWUgPSAid2ViS2l0
V2ViR0xEZXB0aFRleHR1cmVOYW1lIjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VS
VCghZXh0ZW5zaW9uT2JqZWN0LklzRW1wdHkoKSk7CiAgICAgVjhET01XcmFwcGVyOjpzZXROYW1l
ZEhpZGRlblJlZmVyZW5jZShjb250ZXh0T2JqZWN0LCByZWZlcmVuY2VOYW1lLCBleHRlbnNpb25P
YmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0
aFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1
cmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNhY2Y0NmExYjg1MGZjYWMwOGFiNjJjZDA4ZTZhMzM2MDZkOGRk
N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERl
cHRoVGV4dHVyZS5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIldlYkdMRGVwdGhUZXh0dXJlLmgi
CisKKyNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitX
ZWJHTERlcHRoVGV4dHVyZTo6V2ViR0xEZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0
KiBjb250ZXh0KQorICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKK3sKK30KKworV2ViR0xE
ZXB0aFRleHR1cmU6On5XZWJHTERlcHRoVGV4dHVyZSgpCit7Cit9CisKK1dlYkdMRXh0ZW5zaW9u
OjpFeHRlbnNpb25OYW1lIFdlYkdMRGVwdGhUZXh0dXJlOjpnZXROYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gV2ViS2l0V2ViR0xEZXB0aFRleHR1cmVOYW1lOworfQorCitQYXNzT3duUHRyPFdl
YkdMRGVwdGhUZXh0dXJlPiBXZWJHTERlcHRoVGV4dHVyZTo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5n
Q29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkdMRGVwdGhU
ZXh0dXJlKGNvbnRleHQpKTsKK30KKworYm9vbCBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVk
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQoreworICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5z
aW9ucyA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9ucy0+
c3VwcG9ydHMoIkdMX0NIUk9NSVVNX2RlcHRoX3RleHR1cmUiKQorICAgICAgICB8fCBleHRlbnNp
b25zLT5zdXBwb3J0cygiR0xfT0VTX2RlcHRoX3RleHR1cmUiKQorICAgICAgICB8fCBleHRlbnNp
b25zLT5zdXBwb3J0cygiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFjNmFhYmZmNGRm
ZTA5NGNlNmI1MTE3ODNiOTdiNGNmYTkyNDU0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmgKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViR0xEZXB0aFRleHR1cmVfaAorI2RlZmluZSBXZWJHTERlcHRoVGV4
dHVyZV9oCisKKyNpbmNsdWRlICJXZWJHTEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViR0xEZXB0aFRleHR1
cmUgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPFdlYkdMRGVwdGhUZXh0dXJlPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CisK
KyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0M0QqKTsKKworICAgIHZp
cnR1YWwgfldlYkdMRGVwdGhUZXh0dXJlKCk7CisgICAgdmlydHVhbCBFeHRlbnNpb25OYW1lIGdl
dE5hbWUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBXZWJHTERlcHRoVGV4dHVyZShXZWJHTFJl
bmRlcmluZ0NvbnRleHQqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFdlYkdMRGVwdGhUZXh0dXJlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRGVwdGhUZXh0dXJlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDc0NTBkMThiYmIxOWY1YjM0OGJh
ZGFiYmMyYmQ3NjdjOTZmNmM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaWRsCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitt
b2R1bGUgaHRtbCB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9V0VCR0ws
CisgICAgICAgIEpTR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsQ29udGV4dCwKKyAgICAgICAgT21p
dENvbnN0cnVjdG9yCisgICAgXSBXZWJHTERlcHRoVGV4dHVyZSB7CisgICAgfTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCmluZGV4IGE0ZDM5NzAyOTdi
MmQ5Zjk3YWQ2MmM3MzhjNGFjOGUyMTA4ZWJmOGUuLmM2NmE2MDg2MWMxN2FmZWQ5ODA3MzU0YzE5
YjdmYzYwYjJhNzc1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRl
bnNpb24uaApAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIFdlYkdMRGVidWdSZW5k
ZXJlckluZm9OYW1lLAogICAgICAgICBXZWJHTERlYnVnU2hhZGVyc05hbWUsCiAgICAgICAgIFdl
YktpdFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDTmFtZSwgLy8gV0VCS0lUXyBwcmVmaXggdW50
aWwgZXh0ZW5zaW9uIGlzIG9mZmljaWFsCisgICAgICAgIFdlYktpdFdlYkdMRGVwdGhUZXh0dXJl
TmFtZSwgLy8gV0VCS0lUXyBwcmVmaXggdW50aWwgZXh0ZW5zaW9uIGlzIG9mZmljaWFsCiAgICAg
fTsKIAogICAgIHZvaWQgcmVmKCkgeyBtX2NvbnRleHQtPnJlZigpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCmluZGV4IDRjZDAwMzVmNjU4
OThmOWNhYTRmMjdhMWZkOWRhN2ViOGU0MmUwNWMuLjNhMGIxMDQxZmRhODEwYzNiYmRkNWM3OWYz
YTYyOTczMzRkNzQxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwCkBAIC04NiwxNSArODYsNyBAQCBuYW1lc3BhY2UgewogCiAgICAgR0Mz
RGVudW0gV2ViR0xSZW5kZXJidWZmZXJBdHRhY2htZW50OjpnZXRGb3JtYXQoKSBjb25zdAogICAg
IHsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBmb3JtYXQgPSBtX3JlbmRlcmJ1ZmZlci0+Z2V0SW50
ZXJuYWxGb3JtYXQoKTsKLSAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6UkdCQTQ6Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQjVfQTE6Ci0gICAgICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7Ci0g
ICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQjU2NToKLSAgICAgICAgICAgIHJldHVy
biBHcmFwaGljc0NvbnRleHQzRDo6UkdCOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbV9yZW5kZXJidWZmZXItPmdldEludGVybmFsRm9ybWF0KCk7CiAgICAg
fQogCiAgICAgV2ViR0xTaGFyZWRPYmplY3QqIFdlYkdMUmVuZGVyYnVmZmVyQXR0YWNobWVudDo6
Z2V0T2JqZWN0KCkgY29uc3QKQEAgLTIzNyw1MiArMjI5LDEyIEBAIG5hbWVzcGFjZSB7CiAgICAg
ICAgIGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgYXR0YWNobWVudCwgbV90YXJnZXQsIDAsIG1fbGV2ZWwpOwogICAgIH0KIAotICAg
IHVuc2lnbmVkIGdldENsZWFyQml0c0J5QXR0YWNobWVudFR5cGUoR0MzRGVudW0gYXR0YWNobWVu
dCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoYXR0YWNobWVudCkgewotICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMDoKLSAgICAgICAgICAgIHJldHVybiBH
cmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJVDsKLSAgICAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVDoKLSAgICAgICAgICAgIHJldHVybiBHcmFwaGlj
c0NvbnRleHQzRDo6REVQVEhfQlVGRkVSX0JJVDsKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5UOgotICAgICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29u
dGV4dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVDoKLSAgICAgICAgICAgIHJldHVybiBHcmFwaGlj
c0NvbnRleHQzRDo6REVQVEhfQlVGRkVSX0JJVCB8IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lM
X0JVRkZFUl9CSVQ7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIHVuc2lnbmVkIGdldENsZWFyQml0c0J5Rm9ybWF0KEdDM0Rl
bnVtIGZvcm1hdCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFMUEhBOgotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpMVU1JTkFOQ0U6Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkxVTUlOQU5D
RV9BTFBIQToKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCOgotICAgICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I1NjU6Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQkE6Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE0OgotICAg
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I1X0ExOgotICAgICAgICAgICAgcmV0dXJu
IEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUOwotICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQxNjoKLSAgICAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6REVQVEhfQ09NUE9ORU5UOgotICAgICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29u
dGV4dDNEOjpERVBUSF9CVUZGRVJfQklUOwotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpTVEVOQ0lMX0lOREVYODoKLSAgICAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6
U1RFTkNJTF9CVUZGRVJfQklUOwotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBU
SF9TVEVOQ0lMOgotICAgICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9C
VUZGRVJfQklUIHwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQlVGRkVSX0JJVDsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgfQotCiAg
ICAgYm9vbCBpc0F0dGFjaG1lbnRDb21wbGV0ZShXZWJHTEZyYW1lYnVmZmVyOjpXZWJHTEF0dGFj
aG1lbnQqIGF0dGFjaGVkT2JqZWN0LCBHQzNEZW51bSBhdHRhY2htZW50LCBjb25zdCBjaGFyKiog
cmVhc29uKQogICAgIHsKICAgICAgICAgQVNTRVJUKGF0dGFjaGVkT2JqZWN0ICYmIGF0dGFjaGVk
T2JqZWN0LT5pc1ZhbGlkKCkpOwogICAgICAgICBBU1NFUlQocmVhc29uKTsKLSAgICAgICAgdW5z
aWduZWQgbmVlZCA9IGdldENsZWFyQml0c0J5QXR0YWNobWVudFR5cGUoYXR0YWNobWVudCk7Ci0g
ICAgICAgIHVuc2lnbmVkIGhhdmUgPSBnZXRDbGVhckJpdHNCeUZvcm1hdChhdHRhY2hlZE9iamVj
dC0+Z2V0Rm9ybWF0KCkpOworICAgICAgICB1bnNpZ25lZCBuZWVkID0gR3JhcGhpY3NDb250ZXh0
M0Q6OmdldENsZWFyQml0c0J5QXR0YWNobWVudFR5cGUoYXR0YWNobWVudCk7CisgICAgICAgIHVu
c2lnbmVkIGhhdmUgPSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q2xlYXJCaXRzQnlGb3JtYXQoYXR0
YWNoZWRPYmplY3QtPmdldEZvcm1hdCgpKTsKIAogICAgICAgICBpZiAoKG5lZWQgJiBoYXZlKSAh
PSBuZWVkKSB7CiAgICAgICAgICAgICAqcmVhc29uID0gImF0dGFjaG1lbnQgdHlwZSBpcyBub3Qg
Y29ycmVjdCBmb3IgYXR0YWNobWVudCI7CkBAIC01MjksNyArNDgxLDcgQEAgYm9vbCBXZWJHTEZy
YW1lYnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMoR3JhcGhpY3NDb250ZXh0M0QqIGczZCwg
Y29uc3QgY2hhcioKICAgICAgICAgR0MzRGVudW0gYXR0YWNobWVudFR5cGUgPSBpdC0+Zmlyc3Q7
CiAgICAgICAgIFdlYkdMQXR0YWNobWVudCogYXR0YWNobWVudCA9IGl0LT5zZWNvbmQuZ2V0KCk7
CiAgICAgICAgIGlmICghYXR0YWNobWVudC0+aXNJbml0aWFsaXplZCgpKQotICAgICAgICAgICBt
YXNrIHw9IGdldENsZWFyQml0c0J5QXR0YWNobWVudFR5cGUoYXR0YWNobWVudFR5cGUpOworICAg
ICAgICAgICBtYXNrIHw9IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRDbGVhckJpdHNCeUF0dGFjaG1l
bnRUeXBlKGF0dGFjaG1lbnRUeXBlKTsKICAgICB9CiAgICAgaWYgKCFtYXNrKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTYwMCw3ICs1NTIsNyBAQCBib29sIFdlYkdMRnJhbWVidWZmZXI6Omlu
aXRpYWxpemVBdHRhY2htZW50cyhHcmFwaGljc0NvbnRleHQzRCogZzNkLCBjb25zdCBjaGFyKgog
ICAgIGZvciAoQXR0YWNobWVudE1hcDo6aXRlcmF0b3IgaXQgPSBtX2F0dGFjaG1lbnRzLmJlZ2lu
KCk7IGl0ICE9IG1fYXR0YWNobWVudHMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgR0MzRGVudW0g
YXR0YWNobWVudFR5cGUgPSBpdC0+Zmlyc3Q7CiAgICAgICAgIFdlYkdMQXR0YWNobWVudCogYXR0
YWNobWVudCA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgIEdDM0RiaXRmaWVsZCBiaXRzID0g
Z2V0Q2xlYXJCaXRzQnlBdHRhY2htZW50VHlwZShhdHRhY2htZW50VHlwZSk7CisgICAgICAgIEdD
M0RiaXRmaWVsZCBiaXRzID0gR3JhcGhpY3NDb250ZXh0M0Q6OmdldENsZWFyQml0c0J5QXR0YWNo
bWVudFR5cGUoYXR0YWNobWVudFR5cGUpOwogICAgICAgICBpZiAoYml0cyAmIG1hc2spCiAgICAg
ICAgICAgICBhdHRhY2htZW50LT5zZXRJbml0aWFsaXplZCgpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4
IDEyMGM4YzQzZTE5MGY0NDY3ZTNhMjFmN2VjYjBhNjE3YWQ1YTFmNzUuLjViN2RjZWY5NzJhMGE3
Y2JhZTA0YWIzMzJkYjczMzdhMDE0ZWFlNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNTksNiArNTksNyBAQAog
I2luY2x1ZGUgIldlYkdMQ29udGV4dEdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1JlbmRl
cmVySW5mby5oIgogI2luY2x1ZGUgIldlYkdMRGVidWdTaGFkZXJzLmgiCisjaW5jbHVkZSAiV2Vi
R0xEZXB0aFRleHR1cmUuaCIKICNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVk
ZSAiV2ViR0xMb3NlQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkdMUHJvZ3JhbS5oIgpAQCAtODEs
NyArODIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBkb3VibGUgc2Vjb25kc0Jl
dHdlZW5SZXN0b3JlQXR0ZW1wdHMgPSAxLjA7Ci1jb25zdCBpbnQgbWF4R0xFcnJvcnNBbGxvd2Vk
VG9Db25zb2xlID0gMTA7Citjb25zdCBpbnQgbWF4R0xFcnJvcnNBbGxvd2VkVG9Db25zb2xlID0g
MjU2OwogCiBuYW1lc3BhY2UgewogCkBAIC0xMzIwLDEyICsxMzIxLDIzIEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQs
IEdDM0RpbnQgbGV2CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAor
Ym9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlU2V0dGFibGVUZXhGb3JtYXQoY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSBmb3JtYXQpCit7CisgICAgaWYgKEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRDbGVhckJpdHNCeUZvcm1hdChmb3JtYXQpICYgKEdyYXBoaWNzQ29u
dGV4dDNEOjpERVBUSF9CVUZGRVJfQklUIHwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQlVG
RkVSX0JJVCkpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJmb3JtYXQgY2FuIG5vdCBiZSBzZXQs
IG9ubHkgcmVuZGVyZWQgdG8iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvcHlUZXhJbWFn
ZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWln
aHQsIEdDM0RpbnQgYm9yZGVyKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCiAgICAgICAg
IHJldHVybjsKICAgICBpZiAoIXZhbGlkYXRlVGV4RnVuY1BhcmFtZXRlcnMoImNvcHlUZXhJbWFn
ZTJEIiwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRl
ciwgaW50ZXJuYWxmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFKSkKICAg
ICAgICAgcmV0dXJuOworICAgIGlmICghdmFsaWRhdGVTZXR0YWJsZVRleEZvcm1hdCgiY29weVRl
eEltYWdlMkQiLCBpbnRlcm5hbGZvcm1hdCkpCisgICAgICAgIHJldHVybjsKICAgICBXZWJHTFRl
eHR1cmUqIHRleCA9IHZhbGlkYXRlVGV4dHVyZUJpbmRpbmcoImNvcHlUZXhJbWFnZTJEIiwgdGFy
Z2V0LCB0cnVlKTsKICAgICBpZiAoIXRleCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTM4MCw3ICsx
MzkyLDEwIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb3B5VGV4U3ViSW1hZ2UyRChH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDCiAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiY29weVRleFN1YkltYWdlMkQi
LCAicmVjdGFuZ2xlIG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGlmICghaXNUZXhJbnRlcm5hbEZvcm1hdENvbG9yQnVmZmVyQ29tYmluYXRpb25WYWxpZCh0ZXgt
PmdldEludGVybmFsRm9ybWF0KHRhcmdldCwgbGV2ZWwpLCBnZXRCb3VuZEZyYW1lYnVmZmVyQ29s
b3JGb3JtYXQoKSkpIHsKKyAgICBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCA9IHRleC0+Z2V0SW50
ZXJuYWxGb3JtYXQodGFyZ2V0LCBsZXZlbCk7CisgICAgaWYgKCF2YWxpZGF0ZVNldHRhYmxlVGV4
Rm9ybWF0KCJjb3B5VGV4U3ViSW1hZ2UyRCIsIGludGVybmFsZm9ybWF0KSkKKyAgICAgICAgcmV0
dXJuOworICAgIGlmICghaXNUZXhJbnRlcm5hbEZvcm1hdENvbG9yQnVmZmVyQ29tYmluYXRpb25W
YWxpZChpbnRlcm5hbGZvcm1hdCwgZ2V0Qm91bmRGcmFtZWJ1ZmZlckNvbG9yRm9ybWF0KCkpKSB7
CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09Q
RVJBVElPTiwgImNvcHlUZXhTdWJJbWFnZTJEIiwgImZyYW1lYnVmZmVyIGlzIGluY29tcGF0aWJs
ZSBmb3JtYXQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxNzUsNiArMjE5MCw5IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0YXJn
ZXQpCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X09QRVJBVElPTiwgImdlbmVyYXRlTWlwbWFwIiwgImxldmVsIDAgbm90IHBvd2VyIG9mIDIgb3Ig
bm90IGFsbCB0aGUgc2FtZSBzaXplIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYg
KCF2YWxpZGF0ZVNldHRhYmxlVGV4Rm9ybWF0KCJnZW5lcmF0ZU1pcG1hcCIsIHRleC0+Z2V0SW50
ZXJuYWxGb3JtYXQodGFyZ2V0LCAwKSkpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIGdlbmVy
YXRlTWlwbWFwIHdvbid0IHdvcmsgcHJvcGVybHkgaWYgbWluRmlsdGVyIGlzIG5vdCBORUFSRVNU
X01JUE1BUF9MSU5FQVIKICAgICAvLyBvbiBNYWMuICBSZW1vdmUgdGhlIGhhY2sgb25jZSB0aGlz
IGRyaXZlciBidWcgaXMgZml4ZWQuCiAjaWYgT1MoREFSV0lOKQpAQCAtMjM1MCw3ICsyMzY4LDEz
IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVT
M1RDID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OmNyZWF0ZSh0aGlzKTsKICAgICAgICAg
cmV0dXJuIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEMuZ2V0KCk7CiAgICAgfQotCisgICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJXRUJLSVRfV0VCR0xfZGVwdGhfdGV4dHVyZSIp
KSB7CisgICAgICAgIGlmICghbV93ZWJnbERlcHRoVGV4dHVyZSkgeworICAgICAgICAgICAgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2RlcHRo
X3RleHR1cmUiKTsKKyAgICAgICAgICAgIG1fd2ViZ2xEZXB0aFRleHR1cmUgPSBXZWJHTERlcHRo
VGV4dHVyZTo6Y3JlYXRlKHRoaXMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX3dlYmds
RGVwdGhUZXh0dXJlLmdldCgpOworICAgIH0KICAgICBpZiAoYWxsb3dQcml2aWxlZ2VkRXh0ZW5z
aW9ucygpKSB7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VCR0xfZGVi
dWdfcmVuZGVyZXJfaW5mbyIpKSB7CiAgICAgICAgICAgICBpZiAoIW1fd2ViZ2xEZWJ1Z1JlbmRl
cmVySW5mbykKQEAgLTI4MzQsNiArMjg1OCw4IEBAIFZlY3RvcjxTdHJpbmc+IFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpCiAgICAgcmVzdWx0LmFwcGVuZCgi
V0VCS0lUX1dFQkdMX2xvc2VfY29udGV4dCIpOwogICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQzo6c3VwcG9ydGVkKHRoaXMpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJLSVRf
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKTsKKyAgICBpZiAoV2ViR0xEZXB0aFRleHR1
cmU6OnN1cHBvcnRlZCh0aGlzLT5ncmFwaGljc0NvbnRleHQzRCgpKSkKKyAgICAgICAgcmVzdWx0
LmFwcGVuZCgiV0VCS0lUX1dFQkdMX2RlcHRoX3RleHR1cmUiKTsKIAogICAgIGlmIChhbGxvd1By
aXZpbGVnZWRFeHRlbnNpb25zKCkpIHsKICAgICAgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLT5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIikpCkBA
IC0zNTI2LDExICszNTUyLDE3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFn
ZTJEQmFzZShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlCiAgICAgICAgIH0K
ICAgICB9CiAgICAgaWYgKCFwaXhlbHMpIHsKLSAgICAgICAgYm9vbCBzdWNjZWVkID0gbV9jb250
ZXh0LT50ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1fdW5wYWNrQWxpZ25tZW50
KTsKLSAgICAgICAgaWYgKCFzdWNjZWVkKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBp
ZiAoaXNSZXNvdXJjZVNhZmUoKSkKKyAgICAgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3Jt
YXQsIHR5cGUsIDApOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGJvb2wgc3VjY2VlZCA9
IG1fY29udGV4dC0+dGV4SW1hZ2UyRFJlc291cmNlU2FmZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbV91bnBh
Y2tBbGlnbm1lbnQpOworICAgICAgICAgICAgaWYgKCFzdWNjZWVkKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQogICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghdmFsaWRhdGVT
ZXR0YWJsZVRleEZvcm1hdCgidGV4SW1hZ2UyRCIsIGludGVybmFsZm9ybWF0KSkKKyAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CiAgICAgfQpAQCAtMzU2MCw3ICsz
NTkyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50
IGJvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVt
IGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0KCkgfHwgIXZhbGlkYXRlVGV4RnVu
Y0RhdGEoInRleEltYWdlMkQiLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscywg
TnVsbEFsbG93ZWQpKQorICAgIGlmIChpc0NvbnRleHRMb3N0KCkgfHwgIXZhbGlkYXRlVGV4RnVu
Y0RhdGEoInRleEltYWdlMkQiLCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBw
aXhlbHMsIE51bGxBbGxvd2VkKSkKICAgICAgICAgcmV0dXJuOwogICAgIHZvaWQqIGRhdGEgPSBw
aXhlbHMgPyBwaXhlbHMtPmJhc2VBZGRyZXNzKCkgOiAwOwogICAgIFZlY3Rvcjx1aW50OF90PiB0
ZW1wRGF0YTsKQEAgLTM3MzgsNiArMzc3MCw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp0ZXhTdWJJbWFnZTJEQmFzZShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDCiAg
ICAgICAgIHJldHVybjsKICAgICBpZiAoIXZhbGlkYXRlU2l6ZSgidGV4U3ViSW1hZ2UyRCIsIHhv
ZmZzZXQsIHlvZmZzZXQpKQogICAgICAgICByZXR1cm47CisgICAgaWYgKCF2YWxpZGF0ZVNldHRh
YmxlVGV4Rm9ybWF0KCJ0ZXhTdWJJbWFnZTJEIiwgZm9ybWF0KSkKKyAgICAgICAgcmV0dXJuOwog
ICAgIFdlYkdMVGV4dHVyZSogdGV4ID0gdmFsaWRhdGVUZXh0dXJlQmluZGluZygidGV4U3ViSW1h
Z2UyRCIsIHRhcmdldCwgdHJ1ZSk7CiAgICAgaWYgKCF0ZXgpCiAgICAgICAgIHJldHVybjsKQEAg
LTM3NzcsNyArMzgxMSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFn
ZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGluCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBo
ZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51
bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8ICF2YWxpZGF0ZVRleEZ1
bmNEYXRhKCJ0ZXhTdWJJbWFnZTJEIiwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhl
bHMsIE51bGxOb3RBbGxvd2VkKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8ICF2YWxpZGF0
ZVRleEZ1bmNEYXRhKCJ0ZXhTdWJJbWFnZTJEIiwgbGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwgcGl4ZWxzLCBOdWxsTm90QWxsb3dlZCkpCiAgICAgICAgIHJldHVybjsKICAgICB2
b2lkKiBkYXRhID0gcGl4ZWxzLT5iYXNlQWRkcmVzcygpOwogICAgIFZlY3Rvcjx1aW50OF90PiB0
ZW1wRGF0YTsKQEAgLTQ2MDgsMjAgKzQ2NDIsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Y3JlYXRlRmFsbGJhY2tCbGFja1RleHR1cmVzMXgxKCkKIGJvb2wgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojppc1RleEludGVybmFsRm9ybWF0Q29sb3JCdWZmZXJDb21iaW5hdGlvblZhbGlkKEdD
M0RlbnVtIHRleEludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gY29s
b3JCdWZmZXJGb3JtYXQpCiB7Ci0gICAgc3dpdGNoIChjb2xvckJ1ZmZlckZvcm1hdCkgewotICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFMUEhBOgotICAgICAgICBpZiAodGV4SW50ZXJuYWxG
b3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkFMUEhBKQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQjoKLSAg
ICAgICAgaWYgKHRleEludGVybmFsRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpMVU1JTkFO
Q0UKLSAgICAgICAgICAgIHx8IHRleEludGVybmFsRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNE
OjpSR0IpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQToKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
ICAgIHJldHVybiBmYWxzZTsKKyAgICB1bnNpZ25lZCBuZWVkID0gR3JhcGhpY3NDb250ZXh0M0Q6
OmdldENoYW5uZWxCaXRzQnlGb3JtYXQodGV4SW50ZXJuYWxGb3JtYXQpOworICAgIHVuc2lnbmVk
IGhhdmUgPSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1hdChjb2xvckJ1
ZmZlckZvcm1hdCk7CisgICAgcmV0dXJuIChuZWVkICYgaGF2ZSkgPT0gbmVlZDsKIH0KIAogR0Mz
RGVudW0gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCb3VuZEZyYW1lYnVmZmVyQ29sb3JGb3Jt
YXQoKQpAQCAtNDcxMiw3ICs0NzM1LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZh
bGlkYXRlU3RyaW5nKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW4KICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4
RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSBmb3Jt
YXQsIEdDM0RlbnVtIHR5cGUpCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVU
ZXhGdW5jRm9ybWF0QW5kVHlwZShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIGZv
cm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRGludCBsZXZlbCkKIHsKICAgICBzd2l0Y2ggKGZvcm1h
dCkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFMUEhBOgpAQCAtNDcyMSw2ICs0NzQ0
LDExIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRB
bmRUeXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6UkdCOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE6CiAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDoKKyAgICAgICAg
aWYgKG1fd2ViZ2xEZXB0aFRleHR1cmUpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25O
YW1lLCAiREVQVEhfQ09NUE9ORU5UIHRleHR1cmUgZm9ybWF0IG5vdCBlbmFibGVkIik7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBkZWZhdWx0OgogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlk
IHRleHR1cmUgZm9ybWF0Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ3MzcsNiArNDc2
NSwxMiBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXhGdW5jRm9ybWF0
QW5kVHlwZShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1
bmN0aW9uTmFtZSwgImludmFsaWQgdGV4dHVyZSB0eXBlIik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9JTlQ6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQ6CisgICAgICAgIGlmIChtX3dlYmdsRGVw
dGhUZXh0dXJlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQg
dGV4dHVyZSB0eXBlIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkZWZhdWx0OgogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCBm
dW5jdGlvbk5hbWUsICJpbnZhbGlkIHRleHR1cmUgdHlwZSIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC00NzcwLDYgKzQ4MDQsMjEgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZh
bGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hhciogZnVuY3Rpb25OYW0KICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQ6CisgICAgICAgIGlmICghbV93ZWJn
bERlcHRoVGV4dHVyZSkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBmb3JtYXQuIERF
UFRIX0NPTVBPTkVOVCBub3QgZW5hYmxlZCIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgICAgIGlmICh0eXBlICE9IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05F
RF9TSE9SVAorICAgICAgICAgICAgJiYgdHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdO
RURfSU5UKSB7CisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgdHlwZSBmb3IgREVQ
VEhfQ09NUE9ORU5UIGZvcm1hdCIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIGlmIChsZXZlbCA+IDApIHsKKyAgICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImxl
dmVsIG11c3QgYmUgMCBmb3IgREVQVEhfQ09NUE9ORU5UIGZvcm1hdCIpOworICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC00ODE2LDcgKzQ4NjUsNyBAQCBi
b29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXhGdW5jUGFyYW1ldGVycyhjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUsCiAgICAgLy8gV2UgYWJzb2x1dGVseSBoYXZlIHRvIHZhbGlk
YXRlIHRoZSBmb3JtYXQgYW5kIHR5cGUgY29tYmluYXRpb24uCiAgICAgLy8gVGhlIHRleEltYWdl
MkQgZW50cnkgcG9pbnRzIHRha2luZyBIVE1MSW1hZ2UsIGV0Yy4gd2lsbCBwcm9kdWNlCiAgICAg
Ly8gdGVtcG9yYXJ5IGRhdGEgYmFzZWQgb24gdGhpcyBjb21iaW5hdGlvbiwgc28gaXQgbXVzdCBi
ZSBsZWdhbC4KLSAgICBpZiAoIXZhbGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUoZnVuY3Rpb25O
YW1lLCBmb3JtYXQsIHR5cGUpIHx8ICF2YWxpZGF0ZVRleEZ1bmNMZXZlbChmdW5jdGlvbk5hbWUs
IHRhcmdldCwgbGV2ZWwpKQorICAgIGlmICghdmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZShm
dW5jdGlvbk5hbWUsIGZvcm1hdCwgdHlwZSwgbGV2ZWwpIHx8ICF2YWxpZGF0ZVRleEZ1bmNMZXZl
bChmdW5jdGlvbk5hbWUsIHRhcmdldCwgbGV2ZWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDApIHsKQEAgLTQ4NjAsNyArNDkwOSw3IEBA
IGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleEZ1bmNQYXJhbWV0ZXJzKGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLAorYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4RnVuY0RhdGEo
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEaW50IGxldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6
ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMsCkBAIC00
ODczLDcgKzQ5MjIsOSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXhG
dW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpZiAoIXZhbGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUoZnVuY3Rpb25O
YW1lLCBmb3JtYXQsIHR5cGUpKQorICAgIGlmICghdmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlw
ZShmdW5jdGlvbk5hbWUsIGZvcm1hdCwgdHlwZSwgbGV2ZWwpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCF2YWxpZGF0ZVNldHRhYmxlVGV4Rm9ybWF0KGZ1bmN0aW9uTmFtZSwgZm9y
bWF0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3dpdGNoICh0eXBlKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCmlu
ZGV4IDRiMjE4ODY4NjE5OTU4NzM4NWE1NTVlOGJiMmFkNzc4YjJkOTgwZGEuLjg2MTIxOTY1NmY1
ZTUzYzk4ZGExNmY3YjExZDQ3OGQwZTllYTE4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCkBAIC01Nyw2ICs1Nyw3IEBAIGNs
YXNzIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOwogY2xhc3MgV2ViR0xDb250ZXh0QXR0cmli
dXRlczsKIGNsYXNzIFdlYkdMRGVidWdSZW5kZXJlckluZm87CiBjbGFzcyBXZWJHTERlYnVnU2hh
ZGVyczsKK2NsYXNzIFdlYkdMRGVwdGhUZXh0dXJlOwogY2xhc3MgV2ViR0xFeHRlbnNpb247CiBj
bGFzcyBXZWJHTEZyYW1lYnVmZmVyOwogY2xhc3MgV2ViR0xMb3NlQ29udGV4dDsKQEAgLTUwOSw2
ICs1MTAsNyBAQCBwdWJsaWM6CiAgICAgT3duUHRyPFdlYkdMRGVidWdSZW5kZXJlckluZm8+IG1f
d2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbzsKICAgICBPd25QdHI8V2ViR0xEZWJ1Z1NoYWRlcnM+IG1f
d2ViZ2xEZWJ1Z1NoYWRlcnM7CiAgICAgT3duUHRyPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
PiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDOworICAgIE93blB0cjxXZWJHTERlcHRoVGV4
dHVyZT4gbV93ZWJnbERlcHRoVGV4dHVyZTsKIAogICAgIC8vIEhlbHBlcnMgZm9yIGdldFBhcmFt
ZXRlciBhbmQgb3RoZXJzCiAgICAgV2ViR0xHZXRJbmZvIGdldEJvb2xlYW5QYXJhbWV0ZXIoR0Mz
RGVudW0pOwpAQCAtNTc3LDcgKzU3OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEhlbHBlciBmdW5j
dGlvbiB0byBjaGVjayBpbnB1dCBmb3JtYXQvdHlwZSBmb3IgZnVuY3Rpb25zIHtjb3B5fVRleHtT
dWJ9SW1hZ2UuCiAgICAgLy8gR2VuZXJhdGVzIEdMIGVycm9yIGFuZCByZXR1cm5zIGZhbHNlIGlm
IHBhcmFtZXRlcnMgYXJlIGludmFsaWQuCi0gICAgYm9vbCB2YWxpZGF0ZVRleEZ1bmNGb3JtYXRB
bmRUeXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51
bSB0eXBlKTsKKyAgICBib29sIHZhbGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEdDM0RpbnQg
bGV2ZWwpOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNoZWNrIGlucHV0IGxldmVsIGZv
ciBmdW5jdGlvbnMge2NvcHl9VGV4e1N1Yn1JbWFnZS4KICAgICAvLyBHZW5lcmF0ZXMgR0wgZXJy
b3IgYW5kIHJldHVybnMgZmFsc2UgaWYgbGV2ZWwgaXMgaW52YWxpZC4KQEAgLTU5OSwxMiArNjAx
LDE4IEBAIHB1YmxpYzoKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgdGhhdCB0
aGUgZ2l2ZW4gQXJyYXlCdWZmZXJWaWV3CiAgICAgLy8gaXMgb2YgdGhlIGNvcnJlY3QgdHlwZSBh
bmQgY29udGFpbnMgZW5vdWdoIGRhdGEgZm9yIHRoZSB0ZXhJbWFnZSBjYWxsLgogICAgIC8vIEdl
bmVyYXRlcyBHTCBlcnJvciBhbmQgcmV0dXJucyBmYWxzZSBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZh
bGlkLgotICAgIGJvb2wgdmFsaWRhdGVUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsCisgICAgYm9vbCB2YWxpZGF0ZVRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSwgR0MzRGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVp
IHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
QzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOdWxsRGlzcG9zaXRpb24pOwogCisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlkYXRl
IGEgZ2l2ZW4gdGV4dHVyZSBmb3JtYXQgaXMgc2V0dGFibGUgYXMgaW4KKyAgICAvLyB5b3UgY2Fu
IHN1cHBseSBkYXRhIHRvIHRleEltYWdlMkQsIG9yIGNhbGwgdGV4SW1hZ2UyRCwgY29weVRleElt
YWdlMkQgYW5kCisgICAgLy8gY29weVRleFN1YkltYWdlMkQuCisgICAgLy8gR2VuZXJhdGVzIEdM
IGVycm9yIGFuZCByZXR1cm5zIGZhbHNlIGlmIHRoZSBmb3JtYXQgaXMgbm90IHNldHRhYmxlLgor
ICAgIGJvb2wgdmFsaWRhdGVTZXR0YWJsZVRleEZvcm1hdChjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIEdDM0RlbnVtIGZvcm1hdCk7CisKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRh
dGUgY29tcHJlc3NlZCB0ZXh0dXJlIGRhdGEgaXMgY29ycmVjdCBzaXplCiAgICAgLy8gZm9yIHRo
ZSBnaXZlbiBmb3JtYXQgYW5kIGRpbWVuc2lvbnMuCiAgICAgYm9vbCB2YWxpZGF0ZUNvbXByZXNz
ZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKaW5kZXgg
ZjAxNTU2YjI0M2Y0OWI4OTVhZmFlMzBjN2ZhMzZhNTBhMzZjYmEzNy4uMjVmNjZlNjM5MGUwNWQ1
ZGYyNTMxZTllYzg0MGQ4ZTAzOGZhMzM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcApAQCAtMTc1Niw2ICsxNzU2
LDc0IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnBhY2tQaXhlbHMoY29uc3QgdWludDhfdCog
c291cmNlRGF0YSwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordW5zaWduZWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldENsZWFyQml0c0J5QXR0YWNobWVudFR5cGUoR0MzRGVudW0gYXR0YWNobWVudCkK
K3sKKyAgICBzd2l0Y2ggKGF0dGFjaG1lbnQpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpDT0xPUl9BVFRBQ0hNRU5UMDoKKyAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpD
T0xPUl9CVUZGRVJfQklUOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFD
SE1FTlQ6CisgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQlVGRkVSX0JJ
VDsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAg
ICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9CVUZGRVJfQklUOworICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAg
cmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9CVUZGRVJfQklUIHwgR3JhcGhpY3NDb250
ZXh0M0Q6OlNURU5DSUxfQlVGRkVSX0JJVDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
MDsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRDbGVhckJpdHNC
eUZvcm1hdChHQzNEZW51bSBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBTFBIQToKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpMVU1JTkFOQ0U6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TFVNSU5BTkNFX0FMUEhB
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQjoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0I1NjU6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQToKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBNDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpSR0I1X0ExOgorICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZF
Ul9CSVQ7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTY6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UOgorICAgICAgICByZXR1
cm4gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQ7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6U1RFTkNJTF9JTkRFWDg6CisgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHQzRDo6U1RFTkNJTF9CVUZGRVJfQklUOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRF
UFRIX1NURU5DSUw6CisgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQlVG
RkVSX0JJVCB8IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCit1bnNpZ25lZCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1hdChHQzNEZW51bSBmb3JtYXQpCit7CisgICAg
c3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBTFBIQToKKyAg
ICAgICAgcmV0dXJuIENoYW5uZWxBbHBoYTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpM
VU1JTkFOQ0U6CisgICAgICAgIHJldHVybiBDaGFubmVsUkdCOworICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OkxVTUlOQU5DRV9BTFBIQToKKyAgICAgICAgcmV0dXJuIENoYW5uZWxSR0JBOwor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpSR0I1NjU6CisgICAgICAgIHJldHVybiBDaGFubmVsUkdCOworICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJHQkE6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCNV9BMToKKyAgICAgICAgcmV0dXJuIENoYW5u
ZWxSR0JBOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDE2Ogor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDoKKyAgICAgICAgcmV0
dXJuIENoYW5uZWxEZXB0aDsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0lO
REVYODoKKyAgICAgICAgcmV0dXJuIENoYW5uZWxTdGVuY2lsOworICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OkRFUFRIX1NURU5DSUw6CisgICAgICAgIHJldHVybiBDaGFubmVsRGVwdGggfCBD
aGFubmVsU3RlbmNpbDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5oCmluZGV4IDdiYjhhYTZkMTdjOGU1ZTdlOTYxZjJjNTg0YzcwYzg0ZDlhYTc3MjcuLjExM2Qz
Y2ZhZmYzMWJlYzQ2MWY2MzIzMTNkYzllODRiZDBjNzdhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtODQ0LDYg
Kzg0NCwyMiBAQCBwdWJsaWM6CiAKICAgICBJbnRTaXplIGdldEludGVybmFsRnJhbWVidWZmZXJT
aXplKCkgY29uc3Q7CiAKKyAgICBzdGF0aWMgdW5zaWduZWQgZ2V0Q2xlYXJCaXRzQnlBdHRhY2ht
ZW50VHlwZShHQzNEZW51bSk7CisgICAgc3RhdGljIHVuc2lnbmVkIGdldENsZWFyQml0c0J5Rm9y
bWF0KEdDM0RlbnVtKTsKKworICAgIGVudW0gQ2hhbm5lbEJpdHMgeworICAgICAgICBDaGFubmVs
UmVkID0gMSwKKyAgICAgICAgQ2hhbm5lbEdyZWVuID0gMiwKKyAgICAgICAgQ2hhbm5lbEJsdWUg
PSA0LAorICAgICAgICBDaGFubmVsQWxwaGEgPSA4LAorICAgICAgICBDaGFubmVsRGVwdGggPSAx
NiwKKyAgICAgICAgQ2hhbm5lbFN0ZW5jaWwgPSAzMiwKKyAgICAgICAgQ2hhbm5lbFJHQiA9IENo
YW5uZWxSZWQgfCBDaGFubmVsR3JlZW4gfCBDaGFubmVsQmx1ZSwKKyAgICAgICAgQ2hhbm5lbFJH
QkEgPSBDaGFubmVsUkdCIHwgQ2hhbm5lbEFscGhhLAorICAgIH07CisKKyAgICBzdGF0aWMgdW5z
aWduZWQgZ2V0Q2hhbm5lbEJpdHNCeUZvcm1hdChHQzNEZW51bSk7CisKICAgcHJpdmF0ZToKICAg
ICBHcmFwaGljc0NvbnRleHQzRChBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2lu
ZG93LCBib29sIHJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI5NmM3MjA2
NzkzODI4YzhiNGQ5OTMyYmQwNmY2ZmU0ZmY0MTJiNzcuLjc5NmE2ZmM0NmFkMGYyZjU0ZWM3OGI0
YzYxMjE5NWExNTM2ZTk4MTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0xMyAgR3Jl
Z2cgVGF2YXJlcyAgPGdtYW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBFeHBvc2UgV0VCR0xfZGVw
dGhfdGV4dHVyZSBleHRlbnNpb24gdG8gV2ViR0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg3MDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wt
dGVzdC11dGlscy5qczoKKyAgICAgICAgKFdlYkdMVGVzdFV0aWxzKToKKyAgICAgICAgKiBmYXN0
L2NhbnZhcy93ZWJnbC93ZWJnbC1kZXB0aC10ZXh0dXJlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtZGVwdGgtdGV4dHVyZS5odG1sOiBBZGRl
ZC4KKwogMjAxMi0wNi0xNCAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgog
CiAgICAgICAgIFtHdGtdIEFkZCBzdXBwb3J0IGluIER1bXBSZW5kZXJUcmVlIGZvciB0cmFja2lu
ZyByZXBhaW50cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29u
dGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0ZW5jaWwtYW50aWFsaWFzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBo
YS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy1leHBlY3RlZC50eHQKaW5kZXggZjM5MDBkYjU4NTgy
ZDcyMTgxZWNmNDZkZjkzYThjNGQzYjU4MzJlNy4uOWIxYTBmNmI1ZDM1Mjc3MWNmMTkyZTM1Yjkz
NTVjNDFkNTUxOWZlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
Y29udGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0ZW5jaWwtYW50aWFsaWFzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0
ZXMtYWxwaGEtZGVwdGgtc3RlbmNpbC1hbnRpYWxpYXMtZXhwZWN0ZWQudHh0CkBAIC0zLDcgKzMs
NiBAQCBWZXJpZnkgV2ViR0xDb250ZXh0QXR0cmlidXRlcyBhcmUgd29ya2luZyBhcyBzcGVjaWZp
ZWQsIGluY2x1ZGluZyBhbHBoYSwgZGVwdGgsCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAK
IFRlc3RpbmcgYWxwaGEgPSB0cnVlCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wu
RlJBTUVCVUZGRVIpIGlzIGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFCiBQQVNTIGdldEVycm9yIHdh
cyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBzaG91bGQgYmUgbm8gZXJyb3JzCiBQQVNTIGds
ID0gZ2V0V2ViR0woMSwgMSwgeyBhbHBoYTogdHJ1ZSwgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiBm
YWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9LCBbIDAsIDAsIDAsIDAgXSwgMSwgMCkgaXMgbm9uLW51
bGwuCiBQQVNTIGdsLmdldFBhcmFtZXRlcihnbC5BTFBIQV9CSVRTKSA+PSA4IGlzIHRydWUKQEAg
LTE3LDcgKzE2LDYgQEAgUEFTUyBjb250ZXh0QXR0cmlicy5hbHBoYSA9PSB0cnVlIGlzIHRydWUK
IFBBU1MgcGl4ZWwgaXMgY29ycmVjdENvbG9yCiBQQVNTIE1hdGguYWJzKHBpeGVsWzBdIC0gMTI3
KSA8PSAxICYmIE1hdGguYWJzKHBpeGVsWzFdIC0gMTI3KSA8PSAxICYmIE1hdGguYWJzKHBpeGVs
WzJdIC0gMTI3KSA8PSAxICYmIE1hdGguYWJzKHBpeGVsWzNdIC0gMTI3KSA8PSAxIGlzIHRydWUK
IFRlc3RpbmcgYWxwaGEgPSBmYWxzZQotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGds
LkZSQU1FQlVGRkVSKSBpcyBnbC5GUkFNRUJVRkZFUl9DT01QTEVURQogUEFTUyBnZXRFcnJvciB3
YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogc2hvdWxkIGJlIG5vIGVycm9ycwogUEFTUyBn
bCA9IGdldFdlYkdMKDEsIDEsIHsgYWxwaGE6IGZhbHNlLCBkZXB0aDogZmFsc2UsIHN0ZW5jaWw6
IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0sIFsgMCwgMCwgMCwgMCBdLCAxLCAwKSBpcyBub24t
bnVsbC4KIFBBU1MgZ2wuZ2V0UGFyYW1ldGVyKGdsLkFMUEhBX0JJVFMpID09IDAgaXMgdHJ1ZQpA
QCAtMzEsNyArMjksNiBAQCBQQVNTIGNvbnRleHRBdHRyaWJzLmFscGhhID09IGZhbHNlIGlzIHRy
dWUKIFBBU1MgcGl4ZWwgaXMgY29ycmVjdENvbG9yCiBQQVNTIE1hdGguYWJzKHBpeGVsWzBdIC0g
MTI3KSA8PSAxICYmIE1hdGguYWJzKHBpeGVsWzFdIC0gMTI3KSA8PSAxICYmIE1hdGguYWJzKHBp
eGVsWzJdIC0gMTI3KSA8PSAxICYmIE1hdGguYWJzKHBpeGVsWzNdIC0gMTI3KSA8PSAxIGlzIHRy
dWUKIFRlc3RpbmcgZGVwdGggPSB0cnVlCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
Z2wuRlJBTUVCVUZGRVIpIGlzIGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFCiBQQVNTIGdldEVycm9y
IHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBzaG91bGQgYmUgbm8gZXJyb3JzCiBQQVNT
IGdsID0gZ2V0V2ViR0woMSwgMSwgeyBzdGVuY2lsOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9
LCBbIDAsIDAsIDAsIDEgXSwgMSwgMCkgaXMgbm9uLW51bGwuCiBQQVNTIGdsLmdldFBhcmFtZXRl
cihnbC5ERVBUSF9CSVRTKSA+PSAxNiBpcyB0cnVlCkBAIC00MSw4ICszOCw4IEBAIFBBU1MgZ2wu
Z2V0UGFyYW1ldGVyKGdsLkJMVUVfQklUUykgPj0gOCBpcyB0cnVlCiBQQVNTIGdsLmdldFBhcmFt
ZXRlcihnbC5BTFBIQV9CSVRTKSA+PSA4IGlzIHRydWUKIFBBU1MgY29udGV4dEF0dHJpYnMgPSBn
bC5nZXRDb250ZXh0QXR0cmlidXRlcygpIGlzIG5vbi1udWxsLgogUEFTUyBwaXhlbCBpcyBjb3Jy
ZWN0Q29sb3IKK1BBU1MgcGl4ZWwgaXMgWzAsIDAsIDAsIDI1NV0KIFRlc3RpbmcgZGVwdGggPSBm
YWxzZQotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSBpcyBn
bC5GUkFNRUJVRkZFUl9DT01QTEVURQogUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6
IE5PX0VSUk9SIDogc2hvdWxkIGJlIG5vIGVycm9ycwogUEFTUyBnbCA9IGdldFdlYkdMKDEsIDEs
IHsgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9LCBbIDAs
IDAsIDAsIDEgXSwgMSwgMCkgaXMgbm9uLW51bGwuCiBQQVNTIGdsLmdldFBhcmFtZXRlcihnbC5E
RVBUSF9CSVRTKSA9PSAwIGlzIHRydWUKQEAgLTUyLDggKzQ5LDggQEAgUEFTUyBnbC5nZXRQYXJh
bWV0ZXIoZ2wuQkxVRV9CSVRTKSA+PSA4IGlzIHRydWUKIFBBU1MgZ2wuZ2V0UGFyYW1ldGVyKGds
LkFMUEhBX0JJVFMpID49IDggaXMgdHJ1ZQogUEFTUyBjb250ZXh0QXR0cmlicyA9IGdsLmdldENv
bnRleHRBdHRyaWJ1dGVzKCkgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGNvcnJlY3RDb2xv
cgorUEFTUyBwaXhlbCBpcyBbMCwgMCwgMCwgMjU1XQogVGVzdGluZyBzdGVuY2lsID0gdHJ1ZSwg
ZGVwdGggPSBmYWxzZQotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVG
RkVSKSBpcyBnbC5GUkFNRUJVRkZFUl9DT01QTEVURQogUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0
ZWQgdmFsdWU6IE5PX0VSUk9SIDogc2hvdWxkIGJlIG5vIGVycm9ycwogUEFTUyBnbCA9IGdldFdl
YkdMKDEsIDEsIHsgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiB0cnVlLCBhbnRpYWxpYXM6IGZhbHNl
IH0sIFsgMCwgMCwgMCwgMSBdLCAxLCAwKSBpcyBub24tbnVsbC4KIFBBU1MgZ2wuZ2V0UGFyYW1l
dGVyKGdsLlJFRF9CSVRTKSA+PSA4IGlzIHRydWUKQEAgLTY0LDggKzYxLDggQEAgUEFTUyBnbC5n
ZXRQYXJhbWV0ZXIoZ2wuREVQVEhfQklUUykgPT0gMCBpcyB0cnVlCiBQQVNTIGdsLmdldFBhcmFt
ZXRlcihnbC5TVEVOQ0lMX0JJVFMpID49IDggaXMgdHJ1ZQogUEFTUyBjb250ZXh0QXR0cmlicyA9
IGdsLmdldENvbnRleHRBdHRyaWJ1dGVzKCkgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGNv
cnJlY3RDb2xvcgorUEFTUyBwaXhlbCBpcyBbMCwgMCwgMCwgMjU1XQogVGVzdGluZyBzdGVuY2ls
ID0gZmFsc2UsIGRlcHRoID0gZmFsc2UKLVBBU1MgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhn
bC5GUkFNRUJVRkZFUikgaXMgZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUKIFBBU1MgZ2V0RXJyb3Ig
d2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IHNob3VsZCBiZSBubyBlcnJvcnMKIFBBU1Mg
Z2wgPSBnZXRXZWJHTCgxLCAxLCB7IGRlcHRoOiBmYWxzZSwgc3RlbmNpbDogZmFsc2UsIGFudGlh
bGlhczogZmFsc2UgfSwgWyAwLCAwLCAwLCAxIF0sIDEsIDApIGlzIG5vbi1udWxsLgogUEFTUyBn
bC5nZXRQYXJhbWV0ZXIoZ2wuUkVEX0JJVFMpID49IDggaXMgdHJ1ZQpAQCAtNzYsOCArNzMsOCBA
QCBQQVNTIGdsLmdldFBhcmFtZXRlcihnbC5ERVBUSF9CSVRTKSA9PSAwIGlzIHRydWUKIFBBU1Mg
Z2wuZ2V0UGFyYW1ldGVyKGdsLlNURU5DSUxfQklUUykgPT0gMCBpcyB0cnVlCiBQQVNTIGNvbnRl
eHRBdHRyaWJzID0gZ2wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSBpcyBub24tbnVsbC4KIFBBU1Mg
cGl4ZWwgaXMgY29ycmVjdENvbG9yCitQQVNTIHBpeGVsIGlzIFswLCAwLCAwLCAyNTVdCiBUZXN0
aW5nIHN0ZW5jaWwgPSB0cnVlLCBkZXB0aCA9IHRydWUKLVBBU1MgZ2wuY2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhnbC5GUkFNRUJVRkZFUikgaXMgZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUKIFBBU1Mg
Z2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IHNob3VsZCBiZSBubyBlcnJv
cnMKIFBBU1MgZ2wgPSBnZXRXZWJHTCgxLCAxLCB7IGRlcHRoOiB0cnVlLCBzdGVuY2lsOiB0cnVl
LCBhbnRpYWxpYXM6IGZhbHNlIH0sIFsgMCwgMCwgMCwgMSBdLCAxLCAwKSBpcyBub24tbnVsbC4K
IFBBU1MgZ2wuZ2V0UGFyYW1ldGVyKGdsLlJFRF9CSVRTKSA+PSA4IGlzIHRydWUKQEAgLTg4LDgg
Kzg1LDggQEAgUEFTUyBnbC5nZXRQYXJhbWV0ZXIoZ2wuREVQVEhfQklUUykgPj0gMTYgaXMgdHJ1
ZQogUEFTUyBnbC5nZXRQYXJhbWV0ZXIoZ2wuU1RFTkNJTF9CSVRTKSA+PSA4IGlzIHRydWUKIFBB
U1MgY29udGV4dEF0dHJpYnMgPSBnbC5nZXRDb250ZXh0QXR0cmlidXRlcygpIGlzIG5vbi1udWxs
LgogUEFTUyBwaXhlbCBpcyBjb3JyZWN0Q29sb3IKK1BBU1MgcGl4ZWwgaXMgWzAsIDAsIDAsIDI1
NV0KIFRlc3Rpbmcgc3RlbmNpbCA9IGZhbHNlLCBkZXB0aCA9IHRydWUKLVBBU1MgZ2wuY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgaXMgZ2wuRlJBTUVCVUZGRVJfQ09NUExF
VEUKIFBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IHNob3VsZCBi
ZSBubyBlcnJvcnMKIFBBU1MgZ2wgPSBnZXRXZWJHTCgxLCAxLCB7IGRlcHRoOiB0cnVlLCBzdGVu
Y2lsOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9LCBbIDAsIDAsIDAsIDEgXSwgMSwgMCkgaXMg
bm9uLW51bGwuCiBQQVNTIGdsLmdldFBhcmFtZXRlcihnbC5SRURfQklUUykgPj0gOCBpcyB0cnVl
CkBAIC0xMDAsMTQgKzk3LDEzIEBAIFBBU1MgZ2wuZ2V0UGFyYW1ldGVyKGdsLkRFUFRIX0JJVFMp
ID49IDE2IGlzIHRydWUKIFBBU1MgZ2wuZ2V0UGFyYW1ldGVyKGdsLlNURU5DSUxfQklUUykgPT0g
MCBpcyB0cnVlCiBQQVNTIGNvbnRleHRBdHRyaWJzID0gZ2wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMo
KSBpcyBub24tbnVsbC4KIFBBU1MgcGl4ZWwgaXMgY29ycmVjdENvbG9yCitQQVNTIHBpeGVsIGlz
IFswLCAwLCAwLCAyNTVdCiBUZXN0aW5nIGFudGlhbGlhcyA9IHRydWUKLVBBU1MgZ2wuY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgaXMgZ2wuRlJBTUVCVUZGRVJfQ09NUExF
VEUKIFBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IHNob3VsZCBi
ZSBubyBlcnJvcnMKIFBBU1MgZ2wgPSBnZXRXZWJHTCgyLCAyLCB7IGRlcHRoOiBmYWxzZSwgc3Rl
bmNpbDogZmFsc2UsIGFscGhhOiBmYWxzZSwgYW50aWFsaWFzOiB0cnVlIH0sIFsgMCwgMCwgMCwg
MSBdLCAxLCAwKSBpcyBub24tbnVsbC4KIFBBU1MgY29udGV4dEF0dHJpYnMgPSBnbC5nZXRDb250
ZXh0QXR0cmlidXRlcygpIGlzIG5vbi1udWxsLgogUEFTUyBwaXhlbFswXSAhPSAyNTUgJiYgcGl4
ZWxbMF0gIT0gMCBpcyBjb250ZXh0QXR0cmlicy5hbnRpYWxpYXMKIFRlc3RpbmcgYW50aWFsaWFz
ID0gZmFsc2UKLVBBU1MgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikg
aXMgZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUKIFBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZh
bHVlOiBOT19FUlJPUiA6IHNob3VsZCBiZSBubyBlcnJvcnMKIFBBU1MgZ2wgPSBnZXRXZWJHTCgy
LCAyLCB7IGRlcHRoOiBmYWxzZSwgc3RlbmNpbDogZmFsc2UsIGFscGhhOiBmYWxzZSwgYW50aWFs
aWFzOiBmYWxzZSB9LCBbIDAsIDAsIDAsIDEgXSwgMSwgMCkgaXMgbm9uLW51bGwuCiBQQVNTIGNv
bnRleHRBdHRyaWJzID0gZ2wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSBpcyBub24tbnVsbC4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsLXRlc3QtdXRpbHMuanMKaW5kZXggNDMyNDRkMWNiZTU0OWFmZGIyMWUxN2VjOGJlZWYwMTg5
MTZjYjQ4Zi4uNGNlYmM5NTcwOGViNGNjN2U5OTYwYTA1YTE0NmUwN2Q3M2I3YmYzYSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3Qt
dXRpbHMuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsLXRlc3QtdXRpbHMuanMKQEAgLTEzNCw5ICsxMzQsMTkgQEAgdmFyIHNldHVwU2ltcGxlVGV4
dHVyZUZyYWdtZW50U2hhZGVyID0gZnVuY3Rpb24oZ2wpIHsKICAqIEBwYXJhbSB7IUFycmF5Ljxu
dW1iZXI+fSBvcHRfbG9jYXRpb25zIFRoZSBsb2NhdGlvbnMgZm9yIHRoZSBhdHRyaWJzLgogICov
CiB2YXIgc2V0dXBQcm9ncmFtID0gZnVuY3Rpb24oZ2wsIHNoYWRlcnMsIG9wdF9hdHRyaWJzLCBv
cHRfbG9jYXRpb25zKSB7CisgIHZhciByZWFsU2hhZGVycyA9IFtdOwogICB2YXIgcHJvZ3JhbSA9
IGdsLmNyZWF0ZVByb2dyYW0oKTsKICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNoYWRlcnMubGVu
Z3RoOyArK2lpKSB7Ci0gICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcnNbaWldKTsK
KyAgICB2YXIgc2hhZGVyID0gc2hhZGVyc1tpaV07CisgICAgaWYgKHR5cGVvZiBzaGFkZXIgPT0g
J3N0cmluZycpIHsKKyAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
c2hhZGVyKTsKKyAgICAgIGlmIChlbGVtZW50KSB7CisgICAgICAgIHNoYWRlciA9IGxvYWRTaGFk
ZXJGcm9tU2NyaXB0KGdsLCBzaGFkZXIpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgc2hhZGVy
ID0gbG9hZFNoYWRlcihnbCwgc2hhZGVyLCBpaSA/IGdsLkZSQUdNRU5UX1NIQURFUiA6IGdsLlZF
UlRFWF9TSEFERVIpOworICAgICAgfQorICAgIH0KKyAgICBnbC5hdHRhY2hTaGFkZXIocHJvZ3Jh
bSwgc2hhZGVyKTsKICAgfQogICBpZiAob3B0X2F0dHJpYnMpIHsKICAgICBmb3IgKHZhciBpaSA9
IDA7IGlpIDwgb3B0X2F0dHJpYnMubGVuZ3RoOyArK2lpKSB7CkBAIC0xMTA5LDYgKzExMTksNTAg
QEAgdmFyIGdldFVybEFyZ3VtZW50cyA9IGZ1bmN0aW9uKCkgewogICByZXR1cm4gYXJnczsKIH07
CiAKKy8vIEFkZCB5b3VyIHByZWZpeCBoZXJlLgordmFyIGJyb3dzZXJQcmVmaXhlcyA9IFsKKyAg
IiIsCisgICJNT1pfIiwKKyAgIk9QXyIsCisgICJXRUJLSVRfIgorXTsKKworLyoqCisgKiBHaXZl
biBhbiBleHRlbnNpb24gbmFtZSBsaWtlIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjCisg
KiByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBzdXBwb3J0ZWQgdmVyc2lvbiBleHRlbnNpb24sIGxp
a2UKKyAqIFdFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RldHVyZV9zM3RjCisgKiBAcGFyYW0ge3N0
cmluZ30gbmFtZSBOYW1lIG9mIGV4dGVuc2lvbiB0byBsb29rIGZvcgorICogQHJldHVybiB7c3Ry
aW5nfSBuYW1lIG9mIGV4dGVuc2lvbiBmb3VuZCBvciB1bmRlZmluZWQgaWYgbm90CisgKiAgICAg
Zm91bmQuCisgKi8KK3ZhciBnZXRTdXBwb3J0ZWRFeHRlbnNpb25XaXRoS25vd25QcmVmaXhlcyA9
IGZ1bmN0aW9uKGdsLCBuYW1lKSB7CisgIHZhciBzdXBwb3J0ZWQgPSBnbC5nZXRTdXBwb3J0ZWRF
eHRlbnNpb25zKCk7CisgIGZvciAodmFyIGlpID0gMDsgaWkgPCBicm93c2VyUHJlZml4ZXMubGVu
Z3RoOyArK2lpKSB7CisgICAgdmFyIHByZWZpeGVkTmFtZSA9IGJyb3dzZXJQcmVmaXhlc1tpaV0g
KyBuYW1lOworICAgIGlmIChzdXBwb3J0ZWQuaW5kZXhPZihwcmVmaXhlZE5hbWUpID49IDApIHsK
KyAgICAgIHJldHVybiBwcmVmaXhlZE5hbWU7CisgICAgfQorICB9Cit9OworCisvKioKKyAqIEdp
dmVuIGFuIGV4dGVuc2lvbiBuYW1lIGxpa2UgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMK
KyAqIHJldHVybnMgdGhlIHN1cHBvcnRlZCB2ZXJzaW9uIGV4dGVuc2lvbiwgbGlrZQorICogV0VC
S0lUX1dFQkdMX2NvbXByZXNzZWRfdGV0dXJlX3MzdGMKKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
IE5hbWUgb2YgZXh0ZW5zaW9uIHRvIGxvb2sgZm9yCisgKiBAcmV0dXJuIHtXZWJHTEV4dGVuc2lv
bn0gVGhlIGV4dGVuc2lvbiBvciB1bmRlZmluZWQgaWYgbm90CisgKiAgICAgZm91bmQuCisgKi8K
K3ZhciBnZXRFeHRlbnNpb25XaXRoS25vd25QcmVmaXhlcyA9IGZ1bmN0aW9uKGdsLCBuYW1lKSB7
CisgIGZvciAodmFyIGlpID0gMDsgaWkgPCBicm93c2VyUHJlZml4ZXMubGVuZ3RoOyArK2lpKSB7
CisgICAgdmFyIHByZWZpeGVkTmFtZSA9IGJyb3dzZXJQcmVmaXhlc1tpaV0gKyBuYW1lOworICAg
IHZhciBleHQgPSBnbC5nZXRFeHRlbnNpb24ocHJlZml4ZWROYW1lKTsKKyAgICBpZiAoZXh0KSB7
CisgICAgICByZXR1cm4gZXh0OworICAgIH0KKyAgfQorfTsKKwogLyoqCiAgKiBQcm92aWRlcyBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaW4gYSBjcm9zcyBicm93c2VyIHdheS4KICAqLwpAQCAtMTE3
Nyw4ICsxMjMxLDEwIEBAIHJldHVybiB7CiAgIGNyZWF0ZUNvbG9yZWRUZXh0dXJlOiBjcmVhdGVD
b2xvcmVkVGV4dHVyZSwKICAgZHJhd1F1YWQ6IGRyYXdRdWFkLAogICBlbmRzV2l0aDogZW5kc1dp
dGgsCisgIGdldEV4dGVuc2lvbldpdGhLbm93blByZWZpeGVzOiBnZXRFeHRlbnNpb25XaXRoS25v
d25QcmVmaXhlcywKICAgZ2V0RmlsZUxpc3RBc3luYzogZ2V0RmlsZUxpc3RBc3luYywKICAgZ2V0
TGFzdEVycm9yOiBnZXRMYXN0RXJyb3IsCisgIGdldFN1cHBvcnRlZEV4dGVuc2lvbldpdGhLbm93
blByZWZpeGVzOiBnZXRTdXBwb3J0ZWRFeHRlbnNpb25XaXRoS25vd25QcmVmaXhlcywKICAgZ2V0
VXJsQXJndW1lbnRzOiBnZXRVcmxBcmd1bWVudHMsCiAgIGdsRW51bVRvU3RyaW5nOiBnbEVudW1U
b1N0cmluZywKICAgZ2xFcnJvclNob3VsZEJlOiBnbEVycm9yU2hvdWxkQmUsCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1kZXB0aC10ZXh0dXJlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWRlcHRoLXRleHR1
cmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2ZGU3YmVhYTY5ZDhlMWI3OTY4NTBlOTIzMTc1
Yzg5MDA3ZGI2MGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC93ZWJnbC1kZXB0aC10ZXh0dXJlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUwIEBACitU
aGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFdFQkdMX2RlcHRoX3Rl
eHR1cmUgZXh0ZW5zaW9uLCBpZiBpdCBpcyBhdmFpbGFibGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIFdlYkdMIGNvbnRleHQgZXhpc3RzCitUZXN0aW5nIGJpbmRpbmcg
ZW51bSB3aXRoIGV4dGVuc2lvbiBkaXNhYmxlZAorUEFTUyBnbC50ZXhJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5U
LCBnbC5VTlNJR05FRF9TSE9SVCwgbnVsbCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJ
TlZBTElEX0VOVU0uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuREVQ
VEhfQ09NUE9ORU5ULCAxLCAxLCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lHTkVEX0lO
VCwgbnVsbCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX0VOVU0uCitQQVNT
IFN1Y2Nlc3NmdWxseSBlbmFibGVkIFdFQkdMX2RlcHRoX3RleHR1cmUgZXh0ZW5zaW9uCitQQVNT
IFdFQkdMX2RlcHRoX3RleHR1cmUgbGlzdGVkIGFzIHN1cHBvcnRlZCBhbmQgZ2V0RXh0ZW5zaW9u
IHN1Y2NlZWRlZAorVGVzdGluZyBXRUJHTF9kZXB0aF90ZXh0dXJlCisKK3Rlc3Rpbmc6IFVOU0lH
TkVEX1NIT1JUCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElW
RV9YLCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwg
Z2wuVU5TSUdORURfU0hPUlQsIG51bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5W
QUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9Q
T1NJVElWRV9YLCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBP
TkVOVCwgZ2wuVU5TSUdORURfU0hPUlQsIG51bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJv
cjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJF
X01BUF9QT1NJVElWRV9YLCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRI
X0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfU0hPUlQsIG51bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBH
TCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9YLCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGds
LkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfU0hPUlQsIG51bGwpIGdlbmVyYXRlZCBleHBl
Y3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wu
VEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEs
IDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfU0hPUlQsIG51bGwpIGdlbmVyYXRl
ZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRleEltYWdl
MkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAxLCBnbC5ERVBUSF9DT01QT05FTlQs
IDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfU0hPUlQsIG51bGwpIGdl
bmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRl
eEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMSwgZ2wuREVQVEhfQ09NUE9ORU5ULCAxLCAxLCAwLCBn
bC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lHTkVEX1NIT1JULCBudWxsKSBnZW5lcmF0ZWQgZXhw
ZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBnbC50ZXhJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09N
UE9ORU5ULCBnbC5VTlNJR05FRF9TSE9SVCwgbmV3IFVpbnQxNkFycmF5KDEpKSBnZW5lcmF0ZWQg
ZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBnbC50ZXhJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuREVQVEhfQ09NUE9ORU5U
LCBnbC5VTlNJR05FRF9TSE9SVCwgY2FudmFzMikgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9y
OiBJTlZBTElEX1ZBTFVFLgorUEFTUyBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCBnbC5ERVBUSF9DT01QT05FTlQsIDAsIDAsIDEsIDEsIDApIGdlbmVyYXRlZCBleHBlY3RlZCBH
TCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCA4LCA4LCAwLCBnbC5ERVBUSF9DT01QT05FTlQs
IGdsLlVOU0lHTkVEX1NIT1JULCBudWxsKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IE5P
X0VSUk9SLgorUEFTUyBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDEs
IDEsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfU0hPUlQsIG5ldyBVaW50MTZBcnJh
eSgxKSkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BB
U1MgZ2wuY29weVRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwgMCwgMSwg
MSkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1Mg
Z2wuZ2VuZXJhdGVNaXBtYXAoZ2wuVEVYVFVSRV8yRCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVy
cm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhn
bC5GUkFNRUJVRkZFUikgaXMgZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUKK1BBU1MgZGVwdGggdGV4
dHVyZSByZW5kZXJlZCBjb3JyZWN0bHkuCisKK3Rlc3Rpbmc6IFVOU0lHTkVEX0lOVAorUEFTUyBn
bC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwgMSwgZ2wuREVQVEhf
Q09NUE9ORU5ULCAxLCAxLCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lHTkVEX0lOVCwg
bnVsbCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BB
U1MgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsIDEsIGdsLkRF
UFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9J
TlQsIG51bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04u
CitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLCAxLCBn
bC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdO
RURfSU5ULCBudWxsKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFU
SU9OLgorUEFTUyBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwg
MSwgZ2wuREVQVEhfQ09NUE9ORU5ULCAxLCAxLCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVO
U0lHTkVEX0lOVCwgbnVsbCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09Q
RVJBVElPTi4KK1BBU1MgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZF
X1gsIDEsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBn
bC5VTlNJR05FRF9JTlQsIG51bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJ
RF9PUEVSQVRJT04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdB
VElWRV9YLCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVO
VCwgZ2wuVU5TSUdORURfSU5ULCBudWxsKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElO
VkFMSURfT1BFUkFUSU9OLgorUEFTUyBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDEsIGds
LkRFUFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05F
RF9JTlQsIG51bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJ
T04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuREVQVEhfQ09NUE9O
RU5ULCAxLCAxLCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lHTkVEX0lOVCwgbmV3IFVp
bnQzMkFycmF5KDEpKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFU
SU9OLgorUEFTUyBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLkRFUFRIX0NPTVBP
TkVOVCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9JTlQsIGNhbnZhczIpIGdlbmVy
YXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9WQUxVRS4KK1BBU1MgZ2wuY29weVRleElt
YWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCAwLCAwLCAxLCAxLCAw
KSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBn
bC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgOCwgOCwg
MCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9JTlQsIG51bGwpIGdlbmVyYXRlZCBl
eHBlY3RlZCBHTCBlcnJvcjogTk9fRVJST1IuCitQQVNTIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVY
VFVSRV8yRCwgMCwgMCwgMCwgMSwgMSwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9J
TlQsIG5ldyBVaW50MzJBcnJheSgxKSkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZB
TElEX09QRVJBVElPTi4KK1BBU1MgZ2wuY29weVRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
MCwgMCwgMCwgMCwgMCwgMSwgMSkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElE
X09QRVJBVElPTi4KK1BBU1MgZ2wuZ2VuZXJhdGVNaXBtYXAoZ2wuVEVYVFVSRV8yRCkgZ2VuZXJh
dGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgZ2wuY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgaXMgZ2wuRlJBTUVCVUZGRVJfQ09NUExF
VEUKK1BBU1MgZGVwdGggdGV4dHVyZSByZW5kZXJlZCBjb3JyZWN0bHkuCisKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtZGVwdGgtdGV4dHVyZS5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtZGVwdGgtdGV4dHVyZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmIzOTA5NDM4OWJmNGM5NGE5ZGQxOTRlNTcxMTUxYTIxODJhNjM4OGMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1kZXB0
aC10ZXh0dXJlLmh0bWwKQEAgLTAsMCArMSwzMDIgQEAKK++7vzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8dGl0bGU+V2ViR0wgV0VCR0xfZGVwdGhfdGV4
dHVyZSBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQg
aWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWM0IGFf
cG9zaXRpb247Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsK
K30KKzwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZy
YWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordW5pZm9ybSBzYW1wbGVyMkQgdV90
ZXh0dXJlOwordW5pZm9ybSB2ZWMyIHVfcmVzb2x1dGlvbjsKK3ZvaWQgbWFpbigpCit7CisgICAg
dmVjMiB0ZXhjb29yZCA9IGdsX0ZyYWdDb29yZC54eSAvIHVfcmVzb2x1dGlvbjsKKyAgICBnbF9G
cmFnQ29sb3IgPSB0ZXh0dXJlMkQodV90ZXh0dXJlLCB0ZXhjb29yZCk7Cit9Cis8L3NjcmlwdD4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iOCIgaGVpZ2h0PSI4IiBzdHlsZT0id2lkdGg6IDhw
eDsgaGVpZ2h0OiA4cHg7Ij48L2NhbnZhcz4KKzxzY3JpcHQ+CitpZiAod2luZG93LmluaXROb25L
aHJvbm9zRnJhbWV3b3JrKSB7CisgICAgd2luZG93LmluaXROb25LaHJvbm9zRnJhbWV3b3JrKGZh
bHNlKTsKK30KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxp
dHkgb2YgdGhlIFdFQkdMX2RlcHRoX3RleHR1cmUgZXh0ZW5zaW9uLCBpZiBpdCBpcyBhdmFpbGFi
bGUuIik7CisKK2RlYnVnKCIiKTsKKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNh
bnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKK3ZhciBnbCA9IHd0dS5j
cmVhdGUzRENvbnRleHQoY2FudmFzLCB7YW50aWFsaWFzOiBmYWxzZX0pOwordmFyIHByb2dyYW0g
PSB3dHUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wpOwordmFyIGV4dCA9IG51bGw7Cit2YXIgdmFvID0g
bnVsbDsKK3ZhciBuYW1lOwordmFyIHN1cHBvcnRlZEZvcm1hdHM7CisKK2lmICghZ2wpIHsKKyAg
ICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2Ugewor
ICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisKKyAgICAvLyBSdW4gdGVz
dHMgd2l0aCBleHRlbnNpb24gZGlzYWJsZWQKKyAgICBydW5UZXN0RGlzYWJsZWQoKTsKKworICAg
IC8vIFF1ZXJ5IHRoZSBleHRlbnNpb24gYW5kIHN0b3JlIGdsb2JhbGx5IHNvIHNob3VsZEJlIGNh
biBhY2Nlc3MgaXQKKyAgICBleHQgPSB3dHUuZ2V0RXh0ZW5zaW9uV2l0aEtub3duUHJlZml4ZXMo
Z2wsICJXRUJHTF9kZXB0aF90ZXh0dXJlIik7CisgICAgaWYgKCFleHQpIHsKKyAgICAgICAgdGVz
dFBhc3NlZCgiTm8gV0VCR0xfZGVwdGhfdGV4dHVyZSBzdXBwb3J0IC0tIHRoaXMgaXMgbGVnYWwi
KTsKKyAgICAgICAgcnVuU3VwcG9ydGVkVGVzdChmYWxzZSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bGx5IGVuYWJsZWQgV0VCR0xfZGVwdGhfdGV4dHVyZSBl
eHRlbnNpb24iKTsKKworICAgICAgICBydW5TdXBwb3J0ZWRUZXN0KHRydWUpOworICAgICAgICBy
dW5UZXN0RXh0ZW5zaW9uKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBydW5TdXBwb3J0ZWRUZXN0
KGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICB2YXIgbmFtZSA9IHd0dS5nZXRTdXBwb3J0ZWRFeHRl
bnNpb25XaXRoS25vd25QcmVmaXhlcyhnbCwgIldFQkdMX2RlcHRoX3RleHR1cmUiKTsKKyAgICBp
ZiAobmFtZSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGlmIChleHRlbnNpb25FbmFibGVkKSB7
CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJXRUJHTF9kZXB0aF90ZXh0dXJlIGxpc3RlZCBhcyBz
dXBwb3J0ZWQgYW5kIGdldEV4dGVuc2lvbiBzdWNjZWVkZWQiKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHRlc3RGYWlsZWQoIldFQkdMX2RlcHRoX3RleHR1cmUgbGlzdGVkIGFzIHN1
cHBvcnRlZCBidXQgZ2V0RXh0ZW5zaW9uIGZhaWxlZCIpOworICAgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoIldFQkdMX2RlcHRoX3RleHR1cmUgbm90IGxpc3RlZCBhcyBzdXBwb3J0ZWQgYnV0IGdldEV4
dGVuc2lvbiBzdWNjZWVkZWQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIldFQkdMX2RlcHRoX3RleHR1cmUgbm90IGxpc3RlZCBhcyBzdXBwb3J0ZWQgYW5kIGdl
dEV4dGVuc2lvbiBmYWlsZWQgLS0gdGhpcyBpcyBsZWdhbCIpOworICAgICAgICB9CisgICAgfQor
fQorCisKK2Z1bmN0aW9uIHJ1blRlc3REaXNhYmxlZCgpIHsKKyAgICBkZWJ1ZygiVGVzdGluZyBi
aW5kaW5nIGVudW0gd2l0aCBleHRlbnNpb24gZGlzYWJsZWQiKTsKKworICAgIHZhciB0ZXggPSBn
bC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4
KTsKKyAgICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfRU5VTSwgJ2dsLnRl
eEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCAxLCAxLCAwLCBn
bC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lHTkVEX1NIT1JULCBudWxsKScpOworICAgIHNob3Vs
ZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9FTlVNLCAnZ2wudGV4SW1hZ2UyRChnbC5U
RVhUVVJFXzJELCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBP
TkVOVCwgZ2wuVU5TSUdORURfSU5ULCBudWxsKScpOworfQorCisKK2Z1bmN0aW9uIGR1bXBJdChn
bCwgcmVzLCBtc2cpIHsKKyAgcmV0dXJuOyAgLy8gY29tbWVudCBvdXQgdG8gZGVidWcKKyAgZGVi
dWcobXNnKTsKKyAgdmFyIGFjdHVhbFBpeGVscyA9IG5ldyBVaW50OEFycmF5KHJlcyAqIHJlcyAq
IDQpOworICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHJlcywgcmVzLCBnbC5SR0JBLCBnbC5VTlNJR05F
RF9CWVRFLCBhY3R1YWxQaXhlbHMpOworCisgIGZvciAodmFyIHl5ID0gMDsgeXkgPCByZXM7ICsr
eXkpIHsKKyAgICB2YXIgc3RycyA9IFtdOworICAgIGZvciAodmFyIHh4ID0gMDsgeHggPCByZXM7
ICsreHgpIHsKKyAgICAgIHZhciBhY3R1YWwgPSAoeXkgKiByZXMgKyB4eCkgKiA0OworICAgICAg
c3Rycy5wdXNoKCIoIiArIGFjdHVhbFBpeGVsc1thY3R1YWxdICsgIiwiICsgYWN0dWFsUGl4ZWxz
W2FjdHVhbCsxXSArICIsIiArIGFjdHVhbFBpeGVsc1thY3R1YWwgKyAyXSArICIsIiArIGFjdHVh
bFBpeGVsc1thY3R1YWwgKyAzXSArICIpIik7CisgICAgfQorICAgIGRlYnVnKHN0cnMuam9pbigi
ICIpKTsKKyAgfQorfQorZnVuY3Rpb24gcnVuVGVzdEV4dGVuc2lvbigpIHsKKyAgICBkZWJ1Zygi
VGVzdGluZyBXRUJHTF9kZXB0aF90ZXh0dXJlIik7CisKKyAgICB2YXIgcmVzID0gODsKKworICAg
IC8vIG1ha2UgY2FudmFzIGZvciB0ZXN0aW5nLgorICAgIGNhbnZhczIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICBjYW52YXMyLndpZHRoID0gcmVzOworICAgIGNhbnZh
czIuaGVpZ2h0ID0gcmVzOworICAgIHZhciBjdHggPSBjYW52YXMyLmdldENvbnRleHQoIjJkIik7
CisgICAgY3R4LmZpbGxTdHlsZSA9ICJibHVlIjsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgY2Fu
dmFzMi53aWR0aCwgY2FudmFzMi5oZWlnaHQpOworCisgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0
dXBQcm9ncmFtKGdsLCBbJ3ZzaGFkZXInLCAnZnNoYWRlciddLCBbJ2FfcG9zaXRpb24nXSk7Cisg
ICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbC51bmlmb3JtMmYoZ2wuZ2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICJ1X3Jlc29sdXRpb24iKSwgcmVzLCByZXMpOworCisgICAgdmFy
IGJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlf
QlVGRkVSLCBidWZmZXIpOworICAgIGdsLmJ1ZmZlckRhdGEoCisgICAgICAgIGdsLkFSUkFZX0JV
RkZFUiwKKyAgICAgICAgbmV3IEZsb2F0MzJBcnJheSgKKyAgICAgICAgICAgIFsgICAxLCAgMSwg
IDEsCisgICAgICAgICAgICAgICAtMSwgIDEsICAwLAorICAgICAgICAgICAgICAgLTEsIC0xLCAt
MSwKKyAgICAgICAgICAgICAgICAxLCAgMSwgIDEsCisgICAgICAgICAgICAgICAtMSwgLTEsIC0x
LAorICAgICAgICAgICAgICAgIDEsIC0xLCAgMCwKKyAgICAgICAgICAgIF0pLAorICAgICAgICBn
bC5TVEFUSUNfRFJBVyk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisgICAg
Z2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisg
ICAgdmFyIHR5cGVzID0gWworICAgICAgICB7dHlwZTogJ1VOU0lHTkVEX1NIT1JUJywgZGF0YTog
J25ldyBVaW50MTZBcnJheSgxKScgfSwKKyAgICAgICAge3R5cGU6ICdVTlNJR05FRF9JTlQnLCAg
IGRhdGE6ICduZXcgVWludDMyQXJyYXkoMSknIH0KKyAgICBdOworCisgICAgZm9yICh2YXIgaWkg
PSAwOyBpaSA8IHR5cGVzLmxlbmd0aDsgKytpaSkgeworICAgICAgICB2YXIgdHlwZUluZm8gPSB0
eXBlc1tpaV07CisgICAgICAgIHZhciB0eXBlID0gdHlwZUluZm8udHlwZTsKKworICAgICAgICBk
ZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKCJ0ZXN0aW5nOiAiICsgdHlwZSk7CisKKyAgICAgICAg
Ly8gY2hlY2sgdGhhdCBjdWJlbWFwcyBhcmUgbm90IGFsbG93ZWQuCisgICAgICAgIHZhciBjdWJl
VGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhU
VVJFX0NVQkVfTUFQLCBjdWJlVGV4KTsKKyAgICAgICAgdmFyIHRhcmdldHMgPSBbCisgICAgICAg
ICAgJ1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCcsCisgICAgICAgICAgJ1RFWFRVUkVfQ1VC
RV9NQVBfTkVHQVRJVkVfWCcsCisgICAgICAgICAgJ1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVf
WScsCisgICAgICAgICAgJ1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWScsCisgICAgICAgICAg
J1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWicsCisgICAgICAgICAgJ1RFWFRVUkVfQ1VCRV9N
QVBfTkVHQVRJVkVfWicKKyAgICAgICAgXTsKKyAgICAgICAgZm9yICh2YXIgdHQgPSAwOyB0dCA8
IHRhcmdldHMubGVuZ3RoOyArK3R0KSB7CisgICAgICAgICAgICBzaG91bGRHZW5lcmF0ZUdMRXJy
b3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAnZ2wudGV4SW1hZ2UyRChnbC4nICsgdGFyZ2V0
c1tpaV0gKyAnLCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBP
TkVOVCwgZ2wuJyArIHR5cGUgKyAnLCBudWxsKScpOworICAgICAgICB9CisKKyAgICAgICAgLy8g
Y2hlY2sgMmQgdGV4dHVyZXMuCisgICAgICAgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7
CisgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgICAgICAgIGds
LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1Q
X1RPX0VER0UpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRF
WFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVy
aShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUik7CisgICAg
ICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVS
LCBnbC5MSU5FQVIpOworCisgICAgICAgIC8vIHRlc3QgbGV2ZWwgPiAwCisgICAgICAgIHNob3Vs
ZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICdnbC50ZXhJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDEsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhf
Q09NUE9ORU5ULCBnbC4nICsgdHlwZSArICcsIG51bGwpJyk7CisKKyAgICAgICAgLy8gdGVzdCB3
aXRoIGRhdGEKKyAgICAgICAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX09Q
RVJBVElPTiwgJ2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuREVQVEhfQ09NUE9O
RU5ULCAxLCAxLCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLicgKyB0eXBlICsgJywgJyArIHR5
cGVJbmZvLmRhdGEgKyAnKScpOworCisgICAgICAgIC8vIHRlc3Qgd2l0aCBjYW52YXMKKyAgICAg
ICAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBbZ2wuSU5WQUxJRF9WQUxVRSwgZ2wuSU5WQUxJ
RF9FTlVNLCBnbC5JTlZBTElEX09QRVJBVElPTl0sICdnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC4nICsgdHlw
ZSAgKyAnLCBjYW52YXMyKScpOworCisgICAgICAgIC8vIHRlc3QgY29weVRleEltYWdlMkQKKyAg
ICAgICAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBbZ2wuSU5WQUxJRF9FTlVNLCBnbC5JTlZB
TElEX09QRVJBVElPTl0sICdnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5E
RVBUSF9DT01QT05FTlQsIDAsIDAsIDEsIDEsIDApJyk7CisKKyAgICAgICAgLy8gdGVzdCByZWFs
IHRoaW5nCisgICAgICAgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuTk9fRVJST1IsICdn
bC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgJyArIHJl
cyArICcsICcgKyByZXMgKyAnLCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLicgKyB0eXBlICsg
JywgbnVsbCknKTsKKworICAgICAgICAvLyB0ZXN0IHRleFN1YkltYWdlMkQKKyAgICAgICAgc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgJ2dsLnRleFN1Yklt
YWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgMSwgMSwgZ2wuREVQVEhfQ09NUE9ORU5ULCBn
bC4nICsgdHlwZSAgKyAnLCAnICsgdHlwZUluZm8uZGF0YSArICcpJyk7CisKKyAgICAgICAgLy8g
dGVzdCBjb3B5VGV4U3ViSW1hZ2UyRAorICAgICAgICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2ws
IGdsLklOVkFMSURfT1BFUkFUSU9OLCAnZ2wuY29weVRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgMCwgMCwgMCwgMCwgMSwgMSknKTsKKworICAgICAgICAvLyB0ZXN0IGdlbmVyYXRlTWlw
bWFwCisgICAgICAgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04sICdnbC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFXzJEKScpOworCisgICAgICAgIHZhciBm
Ym8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIo
Z2wuRlJBTUVCVUZGRVIsIGZibyk7CisgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGds
LkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5URVhUVVJFXzJELCB0ZXgsIDAp
OworICAgICAgICAvL2lmIChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVS
KSAhPSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8g
dHJ5IGFkZGluZyBhIGNvbG9yIGJ1ZmZlci4KKyAgICAgICAgICAgIHZhciBjb2xvclRleCA9IGds
LmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
MkQsIGNvbG9yVGV4KTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8y
RCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworICAgICAgICAgICAgZ2wu
dGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBf
VE9fRURHRSk7CisgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGds
LlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFt
ZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5MSU5FQVIpOwor
ICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCByZXMs
IHJlcywgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgICAgICAgICBn
bC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVO
VDAsIGdsLlRFWFRVUkVfMkQsIGNvbG9yVGV4LCAwKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCdn
bC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKScsICdnbC5GUkFNRUJVRkZF
Ul9DT01QTEVURScpOworICAgICAgICB9CisKKyAgICAgICAgLy8gdXNlIHRoZSBkZWZhdWx0IHRl
eHR1cmUgdG8gcmVuZGVyIHdpdGggd2hpbGUgd2UgcmV0dXJuIHRvIHRoZSBkZXB0aCB0ZXh0dXJl
LgorICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBudWxsKTsKKworICAgICAg
ICAvLyByZW5kZXIgdGhlIHotcXVhZAorICAgICAgICBnbC5lbmFibGUoZ2wuREVQVEhfVEVTVCk7
CisgICAgICAgIGdsLmNsZWFyQ29sb3IoMSwgMCwgMCwgMSk7CisgICAgICAgIGdsLmNsZWFyKGds
LkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICAgICAgZ2wuZHJh
d0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOworCisgICAgICAgIGR1bXBJdChnbCwgcmVzLCAi
LS1maXJzdC0tIik7CisKKyAgICAgICAgLy8gcmVuZGVyIHRoZSBkZXB0aCB0ZXh0dXJlLgorICAg
ICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpOworICAgICAgICBn
bC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICAgICAgICBnbC5jbGVhckNvbG9y
KDAsIDAsIDEsIDEpOworICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wu
REVQVEhfQlVGRkVSX0JJVCk7CisgICAgICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAw
LCA2KTsKKworICAgICAgICB2YXIgYWN0dWFsUGl4ZWxzID0gbmV3IFVpbnQ4QXJyYXkocmVzICog
cmVzICogNCk7CisgICAgICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgcmVzLCByZXMsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIGFjdHVhbFBpeGVscyk7CisKKyAgICAgICAgZHVtcEl0KGdsLCBy
ZXMsICItLWRlcHRoLS0iKTsKKworICAgICAgICAvLyBDaGVjayB0aGF0IGVhY2ggcGl4ZWwncyBS
R0IgYXJlIHRoZSBzYW1lIGFuZCB0aGF0IGl0J3MgdmFsdWUgaXMgbGVzcworICAgICAgICAvLyB0
aGFuIHRoZSBwcmV2aW91cyBwaXhlbCBpbiBlaXRoZXIgZGlyZWN0aW9uLiBCYXNpY2FsbHkgdmVy
aWZ5IHdlIGhhdmUgYQorICAgICAgICAvLyBncmFkaWVudC4KKyAgICAgICAgdmFyIHN1Y2Nlc3Mg
PSB0cnVlOworICAgICAgICBmb3IgKHZhciB5eSA9IDA7IHl5IDwgcmVzOyArK3l5KSB7CisgICAg
ICAgICAgZm9yICh2YXIgeHggPSAwOyB4eCA8IHJlczsgKyt4eCkgeworICAgICAgICAgICAgdmFy
IGFjdHVhbCA9ICh5eSAqIHJlcyArIHh4KSAqIDQ7CisgICAgICAgICAgICB2YXIgbGVmdCA9IGFj
dHVhbCAtIDQ7CisgICAgICAgICAgICB2YXIgZG93biA9IGFjdHVhbCAtIHJlcyAqIDQ7CisKKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQaXhlbHNbYWN0dWFsICsgMF0gIT0gYWN0dWFsUGl4ZWxzW2Fj
dHVhbCArIDFdKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnUiAhPSBHJyk7CisgICAg
ICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKGFjdHVhbFBpeGVsc1thY3R1YWwgKyAwXSAhPSBhY3R1YWxQaXhlbHNbYWN0dWFsICsgMl0p
IHsKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdSICE9IEInKTsKKyAgICAgICAgICAgICAg
ICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYWN0dWFs
UGl4ZWxzW2FjdHVhbCArIDNdICE9IDB4RkYpIHsKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCdBICE9IDI1NScpOworICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKHh4ID4gMCkgeworICAgICAgICAgICAgICBpZiAoYWN0
dWFsUGl4ZWxzW2FjdHVhbF0gPD0gYWN0dWFsUGl4ZWxzW2xlZnRdKSB7CisgICAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJhY3R1YWwoIiArIGFjdHVhbFBpeGVsc1thY3R1YWxdICsgIikgPCBs
ZWZ0KCIgKyBhY3R1YWxQaXhlbHNbbGVmdF0gKyAiKSIpOworICAgICAgICAgICAgICAgICAgc3Vj
Y2VzcyA9IGZhbHNlOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoeXkgPiAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGFjdHVhbFBpeGVsc1thY3R1YWxd
IDw9IGFjdHVhbFBpeGVsc1tkb3duXSkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJhY3R1YWwoIiArIGFjdHVhbFBpeGVsc1thY3R1YWxdICsgIikgPCBkb3duKCIgKyBhY3R1YWxQ
aXhlbHNbZG93bl0gKyAiKSIpOworICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIC8vIENoZWNrIHRoYXQgYm90dG9tIGxlZnQgY29ybmVyIGlzIHZhc3RseSBk
aWZmZXJlbnQgdGhhdG4gdG9wIHJpZ2h0LgorICAgICAgICBpZiAoYWN0dWFsUGl4ZWxzWyhyZXMg
KiByZXMgLSAxKSAqIDRdIC0gYWN0dWFsUGl4ZWxzWzBdIDwgMHhDMCkgeworICAgICAgICAgICAg
dGVzdEZhaWxlZCgiY29ybmVycyBhcmUgbm90IGRpZmZlcmVudCBlbm91Z2giKTsKKyAgICAgICAg
ICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdWNjZXNzKSB7
CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkZXB0aCB0ZXh0dXJlIHJlbmRlcmVkIGNvcnJlY3Rs
eS4iKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZGVidWcoIiIpOworc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKK2lmICh3aW5kb3cubm9uS2hyb25vc0ZyYW1ld29ya05vdGlmeURvbmUpIHsK
KyAgICB3aW5kb3cubm9uS2hyb25vc0ZyYW1ld29ya05vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148154</attachid>
            <date>2012-06-18 13:03:56 -0700</date>
            <delta_ts>2012-06-18 13:14:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87029-20120618130356.patch</filename>
            <type>text/plain</type>
            <size>65112</size>
            <attacher name="Gregg Tavares">gman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRlYjMzNjA0NTU5YjMy
M2FmMmI1NjQ0NTE4MTZmZDMzMDNkMDAyMS4uNTQ1NmU2YTZkNzMzZDFlMzU2Y2E1ZGRlZGM5ZDdi
OTczM2IwZGUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTA2LTEzICBHcmVn
ZyBUYXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBXRUJHTF9kZXB0
aF90ZXh0dXJlIGV4dGVuc2lvbiB0byBXZWJHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcwMjkKKyAgICAgICAgCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL3dlYmdsL3dlYmds
LWRlcHRoLXRleHR1cmUuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4T2JqZWN0KToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmguCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpXZWJHTERlcHRo
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6fldlYkdMRGVw
dGhUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpnZXROYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViR0xEZXB0aFRleHR1cmUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhU
ZXh0dXJlLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xF
eHRlbnNpb24uaC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6aW5pdGlhbGl6ZUF0dGFjaG1lbnRzKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlU2V0dGFi
bGVUZXhGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpj
b3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmNvcHlUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyREJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyREJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4RnVuY1Bh
cmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxp
ZGF0ZVRleEZ1bmNEYXRhKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViR0xSZW5kZXJpbmdDb250
ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q2xlYXJCaXRzQnlBdHRh
Y2htZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRDbGVhckJpdHNCeUZvcm1hdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKworMjAxMi0wNi0xNCAgR3JlZ2cgVGF2YXJl
cyAgPGdtYW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBGaXggZnJhbWVidWZmZXIgY29tcGxldGVu
ZXNzIHRlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIGp1c3QgZml4aW5nIGZhaWxpbmcgdGVzdHMuCisKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJh
bWVidWZmZXI6OmluaXRpYWxpemVBdHRhY2htZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppc1RleEludGVybmFsRm9ybWF0Q29sb3JC
dWZmZXJDb21iaW5hdGlvblZhbGlkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0Q2xlYXJCaXRzQnlBdHRhY2htZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRDbGVhckJpdHNCeUZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1h
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKwog
MjAxMi0wNi0xOCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIENv
bHVtbiBwcm9ncmVzc2lvbiBkaXJlY3Rpb24gY2Fubm90IGJlIHNldCBpbmRlcGVuZGVudGx5IG9m
IHdyaXRpbmcgZGlyZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDlhZDg1YmI5NDIyNTA0
ZGMzMmNkNmQxZmY4OGYzNDY4M2FlZDQ2ZmEuLmM5NzFkMzA2Mjc0ZmVhOTIwMjhlMWIwNTZiNGYz
MWQzYjRkYmE5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMzQ2LDYgKzIzNDYsNyBAQCBJ
RiAoRU5BQkxFX1dFQkdMKQogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3Qu
Y3BwCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwCiAgICAg
ICAgIGh0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcAorICAgICAgICBodG1sL2NhbnZh
cy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1
ZmZlci5jcHAKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcAogICAgICAgICBo
dG1sL2NhbnZhcy9XZWJHTExvc2VDb250ZXh0LmNwcApAQCAtMjM4MCw2ICsyMzgxLDcgQEAgSUYg
KEVOQUJMRV9XRUJHTCkKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaWRs
CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaWRsCiAgICAgICAg
IGh0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmlkbAorICAgICAgICBodG1sL2NhbnZhcy9X
ZWJHTERlcHRoVGV4dHVyZS5pZGwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZl
ci5pZGwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5pZGwKICAgICAgICAg
aHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggZDU1NDE0ZmM0NGFkYTNiOTcyZjc4YTVkNzkzYjIyOTZkMDEyOTZjMC4uMzU4OWMwYjlk
ZTY4OTQ2NTI1NzE3NTA5NmY1YzkxMGM2MmM3ZjcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCkBAIC0zNzEsNiArMzcxLDcgQEAgQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29y
ZSkvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmlkbCBcCisgICAgJChXZWJDb3Jl
KS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRt
bC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52
YXMvV2ViR0xMb3NlQ29udGV4dC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2Vi
R0xQcm9ncmFtLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKaW5kZXggN2I3M2U5ZTdk
ZjY1NTM5Mjk3ZmU5OWYwZjk4MDJiYjlhMTc3MDNhYS4uOWI1NGM3ZTQzYTU1MTdjMzQzNDZjNmVh
MjNhZGYzYTZmODMwMTA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtMjk2LDYg
KzI5Niw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvV2ViR0xD
b250ZXh0RXZlbnQuaWRsIFwKICAgICAkJFBXRC9odG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVy
ZXJJbmZvLmlkbCBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaWRs
IFwKKyAgICAkJFBXRC9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5pZGwgXAogICAgICQk
UFdEL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaWRsIFwKICAgICAkJFBXRC9odG1sL2Nh
bnZhcy9XZWJHTExvc2VDb250ZXh0LmlkbCBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvV2ViR0xQ
cm9ncmFtLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAzN2I3ZTVhYzI5
OTdlYTMxNjFlOTRhYzg2NDYxYTZjZTY3NjViMzQwLi40NGNiZTUxMmRmMzRlMzgxNDBmYTZjYWMz
YTE1Yjk0YTUxNDEzNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTU3NCw2
ICs1NzQsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXZWJHTENvbnRleHRFdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNX
ZWJHTENvbnRleHRFdmVudC5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xEZXB0
aFRleHR1cmUuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xEZXB0aFRleHR1
cmUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMRnJhbWVidWZmZXIuY3BwIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xGcmFtZWJ1ZmZlci5oIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTV2ViR0xMb3NlQ29udGV4dC5jcHAgXApAQCAtOTE0LDYgKzkxNiw3
IEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdM
Q29udGV4dEF0dHJpYnV0ZXMuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQ29u
dGV4dEV2ZW50LmlkbCBcCisJJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVy
ZS5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5pZGwgXAog
CSQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5pZGwgXAogCSQoV2ViQ29y
ZSkvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA2OWJhYTky
OWZkNjcyYzkyNjE2NDhmOGIyMjBmNTdiY2U2N2QzZmQxLi44YjZkYjRhMmU3MmVmNjBhOGJjMzI3
NTU1ZjM1NWJkNDEwNTNlNjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTM4NTQsNiArMzg1NCw3IEBAIGNv
bnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0xKSB7CiAgICAgICAgIGh0bWwvY2FudmFzL1dl
YkdMQ29udGV4dE9iamVjdC5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRl
cmVySW5mby5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaCBcCisg
ICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmggXAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTEV4dGVuc2lvbi5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1
ZmZlci5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmggXApAQCAtMzg5Niw2
ICszODk3LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICAgICAg
aHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFz
L1dlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xE
ZWJ1Z1NoYWRlcnMuY3BwIFwKKyAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUu
Y3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uY3BwIFwKICAgICAgICAg
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9X
ZWJHTEdldEluZm8uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBlMTgzNDU3MjczN2IwNjU4ZDY2
NzQ5ZmEzMGM0YzY1OTFhOTVhZjI3Li4wYzJlOGUzZTEwOTZkNjc2OTM2MDY4YWM3ZjAxYTZiNzNl
YzY5MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMTE2LDYgKzExMTYsNyBAQAogICAgICAgICAg
ICAgJ2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnaHRt
bC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5pZGwnLAogICAgICAgICAgICAgJ2h0bWwv
Y2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmlkbCcsCisgICAgICAgICAgICAnaHRtbC9jYW52YXMv
V2ViR0xEZXB0aFRleHR1cmUuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEZy
YW1lYnVmZmVyLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xMb3NlQ29udGV4
dC5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5pZGwnLApAQCAt
NTc2NSw2ICs1NzY2LDggQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTERlYnVnUmVu
ZGVyZXJJbmZvLmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJz
LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaCcsCisg
ICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwJywKKyAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5oJywKICAgICAgICAgICAgICdodG1s
L2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dl
YkdMRXh0ZW5zaW9uLmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZm
ZXIuY3BwJywKQEAgLTgyMjMsNiArODIyNiw4IEBACiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgn
LAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCcsCisgICAg
ICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMRGVw
dGhUZXh0dXJlLmNwcCcsCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYkdMRGVwdGhUZXh0dXJlLmgnLAogICAgICAgICAgICAgJzwoUFJPRFVD
VF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTEZyYW1lYnVmZmVyLmNwcCcsCiAg
ICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdM
RnJhbWVidWZmZXIuaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYkdMTG9zZUNvbnRleHQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZjhkNWE4NjI1Yjg3NzJk
YTI4ZjZjZGUwYzI4MmRhOGYxNDJmZGZjLi5lYmIzMzVkZDUwYmM0OTNhNWJjOTlmNTNkOTg0NGFm
MjhlNmFlZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNzgwLDYgKzE3ODAsMTAgQEAKIAkJNkUzRkFEMzkxNDczM0Y0MDAw
RTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRDM3MTQ3MzNGNDAwMEU0MjMwNiAv
KiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggKi87IH07CiAJCTZFM0ZBRThFMTQ3MzNG
REIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUU4QzE0NzMzRkRCMDBFNDIz
MDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwICovOyB9OwogCQk2RTNGQUU4RjE0
NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRThEMTQ3MzNGREIwMEU0
MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oICovOyB9OworCQk2RTNGQUQzODE0
NzMzRjQwMDBFNDIzMDcgLyogSlNXZWJHTERlcHRoVGV4dHVyZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUQzNjE0NzMzRjQwMDBFNDIzMDcg
LyogSlNXZWJHTERlcHRoVGV4dHVyZS5jcHAgKi87IH07CisJCTZFM0ZBRDM5MTQ3MzNGNDAwMEU0
MjMwNyAvKiBKU1dlYkdMRGVwdGhUZXh0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUQzNzE0NzMzRjQwMDBFNDIzMDcgLyogSlNXZWJHTERl
cHRoVGV4dHVyZS5oICovOyB9OworCQk2RTNGQUU4RTE0NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xE
ZXB0aFRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkUzRkFFOEMxNDczM0ZEQjAwRTQyMzA3IC8qIFdlYkdMRGVwdGhUZXh0dXJlLmNwcCAq
LzsgfTsKKwkJNkUzRkFFOEYxNDczM0ZEQjAwRTQyMzA3IC8qIFdlYkdMRGVwdGhUZXh0dXJlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUU4RDE0
NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1cmUuaCAqLzsgfTsKIAkJNkU0N0U2NjAx
MEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RTEwQjc5NDRCMDBCMTg2QzggLyogV2Vi
R0xHZXRJbmZvLmNwcCAqLzsgfTsKIAkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdM
R2V0SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oICovOyB9OwogCQk2RTRB
QkNENDEzOEVBMEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0QUJDRDIxMzhFQTBCNzAw
NzFEMjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmNwcCAqLzsgfTsKQEAgLTg4NTYsNiArODg2
MCwxMSBAQAogCQk2RTNGQUU4QzE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOyBwYXRoID0gY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUzRkFFOEQxNDcz
M0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmg7IHBhdGgg
PSBjYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNkUzRkFFOTAxNDczM0ZFQTAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQy5pZGw7IHBhdGggPSBjYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTNGQUQzNjE0NzMzRjQwMDBFNDIzMDcg
LyogSlNXZWJHTERlcHRoVGV4dHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1dlYkdMRGVwdGhUZXh0dXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNkUzRkFEMzcxNDczM0Y0MDAwRTQyMzA3IC8qIEpTV2ViR0xEZXB0aFRleHR1cmUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTERlcHRoVGV4dHVyZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTNGQUU4QzE0NzMzRkRCMDBFNDIzMDcgLyog
V2ViR0xEZXB0aFRleHR1cmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gV2ViR0xEZXB0aFRleHR1cmUuY3BwOyBwYXRoID0gY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkUzRkFFOEQxNDczM0ZEQjAwRTQy
MzA3IC8qIFdlYkdMRGVwdGhUZXh0dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFdlYkdMRGVwdGhUZXh0dXJlLmg7IHBhdGggPSBjYW52YXMvV2ViR0xEZXB0aFRleHR1cmUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkUzRkFFOTAxNDczM0ZFQTAwRTQyMzA3
IC8qIFdlYkdMRGVwdGhUZXh0dXJlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJHTERl
cHRoVGV4dHVyZS5pZGw7IHBhdGggPSBjYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTQ3RTY1RTEwQjc5NDRCMDBCMTg2QzggLyogV2Vi
R0xHZXRJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkdM
R2V0SW5mby5jcHA7IHBhdGggPSBjYW52YXMvV2ViR0xHZXRJbmZvLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5m
by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTEdldEluZm8uaDsgcGF0
aCA9IGNhbnZhcy9XZWJHTEdldEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NkU0QUJDRDIxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTFVua25vd25FbGVtZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0ODkzLDYgKzE0OTAyLDkgQEAKIAkJ
CQlBMEVFMERGMzE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwICovLAog
CQkJCUEwRUUwREY0MTQ0RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnU2hhZGVycy5oICovLAog
CQkJCUEwRUUwREVGMTQ0RjgyMzIwMEY4MEIwRCAvKiBXZWJHTERlYnVnU2hhZGVycy5pZGwgKi8s
CisJCQkJNkUzRkFFOEMxNDczM0ZEQjAwRTQyMzA3IC8qIFdlYkdMRGVwdGhUZXh0dXJlLmNwcCAq
LywKKwkJCQk2RTNGQUU4RDE0NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1cmUuaCAq
LywKKwkJCQk2RTNGQUU5MDE0NzMzRkVBMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1cmUuaWRs
ICovLAogCQkJCTZFQkYwRTUyMTJBODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5jcHAg
Ki8sCiAJCQkJNkVCRjBFNTMxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggKi8s
CiAJCQkJNDlDN0I5QUUxMDQyRDMyRTAwMDlENDQ3IC8qIFdlYkdMRnJhbWVidWZmZXIuY3BwICov
LApAQCAtMTgxNzYsNiArMTgxODgsOCBAQAogCQkJCTZFRThBNzcxMTBGODAzRjMwMDVBNEEyNCAv
KiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLywKIAkJCQlCQzJDQkY3QTE0MEYxRDU4MDAz
ODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5jcHAgKi8sCiAJCQkJQkMyQ0JGNEIxNDBGMUE2
NTAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLywKKwkJCQk2RTNGQUQzNjE0NzMz
RjQwMDBFNDIzMDcgLyogSlNXZWJHTERlcHRoVGV4dHVyZS5jcHAgKi8sCisJCQkJNkUzRkFEMzcx
NDczM0Y0MDAwRTQyMzA3IC8qIEpTV2ViR0xEZXB0aFRleHR1cmUuaCAqLywKIAkJCQk0OUM3Qjk4
NDEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEZyYW1lYnVmZmVyLmNwcCAqLywKIAkJCQk0OUM3
Qjk4NTEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEZyYW1lYnVmZmVyLmggKi8sCiAJCQkJOTNG
MUQ1QkUxMkQ1MzM1NjAwODMyQkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4dC5jcHAgKi8sCkBAIC0y
Mzg2OSw2ICsyMzg4Myw3IEBACiAJCQkJNkUzRkFEMzkxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFRThBNzczMTBG
ODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMkNCRjRFMTQwRjFBQkQwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk2RTNGQUQzOTE0NzMzRjQwMDBFNDIzMDcgLyogSlNXZWJHTERl
cHRoVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5OTgxMDQyRDJEMzAwMDlENDQ3
IC8qIEpTV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMUQ1QzExMkQ1
MzM1NjAwODMyQkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDlDN0I5OUMxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xQcm9ncmFtLmggaW4gSGVhZGVycyAq
LywKQEAgLTI0OTQ5LDYgKzI0OTY0LDcgQEAKIAkJCQkwMUQzQ0Y4NTE0QkQwQTMwMDBGRTk5NzAg
LyogV2ViR0xDb250ZXh0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMEVFMERGNjE0NEY4
MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTBFRTBERjgxNDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk2RTNGQUU4RjE0NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1
cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFQkYwRTU1MTJBODkyOTgwMERCMTcwOSAvKiBXZWJH
TEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5Q0YxMDQyRDMyRjAwMDlENDQ3
IC8qIFdlYkdMRnJhbWVidWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFNDdFNjYxMTBCNzk0
NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtMjcxMTAsNiAr
MjcxMjYsNyBAQAogCQkJCTZFM0ZBRDM4MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZFRThBNzcyMTBGODAzRjMw
MDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkMyQ0JGN0IxNDBGMUQ1ODAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNkUzRkFEMzgxNDczM0Y0MDAwRTQyMzA3IC8qIEpTV2ViR0xEZXB0
aFRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlDN0I5OTcxMDQyRDJEMzAwMDlENDQ3
IC8qIEpTV2ViR0xGcmFtZWJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0YxRDVDMDEy
RDUzMzU2MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQ5QzdCOTlCMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMUHJvZ3JhbS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTI4MDAzLDYgKzI4MDIwLDcgQEAKIAkJCQkwMUQzQ0Y4NDE0QkQwQTMwMDBG
RTk5NzAgLyogV2ViR0xDb250ZXh0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEwRUUw
REY1MTQ0RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUEwRUUwREY3MTQ0RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnU2hhZGVy
cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTNGQUU4RTE0NzMzRkRCMDBFNDIzMDcgLyogV2Vi
R0xEZXB0aFRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkVCRjBFNTQxMkE4OTI5ODAw
REIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdCOUNF
MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTZFNDdFNjYwMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dl
YkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggZDZjZjRhZDJmODhiMzdmMDFmYTgz
NmJlZmRjMjQzMDdjZDNiYzcwMy4uZDZhMTcxZmI5NDk4MmIzYTc2OGM1ZjQ3NjQzZjMzZDYwZjA5
MTA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1
ZGUgIkpTVWludDhBcnJheS5oIgogI2luY2x1ZGUgIkpTV2ViR0xCdWZmZXIuaCIKICNpbmNsdWRl
ICJKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgiCisjaW5jbHVkZSAiSlNXZWJHTERlcHRo
VGV4dHVyZS5oIgogI2luY2x1ZGUgIkpTV2ViR0xGcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgIkpT
V2ViR0xMb3NlQ29udGV4dC5oIgogI2luY2x1ZGUgIkpTV2ViR0xQcm9ncmFtLmgiCkBAIC02Myw2
ICs2NCw3IEBACiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCIKICNpbmNs
dWRlICJXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1NoYWRl
cnMuaCIKKyNpbmNsdWRlICJXZWJHTERlcHRoVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdMRXh0
ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViR0xGcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdM
R2V0SW5mby5oIgpAQCAtMjA0LDYgKzIwNiw4IEBAIHN0YXRpYyBKU1ZhbHVlIHRvSlMoRXhlY1N0
YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXZWJHTEV4dGVuCiAg
ICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8V2ViR0xE
ZWJ1Z1NoYWRlcnMqPihleHRlbnNpb24pKTsKICAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpXZWJL
aXRXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ05hbWU6CiAgICAgICAgIHJldHVybiB0b0pTKGV4
ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMq
PihleHRlbnNpb24pKTsKKyAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpXZWJLaXRXZWJHTERlcHRo
VGV4dHVyZU5hbWU6CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3Rh
dGljX2Nhc3Q8V2ViR0xEZXB0aFRleHR1cmUqPihleHRlbnNpb24pKTsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggODUyN2JjMjFiODg2ZTZlMGMxYjViNDE4M2Q5NjRl
OTA0Y2E1YWI3My4uNTA1OWRkZjBhNTQ2YTgyMDQyMTFjNTgyYjVhOWM5OGE1MzM2ZTlhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC01OSw2ICs1OSw3IEBACiAj
aW5jbHVkZSAiVjhXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIgogI2luY2x1ZGUgIlY4V2Vi
R0xEZWJ1Z1JlbmRlcmVySW5mby5oIgogI2luY2x1ZGUgIlY4V2ViR0xEZWJ1Z1NoYWRlcnMuaCIK
KyNpbmNsdWRlICJWOFdlYkdMRGVwdGhUZXh0dXJlLmgiCiAjaW5jbHVkZSAiVjhXZWJHTEZyYW1l
YnVmZmVyLmgiCiAjaW5jbHVkZSAiVjhXZWJHTExvc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiVjhX
ZWJHTFByb2dyYW0uaCIKQEAgLTIwNCw2ICsyMDUsMTAgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4T2JqZWN0KFdlYkdMRXh0ZW5zaW9uKiBleHRlbnNpb24sIHY4OjpIYW5kbGU8
djgKICAgICAgICAgZXh0ZW5zaW9uT2JqZWN0ID0gdG9WOChzdGF0aWNfY2FzdDxXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQyo+KGV4dGVuc2lvbiksIGlzb2xhdGUpOwogICAgICAgICByZWZlcmVu
Y2VOYW1lID0gIndlYktpdFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDTmFtZSI7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgV2ViR0xFeHRlbnNpb246OldlYktpdFdlYkdMRGVwdGhUZXh0dXJl
TmFtZToKKyAgICAgICAgZXh0ZW5zaW9uT2JqZWN0ID0gdG9WOChzdGF0aWNfY2FzdDxXZWJHTERl
cHRoVGV4dHVyZSo+KGV4dGVuc2lvbiksIGlzb2xhdGUpOworICAgICAgICByZWZlcmVuY2VOYW1l
ID0gIndlYktpdFdlYkdMRGVwdGhUZXh0dXJlTmFtZSI7CisgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBBU1NFUlQoIWV4dGVuc2lvbk9iamVjdC5Jc0VtcHR5KCkpOwogICAgIFY4RE9NV3JhcHBl
cjo6c2V0TmFtZWRIaWRkZW5SZWZlcmVuY2UoY29udGV4dE9iamVjdCwgcmVmZXJlbmNlTmFtZSwg
ZXh0ZW5zaW9uT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRGVwdGhUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RGVwdGhUZXh0dXJlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYWNmNDZhMWI4NTBmY2FjMDhhYjYyY2QwOGU2
YTMzNjA2ZDhkZDdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJXZWJHTERlcHRo
VGV4dHVyZS5oIgorCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworV2ViR0xEZXB0aFRleHR1cmU6OldlYkdMRGVwdGhUZXh0dXJlKFdlYkdMUmVuZGVy
aW5nQ29udGV4dCogY29udGV4dCkKKyAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCit7Cit9
CisKK1dlYkdMRGVwdGhUZXh0dXJlOjp+V2ViR0xEZXB0aFRleHR1cmUoKQoreworfQorCitXZWJH
TEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERlcHRoVGV4dHVyZTo6Z2V0TmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFdlYktpdFdlYkdMRGVwdGhUZXh0dXJlTmFtZTsKK30KKworUGFz
c093blB0cjxXZWJHTERlcHRoVGV4dHVyZT4gV2ViR0xEZXB0aFRleHR1cmU6OmNyZWF0ZShXZWJH
TFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBX
ZWJHTERlcHRoVGV4dHVyZShjb250ZXh0KSk7Cit9CisKK2Jvb2wgV2ViR0xEZXB0aFRleHR1cmU6
OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKK3sKKyAgICBFeHRlbnNpb25z
M0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7CisgICAgcmV0dXJuIGV4
dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9kZXB0aF90ZXh0dXJlIikKKyAgICAgICAg
fHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19kZXB0aF90ZXh0dXJlIikKKyAgICAgICAg
fHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJh
YzZhYWJmZjRkZmUwOTRjZTZiNTExNzgzYjk3YjRjZmE5MjQ1NGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5oCkBAIC0wLDAg
KzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkdMRGVwdGhUZXh0dXJlX2gKKyNkZWZpbmUgV2Vi
R0xEZXB0aFRleHR1cmVfaAorCisjaW5jbHVkZSAiV2ViR0xFeHRlbnNpb24uaCIKKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYkdM
RGVwdGhUZXh0dXJlIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc093blB0cjxXZWJHTERlcHRoVGV4dHVyZT4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCopOworCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dDNEKik7
CisKKyAgICB2aXJ0dWFsIH5XZWJHTERlcHRoVGV4dHVyZSgpOworICAgIHZpcnR1YWwgRXh0ZW5z
aW9uTmFtZSBnZXROYW1lKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgV2ViR0xEZXB0aFRleHR1
cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBXZWJHTERlcHRoVGV4dHVyZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTA3NDUwZDE4YmJi
MTlmNWIzNDhiYWRhYmJjMmJkNzY3Yzk2ZjZjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmlkbApAQCAtMCwwICsxLDMzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworbW9kdWxlIGh0bWwgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlv
bmFsPVdFQkdMLAorICAgICAgICBKU0dlbmVyYXRlSXNSZWFjaGFibGU9SW1wbENvbnRleHQsCisg
ICAgICAgIE9taXRDb25zdHJ1Y3RvcgorICAgIF0gV2ViR0xEZXB0aFRleHR1cmUgeworICAgIH07
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAppbmRleCBh
NGQzOTcwMjk3YjJkOWY5N2FkNjJjNzM4YzRhYzhlMjEwOGViZjhlLi5jNjZhNjA4NjFjMTdhZmVk
OTgwNzM1NGMxOWI3ZmM2MGIyYTc3NWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRXh0ZW5zaW9uLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgICAgICBXZWJH
TERlYnVnUmVuZGVyZXJJbmZvTmFtZSwKICAgICAgICAgV2ViR0xEZWJ1Z1NoYWRlcnNOYW1lLAog
ICAgICAgICBXZWJLaXRXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ05hbWUsIC8vIFdFQktJVF8g
cHJlZml4IHVudGlsIGV4dGVuc2lvbiBpcyBvZmZpY2lhbAorICAgICAgICBXZWJLaXRXZWJHTERl
cHRoVGV4dHVyZU5hbWUsIC8vIFdFQktJVF8gcHJlZml4IHVudGlsIGV4dGVuc2lvbiBpcyBvZmZp
Y2lhbAogICAgIH07CiAKICAgICB2b2lkIHJlZigpIHsgbV9jb250ZXh0LT5yZWYoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5j
cHAKaW5kZXggODQ4NGQ5YTFhMDBkZDAyZmRmNjkzNWQwNGQ3MDc0N2U1ZGU5NjU3YS4uMGZhYzQ2
ZjU2MzZkNzdlNmY1NDNjZGI3ZjM3NmQ5ODg3YzY0MjMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01OSw2ICs1
OSw3IEBACiAjaW5jbHVkZSAiV2ViR0xDb250ZXh0R3JvdXAuaCIKICNpbmNsdWRlICJXZWJHTERl
YnVnUmVuZGVyZXJJbmZvLmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1NoYWRlcnMuaCIKKyNpbmNs
dWRlICJXZWJHTERlcHRoVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIK
ICNpbmNsdWRlICJXZWJHTExvc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViR0xQcm9ncmFtLmgi
CkBAIC04MSw3ICs4Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGRvdWJsZSBz
ZWNvbmRzQmV0d2VlblJlc3RvcmVBdHRlbXB0cyA9IDEuMDsKLWNvbnN0IGludCBtYXhHTEVycm9y
c0FsbG93ZWRUb0NvbnNvbGUgPSAxMDsKK2NvbnN0IGludCBtYXhHTEVycm9yc0FsbG93ZWRUb0Nv
bnNvbGUgPSAyNTY7CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTEzMjAsMTIgKzEzMjEsMjMgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXYKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2Up
OwogfQogCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVTZXR0YWJsZVRleEZv
cm1hdChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIGZvcm1hdCkKK3sKKyAgICBp
ZiAoR3JhcGhpY3NDb250ZXh0M0Q6OmdldENsZWFyQml0c0J5Rm9ybWF0KGZvcm1hdCkgJiAoR3Jh
cGhpY3NDb250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQgfCBHcmFwaGljc0NvbnRleHQzRDo6U1RF
TkNJTF9CVUZGRVJfQklUKSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImZvcm1hdCBjYW4gbm90
IGJlIHNldCwgb25seSByZW5kZXJlZCB0byIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29w
eVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIGlmICghdmFsaWRhdGVUZXhGdW5jUGFyYW1ldGVycygiY29w
eVRleEltYWdlMkQiLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgYm9yZGVyLCBpbnRlcm5hbGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZ
VEUpKQogICAgICAgICByZXR1cm47CisgICAgaWYgKCF2YWxpZGF0ZVNldHRhYmxlVGV4Rm9ybWF0
KCJjb3B5VGV4SW1hZ2UyRCIsIGludGVybmFsZm9ybWF0KSkKKyAgICAgICAgcmV0dXJuOwogICAg
IFdlYkdMVGV4dHVyZSogdGV4ID0gdmFsaWRhdGVUZXh0dXJlQmluZGluZygiY29weVRleEltYWdl
MkQiLCB0YXJnZXQsIHRydWUpOwogICAgIGlmICghdGV4KQogICAgICAgICByZXR1cm47CkBAIC0x
MzgwLDcgKzEzOTIsMTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvcHlUZXhTdWJJ
bWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MKICAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJjb3B5VGV4U3Vi
SW1hZ2UyRCIsICJyZWN0YW5nbGUgb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgaWYgKCFpc1RleEludGVybmFsRm9ybWF0Q29sb3JCdWZmZXJDb21iaW5hdGlvblZh
bGlkKHRleC0+Z2V0SW50ZXJuYWxGb3JtYXQodGFyZ2V0LCBsZXZlbCksIGdldEJvdW5kRnJhbWVi
dWZmZXJDb2xvckZvcm1hdCgpKSkgeworICAgIEdDM0RlbnVtIGludGVybmFsZm9ybWF0ID0gdGV4
LT5nZXRJbnRlcm5hbEZvcm1hdCh0YXJnZXQsIGxldmVsKTsKKyAgICBpZiAoIXZhbGlkYXRlU2V0
dGFibGVUZXhGb3JtYXQoImNvcHlUZXhTdWJJbWFnZTJEIiwgaW50ZXJuYWxmb3JtYXQpKQorICAg
ICAgICByZXR1cm47CisgICAgaWYgKCFpc1RleEludGVybmFsRm9ybWF0Q29sb3JCdWZmZXJDb21i
aW5hdGlvblZhbGlkKGludGVybmFsZm9ybWF0LCBnZXRCb3VuZEZyYW1lYnVmZmVyQ29sb3JGb3Jt
YXQoKSkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklO
VkFMSURfT1BFUkFUSU9OLCAiY29weVRleFN1YkltYWdlMkQiLCAiZnJhbWVidWZmZXIgaXMgaW5j
b21wYXRpYmxlIGZvcm1hdCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjE3NSw2ICsy
MTkwLDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdlbmVyYXRlTWlwbWFwKEdDM0Rl
bnVtIHRhcmdldCkKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfT1BFUkFUSU9OLCAiZ2VuZXJhdGVNaXBtYXAiLCAibGV2ZWwgMCBub3QgcG93ZXIg
b2YgMiBvciBub3QgYWxsIHRoZSBzYW1lIHNpemUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KyAgICBpZiAoIXZhbGlkYXRlU2V0dGFibGVUZXhGb3JtYXQoImdlbmVyYXRlTWlwbWFwIiwgdGV4
LT5nZXRJbnRlcm5hbEZvcm1hdCh0YXJnZXQsIDApKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAg
Ly8gZ2VuZXJhdGVNaXBtYXAgd29uJ3Qgd29yayBwcm9wZXJseSBpZiBtaW5GaWx0ZXIgaXMgbm90
IE5FQVJFU1RfTUlQTUFQX0xJTkVBUgogICAgIC8vIG9uIE1hYy4gIFJlbW92ZSB0aGUgaGFjayBv
bmNlIHRoaXMgZHJpdmVyIGJ1ZyBpcyBmaXhlZC4KICNpZiBPUyhEQVJXSU4pCkBAIC0yMzUwLDcg
KzIzNjgsMTQgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMgPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6Y3JlYXRlKHRoaXMpOwog
ICAgICAgICByZXR1cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQy5nZXQoKTsKICAgICB9
Ci0KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIldFQktJVF9XRUJHTF9kZXB0aF90
ZXh0dXJlIikKKyAgICAgICAgJiYgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChncmFwaGlj
c0NvbnRleHQzRCgpKSkgeworICAgICAgICBpZiAoIW1fd2ViZ2xEZXB0aFRleHR1cmUpIHsKKyAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9D
SFJPTUlVTV9kZXB0aF90ZXh0dXJlIik7CisgICAgICAgICAgICBtX3dlYmdsRGVwdGhUZXh0dXJl
ID0gV2ViR0xEZXB0aFRleHR1cmU6OmNyZWF0ZSh0aGlzKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gbV93ZWJnbERlcHRoVGV4dHVyZS5nZXQoKTsKKyAgICB9CiAgICAgaWYgKGFsbG93UHJp
dmlsZWdlZEV4dGVuc2lvbnMoKSkgewogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFt
ZSwgIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8iKSkgewogICAgICAgICAgICAgaWYgKCFtX3dl
YmdsRGVidWdSZW5kZXJlckluZm8pCkBAIC0yODM0LDYgKzI4NTksOCBAQCBWZWN0b3I8U3RyaW5n
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQogICAgIHJl
c3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9sb3NlX2NvbnRleHQiKTsKICAgICBpZiAoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCh0aGlzKSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIik7CisgICAgaWYgKFdl
YkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoZ3JhcGhpY3NDb250ZXh0M0QoKSkpCisgICAgICAg
IHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9kZXB0aF90ZXh0dXJlIik7CiAKICAgICBpZiAo
YWxsb3dQcml2aWxlZ2VkRXh0ZW5zaW9ucygpKSB7CiAgICAgICAgIGlmIChtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJj
ZSIpKQpAQCAtMzUyNiwxMSArMzU1MywxNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dGV4SW1hZ2UyREJhc2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZQogICAg
ICAgICB9CiAgICAgfQogICAgIGlmICghcGl4ZWxzKSB7Ci0gICAgICAgIGJvb2wgc3VjY2VlZCA9
IG1fY29udGV4dC0+dGV4SW1hZ2UyRFJlc291cmNlU2FmZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtX3VucGFja0Fs
aWdubWVudCk7Ci0gICAgICAgIGlmICghc3VjY2VlZCkKLSAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgaWYgKGlzUmVzb3VyY2VTYWZlKCkpCisgICAgICAgICAgICBtX2NvbnRleHQtPnRleElt
YWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRl
ciwgZm9ybWF0LCB0eXBlLCAwKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBib29sIHN1
Y2NlZWQgPSBtX2NvbnRleHQtPnRleEltYWdlMkRSZXNvdXJjZVNhZmUodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLCBmb3JtYXQsIHR5cGUs
IG1fdW5wYWNrQWxpZ25tZW50KTsKKyAgICAgICAgICAgIGlmICghc3VjY2VlZCkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9IGVsc2UgeworICAgICAgICBpZiAoIXZh
bGlkYXRlU2V0dGFibGVUZXhGb3JtYXQoInRleEltYWdlMkQiLCBpbnRlcm5hbGZvcm1hdCkpCisg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwogICAgIH0KQEAgLTM1
NDMsNiArMzU3Niw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJESW1w
bChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9IDA7CisgICAgaWYgKCF2YWxpZGF0
ZVNldHRhYmxlVGV4Rm9ybWF0KCJ0ZXhJbWFnZTJEIiwgaW50ZXJuYWxmb3JtYXQpKQorICAgICAg
ICByZXR1cm47CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgaWYgKCFtX2NvbnRleHQt
PmV4dHJhY3RJbWFnZURhdGEoaW1hZ2UsIGZvcm1hdCwgdHlwZSwgZmxpcFksIHByZW11bHRpcGx5
QWxwaGEsIG1fdW5wYWNrQ29sb3JzcGFjZUNvbnZlcnNpb24gPT0gR3JhcGhpY3NDb250ZXh0M0Q6
Ok5PTkUsIGRhdGEpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dDNEOjpJTlZBTElEX1ZBTFVFLCAidGV4SW1hZ2UyRCIsICJiYWQgaW1hZ2UgZGF0YSIpOwpAQCAt
MzU2MCw3ICszNTk1LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0
LCBHQzNEaW50IGJvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0KCkgfHwgIXZhbGlk
YXRlVGV4RnVuY0RhdGEoInRleEltYWdlMkQiLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IHBpeGVscywgTnVsbEFsbG93ZWQpKQorICAgIGlmIChpc0NvbnRleHRMb3N0KCkgfHwgIXZhbGlk
YXRlVGV4RnVuY0RhdGEoInRleEltYWdlMkQiLCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCBwaXhlbHMsIE51bGxBbGxvd2VkKSkKICAgICAgICAgcmV0dXJuOwogICAgIHZvaWQq
IGRhdGEgPSBwaXhlbHMgPyBwaXhlbHMtPmJhc2VBZGRyZXNzKCkgOiAwOwogICAgIFZlY3Rvcjx1
aW50OF90PiB0ZW1wRGF0YTsKQEAgLTM3MzgsNiArMzc3Myw4IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEQmFzZShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2
ZWwsIEdDCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIXZhbGlkYXRlU2l6ZSgidGV4U3ViSW1h
Z2UyRCIsIHhvZmZzZXQsIHlvZmZzZXQpKQogICAgICAgICByZXR1cm47CisgICAgaWYgKCF2YWxp
ZGF0ZVNldHRhYmxlVGV4Rm9ybWF0KCJ0ZXhTdWJJbWFnZTJEIiwgZm9ybWF0KSkKKyAgICAgICAg
cmV0dXJuOwogICAgIFdlYkdMVGV4dHVyZSogdGV4ID0gdmFsaWRhdGVUZXh0dXJlQmluZGluZygi
dGV4U3ViSW1hZ2UyRCIsIHRhcmdldCwgdHJ1ZSk7CiAgICAgaWYgKCF0ZXgpCiAgICAgICAgIHJl
dHVybjsKQEAgLTM3NzcsNyArMzgxNCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0
ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGluCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxz
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8ICF2YWxp
ZGF0ZVRleEZ1bmNEYXRhKCJ0ZXhTdWJJbWFnZTJEIiwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBwaXhlbHMsIE51bGxOb3RBbGxvd2VkKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8
ICF2YWxpZGF0ZVRleEZ1bmNEYXRhKCJ0ZXhTdWJJbWFnZTJEIiwgbGV2ZWwsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLCBOdWxsTm90QWxsb3dlZCkpCiAgICAgICAgIHJldHVy
bjsKICAgICB2b2lkKiBkYXRhID0gcGl4ZWxzLT5iYXNlQWRkcmVzcygpOwogICAgIFZlY3Rvcjx1
aW50OF90PiB0ZW1wRGF0YTsKQEAgLTQ3MDEsNyArNDczOCw3IEBAIGJvb2wgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp2YWxpZGF0ZVN0cmluZyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0
IFN0cmluCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwg
R0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlKQorYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnZhbGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hhciogZnVuY3Rpb25OYW1l
LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEdDM0RpbnQgbGV2ZWwpCiB7CiAgICAg
c3dpdGNoIChmb3JtYXQpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBTFBIQToKQEAg
LTQ3MTAsNiArNDc0NywxMSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVU
ZXhGdW5jRm9ybWF0QW5kVHlwZShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbQogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJHQjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOgog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05F
TlQ6CisgICAgICAgIGlmIChtX3dlYmdsRGVwdGhUZXh0dXJlKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VO
VU0sIGZ1bmN0aW9uTmFtZSwgIkRFUFRIX0NPTVBPTkVOVCB0ZXh0dXJlIGZvcm1hdCBub3QgZW5h
YmxlZCIpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25O
YW1lLCAiaW52YWxpZCB0ZXh0dXJlIGZvcm1hdCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC00NzI2LDYgKzQ3NjgsMTIgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRl
VGV4RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hhciogZnVuY3Rpb25OYW0KICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHRleHR1cmUgdHlwZSIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfSU5U
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JUOgorICAgICAgICBp
ZiAobV93ZWJnbERlcHRoVGV4dHVyZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5h
bWUsICJpbnZhbGlkIHRleHR1cmUgdHlwZSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklO
VkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCB0ZXh0dXJlIHR5cGUiKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNDc1OSw2ICs0ODA3LDIxIEBAIGJvb2wgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UOgorICAgICAg
ICBpZiAoIW1fd2ViZ2xEZXB0aFRleHR1cmUpIHsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFs
aWQgZm9ybWF0LiBERVBUSF9DT01QT05FTlQgbm90IGVuYWJsZWQiKTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodHlwZSAhPSBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfU0hPUlQKKyAgICAgICAgICAgICYmIHR5cGUgIT0gR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX0lOVCkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlk
IHR5cGUgZm9yIERFUFRIX0NPTVBPTkVOVCBmb3JtYXQiKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAobGV2ZWwgPiAwKSB7CisgICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5j
dGlvbk5hbWUsICJsZXZlbCBtdXN0IGJlIDAgZm9yIERFUFRIX0NPTVBPTkVOVCBmb3JtYXQiKTsK
KyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtNDgwNSw3
ICs0ODY4LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4RnVuY1Bh
cmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLAogICAgIC8vIFdlIGFic29sdXRlbHkg
aGF2ZSB0byB2YWxpZGF0ZSB0aGUgZm9ybWF0IGFuZCB0eXBlIGNvbWJpbmF0aW9uLgogICAgIC8v
IFRoZSB0ZXhJbWFnZTJEIGVudHJ5IHBvaW50cyB0YWtpbmcgSFRNTEltYWdlLCBldGMuIHdpbGwg
cHJvZHVjZQogICAgIC8vIHRlbXBvcmFyeSBkYXRhIGJhc2VkIG9uIHRoaXMgY29tYmluYXRpb24s
IHNvIGl0IG11c3QgYmUgbGVnYWwuCi0gICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRU
eXBlKGZ1bmN0aW9uTmFtZSwgZm9ybWF0LCB0eXBlKSB8fCAhdmFsaWRhdGVUZXhGdW5jTGV2ZWwo
ZnVuY3Rpb25OYW1lLCB0YXJnZXQsIGxldmVsKSkKKyAgICBpZiAoIXZhbGlkYXRlVGV4RnVuY0Zv
cm1hdEFuZFR5cGUoZnVuY3Rpb25OYW1lLCBmb3JtYXQsIHR5cGUsIGxldmVsKSB8fCAhdmFsaWRh
dGVUZXhGdW5jTGV2ZWwoZnVuY3Rpb25OYW1lLCB0YXJnZXQsIGxldmVsKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKSB7CkBAIC00ODQ5
LDcgKzQ5MTIsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXhGdW5j
UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleEZ1bmNEYXRhKGNvbnN0
IGNoYXIqIGZ1bmN0aW9uTmFtZSwKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0
ZVRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGludCBsZXZlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3
aWR0aCwgR0MzRHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5QnVmZmVyVmlldyog
cGl4ZWxzLApAQCAtNDg2Miw3ICs0OTI1LDkgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnZhbGlkYXRlVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLAogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRU
eXBlKGZ1bmN0aW9uTmFtZSwgZm9ybWF0LCB0eXBlKSkKKyAgICBpZiAoIXZhbGlkYXRlVGV4RnVu
Y0Zvcm1hdEFuZFR5cGUoZnVuY3Rpb25OYW1lLCBmb3JtYXQsIHR5cGUsIGxldmVsKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghdmFsaWRhdGVTZXR0YWJsZVRleEZvcm1hdChmdW5j
dGlvbk5hbWUsIGZvcm1hdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRjaCAo
dHlwZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuaAppbmRleCA0YjIxODg2ODYxOTk1ODczODVhNTU1ZThiYjJhZDc3OGIyZDk4MGRh
Li44NjEyMTk2NTZmNWU1M2M5OGRhMTZmN2IxMWQ0NzhkMGU5ZWExODA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaApAQCAtNTcs
NiArNTcsNyBAQCBjbGFzcyBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzsKIGNsYXNzIFdlYkdM
Q29udGV4dEF0dHJpYnV0ZXM7CiBjbGFzcyBXZWJHTERlYnVnUmVuZGVyZXJJbmZvOwogY2xhc3Mg
V2ViR0xEZWJ1Z1NoYWRlcnM7CitjbGFzcyBXZWJHTERlcHRoVGV4dHVyZTsKIGNsYXNzIFdlYkdM
RXh0ZW5zaW9uOwogY2xhc3MgV2ViR0xGcmFtZWJ1ZmZlcjsKIGNsYXNzIFdlYkdMTG9zZUNvbnRl
eHQ7CkBAIC01MDksNiArNTEwLDcgQEAgcHVibGljOgogICAgIE93blB0cjxXZWJHTERlYnVnUmVu
ZGVyZXJJbmZvPiBtX3dlYmdsRGVidWdSZW5kZXJlckluZm87CiAgICAgT3duUHRyPFdlYkdMRGVi
dWdTaGFkZXJzPiBtX3dlYmdsRGVidWdTaGFkZXJzOwogICAgIE93blB0cjxXZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQz4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQzsKKyAgICBPd25QdHI8
V2ViR0xEZXB0aFRleHR1cmU+IG1fd2ViZ2xEZXB0aFRleHR1cmU7CiAKICAgICAvLyBIZWxwZXJz
IGZvciBnZXRQYXJhbWV0ZXIgYW5kIG90aGVycwogICAgIFdlYkdMR2V0SW5mbyBnZXRCb29sZWFu
UGFyYW1ldGVyKEdDM0RlbnVtKTsKQEAgLTU3Nyw3ICs1NzksNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBIZWxwZXIgZnVuY3Rpb24gdG8gY2hlY2sgaW5wdXQgZm9ybWF0L3R5cGUgZm9yIGZ1bmN0aW9u
cyB7Y29weX1UZXh7U3VifUltYWdlLgogICAgIC8vIEdlbmVyYXRlcyBHTCBlcnJvciBhbmQgcmV0
dXJucyBmYWxzZSBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkLgotICAgIGJvb2wgdmFsaWRhdGVU
ZXhGdW5jRm9ybWF0QW5kVHlwZShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIGZv
cm1hdCwgR0MzRGVudW0gdHlwZSk7CisgICAgYm9vbCB2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRU
eXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0
eXBlLCBHQzNEaW50IGxldmVsKTsKIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBjaGVjayBp
bnB1dCBsZXZlbCBmb3IgZnVuY3Rpb25zIHtjb3B5fVRleHtTdWJ9SW1hZ2UuCiAgICAgLy8gR2Vu
ZXJhdGVzIEdMIGVycm9yIGFuZCByZXR1cm5zIGZhbHNlIGlmIGxldmVsIGlzIGludmFsaWQuCkBA
IC01OTksMTIgKzYwMSwxOCBAQCBwdWJsaWM6CiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHZh
bGlkYXRlIHRoYXQgdGhlIGdpdmVuIEFycmF5QnVmZmVyVmlldwogICAgIC8vIGlzIG9mIHRoZSBj
b3JyZWN0IHR5cGUgYW5kIGNvbnRhaW5zIGVub3VnaCBkYXRhIGZvciB0aGUgdGV4SW1hZ2UgY2Fs
bC4KICAgICAvLyBHZW5lcmF0ZXMgR0wgZXJyb3IgYW5kIHJldHVybnMgZmFsc2UgaWYgcGFyYW1l
dGVycyBhcmUgaW52YWxpZC4KLSAgICBib29sIHZhbGlkYXRlVGV4RnVuY0RhdGEoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLAorICAgIGJvb2wgdmFsaWRhdGVUZXhGdW5jRGF0YShjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsIEdDM0RpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBcnJheUJ1ZmZlclZpZXcqIHBpeGVscywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTnVsbERpc3Bvc2l0aW9uKTsKIAorICAgIC8vIEhlbHBlciBmdW5jdGlv
biB0byB2YWxpZGF0ZSBhIGdpdmVuIHRleHR1cmUgZm9ybWF0IGlzIHNldHRhYmxlIGFzIGluCisg
ICAgLy8geW91IGNhbiBzdXBwbHkgZGF0YSB0byB0ZXhJbWFnZTJELCBvciBjYWxsIHRleEltYWdl
MkQsIGNvcHlUZXhJbWFnZTJEIGFuZAorICAgIC8vIGNvcHlUZXhTdWJJbWFnZTJELgorICAgIC8v
IEdlbmVyYXRlcyBHTCBlcnJvciBhbmQgcmV0dXJucyBmYWxzZSBpZiB0aGUgZm9ybWF0IGlzIG5v
dCBzZXR0YWJsZS4KKyAgICBib29sIHZhbGlkYXRlU2V0dGFibGVUZXhGb3JtYXQoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSBmb3JtYXQpOworCiAgICAgLy8gSGVscGVyIGZ1bmN0
aW9uIHRvIHZhbGlkYXRlIGNvbXByZXNzZWQgdGV4dHVyZSBkYXRhIGlzIGNvcnJlY3Qgc2l6ZQog
ICAgIC8vIGZvciB0aGUgZ2l2ZW4gZm9ybWF0IGFuZCBkaW1lbnNpb25zLgogICAgIGJvb2wgdmFs
aWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuY3BwCmluZGV4IDYxZGZlOTk3MjYyMGUwYTYzYmZiM2E4NDA2YzY1NjgzNTYzZjY5ZTYuLmI3
NjVmNDA0NmJjMzIzZDQ1ZjY2ODE2MDI1Mzc5MjY0ZTE0M2E1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKQEAg
LTg1LDkgKzg1LDkgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcHV0ZUZvcm1hdEFuZFR5
cGVQYXJhbWV0ZXJzKEdDM0RlbnVtIGZvcm1hdCwKIHsKICAgICBzd2l0Y2ggKGZvcm1hdCkgewog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFMUEhBOgotICAgICAgICAqY29tcG9uZW50c1Bl
clBpeGVsID0gMTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
TFVNSU5BTkNFOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMOgogICAgICAgICAqY29t
cG9uZW50c1BlclBpeGVsID0gMTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6TFVNSU5BTkNFX0FMUEhBOgpAQCAtMTA3LDEyICsxMDcsMTkgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6Y29tcHV0ZUZvcm1hdEFuZFR5cGVQYXJhbWV0ZXJzKEdDM0RlbnVtIGZv
cm1hdCwKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFOgogICAgICAg
ICAqYnl0ZXNQZXJDb21wb25lbnQgPSBzaXplb2YoR0MzRHVieXRlKTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQ6CisgICAgICAgICpi
eXRlc1BlckNvbXBvbmVudCA9IHNpemVvZihHQzNEdXNob3J0KTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlRfNV82XzU6CiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlRfNF80XzRfNDoKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVF81XzVfNV8xOgogICAgICAgICAqY29tcG9u
ZW50c1BlclBpeGVsID0gMTsKICAgICAgICAgKmJ5dGVzUGVyQ29tcG9uZW50ID0gc2l6ZW9mKEdD
M0R1c2hvcnQpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpV
TlNJR05FRF9JTlRfMjRfODoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9J
TlQ6CisgICAgICAgICpieXRlc1BlckNvbXBvbmVudCA9IHNpemVvZihHQzNEdWludCk7CisgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOiAvLyBPRVNfdGV4
dHVyZV9mbG9hdAogICAgICAgICAqYnl0ZXNQZXJDb21wb25lbnQgPSBzaXplb2YoR0MzRGZsb2F0
KTsKICAgICAgICAgYnJlYWs7CkBAIC0xODI0LDcgKzE4MzEsNiBAQCB1bnNpZ25lZCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1hdChHQzNEZW51bSBmb3JtYXQpCiAgICAg
fQogfQogCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJH
TCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA4OTExMDYxZDY0ZDkyODVmMWNkZjQwMTRjNjFiNjYzOTk3MDY4NmViLi4xNDUz
MmQ2ZWQ1OTc5NDM0MDI5ZDYxNjRiNDI1OTY3MGQ5NTQxYjg2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTItMDYtMTMgIEdyZWdnIFRhdmFyZXMgIDxnbWFuQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgRXhwb3NlIFdFQkdMX2RlcHRoX3RleHR1cmUgZXh0ZW5zaW9uIHRvIFdlYkdMCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzAyOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jYW52YXMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QtdXRpbHMuanM6CisgICAgICAgIChXZWJHTFRlc3RVdGls
cyk6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtZGVwdGgtdGV4dHVyZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWRlcHRo
LXRleHR1cmUuaHRtbDogQWRkZWQuCisKIDIwMTItMDYtMTggIERhbiBCZXJuc3RlaW4gIDxtaXR6
QGFwcGxlLmNvbT4KIAogICAgICAgICBDb2x1bW4gcHJvZ3Jlc3Npb24gZGlyZWN0aW9uIGNhbm5v
dCBiZSBzZXQgaW5kZXBlbmRlbnRseSBvZiB3cml0aW5nIGRpcmVjdGlvbgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QtdXRpbHMu
anMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC11
dGlscy5qcwppbmRleCA0MzI0NGQxY2JlNTQ5YWZkYjIxZTE3ZWM4YmVlZjAxODkxNmNiNDhmLi40
Y2ViYzk1NzA4ZWI0Y2M3ZTk5NjBhMDVhMTQ2ZTA3ZDczYjdiZjNhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC11dGlscy5qcwor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC11
dGlscy5qcwpAQCAtMTM0LDkgKzEzNCwxOSBAQCB2YXIgc2V0dXBTaW1wbGVUZXh0dXJlRnJhZ21l
bnRTaGFkZXIgPSBmdW5jdGlvbihnbCkgewogICogQHBhcmFtIHshQXJyYXkuPG51bWJlcj59IG9w
dF9sb2NhdGlvbnMgVGhlIGxvY2F0aW9ucyBmb3IgdGhlIGF0dHJpYnMuCiAgKi8KIHZhciBzZXR1
cFByb2dyYW0gPSBmdW5jdGlvbihnbCwgc2hhZGVycywgb3B0X2F0dHJpYnMsIG9wdF9sb2NhdGlv
bnMpIHsKKyAgdmFyIHJlYWxTaGFkZXJzID0gW107CiAgIHZhciBwcm9ncmFtID0gZ2wuY3JlYXRl
UHJvZ3JhbSgpOwogICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgc2hhZGVycy5sZW5ndGg7ICsraWkp
IHsKLSAgICBnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyc1tpaV0pOworICAgIHZhciBz
aGFkZXIgPSBzaGFkZXJzW2lpXTsKKyAgICBpZiAodHlwZW9mIHNoYWRlciA9PSAnc3RyaW5nJykg
eworICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzaGFkZXIpOwor
ICAgICAgaWYgKGVsZW1lbnQpIHsKKyAgICAgICAgc2hhZGVyID0gbG9hZFNoYWRlckZyb21TY3Jp
cHQoZ2wsIHNoYWRlcik7CisgICAgICB9IGVsc2UgeworICAgICAgICBzaGFkZXIgPSBsb2FkU2hh
ZGVyKGdsLCBzaGFkZXIsIGlpID8gZ2wuRlJBR01FTlRfU0hBREVSIDogZ2wuVkVSVEVYX1NIQURF
Uik7CisgICAgICB9CisgICAgfQorICAgIGdsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIp
OwogICB9CiAgIGlmIChvcHRfYXR0cmlicykgewogICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBv
cHRfYXR0cmlicy5sZW5ndGg7ICsraWkpIHsKQEAgLTExMDksNiArMTExOSw1MCBAQCB2YXIgZ2V0
VXJsQXJndW1lbnRzID0gZnVuY3Rpb24oKSB7CiAgIHJldHVybiBhcmdzOwogfTsKIAorLy8gQWRk
IHlvdXIgcHJlZml4IGhlcmUuCit2YXIgYnJvd3NlclByZWZpeGVzID0gWworICAiIiwKKyAgIk1P
Wl8iLAorICAiT1BfIiwKKyAgIldFQktJVF8iCitdOworCisvKioKKyAqIEdpdmVuIGFuIGV4dGVu
c2lvbiBuYW1lIGxpa2UgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMKKyAqIHJldHVybnMg
dGhlIG5hbWUgb2YgdGhlIHN1cHBvcnRlZCB2ZXJzaW9uIGV4dGVuc2lvbiwgbGlrZQorICogV0VC
S0lUX1dFQkdMX2NvbXByZXNzZWRfdGV0dXJlX3MzdGMKKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
IE5hbWUgb2YgZXh0ZW5zaW9uIHRvIGxvb2sgZm9yCisgKiBAcmV0dXJuIHtzdHJpbmd9IG5hbWUg
b2YgZXh0ZW5zaW9uIGZvdW5kIG9yIHVuZGVmaW5lZCBpZiBub3QKKyAqICAgICBmb3VuZC4KKyAq
LwordmFyIGdldFN1cHBvcnRlZEV4dGVuc2lvbldpdGhLbm93blByZWZpeGVzID0gZnVuY3Rpb24o
Z2wsIG5hbWUpIHsKKyAgdmFyIHN1cHBvcnRlZCA9IGdsLmdldFN1cHBvcnRlZEV4dGVuc2lvbnMo
KTsKKyAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGJyb3dzZXJQcmVmaXhlcy5sZW5ndGg7ICsraWkp
IHsKKyAgICB2YXIgcHJlZml4ZWROYW1lID0gYnJvd3NlclByZWZpeGVzW2lpXSArIG5hbWU7Cisg
ICAgaWYgKHN1cHBvcnRlZC5pbmRleE9mKHByZWZpeGVkTmFtZSkgPj0gMCkgeworICAgICAgcmV0
dXJuIHByZWZpeGVkTmFtZTsKKyAgICB9CisgIH0KK307CisKKy8qKgorICogR2l2ZW4gYW4gZXh0
ZW5zaW9uIG5hbWUgbGlrZSBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YworICogcmV0dXJu
cyB0aGUgc3VwcG9ydGVkIHZlcnNpb24gZXh0ZW5zaW9uLCBsaWtlCisgKiBXRUJLSVRfV0VCR0xf
Y29tcHJlc3NlZF90ZXR1cmVfczN0YworICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZSBvZiBl
eHRlbnNpb24gdG8gbG9vayBmb3IKKyAqIEByZXR1cm4ge1dlYkdMRXh0ZW5zaW9ufSBUaGUgZXh0
ZW5zaW9uIG9yIHVuZGVmaW5lZCBpZiBub3QKKyAqICAgICBmb3VuZC4KKyAqLwordmFyIGdldEV4
dGVuc2lvbldpdGhLbm93blByZWZpeGVzID0gZnVuY3Rpb24oZ2wsIG5hbWUpIHsKKyAgZm9yICh2
YXIgaWkgPSAwOyBpaSA8IGJyb3dzZXJQcmVmaXhlcy5sZW5ndGg7ICsraWkpIHsKKyAgICB2YXIg
cHJlZml4ZWROYW1lID0gYnJvd3NlclByZWZpeGVzW2lpXSArIG5hbWU7CisgICAgdmFyIGV4dCA9
IGdsLmdldEV4dGVuc2lvbihwcmVmaXhlZE5hbWUpOworICAgIGlmIChleHQpIHsKKyAgICAgIHJl
dHVybiBleHQ7CisgICAgfQorICB9Cit9OworCiAvKioKICAqIFByb3ZpZGVzIHJlcXVlc3RBbmlt
YXRpb25GcmFtZSBpbiBhIGNyb3NzIGJyb3dzZXIgd2F5LgogICovCkBAIC0xMTc3LDggKzEyMzEs
MTAgQEAgcmV0dXJuIHsKICAgY3JlYXRlQ29sb3JlZFRleHR1cmU6IGNyZWF0ZUNvbG9yZWRUZXh0
dXJlLAogICBkcmF3UXVhZDogZHJhd1F1YWQsCiAgIGVuZHNXaXRoOiBlbmRzV2l0aCwKKyAgZ2V0
RXh0ZW5zaW9uV2l0aEtub3duUHJlZml4ZXM6IGdldEV4dGVuc2lvbldpdGhLbm93blByZWZpeGVz
LAogICBnZXRGaWxlTGlzdEFzeW5jOiBnZXRGaWxlTGlzdEFzeW5jLAogICBnZXRMYXN0RXJyb3I6
IGdldExhc3RFcnJvciwKKyAgZ2V0U3VwcG9ydGVkRXh0ZW5zaW9uV2l0aEtub3duUHJlZml4ZXM6
IGdldFN1cHBvcnRlZEV4dGVuc2lvbldpdGhLbm93blByZWZpeGVzLAogICBnZXRVcmxBcmd1bWVu
dHM6IGdldFVybEFyZ3VtZW50cywKICAgZ2xFbnVtVG9TdHJpbmc6IGdsRW51bVRvU3RyaW5nLAog
ICBnbEVycm9yU2hvdWxkQmU6IGdsRXJyb3JTaG91bGRCZSwKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWRlcHRoLXRleHR1cmUtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtZGVwdGgtdGV4dHVyZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDBmMmZmMzYzN2E3NjBlOGY2NmE5YTUyMjY5Mjk5Zjc5MTQyMDAz
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmds
LWRlcHRoLXRleHR1cmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTAgQEAKK1RoaXMgdGVzdCB2
ZXJpZmllcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgV0VCR0xfZGVwdGhfdGV4dHVyZSBleHRl
bnNpb24sIGlmIGl0IGlzIGF2YWlsYWJsZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgV2ViR0wgY29udGV4dCBleGlzdHMKK1Rlc3RpbmcgYmluZGluZyBlbnVtIHdpdGgg
ZXh0ZW5zaW9uIGRpc2FibGVkCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwg
Z2wuREVQVEhfQ09NUE9ORU5ULCAxLCAxLCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lH
TkVEX1NIT1JULCBudWxsKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfRU5V
TS4KK1BBU1MgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5ERVBUSF9DT01QT05F
TlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfSU5ULCBudWxsKSBn
ZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfRU5VTS4KK1BBU1MgU3VjY2Vzc2Z1
bGx5IGVuYWJsZWQgV0VCR0xfZGVwdGhfdGV4dHVyZSBleHRlbnNpb24KK1BBU1MgV0VCR0xfZGVw
dGhfdGV4dHVyZSBsaXN0ZWQgYXMgc3VwcG9ydGVkIGFuZCBnZXRFeHRlbnNpb24gc3VjY2VlZGVk
CitUZXN0aW5nIFdFQkdMX2RlcHRoX3RleHR1cmUKKwordGVzdGluZzogVU5TSUdORURfU0hPUlQK
K1BBU1MgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDEsIGds
LkRFUFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05F
RF9TSE9SVCwgbnVsbCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJB
VElPTi4KK1BBU1MgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gs
IDEsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5V
TlNJR05FRF9TSE9SVCwgbnVsbCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElE
X09QRVJBVElPTi4KK1BBU1MgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lU
SVZFX1gsIDEsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5U
LCBnbC5VTlNJR05FRF9TSE9SVCwgbnVsbCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJ
TlZBTElEX09QRVJBVElPTi4KK1BBU1MgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQ
X1BPU0lUSVZFX1gsIDEsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09N
UE9ORU5ULCBnbC5VTlNJR05FRF9TSE9SVCwgbnVsbCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVy
cm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NV
QkVfTUFQX1BPU0lUSVZFX1gsIDEsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQ
VEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9TSE9SVCwgbnVsbCkgZ2VuZXJhdGVkIGV4cGVjdGVk
IEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgZ2wudGV4SW1hZ2UyRChnbC5URVhU
VVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDEsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwg
Z2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9TSE9SVCwgbnVsbCkgZ2VuZXJhdGVkIGV4
cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgZ2wudGV4SW1hZ2UyRChn
bC5URVhUVVJFXzJELCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NP
TVBPTkVOVCwgZ2wuVU5TSUdORURfU0hPUlQsIG51bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBl
cnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCAxLCAxLCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGds
LlVOU0lHTkVEX1NIT1JULCBuZXcgVWludDE2QXJyYXkoMSkpIGdlbmVyYXRlZCBleHBlY3RlZCBH
TCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lH
TkVEX1NIT1JULCBjYW52YXMyKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURf
T1BFUkFUSU9OLgorUEFTUyBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5E
RVBUSF9DT01QT05FTlQsIDAsIDAsIDEsIDEsIDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJv
cjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
MCwgZ2wuREVQVEhfQ09NUE9ORU5ULCA4LCA4LCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVO
U0lHTkVEX1NIT1JULCBudWxsKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IE5PX0VSUk9S
LgorUEFTUyBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEsIGds
LkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfU0hPUlQsIG5ldyBVaW50MTZBcnJheSgxKSkg
Z2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgZ2wu
Y29weVRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwgMCwgMSwgMSkgZ2Vu
ZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgZ2wuZ2Vu
ZXJhdGVNaXBtYXAoZ2wuVEVYVFVSRV8yRCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJ
TlZBTElEX09QRVJBVElPTi4KK1BBU1MgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFN
RUJVRkZFUikgaXMgZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUKK1BBU1MgZGVwdGggdGV4dHVyZSBy
ZW5kZXJlZCBjb3JyZWN0bHkuCisKK3Rlc3Rpbmc6IFVOU0lHTkVEX0lOVAorUEFTUyBnbC50ZXhJ
bWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwgMSwgZ2wuREVQVEhfQ09NUE9O
RU5ULCAxLCAxLCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lHTkVEX0lOVCwgbnVsbCkg
Z2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgZ2wu
dGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsIDEsIGdsLkRFUFRIX0NP
TVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9JTlQsIG51
bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNT
IGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLCAxLCBnbC5ERVBU
SF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfSU5U
LCBudWxsKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgor
UEFTUyBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwgMSwgZ2wu
REVQVEhfQ09NUE9ORU5ULCAxLCAxLCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lHTkVE
X0lOVCwgbnVsbCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElP
Ti4KK1BBU1MgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsIDEs
IGdsLkRFUFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJ
R05FRF9JTlQsIG51bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVS
QVRJT04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9Y
LCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wu
VU5TSUdORURfSU5ULCBudWxsKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURf
T1BFUkFUSU9OLgorUEFTUyBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDEsIGdsLkRFUFRI
X0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9JTlQs
IG51bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQ
QVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCAx
LCAxLCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lHTkVEX0lOVCwgbmV3IFVpbnQzMkFy
cmF5KDEpKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgor
UEFTUyBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwg
Z2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9JTlQsIGNhbnZhczIpIGdlbmVyYXRlZCBl
eHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLmNvcHlUZXhJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMCwgMCwgMSwgMSwgMCkg
Z2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgZ2wu
dGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIDgsIDgsIDAs
IGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfSU5ULCBudWxsKSBnZW5lcmF0ZWQgZXhw
ZWN0ZWQgR0wgZXJyb3I6IE5PX0VSUk9SLgorUEFTUyBnbC50ZXhTdWJJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIDAsIDAsIDEsIDEsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfSU5U
LCBuZXcgVWludDMyQXJyYXkoMSkpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJ
RF9PUEVSQVRJT04uCitQQVNTIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IDAsIDAsIDAsIDAsIDEsIDEpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9P
UEVSQVRJT04uCitQQVNTIGdsLmdlbmVyYXRlTWlwbWFwKGdsLlRFWFRVUkVfMkQpIGdlbmVyYXRl
ZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLmNoZWNrRnJh
bWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIGlzIGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRF
CitQQVNTIGRlcHRoIHRleHR1cmUgcmVuZGVyZWQgY29ycmVjdGx5LgorCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWRlcHRoLXRleHR1cmUuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWRlcHRoLXRleHR1cmUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iMzkwOTQzODliZjRjOTRhOWRkMTk0ZTU3MTE1MWEyMTgyYTYzODhjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtZGVwdGgt
dGV4dHVyZS5odG1sCkBAIC0wLDAgKzEsMzAyIEBACivvu788IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvd2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHRpdGxlPldlYkdMIFdFQkdMX2RlcHRoX3RleHR1
cmUgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IGlk
PSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjNCBhX3Bv
c2l0aW9uOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247Cit9
Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFn
bWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gc2FtcGxlcjJEIHVfdGV4
dHVyZTsKK3VuaWZvcm0gdmVjMiB1X3Jlc29sdXRpb247Cit2b2lkIG1haW4oKQoreworICAgIHZl
YzIgdGV4Y29vcmQgPSBnbF9GcmFnQ29vcmQueHkgLyB1X3Jlc29sdXRpb247CisgICAgZ2xfRnJh
Z0NvbG9yID0gdGV4dHVyZTJEKHVfdGV4dHVyZSwgdGV4Y29vcmQpOworfQorPC9zY3JpcHQ+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxj
YW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjgiIGhlaWdodD0iOCIgc3R5bGU9IndpZHRoOiA4cHg7
IGhlaWdodDogOHB4OyI+PC9jYW52YXM+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbml0Tm9uS2hy
b25vc0ZyYW1ld29yaykgeworICAgIHdpbmRvdy5pbml0Tm9uS2hyb25vc0ZyYW1ld29yayhmYWxz
ZSk7Cit9CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBmdW5jdGlvbmFsaXR5
IG9mIHRoZSBXRUJHTF9kZXB0aF90ZXh0dXJlIGV4dGVuc2lvbiwgaWYgaXQgaXMgYXZhaWxhYmxl
LiIpOworCitkZWJ1ZygiIik7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52
YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Cit2YXIgZ2wgPSB3dHUuY3Jl
YXRlM0RDb250ZXh0KGNhbnZhcywge2FudGlhbGlhczogZmFsc2V9KTsKK3ZhciBwcm9ncmFtID0g
d3R1LnNldHVwVGV4dHVyZWRRdWFkKGdsKTsKK3ZhciBleHQgPSBudWxsOwordmFyIHZhbyA9IG51
bGw7Cit2YXIgbmFtZTsKK3ZhciBzdXBwb3J0ZWRGb3JtYXRzOworCitpZiAoIWdsKSB7CisgICAg
dGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAg
ICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0IGV4aXN0cyIpOworCisgICAgLy8gUnVuIHRlc3Rz
IHdpdGggZXh0ZW5zaW9uIGRpc2FibGVkCisgICAgcnVuVGVzdERpc2FibGVkKCk7CisKKyAgICAv
LyBRdWVyeSB0aGUgZXh0ZW5zaW9uIGFuZCBzdG9yZSBnbG9iYWxseSBzbyBzaG91bGRCZSBjYW4g
YWNjZXNzIGl0CisgICAgZXh0ID0gd3R1LmdldEV4dGVuc2lvbldpdGhLbm93blByZWZpeGVzKGds
LCAiV0VCR0xfZGVwdGhfdGV4dHVyZSIpOworICAgIGlmICghZXh0KSB7CisgICAgICAgIHRlc3RQ
YXNzZWQoIk5vIFdFQkdMX2RlcHRoX3RleHR1cmUgc3VwcG9ydCAtLSB0aGlzIGlzIGxlZ2FsIik7
CisgICAgICAgIHJ1blN1cHBvcnRlZFRlc3QoZmFsc2UpOworICAgIH0gZWxzZSB7CisgICAgICAg
IHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBlbmFibGVkIFdFQkdMX2RlcHRoX3RleHR1cmUgZXh0
ZW5zaW9uIik7CisKKyAgICAgICAgcnVuU3VwcG9ydGVkVGVzdCh0cnVlKTsKKyAgICAgICAgcnVu
VGVzdEV4dGVuc2lvbigpOworICAgIH0KK30KKworZnVuY3Rpb24gcnVuU3VwcG9ydGVkVGVzdChl
eHRlbnNpb25FbmFibGVkKSB7CisgICAgdmFyIG5hbWUgPSB3dHUuZ2V0U3VwcG9ydGVkRXh0ZW5z
aW9uV2l0aEtub3duUHJlZml4ZXMoZ2wsICJXRUJHTF9kZXB0aF90ZXh0dXJlIik7CisgICAgaWYg
KG5hbWUgIT09IHVuZGVmaW5lZCkgeworICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCkgewor
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiV0VCR0xfZGVwdGhfdGV4dHVyZSBsaXN0ZWQgYXMgc3Vw
cG9ydGVkIGFuZCBnZXRFeHRlbnNpb24gc3VjY2VlZGVkIik7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJXRUJHTF9kZXB0aF90ZXh0dXJlIGxpc3RlZCBhcyBzdXBw
b3J0ZWQgYnV0IGdldEV4dGVuc2lvbiBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7
CisgICAgICAgIGlmIChleHRlbnNpb25FbmFibGVkKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJXRUJHTF9kZXB0aF90ZXh0dXJlIG5vdCBsaXN0ZWQgYXMgc3VwcG9ydGVkIGJ1dCBnZXRFeHRl
bnNpb24gc3VjY2VlZGVkIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJXRUJHTF9kZXB0aF90ZXh0dXJlIG5vdCBsaXN0ZWQgYXMgc3VwcG9ydGVkIGFuZCBnZXRF
eHRlbnNpb24gZmFpbGVkIC0tIHRoaXMgaXMgbGVnYWwiKTsKKyAgICAgICAgfQorICAgIH0KK30K
KworCitmdW5jdGlvbiBydW5UZXN0RGlzYWJsZWQoKSB7CisgICAgZGVidWcoIlRlc3RpbmcgYmlu
ZGluZyBlbnVtIHdpdGggZXh0ZW5zaW9uIGRpc2FibGVkIik7CisKKyAgICB2YXIgdGV4ID0gZ2wu
Y3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7
CisgICAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX0VOVU0sICdnbC50ZXhJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wu
REVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9TSE9SVCwgbnVsbCknKTsKKyAgICBzaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfRU5VTSwgJ2dsLnRleEltYWdlMkQoZ2wuVEVY
VFVSRV8yRCwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCAxLCAxLCAwLCBnbC5ERVBUSF9DT01QT05F
TlQsIGdsLlVOU0lHTkVEX0lOVCwgbnVsbCknKTsKK30KKworCitmdW5jdGlvbiBkdW1wSXQoZ2ws
IHJlcywgbXNnKSB7CisgIHJldHVybjsgIC8vIGNvbW1lbnQgb3V0IHRvIGRlYnVnCisgIGRlYnVn
KG1zZyk7CisgIHZhciBhY3R1YWxQaXhlbHMgPSBuZXcgVWludDhBcnJheShyZXMgKiByZXMgKiA0
KTsKKyAgZ2wucmVhZFBpeGVscygwLCAwLCByZXMsIHJlcywgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSwgYWN0dWFsUGl4ZWxzKTsKKworICBmb3IgKHZhciB5eSA9IDA7IHl5IDwgcmVzOyArK3l5
KSB7CisgICAgdmFyIHN0cnMgPSBbXTsKKyAgICBmb3IgKHZhciB4eCA9IDA7IHh4IDwgcmVzOyAr
K3h4KSB7CisgICAgICB2YXIgYWN0dWFsID0gKHl5ICogcmVzICsgeHgpICogNDsKKyAgICAgIHN0
cnMucHVzaCgiKCIgKyBhY3R1YWxQaXhlbHNbYWN0dWFsXSArICIsIiArIGFjdHVhbFBpeGVsc1th
Y3R1YWwrMV0gKyAiLCIgKyBhY3R1YWxQaXhlbHNbYWN0dWFsICsgMl0gKyAiLCIgKyBhY3R1YWxQ
aXhlbHNbYWN0dWFsICsgM10gKyAiKSIpOworICAgIH0KKyAgICBkZWJ1ZyhzdHJzLmpvaW4oIiAi
KSk7CisgIH0KK30KK2Z1bmN0aW9uIHJ1blRlc3RFeHRlbnNpb24oKSB7CisgICAgZGVidWcoIlRl
c3RpbmcgV0VCR0xfZGVwdGhfdGV4dHVyZSIpOworCisgICAgdmFyIHJlcyA9IDg7CisKKyAgICAv
LyBtYWtlIGNhbnZhcyBmb3IgdGVzdGluZy4KKyAgICBjYW52YXMyID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiY2FudmFzIik7CisgICAgY2FudmFzMi53aWR0aCA9IHJlczsKKyAgICBjYW52YXMy
LmhlaWdodCA9IHJlczsKKyAgICB2YXIgY3R4ID0gY2FudmFzMi5nZXRDb250ZXh0KCIyZCIpOwor
ICAgIGN0eC5maWxsU3R5bGUgPSAiYmx1ZSI7CisgICAgY3R4LmZpbGxSZWN0KDAsIDAsIGNhbnZh
czIud2lkdGgsIGNhbnZhczIuaGVpZ2h0KTsKKworICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVw
UHJvZ3JhbShnbCwgWyd2c2hhZGVyJywgJ2ZzaGFkZXInXSwgWydhX3Bvc2l0aW9uJ10pOworICAg
IGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2wudW5pZm9ybTJmKGdsLmdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtLCAidV9yZXNvbHV0aW9uIiksIHJlcywgcmVzKTsKKworICAgIHZhciBi
dWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JV
RkZFUiwgYnVmZmVyKTsKKyAgICBnbC5idWZmZXJEYXRhKAorICAgICAgICBnbC5BUlJBWV9CVUZG
RVIsCisgICAgICAgIG5ldyBGbG9hdDMyQXJyYXkoCisgICAgICAgICAgICBbICAgMSwgIDEsICAx
LAorICAgICAgICAgICAgICAgLTEsICAxLCAgMCwKKyAgICAgICAgICAgICAgIC0xLCAtMSwgLTEs
CisgICAgICAgICAgICAgICAgMSwgIDEsICAxLAorICAgICAgICAgICAgICAgLTEsIC0xLCAtMSwK
KyAgICAgICAgICAgICAgICAxLCAtMSwgIDAsCisgICAgICAgICAgICBdKSwKKyAgICAgICAgZ2wu
U1RBVElDX0RSQVcpOworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworICAgIGds
LnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKworICAg
IHZhciB0eXBlcyA9IFsKKyAgICAgICAge3R5cGU6ICdVTlNJR05FRF9TSE9SVCcsIGRhdGE6ICdu
ZXcgVWludDE2QXJyYXkoMSknIH0sCisgICAgICAgIHt0eXBlOiAnVU5TSUdORURfSU5UJywgICBk
YXRhOiAnbmV3IFVpbnQzMkFycmF5KDEpJyB9CisgICAgXTsKKworICAgIGZvciAodmFyIGlpID0g
MDsgaWkgPCB0eXBlcy5sZW5ndGg7ICsraWkpIHsKKyAgICAgICAgdmFyIHR5cGVJbmZvID0gdHlw
ZXNbaWldOworICAgICAgICB2YXIgdHlwZSA9IHR5cGVJbmZvLnR5cGU7CisKKyAgICAgICAgZGVi
dWcoIiIpOworICAgICAgICBkZWJ1ZygidGVzdGluZzogIiArIHR5cGUpOworCisgICAgICAgIC8v
IGNoZWNrIHRoYXQgY3ViZW1hcHMgYXJlIG5vdCBhbGxvd2VkLgorICAgICAgICB2YXIgY3ViZVRl
eCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVS
RV9DVUJFX01BUCwgY3ViZVRleCk7CisgICAgICAgIHZhciB0YXJnZXRzID0gWworICAgICAgICAg
ICdURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gnLAorICAgICAgICAgICdURVhUVVJFX0NVQkVf
TUFQX05FR0FUSVZFX1gnLAorICAgICAgICAgICdURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1kn
LAorICAgICAgICAgICdURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1knLAorICAgICAgICAgICdU
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1onLAorICAgICAgICAgICdURVhUVVJFX0NVQkVfTUFQ
X05FR0FUSVZFX1onCisgICAgICAgIF07CisgICAgICAgIGZvciAodmFyIHR0ID0gMDsgdHQgPCB0
YXJnZXRzLmxlbmd0aDsgKyt0dCkgeworICAgICAgICAgICAgc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgJ2dsLnRleEltYWdlMkQoZ2wuJyArIHRhcmdldHNb
aWldICsgJywgMSwgZ2wuREVQVEhfQ09NUE9ORU5ULCAxLCAxLCAwLCBnbC5ERVBUSF9DT01QT05F
TlQsIGdsLicgKyB0eXBlICsgJywgbnVsbCknKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGNo
ZWNrIDJkIHRleHR1cmVzLgorICAgICAgICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOwor
ICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICAgICAgICBnbC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9U
T19FREdFKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhU
VVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIpOworICAgICAg
ICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwg
Z2wuTElORUFSKTsKKworICAgICAgICAvLyB0ZXN0IGxldmVsID4gMAorICAgICAgICBzaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAnZ2wudGV4SW1hZ2UyRChn
bC5URVhUVVJFXzJELCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NP
TVBPTkVOVCwgZ2wuJyArIHR5cGUgKyAnLCBudWxsKScpOworCisgICAgICAgIC8vIHRlc3Qgd2l0
aCBkYXRhCisgICAgICAgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVS
QVRJT04sICdnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLkRFUFRIX0NPTVBPTkVO
VCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC4nICsgdHlwZSArICcsICcgKyB0eXBl
SW5mby5kYXRhICsgJyknKTsKKworICAgICAgICAvLyB0ZXN0IHdpdGggY2FudmFzCisgICAgICAg
IHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgW2dsLklOVkFMSURfVkFMVUUsIGdsLklOVkFMSURf
RU5VTSwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dLCAnZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJE
LCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuJyArIHR5cGUg
ICsgJywgY2FudmFzMiknKTsKKworICAgICAgICAvLyB0ZXN0IGNvcHlUZXhJbWFnZTJECisgICAg
ICAgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgW2dsLklOVkFMSURfRU5VTSwgZ2wuSU5WQUxJ
RF9PUEVSQVRJT05dLCAnZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuREVQ
VEhfQ09NUE9ORU5ULCAwLCAwLCAxLCAxLCAwKScpOworCisgICAgICAgIC8vIHRlc3QgcmVhbCB0
aGluZworICAgICAgICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLk5PX0VSUk9SLCAnZ2wu
dGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5ERVBUSF9DT01QT05FTlQsICcgKyByZXMg
KyAnLCAnICsgcmVzICsgJywgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC4nICsgdHlwZSArICcs
IG51bGwpJyk7CisKKyAgICAgICAgLy8gdGVzdCB0ZXhTdWJJbWFnZTJECisgICAgICAgIHNob3Vs
ZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICdnbC50ZXhTdWJJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wu
JyArIHR5cGUgICsgJywgJyArIHR5cGVJbmZvLmRhdGEgKyAnKScpOworCisgICAgICAgIC8vIHRl
c3QgY29weVRleFN1YkltYWdlMkQKKyAgICAgICAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBn
bC5JTlZBTElEX09QRVJBVElPTiwgJ2dsLmNvcHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIDAsIDAsIDAsIDAsIDEsIDEpJyk7CisKKyAgICAgICAgLy8gdGVzdCBnZW5lcmF0ZU1pcG1h
cAorICAgICAgICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9O
LCAnZ2wuZ2VuZXJhdGVNaXBtYXAoZ2wuVEVYVFVSRV8yRCknKTsKKworICAgICAgICB2YXIgZmJv
ID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCBmYm8pOworICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5G
UkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wuVEVYVFVSRV8yRCwgdGV4LCAwKTsK
KyAgICAgICAgLy9pZiAoZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikg
IT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIHRy
eSBhZGRpbmcgYSBjb2xvciBidWZmZXIuCisgICAgICAgICAgICB2YXIgY29sb3JUZXggPSBnbC5j
cmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJE
LCBjb2xvclRleCk7CisgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQs
IGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAgIGdsLnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RP
X0VER0UpOworICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5U
RVhUVVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUik7CisgICAgICAgICAgICBnbC50ZXhQYXJhbWV0
ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAg
ICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgcmVzLCBy
ZXMsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgICAgICAgICAgZ2wu
ZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQw
LCBnbC5URVhUVVJFXzJELCBjb2xvclRleCwgMCk7CisgICAgICAgICAgICBzaG91bGRCZSgnZ2wu
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUiknLCAnZ2wuRlJBTUVCVUZGRVJf
Q09NUExFVEUnKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHVzZSB0aGUgZGVmYXVsdCB0ZXh0
dXJlIHRvIHJlbmRlciB3aXRoIHdoaWxlIHdlIHJldHVybiB0byB0aGUgZGVwdGggdGV4dHVyZS4K
KyAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7CisKKyAgICAgICAg
Ly8gcmVuZGVyIHRoZSB6LXF1YWQKKyAgICAgICAgZ2wuZW5hYmxlKGdsLkRFUFRIX1RFU1QpOwor
ICAgICAgICBnbC5jbGVhckNvbG9yKDEsIDAsIDAsIDEpOworICAgICAgICBnbC5jbGVhcihnbC5D
T0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisgICAgICAgIGdsLmRyYXdB
cnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKKworICAgICAgICBkdW1wSXQoZ2wsIHJlcywgIi0t
Zmlyc3QtLSIpOworCisgICAgICAgIC8vIHJlbmRlciB0aGUgZGVwdGggdGV4dHVyZS4KKyAgICAg
ICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTsKKyAgICAgICAgZ2wu
YmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigw
LCAwLCAxLCAxKTsKKyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRF
UFRIX0JVRkZFUl9CSVQpOworICAgICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwg
Nik7CisKKyAgICAgICAgdmFyIGFjdHVhbFBpeGVscyA9IG5ldyBVaW50OEFycmF5KHJlcyAqIHJl
cyAqIDQpOworICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHJlcywgcmVzLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCBhY3R1YWxQaXhlbHMpOworCisgICAgICAgIGR1bXBJdChnbCwgcmVz
LCAiLS1kZXB0aC0tIik7CisKKyAgICAgICAgLy8gQ2hlY2sgdGhhdCBlYWNoIHBpeGVsJ3MgUkdC
IGFyZSB0aGUgc2FtZSBhbmQgdGhhdCBpdCdzIHZhbHVlIGlzIGxlc3MKKyAgICAgICAgLy8gdGhh
biB0aGUgcHJldmlvdXMgcGl4ZWwgaW4gZWl0aGVyIGRpcmVjdGlvbi4gQmFzaWNhbGx5IHZlcmlm
eSB3ZSBoYXZlIGEKKyAgICAgICAgLy8gZ3JhZGllbnQuCisgICAgICAgIHZhciBzdWNjZXNzID0g
dHJ1ZTsKKyAgICAgICAgZm9yICh2YXIgeXkgPSAwOyB5eSA8IHJlczsgKyt5eSkgeworICAgICAg
ICAgIGZvciAodmFyIHh4ID0gMDsgeHggPCByZXM7ICsreHgpIHsKKyAgICAgICAgICAgIHZhciBh
Y3R1YWwgPSAoeXkgKiByZXMgKyB4eCkgKiA0OworICAgICAgICAgICAgdmFyIGxlZnQgPSBhY3R1
YWwgLSA0OworICAgICAgICAgICAgdmFyIGRvd24gPSBhY3R1YWwgLSByZXMgKiA0OworCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUGl4ZWxzW2FjdHVhbCArIDBdICE9IGFjdHVhbFBpeGVsc1thY3R1
YWwgKyAxXSkgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1IgIT0gRycpOworICAgICAg
ICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQaXhlbHNbYWN0dWFsICsgMF0gIT0gYWN0dWFsUGl4ZWxzW2FjdHVhbCArIDJdKSB7
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnUiAhPSBCJyk7CisgICAgICAgICAgICAgICAg
c3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGFjdHVhbFBp
eGVsc1thY3R1YWwgKyAzXSAhPSAweEZGKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgn
QSAhPSAyNTUnKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmICh4eCA+IDApIHsKKyAgICAgICAgICAgICAgaWYgKGFjdHVh
bFBpeGVsc1thY3R1YWxdIDw9IGFjdHVhbFBpeGVsc1tsZWZ0XSkgeworICAgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiYWN0dWFsKCIgKyBhY3R1YWxQaXhlbHNbYWN0dWFsXSArICIpIDwgbGVm
dCgiICsgYWN0dWFsUGl4ZWxzW2xlZnRdICsgIikiKTsKKyAgICAgICAgICAgICAgICAgIHN1Y2Nl
c3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKHl5ID4gMCkgeworICAgICAgICAgICAgICAgIGlmIChhY3R1YWxQaXhlbHNbYWN0dWFsXSA8
PSBhY3R1YWxQaXhlbHNbZG93bl0pIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
YWN0dWFsKCIgKyBhY3R1YWxQaXhlbHNbYWN0dWFsXSArICIpIDwgZG93bigiICsgYWN0dWFsUGl4
ZWxzW2Rvd25dICsgIikiKTsKKyAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICAvLyBDaGVjayB0aGF0IGJvdHRvbSBsZWZ0IGNvcm5lciBpcyB2YXN0bHkgZGlm
ZmVyZW50IHRoYXRuIHRvcCByaWdodC4KKyAgICAgICAgaWYgKGFjdHVhbFBpeGVsc1socmVzICog
cmVzIC0gMSkgKiA0XSAtIGFjdHVhbFBpeGVsc1swXSA8IDB4QzApIHsKKyAgICAgICAgICAgIHRl
c3RGYWlsZWQoImNvcm5lcnMgYXJlIG5vdCBkaWZmZXJlbnQgZW5vdWdoIik7CisgICAgICAgICAg
ICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3VjY2Vzcykgewor
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGVwdGggdGV4dHVyZSByZW5kZXJlZCBjb3JyZWN0bHku
Iik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2RlYnVnKCIiKTsKK3N1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CitpZiAod2luZG93Lm5vbktocm9ub3NGcmFtZXdvcmtOb3RpZnlEb25lKSB7Cisg
ICAgd2luZG93Lm5vbktocm9ub3NGcmFtZXdvcmtOb3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148156</attachid>
            <date>2012-06-18 13:14:37 -0700</date>
            <delta_ts>2012-06-18 18:48:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87029-20120618131437.patch</filename>
            <type>text/plain</type>
            <size>64198</size>
            <attacher name="Gregg Tavares">gman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZkNTQ1MjY5MmVlNTQ5
M2U3ZWU0ZTJlZDkyYzIwZTJkNWRiYzhhZC4uNTBmNWFmZTU0MTJjM2NlY2I4MzcxZjM3MzhkZDA1
ZjUyM2I3ZGRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTA2LTEzICBHcmVn
ZyBUYXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBXRUJHTF9kZXB0
aF90ZXh0dXJlIGV4dGVuc2lvbiB0byBXZWJHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcwMjkKKyAgICAgICAgCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL3dlYmdsL3dlYmds
LWRlcHRoLXRleHR1cmUuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4T2JqZWN0KToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmguCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpXZWJHTERlcHRo
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6fldlYkdMRGVw
dGhUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpnZXROYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViR0xEZXB0aFRleHR1cmUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhU
ZXh0dXJlLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xF
eHRlbnNpb24uaC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6aW5pdGlhbGl6ZUF0dGFjaG1lbnRzKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlU2V0dGFi
bGVUZXhGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpj
b3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmNvcHlUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyREJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyREJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4RnVuY1Bh
cmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxp
ZGF0ZVRleEZ1bmNEYXRhKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViR0xSZW5kZXJpbmdDb250
ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q2xlYXJCaXRzQnlBdHRh
Y2htZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRDbGVhckJpdHNCeUZvcm1hdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKwogMjAxMi0wNi0xOCAgTWlrZSBXZXN0ICA8
bWt3c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENyYXNoIGluIENTUFNvdXJjZTo6cGFyc2VT
b3VyY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWFkODViYjk0MjI1MDRkYzMyY2Q2ZDFmZjg4
ZjM0NjgzYWVkNDZmYS4uYzk3MWQzMDYyNzRmZWE5MjAyOGUxYjA1NmI0ZjMxZDNiNGRiYTljOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIzNDYsNiArMjM0Niw3IEBAIElGIChFTkFCTEVfV0VC
R0wpCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5jcHAKICAgICAgICAg
aHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5jcHAKICAgICAgICAgaHRtbC9jYW52
YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCisgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhU
ZXh0dXJlLmNwcAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcAogICAg
ICAgICBodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL1dl
YkdMTG9zZUNvbnRleHQuY3BwCkBAIC0yMzgwLDYgKzIzODEsNyBAQCBJRiAoRU5BQkxFX1dFQkdM
KQogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5pZGwKICAgICAgICAgaHRt
bC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5pZGwKICAgICAgICAgaHRtbC9jYW52YXMv
V2ViR0xEZWJ1Z1NoYWRlcnMuaWRsCisgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0
dXJlLmlkbAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmlkbAogICAgICAg
ICBodG1sL2NhbnZhcy9XZWJHTExvc2VDb250ZXh0LmlkbAogICAgICAgICBodG1sL2NhbnZhcy9X
ZWJHTFByb2dyYW0uaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkNTU0MTRm
YzQ0YWRhM2I5NzJmNzhhNWQ3OTNiMjI5NmQwMTI5NmMwLi4zNTg5YzBiOWRlNjg5NDY1MjU3MTc1
MDk2ZjVjOTEwYzYyYzdmNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTM3
MSw2ICszNzEsNyBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZh
cy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9j
YW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9j
YW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFz
L1dlYkdMRGVwdGhUZXh0dXJlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTExvc2VD
b250ZXh0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaWRs
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaSBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCA3YjczZTllN2RmNjU1MzkyOTdmZTk5
ZjBmOTgwMmJiOWExNzcwM2FhLi45YjU0YzdlNDNhNTUxN2MzNDM0NmM2ZWEyM2FkZjNhNmY4MzAx
MDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKKysrIGIv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCkBAIC0yOTYsNiArMjk2LDcgQEAgSURM
X0JJTkRJTkdTICs9IFwKICAgICAkJFBXRC9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5p
ZGwgXAogICAgICQkUFdEL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaWRsIFwK
ICAgICAkJFBXRC9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5pZGwgXAorICAgICQkUFdE
L2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmlkbCBcCiAgICAgJCRQV0QvaHRtbC9jYW52
YXMvV2ViR0xGcmFtZWJ1ZmZlci5pZGwgXAogICAgICQkUFdEL2h0bWwvY2FudmFzL1dlYkdMTG9z
ZUNvbnRleHQuaWRsIFwKICAgICAkJFBXRC9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaWRsIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDM3YjdlNWFjMjk5N2VhMzE2MWU5NGFj
ODY0NjFhNmNlNjc2NWIzNDAuLjQ0Y2JlNTEyZGYzNGUzODE0MGZhNmNhYzNhMTViOTRhNTE0MTM1
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTc0LDYgKzU3NCw4IEBAIHdl
YmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdM
Q29udGV4dEF0dHJpYnV0ZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMQ29u
dGV4dEV2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMQ29udGV4dEV2
ZW50LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTERlcHRoVGV4dHVyZS5jcHAg
XAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTERlcHRoVGV4dHVyZS5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xGcmFtZWJ1ZmZlci5jcHAgXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJHTEZyYW1lYnVmZmVyLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXZWJHTExvc2VDb250ZXh0LmNwcCBcCkBAIC05MTQsNiArOTE2LDcgQEAgZG9tX2JpbmRp
bmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQy5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmli
dXRlcy5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaWRs
IFwKKwkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmlkbCBcCiAJJChX
ZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmlkbCBcCiAJJChXZWJDb3JlKS9o
dG1sL2NhbnZhcy9XZWJHTExvc2VDb250ZXh0LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL2NhbnZh
cy9XZWJHTFByb2dyYW0uaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDY5YmFhOTI5ZmQ2NzJjOTI2MTY0
OGY4YjIyMGY1N2JjZTY3ZDNmZDEuLjhiNmRiNGEyZTcyZWY2MGE4YmMzMjc1NTVmMzU1YmQ0MTA1
M2U2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMzg1NCw2ICszODU0LDcgQEAgY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2Jq
ZWN0LmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmggXAog
ICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5oIFwKKyAgICAgICAgaHRtbC9j
YW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRXh0
ZW5zaW9uLmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmggXAogICAg
ICAgICBodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaCBcCkBAIC0zODk2LDYgKzM4OTcsNyBAQCBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9MSkgewogICAgICAgICBodG1sL2NhbnZhcy9X
ZWJHTENvbnRleHRPYmplY3QuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1Jl
bmRlcmVySW5mby5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5j
cHAgXAorICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAgXAogICAgICAg
ICBodG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9X
ZWJHTEZyYW1lYnVmZmVyLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGUxODM0NTcyNzM3YjA2NThkNjY3NDlmYTMwYzRjNjU5
MWE5NWFmMjcuLjBjMmU4ZTNlMTA5NmQ2NzY5MzYwNjhhYzdmMDFhNmI3M2VjNjkwOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTExMTYsNiArMTExNiw3IEBACiAgICAgICAgICAgICAnaHRtbC9jYW52
YXMvV2ViR0xDb250ZXh0RXZlbnQuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJH
TERlYnVnUmVuZGVyZXJJbmZvLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xE
ZWJ1Z1NoYWRlcnMuaWRsJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4
dHVyZS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaWRs
JywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTExvc2VDb250ZXh0LmlkbCcsCiAgICAg
ICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmlkbCcsCkBAIC01NzY1LDYgKzU3NjYs
OCBAQAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaCcs
CiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwJywKICAgICAg
ICAgICAgICdodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5oJywKKyAgICAgICAgICAgICdo
dG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvY2Fu
dmFzL1dlYkdMRGVwdGhUZXh0dXJlLmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdM
RXh0ZW5zaW9uLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24u
aCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAnLApAQCAt
ODIyMyw2ICs4MjI2LDggQEAKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCcsCiAgICAgICAgICAg
ICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMQ29udGV4dEF0
dHJpYnV0ZXMuY3BwJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oJywKKyAgICAgICAgICAgICc8KFBS
T0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xEZXB0aFRleHR1cmUuY3Bw
JywKKyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViR0xEZXB0aFRleHR1cmUuaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMRnJhbWVidWZmZXIuY3BwJywKICAgICAgICAgICAgICc8
KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xGcmFtZWJ1ZmZlci5o
JywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViR0xMb3NlQ29udGV4dC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmOGQ1YTg2MjViODc3MmRhMjhmNmNkZTBjMjgy
ZGE4ZjE0MmZkZmMuLmViYjMzNWRkNTBiYzQ5M2E1YmM5OWY1M2Q5ODQ0YWYyOGU2YWVlYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE3ODAsNiArMTc4MCwxMCBAQAogCQk2RTNGQUQzOTE0NzMzRjQwMDBFNDIzMDYgLyogSlNX
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkUzRkFEMzcxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEMuaCAqLzsgfTsKIAkJNkUzRkFFOEUxNDczM0ZEQjAwRTQyMzA2IC8q
IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRThDMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgKi87IH07CiAJCTZFM0ZBRThGMTQ3MzNGREIwMEU0MjMw
NiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFFOEQxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDLmggKi87IH07CisJCTZFM0ZBRDM4MTQ3MzNGNDAwMEU0MjMw
NyAvKiBKU1dlYkdMRGVwdGhUZXh0dXJlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNyAvKiBKU1dlYkdMRGVw
dGhUZXh0dXJlLmNwcCAqLzsgfTsKKwkJNkUzRkFEMzkxNDczM0Y0MDAwRTQyMzA3IC8qIEpTV2Vi
R0xEZXB0aFRleHR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZFM0ZBRDM3MTQ3MzNGNDAwMEU0MjMwNyAvKiBKU1dlYkdMRGVwdGhUZXh0dXJlLmgg
Ki87IH07CisJCTZFM0ZBRThFMTQ3MzNGREIwMEU0MjMwNyAvKiBXZWJHTERlcHRoVGV4dHVyZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUU4
QzE0NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1cmUuY3BwICovOyB9OworCQk2RTNG
QUU4RjE0NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1cmUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRThEMTQ3MzNGREIwMEU0MjMw
NyAvKiBXZWJHTERlcHRoVGV4dHVyZS5oICovOyB9OwogCQk2RTQ3RTY2MDEwQjc5NDRCMDBCMTg2
QzggLyogV2ViR0xHZXRJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZFNDdFNjVFMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3Bw
ICovOyB9OwogCQk2RTQ3RTY2MTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEwQjc5
NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmggKi87IH07CiAJCTZFNEFCQ0Q0MTM4RUEwQjcw
MDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRBQkNEMjEzOEVBMEI3MDA3MUQyOTEgLyogSlNI
VE1MVW5rbm93bkVsZW1lbnQuY3BwICovOyB9OwpAQCAtODg1Niw2ICs4ODYwLDExIEBACiAJCTZF
M0ZBRThDMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQy5jcHA7IHBhdGggPSBjYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTNGQUU4RDE0NzMzRkRCMDBFNDIzMDYg
LyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaDsgcGF0aCA9IGNhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
RTNGQUU5MDE0NzMzRkVBMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlkbDsg
cGF0aCA9IGNhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNyAvKiBKU1dlYkdMRGVw
dGhUZXh0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xEZXB0aFRleHR1cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTNGQUQz
NzE0NzMzRjQwMDBFNDIzMDcgLyogSlNXZWJHTERlcHRoVGV4dHVyZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMRGVwdGhUZXh0dXJlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTZFM0ZBRThDMTQ3MzNGREIwMEU0MjMwNyAvKiBXZWJHTERlcHRoVGV4
dHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJHTERlcHRo
VGV4dHVyZS5jcHA7IHBhdGggPSBjYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk2RTNGQUU4RDE0NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xE
ZXB0aFRleHR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViR0xEZXB0
aFRleHR1cmUuaDsgcGF0aCA9IGNhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk2RTNGQUU5MDE0NzMzRkVBMDBFNDIzMDcgLyogV2ViR0xEZXB0
aFRleHR1cmUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdlYkdMRGVwdGhUZXh0dXJlLmlk
bDsgcGF0aCA9IGNhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTZFNDdFNjVFMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xHZXRJbmZvLmNwcDsg
cGF0aCA9IGNhbnZhcy9XZWJHTEdldEluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMR2V0SW5mby5oOyBwYXRoID0gY2FudmFzL1dl
YkdMR2V0SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTRBQkNEMjEzOEVB
MEI3MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MVW5rbm93bkVsZW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTQ4OTMsNiArMTQ5MDIsOSBAQAogCQkJCUEwRUUwREYzMTQ0
RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnU2hhZGVycy5jcHAgKi8sCiAJCQkJQTBFRTBERjQx
NDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmggKi8sCiAJCQkJQTBFRTBERUYx
NDRGODIzMjAwRjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmlkbCAqLywKKwkJCQk2RTNGQUU4
QzE0NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1cmUuY3BwICovLAorCQkJCTZFM0ZB
RThEMTQ3MzNGREIwMEU0MjMwNyAvKiBXZWJHTERlcHRoVGV4dHVyZS5oICovLAorCQkJCTZFM0ZB
RTkwMTQ3MzNGRUEwMEU0MjMwNyAvKiBXZWJHTERlcHRoVGV4dHVyZS5pZGwgKi8sCiAJCQkJNkVC
RjBFNTIxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmNwcCAqLywKIAkJCQk2RUJG
MEU1MzEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uaCAqLywKIAkJCQk0OUM3QjlB
RTEwNDJEMzJFMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5jcHAgKi8sCkBAIC0xODE3Niw2
ICsxODE4OCw4IEBACiAJCQkJNkVFOEE3NzExMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xDb250
ZXh0QXR0cmlidXRlcy5oICovLAogCQkJCUJDMkNCRjdBMTQwRjFENTgwMDM4NzlCRSAvKiBKU1dl
YkdMQ29udGV4dEV2ZW50LmNwcCAqLywKIAkJCQlCQzJDQkY0QjE0MEYxQTY1MDAzODc5QkUgLyog
SlNXZWJHTENvbnRleHRFdmVudC5oICovLAorCQkJCTZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNyAv
KiBKU1dlYkdMRGVwdGhUZXh0dXJlLmNwcCAqLywKKwkJCQk2RTNGQUQzNzE0NzMzRjQwMDBFNDIz
MDcgLyogSlNXZWJHTERlcHRoVGV4dHVyZS5oICovLAogCQkJCTQ5QzdCOTg0MTA0MkQyRDMwMDA5
RDQ0NyAvKiBKU1dlYkdMRnJhbWVidWZmZXIuY3BwICovLAogCQkJCTQ5QzdCOTg1MTA0MkQyRDMw
MDA5RDQ0NyAvKiBKU1dlYkdMRnJhbWVidWZmZXIuaCAqLywKIAkJCQk5M0YxRDVCRTEyRDUzMzU2
MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmNwcCAqLywKQEAgLTIzODY5LDYgKzIzODgz
LDcgQEAKIAkJCQk2RTNGQUQzOTE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVFOEE3NzMxMEY4MDNGMzAwNUE0QTI0
IC8qIEpTV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyQ0JG
NEUxNDBGMUFCRDAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTZFM0ZBRDM5MTQ3MzNGNDAwMEU0MjMwNyAvKiBKU1dlYkdMRGVwdGhUZXh0dXJlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OUM3Qjk5ODEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEZy
YW1lYnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxRDVDMTEyRDUzMzU2MDA4MzJCRUMg
LyogSlNXZWJHTExvc2VDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3Qjk5QzEwNDJE
MkQzMDAwOUQ0NDcgLyogSlNXZWJHTFByb2dyYW0uaCBpbiBIZWFkZXJzICovLApAQCAtMjQ5NDks
NiArMjQ5NjQsNyBAQAogCQkJCTAxRDNDRjg1MTRCRDBBMzAwMEZFOTk3MCAvKiBXZWJHTENvbnRl
eHRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUEwRUUwREY2MTQ0RjgyNTUwMEY4MEIwRCAv
KiBXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMEVFMERGODE0
NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1NoYWRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTZFM0ZBRThGMTQ3MzNGREIwMEU0MjMwNyAvKiBXZWJHTERlcHRoVGV4dHVyZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNkVCRjBFNTUxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlDRjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xGcmFt
ZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8q
IFdlYkdMR2V0SW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzExMCw2ICsyNzEyNiw3IEBACiAJ
CQkJNkUzRkFEMzgxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkVFOEE3NzIxMEY4MDNGMzAwNUE0QTI0IC8qIEpT
V2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzJDQkY3QjE0
MEYxRDU4MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk2RTNGQUQzODE0NzMzRjQwMDBFNDIzMDcgLyogSlNXZWJHTERlcHRoVGV4dHVyZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0OUM3Qjk5NzEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEZy
YW1lYnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjFENUMwMTJENTMzNTYwMDgzMkJF
QyAvKiBKU1dlYkdMTG9zZUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlDN0I5OUIx
MDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xQcm9ncmFtLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MjgwMDMsNiArMjgwMjAsNyBAQAogCQkJCTAxRDNDRjg0MTRCRDBBMzAwMEZFOTk3MCAvKiBXZWJH
TENvbnRleHRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTBFRTBERjUxNDRGODI1NTAw
RjgwQjBEIC8qIFdlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTBFRTBERjcxNDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTZFM0ZBRThFMTQ3MzNGREIwMEU0MjMwNyAvKiBXZWJHTERlcHRoVGV4dHVy
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2RUJGMEU1NDEyQTg5Mjk4MDBEQjE3MDkgLyogV2Vi
R0xFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlDN0I5Q0UxMDQyRDMyRjAwMDlE
NDQ3IC8qIFdlYkdMRnJhbWVidWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkU0N0U2NjAx
MEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcAppbmRleCBkNmNmNGFkMmY4OGIzN2YwMWZhODM2YmVmZGMyNDMwN2Nk
M2JjNzAzLi5kNmExNzFmYjk0OTgyYjNhNzY4YzVmNDc2NDNmMzNkNjBmMDkxMDQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmlu
Z0NvbnRleHRDdXN0b20uY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiSlNVaW50OEFy
cmF5LmgiCiAjaW5jbHVkZSAiSlNXZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEMuaCIKKyNpbmNsdWRlICJKU1dlYkdMRGVwdGhUZXh0dXJlLmgiCiAj
aW5jbHVkZSAiSlNXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNXZWJHTExvc2VDb250
ZXh0LmgiCiAjaW5jbHVkZSAiSlNXZWJHTFByb2dyYW0uaCIKQEAgLTYzLDYgKzY0LDcgQEAKICNp
bmNsdWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIgogI2luY2x1ZGUgIldlYkdMRGVi
dWdSZW5kZXJlckluZm8uaCIKICNpbmNsdWRlICJXZWJHTERlYnVnU2hhZGVycy5oIgorI2luY2x1
ZGUgIldlYkdMRGVwdGhUZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2ViR0xFeHRlbnNpb24uaCIKICNp
bmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xHZXRJbmZvLmgiCkBA
IC0yMDQsNiArMjA2LDggQEAgc3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdlYkdMRXh0ZW4KICAgICAgICAgcmV0dXJu
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxXZWJHTERlYnVnU2hhZGVycyo+
KGV4dGVuc2lvbikpOwogICAgIGNhc2UgV2ViR0xFeHRlbnNpb246OldlYktpdFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDTmFtZToKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBzdGF0aWNfY2FzdDxXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyo+KGV4dGVuc2lvbikp
OworICAgIGNhc2UgV2ViR0xFeHRlbnNpb246OldlYktpdFdlYkdMRGVwdGhUZXh0dXJlTmFtZToK
KyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxXZWJH
TERlcHRoVGV4dHVyZSo+KGV4dGVuc2lvbikpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4ganNOdWxsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcAppbmRleCA4NTI3YmMyMWI4ODZlNmUwYzFiNWI0MTgzZDk2NGU5MDRjYTVhYjczLi41
MDU5ZGRmMGE1NDZhODIwNDIxMWM1ODJiNWE5Yzk4YTUzMzZlOWFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJWOFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgiCiAjaW5jbHVkZSAiVjhXZWJHTERlYnVnUmVuZGVy
ZXJJbmZvLmgiCiAjaW5jbHVkZSAiVjhXZWJHTERlYnVnU2hhZGVycy5oIgorI2luY2x1ZGUgIlY4
V2ViR0xEZXB0aFRleHR1cmUuaCIKICNpbmNsdWRlICJWOFdlYkdMRnJhbWVidWZmZXIuaCIKICNp
bmNsdWRlICJWOFdlYkdMTG9zZUNvbnRleHQuaCIKICNpbmNsdWRlICJWOFdlYkdMUHJvZ3JhbS5o
IgpAQCAtMjA0LDYgKzIwNSwxMCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhP
YmplY3QoV2ViR0xFeHRlbnNpb24qIGV4dGVuc2lvbiwgdjg6OkhhbmRsZTx2OAogICAgICAgICBl
eHRlbnNpb25PYmplY3QgPSB0b1Y4KHN0YXRpY19jYXN0PFdlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDKj4oZXh0ZW5zaW9uKSwgaXNvbGF0ZSk7CiAgICAgICAgIHJlZmVyZW5jZU5hbWUgPSAid2Vi
S2l0V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENOYW1lIjsKICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBXZWJHTEV4dGVuc2lvbjo6V2ViS2l0V2ViR0xEZXB0aFRleHR1cmVOYW1lOgorICAgICAg
ICBleHRlbnNpb25PYmplY3QgPSB0b1Y4KHN0YXRpY19jYXN0PFdlYkdMRGVwdGhUZXh0dXJlKj4o
ZXh0ZW5zaW9uKSwgaXNvbGF0ZSk7CisgICAgICAgIHJlZmVyZW5jZU5hbWUgPSAid2ViS2l0V2Vi
R0xEZXB0aFRleHR1cmVOYW1lIjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVCgh
ZXh0ZW5zaW9uT2JqZWN0LklzRW1wdHkoKSk7CiAgICAgVjhET01XcmFwcGVyOjpzZXROYW1lZEhp
ZGRlblJlZmVyZW5jZShjb250ZXh0T2JqZWN0LCByZWZlcmVuY2VOYW1lLCBleHRlbnNpb25PYmpl
Y3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRl
eHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNhY2Y0NmExYjg1MGZjYWMwOGFiNjJjZDA4ZTZhMzM2MDZkOGRkN2YK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRo
VGV4dHVyZS5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIldlYkdMRGVwdGhUZXh0dXJlLmgiCisK
KyNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXZWJH
TERlcHRoVGV4dHVyZTo6V2ViR0xEZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0KQorICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKK3sKK30KKworV2ViR0xEZXB0
aFRleHR1cmU6On5XZWJHTERlcHRoVGV4dHVyZSgpCit7Cit9CisKK1dlYkdMRXh0ZW5zaW9uOjpF
eHRlbnNpb25OYW1lIFdlYkdMRGVwdGhUZXh0dXJlOjpnZXROYW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gV2ViS2l0V2ViR0xEZXB0aFRleHR1cmVOYW1lOworfQorCitQYXNzT3duUHRyPFdlYkdM
RGVwdGhUZXh0dXJlPiBXZWJHTERlcHRoVGV4dHVyZTo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkdMRGVwdGhUZXh0
dXJlKGNvbnRleHQpKTsKK30KKworYm9vbCBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQoreworICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9u
cyA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9ucy0+c3Vw
cG9ydHMoIkdMX0NIUk9NSVVNX2RlcHRoX3RleHR1cmUiKQorICAgICAgICB8fCBleHRlbnNpb25z
LT5zdXBwb3J0cygiR0xfT0VTX2RlcHRoX3RleHR1cmUiKQorICAgICAgICB8fCBleHRlbnNpb25z
LT5zdXBwb3J0cygiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFjNmFhYmZmNGRmZTA5
NGNlNmI1MTE3ODNiOTdiNGNmYTkyNDU0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmgKQEAgLTAsMCArMSw0OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViR0xEZXB0aFRleHR1cmVfaAorI2RlZmluZSBXZWJHTERlcHRoVGV4dHVy
ZV9oCisKKyNpbmNsdWRlICJXZWJHTEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViR0xEZXB0aFRleHR1cmUg
OiBwdWJsaWMgV2ViR0xFeHRlbnNpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRy
PFdlYkdMRGVwdGhUZXh0dXJlPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CisKKyAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0M0QqKTsKKworICAgIHZpcnR1
YWwgfldlYkdMRGVwdGhUZXh0dXJlKCk7CisgICAgdmlydHVhbCBFeHRlbnNpb25OYW1lIGdldE5h
bWUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBXZWJHTERlcHRoVGV4dHVyZShXZWJHTFJlbmRl
cmluZ0NvbnRleHQqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IFdlYkdMRGVwdGhUZXh0dXJlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMRGVwdGhUZXh0dXJlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRGVwdGhUZXh0dXJlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDc0NTBkMThiYmIxOWY1YjM0OGJhZGFi
YmMyYmQ3NjdjOTZmNmM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaWRsCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1
bGUgaHRtbCB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCisg
ICAgICAgIEpTR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsQ29udGV4dCwKKyAgICAgICAgT21pdENv
bnN0cnVjdG9yCisgICAgXSBXZWJHTERlcHRoVGV4dHVyZSB7CisgICAgfTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCmluZGV4IGE0ZDM5NzAyOTdiMmQ5
Zjk3YWQ2MmM3MzhjNGFjOGUyMTA4ZWJmOGUuLmM2NmE2MDg2MWMxN2FmZWQ5ODA3MzU0YzE5Yjdm
YzYwYjJhNzc1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNp
b24uaApAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIFdlYkdMRGVidWdSZW5kZXJl
ckluZm9OYW1lLAogICAgICAgICBXZWJHTERlYnVnU2hhZGVyc05hbWUsCiAgICAgICAgIFdlYktp
dFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDTmFtZSwgLy8gV0VCS0lUXyBwcmVmaXggdW50aWwg
ZXh0ZW5zaW9uIGlzIG9mZmljaWFsCisgICAgICAgIFdlYktpdFdlYkdMRGVwdGhUZXh0dXJlTmFt
ZSwgLy8gV0VCS0lUXyBwcmVmaXggdW50aWwgZXh0ZW5zaW9uIGlzIG9mZmljaWFsCiAgICAgfTsK
IAogICAgIHZvaWQgcmVmKCkgeyBtX2NvbnRleHQtPnJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA4NDg0
ZDlhMWEwMGRkMDJmZGY2OTM1ZDA0ZDcwNzQ3ZTVkZTk2NTdhLi4wZmFjNDZmNTYzNmQ3N2U2ZjU0
M2NkYjdmMzc2ZDk4ODdjNjQyMzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNs
dWRlICJXZWJHTENvbnRleHRHcm91cC5oIgogI2luY2x1ZGUgIldlYkdMRGVidWdSZW5kZXJlcklu
Zm8uaCIKICNpbmNsdWRlICJXZWJHTERlYnVnU2hhZGVycy5oIgorI2luY2x1ZGUgIldlYkdMRGVw
dGhUZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2ViR0xGcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgIldl
YkdMTG9zZUNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKQEAgLTgxLDcgKzgy
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgZG91YmxlIHNlY29uZHNCZXR3ZWVu
UmVzdG9yZUF0dGVtcHRzID0gMS4wOwotY29uc3QgaW50IG1heEdMRXJyb3JzQWxsb3dlZFRvQ29u
c29sZSA9IDEwOworY29uc3QgaW50IG1heEdMRXJyb3JzQWxsb3dlZFRvQ29uc29sZSA9IDI1NjsK
IAogbmFtZXNwYWNlIHsKIApAQCAtMTMyMCwxMiArMTMyMSwyMyBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
aW50IGxldgogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKK2Jvb2wg
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVNldHRhYmxlVGV4Rm9ybWF0KGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gZm9ybWF0KQoreworICAgIGlmIChHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0Q2xlYXJCaXRzQnlGb3JtYXQoZm9ybWF0KSAmIChHcmFwaGljc0NvbnRleHQz
RDo6REVQVEhfQlVGRkVSX0JJVCB8IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JVRkZFUl9C
SVQpKSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiZm9ybWF0IGNhbiBub3QgYmUgc2V0LCBvbmx5
IHJlbmRlcmVkIHRvIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJu
IHRydWU7Cit9CisKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb3B5VGV4SW1hZ2UyRChH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBH
QzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBH
QzNEaW50IGJvcmRlcikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1
cm47CiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmNQYXJhbWV0ZXJzKCJjb3B5VGV4SW1hZ2UyRCIs
IHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGlu
dGVybmFsZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSkpCiAgICAgICAg
IHJldHVybjsKKyAgICBpZiAoIXZhbGlkYXRlU2V0dGFibGVUZXhGb3JtYXQoImNvcHlUZXhJbWFn
ZTJEIiwgaW50ZXJuYWxmb3JtYXQpKQorICAgICAgICByZXR1cm47CiAgICAgV2ViR0xUZXh0dXJl
KiB0ZXggPSB2YWxpZGF0ZVRleHR1cmVCaW5kaW5nKCJjb3B5VGV4SW1hZ2UyRCIsIHRhcmdldCwg
dHJ1ZSk7CiAgICAgaWYgKCF0ZXgpCiAgICAgICAgIHJldHVybjsKQEAgLTEzODAsNyArMTM5Miwx
MCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29weVRleFN1YkltYWdlMkQoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQwogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImNvcHlUZXhTdWJJbWFnZTJEIiwgInJl
Y3RhbmdsZSBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAo
IWlzVGV4SW50ZXJuYWxGb3JtYXRDb2xvckJ1ZmZlckNvbWJpbmF0aW9uVmFsaWQodGV4LT5nZXRJ
bnRlcm5hbEZvcm1hdCh0YXJnZXQsIGxldmVsKSwgZ2V0Qm91bmRGcmFtZWJ1ZmZlckNvbG9yRm9y
bWF0KCkpKSB7CisgICAgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQgPSB0ZXgtPmdldEludGVybmFs
Rm9ybWF0KHRhcmdldCwgbGV2ZWwpOworICAgIGlmICghdmFsaWRhdGVTZXR0YWJsZVRleEZvcm1h
dCgiY29weVRleFN1YkltYWdlMkQiLCBpbnRlcm5hbGZvcm1hdCkpCisgICAgICAgIHJldHVybjsK
KyAgICBpZiAoIWlzVGV4SW50ZXJuYWxGb3JtYXRDb2xvckJ1ZmZlckNvbWJpbmF0aW9uVmFsaWQo
aW50ZXJuYWxmb3JtYXQsIGdldEJvdW5kRnJhbWVidWZmZXJDb2xvckZvcm1hdCgpKSkgewogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJ
T04sICJjb3B5VGV4U3ViSW1hZ2UyRCIsICJmcmFtZWJ1ZmZlciBpcyBpbmNvbXBhdGlibGUgZm9y
bWF0Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTc1LDYgKzIxOTAsOSBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2VuZXJhdGVNaXBtYXAoR0MzRGVudW0gdGFyZ2V0KQog
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVS
QVRJT04sICJnZW5lcmF0ZU1pcG1hcCIsICJsZXZlbCAwIG5vdCBwb3dlciBvZiAyIG9yIG5vdCBh
bGwgdGhlIHNhbWUgc2l6ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmICghdmFs
aWRhdGVTZXR0YWJsZVRleEZvcm1hdCgiZ2VuZXJhdGVNaXBtYXAiLCB0ZXgtPmdldEludGVybmFs
Rm9ybWF0KHRhcmdldCwgMCkpKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBnZW5lcmF0ZU1p
cG1hcCB3b24ndCB3b3JrIHByb3Blcmx5IGlmIG1pbkZpbHRlciBpcyBub3QgTkVBUkVTVF9NSVBN
QVBfTElORUFSCiAgICAgLy8gb24gTWFjLiAgUmVtb3ZlIHRoZSBoYWNrIG9uY2UgdGhpcyBkcml2
ZXIgYnVnIGlzIGZpeGVkLgogI2lmIE9TKERBUldJTikKQEAgLTIzNTAsNyArMjM2OCwxNCBAQCBX
ZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJiBuYW1lKQogICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQyA9
IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpjcmVhdGUodGhpcyk7CiAgICAgICAgIHJldHVy
biBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDLmdldCgpOwogICAgIH0KLQorICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VCS0lUX1dFQkdMX2RlcHRoX3RleHR1cmUiKQorICAg
ICAgICAmJiBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKGdyYXBoaWNzQ29udGV4dDNEKCkp
KSB7CisgICAgICAgIGlmICghbV93ZWJnbERlcHRoVGV4dHVyZSkgeworICAgICAgICAgICAgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2RlcHRo
X3RleHR1cmUiKTsKKyAgICAgICAgICAgIG1fd2ViZ2xEZXB0aFRleHR1cmUgPSBXZWJHTERlcHRo
VGV4dHVyZTo6Y3JlYXRlKHRoaXMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX3dlYmds
RGVwdGhUZXh0dXJlLmdldCgpOworICAgIH0KICAgICBpZiAoYWxsb3dQcml2aWxlZ2VkRXh0ZW5z
aW9ucygpKSB7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VCR0xfZGVi
dWdfcmVuZGVyZXJfaW5mbyIpKSB7CiAgICAgICAgICAgICBpZiAoIW1fd2ViZ2xEZWJ1Z1JlbmRl
cmVySW5mbykKQEAgLTI4MzQsNiArMjg1OSw4IEBAIFZlY3RvcjxTdHJpbmc+IFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpCiAgICAgcmVzdWx0LmFwcGVuZCgi
V0VCS0lUX1dFQkdMX2xvc2VfY29udGV4dCIpOwogICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQzo6c3VwcG9ydGVkKHRoaXMpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJLSVRf
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKTsKKyAgICBpZiAoV2ViR0xEZXB0aFRleHR1
cmU6OnN1cHBvcnRlZChncmFwaGljc0NvbnRleHQzRCgpKSkKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiV0VCS0lUX1dFQkdMX2RlcHRoX3RleHR1cmUiKTsKIAogICAgIGlmIChhbGxvd1ByaXZpbGVn
ZWRFeHRlbnNpb25zKCkpIHsKICAgICAgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIikpCkBAIC0zNTI2
LDExICszNTUzLDE3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEQmFz
ZShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlCiAgICAgICAgIH0KICAgICB9
CiAgICAgaWYgKCFwaXhlbHMpIHsKLSAgICAgICAgYm9vbCBzdWNjZWVkID0gbV9jb250ZXh0LT50
ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1fdW5wYWNrQWxpZ25tZW50KTsKLSAg
ICAgICAgaWYgKCFzdWNjZWVkKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoaXNS
ZXNvdXJjZVNhZmUoKSkKKyAgICAgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5
cGUsIDApOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGJvb2wgc3VjY2VlZCA9IG1fY29u
dGV4dC0+dGV4SW1hZ2UyRFJlc291cmNlU2FmZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbV91bnBhY2tBbGln
bm1lbnQpOworICAgICAgICAgICAgaWYgKCFzdWNjZWVkKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQogICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghdmFsaWRhdGVTZXR0YWJs
ZVRleEZvcm1hdCgidGV4SW1hZ2UyRCIsIGludGVybmFsZm9ybWF0KSkKKyAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CiAgICAgfQpAQCAtMzU0Myw2ICszNTc2LDgg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkRJbXBsKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIGVjID0gMDsKKyAgICBpZiAoIXZhbGlkYXRlU2V0dGFibGVUZXhG
b3JtYXQoInRleEltYWdlMkQiLCBpbnRlcm5hbGZvcm1hdCkpCisgICAgICAgIHJldHVybjsKICAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBpZiAoIW1fY29udGV4dC0+ZXh0cmFjdEltYWdl
RGF0YShpbWFnZSwgZm9ybWF0LCB0eXBlLCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwgbV91bnBh
Y2tDb2xvcnNwYWNlQ29udmVyc2lvbiA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9ORSwgZGF0YSkp
IHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
VkFMVUUsICJ0ZXhJbWFnZTJEIiwgImJhZCBpbWFnZSBkYXRhIik7CkBAIC0zNTYwLDcgKzM1OTUs
NyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyRChHQzNEZW51bSB0YXJn
ZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9y
ZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9y
bWF0LCBHQzNEZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcqIHBpeGVscywgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3QoKSB8fCAhdmFsaWRhdGVUZXhGdW5jRGF0
YSgidGV4SW1hZ2UyRCIsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLCBOdWxs
QWxsb3dlZCkpCisgICAgaWYgKGlzQ29udGV4dExvc3QoKSB8fCAhdmFsaWRhdGVUZXhGdW5jRGF0
YSgidGV4SW1hZ2UyRCIsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVs
cywgTnVsbEFsbG93ZWQpKQogICAgICAgICByZXR1cm47CiAgICAgdm9pZCogZGF0YSA9IHBpeGVs
cyA/IHBpeGVscy0+YmFzZUFkZHJlc3MoKSA6IDA7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRlbXBE
YXRhOwpAQCAtMzczOCw2ICszNzczLDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRl
eFN1YkltYWdlMkRCYXNlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MKICAgICAg
ICAgcmV0dXJuOwogICAgIGlmICghdmFsaWRhdGVTaXplKCJ0ZXhTdWJJbWFnZTJEIiwgeG9mZnNl
dCwgeW9mZnNldCkpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAoIXZhbGlkYXRlU2V0dGFibGVU
ZXhGb3JtYXQoInRleFN1YkltYWdlMkQiLCBmb3JtYXQpKQorICAgICAgICByZXR1cm47CiAgICAg
V2ViR0xUZXh0dXJlKiB0ZXggPSB2YWxpZGF0ZVRleHR1cmVCaW5kaW5nKCJ0ZXhTdWJJbWFnZTJE
IiwgdGFyZ2V0LCB0cnVlKTsKICAgICBpZiAoIXRleCkKICAgICAgICAgcmV0dXJuOwpAQCAtMzc3
Nyw3ICszODE0LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdo
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZv
cm1hdCwgR0MzRGVudW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewotICAgIGlmIChpc0NvbnRleHRMb3N0KCkgfHwgIXZhbGlkYXRlVGV4RnVuY0Rh
dGEoInRleFN1YkltYWdlMkQiLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscywg
TnVsbE5vdEFsbG93ZWQpKQorICAgIGlmIChpc0NvbnRleHRMb3N0KCkgfHwgIXZhbGlkYXRlVGV4
RnVuY0RhdGEoInRleFN1YkltYWdlMkQiLCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBwaXhlbHMsIE51bGxOb3RBbGxvd2VkKSkKICAgICAgICAgcmV0dXJuOwogICAgIHZvaWQq
IGRhdGEgPSBwaXhlbHMtPmJhc2VBZGRyZXNzKCk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRlbXBE
YXRhOwpAQCAtNDcwMSw3ICs0NzM4LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZh
bGlkYXRlU3RyaW5nKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW4KICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4
RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSBmb3Jt
YXQsIEdDM0RlbnVtIHR5cGUpCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVU
ZXhGdW5jRm9ybWF0QW5kVHlwZShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIGZv
cm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRGludCBsZXZlbCkKIHsKICAgICBzd2l0Y2ggKGZvcm1h
dCkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFMUEhBOgpAQCAtNDcxMCw2ICs0NzQ3
LDExIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRB
bmRUeXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6UkdCOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE6CiAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDoKKyAgICAgICAg
aWYgKG1fd2ViZ2xEZXB0aFRleHR1cmUpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25O
YW1lLCAiREVQVEhfQ09NUE9ORU5UIHRleHR1cmUgZm9ybWF0IG5vdCBlbmFibGVkIik7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBkZWZhdWx0OgogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlk
IHRleHR1cmUgZm9ybWF0Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ3MjYsNiArNDc2
OCwxMiBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXhGdW5jRm9ybWF0
QW5kVHlwZShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1
bmN0aW9uTmFtZSwgImludmFsaWQgdGV4dHVyZSB0eXBlIik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9JTlQ6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQ6CisgICAgICAgIGlmIChtX3dlYmdsRGVw
dGhUZXh0dXJlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQg
dGV4dHVyZSB0eXBlIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkZWZhdWx0OgogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCBm
dW5jdGlvbk5hbWUsICJpbnZhbGlkIHRleHR1cmUgdHlwZSIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC00NzU5LDYgKzQ4MDcsMjEgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZh
bGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hhciogZnVuY3Rpb25OYW0KICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQ6CisgICAgICAgIGlmICghbV93ZWJn
bERlcHRoVGV4dHVyZSkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBmb3JtYXQuIERF
UFRIX0NPTVBPTkVOVCBub3QgZW5hYmxlZCIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgICAgIGlmICh0eXBlICE9IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05F
RF9TSE9SVAorICAgICAgICAgICAgJiYgdHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdO
RURfSU5UKSB7CisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgdHlwZSBmb3IgREVQ
VEhfQ09NUE9ORU5UIGZvcm1hdCIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIGlmIChsZXZlbCA+IDApIHsKKyAgICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImxl
dmVsIG11c3QgYmUgMCBmb3IgREVQVEhfQ09NUE9ORU5UIGZvcm1hdCIpOworICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC00ODA1LDcgKzQ4NjgsNyBAQCBi
b29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXhGdW5jUGFyYW1ldGVycyhjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUsCiAgICAgLy8gV2UgYWJzb2x1dGVseSBoYXZlIHRvIHZhbGlk
YXRlIHRoZSBmb3JtYXQgYW5kIHR5cGUgY29tYmluYXRpb24uCiAgICAgLy8gVGhlIHRleEltYWdl
MkQgZW50cnkgcG9pbnRzIHRha2luZyBIVE1MSW1hZ2UsIGV0Yy4gd2lsbCBwcm9kdWNlCiAgICAg
Ly8gdGVtcG9yYXJ5IGRhdGEgYmFzZWQgb24gdGhpcyBjb21iaW5hdGlvbiwgc28gaXQgbXVzdCBi
ZSBsZWdhbC4KLSAgICBpZiAoIXZhbGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUoZnVuY3Rpb25O
YW1lLCBmb3JtYXQsIHR5cGUpIHx8ICF2YWxpZGF0ZVRleEZ1bmNMZXZlbChmdW5jdGlvbk5hbWUs
IHRhcmdldCwgbGV2ZWwpKQorICAgIGlmICghdmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZShm
dW5jdGlvbk5hbWUsIGZvcm1hdCwgdHlwZSwgbGV2ZWwpIHx8ICF2YWxpZGF0ZVRleEZ1bmNMZXZl
bChmdW5jdGlvbk5hbWUsIHRhcmdldCwgbGV2ZWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDApIHsKQEAgLTQ4NDksNyArNDkxMiw3IEBA
IGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleEZ1bmNQYXJhbWV0ZXJzKGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLAorYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4RnVuY0RhdGEo
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEaW50IGxldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6
ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMsCkBAIC00
ODYyLDcgKzQ5MjUsOSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXhG
dW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpZiAoIXZhbGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUoZnVuY3Rpb25O
YW1lLCBmb3JtYXQsIHR5cGUpKQorICAgIGlmICghdmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlw
ZShmdW5jdGlvbk5hbWUsIGZvcm1hdCwgdHlwZSwgbGV2ZWwpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCF2YWxpZGF0ZVNldHRhYmxlVGV4Rm9ybWF0KGZ1bmN0aW9uTmFtZSwgZm9y
bWF0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3dpdGNoICh0eXBlKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCmlu
ZGV4IDRiMjE4ODY4NjE5OTU4NzM4NWE1NTVlOGJiMmFkNzc4YjJkOTgwZGEuLjg2MTIxOTY1NmY1
ZTUzYzk4ZGExNmY3YjExZDQ3OGQwZTllYTE4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCkBAIC01Nyw2ICs1Nyw3IEBAIGNs
YXNzIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOwogY2xhc3MgV2ViR0xDb250ZXh0QXR0cmli
dXRlczsKIGNsYXNzIFdlYkdMRGVidWdSZW5kZXJlckluZm87CiBjbGFzcyBXZWJHTERlYnVnU2hh
ZGVyczsKK2NsYXNzIFdlYkdMRGVwdGhUZXh0dXJlOwogY2xhc3MgV2ViR0xFeHRlbnNpb247CiBj
bGFzcyBXZWJHTEZyYW1lYnVmZmVyOwogY2xhc3MgV2ViR0xMb3NlQ29udGV4dDsKQEAgLTUwOSw2
ICs1MTAsNyBAQCBwdWJsaWM6CiAgICAgT3duUHRyPFdlYkdMRGVidWdSZW5kZXJlckluZm8+IG1f
d2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbzsKICAgICBPd25QdHI8V2ViR0xEZWJ1Z1NoYWRlcnM+IG1f
d2ViZ2xEZWJ1Z1NoYWRlcnM7CiAgICAgT3duUHRyPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
PiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDOworICAgIE93blB0cjxXZWJHTERlcHRoVGV4
dHVyZT4gbV93ZWJnbERlcHRoVGV4dHVyZTsKIAogICAgIC8vIEhlbHBlcnMgZm9yIGdldFBhcmFt
ZXRlciBhbmQgb3RoZXJzCiAgICAgV2ViR0xHZXRJbmZvIGdldEJvb2xlYW5QYXJhbWV0ZXIoR0Mz
RGVudW0pOwpAQCAtNTc3LDcgKzU3OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEhlbHBlciBmdW5j
dGlvbiB0byBjaGVjayBpbnB1dCBmb3JtYXQvdHlwZSBmb3IgZnVuY3Rpb25zIHtjb3B5fVRleHtT
dWJ9SW1hZ2UuCiAgICAgLy8gR2VuZXJhdGVzIEdMIGVycm9yIGFuZCByZXR1cm5zIGZhbHNlIGlm
IHBhcmFtZXRlcnMgYXJlIGludmFsaWQuCi0gICAgYm9vbCB2YWxpZGF0ZVRleEZ1bmNGb3JtYXRB
bmRUeXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51
bSB0eXBlKTsKKyAgICBib29sIHZhbGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEdDM0RpbnQg
bGV2ZWwpOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNoZWNrIGlucHV0IGxldmVsIGZv
ciBmdW5jdGlvbnMge2NvcHl9VGV4e1N1Yn1JbWFnZS4KICAgICAvLyBHZW5lcmF0ZXMgR0wgZXJy
b3IgYW5kIHJldHVybnMgZmFsc2UgaWYgbGV2ZWwgaXMgaW52YWxpZC4KQEAgLTU5OSwxMiArNjAx
LDE4IEBAIHB1YmxpYzoKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgdGhhdCB0
aGUgZ2l2ZW4gQXJyYXlCdWZmZXJWaWV3CiAgICAgLy8gaXMgb2YgdGhlIGNvcnJlY3QgdHlwZSBh
bmQgY29udGFpbnMgZW5vdWdoIGRhdGEgZm9yIHRoZSB0ZXhJbWFnZSBjYWxsLgogICAgIC8vIEdl
bmVyYXRlcyBHTCBlcnJvciBhbmQgcmV0dXJucyBmYWxzZSBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZh
bGlkLgotICAgIGJvb2wgdmFsaWRhdGVUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsCisgICAgYm9vbCB2YWxpZGF0ZVRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSwgR0MzRGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVp
IHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
QzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOdWxsRGlzcG9zaXRpb24pOwogCisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlkYXRl
IGEgZ2l2ZW4gdGV4dHVyZSBmb3JtYXQgaXMgc2V0dGFibGUgYXMgaW4KKyAgICAvLyB5b3UgY2Fu
IHN1cHBseSBkYXRhIHRvIHRleEltYWdlMkQsIG9yIGNhbGwgdGV4SW1hZ2UyRCwgY29weVRleElt
YWdlMkQgYW5kCisgICAgLy8gY29weVRleFN1YkltYWdlMkQuCisgICAgLy8gR2VuZXJhdGVzIEdM
IGVycm9yIGFuZCByZXR1cm5zIGZhbHNlIGlmIHRoZSBmb3JtYXQgaXMgbm90IHNldHRhYmxlLgor
ICAgIGJvb2wgdmFsaWRhdGVTZXR0YWJsZVRleEZvcm1hdChjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIEdDM0RlbnVtIGZvcm1hdCk7CisKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRh
dGUgY29tcHJlc3NlZCB0ZXh0dXJlIGRhdGEgaXMgY29ycmVjdCBzaXplCiAgICAgLy8gZm9yIHRo
ZSBnaXZlbiBmb3JtYXQgYW5kIGRpbWVuc2lvbnMuCiAgICAgYm9vbCB2YWxpZGF0ZUNvbXByZXNz
ZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKaW5kZXgg
NjFkZmU5OTcyNjIwZTBhNjNiZmIzYTg0MDZjNjU2ODM1NjNmNjllNi4uYjc2NWY0MDQ2YmMzMjNk
NDVmNjY4MTYwMjUzNzkyNjRlMTQzYTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcApAQCAtODUsOSArODUsOSBA
QCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMo
R0MzRGVudW0gZm9ybWF0LAogewogICAgIHN3aXRjaCAoZm9ybWF0KSB7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6QUxQSEE6Ci0gICAgICAgICpjb21wb25lbnRzUGVyUGl4ZWwgPSAxOwot
ICAgICAgICBicmVhazsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpMVU1JTkFOQ0U6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5DSUw6CiAgICAgICAgICpjb21wb25lbnRzUGVyUGl4
ZWwgPSAxOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpMVU1J
TkFOQ0VfQUxQSEE6CkBAIC0xMDcsMTIgKzEwNywxOSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNE
Ojpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMoR0MzRGVudW0gZm9ybWF0LAogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEU6CiAgICAgICAgICpieXRlc1BlckNv
bXBvbmVudCA9IHNpemVvZihHQzNEdWJ5dGUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVDoKKyAgICAgICAgKmJ5dGVzUGVyQ29tcG9u
ZW50ID0gc2l6ZW9mKEdDM0R1c2hvcnQpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVF81XzZfNToKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpVTlNJR05FRF9TSE9SVF80XzRfNF80OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OlVOU0lHTkVEX1NIT1JUXzVfNV81XzE6CiAgICAgICAgICpjb21wb25lbnRzUGVyUGl4ZWwg
PSAxOwogICAgICAgICAqYnl0ZXNQZXJDb21wb25lbnQgPSBzaXplb2YoR0MzRHVzaG9ydCk7CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0lOVF8y
NF84OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0lOVDoKKyAgICAgICAg
KmJ5dGVzUGVyQ29tcG9uZW50ID0gc2l6ZW9mKEdDM0R1aW50KTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQ6IC8vIE9FU190ZXh0dXJlX2Zsb2F0CiAg
ICAgICAgICpieXRlc1BlckNvbXBvbmVudCA9IHNpemVvZihHQzNEZmxvYXQpOwogICAgICAgICBi
cmVhazsKQEAgLTE4MjQsNyArMTgzMSw2IEBAIHVuc2lnbmVkIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRDaGFubmVsQml0c0J5Rm9ybWF0KEdDM0RlbnVtIGZvcm1hdCkKICAgICB9CiB9CiAKLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGMz
N2FiYjNmZTU1NjQyZTY4YTlmOTkzOGYxY2FhYmM5ODdlMTJhNTguLjAwOTQzNjZkYWZhMWNiNWU2
Y2VkNTdmODQ1ZDlhMmM0ODFkNzY0ZTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0x
MyAgR3JlZ2cgVGF2YXJlcyAgPGdtYW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBFeHBvc2UgV0VC
R0xfZGVwdGhfdGV4dHVyZSBleHRlbnNpb24gdG8gV2ViR0wKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3MDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2wtdGVzdC11dGlscy5qczoKKyAgICAgICAgKFdlYkdMVGVzdFV0aWxzKToKKyAgICAgICAg
KiBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1kZXB0aC10ZXh0dXJlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtZGVwdGgtdGV4dHVyZS5odG1s
OiBBZGRlZC4KKwogMjAxMi0wNi0xOCAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIENyYXNoIGluIENTUFNvdXJjZTo6cGFyc2VTb3VyY2UKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpz
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QtdXRp
bHMuanMKaW5kZXggNDMyNDRkMWNiZTU0OWFmZGIyMWUxN2VjOGJlZWYwMTg5MTZjYjQ4Zi4uNGNl
YmM5NTcwOGViNGNjN2U5OTYwYTA1YTE0NmUwN2Q3M2I3YmYzYSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QtdXRpbHMuanMKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QtdXRp
bHMuanMKQEAgLTEzNCw5ICsxMzQsMTkgQEAgdmFyIHNldHVwU2ltcGxlVGV4dHVyZUZyYWdtZW50
U2hhZGVyID0gZnVuY3Rpb24oZ2wpIHsKICAqIEBwYXJhbSB7IUFycmF5LjxudW1iZXI+fSBvcHRf
bG9jYXRpb25zIFRoZSBsb2NhdGlvbnMgZm9yIHRoZSBhdHRyaWJzLgogICovCiB2YXIgc2V0dXBQ
cm9ncmFtID0gZnVuY3Rpb24oZ2wsIHNoYWRlcnMsIG9wdF9hdHRyaWJzLCBvcHRfbG9jYXRpb25z
KSB7CisgIHZhciByZWFsU2hhZGVycyA9IFtdOwogICB2YXIgcHJvZ3JhbSA9IGdsLmNyZWF0ZVBy
b2dyYW0oKTsKICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNoYWRlcnMubGVuZ3RoOyArK2lpKSB7
Ci0gICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcnNbaWldKTsKKyAgICB2YXIgc2hh
ZGVyID0gc2hhZGVyc1tpaV07CisgICAgaWYgKHR5cGVvZiBzaGFkZXIgPT0gJ3N0cmluZycpIHsK
KyAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2hhZGVyKTsKKyAg
ICAgIGlmIChlbGVtZW50KSB7CisgICAgICAgIHNoYWRlciA9IGxvYWRTaGFkZXJGcm9tU2NyaXB0
KGdsLCBzaGFkZXIpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgc2hhZGVyID0gbG9hZFNoYWRl
cihnbCwgc2hhZGVyLCBpaSA/IGdsLkZSQUdNRU5UX1NIQURFUiA6IGdsLlZFUlRFWF9TSEFERVIp
OworICAgICAgfQorICAgIH0KKyAgICBnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsK
ICAgfQogICBpZiAob3B0X2F0dHJpYnMpIHsKICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgb3B0
X2F0dHJpYnMubGVuZ3RoOyArK2lpKSB7CkBAIC0xMTA5LDYgKzExMTksNTAgQEAgdmFyIGdldFVy
bEFyZ3VtZW50cyA9IGZ1bmN0aW9uKCkgewogICByZXR1cm4gYXJnczsKIH07CiAKKy8vIEFkZCB5
b3VyIHByZWZpeCBoZXJlLgordmFyIGJyb3dzZXJQcmVmaXhlcyA9IFsKKyAgIiIsCisgICJNT1pf
IiwKKyAgIk9QXyIsCisgICJXRUJLSVRfIgorXTsKKworLyoqCisgKiBHaXZlbiBhbiBleHRlbnNp
b24gbmFtZSBsaWtlIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjCisgKiByZXR1cm5zIHRo
ZSBuYW1lIG9mIHRoZSBzdXBwb3J0ZWQgdmVyc2lvbiBleHRlbnNpb24sIGxpa2UKKyAqIFdFQktJ
VF9XRUJHTF9jb21wcmVzc2VkX3RldHVyZV9zM3RjCisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBO
YW1lIG9mIGV4dGVuc2lvbiB0byBsb29rIGZvcgorICogQHJldHVybiB7c3RyaW5nfSBuYW1lIG9m
IGV4dGVuc2lvbiBmb3VuZCBvciB1bmRlZmluZWQgaWYgbm90CisgKiAgICAgZm91bmQuCisgKi8K
K3ZhciBnZXRTdXBwb3J0ZWRFeHRlbnNpb25XaXRoS25vd25QcmVmaXhlcyA9IGZ1bmN0aW9uKGds
LCBuYW1lKSB7CisgIHZhciBzdXBwb3J0ZWQgPSBnbC5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCk7
CisgIGZvciAodmFyIGlpID0gMDsgaWkgPCBicm93c2VyUHJlZml4ZXMubGVuZ3RoOyArK2lpKSB7
CisgICAgdmFyIHByZWZpeGVkTmFtZSA9IGJyb3dzZXJQcmVmaXhlc1tpaV0gKyBuYW1lOworICAg
IGlmIChzdXBwb3J0ZWQuaW5kZXhPZihwcmVmaXhlZE5hbWUpID49IDApIHsKKyAgICAgIHJldHVy
biBwcmVmaXhlZE5hbWU7CisgICAgfQorICB9Cit9OworCisvKioKKyAqIEdpdmVuIGFuIGV4dGVu
c2lvbiBuYW1lIGxpa2UgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMKKyAqIHJldHVybnMg
dGhlIHN1cHBvcnRlZCB2ZXJzaW9uIGV4dGVuc2lvbiwgbGlrZQorICogV0VCS0lUX1dFQkdMX2Nv
bXByZXNzZWRfdGV0dXJlX3MzdGMKKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgZXh0
ZW5zaW9uIHRvIGxvb2sgZm9yCisgKiBAcmV0dXJuIHtXZWJHTEV4dGVuc2lvbn0gVGhlIGV4dGVu
c2lvbiBvciB1bmRlZmluZWQgaWYgbm90CisgKiAgICAgZm91bmQuCisgKi8KK3ZhciBnZXRFeHRl
bnNpb25XaXRoS25vd25QcmVmaXhlcyA9IGZ1bmN0aW9uKGdsLCBuYW1lKSB7CisgIGZvciAodmFy
IGlpID0gMDsgaWkgPCBicm93c2VyUHJlZml4ZXMubGVuZ3RoOyArK2lpKSB7CisgICAgdmFyIHBy
ZWZpeGVkTmFtZSA9IGJyb3dzZXJQcmVmaXhlc1tpaV0gKyBuYW1lOworICAgIHZhciBleHQgPSBn
bC5nZXRFeHRlbnNpb24ocHJlZml4ZWROYW1lKTsKKyAgICBpZiAoZXh0KSB7CisgICAgICByZXR1
cm4gZXh0OworICAgIH0KKyAgfQorfTsKKwogLyoqCiAgKiBQcm92aWRlcyByZXF1ZXN0QW5pbWF0
aW9uRnJhbWUgaW4gYSBjcm9zcyBicm93c2VyIHdheS4KICAqLwpAQCAtMTE3Nyw4ICsxMjMxLDEw
IEBAIHJldHVybiB7CiAgIGNyZWF0ZUNvbG9yZWRUZXh0dXJlOiBjcmVhdGVDb2xvcmVkVGV4dHVy
ZSwKICAgZHJhd1F1YWQ6IGRyYXdRdWFkLAogICBlbmRzV2l0aDogZW5kc1dpdGgsCisgIGdldEV4
dGVuc2lvbldpdGhLbm93blByZWZpeGVzOiBnZXRFeHRlbnNpb25XaXRoS25vd25QcmVmaXhlcywK
ICAgZ2V0RmlsZUxpc3RBc3luYzogZ2V0RmlsZUxpc3RBc3luYywKICAgZ2V0TGFzdEVycm9yOiBn
ZXRMYXN0RXJyb3IsCisgIGdldFN1cHBvcnRlZEV4dGVuc2lvbldpdGhLbm93blByZWZpeGVzOiBn
ZXRTdXBwb3J0ZWRFeHRlbnNpb25XaXRoS25vd25QcmVmaXhlcywKICAgZ2V0VXJsQXJndW1lbnRz
OiBnZXRVcmxBcmd1bWVudHMsCiAgIGdsRW51bVRvU3RyaW5nOiBnbEVudW1Ub1N0cmluZywKICAg
Z2xFcnJvclNob3VsZEJlOiBnbEVycm9yU2hvdWxkQmUsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1kZXB0aC10ZXh0dXJlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWRlcHRoLXRleHR1cmUtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQwZjJmZjM2MzdhNzYwZThmNjZhOWE1MjI2OTI5OWY3OTE0MjAwMzIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1k
ZXB0aC10ZXh0dXJlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUwIEBACitUaGlzIHRlc3QgdmVy
aWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFdFQkdMX2RlcHRoX3RleHR1cmUgZXh0ZW5z
aW9uLCBpZiBpdCBpcyBhdmFpbGFibGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIFdlYkdMIGNvbnRleHQgZXhpc3RzCitUZXN0aW5nIGJpbmRpbmcgZW51bSB3aXRoIGV4
dGVuc2lvbiBkaXNhYmxlZAorUEFTUyBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGds
LkRFUFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05F
RF9TSE9SVCwgbnVsbCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX0VOVU0u
CitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuREVQVEhfQ09NUE9ORU5U
LCAxLCAxLCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lHTkVEX0lOVCwgbnVsbCkgZ2Vu
ZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX0VOVU0uCitQQVNTIFN1Y2Nlc3NmdWxs
eSBlbmFibGVkIFdFQkdMX2RlcHRoX3RleHR1cmUgZXh0ZW5zaW9uCitQQVNTIFdFQkdMX2RlcHRo
X3RleHR1cmUgbGlzdGVkIGFzIHN1cHBvcnRlZCBhbmQgZ2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZAor
VGVzdGluZyBXRUJHTF9kZXB0aF90ZXh0dXJlCisKK3Rlc3Rpbmc6IFVOU0lHTkVEX1NIT1JUCitQ
QVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAxLCBnbC5E
RVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURf
U0hPUlQsIG51bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJ
T04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAx
LCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5T
SUdORURfU0hPUlQsIG51bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9P
UEVSQVRJT04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElW
RV9YLCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwg
Z2wuVU5TSUdORURfU0hPUlQsIG51bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5W
QUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9Q
T1NJVElWRV9YLCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBP
TkVOVCwgZ2wuVU5TSUdORURfU0hPUlQsIG51bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJv
cjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJF
X01BUF9QT1NJVElWRV9YLCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRI
X0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfU0hPUlQsIG51bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBH
TCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9YLCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGds
LkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfU0hPUlQsIG51bGwpIGdlbmVyYXRlZCBleHBl
Y3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMSwgZ2wuREVQVEhfQ09NUE9ORU5ULCAxLCAxLCAwLCBnbC5ERVBUSF9DT01Q
T05FTlQsIGdsLlVOU0lHTkVEX1NIT1JULCBudWxsKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJy
b3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5V
TlNJR05FRF9TSE9SVCwgbmV3IFVpbnQxNkFycmF5KDEpKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wg
ZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05F
RF9TSE9SVCwgY2FudmFzMikgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09Q
RVJBVElPTi4KK1BBU1MgZ2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuREVQ
VEhfQ09NUE9ORU5ULCAwLCAwLCAxLCAxLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6
IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IGdsLkRFUFRIX0NPTVBPTkVOVCwgOCwgOCwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJ
R05FRF9TSE9SVCwgbnVsbCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4K
K1BBU1MgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCAxLCAxLCBnbC5E
RVBUSF9DT01QT05FTlQsIGdsLlVOU0lHTkVEX1NIT1JULCBuZXcgVWludDE2QXJyYXkoMSkpIGdl
bmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLmNv
cHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDAsIDEsIDEpIGdlbmVy
YXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLmdlbmVy
YXRlTWlwbWFwKGdsLlRFWFRVUkVfMkQpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5W
QUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVC
VUZGRVIpIGlzIGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFCitQQVNTIGRlcHRoIHRleHR1cmUgcmVu
ZGVyZWQgY29ycmVjdGx5LgorCit0ZXN0aW5nOiBVTlNJR05FRF9JTlQKK1BBU1MgZ2wudGV4SW1h
Z2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsIDEsIGdsLkRFUFRIX0NPTVBPTkVO
VCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9JTlQsIG51bGwpIGdl
bmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRl
eEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLCAxLCBnbC5ERVBUSF9DT01Q
T05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfSU5ULCBudWxs
KSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBn
bC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwgMSwgZ2wuREVQVEhf
Q09NUE9ORU5ULCAxLCAxLCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lHTkVEX0lOVCwg
bnVsbCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BB
U1MgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsIDEsIGdsLkRF
UFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9J
TlQsIG51bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04u
CitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLCAxLCBn
bC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdO
RURfSU5ULCBudWxsKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFU
SU9OLgorUEFTUyBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwg
MSwgZ2wuREVQVEhfQ09NUE9ORU5ULCAxLCAxLCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVO
U0lHTkVEX0lOVCwgbnVsbCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09Q
RVJBVElPTi4KK1BBU1MgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAxLCBnbC5ERVBUSF9D
T01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfSU5ULCBu
dWxsKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFT
UyBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMSwg
MSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9JTlQsIG5ldyBVaW50MzJBcnJh
eSgxKSkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BB
U1MgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGds
LkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfSU5ULCBjYW52YXMyKSBnZW5lcmF0ZWQgZXhw
ZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBnbC5jb3B5VGV4SW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIDAsIDAsIDEsIDEsIDApIGdl
bmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRl
eEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCA4LCA4LCAwLCBn
bC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lHTkVEX0lOVCwgbnVsbCkgZ2VuZXJhdGVkIGV4cGVj
dGVkIEdMIGVycm9yOiBOT19FUlJPUi4KK1BBU1MgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCAwLCAwLCAxLCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lHTkVEX0lOVCwg
bmV3IFVpbnQzMkFycmF5KDEpKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURf
T1BFUkFUSU9OLgorUEFTUyBnbC5jb3B5VGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAw
LCAwLCAwLCAwLCAxLCAxKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BF
UkFUSU9OLgorUEFTUyBnbC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFXzJEKSBnZW5lcmF0ZWQg
ZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBnbC5jaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSBpcyBnbC5GUkFNRUJVRkZFUl9DT01QTEVURQor
UEFTUyBkZXB0aCB0ZXh0dXJlIHJlbmRlcmVkIGNvcnJlY3RseS4KKworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1kZXB0aC10ZXh0dXJlLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1kZXB0aC10ZXh0dXJlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjM5MDk0Mzg5YmY0Yzk0YTlkZDE5NGU1NzExNTFhMjE4MmE2Mzg4YwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWRlcHRoLXRl
eHR1cmUuaHRtbApAQCAtMCwwICsxLDMwMiBAQAor77u/PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzx0aXRsZT5XZWJHTCBXRUJHTF9kZXB0aF90ZXh0dXJl
IENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBpZD0i
dnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgYV9wb3Np
dGlvbjsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOworfQor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21l
bnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIHNhbXBsZXIyRCB1X3RleHR1
cmU7Cit1bmlmb3JtIHZlYzIgdV9yZXNvbHV0aW9uOwordm9pZCBtYWluKCkKK3sKKyAgICB2ZWMy
IHRleGNvb3JkID0gZ2xfRnJhZ0Nvb3JkLnh5IC8gdV9yZXNvbHV0aW9uOworICAgIGdsX0ZyYWdD
b2xvciA9IHRleHR1cmUyRCh1X3RleHR1cmUsIHRleGNvb3JkKTsKK30KKzwvc2NyaXB0PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHN0eWxlPSJ3aWR0aDogOHB4OyBo
ZWlnaHQ6IDhweDsiPjwvY2FudmFzPgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW5pdE5vbktocm9u
b3NGcmFtZXdvcmspIHsKKyAgICB3aW5kb3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmsoZmFsc2Up
OworfQorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGUgZnVuY3Rpb25hbGl0eSBv
ZiB0aGUgV0VCR0xfZGVwdGhfdGV4dHVyZSBleHRlbnNpb24sIGlmIGl0IGlzIGF2YWlsYWJsZS4i
KTsKKworZGVidWcoIiIpOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0
ZTNEQ29udGV4dChjYW52YXMsIHthbnRpYWxpYXM6IGZhbHNlfSk7Cit2YXIgcHJvZ3JhbSA9IHd0
dS5zZXR1cFRleHR1cmVkUXVhZChnbCk7Cit2YXIgZXh0ID0gbnVsbDsKK3ZhciB2YW8gPSBudWxs
OwordmFyIG5hbWU7Cit2YXIgc3VwcG9ydGVkRm9ybWF0czsKKworaWYgKCFnbCkgeworICAgIHRl
c3RGYWlsZWQoIldlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7CisgICAg
dGVzdFBhc3NlZCgiV2ViR0wgY29udGV4dCBleGlzdHMiKTsKKworICAgIC8vIFJ1biB0ZXN0cyB3
aXRoIGV4dGVuc2lvbiBkaXNhYmxlZAorICAgIHJ1blRlc3REaXNhYmxlZCgpOworCisgICAgLy8g
UXVlcnkgdGhlIGV4dGVuc2lvbiBhbmQgc3RvcmUgZ2xvYmFsbHkgc28gc2hvdWxkQmUgY2FuIGFj
Y2VzcyBpdAorICAgIGV4dCA9IHd0dS5nZXRFeHRlbnNpb25XaXRoS25vd25QcmVmaXhlcyhnbCwg
IldFQkdMX2RlcHRoX3RleHR1cmUiKTsKKyAgICBpZiAoIWV4dCkgeworICAgICAgICB0ZXN0UGFz
c2VkKCJObyBXRUJHTF9kZXB0aF90ZXh0dXJlIHN1cHBvcnQgLS0gdGhpcyBpcyBsZWdhbCIpOwor
ICAgICAgICBydW5TdXBwb3J0ZWRUZXN0KGZhbHNlKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0
ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgZW5hYmxlZCBXRUJHTF9kZXB0aF90ZXh0dXJlIGV4dGVu
c2lvbiIpOworCisgICAgICAgIHJ1blN1cHBvcnRlZFRlc3QodHJ1ZSk7CisgICAgICAgIHJ1blRl
c3RFeHRlbnNpb24oKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1blN1cHBvcnRlZFRlc3QoZXh0
ZW5zaW9uRW5hYmxlZCkgeworICAgIHZhciBuYW1lID0gd3R1LmdldFN1cHBvcnRlZEV4dGVuc2lv
bldpdGhLbm93blByZWZpeGVzKGdsLCAiV0VCR0xfZGVwdGhfdGV4dHVyZSIpOworICAgIGlmIChu
YW1lICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAg
ICAgICAgICAgIHRlc3RQYXNzZWQoIldFQkdMX2RlcHRoX3RleHR1cmUgbGlzdGVkIGFzIHN1cHBv
cnRlZCBhbmQgZ2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZCIpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiV0VCR0xfZGVwdGhfdGV4dHVyZSBsaXN0ZWQgYXMgc3VwcG9y
dGVkIGJ1dCBnZXRFeHRlbnNpb24gZmFpbGVkIik7CisgICAgICAgIH0KKyAgICB9IGVsc2Ugewor
ICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgi
V0VCR0xfZGVwdGhfdGV4dHVyZSBub3QgbGlzdGVkIGFzIHN1cHBvcnRlZCBidXQgZ2V0RXh0ZW5z
aW9uIHN1Y2NlZWRlZCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiV0VCR0xfZGVwdGhfdGV4dHVyZSBub3QgbGlzdGVkIGFzIHN1cHBvcnRlZCBhbmQgZ2V0RXh0
ZW5zaW9uIGZhaWxlZCAtLSB0aGlzIGlzIGxlZ2FsIik7CisgICAgICAgIH0KKyAgICB9Cit9CisK
KworZnVuY3Rpb24gcnVuVGVzdERpc2FibGVkKCkgeworICAgIGRlYnVnKCJUZXN0aW5nIGJpbmRp
bmcgZW51bSB3aXRoIGV4dGVuc2lvbiBkaXNhYmxlZCIpOworCisgICAgdmFyIHRleCA9IGdsLmNy
ZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOwor
ICAgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9FTlVNLCAnZ2wudGV4SW1h
Z2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRF
UFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfU0hPUlQsIG51bGwpJyk7CisgICAgc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX0VOVU0sICdnbC50ZXhJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5U
LCBnbC5VTlNJR05FRF9JTlQsIG51bGwpJyk7Cit9CisKKworZnVuY3Rpb24gZHVtcEl0KGdsLCBy
ZXMsIG1zZykgeworICByZXR1cm47ICAvLyBjb21tZW50IG91dCB0byBkZWJ1ZworICBkZWJ1Zyht
c2cpOworICB2YXIgYWN0dWFsUGl4ZWxzID0gbmV3IFVpbnQ4QXJyYXkocmVzICogcmVzICogNCk7
CisgIGdsLnJlYWRQaXhlbHMoMCwgMCwgcmVzLCByZXMsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZ
VEUsIGFjdHVhbFBpeGVscyk7CisKKyAgZm9yICh2YXIgeXkgPSAwOyB5eSA8IHJlczsgKyt5eSkg
eworICAgIHZhciBzdHJzID0gW107CisgICAgZm9yICh2YXIgeHggPSAwOyB4eCA8IHJlczsgKyt4
eCkgeworICAgICAgdmFyIGFjdHVhbCA9ICh5eSAqIHJlcyArIHh4KSAqIDQ7CisgICAgICBzdHJz
LnB1c2goIigiICsgYWN0dWFsUGl4ZWxzW2FjdHVhbF0gKyAiLCIgKyBhY3R1YWxQaXhlbHNbYWN0
dWFsKzFdICsgIiwiICsgYWN0dWFsUGl4ZWxzW2FjdHVhbCArIDJdICsgIiwiICsgYWN0dWFsUGl4
ZWxzW2FjdHVhbCArIDNdICsgIikiKTsKKyAgICB9CisgICAgZGVidWcoc3Rycy5qb2luKCIgIikp
OworICB9Cit9CitmdW5jdGlvbiBydW5UZXN0RXh0ZW5zaW9uKCkgeworICAgIGRlYnVnKCJUZXN0
aW5nIFdFQkdMX2RlcHRoX3RleHR1cmUiKTsKKworICAgIHZhciByZXMgPSA4OworCisgICAgLy8g
bWFrZSBjYW52YXMgZm9yIHRlc3RpbmcuCisgICAgY2FudmFzMiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImNhbnZhcyIpOworICAgIGNhbnZhczIud2lkdGggPSByZXM7CisgICAgY2FudmFzMi5o
ZWlnaHQgPSByZXM7CisgICAgdmFyIGN0eCA9IGNhbnZhczIuZ2V0Q29udGV4dCgiMmQiKTsKKyAg
ICBjdHguZmlsbFN0eWxlID0gImJsdWUiOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCBjYW52YXMy
LndpZHRoLCBjYW52YXMyLmhlaWdodCk7CisKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFBy
b2dyYW0oZ2wsIFsndnNoYWRlcicsICdmc2hhZGVyJ10sIFsnYV9wb3NpdGlvbiddKTsKKyAgICBn
bC51c2VQcm9ncmFtKHByb2dyYW0pOworICAgIGdsLnVuaWZvcm0yZihnbC5nZXRVbmlmb3JtTG9j
YXRpb24ocHJvZ3JhbSwgInVfcmVzb2x1dGlvbiIpLCByZXMsIHJlcyk7CisKKyAgICB2YXIgYnVm
ZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZG
RVIsIGJ1ZmZlcik7CisgICAgZ2wuYnVmZmVyRGF0YSgKKyAgICAgICAgZ2wuQVJSQVlfQlVGRkVS
LAorICAgICAgICBuZXcgRmxvYXQzMkFycmF5KAorICAgICAgICAgICAgWyAgIDEsICAxLCAgMSwK
KyAgICAgICAgICAgICAgIC0xLCAgMSwgIDAsCisgICAgICAgICAgICAgICAtMSwgLTEsIC0xLAor
ICAgICAgICAgICAgICAgIDEsICAxLCAgMSwKKyAgICAgICAgICAgICAgIC0xLCAtMSwgLTEsCisg
ICAgICAgICAgICAgICAgMSwgLTEsICAwLAorICAgICAgICAgICAgXSksCisgICAgICAgIGdsLlNU
QVRJQ19EUkFXKTsKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgICBnbC52
ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICB2
YXIgdHlwZXMgPSBbCisgICAgICAgIHt0eXBlOiAnVU5TSUdORURfU0hPUlQnLCBkYXRhOiAnbmV3
IFVpbnQxNkFycmF5KDEpJyB9LAorICAgICAgICB7dHlwZTogJ1VOU0lHTkVEX0lOVCcsICAgZGF0
YTogJ25ldyBVaW50MzJBcnJheSgxKScgfQorICAgIF07CisKKyAgICBmb3IgKHZhciBpaSA9IDA7
IGlpIDwgdHlwZXMubGVuZ3RoOyArK2lpKSB7CisgICAgICAgIHZhciB0eXBlSW5mbyA9IHR5cGVz
W2lpXTsKKyAgICAgICAgdmFyIHR5cGUgPSB0eXBlSW5mby50eXBlOworCisgICAgICAgIGRlYnVn
KCIiKTsKKyAgICAgICAgZGVidWcoInRlc3Rpbmc6ICIgKyB0eXBlKTsKKworICAgICAgICAvLyBj
aGVjayB0aGF0IGN1YmVtYXBzIGFyZSBub3QgYWxsb3dlZC4KKyAgICAgICAgdmFyIGN1YmVUZXgg
PSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
Q1VCRV9NQVAsIGN1YmVUZXgpOworICAgICAgICB2YXIgdGFyZ2V0cyA9IFsKKyAgICAgICAgICAn
VEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YJywKKyAgICAgICAgICAnVEVYVFVSRV9DVUJFX01B
UF9ORUdBVElWRV9YJywKKyAgICAgICAgICAnVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZJywK
KyAgICAgICAgICAnVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZJywKKyAgICAgICAgICAnVEVY
VFVSRV9DVUJFX01BUF9QT1NJVElWRV9aJywKKyAgICAgICAgICAnVEVYVFVSRV9DVUJFX01BUF9O
RUdBVElWRV9aJworICAgICAgICBdOworICAgICAgICBmb3IgKHZhciB0dCA9IDA7IHR0IDwgdGFy
Z2V0cy5sZW5ndGg7ICsrdHQpIHsKKyAgICAgICAgICAgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihn
bCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICdnbC50ZXhJbWFnZTJEKGdsLicgKyB0YXJnZXRzW2lp
XSArICcsIDEsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5U
LCBnbC4nICsgdHlwZSArICcsIG51bGwpJyk7CisgICAgICAgIH0KKworICAgICAgICAvLyBjaGVj
ayAyZCB0ZXh0dXJlcy4KKyAgICAgICAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAg
ICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgICAgICAgZ2wudGV4
UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9f
RURHRSk7CisgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVS
RV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGds
LlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICAgICAg
Z2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGds
LkxJTkVBUik7CisKKyAgICAgICAgLy8gdGVzdCBsZXZlbCA+IDAKKyAgICAgICAgc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgJ2dsLnRleEltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMSwgZ2wuREVQVEhfQ09NUE9ORU5ULCAxLCAxLCAwLCBnbC5ERVBUSF9DT01Q
T05FTlQsIGdsLicgKyB0eXBlICsgJywgbnVsbCknKTsKKworICAgICAgICAvLyB0ZXN0IHdpdGgg
ZGF0YQorICAgICAgICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFU
SU9OLCAnZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5ERVBUSF9DT01QT05FTlQs
IDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuJyArIHR5cGUgKyAnLCAnICsgdHlwZUlu
Zm8uZGF0YSArICcpJyk7CisKKyAgICAgICAgLy8gdGVzdCB3aXRoIGNhbnZhcworICAgICAgICBz
aG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIFtnbC5JTlZBTElEX1ZBTFVFLCBnbC5JTlZBTElEX0VO
VU0sIGdsLklOVkFMSURfT1BFUkFUSU9OXSwgJ2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
MCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLicgKyB0eXBlICAr
ICcsIGNhbnZhczIpJyk7CisKKyAgICAgICAgLy8gdGVzdCBjb3B5VGV4SW1hZ2UyRAorICAgICAg
ICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIFtnbC5JTlZBTElEX0VOVU0sIGdsLklOVkFMSURf
T1BFUkFUSU9OXSwgJ2dsLmNvcHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLkRFUFRI
X0NPTVBPTkVOVCwgMCwgMCwgMSwgMSwgMCknKTsKKworICAgICAgICAvLyB0ZXN0IHJlYWwgdGhp
bmcKKyAgICAgICAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgJ2dsLnRl
eEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCAnICsgcmVzICsg
JywgJyArIHJlcyArICcsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuJyArIHR5cGUgKyAnLCBu
dWxsKScpOworCisgICAgICAgIC8vIHRlc3QgdGV4U3ViSW1hZ2UyRAorICAgICAgICBzaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAnZ2wudGV4U3ViSW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCAxLCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLicg
KyB0eXBlICArICcsICcgKyB0eXBlSW5mby5kYXRhICsgJyknKTsKKworICAgICAgICAvLyB0ZXN0
IGNvcHlUZXhTdWJJbWFnZTJECisgICAgICAgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wu
SU5WQUxJRF9PUEVSQVRJT04sICdnbC5jb3B5VGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCAwLCAwLCAwLCAwLCAxLCAxKScpOworCisgICAgICAgIC8vIHRlc3QgZ2VuZXJhdGVNaXBtYXAK
KyAgICAgICAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwg
J2dsLmdlbmVyYXRlTWlwbWFwKGdsLlRFWFRVUkVfMkQpJyk7CisKKyAgICAgICAgdmFyIGZibyA9
IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5G
UkFNRUJVRkZFUiwgZmJvKTsKKyAgICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJB
TUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLlRFWFRVUkVfMkQsIHRleCwgMCk7Cisg
ICAgICAgIC8vaWYgKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpICE9
IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgICAgICB7CisgICAgICAgICAgICAvLyB0cnkg
YWRkaW5nIGEgY29sb3IgYnVmZmVyLgorICAgICAgICAgICAgdmFyIGNvbG9yVGV4ID0gZ2wuY3Jl
YXRlVGV4dHVyZSgpOworICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwg
Y29sb3JUZXgpOworICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBn
bC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgICAgICAgICBnbC50ZXhQ
YXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19F
REdFKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVY
VFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIpOworICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVy
aShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7CisgICAg
ICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIHJlcywgcmVz
LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIGdsLmZy
YW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwg
Z2wuVEVYVFVSRV8yRCwgY29sb3JUZXgsIDApOworICAgICAgICAgICAgc2hvdWxkQmUoJ2dsLmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpJywgJ2dsLkZSQU1FQlVGRkVSX0NP
TVBMRVRFJyk7CisgICAgICAgIH0KKworICAgICAgICAvLyB1c2UgdGhlIGRlZmF1bHQgdGV4dHVy
ZSB0byByZW5kZXIgd2l0aCB3aGlsZSB3ZSByZXR1cm4gdG8gdGhlIGRlcHRoIHRleHR1cmUuCisg
ICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOworCisgICAgICAgIC8v
IHJlbmRlciB0aGUgei1xdWFkCisgICAgICAgIGdsLmVuYWJsZShnbC5ERVBUSF9URVNUKTsKKyAg
ICAgICAgZ2wuY2xlYXJDb2xvcigxLCAwLCAwLCAxKTsKKyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09M
T1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworICAgICAgICBnbC5kcmF3QXJy
YXlzKGdsLlRSSUFOR0xFUywgMCwgNik7CisKKyAgICAgICAgZHVtcEl0KGdsLCByZXMsICItLWZp
cnN0LS0iKTsKKworICAgICAgICAvLyByZW5kZXIgdGhlIGRlcHRoIHRleHR1cmUuCisgICAgICAg
IGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgICAgICAgIGdsLmJp
bmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgICAgICAgIGdsLmNsZWFyQ29sb3IoMCwg
MCwgMSwgMSk7CisgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBU
SF9CVUZGRVJfQklUKTsKKyAgICAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYp
OworCisgICAgICAgIHZhciBhY3R1YWxQaXhlbHMgPSBuZXcgVWludDhBcnJheShyZXMgKiByZXMg
KiA0KTsKKyAgICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCByZXMsIHJlcywgZ2wuUkdCQSwgZ2wu
VU5TSUdORURfQllURSwgYWN0dWFsUGl4ZWxzKTsKKworICAgICAgICBkdW1wSXQoZ2wsIHJlcywg
Ii0tZGVwdGgtLSIpOworCisgICAgICAgIC8vIENoZWNrIHRoYXQgZWFjaCBwaXhlbCdzIFJHQiBh
cmUgdGhlIHNhbWUgYW5kIHRoYXQgaXQncyB2YWx1ZSBpcyBsZXNzCisgICAgICAgIC8vIHRoYW4g
dGhlIHByZXZpb3VzIHBpeGVsIGluIGVpdGhlciBkaXJlY3Rpb24uIEJhc2ljYWxseSB2ZXJpZnkg
d2UgaGF2ZSBhCisgICAgICAgIC8vIGdyYWRpZW50LgorICAgICAgICB2YXIgc3VjY2VzcyA9IHRy
dWU7CisgICAgICAgIGZvciAodmFyIHl5ID0gMDsgeXkgPCByZXM7ICsreXkpIHsKKyAgICAgICAg
ICBmb3IgKHZhciB4eCA9IDA7IHh4IDwgcmVzOyArK3h4KSB7CisgICAgICAgICAgICB2YXIgYWN0
dWFsID0gKHl5ICogcmVzICsgeHgpICogNDsKKyAgICAgICAgICAgIHZhciBsZWZ0ID0gYWN0dWFs
IC0gNDsKKyAgICAgICAgICAgIHZhciBkb3duID0gYWN0dWFsIC0gcmVzICogNDsKKworICAgICAg
ICAgICAgaWYgKGFjdHVhbFBpeGVsc1thY3R1YWwgKyAwXSAhPSBhY3R1YWxQaXhlbHNbYWN0dWFs
ICsgMV0pIHsKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdSICE9IEcnKTsKKyAgICAgICAg
ICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
YWN0dWFsUGl4ZWxzW2FjdHVhbCArIDBdICE9IGFjdHVhbFBpeGVsc1thY3R1YWwgKyAyXSkgewor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1IgIT0gQicpOworICAgICAgICAgICAgICAgIHN1
Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhY3R1YWxQaXhl
bHNbYWN0dWFsICsgM10gIT0gMHhGRikgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ0Eg
IT0gMjU1Jyk7CisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAoeHggPiAwKSB7CisgICAgICAgICAgICAgIGlmIChhY3R1YWxQ
aXhlbHNbYWN0dWFsXSA8PSBhY3R1YWxQaXhlbHNbbGVmdF0pIHsKKyAgICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImFjdHVhbCgiICsgYWN0dWFsUGl4ZWxzW2FjdHVhbF0gKyAiKSA8IGxlZnQo
IiArIGFjdHVhbFBpeGVsc1tsZWZ0XSArICIpIik7CisgICAgICAgICAgICAgICAgICBzdWNjZXNz
ID0gZmFsc2U7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
ICh5eSA+IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoYWN0dWFsUGl4ZWxzW2FjdHVhbF0gPD0g
YWN0dWFsUGl4ZWxzW2Rvd25dKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImFj
dHVhbCgiICsgYWN0dWFsUGl4ZWxzW2FjdHVhbF0gKyAiKSA8IGRvd24oIiArIGFjdHVhbFBpeGVs
c1tkb3duXSArICIpIik7CisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgLy8gQ2hlY2sgdGhhdCBib3R0b20gbGVmdCBjb3JuZXIgaXMgdmFzdGx5IGRpZmZl
cmVudCB0aGF0biB0b3AgcmlnaHQuCisgICAgICAgIGlmIChhY3R1YWxQaXhlbHNbKHJlcyAqIHJl
cyAtIDEpICogNF0gLSBhY3R1YWxQaXhlbHNbMF0gPCAweEMwKSB7CisgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJjb3JuZXJzIGFyZSBub3QgZGlmZmVyZW50IGVub3VnaCIpOworICAgICAgICAgICAg
c3VjY2VzcyA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKKyAg
ICAgICAgICAgIHRlc3RQYXNzZWQoImRlcHRoIHRleHR1cmUgcmVuZGVyZWQgY29ycmVjdGx5LiIp
OworICAgICAgICB9CisgICAgfQorfQorCitkZWJ1ZygiIik7CitzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworaWYgKHdpbmRvdy5ub25LaHJvbm9zRnJhbWV3b3JrTm90aWZ5RG9uZSkgeworICAg
IHdpbmRvdy5ub25LaHJvbm9zRnJhbWV3b3JrTm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148223</attachid>
            <date>2012-06-18 18:48:21 -0700</date>
            <delta_ts>2012-06-18 21:34:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87029-20120618184821.patch</filename>
            <type>text/plain</type>
            <size>64522</size>
            <attacher name="Gregg Tavares">gman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZkNTQ1MjY5MmVlNTQ5
M2U3ZWU0ZTJlZDkyYzIwZTJkNWRiYzhhZC4uNTdkYWUxOWMyMDkwNzA1YzQ5ZWZhMGJiMmIxZTY1
MDQxNjk3ZDY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTA2LTEzICBHcmVn
ZyBUYXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBXRUJHTF9kZXB0
aF90ZXh0dXJlIGV4dGVuc2lvbiB0byBXZWJHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcwMjkKKyAgICAgICAgCisgICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUnVzc2VsbC4KKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC93ZWJn
bC1kZXB0aC10ZXh0dXJlLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOE9iamVjdCk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6V2ViR0xEZXB0
aFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEZXB0aFRleHR1cmU6On5XZWJHTERl
cHRoVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6Z2V0TmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkdMRGVwdGhUZXh0dXJlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlcHRo
VGV4dHVyZS5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RXh0ZW5zaW9uLmguCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMRnJhbWVidWZmZXI6OmluaXRpYWxpemVBdHRhY2htZW50cyk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVNldHRh
YmxlVGV4Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Y29weVRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojpjb3B5VGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleEZ1bmNQ
YXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFs
aWRhdGVUZXhGdW5jRGF0YSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldENsZWFyQml0c0J5QXR0
YWNobWVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6Z2V0Q2xlYXJCaXRzQnlGb3JtYXQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisKIDIwMTItMDYtMTggIE1pa2UgV2VzdCAg
PG1rd3N0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBDcmFzaCBpbiBDU1BTb3VyY2U6OnBhcnNl
U291cmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDlhZDg1YmI5NDIyNTA0ZGMzMmNkNmQxZmY4
OGYzNDY4M2FlZDQ2ZmEuLmM5NzFkMzA2Mjc0ZmVhOTIwMjhlMWIwNTZiNGYzMWQzYjRkYmE5Yzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMzQ2LDYgKzIzNDYsNyBAQCBJRiAoRU5BQkxFX1dF
QkdMKQogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuY3BwCiAgICAgICAg
IGh0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwCiAgICAgICAgIGh0bWwvY2Fu
dmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcAorICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlcHRo
VGV4dHVyZS5jcHAKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKICAg
ICAgICAgaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcAogICAgICAgICBodG1sL2NhbnZhcy9X
ZWJHTExvc2VDb250ZXh0LmNwcApAQCAtMjM4MCw2ICsyMzgxLDcgQEAgSUYgKEVOQUJMRV9XRUJH
TCkKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaWRsCiAgICAgICAgIGh0
bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaWRsCiAgICAgICAgIGh0bWwvY2FudmFz
L1dlYkdMRGVidWdTaGFkZXJzLmlkbAorICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4
dHVyZS5pZGwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5pZGwKICAgICAg
ICAgaHRtbC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5pZGwKICAgICAgICAgaHRtbC9jYW52YXMv
V2ViR0xQcm9ncmFtLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZDU1NDE0
ZmM0NGFkYTNiOTcyZjc4YTVkNzkzYjIyOTZkMDEyOTZjMC4uMzU4OWMwYjlkZTY4OTQ2NTI1NzE3
NTA5NmY1YzkxMGM2MmM3ZjcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0z
NzEsNiArMzcxLDcgQEAgQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwv
Y2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwv
Y2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZh
cy9XZWJHTERlcHRoVGV4dHVyZS5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2Vi
R0xGcmFtZWJ1ZmZlci5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xMb3Nl
Q29udGV4dC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmlk
bCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKaW5kZXggN2I3M2U5ZTdkZjY1NTM5Mjk3ZmU5
OWYwZjk4MDJiYjlhMTc3MDNhYS4uOWI1NGM3ZTQzYTU1MTdjMzQzNDZjNmVhMjNhZGYzYTZmODMw
MTA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtMjk2LDYgKzI5Niw3IEBAIElE
TF9CSU5ESU5HUyArPSBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQu
aWRsIFwKICAgICAkJFBXRC9odG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmlkbCBc
CiAgICAgJCRQV0QvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaWRsIFwKKyAgICAkJFBX
RC9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5pZGwgXAogICAgICQkUFdEL2h0bWwvY2Fu
dmFzL1dlYkdMRnJhbWVidWZmZXIuaWRsIFwKICAgICAkJFBXRC9odG1sL2NhbnZhcy9XZWJHTExv
c2VDb250ZXh0LmlkbCBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmlkbCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAzN2I3ZTVhYzI5OTdlYTMxNjFlOTRh
Yzg2NDYxYTZjZTY3NjViMzQwLi40NGNiZTUxMmRmMzRlMzgxNDBmYTZjYWMzYTE1Yjk0YTUxNDEz
NTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTU3NCw2ICs1NzQsOCBAQCB3
ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJH
TENvbnRleHRBdHRyaWJ1dGVzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTENv
bnRleHRFdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTENvbnRleHRF
dmVudC5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xEZXB0aFRleHR1cmUuY3Bw
IFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xEZXB0aFRleHR1cmUuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMRnJhbWVidWZmZXIuY3BwIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViR0xGcmFtZWJ1ZmZlci5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTV2ViR0xMb3NlQ29udGV4dC5jcHAgXApAQCAtOTE0LDYgKzkxNiw3IEBAIGRvbV9iaW5k
aW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEMuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJp
YnV0ZXMuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50Lmlk
bCBcCisJJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5pZGwgXAogCSQo
V2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5pZGwgXAogCSQoV2ViQ29yZSkv
aHRtbC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9jYW52
YXMvV2ViR0xQcm9ncmFtLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA2OWJhYTkyOWZkNjcyYzkyNjE2
NDhmOGIyMjBmNTdiY2U2N2QzZmQxLi44YjZkYjRhMmU3MmVmNjBhOGJjMzI3NTU1ZjM1NWJkNDEw
NTNlNjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTM4NTQsNiArMzg1NCw3IEBAIGNvbnRhaW5zKERFRklO
RVMsIEVOQUJMRV9XRUJHTD0xKSB7CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9i
amVjdC5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oIFwK
ICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaCBcCisgICAgICAgIGh0bWwv
Y2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEV4
dGVuc2lvbi5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oIFwKICAg
ICAgICAgaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmggXApAQCAtMzg5Niw2ICszODk3LDcgQEAg
Y29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICAgICAgaHRtbC9jYW52YXMv
V2ViR0xDb250ZXh0T2JqZWN0LmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRGVidWdS
ZW5kZXJlckluZm8uY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMu
Y3BwIFwKKyAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwIFwKICAgICAg
ICAgaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMv
V2ViR0xGcmFtZWJ1ZmZlci5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEdldEluZm8u
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBlMTgzNDU3MjczN2IwNjU4ZDY2NzQ5ZmEzMGM0YzY1
OTFhOTVhZjI3Li4wYzJlOGUzZTEwOTZkNjc2OTM2MDY4YWM3ZjAxYTZiNzNlYzY5MDhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0xMTE2LDYgKzExMTYsNyBAQAogICAgICAgICAgICAgJ2h0bWwvY2Fu
dmFzL1dlYkdMQ29udGV4dEV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2Vi
R0xEZWJ1Z1JlbmRlcmVySW5mby5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdM
RGVidWdTaGFkZXJzLmlkbCcsCisgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRl
eHR1cmUuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmlk
bCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5pZGwnLAogICAg
ICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5pZGwnLApAQCAtNTc2NSw2ICs1NzY2
LDggQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgn
LAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcCcsCiAgICAg
ICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaCcsCisgICAgICAgICAgICAn
aHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwJywKKyAgICAgICAgICAgICdodG1sL2Nh
bnZhcy9XZWJHTERlcHRoVGV4dHVyZS5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJH
TEV4dGVuc2lvbi5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9u
LmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwJywKQEAg
LTgyMjMsNiArODIyNiw4IEBACiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgnLAogICAgICAgICAg
ICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTENvbnRleHRB
dHRyaWJ1dGVzLmNwcCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCcsCisgICAgICAgICAgICAnPChQ
Uk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMRGVwdGhUZXh0dXJlLmNw
cCcsCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1dlYkdMRGVwdGhUZXh0dXJlLmgnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTEZyYW1lYnVmZmVyLmNwcCcsCiAgICAgICAgICAgICAn
PChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMRnJhbWVidWZmZXIu
aCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1dlYkdMTG9zZUNvbnRleHQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZjhkNWE4NjI1Yjg3NzJkYTI4ZjZjZGUwYzI4
MmRhOGYxNDJmZGZjLi5lYmIzMzVkZDUwYmM0OTNhNWJjOTlmNTNkOTg0NGFmMjhlNmFlZWJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xNzgwLDYgKzE3ODAsMTAgQEAKIAkJNkUzRkFEMzkxNDczM0Y0MDAwRTQyMzA2IC8qIEpT
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRDM3MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmggKi87IH07CiAJCTZFM0ZBRThFMTQ3MzNGREIwMEU0MjMwNiAv
KiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUU4QzE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwICovOyB9OwogCQk2RTNGQUU4RjE0NzMzRkRCMDBFNDIz
MDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRThEMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQy5oICovOyB9OworCQk2RTNGQUQzODE0NzMzRjQwMDBFNDIz
MDcgLyogSlNXZWJHTERlcHRoVGV4dHVyZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUQzNjE0NzMzRjQwMDBFNDIzMDcgLyogSlNXZWJHTERl
cHRoVGV4dHVyZS5jcHAgKi87IH07CisJCTZFM0ZBRDM5MTQ3MzNGNDAwMEU0MjMwNyAvKiBKU1dl
YkdMRGVwdGhUZXh0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTNGQUQzNzE0NzMzRjQwMDBFNDIzMDcgLyogSlNXZWJHTERlcHRoVGV4dHVyZS5o
ICovOyB9OworCQk2RTNGQUU4RTE0NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1cmUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFF
OEMxNDczM0ZEQjAwRTQyMzA3IC8qIFdlYkdMRGVwdGhUZXh0dXJlLmNwcCAqLzsgfTsKKwkJNkUz
RkFFOEYxNDczM0ZEQjAwRTQyMzA3IC8qIFdlYkdMRGVwdGhUZXh0dXJlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUU4RDE0NzMzRkRCMDBFNDIz
MDcgLyogV2ViR0xEZXB0aFRleHR1cmUuaCAqLzsgfTsKIAkJNkU0N0U2NjAxMEI3OTQ0QjAwQjE4
NkM4IC8qIFdlYkdMR2V0SW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RTQ3RTY1RTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNw
cCAqLzsgfTsKIAkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUYxMEI3
OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oICovOyB9OwogCQk2RTRBQkNENDEzOEVBMEI3
MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0QUJDRDIxMzhFQTBCNzAwNzFEMjkxIC8qIEpT
SFRNTFVua25vd25FbGVtZW50LmNwcCAqLzsgfTsKQEAgLTg4NTYsNiArODg2MCwxMSBAQAogCQk2
RTNGQUU4QzE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEMuY3BwOyBwYXRoID0gY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUzRkFFOEQxNDczM0ZEQjAwRTQyMzA2
IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmg7IHBhdGggPSBjYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NkUzRkFFOTAxNDczM0ZFQTAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5pZGw7
IHBhdGggPSBjYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk2RTNGQUQzNjE0NzMzRjQwMDBFNDIzMDcgLyogSlNXZWJHTERl
cHRoVGV4dHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dl
YkdMRGVwdGhUZXh0dXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkUzRkFE
MzcxNDczM0Y0MDAwRTQyMzA3IC8qIEpTV2ViR0xEZXB0aFRleHR1cmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTERlcHRoVGV4dHVyZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk2RTNGQUU4QzE0NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRl
eHR1cmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xEZXB0
aFRleHR1cmUuY3BwOyBwYXRoID0gY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkUzRkFFOEQxNDczM0ZEQjAwRTQyMzA3IC8qIFdlYkdM
RGVwdGhUZXh0dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMRGVw
dGhUZXh0dXJlLmg7IHBhdGggPSBjYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkUzRkFFOTAxNDczM0ZFQTAwRTQyMzA3IC8qIFdlYkdMRGVw
dGhUZXh0dXJlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJHTERlcHRoVGV4dHVyZS5p
ZGw7IHBhdGggPSBjYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2RTQ3RTY1RTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkdMR2V0SW5mby5jcHA7
IHBhdGggPSBjYW52YXMvV2ViR0xHZXRJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTEdldEluZm8uaDsgcGF0aCA9IGNhbnZhcy9X
ZWJHTEdldEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU0QUJDRDIxMzhF
QTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTFVua25vd25FbGVtZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0ODkzLDYgKzE0OTAyLDkgQEAKIAkJCQlBMEVFMERGMzE0
NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwICovLAogCQkJCUEwRUUwREY0
MTQ0RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnU2hhZGVycy5oICovLAogCQkJCUEwRUUwREVG
MTQ0RjgyMzIwMEY4MEIwRCAvKiBXZWJHTERlYnVnU2hhZGVycy5pZGwgKi8sCisJCQkJNkUzRkFF
OEMxNDczM0ZEQjAwRTQyMzA3IC8qIFdlYkdMRGVwdGhUZXh0dXJlLmNwcCAqLywKKwkJCQk2RTNG
QUU4RDE0NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1cmUuaCAqLywKKwkJCQk2RTNG
QUU5MDE0NzMzRkVBMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1cmUuaWRsICovLAogCQkJCTZF
QkYwRTUyMTJBODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5jcHAgKi8sCiAJCQkJNkVC
RjBFNTMxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggKi8sCiAJCQkJNDlDN0I5
QUUxMDQyRDMyRTAwMDlENDQ3IC8qIFdlYkdMRnJhbWVidWZmZXIuY3BwICovLApAQCAtMTgxNzYs
NiArMTgxODgsOCBAQAogCQkJCTZFRThBNzcxMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29u
dGV4dEF0dHJpYnV0ZXMuaCAqLywKIAkJCQlCQzJDQkY3QTE0MEYxRDU4MDAzODc5QkUgLyogSlNX
ZWJHTENvbnRleHRFdmVudC5jcHAgKi8sCiAJCQkJQkMyQ0JGNEIxNDBGMUE2NTAwMzg3OUJFIC8q
IEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLywKKwkJCQk2RTNGQUQzNjE0NzMzRjQwMDBFNDIzMDcg
LyogSlNXZWJHTERlcHRoVGV4dHVyZS5jcHAgKi8sCisJCQkJNkUzRkFEMzcxNDczM0Y0MDAwRTQy
MzA3IC8qIEpTV2ViR0xEZXB0aFRleHR1cmUuaCAqLywKIAkJCQk0OUM3Qjk4NDEwNDJEMkQzMDAw
OUQ0NDcgLyogSlNXZWJHTEZyYW1lYnVmZmVyLmNwcCAqLywKIAkJCQk0OUM3Qjk4NTEwNDJEMkQz
MDAwOUQ0NDcgLyogSlNXZWJHTEZyYW1lYnVmZmVyLmggKi8sCiAJCQkJOTNGMUQ1QkUxMkQ1MzM1
NjAwODMyQkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4dC5jcHAgKi8sCkBAIC0yMzg2OSw2ICsyMzg4
Myw3IEBACiAJCQkJNkUzRkFEMzkxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFRThBNzczMTBGODAzRjMwMDVBNEEy
NCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMkNC
RjRFMTQwRjFBQkQwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQk2RTNGQUQzOTE0NzMzRjQwMDBFNDIzMDcgLyogSlNXZWJHTERlcHRoVGV4dHVyZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5OTgxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xG
cmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMUQ1QzExMkQ1MzM1NjAwODMyQkVD
IC8qIEpTV2ViR0xMb3NlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5OUMxMDQy
RDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xQcm9ncmFtLmggaW4gSGVhZGVycyAqLywKQEAgLTI0OTQ5
LDYgKzI0OTY0LDcgQEAKIAkJCQkwMUQzQ0Y4NTE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xDb250
ZXh0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMEVFMERGNjE0NEY4MjU1MDBGODBCMEQg
LyogV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTBFRTBERjgx
NDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk2RTNGQUU4RjE0NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1cmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTZFQkYwRTU1MTJBODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5Q0YxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMRnJh
bWVidWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFNDdFNjYxMTBCNzk0NEIwMEIxODZDOCAv
KiBXZWJHTEdldEluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtMjcxMTAsNiArMjcxMjYsNyBAQAog
CQkJCTZFM0ZBRDM4MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZFRThBNzcyMTBGODAzRjMwMDVBNEEyNCAvKiBK
U1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyQ0JGN0Ix
NDBGMUQ1ODAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNkUzRkFEMzgxNDczM0Y0MDAwRTQyMzA3IC8qIEpTV2ViR0xEZXB0aFRleHR1cmUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDlDN0I5OTcxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xG
cmFtZWJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0YxRDVDMDEyRDUzMzU2MDA4MzJC
RUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdCOTlC
MTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMUHJvZ3JhbS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI4MDAzLDYgKzI4MDIwLDcgQEAKIAkJCQkwMUQzQ0Y4NDE0QkQwQTMwMDBGRTk5NzAgLyogV2Vi
R0xDb250ZXh0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEwRUUwREY1MTQ0RjgyNTUw
MEY4MEIwRCAvKiBXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUEwRUUwREY3MTQ0RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnU2hhZGVycy5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk2RTNGQUU4RTE0NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1
cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkVCRjBFNTQxMkE4OTI5ODAwREIxNzA5IC8qIFdl
YkdMRXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdCOUNFMTA0MkQzMkYwMDA5
RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZFNDdFNjYw
MTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5n
Q29udGV4dEN1c3RvbS5jcHAKaW5kZXggZDZjZjRhZDJmODhiMzdmMDFmYTgzNmJlZmRjMjQzMDdj
ZDNiYzcwMy4uZDZhMTcxZmI5NDk4MmIzYTc2OGM1ZjQ3NjQzZjMzZDYwZjA5MTA0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkpTVWludDhB
cnJheS5oIgogI2luY2x1ZGUgIkpTV2ViR0xCdWZmZXIuaCIKICNpbmNsdWRlICJKU1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmgiCisjaW5jbHVkZSAiSlNXZWJHTERlcHRoVGV4dHVyZS5oIgog
I2luY2x1ZGUgIkpTV2ViR0xGcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTV2ViR0xMb3NlQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkpTV2ViR0xQcm9ncmFtLmgiCkBAIC02Myw2ICs2NCw3IEBACiAj
aW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCIKICNpbmNsdWRlICJXZWJHTERl
YnVnUmVuZGVyZXJJbmZvLmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1NoYWRlcnMuaCIKKyNpbmNs
dWRlICJXZWJHTERlcHRoVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdMRXh0ZW5zaW9uLmgiCiAj
aW5jbHVkZSAiV2ViR0xGcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMR2V0SW5mby5oIgpA
QCAtMjA0LDYgKzIwNiw4IEBAIHN0YXRpYyBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXZWJHTEV4dGVuCiAgICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8V2ViR0xEZWJ1Z1NoYWRlcnMq
PihleHRlbnNpb24pKTsKICAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpXZWJLaXRXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQ05hbWU6CiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9i
amVjdCwgc3RhdGljX2Nhc3Q8V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMqPihleHRlbnNpb24p
KTsKKyAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpXZWJLaXRXZWJHTERlcHRoVGV4dHVyZU5hbWU6
CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8V2Vi
R0xEZXB0aFRleHR1cmUqPihleHRlbnNpb24pKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAKaW5kZXggODUyN2JjMjFiODg2ZTZlMGMxYjViNDE4M2Q5NjRlOTA0Y2E1YWI3My4u
NTA1OWRkZjBhNTQ2YTgyMDQyMTFjNTgyYjVhOWM5OGE1MzM2ZTlhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiVjhX
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIgogI2luY2x1ZGUgIlY4V2ViR0xEZWJ1Z1JlbmRl
cmVySW5mby5oIgogI2luY2x1ZGUgIlY4V2ViR0xEZWJ1Z1NoYWRlcnMuaCIKKyNpbmNsdWRlICJW
OFdlYkdMRGVwdGhUZXh0dXJlLmgiCiAjaW5jbHVkZSAiVjhXZWJHTEZyYW1lYnVmZmVyLmgiCiAj
aW5jbHVkZSAiVjhXZWJHTExvc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiVjhXZWJHTFByb2dyYW0u
aCIKQEAgLTIwNCw2ICsyMDUsMTAgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
T2JqZWN0KFdlYkdMRXh0ZW5zaW9uKiBleHRlbnNpb24sIHY4OjpIYW5kbGU8djgKICAgICAgICAg
ZXh0ZW5zaW9uT2JqZWN0ID0gdG9WOChzdGF0aWNfY2FzdDxXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQyo+KGV4dGVuc2lvbiksIGlzb2xhdGUpOwogICAgICAgICByZWZlcmVuY2VOYW1lID0gIndl
YktpdFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDTmFtZSI7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgV2ViR0xFeHRlbnNpb246OldlYktpdFdlYkdMRGVwdGhUZXh0dXJlTmFtZToKKyAgICAg
ICAgZXh0ZW5zaW9uT2JqZWN0ID0gdG9WOChzdGF0aWNfY2FzdDxXZWJHTERlcHRoVGV4dHVyZSo+
KGV4dGVuc2lvbiksIGlzb2xhdGUpOworICAgICAgICByZWZlcmVuY2VOYW1lID0gIndlYktpdFdl
YkdMRGVwdGhUZXh0dXJlTmFtZSI7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlQo
IWV4dGVuc2lvbk9iamVjdC5Jc0VtcHR5KCkpOwogICAgIFY4RE9NV3JhcHBlcjo6c2V0TmFtZWRI
aWRkZW5SZWZlcmVuY2UoY29udGV4dE9iamVjdCwgcmVmZXJlbmNlTmFtZSwgZXh0ZW5zaW9uT2Jq
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhU
ZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zYWNmNDZhMWI4NTBmY2FjMDhhYjYyY2QwOGU2YTMzNjA2ZDhkZDdm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0
aFRleHR1cmUuY3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJXZWJHTERlcHRoVGV4dHVyZS5oIgor
CisjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2Vi
R0xEZXB0aFRleHR1cmU6OldlYkdMRGVwdGhUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCog
Y29udGV4dCkKKyAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCit7Cit9CisKK1dlYkdMRGVw
dGhUZXh0dXJlOjp+V2ViR0xEZXB0aFRleHR1cmUoKQoreworfQorCitXZWJHTEV4dGVuc2lvbjo6
RXh0ZW5zaW9uTmFtZSBXZWJHTERlcHRoVGV4dHVyZTo6Z2V0TmFtZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFdlYktpdFdlYkdMRGVwdGhUZXh0dXJlTmFtZTsKK30KKworUGFzc093blB0cjxXZWJH
TERlcHRoVGV4dHVyZT4gV2ViR0xEZXB0aFRleHR1cmU6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJHTERlcHRoVGV4
dHVyZShjb250ZXh0KSk7Cit9CisKK2Jvb2wgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKK3sKKyAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lv
bnMgPSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7CisgICAgcmV0dXJuIGV4dGVuc2lvbnMtPnN1
cHBvcnRzKCJHTF9DSFJPTUlVTV9kZXB0aF90ZXh0dXJlIikKKyAgICAgICAgfHwgZXh0ZW5zaW9u
cy0+c3VwcG9ydHMoIkdMX09FU19kZXB0aF90ZXh0dXJlIikKKyAgICAgICAgfHwgZXh0ZW5zaW9u
cy0+c3VwcG9ydHMoIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhYzZhYWJmZjRkZmUw
OTRjZTZiNTExNzgzYjk3YjRjZmE5MjQ1NGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYkdMRGVwdGhUZXh0dXJlX2gKKyNkZWZpbmUgV2ViR0xEZXB0aFRleHR1
cmVfaAorCisjaW5jbHVkZSAiV2ViR0xFeHRlbnNpb24uaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYkdMRGVwdGhUZXh0dXJl
IDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0
cjxXZWJHTERlcHRoVGV4dHVyZT4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOworCisg
ICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dDNEKik7CisKKyAgICB2aXJ0
dWFsIH5XZWJHTERlcHRoVGV4dHVyZSgpOworICAgIHZpcnR1YWwgRXh0ZW5zaW9uTmFtZSBnZXRO
YW1lKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgV2ViR0xEZXB0aFRleHR1cmUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBXZWJHTERlcHRoVGV4dHVyZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTERlcHRoVGV4dHVyZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTERlcHRoVGV4dHVyZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTA3NDUwZDE4YmJiMTlmNWIzNDhiYWRh
YmJjMmJkNzY3Yzk2ZjZjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9k
dWxlIGh0bWwgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVdFQkdMLAor
ICAgICAgICBKU0dlbmVyYXRlSXNSZWFjaGFibGU9SW1wbENvbnRleHQsCisgICAgICAgIE9taXRD
b25zdHJ1Y3RvcgorICAgIF0gV2ViR0xEZXB0aFRleHR1cmUgeworICAgIH07Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAppbmRleCBhNGQzOTcwMjk3YjJk
OWY5N2FkNjJjNzM4YzRhYzhlMjEwOGViZjhlLi5jNjZhNjA4NjFjMTdhZmVkOTgwNzM1NGMxOWI3
ZmM2MGIyYTc3NWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5z
aW9uLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgICAgICBXZWJHTERlYnVnUmVuZGVy
ZXJJbmZvTmFtZSwKICAgICAgICAgV2ViR0xEZWJ1Z1NoYWRlcnNOYW1lLAogICAgICAgICBXZWJL
aXRXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ05hbWUsIC8vIFdFQktJVF8gcHJlZml4IHVudGls
IGV4dGVuc2lvbiBpcyBvZmZpY2lhbAorICAgICAgICBXZWJLaXRXZWJHTERlcHRoVGV4dHVyZU5h
bWUsIC8vIFdFQktJVF8gcHJlZml4IHVudGlsIGV4dGVuc2lvbiBpcyBvZmZpY2lhbAogICAgIH07
CiAKICAgICB2b2lkIHJlZigpIHsgbV9jb250ZXh0LT5yZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggODQ4
NGQ5YTFhMDBkZDAyZmRmNjkzNWQwNGQ3MDc0N2U1ZGU5NjU3YS4uN2RjMDBhZGZhYzU2OTY1YjFk
YTE5N2I3ODFiMjc2MTI3MGIzYzUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5j
bHVkZSAiV2ViR0xDb250ZXh0R3JvdXAuaCIKICNpbmNsdWRlICJXZWJHTERlYnVnUmVuZGVyZXJJ
bmZvLmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1NoYWRlcnMuaCIKKyNpbmNsdWRlICJXZWJHTERl
cHRoVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJX
ZWJHTExvc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViR0xQcm9ncmFtLmgiCkBAIC04MSw3ICs4
Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGRvdWJsZSBzZWNvbmRzQmV0d2Vl
blJlc3RvcmVBdHRlbXB0cyA9IDEuMDsKLWNvbnN0IGludCBtYXhHTEVycm9yc0FsbG93ZWRUb0Nv
bnNvbGUgPSAxMDsKK2NvbnN0IGludCBtYXhHTEVycm9yc0FsbG93ZWRUb0NvbnNvbGUgPSAyNTY7
CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTEzMjAsMTIgKzEzMjEsMjMgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGludCBsZXYKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCitib29s
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVTZXR0YWJsZVRleEZvcm1hdChjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIGZvcm1hdCkKK3sKKyAgICBpZiAoR3JhcGhpY3ND
b250ZXh0M0Q6OmdldENsZWFyQml0c0J5Rm9ybWF0KGZvcm1hdCkgJiAoR3JhcGhpY3NDb250ZXh0
M0Q6OkRFUFRIX0JVRkZFUl9CSVQgfCBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9CVUZGRVJf
QklUKSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImZvcm1hdCBjYW4gbm90IGJlIHNldCwgb25s
eSByZW5kZXJlZCB0byIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVy
biB0cnVlOworfQorCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29weVRleEltYWdlMkQo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwg
R0MzRGludCBib3JkZXIpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIGlmICghdmFsaWRhdGVUZXhGdW5jUGFyYW1ldGVycygiY29weVRleEltYWdlMkQi
LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBp
bnRlcm5hbGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpKQogICAgICAg
ICByZXR1cm47CisgICAgaWYgKCF2YWxpZGF0ZVNldHRhYmxlVGV4Rm9ybWF0KCJjb3B5VGV4SW1h
Z2UyRCIsIGludGVybmFsZm9ybWF0KSkKKyAgICAgICAgcmV0dXJuOwogICAgIFdlYkdMVGV4dHVy
ZSogdGV4ID0gdmFsaWRhdGVUZXh0dXJlQmluZGluZygiY29weVRleEltYWdlMkQiLCB0YXJnZXQs
IHRydWUpOwogICAgIGlmICghdGV4KQogICAgICAgICByZXR1cm47CkBAIC0xMzgwLDcgKzEzOTIs
MTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJjb3B5VGV4U3ViSW1hZ2UyRCIsICJy
ZWN0YW5nbGUgb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYg
KCFpc1RleEludGVybmFsRm9ybWF0Q29sb3JCdWZmZXJDb21iaW5hdGlvblZhbGlkKHRleC0+Z2V0
SW50ZXJuYWxGb3JtYXQodGFyZ2V0LCBsZXZlbCksIGdldEJvdW5kRnJhbWVidWZmZXJDb2xvckZv
cm1hdCgpKSkgeworICAgIEdDM0RlbnVtIGludGVybmFsZm9ybWF0ID0gdGV4LT5nZXRJbnRlcm5h
bEZvcm1hdCh0YXJnZXQsIGxldmVsKTsKKyAgICBpZiAoIXZhbGlkYXRlU2V0dGFibGVUZXhGb3Jt
YXQoImNvcHlUZXhTdWJJbWFnZTJEIiwgaW50ZXJuYWxmb3JtYXQpKQorICAgICAgICByZXR1cm47
CisgICAgaWYgKCFpc1RleEludGVybmFsRm9ybWF0Q29sb3JCdWZmZXJDb21iaW5hdGlvblZhbGlk
KGludGVybmFsZm9ybWF0LCBnZXRCb3VuZEZyYW1lYnVmZmVyQ29sb3JGb3JtYXQoKSkpIHsKICAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFU
SU9OLCAiY29weVRleFN1YkltYWdlMkQiLCAiZnJhbWVidWZmZXIgaXMgaW5jb21wYXRpYmxlIGZv
cm1hdCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjE3NSw2ICsyMTkwLDkgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdlbmVyYXRlTWlwbWFwKEdDM0RlbnVtIHRhcmdldCkK
ICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BF
UkFUSU9OLCAiZ2VuZXJhdGVNaXBtYXAiLCAibGV2ZWwgMCBub3QgcG93ZXIgb2YgMiBvciBub3Qg
YWxsIHRoZSBzYW1lIHNpemUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAoIXZh
bGlkYXRlU2V0dGFibGVUZXhGb3JtYXQoImdlbmVyYXRlTWlwbWFwIiwgdGV4LT5nZXRJbnRlcm5h
bEZvcm1hdCh0YXJnZXQsIDApKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8gZ2VuZXJhdGVN
aXBtYXAgd29uJ3Qgd29yayBwcm9wZXJseSBpZiBtaW5GaWx0ZXIgaXMgbm90IE5FQVJFU1RfTUlQ
TUFQX0xJTkVBUgogICAgIC8vIG9uIE1hYy4gIFJlbW92ZSB0aGUgaGFjayBvbmNlIHRoaXMgZHJp
dmVyIGJ1ZyBpcyBmaXhlZC4KICNpZiBPUyhEQVJXSU4pCkBAIC0yMzUwLDcgKzIzNjgsMTQgQEAg
V2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEMg
PSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6Y3JlYXRlKHRoaXMpOwogICAgICAgICByZXR1
cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQy5nZXQoKTsKICAgICB9Ci0KKyAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIldFQktJVF9XRUJHTF9kZXB0aF90ZXh0dXJlIikKKyAg
ICAgICAgJiYgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChncmFwaGljc0NvbnRleHQzRCgp
KSkgeworICAgICAgICBpZiAoIW1fd2ViZ2xEZXB0aFRleHR1cmUpIHsKKyAgICAgICAgICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9kZXB0
aF90ZXh0dXJlIik7CisgICAgICAgICAgICBtX3dlYmdsRGVwdGhUZXh0dXJlID0gV2ViR0xEZXB0
aFRleHR1cmU6OmNyZWF0ZSh0aGlzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV93ZWJn
bERlcHRoVGV4dHVyZS5nZXQoKTsKKyAgICB9CiAgICAgaWYgKGFsbG93UHJpdmlsZWdlZEV4dGVu
c2lvbnMoKSkgewogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIldFQkdMX2Rl
YnVnX3JlbmRlcmVyX2luZm8iKSkgewogICAgICAgICAgICAgaWYgKCFtX3dlYmdsRGVidWdSZW5k
ZXJlckluZm8pCkBAIC0yODM0LDYgKzI4NTksOCBAQCBWZWN0b3I8U3RyaW5nPiBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQogICAgIHJlc3VsdC5hcHBlbmQo
IldFQktJVF9XRUJHTF9sb3NlX2NvbnRleHQiKTsKICAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEM6OnN1cHBvcnRlZCh0aGlzKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lU
X1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIik7CisgICAgaWYgKFdlYkdMRGVwdGhUZXh0
dXJlOjpzdXBwb3J0ZWQoZ3JhcGhpY3NDb250ZXh0M0QoKSkpCisgICAgICAgIHJlc3VsdC5hcHBl
bmQoIldFQktJVF9XRUJHTF9kZXB0aF90ZXh0dXJlIik7CiAKICAgICBpZiAoYWxsb3dQcml2aWxl
Z2VkRXh0ZW5zaW9ucygpKSB7CiAgICAgICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+c3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpKQpAQCAtMzUy
NiwxMSArMzU1MywyMSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyREJh
c2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZQogICAgICAgICB9CiAgICAg
fQogICAgIGlmICghcGl4ZWxzKSB7Ci0gICAgICAgIGJvb2wgc3VjY2VlZCA9IG1fY29udGV4dC0+
dGV4SW1hZ2UyRFJlc291cmNlU2FmZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtX3VucGFja0FsaWdubWVudCk7Ci0g
ICAgICAgIGlmICghc3VjY2VlZCkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gTm90
ZTogQ2hyb21pdW0ncyBPcGVuR0wgaW1wbGVtZW50YXRpb24gY2xlYXJzIHRleHR1cmVzIGFuZCBp
c1Jlc291cmNlU2FmZSgpIGlzIHRoZXJlZm9yZSB0cnVlLgorICAgICAgICAvLyBGb3Igb3RoZXIg
aW1wbGVtZW50YXRpb25zLCBpZiB0aGV5IGFyZSB1c2luZyBBTkdMRV9kZXB0aF90ZXh0dXJlLCBB
TkdMRSBkZXB0aCB0ZXh0dXJlcworICAgICAgICAvLyBjYW4gbm90IGJlIGNsZWFyZWQgd2l0aCB0
ZXhJbWFnZTJEIGFuZCBtdXN0IGJlIGNsZWFyZWQgYnkgYmluZGluZyB0byBhbiBmYm8gYW5kIGNh
bGxpbmcKKyAgICAgICAgLy8gY2xlYXIuCisgICAgICAgIGlmIChpc1Jlc291cmNlU2FmZSgpKQor
ICAgICAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgMCk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgYm9vbCBzdWNjZWVkID0gbV9jb250ZXh0LT50ZXhJbWFnZTJE
UmVzb3VyY2VTYWZlKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtX3VucGFja0FsaWdubWVudCk7CisgICAgICAg
ICAgICBpZiAoIXN1Y2NlZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAg
ICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCF2YWxpZGF0ZVNldHRhYmxlVGV4Rm9ybWF0KCJ0ZXhJ
bWFnZTJEIiwgaW50ZXJuYWxmb3JtYXQpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBt
X2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIsIGZvcm1hdCwg
dHlwZSwgcGl4ZWxzKTsKICAgICB9CkBAIC0zNTQzLDYgKzM1ODAsOCBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyREltcGwoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgZmxpcFksIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgZWMgPSAwOworICAgIGlmICghdmFsaWRhdGVTZXR0YWJsZVRleEZvcm1hdCgidGV4SW1hZ2Uy
RCIsIGludGVybmFsZm9ybWF0KSkKKyAgICAgICAgcmV0dXJuOwogICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhOwogICAgIGlmICghbV9jb250ZXh0LT5leHRyYWN0SW1hZ2VEYXRhKGltYWdlLCBmb3Jt
YXQsIHR5cGUsIGZsaXBZLCBwcmVtdWx0aXBseUFscGhhLCBtX3VucGFja0NvbG9yc3BhY2VDb252
ZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dDNEOjpOT05FLCBkYXRhKSkgewogICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgInRleEltYWdl
MkQiLCAiYmFkIGltYWdlIGRhdGEiKTsKQEAgLTM1NjAsNyArMzU5OSw3IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZl
bCwgR0MzRGVudW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0Rz
aXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5
cGUsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBp
ZiAoaXNDb250ZXh0TG9zdCgpIHx8ICF2YWxpZGF0ZVRleEZ1bmNEYXRhKCJ0ZXhJbWFnZTJEIiwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMsIE51bGxBbGxvd2VkKSkKKyAgICBp
ZiAoaXNDb250ZXh0TG9zdCgpIHx8ICF2YWxpZGF0ZVRleEZ1bmNEYXRhKCJ0ZXhJbWFnZTJEIiwg
bGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLCBOdWxsQWxsb3dlZCkp
CiAgICAgICAgIHJldHVybjsKICAgICB2b2lkKiBkYXRhID0gcGl4ZWxzID8gcGl4ZWxzLT5iYXNl
QWRkcmVzcygpIDogMDsKICAgICBWZWN0b3I8dWludDhfdD4gdGVtcERhdGE7CkBAIC0zNzM4LDYg
KzM3NzcsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyREJhc2Uo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQwogICAgICAgICByZXR1cm47CiAgICAg
aWYgKCF2YWxpZGF0ZVNpemUoInRleFN1YkltYWdlMkQiLCB4b2Zmc2V0LCB5b2Zmc2V0KSkKICAg
ICAgICAgcmV0dXJuOworICAgIGlmICghdmFsaWRhdGVTZXR0YWJsZVRleEZvcm1hdCgidGV4U3Vi
SW1hZ2UyRCIsIGZvcm1hdCkpCisgICAgICAgIHJldHVybjsKICAgICBXZWJHTFRleHR1cmUqIHRl
eCA9IHZhbGlkYXRlVGV4dHVyZUJpbmRpbmcoInRleFN1YkltYWdlMkQiLCB0YXJnZXQsIHRydWUp
OwogICAgIGlmICghdGV4KQogICAgICAgICByZXR1cm47CkBAIC0zNzc3LDcgKzM4MTgsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQs
IEdDM0RpbnQgbGV2ZWwsIEdDM0RpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0
eXBlLCBBcnJheUJ1ZmZlclZpZXcqIHBpeGVscywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAg
aWYgKGlzQ29udGV4dExvc3QoKSB8fCAhdmFsaWRhdGVUZXhGdW5jRGF0YSgidGV4U3ViSW1hZ2Uy
RCIsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLCBOdWxsTm90QWxsb3dlZCkp
CisgICAgaWYgKGlzQ29udGV4dExvc3QoKSB8fCAhdmFsaWRhdGVUZXhGdW5jRGF0YSgidGV4U3Vi
SW1hZ2UyRCIsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscywgTnVs
bE5vdEFsbG93ZWQpKQogICAgICAgICByZXR1cm47CiAgICAgdm9pZCogZGF0YSA9IHBpeGVscy0+
YmFzZUFkZHJlc3MoKTsKICAgICBWZWN0b3I8dWludDhfdD4gdGVtcERhdGE7CkBAIC00NzAxLDcg
KzQ3NDIsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVTdHJpbmcoY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbgogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlw
ZShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlw
ZSkKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRU
eXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0
eXBlLCBHQzNEaW50IGxldmVsKQogewogICAgIHN3aXRjaCAoZm9ybWF0KSB7CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6QUxQSEE6CkBAIC00NzEwLDYgKzQ3NTEsMTEgQEAgYm9vbCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I6CiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQToKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UOgorICAgICAgICBpZiAobV93ZWJnbERlcHRo
VGV4dHVyZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJERVBUSF9DT01Q
T05FTlQgdGV4dHVyZSBmb3JtYXQgbm90IGVuYWJsZWQiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dDNEOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgdGV4dHVyZSBmb3JtYXQi
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDcyNiw2ICs0NzcyLDEyIEBAIGJvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52
YWxpZCB0ZXh0dXJlIHR5cGUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0lOVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpVTlNJR05FRF9TSE9SVDoKKyAgICAgICAgaWYgKG1fd2ViZ2xEZXB0aFRleHR1cmUpCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCB0ZXh0dXJlIHR5cGUiKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImlu
dmFsaWQgdGV4dHVyZSB0eXBlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ3NTksNiAr
NDgxMSwyMSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXhGdW5jRm9y
bWF0QW5kVHlwZShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkRFUFRIX0NPTVBPTkVOVDoKKyAgICAgICAgaWYgKCFtX3dlYmdsRGVwdGhUZXh0dXJlKSB7
CisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIGZvcm1hdC4gREVQVEhfQ09NUE9ORU5UIG5v
dCBlbmFibGVkIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKHR5cGUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JUCisgICAgICAg
ICAgICAmJiB0eXBlICE9IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9JTlQpIHsKKyAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJB
VElPTiwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCB0eXBlIGZvciBERVBUSF9DT01QT05FTlQgZm9y
bWF0Iik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGxldmVsID4gMCkgeworICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAibGV2ZWwgbXVzdCBiZSAwIGZv
ciBERVBUSF9DT01QT05FTlQgZm9ybWF0Iik7CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0KQEAgLTQ4MDUsNyArNDg3Miw3IEBAIGJvb2wgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp2YWxpZGF0ZVRleEZ1bmNQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSwKICAgICAvLyBXZSBhYnNvbHV0ZWx5IGhhdmUgdG8gdmFsaWRhdGUgdGhlIGZvcm1hdCBh
bmQgdHlwZSBjb21iaW5hdGlvbi4KICAgICAvLyBUaGUgdGV4SW1hZ2UyRCBlbnRyeSBwb2ludHMg
dGFraW5nIEhUTUxJbWFnZSwgZXRjLiB3aWxsIHByb2R1Y2UKICAgICAvLyB0ZW1wb3JhcnkgZGF0
YSBiYXNlZCBvbiB0aGlzIGNvbWJpbmF0aW9uLCBzbyBpdCBtdXN0IGJlIGxlZ2FsLgotICAgIGlm
ICghdmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZShmdW5jdGlvbk5hbWUsIGZvcm1hdCwgdHlw
ZSkgfHwgIXZhbGlkYXRlVGV4RnVuY0xldmVsKGZ1bmN0aW9uTmFtZSwgdGFyZ2V0LCBsZXZlbCkp
CisgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKGZ1bmN0aW9uTmFtZSwgZm9y
bWF0LCB0eXBlLCBsZXZlbCkgfHwgIXZhbGlkYXRlVGV4RnVuY0xldmVsKGZ1bmN0aW9uTmFtZSwg
dGFyZ2V0LCBsZXZlbCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICh3aWR0aCA8
IDAgfHwgaGVpZ2h0IDwgMCkgewpAQCAtNDg0OSw3ICs0OTE2LDcgQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4RnVuY1BhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dmFsaWRhdGVUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsCitib29sIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUsIEdDM0RpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3Jt
YXQsIEdDM0RlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBcnJheUJ1ZmZlclZpZXcqIHBpeGVscywKQEAgLTQ4NjIsNyArNDkyOSw5IEBA
IGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleEZ1bmNEYXRhKGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlm
ICghdmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZShmdW5jdGlvbk5hbWUsIGZvcm1hdCwgdHlw
ZSkpCisgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKGZ1bmN0aW9uTmFtZSwg
Zm9ybWF0LCB0eXBlLCBsZXZlbCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXZh
bGlkYXRlU2V0dGFibGVUZXhGb3JtYXQoZnVuY3Rpb25OYW1lLCBmb3JtYXQpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBzd2l0Y2ggKHR5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggNGIyMTg4Njg2MTk5
NTg3Mzg1YTU1NWU4YmIyYWQ3NzhiMmQ5ODBkYS4uODYxMjE5NjU2ZjVlNTNjOThkYTE2ZjdiMTFk
NDc4ZDBlOWVhMTgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTU3LDYgKzU3LDcgQEAgY2xhc3MgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEM7CiBjbGFzcyBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOwogY2xhc3MgV2Vi
R0xEZWJ1Z1JlbmRlcmVySW5mbzsKIGNsYXNzIFdlYkdMRGVidWdTaGFkZXJzOworY2xhc3MgV2Vi
R0xEZXB0aFRleHR1cmU7CiBjbGFzcyBXZWJHTEV4dGVuc2lvbjsKIGNsYXNzIFdlYkdMRnJhbWVi
dWZmZXI7CiBjbGFzcyBXZWJHTExvc2VDb250ZXh0OwpAQCAtNTA5LDYgKzUxMCw3IEBAIHB1Ymxp
YzoKICAgICBPd25QdHI8V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbz4gbV93ZWJnbERlYnVnUmVuZGVy
ZXJJbmZvOwogICAgIE93blB0cjxXZWJHTERlYnVnU2hhZGVycz4gbV93ZWJnbERlYnVnU2hhZGVy
czsKICAgICBPd25QdHI8V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM+IG1fd2ViZ2xDb21wcmVz
c2VkVGV4dHVyZVMzVEM7CisgICAgT3duUHRyPFdlYkdMRGVwdGhUZXh0dXJlPiBtX3dlYmdsRGVw
dGhUZXh0dXJlOwogCiAgICAgLy8gSGVscGVycyBmb3IgZ2V0UGFyYW1ldGVyIGFuZCBvdGhlcnMK
ICAgICBXZWJHTEdldEluZm8gZ2V0Qm9vbGVhblBhcmFtZXRlcihHQzNEZW51bSk7CkBAIC01Nzcs
NyArNTc5LDcgQEAgcHVibGljOgogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNoZWNrIGlu
cHV0IGZvcm1hdC90eXBlIGZvciBmdW5jdGlvbnMge2NvcHl9VGV4e1N1Yn1JbWFnZS4KICAgICAv
LyBHZW5lcmF0ZXMgR0wgZXJyb3IgYW5kIHJldHVybnMgZmFsc2UgaWYgcGFyYW1ldGVycyBhcmUg
aW52YWxpZC4KLSAgICBib29sIHZhbGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUpOworICAgIGJv
b2wgdmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUs
IEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRGludCBsZXZlbCk7CiAKICAgICAv
LyBIZWxwZXIgZnVuY3Rpb24gdG8gY2hlY2sgaW5wdXQgbGV2ZWwgZm9yIGZ1bmN0aW9ucyB7Y29w
eX1UZXh7U3VifUltYWdlLgogICAgIC8vIEdlbmVyYXRlcyBHTCBlcnJvciBhbmQgcmV0dXJucyBm
YWxzZSBpZiBsZXZlbCBpcyBpbnZhbGlkLgpAQCAtNTk5LDEyICs2MDEsMTggQEAgcHVibGljOgog
ICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSB0aGF0IHRoZSBnaXZlbiBBcnJheUJ1
ZmZlclZpZXcKICAgICAvLyBpcyBvZiB0aGUgY29ycmVjdCB0eXBlIGFuZCBjb250YWlucyBlbm91
Z2ggZGF0YSBmb3IgdGhlIHRleEltYWdlIGNhbGwuCiAgICAgLy8gR2VuZXJhdGVzIEdMIGVycm9y
IGFuZCByZXR1cm5zIGZhbHNlIGlmIHBhcmFtZXRlcnMgYXJlIGludmFsaWQuCi0gICAgYm9vbCB2
YWxpZGF0ZVRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwKKyAgICBib29sIHZh
bGlkYXRlVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEaW50IGxldmVs
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXpl
aSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwg
R0MzRGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlCdWZmZXJW
aWV3KiBwaXhlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bGxEaXNwb3NpdGlv
bik7CiAKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgYSBnaXZlbiB0ZXh0dXJl
IGZvcm1hdCBpcyBzZXR0YWJsZSBhcyBpbgorICAgIC8vIHlvdSBjYW4gc3VwcGx5IGRhdGEgdG8g
dGV4SW1hZ2UyRCwgb3IgY2FsbCB0ZXhJbWFnZTJELCBjb3B5VGV4SW1hZ2UyRCBhbmQKKyAgICAv
LyBjb3B5VGV4U3ViSW1hZ2UyRC4KKyAgICAvLyBHZW5lcmF0ZXMgR0wgZXJyb3IgYW5kIHJldHVy
bnMgZmFsc2UgaWYgdGhlIGZvcm1hdCBpcyBub3Qgc2V0dGFibGUuCisgICAgYm9vbCB2YWxpZGF0
ZVNldHRhYmxlVGV4Rm9ybWF0KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gZm9y
bWF0KTsKKwogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBjb21wcmVzc2VkIHRl
eHR1cmUgZGF0YSBpcyBjb3JyZWN0IHNpemUKICAgICAvLyBmb3IgdGhlIGdpdmVuIGZvcm1hdCBh
bmQgZGltZW5zaW9ucy4KICAgICBib29sIHZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAppbmRleCA2MWRmZTk5NzI2MjBlMGE2
M2JmYjNhODQwNmM2NTY4MzU2M2Y2OWU2Li5iNzY1ZjQwNDZiYzMyM2Q0NWY2NjgxNjAyNTM3OTI2
NGUxNDNhNTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCkBAIC04NSw5ICs4NSw5IEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OmNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyhHQzNEZW51bSBmb3JtYXQs
CiB7CiAgICAgc3dpdGNoIChmb3JtYXQpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpB
TFBIQToKLSAgICAgICAgKmNvbXBvbmVudHNQZXJQaXhlbCA9IDE7Ci0gICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkxVTUlOQU5DRToKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpERVBUSF9DT01QT05FTlQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
REVQVEhfU1RFTkNJTDoKICAgICAgICAgKmNvbXBvbmVudHNQZXJQaXhlbCA9IDE7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkxVTUlOQU5DRV9BTFBIQToKQEAg
LTEwNywxMiArMTA3LDE5IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXB1dGVGb3JtYXRB
bmRUeXBlUGFyYW1ldGVycyhHQzNEZW51bSBmb3JtYXQsCiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfQllURToKICAgICAgICAgKmJ5dGVzUGVyQ29tcG9uZW50ID0gc2l6ZW9m
KEdDM0R1Ynl0ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlVOU0lHTkVEX1NIT1JUOgorICAgICAgICAqYnl0ZXNQZXJDb21wb25lbnQgPSBzaXplb2YoR0Mz
RHVzaG9ydCk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVO
U0lHTkVEX1NIT1JUXzVfNl81OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X1NIT1JUXzRfNF80XzQ6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hP
UlRfNV81XzVfMToKICAgICAgICAgKmNvbXBvbmVudHNQZXJQaXhlbCA9IDE7CiAgICAgICAgICpi
eXRlc1BlckNvbXBvbmVudCA9IHNpemVvZihHQzNEdXNob3J0KTsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfSU5UXzI0Xzg6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfSU5UOgorICAgICAgICAqYnl0ZXNQZXJDb21wb25l
bnQgPSBzaXplb2YoR0MzRHVpbnQpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpGTE9BVDogLy8gT0VTX3RleHR1cmVfZmxvYXQKICAgICAgICAgKmJ5dGVzUGVy
Q29tcG9uZW50ID0gc2l6ZW9mKEdDM0RmbG9hdCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgyNCw3
ICsxODMxLDYgQEAgdW5zaWduZWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldENoYW5uZWxCaXRzQnlG
b3JtYXQoR0MzRGVudW0gZm9ybWF0KQogICAgIH0KIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzM3YWJiM2ZlNTU2NDJlNjhh
OWY5OTM4ZjFjYWFiYzk4N2UxMmE1OC4uZjg5ZThmM2UxNjc5MzAwYWVmODU0OTNjMzA5ZWYzYWMx
MjNjYTM3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA2LTEzICBHcmVnZyBUYXZhcmVz
ICA8Z21hbkBnb29nbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBXRUJHTF9kZXB0aF90ZXh0dXJl
IGV4dGVuc2lvbiB0byBXZWJHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODcwMjkKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwu
CisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC11dGls
cy5qczoKKyAgICAgICAgKFdlYkdMVGVzdFV0aWxzKToKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93
ZWJnbC93ZWJnbC1kZXB0aC10ZXh0dXJlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtZGVwdGgtdGV4dHVyZS5odG1sOiBBZGRlZC4KKwogMjAx
Mi0wNi0xOCAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENyYXNo
IGluIENTUFNvdXJjZTo6cGFyc2VTb3VyY2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpzIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QtdXRpbHMuanMKaW5kZXggNDMy
NDRkMWNiZTU0OWFmZGIyMWUxN2VjOGJlZWYwMTg5MTZjYjQ4Zi4uNGNlYmM5NTcwOGViNGNjN2U5
OTYwYTA1YTE0NmUwN2Q3M2I3YmYzYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QtdXRpbHMuanMKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QtdXRpbHMuanMKQEAgLTEzNCw5
ICsxMzQsMTkgQEAgdmFyIHNldHVwU2ltcGxlVGV4dHVyZUZyYWdtZW50U2hhZGVyID0gZnVuY3Rp
b24oZ2wpIHsKICAqIEBwYXJhbSB7IUFycmF5LjxudW1iZXI+fSBvcHRfbG9jYXRpb25zIFRoZSBs
b2NhdGlvbnMgZm9yIHRoZSBhdHRyaWJzLgogICovCiB2YXIgc2V0dXBQcm9ncmFtID0gZnVuY3Rp
b24oZ2wsIHNoYWRlcnMsIG9wdF9hdHRyaWJzLCBvcHRfbG9jYXRpb25zKSB7CisgIHZhciByZWFs
U2hhZGVycyA9IFtdOwogICB2YXIgcHJvZ3JhbSA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKICAgZm9y
ICh2YXIgaWkgPSAwOyBpaSA8IHNoYWRlcnMubGVuZ3RoOyArK2lpKSB7Ci0gICAgZ2wuYXR0YWNo
U2hhZGVyKHByb2dyYW0sIHNoYWRlcnNbaWldKTsKKyAgICB2YXIgc2hhZGVyID0gc2hhZGVyc1tp
aV07CisgICAgaWYgKHR5cGVvZiBzaGFkZXIgPT0gJ3N0cmluZycpIHsKKyAgICAgIHZhciBlbGVt
ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2hhZGVyKTsKKyAgICAgIGlmIChlbGVtZW50
KSB7CisgICAgICAgIHNoYWRlciA9IGxvYWRTaGFkZXJGcm9tU2NyaXB0KGdsLCBzaGFkZXIpOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgc2hhZGVyID0gbG9hZFNoYWRlcihnbCwgc2hhZGVyLCBp
aSA/IGdsLkZSQUdNRU5UX1NIQURFUiA6IGdsLlZFUlRFWF9TSEFERVIpOworICAgICAgfQorICAg
IH0KKyAgICBnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKICAgfQogICBpZiAob3B0
X2F0dHJpYnMpIHsKICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgb3B0X2F0dHJpYnMubGVuZ3Ro
OyArK2lpKSB7CkBAIC0xMTA5LDYgKzExMTksNTAgQEAgdmFyIGdldFVybEFyZ3VtZW50cyA9IGZ1
bmN0aW9uKCkgewogICByZXR1cm4gYXJnczsKIH07CiAKKy8vIEFkZCB5b3VyIHByZWZpeCBoZXJl
LgordmFyIGJyb3dzZXJQcmVmaXhlcyA9IFsKKyAgIiIsCisgICJNT1pfIiwKKyAgIk9QXyIsCisg
ICJXRUJLSVRfIgorXTsKKworLyoqCisgKiBHaXZlbiBhbiBleHRlbnNpb24gbmFtZSBsaWtlIFdF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjCisgKiByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBz
dXBwb3J0ZWQgdmVyc2lvbiBleHRlbnNpb24sIGxpa2UKKyAqIFdFQktJVF9XRUJHTF9jb21wcmVz
c2VkX3RldHVyZV9zM3RjCisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIGV4dGVuc2lv
biB0byBsb29rIGZvcgorICogQHJldHVybiB7c3RyaW5nfSBuYW1lIG9mIGV4dGVuc2lvbiBmb3Vu
ZCBvciB1bmRlZmluZWQgaWYgbm90CisgKiAgICAgZm91bmQuCisgKi8KK3ZhciBnZXRTdXBwb3J0
ZWRFeHRlbnNpb25XaXRoS25vd25QcmVmaXhlcyA9IGZ1bmN0aW9uKGdsLCBuYW1lKSB7CisgIHZh
ciBzdXBwb3J0ZWQgPSBnbC5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCk7CisgIGZvciAodmFyIGlp
ID0gMDsgaWkgPCBicm93c2VyUHJlZml4ZXMubGVuZ3RoOyArK2lpKSB7CisgICAgdmFyIHByZWZp
eGVkTmFtZSA9IGJyb3dzZXJQcmVmaXhlc1tpaV0gKyBuYW1lOworICAgIGlmIChzdXBwb3J0ZWQu
aW5kZXhPZihwcmVmaXhlZE5hbWUpID49IDApIHsKKyAgICAgIHJldHVybiBwcmVmaXhlZE5hbWU7
CisgICAgfQorICB9Cit9OworCisvKioKKyAqIEdpdmVuIGFuIGV4dGVuc2lvbiBuYW1lIGxpa2Ug
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMKKyAqIHJldHVybnMgdGhlIHN1cHBvcnRlZCB2
ZXJzaW9uIGV4dGVuc2lvbiwgbGlrZQorICogV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV0dXJl
X3MzdGMKKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgZXh0ZW5zaW9uIHRvIGxvb2sg
Zm9yCisgKiBAcmV0dXJuIHtXZWJHTEV4dGVuc2lvbn0gVGhlIGV4dGVuc2lvbiBvciB1bmRlZmlu
ZWQgaWYgbm90CisgKiAgICAgZm91bmQuCisgKi8KK3ZhciBnZXRFeHRlbnNpb25XaXRoS25vd25Q
cmVmaXhlcyA9IGZ1bmN0aW9uKGdsLCBuYW1lKSB7CisgIGZvciAodmFyIGlpID0gMDsgaWkgPCBi
cm93c2VyUHJlZml4ZXMubGVuZ3RoOyArK2lpKSB7CisgICAgdmFyIHByZWZpeGVkTmFtZSA9IGJy
b3dzZXJQcmVmaXhlc1tpaV0gKyBuYW1lOworICAgIHZhciBleHQgPSBnbC5nZXRFeHRlbnNpb24o
cHJlZml4ZWROYW1lKTsKKyAgICBpZiAoZXh0KSB7CisgICAgICByZXR1cm4gZXh0OworICAgIH0K
KyAgfQorfTsKKwogLyoqCiAgKiBQcm92aWRlcyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaW4gYSBj
cm9zcyBicm93c2VyIHdheS4KICAqLwpAQCAtMTE3Nyw4ICsxMjMxLDEwIEBAIHJldHVybiB7CiAg
IGNyZWF0ZUNvbG9yZWRUZXh0dXJlOiBjcmVhdGVDb2xvcmVkVGV4dHVyZSwKICAgZHJhd1F1YWQ6
IGRyYXdRdWFkLAogICBlbmRzV2l0aDogZW5kc1dpdGgsCisgIGdldEV4dGVuc2lvbldpdGhLbm93
blByZWZpeGVzOiBnZXRFeHRlbnNpb25XaXRoS25vd25QcmVmaXhlcywKICAgZ2V0RmlsZUxpc3RB
c3luYzogZ2V0RmlsZUxpc3RBc3luYywKICAgZ2V0TGFzdEVycm9yOiBnZXRMYXN0RXJyb3IsCisg
IGdldFN1cHBvcnRlZEV4dGVuc2lvbldpdGhLbm93blByZWZpeGVzOiBnZXRTdXBwb3J0ZWRFeHRl
bnNpb25XaXRoS25vd25QcmVmaXhlcywKICAgZ2V0VXJsQXJndW1lbnRzOiBnZXRVcmxBcmd1bWVu
dHMsCiAgIGdsRW51bVRvU3RyaW5nOiBnbEVudW1Ub1N0cmluZywKICAgZ2xFcnJvclNob3VsZEJl
OiBnbEVycm9yU2hvdWxkQmUsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC93ZWJnbC1kZXB0aC10ZXh0dXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3dlYmdsLWRlcHRoLXRleHR1cmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQwZjJmZjM2MzdhNzYwZThmNjZhOWE1MjI2OTI5OWY3OTE0MjAwMzIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1kZXB0aC10ZXh0dXJlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDUwIEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0
aW9uYWxpdHkgb2YgdGhlIFdFQkdMX2RlcHRoX3RleHR1cmUgZXh0ZW5zaW9uLCBpZiBpdCBpcyBh
dmFpbGFibGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIFdlYkdMIGNv
bnRleHQgZXhpc3RzCitUZXN0aW5nIGJpbmRpbmcgZW51bSB3aXRoIGV4dGVuc2lvbiBkaXNhYmxl
ZAorUEFTUyBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLkRFUFRIX0NPTVBPTkVO
VCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9TSE9SVCwgbnVsbCkg
Z2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX0VOVU0uCitQQVNTIGdsLnRleElt
YWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCAxLCAxLCAwLCBnbC5E
RVBUSF9DT01QT05FTlQsIGdsLlVOU0lHTkVEX0lOVCwgbnVsbCkgZ2VuZXJhdGVkIGV4cGVjdGVk
IEdMIGVycm9yOiBJTlZBTElEX0VOVU0uCitQQVNTIFN1Y2Nlc3NmdWxseSBlbmFibGVkIFdFQkdM
X2RlcHRoX3RleHR1cmUgZXh0ZW5zaW9uCitQQVNTIFdFQkdMX2RlcHRoX3RleHR1cmUgbGlzdGVk
IGFzIHN1cHBvcnRlZCBhbmQgZ2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZAorVGVzdGluZyBXRUJHTF9k
ZXB0aF90ZXh0dXJlCisKK3Rlc3Rpbmc6IFVOU0lHTkVEX1NIT1JUCitQQVNTIGdsLnRleEltYWdl
MkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAxLCBnbC5ERVBUSF9DT01QT05FTlQs
IDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfU0hPUlQsIG51bGwpIGdl
bmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRl
eEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAxLCBnbC5ERVBUSF9DT01Q
T05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfU0hPUlQsIG51
bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNT
IGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAxLCBnbC5ERVBU
SF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfU0hP
UlQsIG51bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04u
CitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAxLCBn
bC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdO
RURfU0hPUlQsIG51bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVS
QVRJT04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9Y
LCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wu
VU5TSUdORURfU0hPUlQsIG51bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJ
RF9PUEVSQVRJT04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJ
VElWRV9YLCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVO
VCwgZ2wuVU5TSUdORURfU0hPUlQsIG51bGwpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjog
SU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMSwg
Z2wuREVQVEhfQ09NUE9ORU5ULCAxLCAxLCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lH
TkVEX1NIT1JULCBudWxsKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BF
UkFUSU9OLgorUEFTUyBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLkRFUFRIX0NP
TVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9TSE9SVCwg
bmV3IFVpbnQxNkFycmF5KDEpKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURf
T1BFUkFUSU9OLgorUEFTUyBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLkRFUFRI
X0NPTVBPTkVOVCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9TSE9SVCwgY2FudmFz
MikgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1Mg
Z2wuY29weVRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCAw
LCAwLCAxLCAxLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFU
SU9OLgorUEFTUyBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLkRFUFRIX0NPTVBP
TkVOVCwgOCwgOCwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9TSE9SVCwgbnVs
bCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4KK1BBU1MgZ2wudGV4U3Vi
SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCAxLCAxLCBnbC5ERVBUSF9DT01QT05FTlQs
IGdsLlVOU0lHTkVEX1NIT1JULCBuZXcgVWludDE2QXJyYXkoMSkpIGdlbmVyYXRlZCBleHBlY3Rl
ZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLmNvcHlUZXhTdWJJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDAsIDEsIDEpIGdlbmVyYXRlZCBleHBlY3RlZCBH
TCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLmdlbmVyYXRlTWlwbWFwKGdsLlRF
WFRVUkVfMkQpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04u
CitQQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIGlzIGdsLkZS
QU1FQlVGRkVSX0NPTVBMRVRFCitQQVNTIGRlcHRoIHRleHR1cmUgcmVuZGVyZWQgY29ycmVjdGx5
LgorCit0ZXN0aW5nOiBVTlNJR05FRF9JTlQKK1BBU1MgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJF
X0NVQkVfTUFQX05FR0FUSVZFX1gsIDEsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wu
REVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9JTlQsIG51bGwpIGdlbmVyYXRlZCBleHBlY3Rl
ZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVY
VFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAs
IGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfSU5ULCBudWxsKSBnZW5lcmF0ZWQgZXhw
ZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBnbC50ZXhJbWFnZTJEKGds
LlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwgMSwgZ2wuREVQVEhfQ09NUE9ORU5ULCAxLCAx
LCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lHTkVEX0lOVCwgbnVsbCkgZ2VuZXJhdGVk
IGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgZ2wudGV4SW1hZ2Uy
RChnbC5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsIDEsIGdsLkRFUFRIX0NPTVBPTkVOVCwg
MSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9JTlQsIG51bGwpIGdlbmVy
YXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRleElt
YWdlMkQoZ2wuVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLCAxLCBnbC5ERVBUSF9DT01QT05F
TlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfSU5ULCBudWxsKSBn
ZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBnbC50
ZXhJbWFnZTJEKGdsLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwgMSwgZ2wuREVQVEhfQ09N
UE9ORU5ULCAxLCAxLCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lHTkVEX0lOVCwgbnVs
bCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1Mg
Z2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEs
IDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuVU5TSUdORURfSU5ULCBudWxsKSBnZW5lcmF0ZWQg
ZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBnbC50ZXhJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhf
Q09NUE9ORU5ULCBnbC5VTlNJR05FRF9JTlQsIG5ldyBVaW50MzJBcnJheSgxKSkgZ2VuZXJhdGVk
IGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgZ2wudGV4SW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLkRFUFRIX0NPTVBPTkVO
VCwgZ2wuVU5TSUdORURfSU5ULCBjYW52YXMyKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6
IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBnbC5jb3B5VGV4SW1hZ2UyRChnbC5URVhUVVJFXzJE
LCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIDAsIDAsIDEsIDEsIDApIGdlbmVyYXRlZCBleHBlY3Rl
ZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGdsLnRleEltYWdlMkQoZ2wuVEVY
VFVSRV8yRCwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCA4LCA4LCAwLCBnbC5ERVBUSF9DT01QT05F
TlQsIGdsLlVOU0lHTkVEX0lOVCwgbnVsbCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBO
T19FUlJPUi4KK1BBU1MgZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCAx
LCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLlVOU0lHTkVEX0lOVCwgbmV3IFVpbnQzMkFycmF5
KDEpKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFT
UyBnbC5jb3B5VGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCAwLCAwLCAxLCAx
KSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBn
bC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFXzJEKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJy
b3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGds
LkZSQU1FQlVGRkVSKSBpcyBnbC5GUkFNRUJVRkZFUl9DT01QTEVURQorUEFTUyBkZXB0aCB0ZXh0
dXJlIHJlbmRlcmVkIGNvcnJlY3RseS4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC93ZWJnbC1kZXB0aC10ZXh0dXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC93ZWJnbC1kZXB0aC10ZXh0dXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA0N2Yz
ZTM0MjRmMjU2ZmMyYzgxMWEwNWQ4ZDUwNzJkMjZiNWI2MQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWRlcHRoLXRleHR1cmUuaHRtbApAQCAt
MCwwICsxLDMwMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KKzx0aXRsZT5XZWJHTCBXRUJHTF9kZXB0aF90ZXh0dXJlIENvbmZvcm1hbmNlIFRlc3Rz
PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1z
aGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKK3ZvaWQgbWFpbigp
Cit7CisgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOworfQorPC9zY3JpcHQ+CisKKzxzY3Jp
cHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7Cit1bmlmb3JtIHNhbXBsZXIyRCB1X3RleHR1cmU7Cit1bmlmb3JtIHZlYzIg
dV9yZXNvbHV0aW9uOwordm9pZCBtYWluKCkKK3sKKyAgICB2ZWMyIHRleGNvb3JkID0gZ2xfRnJh
Z0Nvb3JkLnh5IC8gdV9yZXNvbHV0aW9uOworICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh1
X3RleHR1cmUsIHRleGNvb3JkKTsKK30KKzwvc2NyaXB0PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdp
ZHRoPSI4IiBoZWlnaHQ9IjgiIHN0eWxlPSJ3aWR0aDogOHB4OyBoZWlnaHQ6IDhweDsiPjwvY2Fu
dmFzPgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmspIHsKKyAg
ICB3aW5kb3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmsoZmFsc2UpOworfQorZGVzY3JpcHRpb24o
IlRoaXMgdGVzdCB2ZXJpZmllcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgV0VCR0xfZGVwdGhf
dGV4dHVyZSBleHRlbnNpb24sIGlmIGl0IGlzIGF2YWlsYWJsZS4iKTsKKworZGVidWcoIiIpOwor
Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMs
IHthbnRpYWxpYXM6IGZhbHNlfSk7Cit2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFRleHR1cmVkUXVh
ZChnbCk7Cit2YXIgZXh0ID0gbnVsbDsKK3ZhciB2YW8gPSBudWxsOwordmFyIG5hbWU7Cit2YXIg
c3VwcG9ydGVkRm9ybWF0czsKKworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoIldlYkdMIGNv
bnRleHQgZG9lcyBub3QgZXhpc3QiKTsKK30gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiV2ViR0wg
Y29udGV4dCBleGlzdHMiKTsKKworICAgIC8vIFJ1biB0ZXN0cyB3aXRoIGV4dGVuc2lvbiBkaXNh
YmxlZAorICAgIHJ1blRlc3REaXNhYmxlZCgpOworCisgICAgLy8gUXVlcnkgdGhlIGV4dGVuc2lv
biBhbmQgc3RvcmUgZ2xvYmFsbHkgc28gc2hvdWxkQmUgY2FuIGFjY2VzcyBpdAorICAgIGV4dCA9
IHd0dS5nZXRFeHRlbnNpb25XaXRoS25vd25QcmVmaXhlcyhnbCwgIldFQkdMX2RlcHRoX3RleHR1
cmUiKTsKKyAgICBpZiAoIWV4dCkgeworICAgICAgICB0ZXN0UGFzc2VkKCJObyBXRUJHTF9kZXB0
aF90ZXh0dXJlIHN1cHBvcnQgLS0gdGhpcyBpcyBsZWdhbCIpOworICAgICAgICBydW5TdXBwb3J0
ZWRUZXN0KGZhbHNlKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0UGFzc2VkKCJTdWNjZXNz
ZnVsbHkgZW5hYmxlZCBXRUJHTF9kZXB0aF90ZXh0dXJlIGV4dGVuc2lvbiIpOworCisgICAgICAg
IHJ1blN1cHBvcnRlZFRlc3QodHJ1ZSk7CisgICAgICAgIHJ1blRlc3RFeHRlbnNpb24oKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHJ1blN1cHBvcnRlZFRlc3QoZXh0ZW5zaW9uRW5hYmxlZCkgewor
ICAgIHZhciBuYW1lID0gd3R1LmdldFN1cHBvcnRlZEV4dGVuc2lvbldpdGhLbm93blByZWZpeGVz
KGdsLCAiV0VCR0xfZGVwdGhfdGV4dHVyZSIpOworICAgIGlmIChuYW1lICE9PSB1bmRlZmluZWQp
IHsKKyAgICAgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAgICAgICAgIHRlc3RQYXNz
ZWQoIldFQkdMX2RlcHRoX3RleHR1cmUgbGlzdGVkIGFzIHN1cHBvcnRlZCBhbmQgZ2V0RXh0ZW5z
aW9uIHN1Y2NlZWRlZCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiV0VCR0xfZGVwdGhfdGV4dHVyZSBsaXN0ZWQgYXMgc3VwcG9ydGVkIGJ1dCBnZXRFeHRlbnNp
b24gZmFpbGVkIik7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZXh0ZW5z
aW9uRW5hYmxlZCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiV0VCR0xfZGVwdGhfdGV4dHVy
ZSBub3QgbGlzdGVkIGFzIHN1cHBvcnRlZCBidXQgZ2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZCIpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgiV0VCR0xfZGVwdGhfdGV4
dHVyZSBub3QgbGlzdGVkIGFzIHN1cHBvcnRlZCBhbmQgZ2V0RXh0ZW5zaW9uIGZhaWxlZCAtLSB0
aGlzIGlzIGxlZ2FsIik7CisgICAgICAgIH0KKyAgICB9Cit9CisKKworZnVuY3Rpb24gcnVuVGVz
dERpc2FibGVkKCkgeworICAgIGRlYnVnKCJUZXN0aW5nIGJpbmRpbmcgZW51bSB3aXRoIGV4dGVu
c2lvbiBkaXNhYmxlZCIpOworCisgICAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAg
ICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICAgIHNob3VsZEdlbmVyYXRl
R0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9FTlVNLCAnZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJE
LCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wu
VU5TSUdORURfU0hPUlQsIG51bGwpJyk7CisgICAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBn
bC5JTlZBTElEX0VOVU0sICdnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLkRFUFRI
X0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC5VTlNJR05FRF9JTlQs
IG51bGwpJyk7Cit9CisKKworZnVuY3Rpb24gZHVtcEl0KGdsLCByZXMsIG1zZykgeworICByZXR1
cm47ICAvLyBjb21tZW50IG91dCB0byBkZWJ1ZworICBkZWJ1Zyhtc2cpOworICB2YXIgYWN0dWFs
UGl4ZWxzID0gbmV3IFVpbnQ4QXJyYXkocmVzICogcmVzICogNCk7CisgIGdsLnJlYWRQaXhlbHMo
MCwgMCwgcmVzLCByZXMsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGFjdHVhbFBpeGVscyk7
CisKKyAgZm9yICh2YXIgeXkgPSAwOyB5eSA8IHJlczsgKyt5eSkgeworICAgIHZhciBzdHJzID0g
W107CisgICAgZm9yICh2YXIgeHggPSAwOyB4eCA8IHJlczsgKyt4eCkgeworICAgICAgdmFyIGFj
dHVhbCA9ICh5eSAqIHJlcyArIHh4KSAqIDQ7CisgICAgICBzdHJzLnB1c2goIigiICsgYWN0dWFs
UGl4ZWxzW2FjdHVhbF0gKyAiLCIgKyBhY3R1YWxQaXhlbHNbYWN0dWFsKzFdICsgIiwiICsgYWN0
dWFsUGl4ZWxzW2FjdHVhbCArIDJdICsgIiwiICsgYWN0dWFsUGl4ZWxzW2FjdHVhbCArIDNdICsg
IikiKTsKKyAgICB9CisgICAgZGVidWcoc3Rycy5qb2luKCIgIikpOworICB9Cit9CitmdW5jdGlv
biBydW5UZXN0RXh0ZW5zaW9uKCkgeworICAgIGRlYnVnKCJUZXN0aW5nIFdFQkdMX2RlcHRoX3Rl
eHR1cmUiKTsKKworICAgIHZhciByZXMgPSA4OworCisgICAgLy8gbWFrZSBjYW52YXMgZm9yIHRl
c3RpbmcuCisgICAgY2FudmFzMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwor
ICAgIGNhbnZhczIud2lkdGggPSByZXM7CisgICAgY2FudmFzMi5oZWlnaHQgPSByZXM7CisgICAg
dmFyIGN0eCA9IGNhbnZhczIuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICBjdHguZmlsbFN0eWxlID0g
ImJsdWUiOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCBjYW52YXMyLndpZHRoLCBjYW52YXMyLmhl
aWdodCk7CisKKyAgICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsndnNoYWRl
cicsICdmc2hhZGVyJ10sIFsnYV9wb3NpdGlvbiddKTsKKyAgICBnbC51c2VQcm9ncmFtKHByb2dy
YW0pOworICAgIGdsLnVuaWZvcm0yZihnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVf
cmVzb2x1dGlvbiIpLCByZXMsIHJlcyk7CisKKyAgICB2YXIgYnVmZmVyID0gZ2wuY3JlYXRlQnVm
ZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7CisgICAg
Z2wuYnVmZmVyRGF0YSgKKyAgICAgICAgZ2wuQVJSQVlfQlVGRkVSLAorICAgICAgICBuZXcgRmxv
YXQzMkFycmF5KAorICAgICAgICAgICAgWyAgIDEsICAxLCAgMSwKKyAgICAgICAgICAgICAgIC0x
LCAgMSwgIDAsCisgICAgICAgICAgICAgICAtMSwgLTEsIC0xLAorICAgICAgICAgICAgICAgIDEs
ICAxLCAgMSwKKyAgICAgICAgICAgICAgIC0xLCAtMSwgLTEsCisgICAgICAgICAgICAgICAgMSwg
LTEsICAwLAorICAgICAgICAgICAgXSksCisgICAgICAgIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBn
bC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVy
KDAsIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICB2YXIgdHlwZXMgPSBbCisgICAg
ICAgIHt0eXBlOiAnVU5TSUdORURfU0hPUlQnLCBkYXRhOiAnbmV3IFVpbnQxNkFycmF5KDEpJyB9
LAorICAgICAgICB7dHlwZTogJ1VOU0lHTkVEX0lOVCcsICAgZGF0YTogJ25ldyBVaW50MzJBcnJh
eSgxKScgfQorICAgIF07CisKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgdHlwZXMubGVuZ3Ro
OyArK2lpKSB7CisgICAgICAgIHZhciB0eXBlSW5mbyA9IHR5cGVzW2lpXTsKKyAgICAgICAgdmFy
IHR5cGUgPSB0eXBlSW5mby50eXBlOworCisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVi
dWcoInRlc3Rpbmc6ICIgKyB0eXBlKTsKKworICAgICAgICAvLyBjaGVjayB0aGF0IGN1YmVtYXBz
IGFyZSBub3QgYWxsb3dlZC4KKyAgICAgICAgdmFyIGN1YmVUZXggPSBnbC5jcmVhdGVUZXh0dXJl
KCk7CisgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfQ1VCRV9NQVAsIGN1YmVUZXgp
OworICAgICAgICB2YXIgdGFyZ2V0cyA9IFsKKyAgICAgICAgICAnVEVYVFVSRV9DVUJFX01BUF9Q
T1NJVElWRV9YJywKKyAgICAgICAgICAnVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YJywKKyAg
ICAgICAgICAnVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZJywKKyAgICAgICAgICAnVEVYVFVS
RV9DVUJFX01BUF9ORUdBVElWRV9ZJywKKyAgICAgICAgICAnVEVYVFVSRV9DVUJFX01BUF9QT1NJ
VElWRV9aJywKKyAgICAgICAgICAnVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aJworICAgICAg
ICBdOworICAgICAgICBmb3IgKHZhciB0dCA9IDA7IHR0IDwgdGFyZ2V0cy5sZW5ndGg7ICsrdHQp
IHsKKyAgICAgICAgICAgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVS
QVRJT04sICdnbC50ZXhJbWFnZTJEKGdsLicgKyB0YXJnZXRzW2lpXSArICcsIDEsIGdsLkRFUFRI
X0NPTVBPTkVOVCwgMSwgMSwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCBnbC4nICsgdHlwZSArICcs
IG51bGwpJyk7CisgICAgICAgIH0KKworICAgICAgICAvLyBjaGVjayAyZCB0ZXh0dXJlcy4KKyAg
ICAgICAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgZ2wuYmluZFRleHR1
cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhU
VVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGds
LnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1Q
X1RPX0VER0UpOworICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRF
WFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7CisKKyAgICAg
ICAgLy8gdGVzdCBsZXZlbCA+IDAKKyAgICAgICAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGdsLCBn
bC5JTlZBTElEX09QRVJBVElPTiwgJ2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMSwgZ2wu
REVQVEhfQ09NUE9ORU5ULCAxLCAxLCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLicgKyB0eXBl
ICsgJywgbnVsbCknKTsKKworICAgICAgICAvLyB0ZXN0IHdpdGggZGF0YQorICAgICAgICBzaG91
bGRHZW5lcmF0ZUdMRXJyb3IoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAnZ2wudGV4SW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAwLCBnbC5ERVBUSF9DT01QT05FTlQsIDEsIDEsIDAsIGdsLkRFUFRI
X0NPTVBPTkVOVCwgZ2wuJyArIHR5cGUgKyAnLCAnICsgdHlwZUluZm8uZGF0YSArICcpJyk7CisK
KyAgICAgICAgLy8gdGVzdCB3aXRoIGNhbnZhcworICAgICAgICBzaG91bGRHZW5lcmF0ZUdMRXJy
b3IoZ2wsIFtnbC5JTlZBTElEX1ZBTFVFLCBnbC5JTlZBTElEX0VOVU0sIGdsLklOVkFMSURfT1BF
UkFUSU9OXSwgJ2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuREVQVEhfQ09NUE9O
RU5ULCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLicgKyB0eXBlICArICcsIGNhbnZhczIpJyk7CisK
KyAgICAgICAgLy8gdGVzdCBjb3B5VGV4SW1hZ2UyRAorICAgICAgICBzaG91bGRHZW5lcmF0ZUdM
RXJyb3IoZ2wsIFtnbC5JTlZBTElEX0VOVU0sIGdsLklOVkFMSURfT1BFUkFUSU9OXSwgJ2dsLmNv
cHlUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgMCwgMCwg
MSwgMSwgMCknKTsKKworICAgICAgICAvLyB0ZXN0IHJlYWwgdGhpbmcKKyAgICAgICAgc2hvdWxk
R2VuZXJhdGVHTEVycm9yKGdsLCBnbC5OT19FUlJPUiwgJ2dsLnRleEltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgMCwgZ2wuREVQVEhfQ09NUE9ORU5ULCAnICsgcmVzICsgJywgJyArIHJlcyArICcsIDAs
IGdsLkRFUFRIX0NPTVBPTkVOVCwgZ2wuJyArIHR5cGUgKyAnLCBudWxsKScpOworCisgICAgICAg
IC8vIHRlc3QgdGV4U3ViSW1hZ2UyRAorICAgICAgICBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoZ2ws
IGdsLklOVkFMSURfT1BFUkFUSU9OLCAnZ2wudGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCAwLCAwLCAxLCAxLCBnbC5ERVBUSF9DT01QT05FTlQsIGdsLicgKyB0eXBlICArICcsICcgKyB0
eXBlSW5mby5kYXRhICsgJyknKTsKKworICAgICAgICAvLyB0ZXN0IGNvcHlUZXhTdWJJbWFnZTJE
CisgICAgICAgIHNob3VsZEdlbmVyYXRlR0xFcnJvcihnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04s
ICdnbC5jb3B5VGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCAwLCAwLCAxLCAx
KScpOworCisgICAgICAgIC8vIHRlc3QgZ2VuZXJhdGVNaXBtYXAKKyAgICAgICAgc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgJ2dsLmdlbmVyYXRlTWlwbWFw
KGdsLlRFWFRVUkVfMkQpJyk7CisKKyAgICAgICAgdmFyIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVm
ZmVyKCk7CisgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmJvKTsK
KyAgICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRI
X0FUVEFDSE1FTlQsIGdsLlRFWFRVUkVfMkQsIHRleCwgMCk7CisgICAgICAgIC8vaWYgKGdsLmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpICE9IGdsLkZSQU1FQlVGRkVSX0NP
TVBMRVRFKQorICAgICAgICB7CisgICAgICAgICAgICAvLyB0cnkgYWRkaW5nIGEgY29sb3IgYnVm
ZmVyLgorICAgICAgICAgICAgdmFyIGNvbG9yVGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAg
ICAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgY29sb3JUZXgpOworICAgICAg
ICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywg
Z2wuQ0xBTVBfVE9fRURHRSk7CisgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRV
UkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAg
IGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBn
bC5MSU5FQVIpOworICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBn
bC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7CisgICAgICAgICAgICBnbC50ZXhJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIHJlcywgcmVzLCAwLCBnbC5SR0JBLCBnbC5V
TlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICAgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJE
KGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgY29s
b3JUZXgsIDApOworICAgICAgICAgICAgc2hvdWxkQmUoJ2dsLmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMoZ2wuRlJBTUVCVUZGRVIpJywgJ2dsLkZSQU1FQlVGRkVSX0NPTVBMRVRFJyk7CisgICAgICAg
IH0KKworICAgICAgICAvLyB1c2UgdGhlIGRlZmF1bHQgdGV4dHVyZSB0byByZW5kZXIgd2l0aCB3
aGlsZSB3ZSByZXR1cm4gdG8gdGhlIGRlcHRoIHRleHR1cmUuCisgICAgICAgIGdsLmJpbmRUZXh0
dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOworCisgICAgICAgIC8vIHJlbmRlciB0aGUgei1xdWFk
CisgICAgICAgIGdsLmVuYWJsZShnbC5ERVBUSF9URVNUKTsKKyAgICAgICAgZ2wuY2xlYXJDb2xv
cigxLCAwLCAwLCAxKTsKKyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGds
LkRFUFRIX0JVRkZFUl9CSVQpOworICAgICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywg
MCwgNik7CisKKyAgICAgICAgZHVtcEl0KGdsLCByZXMsICItLWZpcnN0LS0iKTsKKworICAgICAg
ICAvLyByZW5kZXIgdGhlIGRlcHRoIHRleHR1cmUuCisgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZl
cihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7CisgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRV
UkVfMkQsIHRleCk7CisgICAgICAgIGdsLmNsZWFyQ29sb3IoMCwgMCwgMSwgMSk7CisgICAgICAg
IGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAg
ICAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOworCisgICAgICAgIHZhciBh
Y3R1YWxQaXhlbHMgPSBuZXcgVWludDhBcnJheShyZXMgKiByZXMgKiA0KTsKKyAgICAgICAgZ2wu
cmVhZFBpeGVscygwLCAwLCByZXMsIHJlcywgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYWN0
dWFsUGl4ZWxzKTsKKworICAgICAgICBkdW1wSXQoZ2wsIHJlcywgIi0tZGVwdGgtLSIpOworCisg
ICAgICAgIC8vIENoZWNrIHRoYXQgZWFjaCBwaXhlbCdzIFJHQiBhcmUgdGhlIHNhbWUgYW5kIHRo
YXQgaXQncyB2YWx1ZSBpcyBsZXNzCisgICAgICAgIC8vIHRoYW4gdGhlIHByZXZpb3VzIHBpeGVs
IGluIGVpdGhlciBkaXJlY3Rpb24uIEJhc2ljYWxseSB2ZXJpZnkgd2UgaGF2ZSBhCisgICAgICAg
IC8vIGdyYWRpZW50LgorICAgICAgICB2YXIgc3VjY2VzcyA9IHRydWU7CisgICAgICAgIGZvciAo
dmFyIHl5ID0gMDsgeXkgPCByZXM7ICsreXkpIHsKKyAgICAgICAgICBmb3IgKHZhciB4eCA9IDA7
IHh4IDwgcmVzOyArK3h4KSB7CisgICAgICAgICAgICB2YXIgYWN0dWFsID0gKHl5ICogcmVzICsg
eHgpICogNDsKKyAgICAgICAgICAgIHZhciBsZWZ0ID0gYWN0dWFsIC0gNDsKKyAgICAgICAgICAg
IHZhciBkb3duID0gYWN0dWFsIC0gcmVzICogNDsKKworICAgICAgICAgICAgaWYgKGFjdHVhbFBp
eGVsc1thY3R1YWwgKyAwXSAhPSBhY3R1YWxQaXhlbHNbYWN0dWFsICsgMV0pIHsKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCdSICE9IEcnKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0g
ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYWN0dWFsUGl4ZWxzW2FjdHVh
bCArIDBdICE9IGFjdHVhbFBpeGVsc1thY3R1YWwgKyAyXSkgeworICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoJ1IgIT0gQicpOworICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhY3R1YWxQaXhlbHNbYWN0dWFsICsgM10gIT0g
MHhGRikgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ0EgIT0gMjU1Jyk7CisgICAgICAg
ICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoeHggPiAwKSB7CisgICAgICAgICAgICAgIGlmIChhY3R1YWxQaXhlbHNbYWN0dWFsXSA8PSBh
Y3R1YWxQaXhlbHNbbGVmdF0pIHsKKyAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImFjdHVh
bCgiICsgYWN0dWFsUGl4ZWxzW2FjdHVhbF0gKyAiKSA8IGxlZnQoIiArIGFjdHVhbFBpeGVsc1ts
ZWZ0XSArICIpIik7CisgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh5eSA+IDApIHsKKyAgICAg
ICAgICAgICAgICBpZiAoYWN0dWFsUGl4ZWxzW2FjdHVhbF0gPD0gYWN0dWFsUGl4ZWxzW2Rvd25d
KSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImFjdHVhbCgiICsgYWN0dWFsUGl4
ZWxzW2FjdHVhbF0gKyAiKSA8IGRvd24oIiArIGFjdHVhbFBpeGVsc1tkb3duXSArICIpIik7Cisg
ICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQ2hlY2sg
dGhhdCBib3R0b20gbGVmdCBjb3JuZXIgaXMgdmFzdGx5IGRpZmZlcmVudCB0aGF0biB0b3Agcmln
aHQuCisgICAgICAgIGlmIChhY3R1YWxQaXhlbHNbKHJlcyAqIHJlcyAtIDEpICogNF0gLSBhY3R1
YWxQaXhlbHNbMF0gPCAweEMwKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJjb3JuZXJzIGFy
ZSBub3QgZGlmZmVyZW50IGVub3VnaCIpOworICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRlcHRoIHRleHR1cmUgcmVuZGVyZWQgY29ycmVjdGx5LiIpOworICAgICAgICB9CisgICAg
fQorfQorCitkZWJ1ZygiIik7CitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworaWYgKHdpbmRv
dy5ub25LaHJvbm9zRnJhbWV3b3JrTm90aWZ5RG9uZSkgeworICAgIHdpbmRvdy5ub25LaHJvbm9z
RnJhbWV3b3JrTm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>