<?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>146575</bug_id>
          
          <creation_ts>2015-07-02 22:29:16 -0700</creation_ts>
          <short_desc>[Content Extensions] Make the DFA transitions ranges instead of characters</short_desc>
          <delta_ts>2015-10-29 20:48:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1106616</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-07-02 22:29:16 -0700</bug_when>
    <thetext>[Content Extensions] Make the DFA transitions ranges instead of characters</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106620</commentid>
    <comment_count>1</comment_count>
      <attachid>256075</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-07-02 22:51:26 -0700</bug_when>
    <thetext>Created attachment 256075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106623</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-02 22:53:47 -0700</bug_when>
    <thetext>Attachment 256075 did not pass style-queue:


ERROR: Source/WebCore/contentextensions/DFACombiner.cpp:41:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/contentextensions/DFACombiner.cpp:42:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 2 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106627</commentid>
    <comment_count>3</comment_count>
      <attachid>256078</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-07-02 23:19:22 -0700</bug_when>
    <thetext>Created attachment 256078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106630</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-02 23:20:57 -0700</bug_when>
    <thetext>Attachment 256078 did not pass style-queue:


ERROR: Source/WebCore/contentextensions/DFACombiner.cpp:41:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/contentextensions/DFACombiner.cpp:42:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 2 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106739</commentid>
    <comment_count>5</comment_count>
      <attachid>256078</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-07-03 11:12:13 -0700</bug_when>
    <thetext>Comment on attachment 256078
Patch

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

&gt; Source/WebCore/contentextensions/DFABytecodeCompiler.cpp:208
&gt; +    uint32 fallbackTransitionTarget = std::numeric_limits&lt;uint32&gt;::max();

uint32_t</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106748</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-07-03 11:58:23 -0700</bug_when>
    <thetext>This reduces compile time from 22.4 to 6.9 seconds in a large test, reduces byte code size from 26.8MB to 25.3MB, and reduces DFA memory usage from ~32MB to ~6MB. Win Win Win!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106749</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-07-03 12:02:50 -0700</bug_when>
    <thetext>In another large test case, this reduces the compiling time from 5.8 to 4.4 seconds, but increases the byte code size from 14 to 19 MB.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106751</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-07-03 12:34:13 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; In another large test case, this reduces the compiling time from 5.8 to 4.4
&gt; seconds, but increases the byte code size from 14 to 19 MB.

When comparing the final size, don&apos;t forget the previous minimizer was accidentally destroying information. The resulting DFA was not always correct.

The new minimizer always find the smallest DFA and does not fuck up the fallback transition :)

I have an idea to get back some of the size increase in the bytecode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106798</commentid>
    <comment_count>9</comment_count>
      <attachid>256125</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-07-03 19:02:47 -0700</bug_when>
    <thetext>Created attachment 256125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106799</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-03 19:04:50 -0700</bug_when>
    <thetext>Attachment 256125 did not pass style-queue:


ERROR: Source/WebCore/contentextensions/DFACombiner.cpp:41:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/contentextensions/DFACombiner.cpp:42:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 2 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107164</commentid>
    <comment_count>11</comment_count>
      <attachid>256227</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-07-06 11:50:23 -0700</bug_when>
    <thetext>Created attachment 256227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107165</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-06 11:52:26 -0700</bug_when>
    <thetext>Attachment 256227 did not pass style-queue:


ERROR: Source/WebCore/contentextensions/DFACombiner.cpp:41:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/contentextensions/DFACombiner.cpp:42:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 2 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107167</commentid>
    <comment_count>13</comment_count>
      <attachid>256227</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-07-06 11:53:01 -0700</bug_when>
    <thetext>Comment on attachment 256227
Patch

New patch for ews.  Still reviewing minimizer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107204</commentid>
    <comment_count>14</comment_count>
      <attachid>256227</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-07-06 13:01:00 -0700</bug_when>
    <thetext>Comment on attachment 256227
Patch

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

&gt; Source/WebCore/contentextensions/DFAMinimizer.cpp:103
&gt; +        m_sets.append(SetDescriptor { start, size, 0 });

appendUnchecked?

&gt; Source/WebCore/contentextensions/DFAMinimizer.cpp:373
&gt; +            return 1;

This seems a little strange.

&gt; Source/WebCore/contentextensions/DFANode.cpp:80
&gt; +    // Transitions can contains &quot;0&quot; if the expression has a end-of-line marker.

&quot;0&quot; -&gt; &apos;\0&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107214</commentid>
    <comment_count>15</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-07-06 14:08:05 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/186374</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137776</commentid>
    <comment_count>16</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-29 20:48:42 -0700</bug_when>
    <thetext>*** Bug 146429 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256075</attachid>
            <date>2015-07-02 22:51:26 -0700</date>
            <delta_ts>2015-07-02 23:19:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146575-20150702225031.patch</filename>
            <type>text/plain</type>
            <size>129963</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc3ZDdlMmJkOWE2ODNk
YjkyZWU2NTUzYTRiMmQ3YTA0OWRhODM3Ni4uZjE3ZDQxNTg4YTQ4OTA3MzhmYTUyY2ZlN2IwNGJl
MzcxMjQ4YzVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NyBAQAorMjAxNS0wNy0wMiAgQmVu
amFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQg
RXh0ZW5zaW9uc10gTWFrZSB0aGUgREZBIHRyYW5zaXRpb25zIHJhbmdlcyBpbnN0ZWFkIG9mIGNo
YXJhY3RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0NjU3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgREZBIGFuZCBjb2RlIHVzaW5nIHRoZSBERkEgdG8gdXNl
IHJhbmdlcworICAgICAgICB0byByZXByZXNlbnQgdGhlIHRyYW5zaXRpb25zIGJldHdlZW4gYW55
IHR3byBub2Rlcy4KKworICAgICAgICBUaGlzIHBhdGNoIGJ1aWxkcyBvbiB0b3Agb2YgdGhlIHRv
b2xzIGludHJvZHVjZWQgaW4gcjE4NjA3OS4KKworICAgICAgICBUaGUgREZBIHN0cnVjdHVyZSBp
cyBiYXNpY2FsbHkgdGhlIHNhbWUgYXMgSW1tdXRhYmxlTkZBIGJ1dCB3aXRob3V0CisgICAgICAg
IGFueSBlcHNpbG9uIHRyYW5zaXRpb25zLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNl
cyBhIHRyYW5zaXRpb24gaXRlcmF0b3IgdG8gbWFrZSB0aGUgREZBCisgICAgICAgIGNvbXBhdGli
bGUgd2l0aCB0aGUgZXhpc3RpbmcgYWxnb3JpdGhtcy4KKworICAgICAgICAtLS0KKworICAgICAg
ICBUaGUgREZBIGNvbWJpbmVyIGlzIHJlYnVpbHQgb24gdG9wIG9mIE11dGFibGVSYW5nZUxpc3Qu
IENvbWJpbmluZyB0aGUgdHJhbnNpdGlvbnMKKyAgICAgICAgb2YgdHdvIG5vZGVzIGlzIG9uZSBi
eSBtZXJnaW5nIHRoZSByYW5nZSBsaXN0IG9mIGVhY2ggbm90IGludG8gYSBjb21tb24KKyAgICAg
ICAgTXV0YWJsZVJhbmdlTGlzdC4KKyAgICAgICAgVGhlIGRhdGEgY29udmVydGVyIHRha2VzIGNh
cmUgb2YgY3JlYXRpbmcgdGhlIHNpZ25hdHVyZSBvZiB0aGUgY29tYmluYXRpb24uCisKKyAgICAg
ICAgVGhlIGNvZGUgZ290IHNpbXBsZXIgc2luY2UgTXV0YWJsZVJhbmdlTGlzdCBkb2VzIG1vc3Qg
b2YgdGhlIHdvcmsgbm93LiBJdCBpcyBhbHNvCisgICAgICAgIG11Y2ggZmFzdGVyLgorCisgICAg
ICAgIC0tLQorCisgICAgICAgIFRoZSBtaW5pbWl6ZXIgaXMgbW9yZSBpbnRlcnN0aW5nLgorCisg
ICAgICAgIFdpdGggdGhlIGN1cnJlbnQgYWxnb3JpdGhtLCB3ZSBjYW5ub3QgcmVzb2x2ZSBvdmVy
bGFwcyBiZXR3ZWVuIHJhbmdlcy4gT24gdGhlIG90aGVyCisgICAgICAgIGhhbmQsIHRoZSBtaW5p
bWl6ZXIgZG9lcyBub3QgY2FyZSBhYm91dCB0aGUgc3ltYm9sIG9mIHRoZSB0cmFuc2l0aW9ucyBp
ZiB3ZSBhcmUgY2FyZWZ1bAorICAgICAgICB0byBwYXJ0aXRpb24gdHJhbnNpdGlvbnMgb2YgdGhl
IHNhbWUgc3ltYm9sIHRvZ2V0aGVyLgorCisgICAgICAgIFdoYXQgSSBkaWQgd2FzIHRvIHR1cm4g
dGhlIG1pbmltaXplciBpbnRvIGEgcHVyZSB0cmFuc2l0aW9uIGJhc2VkIG9uZSwgQlVUIGVhY2gK
KyAgICAgICAgInN5bWJvbCIgaXMgYWN0dWFsbHkgYW4gdW5icmVha2FibGUgcmFuZ2UuCisKKyAg
ICAgICAgVGhlIGZpcnN0IHN0ZXAgaXMgdG8gZ28gb3ZlciBhbGwgdGhlIHRyYW5zaXRpb25zIG9m
IGFsbCB0aGUgbm9kZXMgYW5kIGZpbmQgdGhlIGxhcmdlc3QKKyAgICAgICAgcmFuZ2VzIHN1Y2gg
dGhhdCB0aGUgYWxwaGFiZXQgb2YgaW50ZXJlc3QgaXMgY292ZXJlZCBidXQgdGhlcmUgaXMgbm90
IGEgc2luZ2xlIGludGVyc2VjdGlvbgorICAgICAgICBiZXR3ZWVuIGFueSB0d28gbm9kZXMgKHdo
YXQgSSBjYWxsZWQgInNpbmd1bGFyIHRyYW5zaXRpb25zIiBpbiB0aGUgY29kZSkuIAorCisgICAg
ICAgIFRoaXMgY2FuIGJlIGRvbmUgZWZmaWNpZW50bHkgd2l0aCBNdXRhYmxlUmFuZ2VMaXN0Lgor
ICAgICAgICBBIGxpdHRsZSB0cmljayB0aGVyZSBpcyB0aGF0IEkgYWxzbyB1c2VkIHRoZSBjb252
ZXJ0ZXIgdG8gY291bnQgaG93IG1hbnkgcmVhbCB0cmFuc2l0aW9uCisgICAgICAgIG92ZXJhbGFw
cyBhbnkgc2luZ3VsYXIgdHJhbnNpdGlvbi4KKworICAgICAgICBUaG9zZSBzaW5ndWxhciB0cmFu
c2l0aW9ucyBiZWNvbWUgdGhlIGFscGhhYmV0IG9mIG91ciBtaW5pbWl6ZXIuIFRoZSAic3ltYm9s
IiBvZiBvdXIgYWxwaGFiZXQKKyAgICAgICAgaXMgc2ltcGx5IHRoZSBwb3NpdGlvbiBvZiB0aGUg
c2luZ3VsYXIgdHJhbnNpdGlvbiBpbiB0aGUgbGlzdC4KKworICAgICAgICBUaGUgcGFydGl0aW9u
IG9mIHRyYW5zaXRpb24gaXMgY3JlYXRlZCBieSBwb3B1bGF0aW5nIGVhY2ggc2V0IHdpdGggYWxs
IHRoZSB0cmFuc2l0aW9uIHRoYXQKKyAgICAgICAgb3ZlcmxhcHMgdGhlIHN5bWJvbHMuCisgICAg
ICAgIE5vdGUgdGhhdCBzaW5jZSB0aGUgcGFydGl0aW9uIGlzIGNyZWF0ZWQgb24gdGhlIGZseSwg
dGhlIFRyYW5zaXRpb24gc3RydWN0dXJlIHVzZWQgZm9yCisgICAgICAgIHJlcGFydGl0aW9uaW5n
IG9ubHkgY29udGFpbnMgdGhlIHNvdXJjZSBvZiB0aGUgdHJhbnNpdGlvbnMuCisKKyAgICAgICAg
T25jZSBvdXIgdHJhbnNpdGlvbiBwYXJpdGlvbiBoYXMgYmVlbiBjYXJlZnVseSBjcmVhdGVkLCB3
ZSBjYW4gY29tcGxldGVseSBmb3JnZXQgYWJvdXQKKyAgICAgICAgdGhlIHN5bWJvbHMgYW5kIG9u
bHkgd29yayB3aXRoIHN1YnNldHMuCisKKyAgICAgICAgU2luY2UgdGhlIHNpbmd1bGFyIHRyYW5z
aXRpb25zIGhhdmUgbm8gb3ZlcmxhcCAodW5saWtlIGZhbGxiYWNrIHRyYW5zaXRpb25zKSwgdGhp
cyBuZXcgbWluaW1pemVyCisgICAgICAgIHdpbGwgZmluZCB0aGUgbWluaW1pYWwgc29sdXRpb24g
Zm9yIHdlbGwgZm9ybWVkIGlucHV0LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBOjptZW1vcnlVc2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpwcmludFRyYW5zaXRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjphY3Rpb25zKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjp0cmFuc2l0
aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZB
Tm9kZTo6ZmFsbGJhY2tUcmFuc2l0aW9uRGVzdGluYXRpb24pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OmNoYW5nZUZhbGxiYWNrVHJhbnNp
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZB
Tm9kZTo6YWRkRmFsbGJhY2tUcmFuc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjpjb250YWluc1RyYW5zaXRpb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OmtpbGwpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQTo6ZGVidWdQ
cmludERvdCk6IERlbGV0ZWQuCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvREZBLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6Q29uc3RSYW5nZUl0
ZXJhdG9yOjpyYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZB
Tm9kZTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjp0YXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OlJhbmdlSXRlcmF0b3I6OnJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjpSYW5nZUl0ZXJhdG9yOjp0YXJn
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OlJhbmdl
SXRlcmF0b3I6OnJlc2V0VGFyZ2V0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFC
eXRlY29kZUNvbXBpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpERkFCeXRlY29kZUNvbXBpbGVyOjpyYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlQ29tcGlsZXI6Om5vZGVUcmFuc2l0aW9uc01heEJ5dGVj
b2RlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNv
ZGVDb21waWxlcjo6Y29tcGlsZU5vZGVUcmFuc2l0aW9ucyk6CisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvREZBQ29tYmluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OkRGQU1lcmdlcjo6VGFyZ2V0Q29udmVydGVyOjpjb252ZXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFNZXJnZXI6OlRhcmdldENvbnZlcnRlcjo6ZXh0
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFNZXJnZXI6OlRh
cmdldENvbnZlcnRlcjo6c2V0SGFsZlNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6REZBTWVyZ2VyOjptZXJnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6REZBTWVyZ2VyOjpnZXRPckNyZWF0ZUNvbWJpbmVkTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTWVyZ2VyOjpzZXRIYWxmU2lnbmF0
dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFN
ZXJnZXI6OnBvcHVsYXRlVHJhbnNpdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OkRGQU1lcmdlcjo6cG9wdWxhdGVGcm9tRmFsbGJhY2tUcmFuc2l0
aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZB
TWVyZ2VyOjpjcmVhdGVUcmFuc2l0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6REZBTWVyZ2VyOjpjcmVhdGVGYWxsYmFja1RyYW5zaXRpb25JZk5l
ZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvREZBTWluaW1pemVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFNaW5pbWl6ZXI6
Om1pbmltaXplKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFOb2RlLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6YWN0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6Y29udGFp
bnNUcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFO
b2RlOjpraWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2Rl
OjpjYW5Vc2VGYWxsYmFja1RyYW5zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkRGQU5vZGU6OmJlc3RGYWxsYmFja1RhcmdldCk6CisgICAgICAgICogY29udGVu
dGV4dGVuc2lvbnMvREZBTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OkNoYXJSYW5nZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6REZBTm9kZTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjpvcGVyYXRvciopOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OkNvbnN0UmFuZ2VJdGVyYXRvcjo6b3Bl
cmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6
Q29uc3RSYW5nZUl0ZXJhdG9yOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpERkFOb2RlOjpDb25zdFJhbmdlSXRlcmF0b3I6Om9wZXJhdG9yKyspOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OkNvbnN0UmFuZ2VJ
dGVyYXRvcjo6Zmlyc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRG
QU5vZGU6OkNvbnN0UmFuZ2VJdGVyYXRvcjo6bGFzdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjpkYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjpJdGVyYWJsZUNvbnN0UmFu
Z2U6OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2Rl
OjpJdGVyYWJsZUNvbnN0UmFuZ2U6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6REZBTm9kZTo6dHJhbnNpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkRGQU5vZGU6OlJhbmdlSXRlcmF0b3I6Om9wZXJhdG9yKik6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6UmFuZ2VJdGVyYXRvcjo6b3Bl
cmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6
UmFuZ2VJdGVyYXRvcjo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6REZBTm9kZTo6UmFuZ2VJdGVyYXRvcjo6b3BlcmF0b3IrKyk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6UmFuZ2VJdGVyYXRvcjo6Zmlyc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OlJhbmdlSXRl
cmF0b3I6Omxhc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5v
ZGU6OlJhbmdlSXRlcmF0b3I6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OkRGQU5vZGU6Okl0ZXJhYmxlUmFuZ2U6OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjpJdGVyYWJsZVJhbmdlOjplbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6Omhhc0ZhbGxiYWNrVHJhbnNp
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZB
Tm9kZTo6dHJhbnNpdGlvbnNMZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OnRyYW5zaXRpb25zU3RhcnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OnJlc2V0VHJhbnNpdGlv
bnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5v
ZGU6OnNldEhhc0ZhbGxiYWNrVHJhbnNpdGlvbldpdGhvdXRDaGFuZ2luZ0RGQSk6IERlbGV0ZWQu
CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZBLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBOjpDb25zdFJhbmdlSXRlcmF0
b3I6OmZpcnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFi
bGVORkE6OkNvbnN0UmFuZ2VJdGVyYXRvcjo6bGFzdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBOjpDb25zdFJhbmdlSXRlcmF0b3I6OmRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkltbXV0YWJsZU5GQTo6Q29uc3RS
YW5nZUl0ZXJhdG9yOjpyYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6SW1tdXRhYmxlTkZBOjpDb25zdFJhbmdlSXRlcmF0b3I6Om9wZXJhdG9yKik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBOjpDb25z
dFJhbmdlSXRlcmF0b3I6Om9wZXJhdG9yLT4pOiBEZWxldGVkLgorICAgICAgICAqIGNvbnRlbnRl
eHRlbnNpb25zL0ltbXV0YWJsZU5GQU5vZGVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXI6OkZha2VSYW5nZUl0ZXJh
dG9yOjpmaXJzdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SW1tdXRh
YmxlTkZBTm9kZUJ1aWxkZXI6OkZha2VSYW5nZUl0ZXJhdG9yOjpsYXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFibGVORkFOb2RlQnVpbGRlcjo6RmFrZVJh
bmdlSXRlcmF0b3I6Om9wZXJhdG9yKik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXI6OkZha2VSYW5nZUl0ZXJhdG9y
OjpvcGVyYXRvci0+KTogRGVsZXRlZC4KKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9NdXRh
YmxlUmFuZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpNdXRhYmxl
UmFuZ2U6OnNpemUpOiBEZWxldGVkLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL011dGFi
bGVSYW5nZUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpNdXRh
YmxlUmFuZ2VMaXN0OjpDb25zdEl0ZXJhdG9yOjpmaXJzdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6TXV0YWJsZVJhbmdlTGlzdDo6Q29uc3RJdGVyYXRvcjo6bGFzdCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6TXV0YWJsZVJhbmdlTGlzdDo6
Q29uc3RJdGVyYXRvcjo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6TXV0YWJsZVJhbmdlTGlzdDo6ZXh0ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpNdXRhYmxlUmFuZ2VMaXN0OjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpNdXRhYmxlUmFuZ2VMaXN0Ojppbml0aWFsaXplRnJvbSk6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6Ok5GQVRvREZBOjpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpjYW5Vc2VGYWxsYmFja1RyYW5zaXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmZpbmRCZXN0RmFsbGJhY2tUYXJn
ZXQpOiBEZWxldGVkLgorCiAyMDE1LTA2LTI5ICBNYXR0IFJhamNhICA8bXJhamNhQGFwcGxlLmNv
bT4KIAogICAgICAgICBNZWRpYVNlc3Npb246IHVzZSBhIEhhc2hTZXQgZm9yIHRoZSBjb2xsZWN0
aW9uIG9mIHBhcnRpY2lwYXRpbmcgZWxlbWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhNDg0Yzc5YmEyMDFkY2NjNjIxNTBi
YTcxYmY0OWQxMmEyMDIzZGNhLi5lY2UzMzQ3ZWE3MDBhZjIxNzFiZmFmMzZmNmUzNDA2NDczNzdi
NTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMDI5LDYgKzEwMjksNyBAQAogCQkyNkMxNUNGNzE4NTdFMTVFMDBGMTVDMDMg
LyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZDMTVD
RjUxODU3RTE1RDAwRjE1QzAzIC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUuaCAqLzsgfTsKIAkJMjZDMTdBM0UxNDkxRDJENDAwRDEyQkEy
IC8qIEZpbGVTeXN0ZW1JT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI2QzE3QTNDMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVtSU9TLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMjZDMTdBM0Yx
NDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1JT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkMxN0EzRDE0OTFEMkQ0MDBEMTJCQTIgLyogRmls
ZVN5c3RlbUlPUy5tbSAqLzsgfTsKKwkJMjZENEU4NDYxQjQyNTM5RDAwRTAzM0EyIC8qIERGQU5v
ZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZE
NEU4NDUxQjQyNTM5RDAwRTAzM0EyIC8qIERGQU5vZGUuY3BwICovOyB9OwogCQkyNkU5NDREODFB
QzRCMkREMDA3Qjg1QjUgLyogQ29tYmluZWRVUkxGaWx0ZXJzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RTk0NEQ0MUFDNEIyREQwMDdCODVCNSAv
KiBDb21iaW5lZFVSTEZpbHRlcnMuY3BwICovOyB9OwogCQkyNkU5NDREOTFBQzRCMkREMDA3Qjg1
QjUgLyogQ29tYmluZWRVUkxGaWx0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyNkU5NDRENTFBQzRCMkREMDA3Qjg1QjUgLyogQ29tYmluZWRVUkxG
aWx0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMjZFOTQ0REQxQUM0QjRFQTAwN0I4NUI1IC8qIFRlcm0uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RTk0NERDMUFDNEI0RUEwMDdCODVCNSAvKiBU
ZXJtLmggKi87IH07CkBAIC04MTc0LDYgKzgxNzUsNyBAQAogCQkyNkMxNUNGNTE4NTdFMTVEMDBG
MTVDMDMgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTI2QzE3QTNDMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVt
SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTeXN0ZW1JT1MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjZDMTdBM0QxNDkxRDJENDAwRDEyQkEyIC8q
IEZpbGVTeXN0ZW1JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBGaWxlU3lzdGVtSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNkQ0RTg0
NTFCNDI1MzlEMDBFMDMzQTIgLyogREZBTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBERkFOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MjZFOTQ0RDQxQUM0QjJERDAwN0I4NUI1IC8qIENvbWJpbmVkVVJMRmlsdGVycy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21iaW5lZFVSTEZpbHRlcnMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkU5NDRENTFBQzRCMkREMDA3Qjg1QjUgLyog
Q29tYmluZWRVUkxGaWx0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bWJpbmVkVVJMRmlsdGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkU5NDRE
QzFBQzRCNEVBMDA3Qjg1QjUgLyogVGVybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUZXJtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTY5NSw2ICsxNTY5
Nyw3IEBACiAJCQkJMjZBODA3ODMxQjE4Rjk3NzAwRTIxOUJFIC8qIERGQUNvbWJpbmVyLmggKi8s
CiAJCQkJMjZBNTE3RkIxQUI5MjIzODAwNjMzNURGIC8qIERGQU1pbmltaXplci5jcHAgKi8sCiAJ
CQkJMjZBNTE3RkMxQUI5MjIzODAwNjMzNURGIC8qIERGQU1pbmltaXplci5oICovLAorCQkJCTI2
RDRFODQ1MUI0MjUzOUQwMEUwMzNBMiAvKiBERkFOb2RlLmNwcCAqLywKIAkJCQkyNjc3MjVGOTFB
NUIzQUQ5MDAzQzI0REQgLyogREZBTm9kZS5oICovLAogCQkJCTI2Rjc1NkIyMUIzQjY2RjcwMDA1
REQ3OSAvKiBJbW11dGFibGVORkEuaCAqLywKIAkJCQkyNkY3NTZCNDFCM0I2OEYyMDAwNURENzkg
LyogSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaCAqLywKQEAgLTMwMjMyLDYgKzMwMjM1LDcgQEAK
IAkJCQlCMkExRjJBRDBDRUYwQUJGMDA0NDJGNkEgLyogU1ZHR2x5cGhFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTI0RDkxMkJEMTNDQTlBOTcwMEQyMTkxNSAvKiBTVkdHbHlwaFJlZkVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBMjkwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0dyYWRpZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyNkQ0RTg0NjFCNDI1
MzlEMDBFMDMzQTIgLyogREZBTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FCNTBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTY1MEZCRjJBMEQ5QUYwNDcwMDhGQzI5MiAvKiBTVkdIS2VybkVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjI1NTk5QTMwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ltYWdlLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvREZBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQS5jcHAKaW5k
ZXggMGVlMDRkOWMyY2JjYzlkNGNiMzBhYzMyYWE4MWQzNTMyZTM5MjRjZi4uZTU4YjdjNDRlMzJm
NDhiMWQ0MGY5ZGE2MzhmMjE2OWZiNzMzYzljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvREZBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ERkEuY3BwCkBAIC00Niw4OSArNDYsMTEgQEAgc2l6ZV90IERGQTo6bWVtb3J5VXNl
ZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNpemVvZihERkEpCiAgICAgICAgICsgYWN0aW9ucy5j
YXBhY2l0eSgpICogc2l6ZW9mKHVpbnQ2NF90KQotICAgICAgICArIHRyYW5zaXRpb25DaGFyYWN0
ZXJzLmNhcGFjaXR5KCkgKiBzaXplb2YodWludDhfdCkKKyAgICAgICAgKyB0cmFuc2l0aW9uUmFu
Z2VzLmNhcGFjaXR5KCkgKiBzaXplb2YoQ2hhclJhbmdlKQogICAgICAgICArIHRyYW5zaXRpb25E
ZXN0aW5hdGlvbnMuY2FwYWNpdHkoKSAqIHNpemVvZih1aW50MzJfdCkKICAgICAgICAgKyBub2Rl
cy5jYXBhY2l0eSgpICogc2l6ZW9mKERGQU5vZGUpOwogfQogCi0vLyBGSVhNRTogTWFrZSBERkFO
b2RlLmNwcC4KLVZlY3Rvcjx1aW50NjRfdD4gREZBTm9kZTo6YWN0aW9ucyhjb25zdCBERkEmIGRm
YSkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogVXNlIGl0ZXJhdG9ycyBpbnN0ZWFkIG9mIGNvcHlp
bmcgdGhlIFZlY3RvciBlbGVtZW50cy4KLSAgICBWZWN0b3I8dWludDY0X3Q+IHZlY3RvcjsKLSAg
ICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2FjdGlvbnNMZW5ndGgpOwotICAgIGZv
ciAodWludDMyX3QgaSA9IG1fYWN0aW9uc1N0YXJ0OyBpIDwgbV9hY3Rpb25zU3RhcnQgKyBtX2Fj
dGlvbnNMZW5ndGg7ICsraSkKLSAgICAgICAgdmVjdG9yLnVuY2hlY2tlZEFwcGVuZChkZmEuYWN0
aW9uc1tpXSk7Ci0gICAgcmV0dXJuIHZlY3RvcjsKLX0KLSAgICAKLVZlY3RvcjxzdGQ6OnBhaXI8
dWludDhfdCwgdWludDMyX3Q+PiBERkFOb2RlOjp0cmFuc2l0aW9ucyhjb25zdCBERkEmIGRmYSkg
Y29uc3QKLXsKLSAgICAvLyBGSVhNRTogVXNlIGl0ZXJhdG9ycyBpbnN0ZWFkIG9mIGNvcHlpbmcg
dGhlIFZlY3RvciBlbGVtZW50cy4KLSAgICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ4X3QsIHVpbnQz
Ml90Pj4gdmVjdG9yOwotICAgIHZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRyYW5zaXRp
b25zTGVuZ3RoKCkpOwotICAgIGZvciAodWludDMyX3QgaSA9IG1fdHJhbnNpdGlvbnNTdGFydDsg
aSA8IG1fdHJhbnNpdGlvbnNTdGFydCArIG1fdHJhbnNpdGlvbnNMZW5ndGg7ICsraSkKLSAgICAg
ICAgdmVjdG9yLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihkZmEudHJhbnNpdGlvbkNo
YXJhY3RlcnNbaV0sIGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zW2ldKSk7Ci0gICAgcmV0dXJu
IHZlY3RvcjsKLX0KLQotdWludDMyX3QgREZBTm9kZTo6ZmFsbGJhY2tUcmFuc2l0aW9uRGVzdGlu
YXRpb24oY29uc3QgREZBJiBkZmEpIGNvbnN0Ci17Ci0gICAgUkVMRUFTRV9BU1NFUlQoaGFzRmFs
bGJhY2tUcmFuc2l0aW9uKCkpOwotCi0gICAgLy8gSWYgdGhlcmUgaXMgYSBmYWxsYmFjayB0cmFu
c2l0aW9uLCBpdCBpcyBqdXN0IGFmdGVyIHRoZSBvdGhlciB0cmFuc2l0aW9ucyBhbmQgaGFzIGFu
IGludmFsaWQgQVNDSUkgY2hhcmFjdGVyIHRvIG1hcmsgaXQgYXMgYSBmYWxsYmFjayB0cmFuc2l0
aW9uLgotICAgIEFTU0VSVChkZmEudHJhbnNpdGlvbkNoYXJhY3RlcnNbbV90cmFuc2l0aW9uc1N0
YXJ0ICsgbV90cmFuc2l0aW9uc0xlbmd0aF0gPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90
Pjo6bWF4KCkpOwotICAgIHJldHVybiBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9uc1ttX3RyYW5z
aXRpb25zU3RhcnQgKyBtX3RyYW5zaXRpb25zTGVuZ3RoXTsKLX0KLQotdm9pZCBERkFOb2RlOjpj
aGFuZ2VGYWxsYmFja1RyYW5zaXRpb24oREZBJiBkZmEsIHVpbnQzMl90IG5ld0Rlc3RpbmF0aW9u
KQotewotICAgIFJFTEVBU0VfQVNTRVJUKGhhc0ZhbGxiYWNrVHJhbnNpdGlvbigpKTsKLSAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKGRmYS50cmFuc2l0aW9uQ2hhcmFjdGVyc1ttX3RyYW5zaXRpb25z
U3RhcnQgKyBtX3RyYW5zaXRpb25zTGVuZ3RoXSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4
X3Q+OjptYXgoKSwgIldoZW4gY2hhbmdpbmcgYSBmYWxsYmFjayB0cmFuc2l0aW9uLCB0aGUgZmFs
bGJhY2sgdHJhbnNpdGlvbiBzaG91bGQgYWxyZWFkeSBiZSBtYXJrZWQgYXMgc3VjaCIpOwotICAg
IGRmYS50cmFuc2l0aW9uQ2hhcmFjdGVyc1ttX3RyYW5zaXRpb25zU3RhcnQgKyBtX3RyYW5zaXRp
b25zTGVuZ3RoXSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDhfdD46Om1heCgpOwotICAgIGRm
YS50cmFuc2l0aW9uRGVzdGluYXRpb25zW21fdHJhbnNpdGlvbnNTdGFydCArIG1fdHJhbnNpdGlv
bnNMZW5ndGhdID0gbmV3RGVzdGluYXRpb247Ci19Ci0KLXZvaWQgREZBTm9kZTo6YWRkRmFsbGJh
Y2tUcmFuc2l0aW9uKERGQSYgZGZhLCB1aW50MzJfdCBkZXN0aW5hdGlvbikKLXsKLSAgICBSRUxF
QVNFX0FTU0VSVChkZmEudHJhbnNpdGlvbkNoYXJhY3RlcnMuc2l6ZSgpID09IGRmYS50cmFuc2l0
aW9uRGVzdGluYXRpb25zLnNpemUoKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdF
KGRmYS50cmFuc2l0aW9uQ2hhcmFjdGVycy5zaXplKCkgPT0gbV90cmFuc2l0aW9uc1N0YXJ0ICsg
bV90cmFuc2l0aW9uc0xlbmd0aCwgIkFkZGluZyBhIGZhbGxiYWNrIHRyYW5zaXRpb24gc2hvdWxk
IG9ubHkgaGFwcGVuIGlmIHRoZSBub2RlIGlzIGF0IHRoZSBlbmQiKTsKLSAgICBkZmEudHJhbnNp
dGlvbkNoYXJhY3RlcnMuYXBwZW5kKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDhfdD46Om1heCgp
KTsKLSAgICBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9ucy5hcHBlbmQoZGVzdGluYXRpb24pOwot
ICAgIEFTU0VSVCghKG1fZmxhZ3MgJiBIYXNGYWxsYmFja1RyYW5zaXRpb24pKTsKLSAgICBtX2Zs
YWdzIHw9IEhhc0ZhbGxiYWNrVHJhbnNpdGlvbjsKLX0KLQotYm9vbCBERkFOb2RlOjpjb250YWlu
c1RyYW5zaXRpb24odWludDhfdCB0cmFuc2l0aW9uLCBERkEmIGRmYSkKLXsKLSAgICAvLyBDYWxs
ZWQgZnJvbSBERkFNaW5pbWl6ZXIsIHRoaXMgbG9vcHMgdGhvdWdoIGEgbWF4aW11bSBvZiAxMjgg
dHJhbnNpdGlvbnMsIHNvIGl0J3Mgbm90IHRvbyBzbG93LgotICAgIEFTU0VSVChtX3RyYW5zaXRp
b25zTGVuZ3RoIDw9IDEyOCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbV90cmFuc2l0aW9uc1N0
YXJ0OyBpIDwgbV90cmFuc2l0aW9uc1N0YXJ0ICsgbV90cmFuc2l0aW9uc0xlbmd0aDsgKytpKSB7
Ci0gICAgICAgIGlmIChkZmEudHJhbnNpdGlvbkNoYXJhY3RlcnNbaV0gPT0gdHJhbnNpdGlvbikK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0g
ICAgCi12b2lkIERGQU5vZGU6OmtpbGwoREZBJiBkZmEpCi17Ci0gICAgQVNTRVJUKG1fZmxhZ3Mg
IT0gSXNLaWxsZWQpOwotICAgIG1fZmxhZ3MgPSBJc0tpbGxlZDsgLy8gS2lsbGVkIG5vZGVzIGRv
bid0IGhhdmUgYW55IG90aGVyIGZsYWdzLgotICAgIAotICAgIC8vIEludmFsaWRhdGUgdGhlIG5v
dy11bnVzZWQgbWVtb3J5IGluIHRoZSBERkEgdG8gbWFrZSBmaW5kaW5nIGJ1Z3MgZWFzaWVyLgot
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fdHJhbnNpdGlvbnNTdGFydDsgaSA8IG1fdHJhbnNpdGlv
bnNTdGFydCArIG1fdHJhbnNpdGlvbnNMZW5ndGg7ICsraSkgewotICAgICAgICBkZmEudHJhbnNp
dGlvbkNoYXJhY3RlcnNbaV0gPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgoKTsK
LSAgICAgICAgZGZhLnRyYW5zaXRpb25EZXN0aW5hdGlvbnNbaV0gPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQzMl90Pjo6bWF4KCk7Ci0gICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IG1fYWN0
aW9uc1N0YXJ0OyBpIDwgbV9hY3Rpb25zU3RhcnQgKyBtX2FjdGlvbnNMZW5ndGg7ICsraSkKLSAg
ICAgICAgZGZhLmFjdGlvbnNbaV0gPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4
KCk7Ci0KLSAgICBtX2FjdGlvbnNTdGFydCA9IDA7Ci0gICAgbV9hY3Rpb25zTGVuZ3RoID0gMDsK
LSAgICBtX3RyYW5zaXRpb25zU3RhcnQgPSAwOwotICAgIG1fdHJhbnNpdGlvbnNMZW5ndGggPSAw
OwotfTsKLQogdm9pZCBERkE6Om1pbmltaXplKCkKIHsKICAgICBERkFNaW5pbWl6ZXI6Om1pbmlt
aXplKCp0aGlzKTsKQEAgLTE2NSwxNyArODcsMTggQEAgc3RhdGljIHZvaWQgcHJpbnRUcmFuc2l0
aW9ucyhjb25zdCBERkEmIGRmYSwgdW5zaWduZWQgc291cmNlTm9kZUlkKQogICAgIGNvbnN0IERG
QU5vZGUmIHNvdXJjZU5vZGUgPSBkZmEubm9kZXNbc291cmNlTm9kZUlkXTsKICAgICBhdXRvIHRy
YW5zaXRpb25zID0gc291cmNlTm9kZS50cmFuc2l0aW9ucyhkZmEpOwogCi0gICAgaWYgKHRyYW5z
aXRpb25zLmlzRW1wdHkoKSAmJiAhc291cmNlTm9kZS5oYXNGYWxsYmFja1RyYW5zaXRpb24oKSkK
KyAgICBpZiAodHJhbnNpdGlvbnMuYmVnaW4oKSA9PSB0cmFuc2l0aW9ucy5lbmQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgVmVjdG9yPHVpbnQxNl90PiwgRGVm
YXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVuc2lnbmVkPj4gdHJhbnNpdGlvbnNQZXJUYXJnZXQ7CiAKICAgICAvLyBGaXJzdCwgd2Ug
YnVpbGQgdGhlIGxpc3Qgb2YgdHJhbnNpdGlvbnMgY29taW5nIHRvIGVhY2ggdGFyZ2V0IG5vZGUu
CiAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFuc2l0aW9uIDogdHJhbnNpdGlvbnMpIHsKLSAgICAg
ICAgdW5zaWduZWQgdGFyZ2V0ID0gdHJhbnNpdGlvbi5zZWNvbmQ7CisgICAgICAgIHVuc2lnbmVk
IHRhcmdldCA9IHRyYW5zaXRpb24udGFyZ2V0KCk7CiAgICAgICAgIHRyYW5zaXRpb25zUGVyVGFy
Z2V0LmFkZCh0YXJnZXQsIFZlY3Rvcjx1aW50MTZfdD4oKSk7CiAKLSAgICAgICAgdHJhbnNpdGlv
bnNQZXJUYXJnZXQuZmluZCh0YXJnZXQpLT52YWx1ZS5hcHBlbmQodHJhbnNpdGlvbi5maXJzdCk7
CisgICAgICAgIGZvciAodW5zaWduZWQgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgdHJhbnNpdGlvbi5y
YW5nZSgpLnNpemUoKTsgKytvZmZzZXQpCisgICAgICAgICAgICB0cmFuc2l0aW9uc1BlclRhcmdl
dC5maW5kKHRhcmdldCktPnZhbHVlLmFwcGVuZCh0cmFuc2l0aW9uLmZpcnN0KCkgKyBvZmZzZXQp
OwogICAgIH0KIAogICAgIC8vIFRoZW4gd2UgZ28gb3ZlciBlYWNoIG9uZSBhbiBkaXNwbGF5IHRo
ZSByYW5nZXMgb25lIGJ5IG9uZS4KQEAgLTIwMiw5ICsxMjUsNiBAQCBzdGF0aWMgdm9pZCBwcmlu
dFRyYW5zaXRpb25zKGNvbnN0IERGQSYgZGZhLCB1bnNpZ25lZCBzb3VyY2VOb2RlSWQpCiAKICAg
ICAgICAgZGF0YUxvZ0YoIlwiXTtcbiIpOwogICAgIH0KLQotICAgIGlmIChzb3VyY2VOb2RlLmhh
c0ZhbGxiYWNrVHJhbnNpdGlvbigpKQotICAgICAgICBkYXRhTG9nRigiICAgICAgICAlZCAtPiAl
ZCBbbGFiZWw9XCJbZmFsbGJhY2tdXCJdO1xuIiwgc291cmNlTm9kZUlkLCBzb3VyY2VOb2RlLmZh
bGxiYWNrVHJhbnNpdGlvbkRlc3RpbmF0aW9uKGRmYSkpOwogfQogCiB2b2lkIERGQTo6ZGVidWdQ
cmludERvdCgpIGNvbnN0CkBAIC0yMjgsMTcgKzE0OCw2IEBAIHZvaWQgREZBOjpkZWJ1Z1ByaW50
RG90KCkgY29uc3QKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFZlY3Rvcjx1
bnNpZ25lZD4gY29ycmVzcG9uZGluZ05GQU5vZGVzID0gbm9kZXNbaV0uY29ycmVzcG9uZGluZ05G
QU5vZGVzOwotICAgICAgICBpZiAoIWNvcnJlc3BvbmRpbmdORkFOb2Rlcy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgIGRhdGFMb2dGKCI8QlIvPk5GQSBOb2RlczogIik7Ci0gICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGNvcnJlc3BvbmRpbmdERkFOb2RlSW5kZXggPSAwOyBjb3JyZXNwb25kaW5n
REZBTm9kZUluZGV4IDwgY29ycmVzcG9uZGluZ05GQU5vZGVzLnNpemUoKTsgKytjb3JyZXNwb25k
aW5nREZBTm9kZUluZGV4KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvcnJlc3BvbmRpbmdERkFO
b2RlSW5kZXgpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIsICIpOwotICAgICAgICAg
ICAgICAgIGRhdGFMb2dGKCIlZCIsIGNvcnJlc3BvbmRpbmdORkFOb2Rlc1tjb3JyZXNwb25kaW5n
REZBTm9kZUluZGV4XSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZGF0YUxv
Z0YoIj5dIik7Ci0KICAgICAgICAgaWYgKCFhY3Rpb25zLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IGRhdGFMb2dGKCIgW3NoYXBlPWRvdWJsZWNpcmNsZV0iKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9ERkEuaAppbmRleCAxODhkZmI0OWEwNmRhNzdhNjg0MmUyNTg3MmMxOTA3NmE5
Njg2NmFlLi45MTE3NTUzOTJjNWJiOGU0OWZiY2YxZjE0YTQxYzA0ODBjZmVkNDhkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkEuaApAQCAtNDcsMTQgKzQ3LDM5IEBAIHN0cnVj
dCBXRUJDT1JFX0VYUE9SVCBERkEgewogI2lmIENPTlRFTlRfRVhURU5TSU9OU19TVEFURV9NQUNI
SU5FX0RFQlVHR0lORwogICAgIHZvaWQgZGVidWdQcmludERvdCgpIGNvbnN0OwogI2VuZGlmCi0g
ICAgCisKKyAgICBWZWN0b3I8REZBTm9kZT4gbm9kZXM7CiAgICAgVmVjdG9yPHVpbnQ2NF90PiBh
Y3Rpb25zOwotICAgIFZlY3Rvcjx1aW50OF90PiB0cmFuc2l0aW9uQ2hhcmFjdGVyczsKKyAgICBW
ZWN0b3I8Q2hhclJhbmdlPiB0cmFuc2l0aW9uUmFuZ2VzOwogICAgIFZlY3Rvcjx1aW50MzJfdD4g
dHJhbnNpdGlvbkRlc3RpbmF0aW9uczsKLSAgICBWZWN0b3I8REZBTm9kZT4gbm9kZXM7CiAgICAg
dW5zaWduZWQgcm9vdCB7IDAgfTsKIH07CiAKK2lubGluZSBjb25zdCBDaGFyUmFuZ2UmIERGQU5v
ZGU6OkNvbnN0UmFuZ2VJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdAoreworICAgIHJldHVybiBkZmEu
dHJhbnNpdGlvblJhbmdlc1twb3NpdGlvbl07Cit9CisKK2lubGluZSB1aW50MzJfdCBERkFOb2Rl
OjpDb25zdFJhbmdlSXRlcmF0b3I6OnRhcmdldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRmYS50
cmFuc2l0aW9uRGVzdGluYXRpb25zW3Bvc2l0aW9uXTsKK30KKworaW5saW5lIGNvbnN0IENoYXJS
YW5nZSYgREZBTm9kZTo6UmFuZ2VJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdAoreworICAgIHJldHVy
biBkZmEudHJhbnNpdGlvblJhbmdlc1twb3NpdGlvbl07Cit9CisKK2lubGluZSB1aW50MzJfdCBE
RkFOb2RlOjpSYW5nZUl0ZXJhdG9yOjp0YXJnZXQoKSBjb25zdAoreworICAgIHJldHVybiBkZmEu
dHJhbnNpdGlvbkRlc3RpbmF0aW9uc1twb3NpdGlvbl07Cit9CisKK2lubGluZSB2b2lkIERGQU5v
ZGU6OlJhbmdlSXRlcmF0b3I6OnJlc2V0VGFyZ2V0KHVpbnQzMl90IG5ld1RhcmdldCkKK3sKKyAg
ICBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9uc1twb3NpdGlvbl0gPSBuZXdUYXJnZXQ7Cit9CisK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcAppbmRleCBlMGZkMTIw
MjQ3NmJmMDhhNGJjZDIyODlkMTUwOGEyZWYwNzYyYTRjLi4wNDZkZGRjYzk4YmI1NTNmNTFkYTg0
OGFiOWNkZGQ1NTJiMmZhMjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcApAQCAtMjA0LDEwICsyMDQsMTgg
QEAgVmVjdG9yPERGQUJ5dGVjb2RlQ29tcGlsZXI6OlJhbmdlPiBERkFCeXRlY29kZUNvbXBpbGVy
OjpyYW5nZXMoY29uc3QgREZBTm9kZSYgbm8KICAgICBtZW1zZXQoZGVzdGluYXRpb25zLCAweGZm
LCBzaXplb2YoZGVzdGluYXRpb25zKSk7CiAgICAgY29uc3QgdWludDMyX3Qgbm9EZXN0aW5hdGlv
biA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKIAotICAgIGZvciAoY29u
c3QgYXV0byYgcGFpciA6IG5vZGUudHJhbnNpdGlvbnMobV9kZmEpKSB7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKHBhaXIuZmlyc3QgPCBXVEZfQVJSQVlfTEVOR1RIKGRlc3RpbmF0aW9ucykpOwot
ICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRlc3RpbmF0aW9uc1twYWlyLmZpcnN0XSA9PSBu
b0Rlc3RpbmF0aW9uLCAiVHJhbnNpdGlvbnMgc2hvdWxkIGJlIHVuaXF1ZSIpOwotICAgICAgICBk
ZXN0aW5hdGlvbnNbcGFpci5maXJzdF0gPSBwYWlyLnNlY29uZDsKKyAgICBib29sIGNhblVzZUZh
bGxiYWNrVHJhbnNpdGlvbiA9IG5vZGUuY2FuVXNlRmFsbGJhY2tUcmFuc2l0aW9uKG1fZGZhKTsK
KyAgICB1aW50MzIgZmFsbGJhY2tUcmFuc2l0aW9uVGFyZ2V0ID0gc3RkOjpudW1lcmljX2xpbWl0
czx1aW50MzI+OjptYXgoKTsKKyAgICBpZiAoY2FuVXNlRmFsbGJhY2tUcmFuc2l0aW9uKQorICAg
ICAgICBmYWxsYmFja1RyYW5zaXRpb25UYXJnZXQgPSBub2RlLmJlc3RGYWxsYmFja1RhcmdldCht
X2RmYSk7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYW5zaXRpb24gOiBub2RlLnRyYW5zaXRp
b25zKG1fZGZhKSkgeworICAgICAgICB1aW50MzJfdCB0YXJnZXROb2RlSW5kZXggPSB0cmFuc2l0
aW9uLnRhcmdldCgpOworICAgICAgICBpZiAoY2FuVXNlRmFsbGJhY2tUcmFuc2l0aW9uICYmIGZh
bGxiYWNrVHJhbnNpdGlvblRhcmdldCA9PSB0YXJnZXROb2RlSW5kZXgpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBmb3IgKHVpbnQxNl90IGkgPSB0cmFuc2l0aW9uLnJhbmdlKCku
Zmlyc3Q7IGkgPD0gdHJhbnNpdGlvbi5yYW5nZSgpLmxhc3Q7ICsraSkKKyAgICAgICAgICAgIGRl
c3RpbmF0aW9uc1tpXSA9IHRhcmdldE5vZGVJbmRleDsKICAgICB9CiAKICAgICBWZWN0b3I8UmFu
Z2U+IHJhbmdlczsKQEAgLTIxNSw3ICsyMjMsNiBAQCBWZWN0b3I8REZBQnl0ZWNvZGVDb21waWxl
cjo6UmFuZ2U+IERGQUJ5dGVjb2RlQ29tcGlsZXI6OnJhbmdlcyhjb25zdCBERkFOb2RlJiBubwog
ICAgIGJvb2wgaGFzUmFuZ2VNaW4gPSBmYWxzZTsKICAgICBmb3IgKHVpbnQ4X3QgaSA9IDA7IGkg
PCAxMjg7IGkrKykgewogICAgICAgICBpZiAoaGFzUmFuZ2VNaW4pIHsKLSAgICAgICAgICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIShub2RlLmhhc0ZhbGxiYWNrVHJhbnNpdGlvbigpICYmIG5vZGUu
ZmFsbGJhY2tUcmFuc2l0aW9uRGVzdGluYXRpb24obV9kZmEpID09IGRlc3RpbmF0aW9uc1tyYW5n
ZU1pbl0pLCAiSW5kaXZpZHVhbCB0cmFuc2l0aW9ucyB0byB0aGUgZmFsbGJhY2sgdHJhbnNpdGlv
bnMgc2hvdWxkIGhhdmUgYmVlbiBlbGltaW5hdGVkIGJ5IHRoZSBvcHRpbWl6ZXIuIik7CiAgICAg
ICAgICAgICBpZiAoZGVzdGluYXRpb25zW2ldICE9IGRlc3RpbmF0aW9uc1tyYW5nZU1pbl0pIHsK
IAogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGVuZCBvZiBhIHJhbmdlLiBDaGVjayBp
ZiBpdCBjYW4gYmUgY2FzZSBpbnNlbnNpdGl2ZS4KQEAgLTI2MCw2ICsyNjcsNyBAQCBWZWN0b3I8
REZBQnl0ZWNvZGVDb21waWxlcjo6UmFuZ2U+IERGQUJ5dGVjb2RlQ29tcGlsZXI6OnJhbmdlcyhj
b25zdCBERkFOb2RlJiBubwogICAgICAgICAvLyBJZiBhIHJhbmdlIGdvZXMgdG8gMTI3LCB0aGVy
ZSB3aWxsIG5ldmVyIGJlIHZhbHVlcyBoaWdoZXIgdGhhbiBpdCwgc28gY2hlY2tpbmcgZm9yIGNh
c2UtaW5zZW5zaXRpdmUgcmFuZ2VzIHdvdWxkIGFsd2F5cyBmYWlsLgogICAgICAgICByYW5nZXMu
YXBwZW5kKFJhbmdlKHJhbmdlTWluLCAxMjcsIGRlc3RpbmF0aW9uc1tyYW5nZU1pbl0sIHRydWUp
KTsKICAgICB9CisKICAgICByZXR1cm4gcmFuZ2VzOwogfQogICAgIApAQCAtMjg5LDcgKzI5Nyw3
IEBAIHVuc2lnbmVkIERGQUJ5dGVjb2RlQ29tcGlsZXI6Om5vZGVUcmFuc2l0aW9uc01heEJ5dGVj
b2RlU2l6ZShjb25zdCBERkFOb2RlJiBub2RlCiAgICAgdW5zaWduZWQgc2l6ZSA9IDA7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiByYW5nZSA6IHJhbmdlcyhub2RlKSkKICAgICAgICAgc2l6ZSArPSBj
aGVja0ZvclJhbmdlTWF4Qnl0ZWNvZGVTaXplKHJhbmdlKTsKLSAgICBpZiAobm9kZS5oYXNGYWxs
YmFja1RyYW5zaXRpb24oKSkKKyAgICBpZiAobm9kZS5jYW5Vc2VGYWxsYmFja1RyYW5zaXRpb24o
bV9kZmEpKQogICAgICAgICBzaXplICs9IHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uOjpK
dW1wKSArIHNpemVvZih1aW50MzJfdCk7CiAgICAgZWxzZQogICAgICAgICBzaXplICs9IGluc3Ry
dWN0aW9uU2l6ZVdpdGhBcmd1bWVudHMoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVybWluYXRl
KTsKQEAgLTMwMyw4ICszMTEsOCBAQCB2b2lkIERGQUJ5dGVjb2RlQ29tcGlsZXI6OmNvbXBpbGVO
b2RlVHJhbnNpdGlvbnModWludDMyX3Qgbm9kZUluZGV4KQogICAgIAogICAgIGZvciAoY29uc3Qg
YXV0byYgcmFuZ2UgOiByYW5nZXMobm9kZSkpCiAgICAgICAgIGNvbXBpbGVDaGVja0ZvclJhbmdl
KG5vZGVJbmRleCwgcmFuZ2UpOwotICAgIGlmIChub2RlLmhhc0ZhbGxiYWNrVHJhbnNpdGlvbigp
KQotICAgICAgICBlbWl0SnVtcChub2RlSW5kZXgsIG5vZGUuZmFsbGJhY2tUcmFuc2l0aW9uRGVz
dGluYXRpb24obV9kZmEpKTsKKyAgICBpZiAobm9kZS5jYW5Vc2VGYWxsYmFja1RyYW5zaXRpb24o
bV9kZmEpKQorICAgICAgICBlbWl0SnVtcChub2RlSW5kZXgsIG5vZGUuYmVzdEZhbGxiYWNrVGFy
Z2V0KG1fZGZhKSk7CiAgICAgZWxzZQogICAgICAgICBlbWl0VGVybWluYXRlKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUNvbWJpbmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUNvbWJpbmVyLmNwcAppbmRleCAz
NzUzYzZmYzExNjkyNTU1MDNkOGI1ZmZkZjMxMGIwMmZlMzkxMDcxLi42MDk2YzNiMGYyMzg1MTYw
NWE5YWE1ZWEwNTE4ODQ5YjA1ODVmNWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9ERkFDb21iaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvREZBQ29tYmluZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiREZBQ29tYmluZXIuaCIKIAorI2luY2x1ZGUgIk11dGFibGVS
YW5nZUxpc3QuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAKQEAgLTM0LDYgKzM1LDM1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFj
ZSBDb250ZW50RXh0ZW5zaW9ucyB7CiAKIGNsYXNzIERGQU1lcmdlciB7CisgICAgdHlwZWRlZiBN
dXRhYmxlUmFuZ2VMaXN0PGNoYXIsIHVpbnQ2NF90LCAxMjg+IENvbWJpbmVkVHJhbnNpdGlvbnNN
dXRhYmxlUmFuZ2VMaXN0OworCisgICAgZW51bSBjbGFzcyBXaGljaERGQSB7CisgICAgICAgIEEs
CisgICAgICAgIEIKKyAgICB9OworCisgICAgdGVtcGxhdGU8V2hpY2hERkEgd2hpY2hERkE+Cisg
ICAgc3RydWN0IFRhcmdldENvbnZlcnRlciB7CisgICAgICAgIHVpbnQ2NF90IGNvbnZlcnQodWlu
dDMyX3QgdGFyZ2V0KQorICAgICAgICB7CisgICAgICAgICAgICB1aW50NjRfdCB2YWx1ZSA9IDB4
ZmZmZmZmZmZmZmZmZmZmZjsKKyAgICAgICAgICAgIGV4dGVuZCh2YWx1ZSwgdGFyZ2V0KTsKKyAg
ICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZXh0ZW5k
KHVpbnQ2NF90JiBkZXN0aW5hdGlvbiwgdWludDMyX3QgdGFyZ2V0KQorICAgICAgICB7CisgICAg
ICAgICAgICBzZXRIYWxmU2lnbmF0dXJlKGRlc3RpbmF0aW9uLCB0YXJnZXQpOworICAgICAgICB9
CisgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCBzZXRIYWxmU2lnbmF0dXJlKHVpbnQ2NF90JiBz
aWduYXR1cmUsIHVpbnQzMl90IHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25l
ZCBzaGlmdEFtb3VudCA9ICh3aGljaERGQSA9PSBXaGljaERGQTo6QSkgPyAzMiA6IDA7CisgICAg
ICAgICAgICB1aW50NjRfdCBtYXNrID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDB4ZmZmZmZmZmYp
IDw8ICgzMiAtIHNoaWZ0QW1vdW50KTsKKyAgICAgICAgICAgIHNpZ25hdHVyZSA9IChzaWduYXR1
cmUgJiBtYXNrKSB8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1ZSkgPDwgc2hpZnRBbW91bnQ7
CisgICAgICAgIH0KKyAgICB9OworCiBwdWJsaWM6CiAgICAgREZBTWVyZ2VyKGNvbnN0IERGQSYg
YSwgY29uc3QgREZBJiBiKQogICAgICAgICA6IG1fZGZhQShhKQpAQCAtNDksMzIgKzc5LDQwIEBA
IHB1YmxpYzoKICAgICAgICAgdWludDY0X3Qgcm9vdFNpZ25hdHVyZSA9IHNpZ25hdHVyZUZvcklu
ZGljZXMobV9kZmFBLnJvb3QsIG1fZGZhQi5yb290KTsKICAgICAgICAgZ2V0T3JDcmVhdGVDb21i
aW5lZE5vZGUocm9vdFNpZ25hdHVyZSk7CiAKKyAgICAgICAgQ29tYmluZWRUcmFuc2l0aW9uc011
dGFibGVSYW5nZUxpc3QgY29tYmluZWRUcmFuc2l0aW9uczsKICAgICAgICAgd2hpbGUgKCFtX3Vu
cHJvY2Vzc2VkTm9kZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBtZW1zZXQobV90cmFuc2l0
aW9uVGFyZ2V0cywgMHhmZiwgc2l6ZW9mKG1fdHJhbnNpdGlvblRhcmdldHMpKTsKKyAgICAgICAg
ICAgIGNvbWJpbmVkVHJhbnNpdGlvbnMuY2xlYXIoKTsKIAogICAgICAgICAgICAgdWludDY0X3Qg
dW5wcm9jZXNzZWROb2RlID0gbV91bnByb2Nlc3NlZE5vZGVzLnRha2VMYXN0KCk7CiAKLSAgICAg
ICAgICAgIC8vIFdlIGNhbm5vdCBjYWNoZSB0aGUgc291cmNlIG5vZGUgaXRzZWxmIHNpbmNlIHdl
IG1vZGlmeSB0aGUgbWFjaGluZS4gV2Ugb25seSBtYW5pcHVsYXRlIHRoZSBJRHMuCi0gICAgICAg
ICAgICB1aW50MzJfdCBzb3VyY2VOb2RlSWQgPSBtX25vZGVNYXBwaW5nLmdldCh1bnByb2Nlc3Nl
ZE5vZGUpOwotCi0gICAgICAgICAgICAvLyBQb3B1bGF0ZSB0aGUgdW5pcXVlIHRyYW5zaXRpb25z
LgogICAgICAgICAgICAgdWludDMyX3QgaW5kZXhBID0gZXh0cmFjdEluZGV4QSh1bnByb2Nlc3Nl
ZE5vZGUpOwotICAgICAgICAgICAgaWYgKGluZGV4QSAhPSBpbnZhbGlkTm9kZUluZGV4KQotICAg
ICAgICAgICAgICAgIHBvcHVsYXRlVHJhbnNpdGlvbnM8V2hpY2hERkE6OkE+KGluZGV4QSk7Cisg
ICAgICAgICAgICBpZiAoaW5kZXhBICE9IGludmFsaWROb2RlSW5kZXgpIHsKKyAgICAgICAgICAg
ICAgICBjb25zdCBERkFOb2RlJiBub2RlQSA9IG1fZGZhQS5ub2Rlc1tpbmRleEFdOworICAgICAg
ICAgICAgICAgIGF1dG8gdHJhbnNpdGlvbnNBID0gbm9kZUEudHJhbnNpdGlvbnMobV9kZmFBKTsK
KyAgICAgICAgICAgICAgICBUYXJnZXRDb252ZXJ0ZXI8V2hpY2hERkE6OkE+IGNvbnZlcnRlckE7
CisgICAgICAgICAgICAgICAgY29tYmluZWRUcmFuc2l0aW9ucy5leHRlbmQodHJhbnNpdGlvbnNB
LmJlZ2luKCksIHRyYW5zaXRpb25zQS5lbmQoKSwgY29udmVydGVyQSk7CisgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4QiA9IGV4dHJhY3RJbmRleEIodW5wcm9jZXNz
ZWROb2RlKTsKLSAgICAgICAgICAgIGlmIChpbmRleEIgIT0gaW52YWxpZE5vZGVJbmRleCkKLSAg
ICAgICAgICAgICAgICBwb3B1bGF0ZVRyYW5zaXRpb25zPFdoaWNoREZBOjpCPihpbmRleEIpOwot
Ci0gICAgICAgICAgICAvLyBTcHJlYWQgdGhlIGZhbGxiYWNrIHRyYW5zaXRpb25zIG92ZXIgdGhl
IHVuaXF1ZSB0cmFuc2l0aW9ucyBhbmQga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgZmFsbGJhY2sg
dHJhbnNpdGlvbi4KLSAgICAgICAgICAgIHVpbnQ2NF90IGZhbGxiYWNrVHJhbnNpdGlvblNpZ25h
dHVyZSA9IHNpZ25hdHVyZUZvckluZGljZXMoaW52YWxpZE5vZGVJbmRleCwgaW52YWxpZE5vZGVJ
bmRleCk7Ci0gICAgICAgICAgICBpZiAoaW5kZXhBICE9IGludmFsaWROb2RlSW5kZXgpCi0gICAg
ICAgICAgICAgICAgcG9wdWxhdGVGcm9tRmFsbGJhY2tUcmFuc2l0aW9uczxXaGljaERGQTo6QT4o
aW5kZXhBLCBmYWxsYmFja1RyYW5zaXRpb25TaWduYXR1cmUpOwotICAgICAgICAgICAgaWYgKGlu
ZGV4QiAhPSBpbnZhbGlkTm9kZUluZGV4KQotICAgICAgICAgICAgICAgIHBvcHVsYXRlRnJvbUZh
bGxiYWNrVHJhbnNpdGlvbnM8V2hpY2hERkE6OkI+KGluZGV4QiwgZmFsbGJhY2tUcmFuc2l0aW9u
U2lnbmF0dXJlKTsKLQotICAgICAgICAgICAgY3JlYXRlVHJhbnNpdGlvbnMoc291cmNlTm9kZUlk
KTsKLSAgICAgICAgICAgIGNyZWF0ZUZhbGxiYWNrVHJhbnNpdGlvbklmTmVlZGVkKHNvdXJjZU5v
ZGVJZCwgZmFsbGJhY2tUcmFuc2l0aW9uU2lnbmF0dXJlKTsKKyAgICAgICAgICAgIGlmIChpbmRl
eEIgIT0gaW52YWxpZE5vZGVJbmRleCkgeworICAgICAgICAgICAgICAgIGNvbnN0IERGQU5vZGUm
IG5vZGVCID0gbV9kZmFCLm5vZGVzW2luZGV4Ql07CisgICAgICAgICAgICAgICAgYXV0byB0cmFu
c2l0aW9uc0IgPSBub2RlQi50cmFuc2l0aW9ucyhtX2RmYUIpOworICAgICAgICAgICAgICAgIFRh
cmdldENvbnZlcnRlcjxXaGljaERGQTo6Qj4gY29udmVydGVyQjsKKyAgICAgICAgICAgICAgICBj
b21iaW5lZFRyYW5zaXRpb25zLmV4dGVuZCh0cmFuc2l0aW9uc0IuYmVnaW4oKSwgdHJhbnNpdGlv
bnNCLmVuZCgpLCBjb252ZXJ0ZXJCKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdW5z
aWduZWQgdHJhbnNpdGlvbnNTdGFydCA9IG1fb3V0cHV0LnRyYW5zaXRpb25SYW5nZXMuc2l6ZSgp
OworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiByYW5nZSA6IGNvbWJpbmVkVHJhbnNpdGlv
bnMpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXROb2RlSWQgPSBnZXRPckNyZWF0
ZUNvbWJpbmVkTm9kZShyYW5nZS5kYXRhKTsKKyAgICAgICAgICAgICAgICBtX291dHB1dC50cmFu
c2l0aW9uUmFuZ2VzLmFwcGVuZCh7IHJhbmdlLmZpcnN0LCByYW5nZS5sYXN0IH0pOworICAgICAg
ICAgICAgICAgIG1fb3V0cHV0LnRyYW5zaXRpb25EZXN0aW5hdGlvbnMuYXBwZW5kKHRhcmdldE5v
ZGVJZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB1bnNpZ25lZCB0cmFuc2l0aW9uc0Vu
ZCA9IG1fb3V0cHV0LnRyYW5zaXRpb25SYW5nZXMuc2l6ZSgpOworICAgICAgICAgICAgdW5zaWdu
ZWQgdHJhbnNpdGlvbnNMZW5ndGggPSB0cmFuc2l0aW9uc0VuZCAtIHRyYW5zaXRpb25zU3RhcnQ7
CisKKyAgICAgICAgICAgIHVpbnQzMl90IHNvdXJjZU5vZGVJZCA9IG1fbm9kZU1hcHBpbmcuZ2V0
KHVucHJvY2Vzc2VkTm9kZSk7CisgICAgICAgICAgICBERkFOb2RlJiBkZmFTb3VyY2VOb2RlID0g
bV9vdXRwdXQubm9kZXNbc291cmNlTm9kZUlkXTsKKyAgICAgICAgICAgIGRmYVNvdXJjZU5vZGUu
c2V0VHJhbnNpdGlvbnModHJhbnNpdGlvbnNTdGFydCwgc3RhdGljX2Nhc3Q8dWludDhfdD4odHJh
bnNpdGlvbnNMZW5ndGgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9vdXRwdXQ7CiAg
ICAgfQpAQCAtODIsMTEgKzEyMCw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdWludDMyX3Qg
aW52YWxpZE5vZGVJbmRleCA9IDB4ZmZmZmZmZmY7CiAKLSAgICBlbnVtIGNsYXNzIFdoaWNoREZB
IHsKLSAgICAgICAgQSwKLSAgICAgICAgQgotICAgIH07Ci0KICAgICBzdGF0aWMgdWludDY0X3Qg
c2lnbmF0dXJlRm9ySW5kaWNlcyh1aW50MzJfdCBhSW5kZXgsIHVpbnQzMl90IGJJbmRleCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYUluZGV4KSA8PCAzMiB8
IGJJbmRleDsKQEAgLTEyMiwxNCArMTU1LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB1aW50
MzJfdCBhY3Rpb25zU3RhcnQgPSBub2RlLmFjdGlvbnNTdGFydCgpOwogICAgICAgICAgICAgdWlu
dDMyX3QgYWN0aW9uc0VuZCA9IGFjdGlvbnNTdGFydCArIG5vZGUuYWN0aW9uc0xlbmd0aCgpOwog
ICAgICAgICAgICAgZm9yICh1aW50MzJfdCBpID0gYWN0aW9uc1N0YXJ0OyBpIDwgYWN0aW9uc0Vu
ZDsgKytpKQotICAgICAgICAgICAgYWN0aW9ucy5hZGQobV9kZmFBLmFjdGlvbnNbaV0pOworICAg
ICAgICAgICAgICAgIGFjdGlvbnMuYWRkKG1fZGZhQS5hY3Rpb25zW2ldKTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoaW5kZXhCICE9IGludmFsaWROb2RlSW5kZXgpIHsKICAgICAgICAgICAgIGNv
bnN0IERGQU5vZGUmIG5vZGUgPSBtX2RmYUIubm9kZXNbaW5kZXhCXTsKICAgICAgICAgICAgIHVp
bnQzMl90IGFjdGlvbnNTdGFydCA9IG5vZGUuYWN0aW9uc1N0YXJ0KCk7CiAgICAgICAgICAgICB1
aW50MzJfdCBhY3Rpb25zRW5kID0gYWN0aW9uc1N0YXJ0ICsgbm9kZS5hY3Rpb25zTGVuZ3RoKCk7
CiAgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSBhY3Rpb25zU3RhcnQ7IGkgPCBhY3Rpb25z
RW5kOyArK2kpCi0gICAgICAgICAgICBhY3Rpb25zLmFkZChtX2RmYUIuYWN0aW9uc1tpXSk7Cisg
ICAgICAgICAgICAgICAgYWN0aW9ucy5hZGQobV9kZmFCLmFjdGlvbnNbaV0pOwogICAgICAgICB9
CiAKICAgICAgICAgdWludDMyX3QgYWN0aW9uc1N0YXJ0ID0gbV9vdXRwdXQuYWN0aW9ucy5zaXpl
KCk7CkBAIC0xNDIsODcgKzE3NSwxMSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbmV3Tm9k
ZUluZGV4OwogICAgIH0KIAotICAgIHRlbXBsYXRlPFdoaWNoREZBIHdoaWNoREZBPgotICAgIHZv
aWQgc2V0SGFsZlNpZ25hdHVyZSh1aW50NjRfdCYgc2lnbmF0dXJlLCB1aW50MzJfdCB2YWx1ZSkK
LSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHNoaWZ0QW1vdW50ID0gKHdoaWNoREZBID09IFdoaWNo
REZBOjpBKSA/IDMyIDogMDsKLSAgICAgICAgdWludDY0X3QgbWFzayA9IHN0YXRpY19jYXN0PHVp
bnQ2NF90PigweGZmZmZmZmZmKSA8PCAoMzIgLSBzaGlmdEFtb3VudCk7Ci0gICAgICAgIHNpZ25h
dHVyZSA9IChzaWduYXR1cmUgJiBtYXNrKSB8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1ZSkg
PDwgc2hpZnRBbW91bnQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8V2hpY2hERkEgd2hpY2hERkE+
Ci0gICAgdm9pZCBwb3B1bGF0ZVRyYW5zaXRpb25zKHVpbnQzMl90IG5vZGVJbmRleCkKLSAgICB7
Ci0gICAgICAgIGNvbnN0IERGQSYgZGZhID0gKHdoaWNoREZBID09IFdoaWNoREZBOjpBKSA/IG1f
ZGZhQSA6IG1fZGZhQjsKLSAgICAgICAgY29uc3QgREZBTm9kZSYgbm9kZSA9IGRmYS5ub2Rlc1tu
b2RlSW5kZXhdOwotICAgICAgICB1aW50MzJfdCB0cmFuc2l0aW9uc1N0YXJ0ID0gbm9kZS50cmFu
c2l0aW9uc1N0YXJ0KCk7Ci0gICAgICAgIHVpbnQzMl90IHRyYW5zaXRpb25zRW5kID0gdHJhbnNp
dGlvbnNTdGFydCArIG5vZGUudHJhbnNpdGlvbnNMZW5ndGgoKTsKLQotICAgICAgICAvLyBFeHRy
YWN0IHRyYW5zaXRpb25zLgotICAgICAgICBmb3IgKHVpbnQzMl90IHRyYW5zaXRpb25JbmRleCA9
IHRyYW5zaXRpb25zU3RhcnQ7IHRyYW5zaXRpb25JbmRleCA8IHRyYW5zaXRpb25zRW5kOyArK3Ry
YW5zaXRpb25JbmRleCkgewotICAgICAgICAgICAgdWludDhfdCB0cmFuc2l0aW9uQ2hhcmFjdGVy
ID0gZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJzW3RyYW5zaXRpb25JbmRleF07Ci0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCh0cmFuc2l0aW9uQ2hhcmFjdGVyIDwgV1RGX0FSUkFZX0xFTkdUSCht
X3RyYW5zaXRpb25UYXJnZXRzKSk7Ci0KLSAgICAgICAgICAgIHVpbnQzMl90IHRyYW5zaXRpb25E
ZXN0aW5hdGlvbiA9IGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zW3RyYW5zaXRpb25JbmRleF07
Ci0gICAgICAgICAgICBzZXRIYWxmU2lnbmF0dXJlPHdoaWNoREZBPihtX3RyYW5zaXRpb25UYXJn
ZXRzW3RyYW5zaXRpb25DaGFyYWN0ZXJdLCB0cmFuc2l0aW9uRGVzdGluYXRpb24pOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8V2hpY2hERkEgd2hpY2hERkE+Ci0gICAgdm9pZCBw
b3B1bGF0ZUZyb21GYWxsYmFja1RyYW5zaXRpb25zKHVpbnQzMl90IG5vZGVJbmRleCwgdWludDY0
X3QmIGZhbGxiYWNrVHJhbnNpdGlvblNpZ25hdHVyZSkKLSAgICB7Ci0gICAgICAgIGNvbnN0IERG
QSYgZGZhID0gKHdoaWNoREZBID09IFdoaWNoREZBOjpBKSA/IG1fZGZhQSA6IG1fZGZhQjsKLSAg
ICAgICAgY29uc3QgREZBTm9kZSYgbm9kZSA9IGRmYS5ub2Rlc1tub2RlSW5kZXhdOwotICAgICAg
ICBpZiAoIW5vZGUuaGFzRmFsbGJhY2tUcmFuc2l0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgdWludDMyX3QgZmFsbGJhY2tUYXJnZXQgPSBub2RlLmZhbGxiYWNrVHJhbnNp
dGlvbkRlc3RpbmF0aW9uKGRmYSk7Ci0gICAgICAgIHNldEhhbGZTaWduYXR1cmU8d2hpY2hERkE+
KGZhbGxiYWNrVHJhbnNpdGlvblNpZ25hdHVyZSwgZmFsbGJhY2tUYXJnZXQpOwotCi0gICAgICAg
IC8vIFNwcmVhZCB0aGUgZmFsbGJhY2sgb3ZlciB0cmFuc2l0aW9ucyB3aGVyZSB0aGUgb3RoZXIg
aGFzIHNvbWV0aGluZyBhbmQgd2UgZG9uJ3QuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBXVEZfQVJSQVlfTEVOR1RIKG1fdHJhbnNpdGlvblRhcmdldHMpOyArK2kpIHsKLSAgICAg
ICAgICAgIHVpbnQ2NF90JiB0YXJnZXRTaWduYXR1cmUgPSBtX3RyYW5zaXRpb25UYXJnZXRzW2ld
OwotCi0gICAgICAgICAgICB1aW50MzJfdCBvdGhlclRhcmdldCA9ICh3aGljaERGQSA9PSBXaGlj
aERGQTo6QSkgPyBleHRyYWN0SW5kZXhCKHRhcmdldFNpZ25hdHVyZSkgOiBleHRyYWN0SW5kZXhB
KHRhcmdldFNpZ25hdHVyZSk7Ci0gICAgICAgICAgICB1aW50MzJfdCBzZWxmVGFyZ2V0ID0gKHdo
aWNoREZBID09IFdoaWNoREZBOjpBKSA/IGV4dHJhY3RJbmRleEEodGFyZ2V0U2lnbmF0dXJlKSA6
IGV4dHJhY3RJbmRleEIodGFyZ2V0U2lnbmF0dXJlKTsKLQotICAgICAgICAgICAgaWYgKG90aGVy
VGFyZ2V0ICE9IGludmFsaWROb2RlSW5kZXggJiYgc2VsZlRhcmdldCA9PSBpbnZhbGlkTm9kZUlu
ZGV4KQotICAgICAgICAgICAgICAgIHNldEhhbGZTaWduYXR1cmU8d2hpY2hERkE+KHRhcmdldFNp
Z25hdHVyZSwgZmFsbGJhY2tUYXJnZXQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBj
cmVhdGVUcmFuc2l0aW9ucyh1aW50MzJfdCBzb3VyY2VOb2RlSWQpCi0gICAgewotICAgICAgICAv
LyBDcmVhdGUgdHJhbnNpdGlvbnMgb3V0IG9mIHRoZSBzb3VyY2Ugbm9kZSwgY3JlYXRpbmcgbmV3
IG5vZGVzIGFzIG5lZWRlZC4KLSAgICAgICAgdWludDMyX3QgdHJhbnNpdGlvbnNTdGFydCA9IG1f
b3V0cHV0LnRyYW5zaXRpb25DaGFyYWN0ZXJzLnNpemUoKTsKLSAgICAgICAgZm9yICh1aW50OF90
IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChtX3RyYW5zaXRpb25UYXJnZXRzKTsgKytpKSB7
Ci0gICAgICAgICAgICB1aW50NjRfdCBzaWduYXR1cmUgPSBtX3RyYW5zaXRpb25UYXJnZXRzW2ld
OwotICAgICAgICAgICAgaWYgKHNpZ25hdHVyZSA9PSBzaWduYXR1cmVGb3JJbmRpY2VzKGludmFs
aWROb2RlSW5kZXgsIGludmFsaWROb2RlSW5kZXgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgdWludDMyX3Qgbm9kZUlkID0gZ2V0T3JDcmVhdGVDb21iaW5lZE5vZGUo
c2lnbmF0dXJlKTsKLSAgICAgICAgICAgIG1fb3V0cHV0LnRyYW5zaXRpb25DaGFyYWN0ZXJzLmFw
cGVuZChpKTsKLSAgICAgICAgICAgIG1fb3V0cHV0LnRyYW5zaXRpb25EZXN0aW5hdGlvbnMuYXBw
ZW5kKG5vZGVJZCk7Ci0gICAgICAgIH0KLSAgICAgICAgdWludDMyX3QgdHJhbnNpdGlvbnNFbmQg
PSBtX291dHB1dC50cmFuc2l0aW9uQ2hhcmFjdGVycy5zaXplKCk7Ci0gICAgICAgIHVpbnQ4X3Qg
dHJhbnNpdGlvbnNMZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50OF90Pih0cmFuc2l0aW9uc0VuZCAt
IHRyYW5zaXRpb25zU3RhcnQpOwotCi0gICAgICAgIG1fb3V0cHV0Lm5vZGVzW3NvdXJjZU5vZGVJ
ZF0uc2V0VHJhbnNpdGlvbnModHJhbnNpdGlvbnNTdGFydCwgdHJhbnNpdGlvbnNMZW5ndGgpOwot
ICAgIH0KLQotICAgIHZvaWQgY3JlYXRlRmFsbGJhY2tUcmFuc2l0aW9uSWZOZWVkZWQodWludDMy
X3Qgc291cmNlTm9kZUlkLCB1aW50NjRfdCBmYWxsYmFja1RyYW5zaXRpb25TaWduYXR1cmUpCi0g
ICAgewotICAgICAgICBpZiAoZmFsbGJhY2tUcmFuc2l0aW9uU2lnbmF0dXJlICE9IHNpZ25hdHVy
ZUZvckluZGljZXMoaW52YWxpZE5vZGVJbmRleCwgaW52YWxpZE5vZGVJbmRleCkpIHsKLSAgICAg
ICAgICAgIHVpbnQzMl90IG5vZGVJZCA9IGdldE9yQ3JlYXRlQ29tYmluZWROb2RlKGZhbGxiYWNr
VHJhbnNpdGlvblNpZ25hdHVyZSk7Ci0gICAgICAgICAgICBtX291dHB1dC5ub2Rlc1tzb3VyY2VO
b2RlSWRdLmFkZEZhbGxiYWNrVHJhbnNpdGlvbihtX291dHB1dCwgbm9kZUlkKTsKLSAgICAgICAg
fQotICAgIH0KLQogICAgIGNvbnN0IERGQSYgbV9kZmFBOwogICAgIGNvbnN0IERGQSYgbV9kZmFC
OwogICAgIERGQSBtX291dHB1dDsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCB1aW50MzJfdCwgRGVm
YXVsdEhhc2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVpbnQ2NF90Pj4gbV9ub2RlTWFwcGluZzsKICAgICBWZWN0b3I8dWludDY0X3Q+IG1fdW5w
cm9jZXNzZWROb2RlczsKLSAgICB1aW50NjRfdCBtX3RyYW5zaXRpb25UYXJnZXRzWzEyOF07CiB9
OwogCiB2b2lkIERGQUNvbWJpbmVyOjpjb21iaW5lREZBcyh1bnNpZ25lZCBtaW5pbXVtU2l6ZSwg
c3RkOjpmdW5jdGlvbjx2b2lkKERGQSYmKT4gaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQU1pbmltaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFNaW5pbWl6ZXIuY3BwCmluZGV4IGQwYTEyMTcyZWZiYjc0
MmU4Y2YwYzk1OTYyODk1MWI3YTgxNzNmZTQuLmIyMWNhMzU2YTljNzFlZmYxODhkNzdjY2M0OGM2
OTU2YzgyODE5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0RGQU1pbmltaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
REZBTWluaW1pemVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiREZBLmgiCiAj
aW5jbHVkZSAiREZBTm9kZS5oIgorI2luY2x1ZGUgIk11dGFibGVSYW5nZUxpc3QuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1N0cmluZ0hhc2hlci5oPgpAQCAtNDAsNzkgKzQxLDMyIEBAIG5hbWVzcGFjZSBDb250ZW50
RXh0ZW5zaW9ucyB7CiAKIG5hbWVzcGFjZSB7CiAKLS8vIHNpbXBsaWZ5VHJhbnNpdGlvbnMoKSB0
cmllcyB0byBjb2xsYXBzZSBpbmRpdmlkdWFsIHRyYW5zaXRpb25zIGludG8gZmFsbGJhY2sgdHJh
bnNpdGlvbnMuCi0vLyBBZnRlciBzaW1wbGlmeVRyYW5zaXRpb25zKCksIHlvdSBjYW4gYWxzbyBt
YWtlIHRoZSBhc3N1bXB0aW9uIHRoYXQgYSBmYWxsYmFjayB0cmFuc2l0aW9uIHRhcmdldCB3aWxs
IG5ldmVyIGJlCi0vLyBhbHNvIHRoZSB0YXJnZXQgb2YgYW4gaW5kaXZpZHVhbCB0cmFuc2l0aW9u
Lgotc3RhdGljIHZvaWQgc2ltcGxpZnlUcmFuc2l0aW9ucyhERkEmIGRmYSkKK3RlbXBsYXRlPHR5
cGVuYW1lIFZlY3RvclR5cGUsIHR5cGVuYW1lIEl0ZXJhYmxlLCB0eXBlbmFtZSBGdW5jdGlvbj4K
K3N0YXRpYyBpbmxpbmUgdm9pZCBpdGVyYXRlSW50ZXJzZWN0aW9ucyhjb25zdCBWZWN0b3JUeXBl
JiBzaW5ndWxhclRyYW5zaXRpb25zRmlyc3RzLCBjb25zdCBJdGVyYWJsZSYgaXRlcmFibGVUcmFu
c2l0aW9uTGlzdCwgY29uc3QgRnVuY3Rpb24mIGludGVyc2VjdGlvbkhhbmRsZXIpCiB7Ci0gICAg
Zm9yIChERkFOb2RlJiBkZmFOb2RlIDogZGZhLm5vZGVzKSB7Ci0gICAgICAgIGJvb2wgYWRkaW5n
RmFsbGJhY2sgPSBmYWxzZTsKLSAgICAgICAgdWludDMyX3QgbmV3RmFsbGJhY2tEZXN0aW5hdGlv
biA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKLSAgICAgICAgaWYgKCFk
ZmFOb2RlLmhhc0ZhbGxiYWNrVHJhbnNpdGlvbigpCi0gICAgICAgICAgICAmJiAoKGRmYU5vZGUu
dHJhbnNpdGlvbnNMZW5ndGgoKSA9PSAxMjYgJiYgIWRmYU5vZGUuY29udGFpbnNUcmFuc2l0aW9u
KDAsIGRmYSkpCi0gICAgICAgICAgICAgICAgfHwgKGRmYU5vZGUudHJhbnNpdGlvbnNMZW5ndGgo
KSA9PSAxMjcgJiYgZGZhTm9kZS5jb250YWluc1RyYW5zaXRpb24oMCwgZGZhKSkpKSB7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBiZXN0VGFyZ2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpOwotICAgICAgICAgICAgdW5zaWduZWQgYmVzdFRhcmdldFNjb3JlID0gMDsKLSAg
ICAgICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25l
ZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiB0
YXJnZXRIaXN0b2dyYW07Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYW5zaXRpb24g
OiBkZmFOb2RlLnRyYW5zaXRpb25zKGRmYSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXRyYW5z
aXRpb24uZmlyc3QpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAg
ICAgICAgdW5zaWduZWQgdHJhbnNpdGlvblRhcmdldCA9IHRyYW5zaXRpb24uc2Vjb25kOwotICAg
ICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gdGFyZ2V0SGlzdG9ncmFtLmFkZCh0cmFuc2l0
aW9uVGFyZ2V0LCAxKTsKLSAgICAgICAgICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5
KQotICAgICAgICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKys7Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA+IGJlc3RUYXJnZXRT
Y29yZSkgewotICAgICAgICAgICAgICAgICAgICBiZXN0VGFyZ2V0U2NvcmUgPSBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlOwotICAgICAgICAgICAgICAgICAgICBiZXN0VGFyZ2V0ID0gdHJhbnNp
dGlvblRhcmdldDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKGJlc3RUYXJnZXRTY29yZSwgIlRoZXJlIHNob3VsZCBiZSBh
dCBsZWFzdCBvbmUgdmFsaWQgdGFyZ2V0IHNpbmNlIGhhdmluZyB0cmFuc2l0aW9ucyBpcyBhIHBy
ZWNvbmRpdGlvbiB0byBlbnRlciB0aGlzIHBhdGguIik7Ci0KLSAgICAgICAgICAgIG5ld0ZhbGxi
YWNrRGVzdGluYXRpb24gPSBiZXN0VGFyZ2V0OwotICAgICAgICAgICAgYWRkaW5nRmFsbGJhY2sg
PSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBVc2UgdGhlIHNhbWUgbG9j
YXRpb24gdG8gd3JpdGUgbmV3IHRyYW5zaXRpb25zIHBvc3NpYmx5IGZvbGxvd2VkIGJ5IHVudXNl
ZCBtZW1vcnkuCi0gICAgICAgIC8vIFdlIGNhbiBkbyB0aGlzIGJlY2F1c2Ugd2UgYXJlIGFsd2F5
cyBkZWNyZWFzaW5nIHRoZSBhbW91bnQgb2YgbWVtb3J5IHVzZWQuCi0gICAgICAgIC8vIFdlIHdp
bGwgcHJvYmFibHkgbmVlZCBzb21ldGhpbmcgbGlrZSBzZXRIYXNGYWxsYmFja1RyYW5zaXRpb25X
aXRob3V0Q2hhbmdpbmdERkEgdG8gZG8gdGhhdC4KLQotICAgICAgICB1bnNpZ25lZCBvbGRGYWxs
YmFja1RyYW5zaXRpb24gPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7Ci0g
ICAgICAgIGJvb2wgaGFkRmFsbGJhY2tUcmFuc2l0aW9uID0gZGZhTm9kZS5oYXNGYWxsYmFja1Ry
YW5zaXRpb24oKTsKLSAgICAgICAgaWYgKGhhZEZhbGxiYWNrVHJhbnNpdGlvbikKLSAgICAgICAg
ICAgIG9sZEZhbGxiYWNrVHJhbnNpdGlvbiA9IGRmYU5vZGUuZmFsbGJhY2tUcmFuc2l0aW9uRGVz
dGluYXRpb24oZGZhKTsKLSAgICAgICAgCi0gICAgICAgIG5ld0ZhbGxiYWNrRGVzdGluYXRpb24g
PSAobmV3RmFsbGJhY2tEZXN0aW5hdGlvbiA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90
Pjo6bWF4KCkgPyBvbGRGYWxsYmFja1RyYW5zaXRpb24gOiBuZXdGYWxsYmFja0Rlc3RpbmF0aW9u
KTsKLSAgICAgICAgQVNTRVJUKCFhZGRpbmdGYWxsYmFjayB8fCAobmV3RmFsbGJhY2tEZXN0aW5h
dGlvbiAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkgJiYgb2xkRmFsbGJh
Y2tUcmFuc2l0aW9uID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkpOwot
ICAgICAgICBib29sIHdpbGxIYXZlRmFsbGJhY2sgPSBuZXdGYWxsYmFja0Rlc3RpbmF0aW9uICE9
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKLSAgICAgICAgZGZhTm9kZS5z
ZXRIYXNGYWxsYmFja1RyYW5zaXRpb25XaXRob3V0Q2hhbmdpbmdERkEod2lsbEhhdmVGYWxsYmFj
ayk7Ci0gICAgICAgIAotICAgICAgICBpZiAod2lsbEhhdmVGYWxsYmFjaykgewotICAgICAgICAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50OF90LCB1aW50MzJfdD4+IHRyYW5zaXRpb25zID0gZGZh
Tm9kZS50cmFuc2l0aW9ucyhkZmEpOwotICAgICAgICAgICAgdW5zaWduZWQgYXZhaWxhYmxlU2xv
dENvdW50ID0gdHJhbnNpdGlvbnMuc2l6ZSgpICsgaGFkRmFsbGJhY2tUcmFuc2l0aW9uOwotICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRyYW5zaXRpb25zLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRyYW5zaXRpb25zW2ldLnNlY29uZCA9PSBuZXdGYWxs
YmFja0Rlc3RpbmF0aW9uKQotICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5yZW1vdmUo
aS0tKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VCh0cmFuc2l0aW9ucy5zaXplKCkgKyB3aWxsSGF2ZUZhbGxiYWNrIDw9IGF2YWlsYWJsZVNsb3RD
b3VudCk7Ci0gICAgICAgIAotICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RTbG90ID0gZGZhTm9k
ZS50cmFuc2l0aW9uc1N0YXJ0KCk7Ci0gICAgICAgICAgICBkZmFOb2RlLnJlc2V0VHJhbnNpdGlv
bnMoZmlyc3RTbG90LCB0cmFuc2l0aW9ucy5zaXplKCkpOwotICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHRyYW5zaXRpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJzW2ZpcnN0U2xvdCArIGldID0gdHJhbnNpdGlvbnNb
aV0uZmlyc3Q7Ci0gICAgICAgICAgICAgICAgZGZhLnRyYW5zaXRpb25EZXN0aW5hdGlvbnNbZmly
c3RTbG90ICsgaV0gPSB0cmFuc2l0aW9uc1tpXS5zZWNvbmQ7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0cmFuc2l0aW9ucy5zaXplKCk7IGkgPCBhdmFpbGFi
bGVTbG90Q291bnQ7ICsraSkgewotICAgICAgICAgICAgICAgIC8vIEludmFsaWRhdGUgbm93LXVu
dXNlZCBtZW1vcnkgdG8gbWFrZSBmaW5kaW5nIGJ1Z3MgZWFzaWVyLgotICAgICAgICAgICAgICAg
IGRmYS50cmFuc2l0aW9uQ2hhcmFjdGVyc1tmaXJzdFNsb3QgKyBpXSA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDhfdD46Om1heCgpOwotICAgICAgICAgICAgICAgIGRmYS50cmFuc2l0aW9uRGVz
dGluYXRpb25zW2ZpcnN0U2xvdCArIGldID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46
Om1heCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHdpbGxIYXZlRmFsbGJhY2sp
IHsKLSAgICAgICAgICAgICAgICBkZmEudHJhbnNpdGlvbkNoYXJhY3RlcnNbZmlyc3RTbG90ICsg
dHJhbnNpdGlvbnMuc2l6ZSgpXSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDhfdD46Om1heCgp
OwotICAgICAgICAgICAgICAgIGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zW2ZpcnN0U2xvdCAr
IHRyYW5zaXRpb25zLnNpemUoKV0gPSBuZXdGYWxsYmFja0Rlc3RpbmF0aW9uOwotICAgICAgICAg
ICAgfQorICAgIEFTU0VSVCghc2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0cy5pc0VtcHR5KCkpOwor
ICAgIGF1dG8gb3RoZXJJdGVyYXRvciA9IGl0ZXJhYmxlVHJhbnNpdGlvbkxpc3QuYmVnaW4oKTsK
KyAgICBhdXRvIG90aGVyRW5kID0gaXRlcmFibGVUcmFuc2l0aW9uTGlzdC5lbmQoKTsKKworICAg
IGlmIChvdGhlckl0ZXJhdG9yID09IG90aGVyRW5kKQorICAgICAgICByZXR1cm47CisKKyAgICB1
bnNpZ25lZCBzaW5ndWxhclRyYW5zaXRpb25zTGVuZ3RoID0gc2luZ3VsYXJUcmFuc2l0aW9uc0Zp
cnN0cy5zaXplKCk7CisgICAgdW5zaWduZWQgc2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0c0luZGV4
ID0gMDsKKyAgICBmb3IgKDsgb3RoZXJJdGVyYXRvciAhPSBvdGhlckVuZDsgKytvdGhlckl0ZXJh
dG9yKSB7CisgICAgICAgIGF1dG8gZmlyc3RDaGFyYWN0ZXIgPSBvdGhlckl0ZXJhdG9yLmZpcnN0
KCk7CisgICAgICAgIHdoaWxlIChzaW5ndWxhclRyYW5zaXRpb25zRmlyc3RzSW5kZXggPCBzaW5n
dWxhclRyYW5zaXRpb25zTGVuZ3RoCisgICAgICAgICAgICAmJiBzaW5ndWxhclRyYW5zaXRpb25z
Rmlyc3RzW3Npbmd1bGFyVHJhbnNpdGlvbnNGaXJzdHNJbmRleF0gIT0gZmlyc3RDaGFyYWN0ZXIp
CisgICAgICAgICAgICArK3Npbmd1bGFyVHJhbnNpdGlvbnNGaXJzdHNJbmRleDsKKworICAgICAg
ICBpbnRlcnNlY3Rpb25IYW5kbGVyKHNpbmd1bGFyVHJhbnNpdGlvbnNGaXJzdHNJbmRleCwgb3Ro
ZXJJdGVyYXRvcik7CisgICAgICAgICsrc2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0c0luZGV4Owor
CisgICAgICAgIGF1dG8gbGFzdENoYXJhY3RlciA9IG90aGVySXRlcmF0b3IubGFzdCgpOworICAg
ICAgICB3aGlsZSAoc2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0c0luZGV4IDwgc2luZ3VsYXJUcmFu
c2l0aW9uc0xlbmd0aAorICAgICAgICAgICAgJiYgc2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0c1tz
aW5ndWxhclRyYW5zaXRpb25zRmlyc3RzSW5kZXhdIDw9IGxhc3RDaGFyYWN0ZXIpIHsKKyAgICAg
ICAgICAgIGludGVyc2VjdGlvbkhhbmRsZXIoc2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0c0luZGV4
LCBvdGhlckl0ZXJhdG9yKTsKKyAgICAgICAgICAgICsrc2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0
c0luZGV4OwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTM3LDcgKzkxLDMyIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9zZXRzLmFwcGVuZChTZXREZXNjcmlwdG9yKHsgMCwgc2l6ZSwgMCB9KSk7CiAg
ICAgfQogCi0gICAgdm9pZCBtYXJrRWxlbWVudEluQ3VycmVudEdlbmVyYXRpb24odW5zaWduZWQg
ZWxlbWVudEluZGV4KQorICAgIHZvaWQgcmVzZXJ2ZVVuaW5pdGlhbGl6ZWRDYXBhY2l0eSh1bnNp
Z25lZCBlbGVtZW50Q291bnQpCisgICAgeworICAgICAgICBtX3BhcnRpdGlvbmVkRWxlbWVudHMu
cmVzaXplKGVsZW1lbnRDb3VudCk7CisgICAgICAgIG1fZWxlbWVudFBvc2l0aW9uSW5QYXJ0aXRp
b25lZE5vZGVzLnJlc2l6ZShlbGVtZW50Q291bnQpOworICAgICAgICBtX2VsZW1lbnRUb1NldE1h
cC5yZXNpemUoZWxlbWVudENvdW50KTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFNldFVuY2hlY2tl
ZCh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgc2l6ZSkKKyAgICB7CisgICAgICAgIG1fc2V0cy5h
cHBlbmQoU2V0RGVzY3JpcHRvciB7IHN0YXJ0LCBzaXplLCAwIH0pOworICAgIH0KKworICAgIHZv
aWQgc2V0RWxlbWVudFVuY2hlY2tlZCh1bnNpZ25lZCBlbGVtZW50SW5kZXgsIHVuc2lnbmVkIHBv
c2l0aW9uSW5QYXJ0aXRpb24sIHVuc2lnbmVkIHNldEluZGV4KQorICAgIHsKKyAgICAgICAgQVNT
RVJUKHNldEluZGV4IDwgbV9zZXRzLnNpemUoKSk7CisgICAgICAgIG1fcGFydGl0aW9uZWRFbGVt
ZW50c1twb3NpdGlvbkluUGFydGl0aW9uXSA9IGVsZW1lbnRJbmRleDsKKyAgICAgICAgbV9lbGVt
ZW50UG9zaXRpb25JblBhcnRpdGlvbmVkTm9kZXNbZWxlbWVudEluZGV4XSA9IHBvc2l0aW9uSW5Q
YXJ0aXRpb247CisgICAgICAgIG1fZWxlbWVudFRvU2V0TWFwW2VsZW1lbnRJbmRleF0gPSBzZXRJ
bmRleDsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldE9mU2V0KHVuc2lnbmVkIHNl
dEluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2V0c1tzZXRJbmRleF0uc3Rh
cnQ7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIG1hcmtFbGVtZW50SW5DdXJyZW50
R2VuZXJhdGlvbih1bnNpZ25lZCBlbGVtZW50SW5kZXgpCiAgICAgewogICAgICAgICAvLyBTd2Fw
IHRoZSBub2RlIHdpdGggdGhlIGZpcnN0IHVubWFya2VkIG5vZGUuCiAgICAgICAgIHVuc2lnbmVk
IHNldEluZGV4ID0gbV9lbGVtZW50VG9TZXRNYXBbZWxlbWVudEluZGV4XTsKQEAgLTIzOCw0NSAr
MjE3LDY2IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIC8vIExpc3Qgb2Ygc2V0cy4KLSAgICBW
ZWN0b3I8U2V0RGVzY3JpcHRvcj4gbV9zZXRzOworICAgIFZlY3RvcjxTZXREZXNjcmlwdG9yLCAw
LCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9zZXRzOwogCiAgICAgLy8gQWxsIHRoZSBlbGVtZW50
IGluZGljZXMgc3VjaCB0aGF0IHR3byBlbGVtZW50cyBvZiB0aGUgc2FtZSBzZXQgbmV2ZXIgaGF2
ZSBhIGVsZW1lbnQgb2YgYSBkaWZmZXJlbnQgc2V0IGJldHdlZW4gdGhlbS4KLSAgICBWZWN0b3I8
dW5zaWduZWQ+IG1fcGFydGl0aW9uZWRFbGVtZW50czsKKyAgICBWZWN0b3I8dW5zaWduZWQsIDAs
IFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX3BhcnRpdGlvbmVkRWxlbWVudHM7CiAKICAgICAvLyBN
YXAgZWxlbWVudEluZGV4LT5wb3NpdGlvbiBpbiB0aGUgcGFydGl0aW9uZWRFbGVtZW50cy4KLSAg
ICBWZWN0b3I8dW5zaWduZWQ+IG1fZWxlbWVudFBvc2l0aW9uSW5QYXJ0aXRpb25lZE5vZGVzOwor
ICAgIFZlY3Rvcjx1bnNpZ25lZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fZWxlbWVudFBv
c2l0aW9uSW5QYXJ0aXRpb25lZE5vZGVzOwogCiAgICAgLy8gTWFwIGVsZW1lbnRJbmRleC0+U2V0
SW5kZXguCi0gICAgVmVjdG9yPHVuc2lnbmVkPiBtX2VsZW1lbnRUb1NldE1hcDsKKyAgICBWZWN0
b3I8dW5zaWduZWQsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX2VsZW1lbnRUb1NldE1hcDsK
IAogICAgIC8vIExpc3Qgb2Ygc2V0cyB3aXRoIGFueSBtYXJrZWQgbm9kZS4gRWFjaCBzZXQgY2Fu
IGFwcGVhciBhdCBtb3N0IG9uY2UuCiAgICAgLy8gRklYTUU6IGZpbmQgYSBnb29kIGlubGluZSBz
aXplIGZvciB0aGlzLgotICAgIFZlY3Rvcjx1bnNpZ25lZCwgMTI4PiBtX3NldHNNYXJrZWRJbkN1
cnJlbnRHZW5lcmF0aW9uOworICAgIFZlY3Rvcjx1bnNpZ25lZCwgMTI4LCBVbnNhZmVWZWN0b3JP
dmVyZmxvdz4gbV9zZXRzTWFya2VkSW5DdXJyZW50R2VuZXJhdGlvbjsKIH07CiAKIGNsYXNzIEZ1
bGxHcmFwaFBhcnRpdGlvbiB7CisgICAgdHlwZWRlZiBNdXRhYmxlUmFuZ2VMaXN0PGNoYXIsIHVp
bnQzMl90LCAxMjg+IFNpbmd1bGFyVHJhbnNpdGlvbnNNdXRhYmxlUmFuZ2VMaXN0OwogcHVibGlj
OgogICAgIEZ1bGxHcmFwaFBhcnRpdGlvbihjb25zdCBERkEmIGRmYSkKICAgICB7CiAgICAgICAg
IG1fbm9kZVBhcnRpdGlvbi5pbml0aWFsaXplKGRmYS5ub2Rlcy5zaXplKCkpOwogCi0gICAgICAg
IG1fZmxhdHRlbmVkVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGUucmVzaXplKGRmYS5ub2Rl
cy5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkJiBjb3VudGVyIDogbV9mbGF0dGVuZWRU
cmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZSkKLSAgICAgICAgICAgIGNvdW50ZXIgPSAwOwor
ICAgICAgICBTaW5ndWxhclRyYW5zaXRpb25zTXV0YWJsZVJhbmdlTGlzdCBzaW5ndWxhclRyYW5z
aXRpb25zOworICAgICAgICBDb3VudGVyQ29udmVydGVyIGNvdW50ZXJDb252ZXJ0ZXI7CisgICAg
ICAgIGZvciAoY29uc3QgREZBTm9kZSYgbm9kZSA6IGRmYS5ub2RlcykgeworICAgICAgICAgICAg
aWYgKG5vZGUuaXNLaWxsZWQoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIGF1dG8gdHJhbnNpdGlvbnMgPSBub2RlLnRyYW5zaXRpb25zKGRmYSk7CisgICAgICAgICAg
ICBzaW5ndWxhclRyYW5zaXRpb25zLmV4dGVuZCh0cmFuc2l0aW9ucy5iZWdpbigpLCB0cmFuc2l0
aW9ucy5lbmQoKSwgY291bnRlckNvbnZlcnRlcik7CisgICAgICAgIH0KIAotICAgICAgICBtX2Zs
YXR0ZW5lZEZhbGxiYWNrVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGUucmVzaXplKGRmYS5u
b2Rlcy5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkJiBjb3VudGVyIDogbV9mbGF0dGVu
ZWRGYWxsYmFja1RyYW5zaXRpb25zU3RhcnRPZmZzZXRQZXJOb2RlKQotICAgICAgICAgICAgY291
bnRlciA9IDA7CisgICAgICAgIC8vIENvdW50IHRoZSBudW1iZXIgb2YgdHJhbnNpdGlvbiBmb3Ig
ZWFjaCBzaW5ndWxhciByYW5nZS4gVGhpcyB3aWxsIGdpdmUgdXMgdGhlIGJ1Y2tldCBzaXplCisg
ICAgICAgIC8vIGZvciB0aGUgdHJhbnNpdGlvbiBwYXJ0aXRpb24sIHdoZXJlIHRyYW5zaXRpb25z
IGFyZSBwYXJ0aXRpb25lZCBieSAic3ltYm9sIi4KKyAgICAgICAgdW5zaWduZWQgcmFuZ2VJbmRl
eEFjY3VtdWxhdG9yID0gMDsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFuc2l0aW9uIDog
c2luZ3VsYXJUcmFuc2l0aW9ucykgeworICAgICAgICAgICAgbV90cmFuc2l0aW9uUGFydGl0aW9u
LmFkZFNldFVuY2hlY2tlZChyYW5nZUluZGV4QWNjdW11bGF0b3IsIHRyYW5zaXRpb24uZGF0YSk7
CisgICAgICAgICAgICByYW5nZUluZGV4QWNjdW11bGF0b3IgKz0gdHJhbnNpdGlvbi5kYXRhOwor
ICAgICAgICB9CiAKICAgICAgICAgLy8gQ291bnQgdGhlIG51bWJlciBvZiBpbmNvbWluZyB0cmFu
c2l0aW9ucyBwZXIgbm9kZS4KLSAgICAgICAgZm9yIChjb25zdCBERkFOb2RlJiBkZmFOb2RlIDog
ZGZhLm5vZGVzKSB7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYW5zaXRpb24gOiBk
ZmFOb2RlLnRyYW5zaXRpb25zKGRmYSkpCi0gICAgICAgICAgICAgICAgKyttX2ZsYXR0ZW5lZFRy
YW5zaXRpb25zU3RhcnRPZmZzZXRQZXJOb2RlW3RyYW5zaXRpb24uc2Vjb25kXTsKLSAgICAgICAg
ICAgIGlmIChkZmFOb2RlLmhhc0ZhbGxiYWNrVHJhbnNpdGlvbigpKQotICAgICAgICAgICAgICAg
ICsrbV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25zU3RhcnRPZmZzZXRQZXJOb2RlW2RmYU5v
ZGUuZmFsbGJhY2tUcmFuc2l0aW9uRGVzdGluYXRpb24oZGZhKV07CisgICAgICAgIG1fZmxhdHRl
bmVkVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGUucmVzaXplKGRmYS5ub2Rlcy5zaXplKCkp
OworICAgICAgICBtZW1zZXQobV9mbGF0dGVuZWRUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9k
ZS5kYXRhKCksIDAsIG1fZmxhdHRlbmVkVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGUuc2l6
ZSgpICogc2l6ZW9mKHVuc2lnbmVkKSk7CisKKyAgICAgICAgVmVjdG9yPGNoYXIsIDAsIFVuc2Fm
ZVZlY3Rvck92ZXJmbG93PiBzaW5ndWxhclRyYW5zaXRpb25zRmlyc3RzOworICAgICAgICBzaW5n
dWxhclRyYW5zaXRpb25zRmlyc3RzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2luZ3VsYXJUcmFu
c2l0aW9ucy5tX3Jhbmdlcy5zaXplKCkpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYW5z
aXRpb24gOiBzaW5ndWxhclRyYW5zaXRpb25zKQorICAgICAgICAgICAgc2luZ3VsYXJUcmFuc2l0
aW9uc0ZpcnN0cy51bmNoZWNrZWRBcHBlbmQodHJhbnNpdGlvbi5maXJzdCk7CisKKyAgICAgICAg
Zm9yIChjb25zdCBERkFOb2RlJiBub2RlIDogZGZhLm5vZGVzKSB7CisgICAgICAgICAgICBpZiAo
bm9kZS5pc0tpbGxlZCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
YXV0byB0cmFuc2l0aW9ucyA9IG5vZGUudHJhbnNpdGlvbnMoZGZhKTsKKyAgICAgICAgICAgIGl0
ZXJhdGVJbnRlcnNlY3Rpb25zKHNpbmd1bGFyVHJhbnNpdGlvbnNGaXJzdHMsIHRyYW5zaXRpb25z
LCBbJl0odW5zaWduZWQsIGNvbnN0IERGQU5vZGU6OkNvbnN0UmFuZ2VJdGVyYXRvciYgb3JpZ2lu
KSB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgdGFyZ2V0Tm9kZUluZGV4ID0gb3JpZ2luLnRh
cmdldCgpOworICAgICAgICAgICAgICAgICsrbV9mbGF0dGVuZWRUcmFuc2l0aW9uc1N0YXJ0T2Zm
c2V0UGVyTm9kZVt0YXJnZXROb2RlSW5kZXhdOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0K
IAotICAgICAgICAvLyBBY2N1bXVsYXRlIHRoZSBvZmZzZXRzLgorICAgICAgICAvLyBBY2N1bXVs
YXRlIHRoZSBvZmZzZXRzLiBUaGlzIGdpdmVzIHVzIHRoZSBzdGFydCBwb3NpdGlvbiBvZiBlYWNo
IGJ1Y2tldC4KICAgICAgICAgdW5zaWduZWQgdHJhbnNpdGlvbkFjY3VtdWxhdG9yID0gMDsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZmxhdHRlbmVkVHJhbnNpdGlvbnNTdGFy
dE9mZnNldFBlck5vZGUuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIHRyYW5z
aXRpb25zQ291bnRGb3JOb2RlID0gbV9mbGF0dGVuZWRUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVy
Tm9kZVtpXTsKQEAgLTI4NCw2NSArMjg0LDQyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHRyYW5z
aXRpb25BY2N1bXVsYXRvciArPSB0cmFuc2l0aW9uc0NvdW50Rm9yTm9kZTsKICAgICAgICAgfQog
ICAgICAgICB1bnNpZ25lZCBmbGF0dGVuZWRUcmFuc2l0aW9uc1NpemUgPSB0cmFuc2l0aW9uQWNj
dW11bGF0b3I7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZmxhdHRlbmVkVHJhbnNpdGlv
bnNTaXplID09IHJhbmdlSW5kZXhBY2N1bXVsYXRvciwgIlRoZSBudW1iZXIgb2YgdHJhbnNpdGlv
bnMgc2hvdWxkIGJlIHRoZSBzYW1lLCByZWdhcmRsZXNzIG9mIGhvdyB0aGV5IGFyZSBhcnJhbmdl
ZCBpbiBidWNrZXRzLiIpOwogCi0gICAgICAgIHVuc2lnbmVkIGZhbGxiYWNrVHJhbnNpdGlvbkFj
Y3VtdWxhdG9yID0gMDsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZmxhdHRl
bmVkRmFsbGJhY2tUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZS5zaXplKCk7ICsraSkgewot
ICAgICAgICAgICAgdW5zaWduZWQgZmFsbGJhY2tUcmFuc2l0aW9uc0NvdW50Rm9yTm9kZSA9IG1f
ZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZVtpXTsKLSAgICAg
ICAgICAgIG1fZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZVtp
XSA9IGZhbGxiYWNrVHJhbnNpdGlvbkFjY3VtdWxhdG9yOwotICAgICAgICAgICAgZmFsbGJhY2tU
cmFuc2l0aW9uQWNjdW11bGF0b3IgKz0gZmFsbGJhY2tUcmFuc2l0aW9uc0NvdW50Rm9yTm9kZTsK
LSAgICAgICAgfQotICAgICAgICB1bnNpZ25lZCBmbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25z
U2l6ZSA9IGZhbGxiYWNrVHJhbnNpdGlvbkFjY3VtdWxhdG9yOworICAgICAgICBtX3RyYW5zaXRp
b25QYXJ0aXRpb24ucmVzZXJ2ZVVuaW5pdGlhbGl6ZWRDYXBhY2l0eShmbGF0dGVuZWRUcmFuc2l0
aW9uc1NpemUpOwogCiAgICAgICAgIC8vIE5leHQsIGxldCdzIGZpbGwgdGhlIHRyYW5zaXRpb24g
dGFibGUgYW5kIHNldCB1cCB0aGUgc2l6ZSBvZiBlYWNoIGdyb3VwIGF0IHRoZSBzYW1lIHRpbWUu
CiAgICAgICAgIG1fZmxhdHRlbmVkVHJhbnNpdGlvbnNTaXplUGVyTm9kZS5yZXNpemUoZGZhLm5v
ZGVzLnNpemUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQmIGNvdW50ZXIgOiBtX2ZsYXR0ZW5l
ZFRyYW5zaXRpb25zU2l6ZVBlck5vZGUpCiAgICAgICAgICAgICBjb3VudGVyID0gMDsKLQotICAg
ICAgICBtX2ZsYXR0ZW5lZEZhbGxiYWNrVHJhbnNpdGlvbnNTaXplUGVyTm9kZS5yZXNpemUoZGZh
Lm5vZGVzLnNpemUoKSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQmIGNvdW50ZXIgOiBtX2ZsYXR0
ZW5lZEZhbGxiYWNrVHJhbnNpdGlvbnNTaXplUGVyTm9kZSkKLSAgICAgICAgICAgIGNvdW50ZXIg
PSAwOwotCiAgICAgICAgIG1fZmxhdHRlbmVkVHJhbnNpdGlvbnMucmVzaXplKGZsYXR0ZW5lZFRy
YW5zaXRpb25zU2l6ZSk7CiAKLSAgICAgICAgbV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25z
LnJlc2l6ZShmbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25zU2l6ZSk7CisgICAgICAgIFZlY3Rv
cjx1aW50MzJfdD4gdHJhbnNpdGlvblBlclJhbmdlT2Zmc2V0KG1fdHJhbnNpdGlvblBhcnRpdGlv
bi5zaXplKCkpOworICAgICAgICBtZW1zZXQodHJhbnNpdGlvblBlclJhbmdlT2Zmc2V0LmRhdGEo
KSwgMCwgdHJhbnNpdGlvblBlclJhbmdlT2Zmc2V0LnNpemUoKSAqIHNpemVvZih1aW50MzJfdCkp
OwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZmEubm9kZXMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgICAgIGNvbnN0IERGQU5vZGUmIGRmYU5vZGUgPSBkZmEubm9kZXNbaV07
Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYW5zaXRpb24gOiBkZmFOb2RlLnRyYW5z
aXRpb25zKGRmYSkpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXROb2RlSW5kZXgg
PSB0cmFuc2l0aW9uLnNlY29uZDsKKyAgICAgICAgICAgIGNvbnN0IERGQU5vZGUmIG5vZGUgPSBk
ZmEubm9kZXNbaV07CisgICAgICAgICAgICBpZiAobm9kZS5pc0tpbGxlZCgpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBhdXRvIHRyYW5zaXRpb25zID0gbm9kZS50
cmFuc2l0aW9ucyhkZmEpOworICAgICAgICAgICAgaXRlcmF0ZUludGVyc2VjdGlvbnMoc2luZ3Vs
YXJUcmFuc2l0aW9uc0ZpcnN0cywgdHJhbnNpdGlvbnMsIFsmXSh1bnNpZ25lZCBzaW5ndWxhclRy
YW5zaXRvbkluZGV4LCBjb25zdCBERkFOb2RlOjpDb25zdFJhbmdlSXRlcmF0b3ImIG9yaWdpbikg
eworICAgICAgICAgICAgICAgIHVpbnQzMl90IHRhcmdldE5vZGVJbmRleCA9IG9yaWdpbi50YXJn
ZXQoKTsKIAogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0ID0gbV9mbGF0dGVuZWRUcmFu
c2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZVt0YXJnZXROb2RlSW5kZXhdOwogICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIG9mZnNldCA9IG1fZmxhdHRlbmVkVHJhbnNpdGlvbnNTaXplUGVyTm9kZVt0
YXJnZXROb2RlSW5kZXhdOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uSW5GbGF0
dGVuZWRUcmFuc2l0aW9ucyA9IHN0YXJ0ICsgb2Zmc2V0OworICAgICAgICAgICAgICAgIG1fZmxh
dHRlbmVkVHJhbnNpdGlvbnNbcG9zaXRpb25JbkZsYXR0ZW5lZFRyYW5zaXRpb25zXSA9IFRyYW5z
aXRpb24oeyBpIH0pOwogCi0gICAgICAgICAgICAgICAgbV9mbGF0dGVuZWRUcmFuc2l0aW9uc1tz
dGFydCArIG9mZnNldF0gPSBUcmFuc2l0aW9uKHsgaSwgdGFyZ2V0Tm9kZUluZGV4LCB0cmFuc2l0
aW9uLmZpcnN0IH0pOworICAgICAgICAgICAgICAgIHVpbnQzMl90JiBpblJhbmdlT2Zmc2V0ID0g
dHJhbnNpdGlvblBlclJhbmdlT2Zmc2V0W3Npbmd1bGFyVHJhbnNpdG9uSW5kZXhdOworICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uSW5UcmFuc2l0aW9uUGFydGl0aW9uID0gbV90cmFu
c2l0aW9uUGFydGl0aW9uLnN0YXJ0T2Zmc2V0T2ZTZXQoc2luZ3VsYXJUcmFuc2l0b25JbmRleCkg
KyBpblJhbmdlT2Zmc2V0OworICAgICAgICAgICAgICAgICsraW5SYW5nZU9mZnNldDsKIAotICAg
ICAgICAgICAgICAgICsrbV9mbGF0dGVuZWRUcmFuc2l0aW9uc1NpemVQZXJOb2RlW3RhcmdldE5v
ZGVJbmRleF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZGZhTm9kZS5oYXNGYWxs
YmFja1RyYW5zaXRpb24oKSkgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldE5vZGVJ
bmRleCA9IGRmYU5vZGUuZmFsbGJhY2tUcmFuc2l0aW9uRGVzdGluYXRpb24oZGZhKTsKKyAgICAg
ICAgICAgICAgICBtX3RyYW5zaXRpb25QYXJ0aXRpb24uc2V0RWxlbWVudFVuY2hlY2tlZChwb3Np
dGlvbkluRmxhdHRlbmVkVHJhbnNpdGlvbnMsIHBvc2l0aW9uSW5UcmFuc2l0aW9uUGFydGl0aW9u
LCBzaW5ndWxhclRyYW5zaXRvbkluZGV4KTsKIAotICAgICAgICAgICAgICAgIHVuc2lnbmVkIHN0
YXJ0ID0gbV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25zU3RhcnRPZmZzZXRQZXJOb2RlW3Rh
cmdldE5vZGVJbmRleF07Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gbV9mbGF0
dGVuZWRGYWxsYmFja1RyYW5zaXRpb25zU2l6ZVBlck5vZGVbdGFyZ2V0Tm9kZUluZGV4XTsKLQot
ICAgICAgICAgICAgICAgIG1fZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1tzdGFydCArIG9m
ZnNldF0gPSBpOwotICAgICAgICAgICAgICAgICsrbV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRp
b25zU2l6ZVBlck5vZGVbdGFyZ2V0Tm9kZUluZGV4XTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIC8vIENyZWF0ZSB0aGUgaW5pdGlhbCBwYXJ0aXRpb24gb2YgdHJhbnNpdGlv
bi4gRWFjaCBjaGFyYWN0ZXIgZGlmZmVyZW50aWF0aW5nIGEgdHJhbnNpdG9uCi0gICAgICAgIC8v
IGZyb20gYW4gb3RoZXIgZ2V0cyBpdHMgb3duIHNldCBpbiB0aGUgcGFydGl0aW9uLgotICAgICAg
ICBtX3RyYW5zaXRpb25QYXJ0aXRpb24uaW5pdGlhbGl6ZShtX2ZsYXR0ZW5lZFRyYW5zaXRpb25z
LnNpemUoKSk7Ci0gICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCAxMjg7ICsraSkgewot
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCB0cmFuc2l0aW9uSW5kZXggPSAwOyB0cmFuc2l0aW9u
SW5kZXggPCBtX2ZsYXR0ZW5lZFRyYW5zaXRpb25zLnNpemUoKTsgKyt0cmFuc2l0aW9uSW5kZXgp
IHsKLSAgICAgICAgICAgICAgICBjb25zdCBUcmFuc2l0aW9uJiB0cmFuc2l0aW9uID0gbV9mbGF0
dGVuZWRUcmFuc2l0aW9uc1t0cmFuc2l0aW9uSW5kZXhdOwotICAgICAgICAgICAgICAgIGlmICh0
cmFuc2l0aW9uLmNoYXJhY3RlciA9PSBpKQotICAgICAgICAgICAgICAgICAgICBtX3RyYW5zaXRp
b25QYXJ0aXRpb24ubWFya0VsZW1lbnRJbkN1cnJlbnRHZW5lcmF0aW9uKHRyYW5zaXRpb25JbmRl
eCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX3RyYW5zaXRpb25QYXJ0aXRpb24ucmVm
aW5lR2VuZXJhdGlvbihbXSh1bnNpZ25lZCkgeyB9KTsKKyAgICAgICAgICAgICAgICArK21fZmxh
dHRlbmVkVHJhbnNpdGlvbnNTaXplUGVyTm9kZVt0YXJnZXROb2RlSW5kZXhdOworICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0KLQotICAgICAgICAvLyBGYWxsYmFjayBwYXJ0aXRpb25zIGFyZSBj
b25zaWRlcmVkIGFzIGEgc3BlY2lhbCB0eXBlIG9mIGRpZmZlcmVudGlhdG9yLCB3ZSBkb24ndCBz
cGxpdCB0aGVtIGluaXRpYWxseS4KLSAgICAgICAgbV9mYWxsYmFja1RyYW5zaXRpb25QYXJ0aXRp
b24uaW5pdGlhbGl6ZShtX2ZsYXR0ZW5lZEZhbGxiYWNrVHJhbnNpdGlvbnMuc2l6ZSgpKTsKICAg
ICB9CiAKICAgICB2b2lkIG1hcmtOb2RlKHVuc2lnbmVkIG5vZGVJbmRleCkKQEAgLTM1OSwxNyAr
MzM2LDEwIEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBpbmNvbWluZ1RyYW5zaXRpb25zU2l6ZUZvck5vZGU7ICsraSkKICAgICAgICAgICAgICAg
ICAgICAgbV90cmFuc2l0aW9uUGFydGl0aW9uLm1hcmtFbGVtZW50SW5DdXJyZW50R2VuZXJhdGlv
bihpbmNvbWluZ1RyYW5zaXRpb25zU3RhcnRGb3JOb2RlICsgaSk7Ci0KLSAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbmNvbWluZ0ZhbGxiYWNrVHJhbnNpdGlvbnNTdGFydEZvck5vZGUgPSBtX2Zs
YXR0ZW5lZEZhbGxiYWNrVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGVbbm9kZUluZGV4XTsK
LSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmNvbWluZ0ZhbGxiYWNrVHJhbnNpdGlvbnNTaXpl
Rm9yTm9kZSA9IG1fZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1NpemVQZXJOb2RlW25vZGVJ
bmRleF07Ci0KLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5jb21p
bmdGYWxsYmFja1RyYW5zaXRpb25zU2l6ZUZvck5vZGU7ICsraSkKLSAgICAgICAgICAgICAgICAg
ICAgbV9mYWxsYmFja1RyYW5zaXRpb25QYXJ0aXRpb24ubWFya0VsZW1lbnRJbkN1cnJlbnRHZW5l
cmF0aW9uKGluY29taW5nRmFsbGJhY2tUcmFuc2l0aW9uc1N0YXJ0Rm9yTm9kZSArIGkpOwogICAg
ICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0byBzcGxpdCB0aGUg
dHJhbnNpdGlvbnMsIHdlIGhhbmRsZSB0aGUgbmV3IHNldHMgdGhyb3VnaCB0aGUgbWFpbiBsb29w
LgogICAgICAgICAgICAgbV90cmFuc2l0aW9uUGFydGl0aW9uLnJlZmluZUdlbmVyYXRpb24oW10o
dW5zaWduZWQpIHsgfSk7Ci0gICAgICAgICAgICBtX2ZhbGxiYWNrVHJhbnNpdGlvblBhcnRpdGlv
bi5yZWZpbmVHZW5lcmF0aW9uKFtdKHVuc2lnbmVkKSB7IH0pOwogICAgICAgICB9KTsKICAgICB9
CiAKQEAgLTM4NiwyMyArMzU2LDYgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAg
dm9pZCBzcGxpdEJ5RmFsbGJhY2tUcmFuc2l0aW9ucygpCi0gICAgewotICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKG1fbmV4dFRyYW5zaXRpb25TZXRUb1Byb2Nlc3MgfHwgIW1fdHJhbnNpdGlv
blBhcnRpdGlvbi5zaXplKCksICJXZSBjYW4gb25seSBkaXN0aW5ndWlzaCBub2RlcyBieSBmYWxs
YmFjayB0cmFuc2l0aW9uICphZnRlciogYWxsIG90aGVyIHRyYW5zaXRpb25zIGFyZSBjb3ZlcmVk
LiBEb2luZyBvdGhlcndpc2Ugd291bGQgYmUgaW5jb3JyZWN0IHNpbmNlIHRoZSB1bmlxdWUgdHJh
bnNpdGlvbnMgZnJvbSAyIG5vZGVzIGNvdWxkIGNvdmVyIGFsbCBwb3NzaWJsZSB0cmFuc2l0aW9u
cy4iKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGZhbGxiYWNrVHJhbnNpdGlvblNldEluZGV4
ID0gMDsgZmFsbGJhY2tUcmFuc2l0aW9uU2V0SW5kZXggPCBtX2ZhbGxiYWNrVHJhbnNpdGlvblBh
cnRpdGlvbi5zaXplKCk7ICsrZmFsbGJhY2tUcmFuc2l0aW9uU2V0SW5kZXgpIHsKLQotICAgICAg
ICAgICAgbV9mYWxsYmFja1RyYW5zaXRpb25QYXJ0aXRpb24uaXRlcmF0ZVNldChmYWxsYmFja1Ry
YW5zaXRpb25TZXRJbmRleCwgWyZdKHVuc2lnbmVkIHRyYW5zaXRpb25JbmRleCkgewotICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHNvdXJjZU5vZGVJbmRleCA9IG1fZmxhdHRlbmVkRmFsbGJhY2tU
cmFuc2l0aW9uc1t0cmFuc2l0aW9uSW5kZXhdOwotICAgICAgICAgICAgICAgIG1fbm9kZVBhcnRp
dGlvbi5tYXJrRWxlbWVudEluQ3VycmVudEdlbmVyYXRpb24oc291cmNlTm9kZUluZGV4KTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmVmaW5lUGFydGl0aW9ucygpOwotCi0gICAgICAg
ICAgICAvLyBBbnkgbmV3IHNwbGl0IG5lZWQgdG8gc3ByZWFkIHRvIGFsbCB0aGUgdW5pcXVlIHRy
YW5zaXRpb24gdGhhdCBjYW4gcmVhY2ggdGhlIHR3byBuZXcgc2V0cy4KLSAgICAgICAgICAgIHNw
bGl0QnlVbmlxdWVUcmFuc2l0aW9ucygpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgdW5zaWdu
ZWQgbm9kZVJlcGxhY2VtZW50KHVuc2lnbmVkIG5vZGVJbmRleCkKICAgICB7CiAgICAgICAgIHVu
c2lnbmVkIHNldEluZGV4ID0gbV9ub2RlUGFydGl0aW9uLnNldEluZGV4KG5vZGVJbmRleCk7CkBA
IC00MTIsMjEgKzM2NSwyNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHN0cnVjdCBUcmFuc2l0
aW9uIHsKICAgICAgICAgdW5zaWduZWQgc291cmNlOwotICAgICAgICB1bnNpZ25lZCB0YXJnZXQ7
Ci0gICAgICAgIHVpbnQxNl90IGNoYXJhY3RlcjsKICAgICB9OwogCi0gICAgVmVjdG9yPHVuc2ln
bmVkPiBtX2ZsYXR0ZW5lZFRyYW5zaXRpb25zU3RhcnRPZmZzZXRQZXJOb2RlOwotICAgIFZlY3Rv
cjx1bnNpZ25lZD4gbV9mbGF0dGVuZWRUcmFuc2l0aW9uc1NpemVQZXJOb2RlOwotICAgIFZlY3Rv
cjx1bnNpZ25lZD4gbV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25zU3RhcnRPZmZzZXRQZXJO
b2RlOwotICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25z
U2l6ZVBlck5vZGU7CisgICAgc3RydWN0IENvdW50ZXJDb252ZXJ0ZXIgeworICAgICAgICB1aW50
MzJfdCBjb252ZXJ0KHVpbnQzMl90KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gMTsK
KyAgICAgICAgfQogCi0gICAgVmVjdG9yPFRyYW5zaXRpb24+IG1fZmxhdHRlbmVkVHJhbnNpdGlv
bnM7Ci0gICAgVmVjdG9yPHVuc2lnbmVkPiBtX2ZsYXR0ZW5lZEZhbGxiYWNrVHJhbnNpdGlvbnM7
CisgICAgICAgIHZvaWQgZXh0ZW5kKHVpbnQzMl90JiBkZXN0aW5hdGlvbiwgdWludDMyX3QpCisg
ICAgICAgIHsKKyAgICAgICAgICAgICsrZGVzdGluYXRpb247CisgICAgICAgIH0KKyAgICB9Owor
CisgICAgVmVjdG9yPHVuc2lnbmVkLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9mbGF0dGVu
ZWRUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZTsKKyAgICBWZWN0b3I8dW5zaWduZWQsIDAs
IFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX2ZsYXR0ZW5lZFRyYW5zaXRpb25zU2l6ZVBlck5vZGU7
CisgICAgVmVjdG9yPFRyYW5zaXRpb24sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX2ZsYXR0
ZW5lZFRyYW5zaXRpb25zOwogCiAgICAgUGFydGl0aW9uIG1fbm9kZVBhcnRpdGlvbjsKICAgICBQ
YXJ0aXRpb24gbV90cmFuc2l0aW9uUGFydGl0aW9uOwotICAgIFBhcnRpdGlvbiBtX2ZhbGxiYWNr
VHJhbnNpdGlvblBhcnRpdGlvbjsKIAogICAgIHVuc2lnbmVkIG1fbmV4dFRyYW5zaXRpb25TZXRU
b1Byb2Nlc3MgeyAwIH07CiB9OwpAQCAtNDk0LDggKzQ1Miw2IEBAIHN0cnVjdCBBY3Rpb25LZXlI
YXNoVHJhaXRzIDogcHVibGljIFdURjo6Q3VzdG9tSGFzaFRyYWl0czxBY3Rpb25LZXk+IHsKIAog
dm9pZCBERkFNaW5pbWl6ZXI6Om1pbmltaXplKERGQSYgZGZhKQogewotICAgIHNpbXBsaWZ5VHJh
bnNpdGlvbnMoZGZhKTsKLQogICAgIEZ1bGxHcmFwaFBhcnRpdGlvbiBmdWxsR3JhcGhQYXJ0aXRp
b24oZGZhKTsKIAogICAgIC8vIFVubGlrZSB0cmFkaXRpb25hbCBtaW5pbWl6YXRpb24gZmluYWwg
c3RhdGVzIGNhbiBiZSBkaWZmZXJlbnRpYXRlZCBieSB0aGVpciBhY3Rpb24uCkBAIC01MjAsMjEg
KzQ3NiwxMiBAQCB2b2lkIERGQU1pbmltaXplcjo6bWluaW1pemUoREZBJiBkZmEpCiAgICAgLy8g
VXNlIGV2ZXJ5IHNwbGl0dGVyIHRvIHJlZmluZSB0aGUgbm9kZSBwYXJ0aXRpb25zLgogICAgIGZ1
bGxHcmFwaFBhcnRpdGlvbi5zcGxpdEJ5VW5pcXVlVHJhbnNpdGlvbnMoKTsKIAotICAgIC8vIEF0
IHRoaXMgc3RhZ2UsIHdlIGtub3cgdGhhdCBubyBwYWlyIG9mIHN0YXRlIGNhbiBiZSBkaXN0aW5n
dWlzaGVkIGJ5IHRoZSBpbmRpdmlkdWFsIHRyYW5zaXRpb25zLiBUaGV5IGNhbiBzdGlsbAotICAg
IC8vIGJlIGRpc3Rpbmd1aXNoZWQgYnkgdGhlaXIgZmFsbGJhY2sgdHJhbnNpdGlvbnMuCi0gICAg
Ly8KLSAgICAvLyBGb3IgZXhhbXBsZSwgdHdvIHN0YXRlcyBbMSwgMl0gY2FuIGJvdGggaGF2ZSBh
IHRyYW5zaXRpb24gb24gJ3gnIHRvIGEgc3RhdGUgWzNdLCBidXQgZWFjaCBoYXZlIGZhbGxiYWNr
IHRyYW5zaXRpb24KLSAgICAvLyB0byBkaWZmZXJlbnQgc3RhdGVzIFs0XSBhbmQgWzVdLgotICAg
IC8vCi0gICAgLy8gSGVyZSwgd2UgZGlzdGluZ3Vpc2ggc3VjaCBjYXNlcyBhbmQgYXQgZWFjaCBz
dGFnZSByZWZpbmUgdGhlIG5ldyBkaXNjb3ZlcmVkIHNldHMgYnkgdGhlaXIgaW5kaXZpZHVhbCB0
cmFuc2l0aW9ucy4KLSAgICBmdWxsR3JhcGhQYXJ0aXRpb24uc3BsaXRCeUZhbGxiYWNrVHJhbnNp
dGlvbnMoKTsKLQogICAgIFZlY3Rvcjx1bnNpZ25lZD4gcmVsb2NhdGlvblZlY3RvcjsKICAgICBy
ZWxvY2F0aW9uVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGZhLm5vZGVzLnNpemUoKSk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRmYS5ub2Rlcy5zaXplKCk7ICsraSkKICAg
ICAgICAgcmVsb2NhdGlvblZlY3Rvci51bmNoZWNrZWRBcHBlbmQoaSk7CiAKLSAgICAvLyBLaWxs
IHRoZSB1c2VsZXNzIG5vZGVzIGFuZCBrZWVwIHRyYWNrIG9mIHRoZSBuZXcgbm9kZSB0cmFuc2l0
aW9ucyBzaG91bGQgcG9pbnQgdG8uCisgICAgLy8gVXBkYXRlIGFsbCB0aGUgdHJhbnNpdGlvbnMu
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRmYS5ub2Rlcy5zaXplKCk7ICsraSkgewog
ICAgICAgICB1bnNpZ25lZCByZXBsYWNlbWVudCA9IGZ1bGxHcmFwaFBhcnRpdGlvbi5ub2RlUmVw
bGFjZW1lbnQoaSk7CiAgICAgICAgIGlmIChpICE9IHJlcGxhY2VtZW50KSB7CkBAIC01NDMsMTkg
KzQ5MCwxOCBAQCB2b2lkIERGQU1pbmltaXplcjo6bWluaW1pemUoREZBJiBkZmEpCiAgICAgICAg
IH0KICAgICB9CiAKKyAgICBkZmEucm9vdCA9IHJlbG9jYXRpb25WZWN0b3JbZGZhLnJvb3RdOwog
ICAgIGZvciAoREZBTm9kZSYgbm9kZSA6IGRmYS5ub2RlcykgewotICAgICAgICBhdXRvIG5vZGVU
cmFuc2l0aW9ucyA9IG5vZGUudHJhbnNpdGlvbnMoZGZhKTsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG5vZGUudHJhbnNpdGlvbnNMZW5ndGgoKTsgKytpKQotICAgICAgICAgICAg
ZGZhLnRyYW5zaXRpb25EZXN0aW5hdGlvbnNbbm9kZS50cmFuc2l0aW9uc1N0YXJ0KCkgKyBpXSA9
IHJlbG9jYXRpb25WZWN0b3Jbbm9kZVRyYW5zaXRpb25zW2ldLnNlY29uZF07Ci0gICAgICAgIGlm
IChub2RlLmhhc0ZhbGxiYWNrVHJhbnNpdGlvbigpKQotICAgICAgICAgICAgbm9kZS5jaGFuZ2VG
YWxsYmFja1RyYW5zaXRpb24oZGZhLCByZWxvY2F0aW9uVmVjdG9yW25vZGUuZmFsbGJhY2tUcmFu
c2l0aW9uRGVzdGluYXRpb24oZGZhKV0pOworICAgICAgICBpZiAobm9kZS5pc0tpbGxlZCgpKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZm9yIChhdXRvJiB0cmFuc2l0aW9uIDog
bm9kZS50cmFuc2l0aW9ucyhkZmEpKSB7CisgICAgICAgICAgICB1aW50MzJfdCB0YXJnZXQgPSB0
cmFuc2l0aW9uLnRhcmdldCgpOworICAgICAgICAgICAgdWludDMyX3QgcmVsb2NhdGVkVGFyZ2V0
ID0gcmVsb2NhdGlvblZlY3Rvclt0YXJnZXRdOworICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBy
ZWxvY2F0ZWRUYXJnZXQpCisgICAgICAgICAgICAgICAgdHJhbnNpdGlvbi5yZXNldFRhcmdldChy
ZWxvY2F0ZWRUYXJnZXQpOworICAgICAgICB9CiAgICAgfQotCi0gICAgLy8gQWZ0ZXIgbWluaW1p
emluZywgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIGluZGl2aWR1YWwgdHJhbnNpdGlvbiBhcmUgc3Rp
bGwgcG9pdGluZyB0byBkaWZmZXJlbnQgc3RhdGVzLgotICAgIC8vIFRoZSBzdGF0ZSBwb2ludGVk
IGJ5IG9uZSBpbmRpdmlkdWFsIHRyYW5zaXRpb24gYW5kIHRoZSBmYWxsYmFjayBzdGF0ZXMgbWF5
IGhhdmUgYmVlbiBtZXJnZWQuCi0gICAgc2ltcGxpZnlUcmFuc2l0aW9ucyhkZmEpOwotCi0gICAg
ZGZhLnJvb3QgPSByZWxvY2F0aW9uVmVjdG9yW2RmYS5yb290XTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgQ29udGVudEV4dGVuc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0RGQU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
REZBTm9kZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY2YjA5NTE5OTBkNzEwNjRmZjZmMzA2ZmE2ODQxMDk3
OWM1NjhkMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0RGQU5vZGUuY3BwCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRGQU5vZGUuaCIKKworI2luY2x1ZGUgIkRGQS5o
IgorCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCituYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMgeworCitWZWN0b3I8dWludDY0X3Q+IERG
QU5vZGU6OmFjdGlvbnMoY29uc3QgREZBJiBkZmEpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFVz
ZSBpdGVyYXRvcnMgaW5zdGVhZCBvZiBjb3B5aW5nIHRoZSBWZWN0b3IgZWxlbWVudHMuCisgICAg
VmVjdG9yPHVpbnQ2NF90PiB2ZWN0b3I7CisgICAgdmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9hY3Rpb25zTGVuZ3RoKTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSBtX2FjdGlvbnNTdGFy
dDsgaSA8IG1fYWN0aW9uc1N0YXJ0ICsgbV9hY3Rpb25zTGVuZ3RoOyArK2kpCisgICAgICAgIHZl
Y3Rvci51bmNoZWNrZWRBcHBlbmQoZGZhLmFjdGlvbnNbaV0pOworICAgIHJldHVybiB2ZWN0b3I7
Cit9CisKK2Jvb2wgREZBTm9kZTo6Y29udGFpbnNUcmFuc2l0aW9uKGNoYXIgdHJhbnNpdGlvbiwg
REZBJiBkZmEpCit7CisgICAgLy8gQ2FsbGVkIGZyb20gREZBTWluaW1pemVyLCB0aGlzIGxvb3Bz
IHRob3VnaCBhIG1heGltdW0gb2YgMTI4IHRyYW5zaXRpb25zLCBzbyBpdCdzIG5vdCB0b28gc2xv
dy4KKyAgICBBU1NFUlQobV90cmFuc2l0aW9uc0xlbmd0aCA8PSAxMjgpOworICAgIGZvciAodW5z
aWduZWQgaSA9IG1fdHJhbnNpdGlvbnNTdGFydDsgaSA8IG1fdHJhbnNpdGlvbnNTdGFydCArIG1f
dHJhbnNpdGlvbnNMZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoZGZhLnRyYW5zaXRpb25SYW5n
ZXNbaV0uZmlyc3QgPD0gdHJhbnNpdGlvbgorICAgICAgICAgICAgJiYgZGZhLnRyYW5zaXRpb25S
YW5nZXNbaV0ubGFzdCA+PSB0cmFuc2l0aW9uKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBERkFOb2RlOjpraWxsKERGQSYgZGZh
KQoreworICAgIEFTU0VSVChtX2ZsYWdzICE9IElzS2lsbGVkKTsKKyAgICBtX2ZsYWdzID0gSXNL
aWxsZWQ7IC8vIEtpbGxlZCBub2RlcyBkb24ndCBoYXZlIGFueSBvdGhlciBmbGFncy4KKworICAg
IC8vIEludmFsaWRhdGUgdGhlIG5vdy11bnVzZWQgbWVtb3J5IGluIHRoZSBERkEgdG8gbWFrZSBm
aW5kaW5nIGJ1Z3MgZWFzaWVyLgorICAgIGZvciAodW5zaWduZWQgaSA9IG1fdHJhbnNpdGlvbnNT
dGFydDsgaSA8IG1fdHJhbnNpdGlvbnNTdGFydCArIG1fdHJhbnNpdGlvbnNMZW5ndGg7ICsraSkg
eworICAgICAgICBkZmEudHJhbnNpdGlvblJhbmdlc1tpXSA9IHsgLTEsIC0xIH07CisgICAgICAg
IGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zW2ldID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50
MzJfdD46Om1heCgpOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2FjdGlvbnNTdGFy
dDsgaSA8IG1fYWN0aW9uc1N0YXJ0ICsgbV9hY3Rpb25zTGVuZ3RoOyArK2kpCisgICAgICAgIGRm
YS5hY3Rpb25zW2ldID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOworCisg
ICAgbV9hY3Rpb25zU3RhcnQgPSAwOworICAgIG1fYWN0aW9uc0xlbmd0aCA9IDA7CisgICAgbV90
cmFuc2l0aW9uc1N0YXJ0ID0gMDsKKyAgICBtX3RyYW5zaXRpb25zTGVuZ3RoID0gMDsKK307CisK
K2Jvb2wgREZBTm9kZTo6Y2FuVXNlRmFsbGJhY2tUcmFuc2l0aW9uKGNvbnN0IERGQSYgZGZhKSBj
b25zdAoreworICAgIC8vIFRyYW5zaXRpb25zIGNhbiBjb250YWlucyAiMCIgaWYgdGhlIGV4cHJl
c3Npb24gaGFzIGEgZW5kLW9mLWxpbmUgbWFya2VyLgorICAgIC8vIEZhbGxiYWNrIHRyYW5zaXRp
b25zIGNvdmVyIDEtMTI3LiBXZSBoYXZlIHRvIGJlIGNhcmVmdWwgd2l0aCB0aGUgZmlyc3QuCisK
KyAgICBJdGVyYWJsZUNvbnN0UmFuZ2UgaXRlcmFibGVUcmFuc2l0aW9ucyA9IHRyYW5zaXRpb25z
KGRmYSk7CisgICAgYXV0byBpdGVyYXRvciA9IGl0ZXJhYmxlVHJhbnNpdGlvbnMuYmVnaW4oKTsK
KyAgICBhdXRvIGVuZCA9IGl0ZXJhYmxlVHJhbnNpdGlvbnMuZW5kKCk7CisgICAgaWYgKGl0ZXJh
dG9yID09IGVuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY2hhciBsYXN0U2VlbkNo
YXJhY3RlciA9IDA7CisgICAgaWYgKCFpdGVyYXRvci5maXJzdCgpKSB7CisgICAgICAgIGxhc3RT
ZWVuQ2hhcmFjdGVyID0gaXRlcmF0b3IubGFzdCgpOworICAgICAgICBpZiAobGFzdFNlZW5DaGFy
YWN0ZXIgPT0gMTI3KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICsraXRlcmF0
b3I7CisgICAgfQorCisgICAgZm9yICg7aXRlcmF0b3IgIT0gZW5kOyArK2l0ZXJhdG9yKSB7Cisg
ICAgICAgIEFTU0VSVChpdGVyYXRvci5maXJzdCgpID4gbGFzdFNlZW5DaGFyYWN0ZXIpOworICAg
ICAgICBpZiAoaXRlcmF0b3IuZmlyc3QoKSAhPSBsYXN0U2VlbkNoYXJhY3RlciArIDEpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKGl0ZXJhdG9yLnJhbmdlKCkubGFz
dCA9PSAxMjcpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgbGFzdFNlZW5DaGFy
YWN0ZXIgPSBpdGVyYXRvci5sYXN0KCk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwor
dWludDMyX3QgREZBTm9kZTo6YmVzdEZhbGxiYWNrVGFyZ2V0KGNvbnN0IERGQSYgZGZhKSBjb25z
dAoreworICAgIEFTU0VSVChjYW5Vc2VGYWxsYmFja1RyYW5zaXRpb24oZGZhKSk7CisKKyAgICBI
YXNoTWFwPHVpbnQzMl90LCB1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dWludDMyX3Q+OjpIYXNoLCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQzMl90Pj4gaGlzdG9ncmFtOwor
CisgICAgSXRlcmFibGVDb25zdFJhbmdlIGl0ZXJhYmxlVHJhbnNpdGlvbnMgPSB0cmFuc2l0aW9u
cyhkZmEpOworICAgIGF1dG8gaXRlcmF0b3IgPSBpdGVyYWJsZVRyYW5zaXRpb25zLmJlZ2luKCk7
CisgICAgYXV0byBlbmQgPSBpdGVyYWJsZVRyYW5zaXRpb25zLmVuZCgpOworICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoaXRlcmF0b3IgIT0gZW5kLCAiQW4gZW1wdHkgcmFuZ2UgbGlzdCBjYW5ub3Qg
dXNlIGEgZmFsbGJhY2sgdHJhbnNpdGlvbi4iKTsKKworICAgIGlmICghaXRlcmF0b3IuZmlyc3Qo
KSAmJiAhaXRlcmF0b3IubGFzdCgpKQorICAgICAgICArK2l0ZXJhdG9yOworICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoaXRlcmF0b3IgIT0gZW5kLCAiQW4gZW1wdHkgcmFuZ2UgbGlzdCBtYXRjaGlu
ZyBvbmx5IHplcm8gY2Fubm90IHVzZSBhIGZhbGxiYWNrIHRyYW5zaXRpb24uIik7CisKKyAgICB1
aW50MzJfdCBiZXN0VGFyZ2V0ID0gaXRlcmF0b3IudGFyZ2V0KCk7CisgICAgdW5zaWduZWQgYmVz
dFRhcmdldFNjb3JlID0gIWl0ZXJhdG9yLnJhbmdlKCkuZmlyc3QgPyBpdGVyYXRvci5yYW5nZSgp
LnNpemUoKSAtIDEgOiBpdGVyYXRvci5yYW5nZSgpLnNpemUoKTsKKyAgICBoaXN0b2dyYW0uYWRk
KGJlc3RUYXJnZXQsIGJlc3RUYXJnZXRTY29yZSk7CisgICAgKytpdGVyYXRvcjsKKworICAgIGZv
ciAoO2l0ZXJhdG9yICE9IGVuZDsgKytpdGVyYXRvcikgeworICAgICAgICB1bnNpZ25lZCByYW5n
ZVNpemUgPSBpdGVyYXRvci5yYW5nZSgpLnNpemUoKTsKKyAgICAgICAgdWludDMyX3QgdGFyZ2V0
ID0gaXRlcmF0b3IudGFyZ2V0KCk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gaGlzdG9ncmFt
LmFkZCh0YXJnZXQsIHJhbmdlU2l6ZSk7CisgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50
cnkpCisgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlICs9IHJhbmdlU2l6ZTsK
KyAgICAgICAgaWYgKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPiBiZXN0VGFyZ2V0U2NvcmUp
IHsKKyAgICAgICAgICAgIGJlc3RUYXJnZXRTY29yZSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CisgICAgICAgICAgICBiZXN0VGFyZ2V0ID0gdGFyZ2V0OworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBiZXN0VGFyZ2V0OworfQorCit9IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5z
aW9ucworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvREZBTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBTm9kZS5o
CmluZGV4IDZiZDY0ZTExMDE0OTg2YjBkNjg1MWRhNzNlMzY1ZDk3YmFlNDczNjcuLmJlNmRmNTM3
YmZkZmExYjg5ZGM1MDU3Yzk0MTQxODIwMTI4MjUyYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9ERkFOb2RlLmgKQEAgLTM4LDI3ICszOCwxMTIgQEAgbmFtZXNwYWNlIENv
bnRlbnRFeHRlbnNpb25zIHsKIAogc3RydWN0IERGQTsKIAorc3RydWN0IENoYXJSYW5nZSB7Cisg
ICAgY2hhciBmaXJzdDsKKyAgICBjaGFyIGxhc3Q7CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIGxhc3QgLSBmaXJzdCArIDE7IH0KK307CisKIC8vIEEgREZBTm9kZSBhYnN0cmFj
dCB0aGUgdHJhbnNpdGlvbiB0YWJsZSBvdXQgb2YgYSBERkEgc3RhdGUuIElmIGEgc3RhdGUgaXMg
YWNjZXB0aW5nLCB0aGUgREZBTm9kZSBhbHNvIGhhdmUKIC8vIHRoZSBhY3Rpb25zIGZvciB0aGF0
IHN0YXRlLgogY2xhc3MgREZBTm9kZSB7CiBwdWJsaWM6CisgICAgc3RydWN0IENvbnN0UmFuZ2VJ
dGVyYXRvciB7CisgICAgICAgIGNvbnN0IERGQSYgZGZhOworICAgICAgICB1aW50MzJfdCBwb3Np
dGlvbjsKKworICAgICAgICBjb25zdCBDb25zdFJhbmdlSXRlcmF0b3ImIG9wZXJhdG9yKigpIGNv
bnN0IHsgcmV0dXJuICp0aGlzOyB9CisKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENv
bnN0UmFuZ2VJdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVCgmZGZhICA9PSAmb3RoZXIuZGZhKTsKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbiA9
PSBvdGhlci5wb3NpdGlvbjsKKyAgICAgICAgfQorICAgICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgQ29uc3RSYW5nZUl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7IH0KKworICAgICAgICBDb25zdFJhbmdlSXRlcmF0b3ImIG9wZXJhdG9yKysoKQorICAg
ICAgICB7CisgICAgICAgICAgICArK3Bvc2l0aW9uOworICAgICAgICAgICAgcmV0dXJuICp0aGlz
OworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgQ2hhclJhbmdlJiByYW5nZSgpIGNvbnN0Owor
ICAgICAgICB1aW50MzJfdCB0YXJnZXQoKSBjb25zdDsKKworICAgICAgICBjaGFyIGZpcnN0KCkg
Y29uc3QgeyByZXR1cm4gcmFuZ2UoKS5maXJzdDsgfQorICAgICAgICBjaGFyIGxhc3QoKSBjb25z
dCB7IHJldHVybiByYW5nZSgpLmxhc3Q7IH0KKyAgICAgICAgdWludDMyX3QgZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIHRhcmdldCgpOyB9CisgICAgfTsKKworICAgIHN0cnVjdCBJdGVyYWJsZUNvbnN0
UmFuZ2UgeworICAgICAgICBjb25zdCBERkEmIGRmYTsKKyAgICAgICAgdWludDMyX3QgcmFuZ2Vz
U3RhcnQ7CisgICAgICAgIHVpbnQzMl90IHJhbmdlc0VuZDsKKworICAgICAgICBDb25zdFJhbmdl
SXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiB7IGRmYSwgcmFuZ2VzU3RhcnQgfTsgfQor
ICAgICAgICBDb25zdFJhbmdlSXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4geyBkZmEsIHJh
bmdlc0VuZCB9OyB9CisgICAgfTsKKworICAgIEl0ZXJhYmxlQ29uc3RSYW5nZSB0cmFuc2l0aW9u
cyhjb25zdCBERkEmIGRmYSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBJdGVyYWJsZUNv
bnN0UmFuZ2UgeyBkZmEsIG1fdHJhbnNpdGlvbnNTdGFydCwgbV90cmFuc2l0aW9uc1N0YXJ0ICsg
bV90cmFuc2l0aW9uc0xlbmd0aCB9OworICAgIH0KKworICAgIHN0cnVjdCBSYW5nZUl0ZXJhdG9y
IHsKKyAgICAgICAgREZBJiBkZmE7CisgICAgICAgIHVpbnQzMl90IHBvc2l0aW9uOworCisgICAg
ICAgIFJhbmdlSXRlcmF0b3ImIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzOyB9CisKKyAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJhbmdlSXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAg
ICAgICB7CisgICAgICAgICAgICBBU1NFUlQoJmRmYSAgPT0gJm90aGVyLmRmYSk7CisgICAgICAg
ICAgICByZXR1cm4gcG9zaXRpb24gPT0gb3RoZXIucG9zaXRpb247CisgICAgICAgIH0KKyAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJhbmdlSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorCisgICAgICAgIFJhbmdlSXRlcmF0b3ImIG9wZXJh
dG9yKysoKQorICAgICAgICB7CisgICAgICAgICAgICArK3Bvc2l0aW9uOworICAgICAgICAgICAg
cmV0dXJuICp0aGlzOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgQ2hhclJhbmdlJiByYW5n
ZSgpIGNvbnN0OworICAgICAgICB1aW50MzJfdCB0YXJnZXQoKSBjb25zdDsKKyAgICAgICAgdm9p
ZCByZXNldFRhcmdldCh1aW50MzJfdCk7CisKKyAgICAgICAgY2hhciBmaXJzdCgpIGNvbnN0IHsg
cmV0dXJuIHJhbmdlKCkuZmlyc3Q7IH0KKyAgICAgICAgY2hhciBsYXN0KCkgY29uc3QgeyByZXR1
cm4gcmFuZ2UoKS5sYXN0OyB9CisgICAgICAgIHVpbnQzMl90IGRhdGEoKSBjb25zdCB7IHJldHVy
biB0YXJnZXQoKTsgfQorICAgIH07CisKKyAgICBzdHJ1Y3QgSXRlcmFibGVSYW5nZSB7CisgICAg
ICAgIERGQSYgZGZhOworICAgICAgICB1aW50MzJfdCByYW5nZXNTdGFydDsKKyAgICAgICAgdWlu
dDMyX3QgcmFuZ2VzRW5kOworCisgICAgICAgIFJhbmdlSXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7
IHJldHVybiB7IGRmYSwgcmFuZ2VzU3RhcnQgfTsgfQorICAgICAgICBSYW5nZUl0ZXJhdG9yIGVu
ZCgpIGNvbnN0IHsgcmV0dXJuIHsgZGZhLCByYW5nZXNFbmQgfTsgfQorICAgIH07CisKKyAgICBJ
dGVyYWJsZVJhbmdlIHRyYW5zaXRpb25zKERGQSYgZGZhKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IEl0ZXJhYmxlUmFuZ2UgeyBkZmEsIG1fdHJhbnNpdGlvbnNTdGFydCwgbV90cmFuc2l0aW9uc1N0
YXJ0ICsgbV90cmFuc2l0aW9uc0xlbmd0aCB9OworICAgIH0KKwogICAgIC8vIEZJWE1FOiBTdG9w
IG1pbmltaXppbmcga2lsbGVkIG5vZGVzIGFuZCBhZGQgQVNTRVJUKCFpc0tpbGxlZCgpKSBpbiBt
YW55IGZ1bmN0aW9ucyBoZXJlLgogICAgIHZvaWQga2lsbChERkEmKTsKICAgICBWZWN0b3I8dWlu
dDY0X3Q+IGFjdGlvbnMoY29uc3QgREZBJikgY29uc3Q7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjx1
aW50OF90LCB1aW50MzJfdD4+IHRyYW5zaXRpb25zKGNvbnN0IERGQSYpIGNvbnN0OwotICAgIHVp
bnQzMl90IGZhbGxiYWNrVHJhbnNpdGlvbkRlc3RpbmF0aW9uKGNvbnN0IERGQSYpIGNvbnN0Owot
ICAgIHZvaWQgYWRkRmFsbGJhY2tUcmFuc2l0aW9uKERGQSYsIHVpbnQzMl90IGRlc3RpbmF0aW9u
KTsKLSAgICBib29sIGNvbnRhaW5zVHJhbnNpdGlvbih1aW50OF90LCBERkEmKTsKLSAgICB2b2lk
IGNoYW5nZUZhbGxiYWNrVHJhbnNpdGlvbihERkEmLCB1aW50MzJfdCBuZXdEZXN0aW5hdGlvbik7
CisgICAgYm9vbCBjb250YWluc1RyYW5zaXRpb24oY2hhciwgREZBJik7CiAgICAgCiAgICAgYm9v
bCBpc0tpbGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBJc0tpbGxlZDsgfQotICAgIGJv
b2wgaGFzRmFsbGJhY2tUcmFuc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEhhc0Zh
bGxiYWNrVHJhbnNpdGlvbjsgfQogICAgIGJvb2wgaGFzQWN0aW9ucygpIGNvbnN0IHsgcmV0dXJu
ICEhbV9hY3Rpb25zTGVuZ3RoOyB9Ci0gICAgdWludDhfdCB0cmFuc2l0aW9uc0xlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fdHJhbnNpdGlvbnNMZW5ndGg7IH0KICAgICB1aW50MTZfdCBhY3Rpb25z
TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb25zTGVuZ3RoOyB9CiAgICAgdWludDMyX3Qg
YWN0aW9uc1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb25zU3RhcnQ7IH0KLSAgICB1aW50
MzJfdCB0cmFuc2l0aW9uc1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2l0aW9uc1N0YXJ0
OyB9Ci0gICAgCisKKyAgICBib29sIGNhblVzZUZhbGxiYWNrVHJhbnNpdGlvbihjb25zdCBERkEm
KSBjb25zdDsKKyAgICB1aW50MzJfdCBiZXN0RmFsbGJhY2tUYXJnZXQoY29uc3QgREZBKSBjb25z
dDsKKwogICAgIHZvaWQgc2V0QWN0aW9ucyh1aW50MzJfdCBzdGFydCwgdWludDE2X3QgbGVuZ3Ro
KQogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX2FjdGlvbnNTdGFydCk7CkBAIC03MywyMiArMTU4
LDcgQEAgcHVibGljOgogICAgICAgICBtX3RyYW5zaXRpb25zU3RhcnQgPSBzdGFydDsKICAgICAg
ICAgbV90cmFuc2l0aW9uc0xlbmd0aCA9IGxlbmd0aDsKICAgICB9Ci0gICAgdm9pZCByZXNldFRy
YW5zaXRpb25zKHVpbnQzMl90IHN0YXJ0LCB1aW50MTZfdCBsZW5ndGgpCi0gICAgewotICAgICAg
ICBtX3RyYW5zaXRpb25zU3RhcnQgPSBzdGFydDsKLSAgICAgICAgbV90cmFuc2l0aW9uc0xlbmd0
aCA9IGxlbmd0aDsKLSAgICB9Ci0gICAgdm9pZCBzZXRIYXNGYWxsYmFja1RyYW5zaXRpb25XaXRo
b3V0Q2hhbmdpbmdERkEoYm9vbCBzaG91bGRIYXZlRmFsbGJhY2tUcmFuc2l0aW9uKQotICAgIHsK
LSAgICAgICAgaWYgKHNob3VsZEhhdmVGYWxsYmFja1RyYW5zaXRpb24pCi0gICAgICAgICAgICBt
X2ZsYWdzIHw9IEhhc0ZhbGxiYWNrVHJhbnNpdGlvbjsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbV9mbGFncyAmPSB+SGFzRmFsbGJhY2tUcmFuc2l0aW9uOwotICAgIH0KLSAgICAKLSNpZiBD
T05URU5UX0VYVEVOU0lPTlNfU1RBVEVfTUFDSElORV9ERUJVR0dJTkcKLSAgICBWZWN0b3I8dW5z
aWduZWQ+IGNvcnJlc3BvbmRpbmdORkFOb2RlczsKLSNlbmRpZgorCiBwcml2YXRlOgogICAgIHVp
bnQzMl90IG1fYWN0aW9uc1N0YXJ0IHsgMCB9OwogICAgIHVpbnQzMl90IG1fdHJhbnNpdGlvbnNT
dGFydCB7IDAgfTsKQEAgLTk2LDggKzE2Niw3IEBAIHByaXZhdGU6CiAgICAgdWludDhfdCBtX3Ry
YW5zaXRpb25zTGVuZ3RoIHsgMCB9OwogICAgIAogICAgIHVpbnQ4X3QgbV9mbGFncyB7IDAgfTsK
LSAgICBjb25zdCB1aW50OF90IEhhc0ZhbGxiYWNrVHJhbnNpdGlvbiA9IDB4MDE7Ci0gICAgY29u
c3QgdWludDhfdCBJc0tpbGxlZCA9IDB4MDI7CisgICAgY29uc3QgdWludDhfdCBJc0tpbGxlZCA9
IDB4MDE7CiB9OwogCiAvLyBGSVhNRTogUGFjayB0aGlzIGRvd24gdG8gMTIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9JbW11dGFibGVORkEuaCBiL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5GQS5oCmluZGV4IDFmMjAzNGY5
MmNjNjZkZDhjMWVlNDhlZmIwZWU1MWY2N2NmMWQ4YTQuLjEwYzIyNTQ1MTc2ZTA5MTMxZDIyZDkz
ZTU0ZDUzMDA2NTljYWM0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0ltbXV0YWJsZU5GQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0ltbXV0YWJsZU5GQS5oCkBAIC05Myw5ICs5Myw2IEBAIHN0cnVjdCBJbW11dGFibGVORkEg
ewogICAgICAgICBjb25zdCBJbW11dGFibGVORkEmIGltbXV0YWJsZU5GQTsKICAgICAgICAgdWlu
dDMyX3QgcG9zaXRpb247CiAKLSAgICAgICAgY29uc3QgSW1tdXRhYmxlUmFuZ2U8Q2hhcmFjdGVy
VHlwZT4mIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIGltbXV0YWJsZU5GQS50cmFuc2l0aW9u
c1twb3NpdGlvbl07IH0KLSAgICAgICAgY29uc3QgSW1tdXRhYmxlUmFuZ2U8Q2hhcmFjdGVyVHlw
ZT4qIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmaW1tdXRhYmxlTkZBLnRyYW5zaXRpb25z
W3Bvc2l0aW9uXTsgfQotCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb25zdFJhbmdl
SXRlcmF0b3ImIG90aGVyKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoJmlt
bXV0YWJsZU5GQSA9PSAmb3RoZXIuaW1tdXRhYmxlTkZBKTsKQEAgLTEwOSwxMSArMTA2LDI3IEBA
IHN0cnVjdCBJbW11dGFibGVORkEgewogICAgICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICAg
ICB9CiAKKyAgICAgICAgQ2hhcmFjdGVyVHlwZSBmaXJzdCgpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiByYW5nZSgpLmZpcnN0OworICAgICAgICB9CisKKyAgICAgICAgQ2hh
cmFjdGVyVHlwZSBsYXN0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHJh
bmdlKCkubGFzdDsKKyAgICAgICAgfQorCiAgICAgICAgIEl0ZXJhYmxlQ29uc3RUYXJnZXRzIGRh
dGEoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBJbW11dGFibGVSYW5nZTxD
aGFyYWN0ZXJUeXBlPiYgcmFuZ2UgPSBpbW11dGFibGVORkEudHJhbnNpdGlvbnNbcG9zaXRpb25d
OworICAgICAgICAgICAgY29uc3QgSW1tdXRhYmxlUmFuZ2U8Q2hhcmFjdGVyVHlwZT4mIHJhbmdl
ID0gdGhpcy0+cmFuZ2UoKTsKICAgICAgICAgICAgIHJldHVybiB7IGltbXV0YWJsZU5GQSwgcmFu
Z2UudGFyZ2V0U3RhcnQsIHJhbmdlLnRhcmdldEVuZCB9OwogICAgICAgICB9OworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgY29uc3QgSW1tdXRhYmxlUmFuZ2U8Q2hhcmFjdGVyVHlwZT4mIHJhbmdl
KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGltbXV0YWJsZU5GQS50cmFu
c2l0aW9uc1twb3NpdGlvbl07CisgICAgICAgIH0KICAgICB9OwogCiAgICAgc3RydWN0IEl0ZXJh
YmxlQ29uc3RSYW5nZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9JbW11dGFibGVORkFOb2RlQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaAppbmRleCA0NTQxNGJlMWRmNmQ4YTRh
NGY1ZjhjZDQwMjRlOThmNGQ0ZDMwZjA3Li43ZmZhZmNlYTQ5YzRlNjM0ZWNjYTUwZTJlNzE3ZTUy
NjE5OTE5OGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9J
bW11dGFibGVORkFOb2RlQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0ltbXV0YWJsZU5GQU5vZGVCdWlsZGVyLmgKQEAgLTg5LDggKzg5LDggQEAgcHVibGlj
OgogICAgIH07CiAgICAgCiAgICAgc3RydWN0IEZha2VSYW5nZUl0ZXJhdG9yIHsKLSAgICAgICAg
Y29uc3QgVHJpdmlhbFJhbmdlJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiByYW5nZTsgfQot
ICAgICAgICBjb25zdCBUcml2aWFsUmFuZ2UqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAm
cmFuZ2U7IH0KKyAgICAgICAgQ2hhcmFjdGVyVHlwZSBmaXJzdCgpIGNvbnN0IHsgcmV0dXJuIHJh
bmdlLmZpcnN0OyB9CisgICAgICAgIENoYXJhY3RlclR5cGUgbGFzdCgpIGNvbnN0IHsgcmV0dXJu
IHJhbmdlLmxhc3Q7IH0KICAgICAgICAgdWludDMyX3QgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHRh
cmdldElkOyB9CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGYWtlUmFuZ2VJdGVyYXRv
ciYgb3RoZXIpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL011dGFibGVSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvTXV0YWJsZVJhbmdlLmgKaW5kZXggMzVkMTQyYmI4MWI1MjNlOTBiNDA3MWFlMTBlNjAyMjVk
YmJlNTkyMS4uMzRjZWVhMTJmYjIyY2JkOGFiMmVjZDc1NjRkMzhhZGI5NWMxODEwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTXV0YWJsZVJhbmdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTXV0YWJsZVJhbmdlLmgKQEAgLTg5
LDggKzg5LDYgQEAgcHVibGljOgogICAgIHVpbnQzMl90IG5leHRSYW5nZUluZGV4OwogICAgIENo
YXJhY3RlclR5cGUgZmlyc3Q7CiAgICAgQ2hhcmFjdGVyVHlwZSBsYXN0OwotCi0gICAgQ2hhcmFj
dGVyVHlwZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbGFzdCAtIGZpcnN0OyB9CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9NdXRhYmxlUmFuZ2VM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9NdXRhYmxlUmFuZ2VMaXN0
LmgKaW5kZXggY2IxMjg5OGYzMzFhM2MzYTA4YzQyZWQzYjc4ZTNhNTM2N2IwNDMwNC4uMTYyYzY1
OWUwZTVmOTc4ZmVhMjc3NzQ4OWQ0Mzc1ZmQ4NjJkMWI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvTXV0YWJsZVJhbmdlTGlzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL011dGFibGVSYW5nZUxpc3QuaApAQCAtNDgsNiArNDgs
MTAgQEAgcHVibGljOgogICAgICAgICBjb25zdCBUeXBlZE11dGFibGVSYW5nZSYgb3BlcmF0b3Iq
KCkgY29uc3QgeyByZXR1cm4gcmFuZ2VMaXN0Lm1fcmFuZ2VzW2luZGV4XTsgfQogICAgICAgICBj
b25zdCBUeXBlZE11dGFibGVSYW5nZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICZyYW5n
ZUxpc3QubV9yYW5nZXNbaW5kZXhdOyB9CiAKKyAgICAgICAgQ2hhcmFjdGVyVHlwZSBmaXJzdCgp
IGNvbnN0IHsgcmV0dXJuIHJhbmdlTGlzdC5tX3Jhbmdlc1tpbmRleF0uZmlyc3Q7IH0KKyAgICAg
ICAgQ2hhcmFjdGVyVHlwZSBsYXN0KCkgY29uc3QgeyByZXR1cm4gcmFuZ2VMaXN0Lm1fcmFuZ2Vz
W2luZGV4XS5sYXN0OyB9CisgICAgICAgIENoYXJhY3RlclR5cGUgZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIHJhbmdlTGlzdC5tX3Jhbmdlc1tpbmRleF0uZGF0YTsgfQorCiAgICAgICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICAgICAgewogICAg
ICAgICAgICAgQVNTRVJUKCZyYW5nZUxpc3QgPT0gJm90aGVyLnJhbmdlTGlzdCk7CkBAIC05OSwy
MSArMTAzLDIxIEBAIHB1YmxpYzoKICAgICAgICAgdWludDMyX3QgbGFzdFNlbGZSYW5nZUluZGV4
ID0gMDsKICAgICAgICAgdWludDMyX3Qgc2VsZlJhbmdlSW5kZXggPSAwOwogCi0gICAgICAgIGF1
dG8gb3RoZXJSYW5nZU9mZnNldCA9IG90aGVySXRlcmF0b3ItPmZpcnN0OyAvLyBUbyBnZXQgdGhl
IHJpZ2h0IHR5cGUgOikKKyAgICAgICAgYXV0byBvdGhlclJhbmdlT2Zmc2V0ID0gb3RoZXJJdGVy
YXRvci5maXJzdCgpOyAvLyBUbyBnZXQgdGhlIHJpZ2h0IHR5cGUgOikKICAgICAgICAgb3RoZXJS
YW5nZU9mZnNldCA9IDA7CiAKICAgICAgICAgZG8gewogICAgICAgICAgICAgVHlwZWRNdXRhYmxl
UmFuZ2UqIGFjdGl2ZVNlbGZSYW5nZSA9ICZtX3Jhbmdlc1tzZWxmUmFuZ2VJbmRleF07CiAKICAg
ICAgICAgICAgIC8vIEZpcnN0LCB3ZSBtb3ZlIGZvcndhcmQgdW50aWwgd2UgZmluZCBzb21ldGhp
bmcgaW50ZXJlc3RpbmcuCi0gICAgICAgICAgICBpZiAoYWN0aXZlU2VsZlJhbmdlLT5sYXN0IDwg
b3RoZXJJdGVyYXRvci0+Zmlyc3QgKyBvdGhlclJhbmdlT2Zmc2V0KSB7CisgICAgICAgICAgICBp
ZiAoYWN0aXZlU2VsZlJhbmdlLT5sYXN0IDwgb3RoZXJJdGVyYXRvci5maXJzdCgpICsgb3RoZXJS
YW5nZU9mZnNldCkgewogICAgICAgICAgICAgICAgIGxhc3RTZWxmUmFuZ2VJbmRleCA9IHNlbGZS
YW5nZUluZGV4OwogICAgICAgICAgICAgICAgIHNlbGZSYW5nZUluZGV4ID0gYWN0aXZlU2VsZlJh
bmdlLT5uZXh0UmFuZ2VJbmRleDsKICAgICAgICAgICAgICAgICByZWFjaGVkU2VsZkVuZCA9ICFz
ZWxmUmFuZ2VJbmRleDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGlmIChvdGhlckl0ZXJhdG9yLT5sYXN0IDwgYWN0aXZlU2VsZlJhbmdlLT5m
aXJzdCkgewotICAgICAgICAgICAgICAgIGluc2VydEJldHdlZW4obGFzdFNlbGZSYW5nZUluZGV4
LCBzZWxmUmFuZ2VJbmRleCwgb3RoZXJJdGVyYXRvci0+Zmlyc3QgKyBvdGhlclJhbmdlT2Zmc2V0
LCBvdGhlckl0ZXJhdG9yLT5sYXN0LCBkYXRhQ29udmVydGVyLmNvbnZlcnQob3RoZXJJdGVyYXRv
ci5kYXRhKCkpKTsKKyAgICAgICAgICAgIGlmIChvdGhlckl0ZXJhdG9yLmxhc3QoKSA8IGFjdGl2
ZVNlbGZSYW5nZS0+Zmlyc3QpIHsKKyAgICAgICAgICAgICAgICBpbnNlcnRCZXR3ZWVuKGxhc3RT
ZWxmUmFuZ2VJbmRleCwgc2VsZlJhbmdlSW5kZXgsIG90aGVySXRlcmF0b3IuZmlyc3QoKSArIG90
aGVyUmFuZ2VPZmZzZXQsIG90aGVySXRlcmF0b3IubGFzdCgpLCBkYXRhQ29udmVydGVyLmNvbnZl
cnQob3RoZXJJdGVyYXRvci5kYXRhKCkpKTsKIAogICAgICAgICAgICAgICAgICsrb3RoZXJJdGVy
YXRvcjsKICAgICAgICAgICAgICAgICBvdGhlclJhbmdlT2Zmc2V0ID0gMDsKQEAgLTEyNiwyNCAr
MTMwLDI0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIEJ1dCB3ZSBkb24ndCBrbm93IGhvdyB0
aGV5IGNvbGxpZGUuCiAKICAgICAgICAgICAgIC8vIERvIHdlIGhhdmUgYSBwYXJ0IG9uIHRoZSBs
ZWZ0PyBDcmVhdGUgYSBuZXcgcmFuZ2UgZm9yIGl0LgotICAgICAgICAgICAgaWYgKGFjdGl2ZVNl
bGZSYW5nZS0+Zmlyc3QgPCBvdGhlckl0ZXJhdG9yLT5maXJzdCArIG90aGVyUmFuZ2VPZmZzZXQp
IHsKKyAgICAgICAgICAgIGlmIChhY3RpdmVTZWxmUmFuZ2UtPmZpcnN0IDwgb3RoZXJJdGVyYXRv
ci5maXJzdCgpICsgb3RoZXJSYW5nZU9mZnNldCkgewogICAgICAgICAgICAgICAgIERhdGFUeXBl
IGNvcGllZERhdGEgPSBhY3RpdmVTZWxmUmFuZ2UtPmRhdGE7CiAgICAgICAgICAgICAgICAgQ2hh
cmFjdGVyVHlwZSBuZXdSYW5nZUZpcnN0Q2hhcmFjdGVyID0gYWN0aXZlU2VsZlJhbmdlLT5maXJz
dDsKLSAgICAgICAgICAgICAgICBhY3RpdmVTZWxmUmFuZ2UtPmZpcnN0ID0gb3RoZXJJdGVyYXRv
ci0+Zmlyc3QgKyBvdGhlclJhbmdlT2Zmc2V0OwotICAgICAgICAgICAgICAgIGluc2VydEJldHdl
ZW4obGFzdFNlbGZSYW5nZUluZGV4LCBzZWxmUmFuZ2VJbmRleCwgbmV3UmFuZ2VGaXJzdENoYXJh
Y3Rlciwgb3RoZXJJdGVyYXRvci0+Zmlyc3QgKyBvdGhlclJhbmdlT2Zmc2V0IC0gMSwgV1RGOjpt
b3ZlKGNvcGllZERhdGEpKTsKKyAgICAgICAgICAgICAgICBhY3RpdmVTZWxmUmFuZ2UtPmZpcnN0
ID0gb3RoZXJJdGVyYXRvci5maXJzdCgpICsgb3RoZXJSYW5nZU9mZnNldDsKKyAgICAgICAgICAg
ICAgICBpbnNlcnRCZXR3ZWVuKGxhc3RTZWxmUmFuZ2VJbmRleCwgc2VsZlJhbmdlSW5kZXgsIG5l
d1JhbmdlRmlyc3RDaGFyYWN0ZXIsIG90aGVySXRlcmF0b3IuZmlyc3QoKSArIG90aGVyUmFuZ2VP
ZmZzZXQgLSAxLCBXVEY6Om1vdmUoY29waWVkRGF0YSkpOwogICAgICAgICAgICAgICAgIGFjdGl2
ZVNlbGZSYW5nZSA9ICZtX3Jhbmdlc1tzZWxmUmFuZ2VJbmRleF07Ci0gICAgICAgICAgICB9IGVs
c2UgaWYgKG90aGVySXRlcmF0b3ItPmZpcnN0ICsgb3RoZXJSYW5nZU9mZnNldCA8IGFjdGl2ZVNl
bGZSYW5nZS0+Zmlyc3QpIHsKLSAgICAgICAgICAgICAgICBpbnNlcnRCZXR3ZWVuKGxhc3RTZWxm
UmFuZ2VJbmRleCwgc2VsZlJhbmdlSW5kZXgsIG90aGVySXRlcmF0b3ItPmZpcnN0ICsgb3RoZXJS
YW5nZU9mZnNldCwgYWN0aXZlU2VsZlJhbmdlLT5maXJzdCAtIDEsIGRhdGFDb252ZXJ0ZXIuY29u
dmVydChvdGhlckl0ZXJhdG9yLmRhdGEoKSkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChvdGhl
ckl0ZXJhdG9yLmZpcnN0KCkgKyBvdGhlclJhbmdlT2Zmc2V0IDwgYWN0aXZlU2VsZlJhbmdlLT5m
aXJzdCkgeworICAgICAgICAgICAgICAgIGluc2VydEJldHdlZW4obGFzdFNlbGZSYW5nZUluZGV4
LCBzZWxmUmFuZ2VJbmRleCwgb3RoZXJJdGVyYXRvci5maXJzdCgpICsgb3RoZXJSYW5nZU9mZnNl
dCwgYWN0aXZlU2VsZlJhbmdlLT5maXJzdCAtIDEsIGRhdGFDb252ZXJ0ZXIuY29udmVydChvdGhl
ckl0ZXJhdG9yLmRhdGEoKSkpOwogCiAgICAgICAgICAgICAgICAgYWN0aXZlU2VsZlJhbmdlID0g
Jm1fcmFuZ2VzW3NlbGZSYW5nZUluZGV4XTsKLSAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKG90aGVyUmFuZ2VPZmZzZXQgPCBhY3RpdmVTZWxmUmFuZ2UtPmZpcnN0IC0gb3RoZXJJ
dGVyYXRvci0+Zmlyc3QsICJUaGUgb2Zmc2V0IG11c3QgbW92ZSBmb3J3YXJkIG9yIHdlIGNvdWxk
IGdldCBzdHVjayBvbiB0aGlzIG9wZXJhdGlvbi4iKTsKLSAgICAgICAgICAgICAgICBvdGhlclJh
bmdlT2Zmc2V0ID0gYWN0aXZlU2VsZlJhbmdlLT5maXJzdCAtIG90aGVySXRlcmF0b3ItPmZpcnN0
OworICAgICAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uob3RoZXJSYW5nZU9mZnNldCA8
IGFjdGl2ZVNlbGZSYW5nZS0+Zmlyc3QgLSBvdGhlckl0ZXJhdG9yLmZpcnN0KCksICJUaGUgb2Zm
c2V0IG11c3QgbW92ZSBmb3J3YXJkIG9yIHdlIGNvdWxkIGdldCBzdHVjayBvbiB0aGlzIG9wZXJh
dGlvbi4iKTsKKyAgICAgICAgICAgICAgICBvdGhlclJhbmdlT2Zmc2V0ID0gYWN0aXZlU2VsZlJh
bmdlLT5maXJzdCAtIG90aGVySXRlcmF0b3IuZmlyc3QoKTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgLy8gSGVyZSwgd2Uga25vdyBib3RoIHJhbmdlcyBzdGFydCBhdCB0aGUgc2FtZSBw
b2ludCwgd2UgbmVlZCB0byBjcmVhdGUgdGhlIHBhcnQgdGhhdCBpbnRlcnNlY3QKICAgICAgICAg
ICAgIC8vIGFuZCBtZXJnZSB0aGUgZGF0YS4KIAotICAgICAgICAgICAgaWYgKGFjdGl2ZVNlbGZS
YW5nZS0+bGFzdCA9PSBvdGhlckl0ZXJhdG9yLT5sYXN0KSB7CisgICAgICAgICAgICBpZiAoYWN0
aXZlU2VsZlJhbmdlLT5sYXN0ID09IG90aGVySXRlcmF0b3IubGFzdCgpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gSWYgdGhleSBmaW5pc2ggdG9nZXRoZXIsIHRoaW5ncyBhcmUgcmVhbGx5IGVhc3k6
IHdlIGp1c3QgYWRkIEIgdG8gQS4KICAgICAgICAgICAgICAgICBkYXRhQ29udmVydGVyLmV4dGVu
ZChhY3RpdmVTZWxmUmFuZ2UtPmRhdGEsIG90aGVySXRlcmF0b3IuZGF0YSgpKTsKIApAQCAtMTU2
LDE1ICsxNjAsMTUgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBpZiAoYWN0aXZlU2VsZlJhbmdlLT5sYXN0ID4gb3RoZXJJ
dGVyYXRvci0+bGFzdCkgeworICAgICAgICAgICAgaWYgKGFjdGl2ZVNlbGZSYW5nZS0+bGFzdCA+
IG90aGVySXRlcmF0b3IubGFzdCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgQSBpcyBiaWdn
ZXIgdGhhbiBCLCB3ZSBhZGQgYSBtZXJnZWQgdmVyc2lvbiBhbmQgbW92ZSBBIHRvIHRoZSByaWdo
dC4KIAogICAgICAgICAgICAgICAgIENoYXJhY3RlclR5cGUgY29tYmluZWRQYXJ0U3RhcnQgPSBh
Y3RpdmVTZWxmUmFuZ2UtPmZpcnN0OwotICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGZSYW5nZS0+
Zmlyc3QgPSBvdGhlckl0ZXJhdG9yLT5sYXN0ICsgMTsKKyAgICAgICAgICAgICAgICBhY3RpdmVT
ZWxmUmFuZ2UtPmZpcnN0ID0gb3RoZXJJdGVyYXRvci5sYXN0KCkgKyAxOwogCiAgICAgICAgICAg
ICAgICAgRGF0YVR5cGUgY29tYmluZWREYXRhID0gYWN0aXZlU2VsZlJhbmdlLT5kYXRhOwogICAg
ICAgICAgICAgICAgIGRhdGFDb252ZXJ0ZXIuZXh0ZW5kKGNvbWJpbmVkRGF0YSwgb3RoZXJJdGVy
YXRvci5kYXRhKCkpOwotICAgICAgICAgICAgICAgIGluc2VydEJldHdlZW4obGFzdFNlbGZSYW5n
ZUluZGV4LCBzZWxmUmFuZ2VJbmRleCwgY29tYmluZWRQYXJ0U3RhcnQsIG90aGVySXRlcmF0b3It
Pmxhc3QsIFdURjo6bW92ZShjb21iaW5lZERhdGEpKTsKKyAgICAgICAgICAgICAgICBpbnNlcnRC
ZXR3ZWVuKGxhc3RTZWxmUmFuZ2VJbmRleCwgc2VsZlJhbmdlSW5kZXgsIGNvbWJpbmVkUGFydFN0
YXJ0LCBvdGhlckl0ZXJhdG9yLmxhc3QoKSwgV1RGOjptb3ZlKGNvbWJpbmVkRGF0YSkpOwogCiAg
ICAgICAgICAgICAgICAgKytvdGhlckl0ZXJhdG9yOwogICAgICAgICAgICAgICAgIG90aGVyUmFu
Z2VPZmZzZXQgPSAwOwpAQCAtMTcyLDIyICsxNzYsMjcgQEAgcHVibGljOgogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAvLyBJZiB3ZSByZWFjaGVkIGhlcmUsIEIgZW5kcyBhZnRlciBBLiBX
ZSBtZXJnZSB0aGUgaW50ZXJzZWN0aW9uIGFuZCBtb3ZlIG9uLgotICAgICAgICAgICAgQVNTRVJU
KG90aGVySXRlcmF0b3ItPmxhc3QgPiBhY3RpdmVTZWxmUmFuZ2UtPmxhc3QpOworICAgICAgICAg
ICAgQVNTRVJUKG90aGVySXRlcmF0b3IubGFzdCgpID4gYWN0aXZlU2VsZlJhbmdlLT5sYXN0KTsK
ICAgICAgICAgICAgIGRhdGFDb252ZXJ0ZXIuZXh0ZW5kKGFjdGl2ZVNlbGZSYW5nZS0+ZGF0YSwg
b3RoZXJJdGVyYXRvci5kYXRhKCkpOwogCi0gICAgICAgICAgICBvdGhlclJhbmdlT2Zmc2V0ID0g
YWN0aXZlU2VsZlJhbmdlLT5sYXN0IC0gb3RoZXJJdGVyYXRvci0+Zmlyc3QgKyAxOworICAgICAg
ICAgICAgb3RoZXJSYW5nZU9mZnNldCA9IGFjdGl2ZVNlbGZSYW5nZS0+bGFzdCAtIG90aGVySXRl
cmF0b3IuZmlyc3QoKSArIDE7CiAgICAgICAgICAgICBsYXN0U2VsZlJhbmdlSW5kZXggPSBzZWxm
UmFuZ2VJbmRleDsKICAgICAgICAgICAgIHNlbGZSYW5nZUluZGV4ID0gYWN0aXZlU2VsZlJhbmdl
LT5uZXh0UmFuZ2VJbmRleDsKICAgICAgICAgICAgIHJlYWNoZWRTZWxmRW5kID0gIXNlbGZSYW5n
ZUluZGV4OwogICAgICAgICB9IHdoaWxlICghcmVhY2hlZFNlbGZFbmQgJiYgb3RoZXJJdGVyYXRv
ciAhPSBvdGhlckVuZCk7CiAKICAgICAgICAgd2hpbGUgKG90aGVySXRlcmF0b3IgIT0gb3RoZXJF
bmQpIHsKLSAgICAgICAgICAgIGxhc3RTZWxmUmFuZ2VJbmRleCA9IGFwcGVuZFJhbmdlKGxhc3RT
ZWxmUmFuZ2VJbmRleCwgb3RoZXJJdGVyYXRvci0+Zmlyc3QgKyBvdGhlclJhbmdlT2Zmc2V0LCBv
dGhlckl0ZXJhdG9yLT5sYXN0LCBkYXRhQ29udmVydGVyLmNvbnZlcnQob3RoZXJJdGVyYXRvci5k
YXRhKCkpKTsKKyAgICAgICAgICAgIGxhc3RTZWxmUmFuZ2VJbmRleCA9IGFwcGVuZFJhbmdlKGxh
c3RTZWxmUmFuZ2VJbmRleCwgb3RoZXJJdGVyYXRvci5maXJzdCgpICsgb3RoZXJSYW5nZU9mZnNl
dCwgb3RoZXJJdGVyYXRvci5sYXN0KCksIGRhdGFDb252ZXJ0ZXIuY29udmVydChvdGhlckl0ZXJh
dG9yLmRhdGEoKSkpOwogICAgICAgICAgICAgb3RoZXJSYW5nZU9mZnNldCA9IDA7CiAgICAgICAg
ICAgICArK290aGVySXRlcmF0b3I7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB1bnNpZ25lZCBz
aXplKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Jhbmdlcy5zaXplKCk7CisgICAg
fQorCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Jh
bmdlcy5pc0VtcHR5KCk7CkBAIC0yNDEsOCArMjUwLDggQEAgcHJpdmF0ZToKICAgICAgICAgZG8g
ewogICAgICAgICAgICAgbV9yYW5nZXMuYXBwZW5kKFR5cGVkTXV0YWJsZVJhbmdlKGRhdGFDb252
ZXJ0ZXIuY29udmVydChvdGhlckl0ZXJhdG9yLmRhdGEoKSksCiAgICAgICAgICAgICAgICAgbG9v
cENvdW50ZXIgKyAxLAotICAgICAgICAgICAgICAgIG90aGVySXRlcmF0b3ItPmZpcnN0LAotICAg
ICAgICAgICAgICAgIG90aGVySXRlcmF0b3ItPmxhc3QpKTsKKyAgICAgICAgICAgICAgICBvdGhl
ckl0ZXJhdG9yLmZpcnN0KCksCisgICAgICAgICAgICAgICAgb3RoZXJJdGVyYXRvci5sYXN0KCkp
KTsKICAgICAgICAgICAgICsrbG9vcENvdW50ZXI7CiAgICAgICAgICAgICArK290aGVySXRlcmF0
b3I7CiAgICAgICAgIH0gd2hpbGUgKG90aGVySXRlcmF0b3IgIT0gb3RoZXJFbmQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwCmluZGV4IDZhMmIzZTQw
MTkxZmM3NTU3MDI1YzMzOGM5MmNlYWM0OTNlZTA2YmQuLjk0YjhiNzNmODMwM2EzMDA4YmFjZTM2
YzZhYjA4OTA3NTRlZWJjZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL05GQVRvREZBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9ORkFUb0RGQS5jcHAKQEAgLTMzNiw3MyArMzM2LDYgQEAgc3RhdGljIGlubGluZSB2b2lkIGNy
ZWF0ZUNvbWJpbmVkVHJhbnNpdGlvbihQcmVhbGxvY2F0ZWRORkFOb2RlUmFuZ2VMaXN0JiBjb21i
aW4KICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBjYW5Vc2VGYWxsYmFja1RyYW5zaXRp
b24oY29uc3QgUHJlYWxsb2NhdGVkTkZBTm9kZVJhbmdlTGlzdCYgcmFuZ2VMaXN0KQotewotICAg
IC8vIFRyYW5zaXRpb25zIGNhbiBjb250YWlucyAiMCIgaWYgdGhlIGV4cHJlc3Npb24gaGFzIGEg
ZW5kLW9mLWxpbmUgbWFya2VyLgotICAgIC8vIEZhbGxiYWNrIHRyYW5zaXRpb25zIGNvdmVyIDEt
MTI3LiBXZSBoYXZlIHRvIGJlIGNhcmVmdWwgd2l0aCB0aGUgZmlyc3QuCi0KLSAgICBhdXRvIGl0
ZXJhdG9yID0gcmFuZ2VMaXN0LmJlZ2luKCk7Ci0gICAgYXV0byBlbmQgPSByYW5nZUxpc3QuZW5k
KCk7Ci0gICAgaWYgKGl0ZXJhdG9yID09IGVuZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgY2hhciBsYXN0U2VlbkNoYXJhY3RlciA9IDA7Ci0gICAgaWYgKCFpdGVyYXRvci0+Zmlyc3Qp
IHsKLSAgICAgICAgbGFzdFNlZW5DaGFyYWN0ZXIgPSBpdGVyYXRvci0+bGFzdDsKLSAgICAgICAg
aWYgKGxhc3RTZWVuQ2hhcmFjdGVyID09IDEyNykKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICArK2l0ZXJhdG9yOwotICAgIH0KLQotICAgIGZvciAoO2l0ZXJhdG9yICE9IGVuZDsg
KytpdGVyYXRvcikgewotICAgICAgICBBU1NFUlQoaXRlcmF0b3ItPmZpcnN0ID4gbGFzdFNlZW5D
aGFyYWN0ZXIpOwotICAgICAgICBpZiAoaXRlcmF0b3ItPmZpcnN0ICE9IGxhc3RTZWVuQ2hhcmFj
dGVyICsgMSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoaXRlcmF0
b3ItPmxhc3QgPT0gMTI3KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGxhc3RT
ZWVuQ2hhcmFjdGVyID0gaXRlcmF0b3ItPmxhc3Q7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotc3RhdGljIGlubGluZSB1aW50MzJfdCBmaW5kQmVzdEZhbGxiYWNrVGFyZ2V0KGNvbnN0
IFByZWFsbG9jYXRlZE5GQU5vZGVSYW5nZUxpc3QmIHJhbmdlTGlzdCwgY29uc3QgVmVjdG9yPHVu
c2lnbmVkLCAxMjg+JiByYW5nZVRvVGFyZ2V0KQotewotICAgIEFTU0VSVChjYW5Vc2VGYWxsYmFj
a1RyYW5zaXRpb24ocmFuZ2VMaXN0KSk7Ci0KLSAgICBIYXNoTWFwPHVpbnQzMl90LCB1bnNpZ25l
ZCwgRGVmYXVsdEhhc2g8dWludDMyX3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPHVpbnQzMl90Pj4gaGlzdG9ncmFtOwotCi0gICAgdW5zaWduZWQgcmFuZ2VUb1Rh
cmdldEluZGV4ID0gMDsKLSAgICBhdXRvIGl0ZXJhdG9yID0gcmFuZ2VMaXN0LmJlZ2luKCk7Ci0g
ICAgYXV0byBlbmQgPSByYW5nZUxpc3QuZW5kKCk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShp
dGVyYXRvciAhPSBlbmQsICJBbiBlbXB0eSByYW5nZSBsaXN0IGNhbm5vdCB1c2UgYSBmYWxsYmFj
ayB0cmFuc2l0aW9uLiIpOwotCi0gICAgaWYgKCFpdGVyYXRvci0+Zmlyc3QgJiYgIWl0ZXJhdG9y
LT5sYXN0KSB7Ci0gICAgICAgICsraXRlcmF0b3I7Ci0gICAgICAgICsrcmFuZ2VUb1RhcmdldElu
ZGV4OwotICAgIH0KLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGl0ZXJhdG9yICE9IGVuZCwgIkFu
IGVtcHR5IHJhbmdlIGxpc3QgbWF0Y2hpbmcgb25seSB6ZXJvIGNhbm5vdCB1c2UgYSBmYWxsYmFj
ayB0cmFuc2l0aW9uLiIpOwotCi0gICAgdWludDMyX3QgYmVzdFRhcmdldCA9IHJhbmdlVG9UYXJn
ZXRbcmFuZ2VUb1RhcmdldEluZGV4XTsKLSAgICB1bnNpZ25lZCBiZXN0VGFyZ2V0U2NvcmUgPSAh
aXRlcmF0b3ItPmZpcnN0ID8gaXRlcmF0b3ItPnNpemUoKSAtIDEgOiBpdGVyYXRvci0+c2l6ZSgp
OwotICAgIGhpc3RvZ3JhbS5hZGQoYmVzdFRhcmdldCwgYmVzdFRhcmdldFNjb3JlKTsKLSAgICAr
K2l0ZXJhdG9yOwotICAgICsrcmFuZ2VUb1RhcmdldEluZGV4OwotCi0gICAgZm9yICg7aXRlcmF0
b3IgIT0gZW5kOyArK2l0ZXJhdG9yLCArK3JhbmdlVG9UYXJnZXRJbmRleCkgewotICAgICAgICB1
bnNpZ25lZCByYW5nZVNpemUgPSBpdGVyYXRvci0+c2l6ZSgpOwotICAgICAgICB1aW50MzJfdCB0
YXJnZXQgPSByYW5nZVRvVGFyZ2V0W3JhbmdlVG9UYXJnZXRJbmRleF07Ci0gICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gaGlzdG9ncmFtLmFkZCh0YXJnZXQsIHJhbmdlU2l6ZSk7Ci0gICAgICAgIGlm
ICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlICs9IHJhbmdlU2l6ZTsKLSAgICAgICAgaWYgKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPiBiZXN0VGFyZ2V0U2NvcmUpIHsKLSAgICAgICAgICAgIGJlc3RUYXJnZXRTY29yZSA9IGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgICAgICAgICBiZXN0VGFyZ2V0ID0gdGFyZ2V0
OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBiZXN0VGFyZ2V0OwotfQotCiBzdGF0aWMg
QUxXQVlTX0lOTElORSB1bnNpZ25lZCBnZXRPckNyZWF0ZURGQU5vZGUoY29uc3QgTm9kZUlkU2V0
JiBuZmFOb2RlU2V0LCBjb25zdCBORkEmIG5mYSwgREZBJiBkZmEsIFVuaXF1ZU5vZGVJZFNldFRh
YmxlJiB1bmlxdWVOb2RlSWRTZXRUYWJsZSwgVmVjdG9yPFVuaXF1ZU5vZGVJZFNldEltcGwqPiYg
dW5wcm9jZXNzZWROb2RlcykKIHsKICAgICBOb2RlSWRTZXRUb1VuaXF1ZU5vZGVJZFNldFNvdXJj
ZSBub2RlSWRTZXRUb1VuaXF1ZU5vZGVJZFNldFNvdXJjZShkZmEsIG5mYSwgbmZhTm9kZVNldCk7
CkBAIC00MzIsNDYgKzM2NSwyNCBAQCBERkEgTkZBVG9ERkE6OmNvbnZlcnQoTkZBJiBuZmEpCiAg
ICAgdW5wcm9jZXNzZWROb2Rlcy5hcHBlbmQoYWRkUmVzdWx0Lml0ZXJhdG9yLT5pbXBsKCkpOwog
CiAgICAgUHJlYWxsb2NhdGVkTkZBTm9kZVJhbmdlTGlzdCBjb21iaW5lZFJhbmdlTGlzdDsKLSAg
ICBWZWN0b3I8dW5zaWduZWQsIDEyOD4gcmFuZ2VUb1RhcmdldDsKICAgICBkbyB7CiAgICAgICAg
IFVuaXF1ZU5vZGVJZFNldEltcGwqIHVuaXF1ZU5vZGVJZFNldEltcGwgPSB1bnByb2Nlc3NlZE5v
ZGVzLnRha2VMYXN0KCk7CiAgICAgICAgIGNyZWF0ZUNvbWJpbmVkVHJhbnNpdGlvbihjb21iaW5l
ZFJhbmdlTGlzdCwgKnVuaXF1ZU5vZGVJZFNldEltcGwsIG5mYSwgbmZhTm9kZUNsb3N1cmVzKTsK
IAotICAgICAgICByYW5nZVRvVGFyZ2V0LmNsZWFyKCk7CisgICAgICAgIHVuc2lnbmVkIHRyYW5z
aXRpb25zU3RhcnQgPSBkZmEudHJhbnNpdGlvblJhbmdlcy5zaXplKCk7CiAgICAgICAgIGZvciAo
Y29uc3QgTkZBTm9kZVJhbmdlJiByYW5nZSA6IGNvbWJpbmVkUmFuZ2VMaXN0KSB7CiAgICAgICAg
ICAgICB1bnNpZ25lZCB0YXJnZXROb2RlSWQgPSBnZXRPckNyZWF0ZURGQU5vZGUocmFuZ2UuZGF0
YSwgbmZhLCBkZmEsIHVuaXF1ZU5vZGVJZFNldFRhYmxlLCB1bnByb2Nlc3NlZE5vZGVzKTsKLSAg
ICAgICAgICAgIHJhbmdlVG9UYXJnZXQuYXBwZW5kKHRhcmdldE5vZGVJZCk7CisgICAgICAgICAg
ICBkZmEudHJhbnNpdGlvblJhbmdlcy5hcHBlbmQoeyByYW5nZS5maXJzdCwgcmFuZ2UubGFzdCB9
KTsKKyAgICAgICAgICAgIGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zLmFwcGVuZCh0YXJnZXRO
b2RlSWQpOwogICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB1c2VGYWxsYmFja1RyYW5zaXRpb24g
PSBjYW5Vc2VGYWxsYmFja1RyYW5zaXRpb24oY29tYmluZWRSYW5nZUxpc3QpOwotICAgICAgICB1
aW50MzJfdCBwcmVmZXJlZEZhbGxiYWNrVGFyZ2V0ID0gMDsKLSAgICAgICAgaWYgKHVzZUZhbGxi
YWNrVHJhbnNpdGlvbikKLSAgICAgICAgICAgIHByZWZlcmVkRmFsbGJhY2tUYXJnZXQgPSBmaW5k
QmVzdEZhbGxiYWNrVGFyZ2V0KGNvbWJpbmVkUmFuZ2VMaXN0LCByYW5nZVRvVGFyZ2V0KTsKLQot
ICAgICAgICB1bnNpZ25lZCB0cmFuc2l0aW9uc1N0YXJ0ID0gZGZhLnRyYW5zaXRpb25DaGFyYWN0
ZXJzLnNpemUoKTsKLSAgICAgICAgdW5zaWduZWQgcmFuZ2VUb1RhcmdldEluZGV4ID0gMDsKLQot
ICAgICAgICBmb3IgKGNvbnN0IE5GQU5vZGVSYW5nZSYgcmFuZ2UgOiBjb21iaW5lZFJhbmdlTGlz
dCkgewotICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0Tm9kZUlkID0gcmFuZ2VUb1RhcmdldFty
YW5nZVRvVGFyZ2V0SW5kZXhdOwotCi0gICAgICAgICAgICBpZiAoISh1c2VGYWxsYmFja1RyYW5z
aXRpb24gJiYgdGFyZ2V0Tm9kZUlkID09IHByZWZlcmVkRmFsbGJhY2tUYXJnZXQpKSB7Ci0gICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmFuZ2UuZmlyc3Q7IGkgPD0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHJhbmdlLmxhc3QpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgZGZh
LnRyYW5zaXRpb25DaGFyYWN0ZXJzLmFwcGVuZChzdGF0aWNfY2FzdDx1aW50OF90PihpKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zLmFwcGVuZCh0YXJn
ZXROb2RlSWQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICsrcmFuZ2VUb1RhcmdldEluZGV4OwotICAgICAgICB9Ci0gICAgICAgIHVuc2lnbmVkIHRyYW5z
aXRpb25zRW5kID0gZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJzLnNpemUoKTsKKyAgICAgICAgdW5z
aWduZWQgdHJhbnNpdGlvbnNFbmQgPSBkZmEudHJhbnNpdGlvblJhbmdlcy5zaXplKCk7CiAgICAg
ICAgIHVuc2lnbmVkIHRyYW5zaXRpb25zTGVuZ3RoID0gdHJhbnNpdGlvbnNFbmQgLSB0cmFuc2l0
aW9uc1N0YXJ0OworCiAgICAgICAgIHVuc2lnbmVkIGRmYU5vZGVJZCA9IHVuaXF1ZU5vZGVJZFNl
dEltcGwtPm1fZGZhTm9kZUlkOwogICAgICAgICBERkFOb2RlJiBkZmFTb3VyY2VOb2RlID0gZGZh
Lm5vZGVzW2RmYU5vZGVJZF07Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UodHJhbnNpdGlv
bnNMZW5ndGggPCAxMjcsICJUcmFuc2l0aW9ucyBjb3ZlcmluZyB0aGUgZW50aXJlIGFscGhhYmV0
IHNob3VsZCB1c2UgYSBmYWxsYmFjayB0cmFuc2l0aW9uIik7CiAgICAgICAgIGRmYVNvdXJjZU5v
ZGUuc2V0VHJhbnNpdGlvbnModHJhbnNpdGlvbnNTdGFydCwgc3RhdGljX2Nhc3Q8dWludDhfdD4o
dHJhbnNpdGlvbnNMZW5ndGgpKTsKLQotICAgICAgICBpZiAodXNlRmFsbGJhY2tUcmFuc2l0aW9u
KQotICAgICAgICAgICAgZGZhU291cmNlTm9kZS5hZGRGYWxsYmFja1RyYW5zaXRpb24oZGZhLCBw
cmVmZXJlZEZhbGxiYWNrVGFyZ2V0KTsKICAgICB9IHdoaWxlICghdW5wcm9jZXNzZWROb2Rlcy5p
c0VtcHR5KCkpOworCiAgICAgcmV0dXJuIGRmYTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhhMzNjYWMwYjdlMTMyOGE3NWQ1OTQ3ODAy
N2EyMWJjNTY4Njc2NGQuLjZkZjk0MTQ3ZWE2YmViZmU0Yjk0YzcyY2M0OWIwNDNlOWMxOWJjYTIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNS0wNy0wMiAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQgRXh0ZW5zaW9uc10gTWFrZSB0aGUgREZBIHRyYW5z
aXRpb25zIHJhbmdlcyBpbnN0ZWFkIG9mIGNoYXJhY3RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjU3NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0NvbnRlbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvREZBTWluaW1pemVyLmNwcDoKKyAgICAgICAgU2luY2UgdGhlIG1pbmltaXplciBpcyBw
ZXJmZWN0LCB3ZSBnZXQgdGhlIG1pbmltYWwgc29sdXRpb24gbm93LAorICAgICAgICB3aGljaCBp
cyByZWFsbHkgY29vbCEKKwogMjAxNS0wNi0yOSAgSmFrZSBOaWVsc2VuICA8amFjb2JfbmllbHNl
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHRpbWVvdXQgaW4gcnVuLXdlYmtpdC10ZXN0cyBm
b3IgbGF1bmNoaW5nIHRoZSBzaW11bGF0b3IKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCmluZGV4IDE0YzI1YjRhOTE0
YjVjYzQ3NmU5NWUzOGQ2MGNkMTBkNzJiNzc5ZDQuLjUxYjRmNzc4YTc0YzMxMDM2MTJhYThkZjBj
ZmZlY2FhOGRlZGNiNTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcApAQCAtMTkzMCw0ICsxOTMwLDQ3MCBAQCBU
RVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFF1YW50aWZpZWRPbmVPck1vcmVSYW5nZXNDYXNl
MTFBbmQxM0luR3JvdXBzKQogICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoInp6ejovL3d3dy5kZGpqeXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKIH0KIAorVEVTVF9GKENv
bnRlbnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFJhbmdlT3ZlcmxhcENhc2UxKQoreworICAgIGF1
dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJi
bG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykqW2EtbV1cIn19LCIK
KyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImlnbm9yZS1wcmV2aW91cy1ydWxlc1wi
fSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGJhcikqW2MtZV1cIn19XSIpOworCisg
ICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJhOi8vd3d3
LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9h
ZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
ImI6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgiYzovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0sIHRydWUpOworICAgIHRlc3RSZXF1
ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZDovL3d3dy53ZWJraXQub3Jn
LyIpLCB7IH0sIHRydWUpOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgiZTovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0sIHRydWUpOworICAgIHRlc3RS
ZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZjovL3d3dy53ZWJraXQu
b3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7Cisg
ICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJtOi8vd3d3
LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9h
ZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
Im46Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9KTsKKworICAgIGF1dG8gc2VhcmNoQmFja2VuZCA9
IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2Vy
XCI6e1widXJsLWZpbHRlclwiOlwiKGZvbykqW2EtbV1cIn19LCIKKyAgICAgICAgIntcImFjdGlv
blwiOntcInR5cGVcIjpcImlnbm9yZS1wcmV2aW91cy1ydWxlc1wifSxcInRyaWdnZXJcIjp7XCJ1
cmwtZmlsdGVyXCI6XCIoYmFyKSpbYy1lXVwifX1dIik7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmEueHh4LyIpLCB7IENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qo
c2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmIueHh4LyIpLCB7
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJl
cXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmMueHh4
LyIpLCB7IH0sIHRydWUpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoInp6ejovL3d3dy5kLnh4eC8iKSwgeyB9LCB0cnVlKTsKKyAgICB0ZXN0UmVx
dWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZS54eHgv
IiksIHsgfSwgdHJ1ZSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgienp6Oi8vd3d3LmYueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3Lm0ueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3Lm4ueHh4LyIpLCB7IH0pOworfQorCisK
K1RFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgQ29tYmluZWRSYW5nZU92ZXJsYXBDYXNlMikK
K3sKKyAgICBhdXRvIG1hdGNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1wi
dHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihmb28pKlth
LW1dXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJpZ25vcmUtcHJldmlv
dXMtcnVsZXNcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihiYXIpKmJcIn19XSIp
OworCisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJh
Oi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJs
b2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoImI6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9LCB0cnVlKTsKKyAgICB0ZXN0UmVxdWVz
dChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImM6Ly93d3cud2Via2l0Lm9yZy8i
KSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRl
c3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgibTovL3d3dy53ZWJr
aXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7
CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJuOi8v
d3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisKKyAgICBhdXRvIHNlYXJjaEJhY2tlbmQgPSBtYWtl
QmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntc
InVybC1maWx0ZXJcIjpcIihmb28pKlthLW1dXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7
XCJ0eXBlXCI6XCJpZ25vcmUtcHJldmlvdXMtcnVsZXNcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZp
bHRlclwiOlwiKGJhcikqbFwifX1dIik7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwg
bWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmEueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmsueHh4LyIpLCB7IENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2Vh
cmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmwueHh4LyIpLCB7IH0s
IHRydWUpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoInp6ejovL3d3dy5tLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoInp6ejovL3d3dy5uLnh4eC8iKSwgeyB9KTsKK30KKworVEVTVF9GKENvbnRlbnRF
eHRlbnNpb25UZXN0LCBDb21iaW5lZFJhbmdlT3ZlcmxhcENhc2UzKQoreworICAgIGF1dG8gbWF0
Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wi
fSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykqW2ItZF1cIn19LCIKKyAgICAg
ICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9y
XCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4oYmFyKSpbYS1t
XVwifX1dIik7CisKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoImE6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9u
VHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImI6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdCht
YXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImQ6Ly93d3cud2Via2l0Lm9yZy8iKSwg
eyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3Rvciwg
Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVx
dWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImU6Ly93d3cud2Via2l0Lm9y
Zy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxl
Y3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoIm06Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlw
ZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoIm46Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9KTsKKwor
ICAgIGF1dG8gc2VhcmNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlw
ZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGZvbykqW2ItZF1c
In19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVc
IixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpc
IihiYXIpKlthLW1dXCJ9fV0iKTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qo
c2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmIueHh4LyIpLCB7
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBD
b250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1
ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kLnh4eC8i
KSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3Rv
ciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0
UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZS54
eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2Vs
ZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgienp6Oi8vd3d3Lm0ueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBl
OjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5uLnh4eC8iKSwgeyB9KTsKK30KKwor
VEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFJhbmdlT3ZlcmxhcENhc2U0KQor
eworICAgIGF1dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0
eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykqbFwi
fX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9uZVwi
LFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwi
XihiYXIpKlthLW1dXCJ9fV0iKTsKKworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgiYTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1
ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiazovL3d3dy53ZWJraXQub3Jn
LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVj
dG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgibDovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBl
OjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgibTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgibjovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0p
OworCisgICAgYXV0byBzZWFyY2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7
XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoZm9vKSps
XCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25l
XCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6
XCIoYmFyKSpbYS1tXVwifX1dIik7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmEueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0
KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5rLnh4eC8iKSwg
eyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9
KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6
eno6Ly93d3cubC54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rp
c3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xv
YWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgienp6Oi8vd3d3Lm0ueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpD
U1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5uLnh4eC8iKSwgeyB9KTsKK30KKworVEVT
VF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFJhbmdlT3ZlcmxhcENhc2U1KQorewor
ICAgIGF1dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBl
XCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykqW2EtZV1c
In19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVc
IixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpc
Il4oYmFyKSpbZS1oXVwifX1dIik7CisKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoImE6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZDovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qo
bWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJlOi8vd3d3LndlYmtpdC5vcmcvIiks
IHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3Is
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJl
cXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJmOi8vd3d3LndlYmtpdC5v
cmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2Vs
ZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJoOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5
cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJpOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisK
KyAgICBhdXRvIHNlYXJjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5
cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIihmb28pKlthLWVd
XCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25l
XCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6
XCIoYmFyKSpbZS1oXVwifX1dIik7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmEueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmQueHh4LyIpLCB7IENvbnRlbnRFeHRl
bnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmUueHh4LyIpLCB7IENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNl
YXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5mLnh4eC8iKSwgeyBD
b250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsK
KyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6
Ly93d3cuaC54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3Bs
YXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmkueHh4LyIpLCB7IH0pOworfQorCitURVNUX0YoQ29u
dGVudEV4dGVuc2lvblRlc3QsIENvbWJpbmVkUmFuZ2VPdmVybGFwQ2FzZTYpCit7CisgICAgYXV0
byBtYXRjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJs
b2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4oZm9vKSplXCJ9fSwiCisgICAg
ICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3Rv
clwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGJhcikqW2Ut
aF1cIn19XSIpOworCisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJhOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0
Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJkOi8vd3d3LndlYmtpdC5vcmcvIiksIHsg
fSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJl
Oi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNT
U0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9j
a0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJmOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5
cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJoOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAg
dGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJpOi8vd3d3Lndl
YmtpdC5vcmcvIiksIHsgfSk7CisKKyAgICBhdXRvIHNlYXJjaEJhY2tlbmQgPSBtYWtlQmFja2Vu
ZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1m
aWx0ZXJcIjpcIihmb28pKmVcIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpc
ImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwi
OntcInVybC1maWx0ZXJcIjpcIihiYXIpKltlLWhdXCJ9fV0iKTsKKyAgICB0ZXN0UmVxdWVzdChz
ZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYS54eHgvIiksIHsg
fSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
enp6Oi8vd3d3LmQueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5lLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lv
bnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZi54eHgvIiksIHsgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3Lmgu
eHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNl
bGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoInp6ejovL3d3dy5pLnh4eC8iKSwgeyB9KTsKK30KKworVEVTVF9GKENvbnRlbnRFeHRl
bnNpb25UZXN0LCBDb21iaW5lZFJhbmdlT3ZlcmxhcENhc2U3KQoreworICAgIGF1dG8gbWF0Y2hC
YWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxc
InRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykqW2EtZV1cIn19LCIKKyAgICAgICAg
IntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6
XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4oYmFyKSplXCJ9fV0i
KTsKKworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
YTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpC
bG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJkOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5E
b2N1bWVudFJlcXVlc3QoImU6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoImY6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9KTsKKworICAg
IGF1dG8gc2VhcmNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwi
OlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGZvbykqW2EtZV1cIn19
LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixc
InNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIihi
YXIpKmVcIn19XSIpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoInp6ejovL3d3dy5hLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9u
VHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5E
b2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6
QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5lLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lv
bnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZi54eHgvIiksIHsgfSk7Cit9CisK
K1RFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgQ29tYmluZWRSYW5nZU92ZXJsYXBDYXNlOCkK
K3sKKyAgICBhdXRvIG1hdGNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1wi
dHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihmb28pKltl
LWhdXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1u
b25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVy
XCI6XCJeKGJhcikqW2EtZV1cIn19XSIpOworCisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJhOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVz
dFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJkOi8vd3d3LndlYmtp
dC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25l
U2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJlOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25U
eXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJmOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoImg6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0
ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaTovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0p
OworCisgICAgYXV0byBzZWFyY2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7
XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoZm9vKSpb
ZS1oXVwifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXkt
bm9uZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRl
clwiOlwiKGJhcikqW2EtZV1cIn19XSIpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVx
dWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZC54eHgv
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0
b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgienp6Oi8vd3d3LmUueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpD
U1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Qmxv
Y2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoInp6ejovL3d3dy5mLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlw
ZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoInp6ejovL3d3dy5oLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5pLnh4eC8iKSwgeyB9KTsKK30KKworVEVTVF9G
KENvbnRlbnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFJhbmdlT3ZlcmxhcENhc2U5KQoreworICAg
IGF1dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6
XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykqZVwifX0sIgor
ICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9uZVwiLFwic2Vs
ZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihiYXIp
KlthLWVdXCJ9fV0iKTsKKworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgiYTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KG1h
dGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZDovL3d3dy53ZWJraXQub3JnLyIpLCB7
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0p
OworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZTov
L3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NE
aXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tM
b2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgiZjovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOworCisgICAgYXV0byBzZWFyY2hCYWNrZW5k
ID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdn
ZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoZm9vKSplXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25c
Ijp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwi
fSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoYmFyKSpbYS1lXVwifX1dIik7CisgICAg
dGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3
LmEueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9u
ZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoInp6ejovL3d3dy5kLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9u
VHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZS54eHgvIiksIHsgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2Vh
cmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmYueHh4LyIpLCB7IH0p
OworfQorCitURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIENvbWJpbmVkUmFuZ2VPdmVybGFw
Q2FzZTEwKQoreworICAgIGF1dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rp
b25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJe
KGZvbykqW2UtaF1cIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1k
aXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVy
bC1maWx0ZXJcIjpcIl4oYmFyKSplXCJ9fV0iKTsKKworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYTovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOwor
ICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZDovL3d3
dy53ZWJraXQub3JnLyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgiZTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZjovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0
Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJoOi8vd3d3LndlYmtpdC5vcmcvIiksIHsg
Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVx
dWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImk6Ly93d3cud2Via2l0Lm9y
Zy8iKSwgeyB9KTsKKworICAgIGF1dG8gc2VhcmNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wi
YWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwi
OlwiKGZvbykqW2UtaF1cIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNz
cy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntc
InVybC1maWx0ZXJcIjpcIihiYXIpKmVcIn19XSIpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hLnh4eC8iKSwgeyB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93
d3cuZC54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmUueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5mLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5oLnh4eC8iKSwgeyBDb250ZW50RXh0
ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJj
aEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5pLnh4eC8iKSwgeyB9KTsK
K30KKworVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFJhbmdlT3ZlcmxhcENh
c2UxMSkKK3sKKyAgICBhdXRvIG1hdGNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9u
XCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihm
b28pKltlLWddXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlz
cGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwt
ZmlsdGVyXCI6XCJeKGJhcikqW2QtZl1cIn19XSIpOworCisgICAgdGVzdFJlcXVlc3QobWF0Y2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJjOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7
CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJkOi8v
d3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rp
c3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJlOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lv
bnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJmOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRl
bnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJnOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVz
dChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImg6Ly93d3cud2Via2l0Lm9yZy8i
KSwgeyB9KTsKKworICAgIGF1dG8gc2VhcmNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0
aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwi
KGZvbykqW2UtZ11cIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1k
aXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVy
bC1maWx0ZXJcIjpcIihiYXIpKltkLWZdXCJ9fV0iKTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYy54eHgvIiksIHsgfSk7Cisg
ICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8v
d3d3LmQueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5
Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoInp6ejovL3d3dy5lLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZi54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwg
bWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmcueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmgueHh4LyIpLCB7IH0pOworfQor
CisKK1RFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgQ29tYmluZWRSYW5nZU92ZXJsYXBDYXNl
MTIpCit7CisgICAgYXV0byBtYXRjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwi
OntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4oZm9v
KSpbZS1nXVwifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3Bs
YXktbm9uZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZp
bHRlclwiOlwiXihiYXIpKltkLWddXCJ9fV0iKTsKKworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYzovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOwor
ICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZDovL3d3
dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNw
bGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgiZTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6
QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwg
bWFpbkRvY3VtZW50UmVxdWVzdCgiZjovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRl
bnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZzovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1h
dGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaDovL3d3dy53ZWJraXQub3JnLyIpLCB7
IH0pOworCisgICAgYXV0byBzZWFyY2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25c
Ijp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoZm9v
KSpbZS1nXVwifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3Bs
YXktbm9uZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZp
bHRlclwiOlwiKGJhcikqW2QtZ11cIn19XSIpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jLnh4eC8iKSwgeyB9KTsKKyAgICB0
ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cu
ZC54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25l
U2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgienp6Oi8vd3d3LmUueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25U
eXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlw
ZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoInp6ejovL3d3dy5mLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZy54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwg
bWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmgueHh4LyIpLCB7IH0pOworfQorCitURVNU
X0YoQ29udGVudEV4dGVuc2lvblRlc3QsIENvbWJpbmVkUmFuZ2VPdmVybGFwQ2FzZTEzKQorewor
ICAgIGF1dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBl
XCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykqW2ItZF1c
In19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVc
IixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpc
Il4oYmFyKSpbYy1lXVwifX1dIik7CisKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoImE6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9KTsKKyAgICB0ZXN0
UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImI6Ly93d3cud2Via2l0
Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOwor
ICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYzovL3d3
dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNw
bGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2Fk
IH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
ZDovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpD
U1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Qmxv
Y2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgiZTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25U
eXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaDovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOwor
CisgICAgYXV0byBzZWFyY2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0
eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoZm9vKSpbYi1k
XVwifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9u
ZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwi
OlwiKGJhcikqW2MtZV1cIn19XSIpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hLnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVx
dWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYi54eHgv
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0
ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cu
Yy54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25l
U2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7Cisg
ICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8v
d3d3LmQueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5
Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0p
OworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6
ejovL3d3dy5lLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlz
cGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuaC54eHgvIiksIHsgfSk7Cit9CisKK1RFU1RfRihD
b250ZW50RXh0ZW5zaW9uVGVzdCwgQ29tYmluZWRSYW5nZU92ZXJsYXBDYXNlMTQpCit7CisgICAg
YXV0byBtYXRjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpc
ImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4oZm9vKSpbYi1lXVwifX0s
IgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9uZVwiLFwi
c2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihi
YXIpKltjLWVdXCJ9fV0iKTsKKworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgiYTovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOworICAgIHRlc3RSZXF1
ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYjovL3d3dy53ZWJraXQub3Jn
LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAg
dGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJjOi8vd3d3Lndl
YmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlO
b25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7
CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJkOi8v
d3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rp
c3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xv
YWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJlOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6
OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpC
bG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJoOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisKKyAgICBhdXRvIHNlYXJjaEJh
Y2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwi
dHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIihmb28pKltiLWVdXCJ9fSwiCisgICAgICAgICJ7
XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwi
LmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoYmFyKSpbYy1lXVwifX1d
Iik7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
enp6Oi8vd3d3LmEueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5iLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jLnh4eC8iKSwgeyBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFy
Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZC54eHgvIiksIHsgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qo
c2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmUueHh4LyIpLCB7
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBD
b250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1
ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5oLnh4eC8i
KSwgeyB9KTsKK30KKworVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFJhbmdl
T3ZlcmxhcENhc2UxNSkKK3sKKyAgICBhdXRvIG1hdGNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJb
e1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRl
clwiOlwiXihmb28pKltjLWZdXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6
XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJc
Ijp7XCJ1cmwtZmlsdGVyXCI6XCJeKGJhcikqW2MtZl1cIn19XSIpOworCisgICAgdGVzdFJlcXVl
c3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJhOi8vd3d3LndlYmtpdC5vcmcv
IiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJiOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJjOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qo
bWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJkOi8vd3d3LndlYmtpdC5vcmcvIiks
IHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3Is
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJl
cXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJlOi8vd3d3LndlYmtpdC5v
cmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2Vs
ZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAg
dGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJmOi8vd3d3Lndl
YmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlO
b25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7
CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJnOi8v
d3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisKKyAgICBhdXRvIHNlYXJjaEJhY2tlbmQgPSBtYWtl
QmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntc
InVybC1maWx0ZXJcIjpcIihmb28pKltjLWZdXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7
XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxc
InRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoYmFyKSpbYy1mXVwifX1dIik7CisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmEu
eHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoInp6ejovL3d3dy5iLnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFy
Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYy54eHgvIiksIHsgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qo
c2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmQueHh4LyIpLCB7
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBD
b250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1
ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5lLnh4eC8i
KSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3Rv
ciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0
UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZi54
eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2Vs
ZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAg
dGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3
LmcueHh4LyIpLCB7IH0pOworfQorCitURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIENvbWJp
bmVkUmFuZ2VPdmVybGFwQ2FzZTE2KQoreworICAgIGF1dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJh
Y2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1
cmwtZmlsdGVyXCI6XCJeKGZvbykqY1wifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlw
ZVwiOlwiY3NzLWRpc3BsYXktbm9uZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmln
Z2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihiYXIpKmNcIn19XSIpOworCisgICAgdGVzdFJlcXVl
c3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJhOi8vd3d3LndlYmtpdC5vcmcv
IiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJiOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJjOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qo
bWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJkOi8vd3d3LndlYmtpdC5vcmcvIiks
IHsgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJlOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisKKyAgICBhdXRvIHNlYXJjaEJhY2tlbmQg
PSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dl
clwiOntcInVybC1maWx0ZXJcIjpcIihmb28pKmNcIn19LCIKKyAgICAgICAgIntcImFjdGlvblwi
OntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9
LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIihiYXIpKmNcIn19XSIpOworICAgIHRlc3RS
ZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hLnh4
eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJ6eno6Ly93d3cuYi54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmMueHh4LyIpLCB7IENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNl
YXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kLnh4eC8iKSwgeyB9
KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6
eno6Ly93d3cuZS54eHgvIiksIHsgfSk7Cit9CisKK1RFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVz
dCwgQ29tYmluZWRRdWFudGlmaWVkT25lT3JNb3JlUmFuZ2VzQ2FzZTExQW5kMTMpCit7CisgICAg
YXV0byBzZWFyY2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6
XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoZm9vKSpbYy1lXStbZy1p
XStZWVlcIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5
LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0
ZXJcIjpcIihiYXIpKltiLWRdK1toLWpdK1lZWVwifX1dIik7CisKKyAgICAvLyBUaGUgaW50ZXJl
c3RpbmcgcmFuZ2VzIG9ubHkgbWF0Y2ggYmV0d2VlbiAnYicgYW5kICdrJywgcGx1cyBhIGdhcCBp
biAnZicuCisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgienp6Oi8vd3d3LmFheXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWJ5eXkueHh4LyIpLCB7IH0p
OworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6
ejovL3d3dy5hY3l5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmFkeXl5Lnh4eC8iKSwgeyB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93
d3cuYWV5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hZnl5eS54eHgvIiksIHsgfSk7CisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmFn
eXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWh5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1
ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5haXl5eS54
eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgienp6Oi8vd3d3LmFqeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChz
ZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWt5eXkueHh4LyIp
LCB7IH0pOworCisgICAgLy8gJ2InIGlzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHNlY29u
ZCBydWxlLgorICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoInp6ejovL3d3dy5ieXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYmF5eXkueHh4LyIpLCB7IH0p
OworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6
ejovL3d3dy5iYnl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmJjeXl5Lnh4eC8iKSwgeyB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93
d3cuYmR5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5iZXl5eS54eHgvIiksIHsgfSk7CisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmJm
eXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYmd5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1
ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5iaHl5eS54
eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2Vs
ZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgienp6Oi8vd3d3LmJpeXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9u
VHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYmp5eXkueHh4LyIpLCB7IENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOwor
ICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejov
L3d3dy5ia3l5eS54eHgvIiksIHsgfSk7CisKKyAgICAvLyAnYycgaXMgdGhlIGZpcnN0IGNoYXJh
Y3RlciBvZiB0aGUgZmlyc3QgcnVsZSwgYW5kIGl0IG92ZXJsYXBzIHRoZSBmaXJzdCBjaGFyYWN0
ZXIgb2YgdGhlIHNlY29uZCBydWxlLgorICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0
UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuY2F5
eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoInp6ejovL3d3dy5jYnl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVl
c3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmNjeXl5Lnh4
eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJ6eno6Ly93d3cuY2R5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNl
YXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jZXl5eS54eHgvIiks
IHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgienp6Oi8vd3d3LmNmeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuY2d5eXkueHh4LyIpLCB7IENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVl
c3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmNoeXl5Lnh4
eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxl
Y3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0
ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cu
Y2l5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5
Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0p
OworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6
ejovL3d3dy5janl5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNT
U0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwg
bWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmNreXl5Lnh4eC8iKSwgeyB9KTsKKworICAg
IC8vICdkJyBpcyBpbiB0aGUgZmlyc3QgcmFuZ2Ugb2YgYm90aCBydWxlLiBUaGlzIHNlcmllcyBj
b3ZlciBvdmVybGFwcyBiZXR3ZWVuIHRoZSB0d28gcnVsZXMuCisgICAgdGVzdFJlcXVlc3Qoc2Vh
cmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmRneXl5Lnh4eC8iKSwg
eyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RS
ZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kZGd5
eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7
CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6
Oi8vd3d3LmRkaHl5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNT
U0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9j
a0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgienp6Oi8vd3d3LmRkaGh5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9u
VHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5E
b2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kZWd5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmRlaHl5eS54eHgvIiksIHsgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVz
dChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZGZneXl5Lnh4
eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJ6eno6Ly93d3cuZGZoeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChz
ZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZGp5eXkueHh4LyIp
LCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9y
IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
Inp6ejovL3d3dy5kZGp5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBl
OjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kZGpqeXl5Lnh4eC8iKSwgeyBDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKK30K
KworVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFF1YW50aWZpZWRPbmVPck1v
cmVSYW5nZXNDYXNlMTFBbmQxM0luR3JvdXBzKQoreworICAgIGF1dG8gc2VhcmNoQmFja2VuZCA9
IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2Vy
XCI6e1widXJsLWZpbHRlclwiOlwiKGZvbykqKFtjLWVdKSsoW2ctaV0rWVlZKVwifX0sIgorICAg
ICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9uZVwiLFwic2VsZWN0
b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGJhcikqW2It
ZF0rW2gtal0rWVlZXCJ9fV0iKTsKKworICAgIC8vIFRoZSBpbnRlcmVzdGluZyByYW5nZXMgb25s
eSBtYXRjaCBiZXR3ZWVuICdiJyBhbmQgJ2snLCBwbHVzIGEgZ2FwIGluICdmJy4KKyAgICB0ZXN0
UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWF5
eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoInp6ejovL3d3dy5hYnl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVl
c3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmFjeXl5Lnh4
eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJ6eno6Ly93d3cuYWR5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNl
YXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hZXl5eS54eHgvIiks
IHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgienp6Oi8vd3d3LmFmeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWd5eXkueHh4LyIpLCB7IH0p
OworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6
ejovL3d3dy5haHl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmFpeXl5Lnh4eC8iKSwgeyB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93
d3cuYWp5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5ha3l5eS54eHgvIiksIHsgfSk7CisKKyAgICAv
LyAnYicgaXMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgc2Vjb25kIHJ1bGUuCisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmJ5
eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoInp6ejovL3d3dy5iYXl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVl
c3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmJieXl5Lnh4
eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJ6eno6Ly93d3cuYmN5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNl
YXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5iZHl5eS54eHgvIiks
IHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgienp6Oi8vd3d3LmJleXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYmZ5eXkueHh4LyIpLCB7IH0p
OworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6
ejovL3d3dy5iZ3l5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmJoeXl5Lnh4eC8iKSwgeyBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0
ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cu
Yml5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5
Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoInp6ejovL3d3dy5ianl5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qo
c2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmJreXl5Lnh4eC8i
KSwgeyB9KTsKKworICAgIC8vICdjJyBpcyB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBmaXJz
dCBydWxlLCBhbmQgaXQgb3ZlcmxhcHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgc2Vjb25k
IHJ1bGUuCisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgienp6Oi8vd3d3LmN5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jYXl5eS54eHgvIiksIHsgfSk7
CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6
Oi8vd3d3LmNieXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuY2N5eXkueHh4LyIpLCB7IH0pOworICAg
IHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3
dy5jZHl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmNleXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0
UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuY2Z5
eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoInp6ejovL3d3dy5jZ3l5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuY2h5eXkueHh4LyIpLCB7IENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0
ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJj
aEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jaXl5eS54eHgvIiksIHsg
Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVl
c3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmNqeXl5Lnh4
eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxl
Y3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJ6eno6Ly93d3cuY2t5eXkueHh4LyIpLCB7IH0pOworCisgICAgLy8gJ2QnIGlzIGluIHRo
ZSBmaXJzdCByYW5nZSBvZiBib3RoIHJ1bGUuIFRoaXMgc2VyaWVzIGNvdmVyIG92ZXJsYXBzIGJl
dHdlZW4gdGhlIHR3byBydWxlcy4KKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZGd5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmRkZ3l5eS54eHgvIiksIHsgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVz
dChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZGRoeXl5Lnh4
eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxl
Y3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0
ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cu
ZGRoaHl5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3Bs
YXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQg
fSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
enp6Oi8vd3d3LmRlZ3l5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6
OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1l
bnRSZXF1ZXN0KCJ6eno6Ly93d3cuZGVoeXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6
QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kZmd5eXkueHh4LyIpLCB7IH0pOworICAg
IHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3
dy5kZmh5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kanl5eS54eHgvIiksIHsgQ29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJl
cXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmRkanl5
eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25l
U2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgienp6Oi8vd3d3LmRkamp5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvREZBTWluaW1pemVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9ERkFNaW5pbWl6ZXIuY3BwCmluZGV4IDNkNDBjYjAwNWI3NmJkMTdiZGYyZWUxMGE1MzU1YTlm
NzU1ZGIyNzguLmVlMzIxYjdmOWVhNzRkMGM2ZmVkYjg5ZDhjYjJjZjQ1ZWM3ZGNmN2YgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ERkFNaW5pbWl6ZXIuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ERkFNaW5pbWl6ZXIuY3Bw
CkBAIC04Myw3ICs4Myw3IEBAIFRFU1RfRihERkFNaW5pbWl6ZXJUZXN0LCBGYWxsYmFja1RyYW5z
aXRpb25zVG9PdGhlck5vZGVJblNhbWVHcm91cERvZXNOb3REaWZmZXJlCiAgICAgQ29udGVudEV4
dGVuc2lvbnM6OkRGQSBkZmEgPSBidWlsZERGQUZyb21QYXR0ZXJucyh7ICJeYWFjIiwgIl5hLmMi
LCAiXmIuYyJ9KTsKICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90Pig5KSwgY291bnRM
aXZlTm9kZXMoZGZhKSk7CiAgICAgZGZhLm1pbmltaXplKCk7Ci0gICAgRVhQRUNUX0VRKHN0YXRp
Y19jYXN0PHNpemVfdD4oNSksIGNvdW50TGl2ZU5vZGVzKGRmYSkpOworICAgIEVYUEVDVF9FUShz
dGF0aWNfY2FzdDxzaXplX3Q+KDQpLCBjb3VudExpdmVOb2RlcyhkZmEpKTsKIH0KIAogVEVTVF9G
KERGQU1pbmltaXplclRlc3QsIFNpbXBsZUZhbGxCYWNrVHJhbnNpdGlvbkRpZmZlcmVudGlhdG9y
MSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256078</attachid>
            <date>2015-07-02 23:19:22 -0700</date>
            <delta_ts>2015-07-03 19:02:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146575-20150702231828.patch</filename>
            <type>text/plain</type>
            <size>129964</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc3ZDdlMmJkOWE2ODNk
YjkyZWU2NTUzYTRiMmQ3YTA0OWRhODM3Ni4uZjE3ZDQxNTg4YTQ4OTA3MzhmYTUyY2ZlN2IwNGJl
MzcxMjQ4YzVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NyBAQAorMjAxNS0wNy0wMiAgQmVu
amFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQg
RXh0ZW5zaW9uc10gTWFrZSB0aGUgREZBIHRyYW5zaXRpb25zIHJhbmdlcyBpbnN0ZWFkIG9mIGNo
YXJhY3RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0NjU3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgREZBIGFuZCBjb2RlIHVzaW5nIHRoZSBERkEgdG8gdXNl
IHJhbmdlcworICAgICAgICB0byByZXByZXNlbnQgdGhlIHRyYW5zaXRpb25zIGJldHdlZW4gYW55
IHR3byBub2Rlcy4KKworICAgICAgICBUaGlzIHBhdGNoIGJ1aWxkcyBvbiB0b3Agb2YgdGhlIHRv
b2xzIGludHJvZHVjZWQgaW4gcjE4NjA3OS4KKworICAgICAgICBUaGUgREZBIHN0cnVjdHVyZSBp
cyBiYXNpY2FsbHkgdGhlIHNhbWUgYXMgSW1tdXRhYmxlTkZBIGJ1dCB3aXRob3V0CisgICAgICAg
IGFueSBlcHNpbG9uIHRyYW5zaXRpb25zLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNl
cyBhIHRyYW5zaXRpb24gaXRlcmF0b3IgdG8gbWFrZSB0aGUgREZBCisgICAgICAgIGNvbXBhdGli
bGUgd2l0aCB0aGUgZXhpc3RpbmcgYWxnb3JpdGhtcy4KKworICAgICAgICAtLS0KKworICAgICAg
ICBUaGUgREZBIGNvbWJpbmVyIGlzIHJlYnVpbHQgb24gdG9wIG9mIE11dGFibGVSYW5nZUxpc3Qu
IENvbWJpbmluZyB0aGUgdHJhbnNpdGlvbnMKKyAgICAgICAgb2YgdHdvIG5vZGVzIGlzIG9uZSBi
eSBtZXJnaW5nIHRoZSByYW5nZSBsaXN0IG9mIGVhY2ggbm90IGludG8gYSBjb21tb24KKyAgICAg
ICAgTXV0YWJsZVJhbmdlTGlzdC4KKyAgICAgICAgVGhlIGRhdGEgY29udmVydGVyIHRha2VzIGNh
cmUgb2YgY3JlYXRpbmcgdGhlIHNpZ25hdHVyZSBvZiB0aGUgY29tYmluYXRpb24uCisKKyAgICAg
ICAgVGhlIGNvZGUgZ290IHNpbXBsZXIgc2luY2UgTXV0YWJsZVJhbmdlTGlzdCBkb2VzIG1vc3Qg
b2YgdGhlIHdvcmsgbm93LiBJdCBpcyBhbHNvCisgICAgICAgIG11Y2ggZmFzdGVyLgorCisgICAg
ICAgIC0tLQorCisgICAgICAgIFRoZSBtaW5pbWl6ZXIgaXMgbW9yZSBpbnRlcnN0aW5nLgorCisg
ICAgICAgIFdpdGggdGhlIGN1cnJlbnQgYWxnb3JpdGhtLCB3ZSBjYW5ub3QgcmVzb2x2ZSBvdmVy
bGFwcyBiZXR3ZWVuIHJhbmdlcy4gT24gdGhlIG90aGVyCisgICAgICAgIGhhbmQsIHRoZSBtaW5p
bWl6ZXIgZG9lcyBub3QgY2FyZSBhYm91dCB0aGUgc3ltYm9sIG9mIHRoZSB0cmFuc2l0aW9ucyBp
ZiB3ZSBhcmUgY2FyZWZ1bAorICAgICAgICB0byBwYXJ0aXRpb24gdHJhbnNpdGlvbnMgb2YgdGhl
IHNhbWUgc3ltYm9sIHRvZ2V0aGVyLgorCisgICAgICAgIFdoYXQgSSBkaWQgd2FzIHRvIHR1cm4g
dGhlIG1pbmltaXplciBpbnRvIGEgcHVyZSB0cmFuc2l0aW9uIGJhc2VkIG9uZSwgQlVUIGVhY2gK
KyAgICAgICAgInN5bWJvbCIgaXMgYWN0dWFsbHkgYW4gdW5icmVha2FibGUgcmFuZ2UuCisKKyAg
ICAgICAgVGhlIGZpcnN0IHN0ZXAgaXMgdG8gZ28gb3ZlciBhbGwgdGhlIHRyYW5zaXRpb25zIG9m
IGFsbCB0aGUgbm9kZXMgYW5kIGZpbmQgdGhlIGxhcmdlc3QKKyAgICAgICAgcmFuZ2VzIHN1Y2gg
dGhhdCB0aGUgYWxwaGFiZXQgb2YgaW50ZXJlc3QgaXMgY292ZXJlZCBidXQgdGhlcmUgaXMgbm90
IGEgc2luZ2xlIGludGVyc2VjdGlvbgorICAgICAgICBiZXR3ZWVuIGFueSB0d28gbm9kZXMgKHdo
YXQgSSBjYWxsZWQgInNpbmd1bGFyIHRyYW5zaXRpb25zIiBpbiB0aGUgY29kZSkuIAorCisgICAg
ICAgIFRoaXMgY2FuIGJlIGRvbmUgZWZmaWNpZW50bHkgd2l0aCBNdXRhYmxlUmFuZ2VMaXN0Lgor
ICAgICAgICBBIGxpdHRsZSB0cmljayB0aGVyZSBpcyB0aGF0IEkgYWxzbyB1c2VkIHRoZSBjb252
ZXJ0ZXIgdG8gY291bnQgaG93IG1hbnkgcmVhbCB0cmFuc2l0aW9uCisgICAgICAgIG92ZXJhbGFw
cyBhbnkgc2luZ3VsYXIgdHJhbnNpdGlvbi4KKworICAgICAgICBUaG9zZSBzaW5ndWxhciB0cmFu
c2l0aW9ucyBiZWNvbWUgdGhlIGFscGhhYmV0IG9mIG91ciBtaW5pbWl6ZXIuIFRoZSAic3ltYm9s
IiBvZiBvdXIgYWxwaGFiZXQKKyAgICAgICAgaXMgc2ltcGx5IHRoZSBwb3NpdGlvbiBvZiB0aGUg
c2luZ3VsYXIgdHJhbnNpdGlvbiBpbiB0aGUgbGlzdC4KKworICAgICAgICBUaGUgcGFydGl0aW9u
IG9mIHRyYW5zaXRpb24gaXMgY3JlYXRlZCBieSBwb3B1bGF0aW5nIGVhY2ggc2V0IHdpdGggYWxs
IHRoZSB0cmFuc2l0aW9uIHRoYXQKKyAgICAgICAgb3ZlcmxhcHMgdGhlIHN5bWJvbHMuCisgICAg
ICAgIE5vdGUgdGhhdCBzaW5jZSB0aGUgcGFydGl0aW9uIGlzIGNyZWF0ZWQgb24gdGhlIGZseSwg
dGhlIFRyYW5zaXRpb24gc3RydWN0dXJlIHVzZWQgZm9yCisgICAgICAgIHJlcGFydGl0aW9uaW5n
IG9ubHkgY29udGFpbnMgdGhlIHNvdXJjZSBvZiB0aGUgdHJhbnNpdGlvbnMuCisKKyAgICAgICAg
T25jZSBvdXIgdHJhbnNpdGlvbiBwYXJpdGlvbiBoYXMgYmVlbiBjYXJlZnVseSBjcmVhdGVkLCB3
ZSBjYW4gY29tcGxldGVseSBmb3JnZXQgYWJvdXQKKyAgICAgICAgdGhlIHN5bWJvbHMgYW5kIG9u
bHkgd29yayB3aXRoIHN1YnNldHMuCisKKyAgICAgICAgU2luY2UgdGhlIHNpbmd1bGFyIHRyYW5z
aXRpb25zIGhhdmUgbm8gb3ZlcmxhcCAodW5saWtlIGZhbGxiYWNrIHRyYW5zaXRpb25zKSwgdGhp
cyBuZXcgbWluaW1pemVyCisgICAgICAgIHdpbGwgZmluZCB0aGUgbWluaW1pYWwgc29sdXRpb24g
Zm9yIHdlbGwgZm9ybWVkIGlucHV0LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBOjptZW1vcnlVc2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpwcmludFRyYW5zaXRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjphY3Rpb25zKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjp0cmFuc2l0
aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZB
Tm9kZTo6ZmFsbGJhY2tUcmFuc2l0aW9uRGVzdGluYXRpb24pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OmNoYW5nZUZhbGxiYWNrVHJhbnNp
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZB
Tm9kZTo6YWRkRmFsbGJhY2tUcmFuc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjpjb250YWluc1RyYW5zaXRpb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OmtpbGwpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQTo6ZGVidWdQ
cmludERvdCk6IERlbGV0ZWQuCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvREZBLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6Q29uc3RSYW5nZUl0
ZXJhdG9yOjpyYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZB
Tm9kZTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjp0YXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OlJhbmdlSXRlcmF0b3I6OnJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjpSYW5nZUl0ZXJhdG9yOjp0YXJn
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OlJhbmdl
SXRlcmF0b3I6OnJlc2V0VGFyZ2V0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFC
eXRlY29kZUNvbXBpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpERkFCeXRlY29kZUNvbXBpbGVyOjpyYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlQ29tcGlsZXI6Om5vZGVUcmFuc2l0aW9uc01heEJ5dGVj
b2RlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNv
ZGVDb21waWxlcjo6Y29tcGlsZU5vZGVUcmFuc2l0aW9ucyk6CisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvREZBQ29tYmluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OkRGQU1lcmdlcjo6VGFyZ2V0Q29udmVydGVyOjpjb252ZXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFNZXJnZXI6OlRhcmdldENvbnZlcnRlcjo6ZXh0
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFNZXJnZXI6OlRh
cmdldENvbnZlcnRlcjo6c2V0SGFsZlNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6REZBTWVyZ2VyOjptZXJnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6REZBTWVyZ2VyOjpnZXRPckNyZWF0ZUNvbWJpbmVkTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTWVyZ2VyOjpzZXRIYWxmU2lnbmF0
dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFN
ZXJnZXI6OnBvcHVsYXRlVHJhbnNpdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OkRGQU1lcmdlcjo6cG9wdWxhdGVGcm9tRmFsbGJhY2tUcmFuc2l0
aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZB
TWVyZ2VyOjpjcmVhdGVUcmFuc2l0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6REZBTWVyZ2VyOjpjcmVhdGVGYWxsYmFja1RyYW5zaXRpb25JZk5l
ZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvREZBTWluaW1pemVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFNaW5pbWl6ZXI6
Om1pbmltaXplKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFOb2RlLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6YWN0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6Y29udGFp
bnNUcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFO
b2RlOjpraWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2Rl
OjpjYW5Vc2VGYWxsYmFja1RyYW5zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkRGQU5vZGU6OmJlc3RGYWxsYmFja1RhcmdldCk6CisgICAgICAgICogY29udGVu
dGV4dGVuc2lvbnMvREZBTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OkNoYXJSYW5nZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6REZBTm9kZTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjpvcGVyYXRvciopOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OkNvbnN0UmFuZ2VJdGVyYXRvcjo6b3Bl
cmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6
Q29uc3RSYW5nZUl0ZXJhdG9yOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpERkFOb2RlOjpDb25zdFJhbmdlSXRlcmF0b3I6Om9wZXJhdG9yKyspOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OkNvbnN0UmFuZ2VJ
dGVyYXRvcjo6Zmlyc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRG
QU5vZGU6OkNvbnN0UmFuZ2VJdGVyYXRvcjo6bGFzdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjpkYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjpJdGVyYWJsZUNvbnN0UmFu
Z2U6OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2Rl
OjpJdGVyYWJsZUNvbnN0UmFuZ2U6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6REZBTm9kZTo6dHJhbnNpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkRGQU5vZGU6OlJhbmdlSXRlcmF0b3I6Om9wZXJhdG9yKik6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6UmFuZ2VJdGVyYXRvcjo6b3Bl
cmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6
UmFuZ2VJdGVyYXRvcjo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6REZBTm9kZTo6UmFuZ2VJdGVyYXRvcjo6b3BlcmF0b3IrKyk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6UmFuZ2VJdGVyYXRvcjo6Zmlyc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OlJhbmdlSXRl
cmF0b3I6Omxhc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5v
ZGU6OlJhbmdlSXRlcmF0b3I6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OkRGQU5vZGU6Okl0ZXJhYmxlUmFuZ2U6OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjpJdGVyYWJsZVJhbmdlOjplbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6Omhhc0ZhbGxiYWNrVHJhbnNp
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZB
Tm9kZTo6dHJhbnNpdGlvbnNMZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OnRyYW5zaXRpb25zU3RhcnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OnJlc2V0VHJhbnNpdGlv
bnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5v
ZGU6OnNldEhhc0ZhbGxiYWNrVHJhbnNpdGlvbldpdGhvdXRDaGFuZ2luZ0RGQSk6IERlbGV0ZWQu
CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZBLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBOjpDb25zdFJhbmdlSXRlcmF0
b3I6OmZpcnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFi
bGVORkE6OkNvbnN0UmFuZ2VJdGVyYXRvcjo6bGFzdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBOjpDb25zdFJhbmdlSXRlcmF0b3I6OmRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkltbXV0YWJsZU5GQTo6Q29uc3RS
YW5nZUl0ZXJhdG9yOjpyYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6SW1tdXRhYmxlTkZBOjpDb25zdFJhbmdlSXRlcmF0b3I6Om9wZXJhdG9yKik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBOjpDb25z
dFJhbmdlSXRlcmF0b3I6Om9wZXJhdG9yLT4pOiBEZWxldGVkLgorICAgICAgICAqIGNvbnRlbnRl
eHRlbnNpb25zL0ltbXV0YWJsZU5GQU5vZGVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXI6OkZha2VSYW5nZUl0ZXJh
dG9yOjpmaXJzdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SW1tdXRh
YmxlTkZBTm9kZUJ1aWxkZXI6OkZha2VSYW5nZUl0ZXJhdG9yOjpsYXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFibGVORkFOb2RlQnVpbGRlcjo6RmFrZVJh
bmdlSXRlcmF0b3I6Om9wZXJhdG9yKik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXI6OkZha2VSYW5nZUl0ZXJhdG9y
OjpvcGVyYXRvci0+KTogRGVsZXRlZC4KKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9NdXRh
YmxlUmFuZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpNdXRhYmxl
UmFuZ2U6OnNpemUpOiBEZWxldGVkLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL011dGFi
bGVSYW5nZUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpNdXRh
YmxlUmFuZ2VMaXN0OjpDb25zdEl0ZXJhdG9yOjpmaXJzdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6TXV0YWJsZVJhbmdlTGlzdDo6Q29uc3RJdGVyYXRvcjo6bGFzdCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6TXV0YWJsZVJhbmdlTGlzdDo6
Q29uc3RJdGVyYXRvcjo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6TXV0YWJsZVJhbmdlTGlzdDo6ZXh0ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpNdXRhYmxlUmFuZ2VMaXN0OjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpNdXRhYmxlUmFuZ2VMaXN0Ojppbml0aWFsaXplRnJvbSk6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6Ok5GQVRvREZBOjpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpjYW5Vc2VGYWxsYmFja1RyYW5zaXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmZpbmRCZXN0RmFsbGJhY2tUYXJn
ZXQpOiBEZWxldGVkLgorCiAyMDE1LTA2LTI5ICBNYXR0IFJhamNhICA8bXJhamNhQGFwcGxlLmNv
bT4KIAogICAgICAgICBNZWRpYVNlc3Npb246IHVzZSBhIEhhc2hTZXQgZm9yIHRoZSBjb2xsZWN0
aW9uIG9mIHBhcnRpY2lwYXRpbmcgZWxlbWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhNDg0Yzc5YmEyMDFkY2NjNjIxNTBi
YTcxYmY0OWQxMmEyMDIzZGNhLi5lY2UzMzQ3ZWE3MDBhZjIxNzFiZmFmMzZmNmUzNDA2NDczNzdi
NTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMDI5LDYgKzEwMjksNyBAQAogCQkyNkMxNUNGNzE4NTdFMTVFMDBGMTVDMDMg
LyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZDMTVD
RjUxODU3RTE1RDAwRjE1QzAzIC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUuaCAqLzsgfTsKIAkJMjZDMTdBM0UxNDkxRDJENDAwRDEyQkEy
IC8qIEZpbGVTeXN0ZW1JT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI2QzE3QTNDMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVtSU9TLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMjZDMTdBM0Yx
NDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1JT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkMxN0EzRDE0OTFEMkQ0MDBEMTJCQTIgLyogRmls
ZVN5c3RlbUlPUy5tbSAqLzsgfTsKKwkJMjZENEU4NDYxQjQyNTM5RDAwRTAzM0EyIC8qIERGQU5v
ZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZE
NEU4NDUxQjQyNTM5RDAwRTAzM0EyIC8qIERGQU5vZGUuY3BwICovOyB9OwogCQkyNkU5NDREODFB
QzRCMkREMDA3Qjg1QjUgLyogQ29tYmluZWRVUkxGaWx0ZXJzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RTk0NEQ0MUFDNEIyREQwMDdCODVCNSAv
KiBDb21iaW5lZFVSTEZpbHRlcnMuY3BwICovOyB9OwogCQkyNkU5NDREOTFBQzRCMkREMDA3Qjg1
QjUgLyogQ29tYmluZWRVUkxGaWx0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyNkU5NDRENTFBQzRCMkREMDA3Qjg1QjUgLyogQ29tYmluZWRVUkxG
aWx0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMjZFOTQ0REQxQUM0QjRFQTAwN0I4NUI1IC8qIFRlcm0uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RTk0NERDMUFDNEI0RUEwMDdCODVCNSAvKiBU
ZXJtLmggKi87IH07CkBAIC04MTc0LDYgKzgxNzUsNyBAQAogCQkyNkMxNUNGNTE4NTdFMTVEMDBG
MTVDMDMgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTI2QzE3QTNDMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVt
SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTeXN0ZW1JT1MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjZDMTdBM0QxNDkxRDJENDAwRDEyQkEyIC8q
IEZpbGVTeXN0ZW1JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBGaWxlU3lzdGVtSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNkQ0RTg0
NTFCNDI1MzlEMDBFMDMzQTIgLyogREZBTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBERkFOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MjZFOTQ0RDQxQUM0QjJERDAwN0I4NUI1IC8qIENvbWJpbmVkVVJMRmlsdGVycy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21iaW5lZFVSTEZpbHRlcnMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkU5NDRENTFBQzRCMkREMDA3Qjg1QjUgLyog
Q29tYmluZWRVUkxGaWx0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bWJpbmVkVVJMRmlsdGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkU5NDRE
QzFBQzRCNEVBMDA3Qjg1QjUgLyogVGVybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUZXJtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTY5NSw2ICsxNTY5
Nyw3IEBACiAJCQkJMjZBODA3ODMxQjE4Rjk3NzAwRTIxOUJFIC8qIERGQUNvbWJpbmVyLmggKi8s
CiAJCQkJMjZBNTE3RkIxQUI5MjIzODAwNjMzNURGIC8qIERGQU1pbmltaXplci5jcHAgKi8sCiAJ
CQkJMjZBNTE3RkMxQUI5MjIzODAwNjMzNURGIC8qIERGQU1pbmltaXplci5oICovLAorCQkJCTI2
RDRFODQ1MUI0MjUzOUQwMEUwMzNBMiAvKiBERkFOb2RlLmNwcCAqLywKIAkJCQkyNjc3MjVGOTFB
NUIzQUQ5MDAzQzI0REQgLyogREZBTm9kZS5oICovLAogCQkJCTI2Rjc1NkIyMUIzQjY2RjcwMDA1
REQ3OSAvKiBJbW11dGFibGVORkEuaCAqLywKIAkJCQkyNkY3NTZCNDFCM0I2OEYyMDAwNURENzkg
LyogSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaCAqLywKQEAgLTMwMjMyLDYgKzMwMjM1LDcgQEAK
IAkJCQlCMkExRjJBRDBDRUYwQUJGMDA0NDJGNkEgLyogU1ZHR2x5cGhFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTI0RDkxMkJEMTNDQTlBOTcwMEQyMTkxNSAvKiBTVkdHbHlwaFJlZkVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBMjkwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0dyYWRpZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyNkQ0RTg0NjFCNDI1
MzlEMDBFMDMzQTIgLyogREZBTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FCNTBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTY1MEZCRjJBMEQ5QUYwNDcwMDhGQzI5MiAvKiBTVkdIS2VybkVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjI1NTk5QTMwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ltYWdlLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvREZBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQS5jcHAKaW5k
ZXggMGVlMDRkOWMyY2JjYzlkNGNiMzBhYzMyYWE4MWQzNTMyZTM5MjRjZi4uZTU4YjdjNDRlMzJm
NDhiMWQ0MGY5ZGE2MzhmMjE2OWZiNzMzYzljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvREZBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ERkEuY3BwCkBAIC00Niw4OSArNDYsMTEgQEAgc2l6ZV90IERGQTo6bWVtb3J5VXNl
ZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNpemVvZihERkEpCiAgICAgICAgICsgYWN0aW9ucy5j
YXBhY2l0eSgpICogc2l6ZW9mKHVpbnQ2NF90KQotICAgICAgICArIHRyYW5zaXRpb25DaGFyYWN0
ZXJzLmNhcGFjaXR5KCkgKiBzaXplb2YodWludDhfdCkKKyAgICAgICAgKyB0cmFuc2l0aW9uUmFu
Z2VzLmNhcGFjaXR5KCkgKiBzaXplb2YoQ2hhclJhbmdlKQogICAgICAgICArIHRyYW5zaXRpb25E
ZXN0aW5hdGlvbnMuY2FwYWNpdHkoKSAqIHNpemVvZih1aW50MzJfdCkKICAgICAgICAgKyBub2Rl
cy5jYXBhY2l0eSgpICogc2l6ZW9mKERGQU5vZGUpOwogfQogCi0vLyBGSVhNRTogTWFrZSBERkFO
b2RlLmNwcC4KLVZlY3Rvcjx1aW50NjRfdD4gREZBTm9kZTo6YWN0aW9ucyhjb25zdCBERkEmIGRm
YSkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogVXNlIGl0ZXJhdG9ycyBpbnN0ZWFkIG9mIGNvcHlp
bmcgdGhlIFZlY3RvciBlbGVtZW50cy4KLSAgICBWZWN0b3I8dWludDY0X3Q+IHZlY3RvcjsKLSAg
ICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2FjdGlvbnNMZW5ndGgpOwotICAgIGZv
ciAodWludDMyX3QgaSA9IG1fYWN0aW9uc1N0YXJ0OyBpIDwgbV9hY3Rpb25zU3RhcnQgKyBtX2Fj
dGlvbnNMZW5ndGg7ICsraSkKLSAgICAgICAgdmVjdG9yLnVuY2hlY2tlZEFwcGVuZChkZmEuYWN0
aW9uc1tpXSk7Ci0gICAgcmV0dXJuIHZlY3RvcjsKLX0KLSAgICAKLVZlY3RvcjxzdGQ6OnBhaXI8
dWludDhfdCwgdWludDMyX3Q+PiBERkFOb2RlOjp0cmFuc2l0aW9ucyhjb25zdCBERkEmIGRmYSkg
Y29uc3QKLXsKLSAgICAvLyBGSVhNRTogVXNlIGl0ZXJhdG9ycyBpbnN0ZWFkIG9mIGNvcHlpbmcg
dGhlIFZlY3RvciBlbGVtZW50cy4KLSAgICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ4X3QsIHVpbnQz
Ml90Pj4gdmVjdG9yOwotICAgIHZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRyYW5zaXRp
b25zTGVuZ3RoKCkpOwotICAgIGZvciAodWludDMyX3QgaSA9IG1fdHJhbnNpdGlvbnNTdGFydDsg
aSA8IG1fdHJhbnNpdGlvbnNTdGFydCArIG1fdHJhbnNpdGlvbnNMZW5ndGg7ICsraSkKLSAgICAg
ICAgdmVjdG9yLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihkZmEudHJhbnNpdGlvbkNo
YXJhY3RlcnNbaV0sIGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zW2ldKSk7Ci0gICAgcmV0dXJu
IHZlY3RvcjsKLX0KLQotdWludDMyX3QgREZBTm9kZTo6ZmFsbGJhY2tUcmFuc2l0aW9uRGVzdGlu
YXRpb24oY29uc3QgREZBJiBkZmEpIGNvbnN0Ci17Ci0gICAgUkVMRUFTRV9BU1NFUlQoaGFzRmFs
bGJhY2tUcmFuc2l0aW9uKCkpOwotCi0gICAgLy8gSWYgdGhlcmUgaXMgYSBmYWxsYmFjayB0cmFu
c2l0aW9uLCBpdCBpcyBqdXN0IGFmdGVyIHRoZSBvdGhlciB0cmFuc2l0aW9ucyBhbmQgaGFzIGFu
IGludmFsaWQgQVNDSUkgY2hhcmFjdGVyIHRvIG1hcmsgaXQgYXMgYSBmYWxsYmFjayB0cmFuc2l0
aW9uLgotICAgIEFTU0VSVChkZmEudHJhbnNpdGlvbkNoYXJhY3RlcnNbbV90cmFuc2l0aW9uc1N0
YXJ0ICsgbV90cmFuc2l0aW9uc0xlbmd0aF0gPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90
Pjo6bWF4KCkpOwotICAgIHJldHVybiBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9uc1ttX3RyYW5z
aXRpb25zU3RhcnQgKyBtX3RyYW5zaXRpb25zTGVuZ3RoXTsKLX0KLQotdm9pZCBERkFOb2RlOjpj
aGFuZ2VGYWxsYmFja1RyYW5zaXRpb24oREZBJiBkZmEsIHVpbnQzMl90IG5ld0Rlc3RpbmF0aW9u
KQotewotICAgIFJFTEVBU0VfQVNTRVJUKGhhc0ZhbGxiYWNrVHJhbnNpdGlvbigpKTsKLSAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKGRmYS50cmFuc2l0aW9uQ2hhcmFjdGVyc1ttX3RyYW5zaXRpb25z
U3RhcnQgKyBtX3RyYW5zaXRpb25zTGVuZ3RoXSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4
X3Q+OjptYXgoKSwgIldoZW4gY2hhbmdpbmcgYSBmYWxsYmFjayB0cmFuc2l0aW9uLCB0aGUgZmFs
bGJhY2sgdHJhbnNpdGlvbiBzaG91bGQgYWxyZWFkeSBiZSBtYXJrZWQgYXMgc3VjaCIpOwotICAg
IGRmYS50cmFuc2l0aW9uQ2hhcmFjdGVyc1ttX3RyYW5zaXRpb25zU3RhcnQgKyBtX3RyYW5zaXRp
b25zTGVuZ3RoXSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDhfdD46Om1heCgpOwotICAgIGRm
YS50cmFuc2l0aW9uRGVzdGluYXRpb25zW21fdHJhbnNpdGlvbnNTdGFydCArIG1fdHJhbnNpdGlv
bnNMZW5ndGhdID0gbmV3RGVzdGluYXRpb247Ci19Ci0KLXZvaWQgREZBTm9kZTo6YWRkRmFsbGJh
Y2tUcmFuc2l0aW9uKERGQSYgZGZhLCB1aW50MzJfdCBkZXN0aW5hdGlvbikKLXsKLSAgICBSRUxF
QVNFX0FTU0VSVChkZmEudHJhbnNpdGlvbkNoYXJhY3RlcnMuc2l6ZSgpID09IGRmYS50cmFuc2l0
aW9uRGVzdGluYXRpb25zLnNpemUoKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdF
KGRmYS50cmFuc2l0aW9uQ2hhcmFjdGVycy5zaXplKCkgPT0gbV90cmFuc2l0aW9uc1N0YXJ0ICsg
bV90cmFuc2l0aW9uc0xlbmd0aCwgIkFkZGluZyBhIGZhbGxiYWNrIHRyYW5zaXRpb24gc2hvdWxk
IG9ubHkgaGFwcGVuIGlmIHRoZSBub2RlIGlzIGF0IHRoZSBlbmQiKTsKLSAgICBkZmEudHJhbnNp
dGlvbkNoYXJhY3RlcnMuYXBwZW5kKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDhfdD46Om1heCgp
KTsKLSAgICBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9ucy5hcHBlbmQoZGVzdGluYXRpb24pOwot
ICAgIEFTU0VSVCghKG1fZmxhZ3MgJiBIYXNGYWxsYmFja1RyYW5zaXRpb24pKTsKLSAgICBtX2Zs
YWdzIHw9IEhhc0ZhbGxiYWNrVHJhbnNpdGlvbjsKLX0KLQotYm9vbCBERkFOb2RlOjpjb250YWlu
c1RyYW5zaXRpb24odWludDhfdCB0cmFuc2l0aW9uLCBERkEmIGRmYSkKLXsKLSAgICAvLyBDYWxs
ZWQgZnJvbSBERkFNaW5pbWl6ZXIsIHRoaXMgbG9vcHMgdGhvdWdoIGEgbWF4aW11bSBvZiAxMjgg
dHJhbnNpdGlvbnMsIHNvIGl0J3Mgbm90IHRvbyBzbG93LgotICAgIEFTU0VSVChtX3RyYW5zaXRp
b25zTGVuZ3RoIDw9IDEyOCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbV90cmFuc2l0aW9uc1N0
YXJ0OyBpIDwgbV90cmFuc2l0aW9uc1N0YXJ0ICsgbV90cmFuc2l0aW9uc0xlbmd0aDsgKytpKSB7
Ci0gICAgICAgIGlmIChkZmEudHJhbnNpdGlvbkNoYXJhY3RlcnNbaV0gPT0gdHJhbnNpdGlvbikK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0g
ICAgCi12b2lkIERGQU5vZGU6OmtpbGwoREZBJiBkZmEpCi17Ci0gICAgQVNTRVJUKG1fZmxhZ3Mg
IT0gSXNLaWxsZWQpOwotICAgIG1fZmxhZ3MgPSBJc0tpbGxlZDsgLy8gS2lsbGVkIG5vZGVzIGRv
bid0IGhhdmUgYW55IG90aGVyIGZsYWdzLgotICAgIAotICAgIC8vIEludmFsaWRhdGUgdGhlIG5v
dy11bnVzZWQgbWVtb3J5IGluIHRoZSBERkEgdG8gbWFrZSBmaW5kaW5nIGJ1Z3MgZWFzaWVyLgot
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fdHJhbnNpdGlvbnNTdGFydDsgaSA8IG1fdHJhbnNpdGlv
bnNTdGFydCArIG1fdHJhbnNpdGlvbnNMZW5ndGg7ICsraSkgewotICAgICAgICBkZmEudHJhbnNp
dGlvbkNoYXJhY3RlcnNbaV0gPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgoKTsK
LSAgICAgICAgZGZhLnRyYW5zaXRpb25EZXN0aW5hdGlvbnNbaV0gPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQzMl90Pjo6bWF4KCk7Ci0gICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IG1fYWN0
aW9uc1N0YXJ0OyBpIDwgbV9hY3Rpb25zU3RhcnQgKyBtX2FjdGlvbnNMZW5ndGg7ICsraSkKLSAg
ICAgICAgZGZhLmFjdGlvbnNbaV0gPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4
KCk7Ci0KLSAgICBtX2FjdGlvbnNTdGFydCA9IDA7Ci0gICAgbV9hY3Rpb25zTGVuZ3RoID0gMDsK
LSAgICBtX3RyYW5zaXRpb25zU3RhcnQgPSAwOwotICAgIG1fdHJhbnNpdGlvbnNMZW5ndGggPSAw
OwotfTsKLQogdm9pZCBERkE6Om1pbmltaXplKCkKIHsKICAgICBERkFNaW5pbWl6ZXI6Om1pbmlt
aXplKCp0aGlzKTsKQEAgLTE2NSwxNyArODcsMTggQEAgc3RhdGljIHZvaWQgcHJpbnRUcmFuc2l0
aW9ucyhjb25zdCBERkEmIGRmYSwgdW5zaWduZWQgc291cmNlTm9kZUlkKQogICAgIGNvbnN0IERG
QU5vZGUmIHNvdXJjZU5vZGUgPSBkZmEubm9kZXNbc291cmNlTm9kZUlkXTsKICAgICBhdXRvIHRy
YW5zaXRpb25zID0gc291cmNlTm9kZS50cmFuc2l0aW9ucyhkZmEpOwogCi0gICAgaWYgKHRyYW5z
aXRpb25zLmlzRW1wdHkoKSAmJiAhc291cmNlTm9kZS5oYXNGYWxsYmFja1RyYW5zaXRpb24oKSkK
KyAgICBpZiAodHJhbnNpdGlvbnMuYmVnaW4oKSA9PSB0cmFuc2l0aW9ucy5lbmQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgVmVjdG9yPHVpbnQxNl90PiwgRGVm
YXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVuc2lnbmVkPj4gdHJhbnNpdGlvbnNQZXJUYXJnZXQ7CiAKICAgICAvLyBGaXJzdCwgd2Ug
YnVpbGQgdGhlIGxpc3Qgb2YgdHJhbnNpdGlvbnMgY29taW5nIHRvIGVhY2ggdGFyZ2V0IG5vZGUu
CiAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFuc2l0aW9uIDogdHJhbnNpdGlvbnMpIHsKLSAgICAg
ICAgdW5zaWduZWQgdGFyZ2V0ID0gdHJhbnNpdGlvbi5zZWNvbmQ7CisgICAgICAgIHVuc2lnbmVk
IHRhcmdldCA9IHRyYW5zaXRpb24udGFyZ2V0KCk7CiAgICAgICAgIHRyYW5zaXRpb25zUGVyVGFy
Z2V0LmFkZCh0YXJnZXQsIFZlY3Rvcjx1aW50MTZfdD4oKSk7CiAKLSAgICAgICAgdHJhbnNpdGlv
bnNQZXJUYXJnZXQuZmluZCh0YXJnZXQpLT52YWx1ZS5hcHBlbmQodHJhbnNpdGlvbi5maXJzdCk7
CisgICAgICAgIGZvciAodW5zaWduZWQgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgdHJhbnNpdGlvbi5y
YW5nZSgpLnNpemUoKTsgKytvZmZzZXQpCisgICAgICAgICAgICB0cmFuc2l0aW9uc1BlclRhcmdl
dC5maW5kKHRhcmdldCktPnZhbHVlLmFwcGVuZCh0cmFuc2l0aW9uLmZpcnN0KCkgKyBvZmZzZXQp
OwogICAgIH0KIAogICAgIC8vIFRoZW4gd2UgZ28gb3ZlciBlYWNoIG9uZSBhbiBkaXNwbGF5IHRo
ZSByYW5nZXMgb25lIGJ5IG9uZS4KQEAgLTIwMiw5ICsxMjUsNiBAQCBzdGF0aWMgdm9pZCBwcmlu
dFRyYW5zaXRpb25zKGNvbnN0IERGQSYgZGZhLCB1bnNpZ25lZCBzb3VyY2VOb2RlSWQpCiAKICAg
ICAgICAgZGF0YUxvZ0YoIlwiXTtcbiIpOwogICAgIH0KLQotICAgIGlmIChzb3VyY2VOb2RlLmhh
c0ZhbGxiYWNrVHJhbnNpdGlvbigpKQotICAgICAgICBkYXRhTG9nRigiICAgICAgICAlZCAtPiAl
ZCBbbGFiZWw9XCJbZmFsbGJhY2tdXCJdO1xuIiwgc291cmNlTm9kZUlkLCBzb3VyY2VOb2RlLmZh
bGxiYWNrVHJhbnNpdGlvbkRlc3RpbmF0aW9uKGRmYSkpOwogfQogCiB2b2lkIERGQTo6ZGVidWdQ
cmludERvdCgpIGNvbnN0CkBAIC0yMjgsMTcgKzE0OCw2IEBAIHZvaWQgREZBOjpkZWJ1Z1ByaW50
RG90KCkgY29uc3QKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFZlY3Rvcjx1
bnNpZ25lZD4gY29ycmVzcG9uZGluZ05GQU5vZGVzID0gbm9kZXNbaV0uY29ycmVzcG9uZGluZ05G
QU5vZGVzOwotICAgICAgICBpZiAoIWNvcnJlc3BvbmRpbmdORkFOb2Rlcy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgIGRhdGFMb2dGKCI8QlIvPk5GQSBOb2RlczogIik7Ci0gICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGNvcnJlc3BvbmRpbmdERkFOb2RlSW5kZXggPSAwOyBjb3JyZXNwb25kaW5n
REZBTm9kZUluZGV4IDwgY29ycmVzcG9uZGluZ05GQU5vZGVzLnNpemUoKTsgKytjb3JyZXNwb25k
aW5nREZBTm9kZUluZGV4KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvcnJlc3BvbmRpbmdERkFO
b2RlSW5kZXgpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIsICIpOwotICAgICAgICAg
ICAgICAgIGRhdGFMb2dGKCIlZCIsIGNvcnJlc3BvbmRpbmdORkFOb2Rlc1tjb3JyZXNwb25kaW5n
REZBTm9kZUluZGV4XSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZGF0YUxv
Z0YoIj5dIik7Ci0KICAgICAgICAgaWYgKCFhY3Rpb25zLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IGRhdGFMb2dGKCIgW3NoYXBlPWRvdWJsZWNpcmNsZV0iKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9ERkEuaAppbmRleCAxODhkZmI0OWEwNmRhNzdhNjg0MmUyNTg3MmMxOTA3NmE5
Njg2NmFlLi45MTE3NTUzOTJjNWJiOGU0OWZiY2YxZjE0YTQxYzA0ODBjZmVkNDhkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkEuaApAQCAtNDcsMTQgKzQ3LDM5IEBAIHN0cnVj
dCBXRUJDT1JFX0VYUE9SVCBERkEgewogI2lmIENPTlRFTlRfRVhURU5TSU9OU19TVEFURV9NQUNI
SU5FX0RFQlVHR0lORwogICAgIHZvaWQgZGVidWdQcmludERvdCgpIGNvbnN0OwogI2VuZGlmCi0g
ICAgCisKKyAgICBWZWN0b3I8REZBTm9kZT4gbm9kZXM7CiAgICAgVmVjdG9yPHVpbnQ2NF90PiBh
Y3Rpb25zOwotICAgIFZlY3Rvcjx1aW50OF90PiB0cmFuc2l0aW9uQ2hhcmFjdGVyczsKKyAgICBW
ZWN0b3I8Q2hhclJhbmdlPiB0cmFuc2l0aW9uUmFuZ2VzOwogICAgIFZlY3Rvcjx1aW50MzJfdD4g
dHJhbnNpdGlvbkRlc3RpbmF0aW9uczsKLSAgICBWZWN0b3I8REZBTm9kZT4gbm9kZXM7CiAgICAg
dW5zaWduZWQgcm9vdCB7IDAgfTsKIH07CiAKK2lubGluZSBjb25zdCBDaGFyUmFuZ2UmIERGQU5v
ZGU6OkNvbnN0UmFuZ2VJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdAoreworICAgIHJldHVybiBkZmEu
dHJhbnNpdGlvblJhbmdlc1twb3NpdGlvbl07Cit9CisKK2lubGluZSB1aW50MzJfdCBERkFOb2Rl
OjpDb25zdFJhbmdlSXRlcmF0b3I6OnRhcmdldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRmYS50
cmFuc2l0aW9uRGVzdGluYXRpb25zW3Bvc2l0aW9uXTsKK30KKworaW5saW5lIGNvbnN0IENoYXJS
YW5nZSYgREZBTm9kZTo6UmFuZ2VJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdAoreworICAgIHJldHVy
biBkZmEudHJhbnNpdGlvblJhbmdlc1twb3NpdGlvbl07Cit9CisKK2lubGluZSB1aW50MzJfdCBE
RkFOb2RlOjpSYW5nZUl0ZXJhdG9yOjp0YXJnZXQoKSBjb25zdAoreworICAgIHJldHVybiBkZmEu
dHJhbnNpdGlvbkRlc3RpbmF0aW9uc1twb3NpdGlvbl07Cit9CisKK2lubGluZSB2b2lkIERGQU5v
ZGU6OlJhbmdlSXRlcmF0b3I6OnJlc2V0VGFyZ2V0KHVpbnQzMl90IG5ld1RhcmdldCkKK3sKKyAg
ICBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9uc1twb3NpdGlvbl0gPSBuZXdUYXJnZXQ7Cit9CisK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcAppbmRleCBlMGZkMTIw
MjQ3NmJmMDhhNGJjZDIyODlkMTUwOGEyZWYwNzYyYTRjLi4wNDZkZGRjYzk4YmI1NTNmNTFkYTg0
OGFiOWNkZGQ1NTJiMmZhMjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcApAQCAtMjA0LDEwICsyMDQsMTgg
QEAgVmVjdG9yPERGQUJ5dGVjb2RlQ29tcGlsZXI6OlJhbmdlPiBERkFCeXRlY29kZUNvbXBpbGVy
OjpyYW5nZXMoY29uc3QgREZBTm9kZSYgbm8KICAgICBtZW1zZXQoZGVzdGluYXRpb25zLCAweGZm
LCBzaXplb2YoZGVzdGluYXRpb25zKSk7CiAgICAgY29uc3QgdWludDMyX3Qgbm9EZXN0aW5hdGlv
biA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKIAotICAgIGZvciAoY29u
c3QgYXV0byYgcGFpciA6IG5vZGUudHJhbnNpdGlvbnMobV9kZmEpKSB7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKHBhaXIuZmlyc3QgPCBXVEZfQVJSQVlfTEVOR1RIKGRlc3RpbmF0aW9ucykpOwot
ICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRlc3RpbmF0aW9uc1twYWlyLmZpcnN0XSA9PSBu
b0Rlc3RpbmF0aW9uLCAiVHJhbnNpdGlvbnMgc2hvdWxkIGJlIHVuaXF1ZSIpOwotICAgICAgICBk
ZXN0aW5hdGlvbnNbcGFpci5maXJzdF0gPSBwYWlyLnNlY29uZDsKKyAgICBib29sIGNhblVzZUZh
bGxiYWNrVHJhbnNpdGlvbiA9IG5vZGUuY2FuVXNlRmFsbGJhY2tUcmFuc2l0aW9uKG1fZGZhKTsK
KyAgICB1aW50MzIgZmFsbGJhY2tUcmFuc2l0aW9uVGFyZ2V0ID0gc3RkOjpudW1lcmljX2xpbWl0
czx1aW50MzI+OjptYXgoKTsKKyAgICBpZiAoY2FuVXNlRmFsbGJhY2tUcmFuc2l0aW9uKQorICAg
ICAgICBmYWxsYmFja1RyYW5zaXRpb25UYXJnZXQgPSBub2RlLmJlc3RGYWxsYmFja1RhcmdldCht
X2RmYSk7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYW5zaXRpb24gOiBub2RlLnRyYW5zaXRp
b25zKG1fZGZhKSkgeworICAgICAgICB1aW50MzJfdCB0YXJnZXROb2RlSW5kZXggPSB0cmFuc2l0
aW9uLnRhcmdldCgpOworICAgICAgICBpZiAoY2FuVXNlRmFsbGJhY2tUcmFuc2l0aW9uICYmIGZh
bGxiYWNrVHJhbnNpdGlvblRhcmdldCA9PSB0YXJnZXROb2RlSW5kZXgpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBmb3IgKHVpbnQxNl90IGkgPSB0cmFuc2l0aW9uLnJhbmdlKCku
Zmlyc3Q7IGkgPD0gdHJhbnNpdGlvbi5yYW5nZSgpLmxhc3Q7ICsraSkKKyAgICAgICAgICAgIGRl
c3RpbmF0aW9uc1tpXSA9IHRhcmdldE5vZGVJbmRleDsKICAgICB9CiAKICAgICBWZWN0b3I8UmFu
Z2U+IHJhbmdlczsKQEAgLTIxNSw3ICsyMjMsNiBAQCBWZWN0b3I8REZBQnl0ZWNvZGVDb21waWxl
cjo6UmFuZ2U+IERGQUJ5dGVjb2RlQ29tcGlsZXI6OnJhbmdlcyhjb25zdCBERkFOb2RlJiBubwog
ICAgIGJvb2wgaGFzUmFuZ2VNaW4gPSBmYWxzZTsKICAgICBmb3IgKHVpbnQ4X3QgaSA9IDA7IGkg
PCAxMjg7IGkrKykgewogICAgICAgICBpZiAoaGFzUmFuZ2VNaW4pIHsKLSAgICAgICAgICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIShub2RlLmhhc0ZhbGxiYWNrVHJhbnNpdGlvbigpICYmIG5vZGUu
ZmFsbGJhY2tUcmFuc2l0aW9uRGVzdGluYXRpb24obV9kZmEpID09IGRlc3RpbmF0aW9uc1tyYW5n
ZU1pbl0pLCAiSW5kaXZpZHVhbCB0cmFuc2l0aW9ucyB0byB0aGUgZmFsbGJhY2sgdHJhbnNpdGlv
bnMgc2hvdWxkIGhhdmUgYmVlbiBlbGltaW5hdGVkIGJ5IHRoZSBvcHRpbWl6ZXIuIik7CiAgICAg
ICAgICAgICBpZiAoZGVzdGluYXRpb25zW2ldICE9IGRlc3RpbmF0aW9uc1tyYW5nZU1pbl0pIHsK
IAogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGVuZCBvZiBhIHJhbmdlLiBDaGVjayBp
ZiBpdCBjYW4gYmUgY2FzZSBpbnNlbnNpdGl2ZS4KQEAgLTI2MCw2ICsyNjcsNyBAQCBWZWN0b3I8
REZBQnl0ZWNvZGVDb21waWxlcjo6UmFuZ2U+IERGQUJ5dGVjb2RlQ29tcGlsZXI6OnJhbmdlcyhj
b25zdCBERkFOb2RlJiBubwogICAgICAgICAvLyBJZiBhIHJhbmdlIGdvZXMgdG8gMTI3LCB0aGVy
ZSB3aWxsIG5ldmVyIGJlIHZhbHVlcyBoaWdoZXIgdGhhbiBpdCwgc28gY2hlY2tpbmcgZm9yIGNh
c2UtaW5zZW5zaXRpdmUgcmFuZ2VzIHdvdWxkIGFsd2F5cyBmYWlsLgogICAgICAgICByYW5nZXMu
YXBwZW5kKFJhbmdlKHJhbmdlTWluLCAxMjcsIGRlc3RpbmF0aW9uc1tyYW5nZU1pbl0sIHRydWUp
KTsKICAgICB9CisKICAgICByZXR1cm4gcmFuZ2VzOwogfQogICAgIApAQCAtMjg5LDcgKzI5Nyw3
IEBAIHVuc2lnbmVkIERGQUJ5dGVjb2RlQ29tcGlsZXI6Om5vZGVUcmFuc2l0aW9uc01heEJ5dGVj
b2RlU2l6ZShjb25zdCBERkFOb2RlJiBub2RlCiAgICAgdW5zaWduZWQgc2l6ZSA9IDA7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiByYW5nZSA6IHJhbmdlcyhub2RlKSkKICAgICAgICAgc2l6ZSArPSBj
aGVja0ZvclJhbmdlTWF4Qnl0ZWNvZGVTaXplKHJhbmdlKTsKLSAgICBpZiAobm9kZS5oYXNGYWxs
YmFja1RyYW5zaXRpb24oKSkKKyAgICBpZiAobm9kZS5jYW5Vc2VGYWxsYmFja1RyYW5zaXRpb24o
bV9kZmEpKQogICAgICAgICBzaXplICs9IHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uOjpK
dW1wKSArIHNpemVvZih1aW50MzJfdCk7CiAgICAgZWxzZQogICAgICAgICBzaXplICs9IGluc3Ry
dWN0aW9uU2l6ZVdpdGhBcmd1bWVudHMoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVybWluYXRl
KTsKQEAgLTMwMyw4ICszMTEsOCBAQCB2b2lkIERGQUJ5dGVjb2RlQ29tcGlsZXI6OmNvbXBpbGVO
b2RlVHJhbnNpdGlvbnModWludDMyX3Qgbm9kZUluZGV4KQogICAgIAogICAgIGZvciAoY29uc3Qg
YXV0byYgcmFuZ2UgOiByYW5nZXMobm9kZSkpCiAgICAgICAgIGNvbXBpbGVDaGVja0ZvclJhbmdl
KG5vZGVJbmRleCwgcmFuZ2UpOwotICAgIGlmIChub2RlLmhhc0ZhbGxiYWNrVHJhbnNpdGlvbigp
KQotICAgICAgICBlbWl0SnVtcChub2RlSW5kZXgsIG5vZGUuZmFsbGJhY2tUcmFuc2l0aW9uRGVz
dGluYXRpb24obV9kZmEpKTsKKyAgICBpZiAobm9kZS5jYW5Vc2VGYWxsYmFja1RyYW5zaXRpb24o
bV9kZmEpKQorICAgICAgICBlbWl0SnVtcChub2RlSW5kZXgsIG5vZGUuYmVzdEZhbGxiYWNrVGFy
Z2V0KG1fZGZhKSk7CiAgICAgZWxzZQogICAgICAgICBlbWl0VGVybWluYXRlKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUNvbWJpbmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUNvbWJpbmVyLmNwcAppbmRleCAz
NzUzYzZmYzExNjkyNTU1MDNkOGI1ZmZkZjMxMGIwMmZlMzkxMDcxLi42MDk2YzNiMGYyMzg1MTYw
NWE5YWE1ZWEwNTE4ODQ5YjA1ODVmNWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9ERkFDb21iaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvREZBQ29tYmluZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiREZBQ29tYmluZXIuaCIKIAorI2luY2x1ZGUgIk11dGFibGVS
YW5nZUxpc3QuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAKQEAgLTM0LDYgKzM1LDM1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFj
ZSBDb250ZW50RXh0ZW5zaW9ucyB7CiAKIGNsYXNzIERGQU1lcmdlciB7CisgICAgdHlwZWRlZiBN
dXRhYmxlUmFuZ2VMaXN0PGNoYXIsIHVpbnQ2NF90LCAxMjg+IENvbWJpbmVkVHJhbnNpdGlvbnNN
dXRhYmxlUmFuZ2VMaXN0OworCisgICAgZW51bSBjbGFzcyBXaGljaERGQSB7CisgICAgICAgIEEs
CisgICAgICAgIEIKKyAgICB9OworCisgICAgdGVtcGxhdGU8V2hpY2hERkEgd2hpY2hERkE+Cisg
ICAgc3RydWN0IFRhcmdldENvbnZlcnRlciB7CisgICAgICAgIHVpbnQ2NF90IGNvbnZlcnQodWlu
dDMyX3QgdGFyZ2V0KQorICAgICAgICB7CisgICAgICAgICAgICB1aW50NjRfdCB2YWx1ZSA9IDB4
ZmZmZmZmZmZmZmZmZmZmZjsKKyAgICAgICAgICAgIGV4dGVuZCh2YWx1ZSwgdGFyZ2V0KTsKKyAg
ICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZXh0ZW5k
KHVpbnQ2NF90JiBkZXN0aW5hdGlvbiwgdWludDMyX3QgdGFyZ2V0KQorICAgICAgICB7CisgICAg
ICAgICAgICBzZXRIYWxmU2lnbmF0dXJlKGRlc3RpbmF0aW9uLCB0YXJnZXQpOworICAgICAgICB9
CisgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCBzZXRIYWxmU2lnbmF0dXJlKHVpbnQ2NF90JiBz
aWduYXR1cmUsIHVpbnQzMl90IHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25l
ZCBzaGlmdEFtb3VudCA9ICh3aGljaERGQSA9PSBXaGljaERGQTo6QSkgPyAzMiA6IDA7CisgICAg
ICAgICAgICB1aW50NjRfdCBtYXNrID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDB4ZmZmZmZmZmYp
IDw8ICgzMiAtIHNoaWZ0QW1vdW50KTsKKyAgICAgICAgICAgIHNpZ25hdHVyZSA9IChzaWduYXR1
cmUgJiBtYXNrKSB8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1ZSkgPDwgc2hpZnRBbW91bnQ7
CisgICAgICAgIH0KKyAgICB9OworCiBwdWJsaWM6CiAgICAgREZBTWVyZ2VyKGNvbnN0IERGQSYg
YSwgY29uc3QgREZBJiBiKQogICAgICAgICA6IG1fZGZhQShhKQpAQCAtNDksMzIgKzc5LDQwIEBA
IHB1YmxpYzoKICAgICAgICAgdWludDY0X3Qgcm9vdFNpZ25hdHVyZSA9IHNpZ25hdHVyZUZvcklu
ZGljZXMobV9kZmFBLnJvb3QsIG1fZGZhQi5yb290KTsKICAgICAgICAgZ2V0T3JDcmVhdGVDb21i
aW5lZE5vZGUocm9vdFNpZ25hdHVyZSk7CiAKKyAgICAgICAgQ29tYmluZWRUcmFuc2l0aW9uc011
dGFibGVSYW5nZUxpc3QgY29tYmluZWRUcmFuc2l0aW9uczsKICAgICAgICAgd2hpbGUgKCFtX3Vu
cHJvY2Vzc2VkTm9kZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBtZW1zZXQobV90cmFuc2l0
aW9uVGFyZ2V0cywgMHhmZiwgc2l6ZW9mKG1fdHJhbnNpdGlvblRhcmdldHMpKTsKKyAgICAgICAg
ICAgIGNvbWJpbmVkVHJhbnNpdGlvbnMuY2xlYXIoKTsKIAogICAgICAgICAgICAgdWludDY0X3Qg
dW5wcm9jZXNzZWROb2RlID0gbV91bnByb2Nlc3NlZE5vZGVzLnRha2VMYXN0KCk7CiAKLSAgICAg
ICAgICAgIC8vIFdlIGNhbm5vdCBjYWNoZSB0aGUgc291cmNlIG5vZGUgaXRzZWxmIHNpbmNlIHdl
IG1vZGlmeSB0aGUgbWFjaGluZS4gV2Ugb25seSBtYW5pcHVsYXRlIHRoZSBJRHMuCi0gICAgICAg
ICAgICB1aW50MzJfdCBzb3VyY2VOb2RlSWQgPSBtX25vZGVNYXBwaW5nLmdldCh1bnByb2Nlc3Nl
ZE5vZGUpOwotCi0gICAgICAgICAgICAvLyBQb3B1bGF0ZSB0aGUgdW5pcXVlIHRyYW5zaXRpb25z
LgogICAgICAgICAgICAgdWludDMyX3QgaW5kZXhBID0gZXh0cmFjdEluZGV4QSh1bnByb2Nlc3Nl
ZE5vZGUpOwotICAgICAgICAgICAgaWYgKGluZGV4QSAhPSBpbnZhbGlkTm9kZUluZGV4KQotICAg
ICAgICAgICAgICAgIHBvcHVsYXRlVHJhbnNpdGlvbnM8V2hpY2hERkE6OkE+KGluZGV4QSk7Cisg
ICAgICAgICAgICBpZiAoaW5kZXhBICE9IGludmFsaWROb2RlSW5kZXgpIHsKKyAgICAgICAgICAg
ICAgICBjb25zdCBERkFOb2RlJiBub2RlQSA9IG1fZGZhQS5ub2Rlc1tpbmRleEFdOworICAgICAg
ICAgICAgICAgIGF1dG8gdHJhbnNpdGlvbnNBID0gbm9kZUEudHJhbnNpdGlvbnMobV9kZmFBKTsK
KyAgICAgICAgICAgICAgICBUYXJnZXRDb252ZXJ0ZXI8V2hpY2hERkE6OkE+IGNvbnZlcnRlckE7
CisgICAgICAgICAgICAgICAgY29tYmluZWRUcmFuc2l0aW9ucy5leHRlbmQodHJhbnNpdGlvbnNB
LmJlZ2luKCksIHRyYW5zaXRpb25zQS5lbmQoKSwgY29udmVydGVyQSk7CisgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4QiA9IGV4dHJhY3RJbmRleEIodW5wcm9jZXNz
ZWROb2RlKTsKLSAgICAgICAgICAgIGlmIChpbmRleEIgIT0gaW52YWxpZE5vZGVJbmRleCkKLSAg
ICAgICAgICAgICAgICBwb3B1bGF0ZVRyYW5zaXRpb25zPFdoaWNoREZBOjpCPihpbmRleEIpOwot
Ci0gICAgICAgICAgICAvLyBTcHJlYWQgdGhlIGZhbGxiYWNrIHRyYW5zaXRpb25zIG92ZXIgdGhl
IHVuaXF1ZSB0cmFuc2l0aW9ucyBhbmQga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgZmFsbGJhY2sg
dHJhbnNpdGlvbi4KLSAgICAgICAgICAgIHVpbnQ2NF90IGZhbGxiYWNrVHJhbnNpdGlvblNpZ25h
dHVyZSA9IHNpZ25hdHVyZUZvckluZGljZXMoaW52YWxpZE5vZGVJbmRleCwgaW52YWxpZE5vZGVJ
bmRleCk7Ci0gICAgICAgICAgICBpZiAoaW5kZXhBICE9IGludmFsaWROb2RlSW5kZXgpCi0gICAg
ICAgICAgICAgICAgcG9wdWxhdGVGcm9tRmFsbGJhY2tUcmFuc2l0aW9uczxXaGljaERGQTo6QT4o
aW5kZXhBLCBmYWxsYmFja1RyYW5zaXRpb25TaWduYXR1cmUpOwotICAgICAgICAgICAgaWYgKGlu
ZGV4QiAhPSBpbnZhbGlkTm9kZUluZGV4KQotICAgICAgICAgICAgICAgIHBvcHVsYXRlRnJvbUZh
bGxiYWNrVHJhbnNpdGlvbnM8V2hpY2hERkE6OkI+KGluZGV4QiwgZmFsbGJhY2tUcmFuc2l0aW9u
U2lnbmF0dXJlKTsKLQotICAgICAgICAgICAgY3JlYXRlVHJhbnNpdGlvbnMoc291cmNlTm9kZUlk
KTsKLSAgICAgICAgICAgIGNyZWF0ZUZhbGxiYWNrVHJhbnNpdGlvbklmTmVlZGVkKHNvdXJjZU5v
ZGVJZCwgZmFsbGJhY2tUcmFuc2l0aW9uU2lnbmF0dXJlKTsKKyAgICAgICAgICAgIGlmIChpbmRl
eEIgIT0gaW52YWxpZE5vZGVJbmRleCkgeworICAgICAgICAgICAgICAgIGNvbnN0IERGQU5vZGUm
IG5vZGVCID0gbV9kZmFCLm5vZGVzW2luZGV4Ql07CisgICAgICAgICAgICAgICAgYXV0byB0cmFu
c2l0aW9uc0IgPSBub2RlQi50cmFuc2l0aW9ucyhtX2RmYUIpOworICAgICAgICAgICAgICAgIFRh
cmdldENvbnZlcnRlcjxXaGljaERGQTo6Qj4gY29udmVydGVyQjsKKyAgICAgICAgICAgICAgICBj
b21iaW5lZFRyYW5zaXRpb25zLmV4dGVuZCh0cmFuc2l0aW9uc0IuYmVnaW4oKSwgdHJhbnNpdGlv
bnNCLmVuZCgpLCBjb252ZXJ0ZXJCKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdW5z
aWduZWQgdHJhbnNpdGlvbnNTdGFydCA9IG1fb3V0cHV0LnRyYW5zaXRpb25SYW5nZXMuc2l6ZSgp
OworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiByYW5nZSA6IGNvbWJpbmVkVHJhbnNpdGlv
bnMpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXROb2RlSWQgPSBnZXRPckNyZWF0
ZUNvbWJpbmVkTm9kZShyYW5nZS5kYXRhKTsKKyAgICAgICAgICAgICAgICBtX291dHB1dC50cmFu
c2l0aW9uUmFuZ2VzLmFwcGVuZCh7IHJhbmdlLmZpcnN0LCByYW5nZS5sYXN0IH0pOworICAgICAg
ICAgICAgICAgIG1fb3V0cHV0LnRyYW5zaXRpb25EZXN0aW5hdGlvbnMuYXBwZW5kKHRhcmdldE5v
ZGVJZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB1bnNpZ25lZCB0cmFuc2l0aW9uc0Vu
ZCA9IG1fb3V0cHV0LnRyYW5zaXRpb25SYW5nZXMuc2l6ZSgpOworICAgICAgICAgICAgdW5zaWdu
ZWQgdHJhbnNpdGlvbnNMZW5ndGggPSB0cmFuc2l0aW9uc0VuZCAtIHRyYW5zaXRpb25zU3RhcnQ7
CisKKyAgICAgICAgICAgIHVpbnQzMl90IHNvdXJjZU5vZGVJZCA9IG1fbm9kZU1hcHBpbmcuZ2V0
KHVucHJvY2Vzc2VkTm9kZSk7CisgICAgICAgICAgICBERkFOb2RlJiBkZmFTb3VyY2VOb2RlID0g
bV9vdXRwdXQubm9kZXNbc291cmNlTm9kZUlkXTsKKyAgICAgICAgICAgIGRmYVNvdXJjZU5vZGUu
c2V0VHJhbnNpdGlvbnModHJhbnNpdGlvbnNTdGFydCwgc3RhdGljX2Nhc3Q8dWludDhfdD4odHJh
bnNpdGlvbnNMZW5ndGgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9vdXRwdXQ7CiAg
ICAgfQpAQCAtODIsMTEgKzEyMCw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdWludDMyX3Qg
aW52YWxpZE5vZGVJbmRleCA9IDB4ZmZmZmZmZmY7CiAKLSAgICBlbnVtIGNsYXNzIFdoaWNoREZB
IHsKLSAgICAgICAgQSwKLSAgICAgICAgQgotICAgIH07Ci0KICAgICBzdGF0aWMgdWludDY0X3Qg
c2lnbmF0dXJlRm9ySW5kaWNlcyh1aW50MzJfdCBhSW5kZXgsIHVpbnQzMl90IGJJbmRleCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYUluZGV4KSA8PCAzMiB8
IGJJbmRleDsKQEAgLTEyMiwxNCArMTU1LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB1aW50
MzJfdCBhY3Rpb25zU3RhcnQgPSBub2RlLmFjdGlvbnNTdGFydCgpOwogICAgICAgICAgICAgdWlu
dDMyX3QgYWN0aW9uc0VuZCA9IGFjdGlvbnNTdGFydCArIG5vZGUuYWN0aW9uc0xlbmd0aCgpOwog
ICAgICAgICAgICAgZm9yICh1aW50MzJfdCBpID0gYWN0aW9uc1N0YXJ0OyBpIDwgYWN0aW9uc0Vu
ZDsgKytpKQotICAgICAgICAgICAgYWN0aW9ucy5hZGQobV9kZmFBLmFjdGlvbnNbaV0pOworICAg
ICAgICAgICAgICAgIGFjdGlvbnMuYWRkKG1fZGZhQS5hY3Rpb25zW2ldKTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoaW5kZXhCICE9IGludmFsaWROb2RlSW5kZXgpIHsKICAgICAgICAgICAgIGNv
bnN0IERGQU5vZGUmIG5vZGUgPSBtX2RmYUIubm9kZXNbaW5kZXhCXTsKICAgICAgICAgICAgIHVp
bnQzMl90IGFjdGlvbnNTdGFydCA9IG5vZGUuYWN0aW9uc1N0YXJ0KCk7CiAgICAgICAgICAgICB1
aW50MzJfdCBhY3Rpb25zRW5kID0gYWN0aW9uc1N0YXJ0ICsgbm9kZS5hY3Rpb25zTGVuZ3RoKCk7
CiAgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSBhY3Rpb25zU3RhcnQ7IGkgPCBhY3Rpb25z
RW5kOyArK2kpCi0gICAgICAgICAgICBhY3Rpb25zLmFkZChtX2RmYUIuYWN0aW9uc1tpXSk7Cisg
ICAgICAgICAgICAgICAgYWN0aW9ucy5hZGQobV9kZmFCLmFjdGlvbnNbaV0pOwogICAgICAgICB9
CiAKICAgICAgICAgdWludDMyX3QgYWN0aW9uc1N0YXJ0ID0gbV9vdXRwdXQuYWN0aW9ucy5zaXpl
KCk7CkBAIC0xNDIsODcgKzE3NSwxMSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbmV3Tm9k
ZUluZGV4OwogICAgIH0KIAotICAgIHRlbXBsYXRlPFdoaWNoREZBIHdoaWNoREZBPgotICAgIHZv
aWQgc2V0SGFsZlNpZ25hdHVyZSh1aW50NjRfdCYgc2lnbmF0dXJlLCB1aW50MzJfdCB2YWx1ZSkK
LSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHNoaWZ0QW1vdW50ID0gKHdoaWNoREZBID09IFdoaWNo
REZBOjpBKSA/IDMyIDogMDsKLSAgICAgICAgdWludDY0X3QgbWFzayA9IHN0YXRpY19jYXN0PHVp
bnQ2NF90PigweGZmZmZmZmZmKSA8PCAoMzIgLSBzaGlmdEFtb3VudCk7Ci0gICAgICAgIHNpZ25h
dHVyZSA9IChzaWduYXR1cmUgJiBtYXNrKSB8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1ZSkg
PDwgc2hpZnRBbW91bnQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8V2hpY2hERkEgd2hpY2hERkE+
Ci0gICAgdm9pZCBwb3B1bGF0ZVRyYW5zaXRpb25zKHVpbnQzMl90IG5vZGVJbmRleCkKLSAgICB7
Ci0gICAgICAgIGNvbnN0IERGQSYgZGZhID0gKHdoaWNoREZBID09IFdoaWNoREZBOjpBKSA/IG1f
ZGZhQSA6IG1fZGZhQjsKLSAgICAgICAgY29uc3QgREZBTm9kZSYgbm9kZSA9IGRmYS5ub2Rlc1tu
b2RlSW5kZXhdOwotICAgICAgICB1aW50MzJfdCB0cmFuc2l0aW9uc1N0YXJ0ID0gbm9kZS50cmFu
c2l0aW9uc1N0YXJ0KCk7Ci0gICAgICAgIHVpbnQzMl90IHRyYW5zaXRpb25zRW5kID0gdHJhbnNp
dGlvbnNTdGFydCArIG5vZGUudHJhbnNpdGlvbnNMZW5ndGgoKTsKLQotICAgICAgICAvLyBFeHRy
YWN0IHRyYW5zaXRpb25zLgotICAgICAgICBmb3IgKHVpbnQzMl90IHRyYW5zaXRpb25JbmRleCA9
IHRyYW5zaXRpb25zU3RhcnQ7IHRyYW5zaXRpb25JbmRleCA8IHRyYW5zaXRpb25zRW5kOyArK3Ry
YW5zaXRpb25JbmRleCkgewotICAgICAgICAgICAgdWludDhfdCB0cmFuc2l0aW9uQ2hhcmFjdGVy
ID0gZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJzW3RyYW5zaXRpb25JbmRleF07Ci0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCh0cmFuc2l0aW9uQ2hhcmFjdGVyIDwgV1RGX0FSUkFZX0xFTkdUSCht
X3RyYW5zaXRpb25UYXJnZXRzKSk7Ci0KLSAgICAgICAgICAgIHVpbnQzMl90IHRyYW5zaXRpb25E
ZXN0aW5hdGlvbiA9IGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zW3RyYW5zaXRpb25JbmRleF07
Ci0gICAgICAgICAgICBzZXRIYWxmU2lnbmF0dXJlPHdoaWNoREZBPihtX3RyYW5zaXRpb25UYXJn
ZXRzW3RyYW5zaXRpb25DaGFyYWN0ZXJdLCB0cmFuc2l0aW9uRGVzdGluYXRpb24pOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8V2hpY2hERkEgd2hpY2hERkE+Ci0gICAgdm9pZCBw
b3B1bGF0ZUZyb21GYWxsYmFja1RyYW5zaXRpb25zKHVpbnQzMl90IG5vZGVJbmRleCwgdWludDY0
X3QmIGZhbGxiYWNrVHJhbnNpdGlvblNpZ25hdHVyZSkKLSAgICB7Ci0gICAgICAgIGNvbnN0IERG
QSYgZGZhID0gKHdoaWNoREZBID09IFdoaWNoREZBOjpBKSA/IG1fZGZhQSA6IG1fZGZhQjsKLSAg
ICAgICAgY29uc3QgREZBTm9kZSYgbm9kZSA9IGRmYS5ub2Rlc1tub2RlSW5kZXhdOwotICAgICAg
ICBpZiAoIW5vZGUuaGFzRmFsbGJhY2tUcmFuc2l0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgdWludDMyX3QgZmFsbGJhY2tUYXJnZXQgPSBub2RlLmZhbGxiYWNrVHJhbnNp
dGlvbkRlc3RpbmF0aW9uKGRmYSk7Ci0gICAgICAgIHNldEhhbGZTaWduYXR1cmU8d2hpY2hERkE+
KGZhbGxiYWNrVHJhbnNpdGlvblNpZ25hdHVyZSwgZmFsbGJhY2tUYXJnZXQpOwotCi0gICAgICAg
IC8vIFNwcmVhZCB0aGUgZmFsbGJhY2sgb3ZlciB0cmFuc2l0aW9ucyB3aGVyZSB0aGUgb3RoZXIg
aGFzIHNvbWV0aGluZyBhbmQgd2UgZG9uJ3QuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBXVEZfQVJSQVlfTEVOR1RIKG1fdHJhbnNpdGlvblRhcmdldHMpOyArK2kpIHsKLSAgICAg
ICAgICAgIHVpbnQ2NF90JiB0YXJnZXRTaWduYXR1cmUgPSBtX3RyYW5zaXRpb25UYXJnZXRzW2ld
OwotCi0gICAgICAgICAgICB1aW50MzJfdCBvdGhlclRhcmdldCA9ICh3aGljaERGQSA9PSBXaGlj
aERGQTo6QSkgPyBleHRyYWN0SW5kZXhCKHRhcmdldFNpZ25hdHVyZSkgOiBleHRyYWN0SW5kZXhB
KHRhcmdldFNpZ25hdHVyZSk7Ci0gICAgICAgICAgICB1aW50MzJfdCBzZWxmVGFyZ2V0ID0gKHdo
aWNoREZBID09IFdoaWNoREZBOjpBKSA/IGV4dHJhY3RJbmRleEEodGFyZ2V0U2lnbmF0dXJlKSA6
IGV4dHJhY3RJbmRleEIodGFyZ2V0U2lnbmF0dXJlKTsKLQotICAgICAgICAgICAgaWYgKG90aGVy
VGFyZ2V0ICE9IGludmFsaWROb2RlSW5kZXggJiYgc2VsZlRhcmdldCA9PSBpbnZhbGlkTm9kZUlu
ZGV4KQotICAgICAgICAgICAgICAgIHNldEhhbGZTaWduYXR1cmU8d2hpY2hERkE+KHRhcmdldFNp
Z25hdHVyZSwgZmFsbGJhY2tUYXJnZXQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBj
cmVhdGVUcmFuc2l0aW9ucyh1aW50MzJfdCBzb3VyY2VOb2RlSWQpCi0gICAgewotICAgICAgICAv
LyBDcmVhdGUgdHJhbnNpdGlvbnMgb3V0IG9mIHRoZSBzb3VyY2Ugbm9kZSwgY3JlYXRpbmcgbmV3
IG5vZGVzIGFzIG5lZWRlZC4KLSAgICAgICAgdWludDMyX3QgdHJhbnNpdGlvbnNTdGFydCA9IG1f
b3V0cHV0LnRyYW5zaXRpb25DaGFyYWN0ZXJzLnNpemUoKTsKLSAgICAgICAgZm9yICh1aW50OF90
IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChtX3RyYW5zaXRpb25UYXJnZXRzKTsgKytpKSB7
Ci0gICAgICAgICAgICB1aW50NjRfdCBzaWduYXR1cmUgPSBtX3RyYW5zaXRpb25UYXJnZXRzW2ld
OwotICAgICAgICAgICAgaWYgKHNpZ25hdHVyZSA9PSBzaWduYXR1cmVGb3JJbmRpY2VzKGludmFs
aWROb2RlSW5kZXgsIGludmFsaWROb2RlSW5kZXgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgdWludDMyX3Qgbm9kZUlkID0gZ2V0T3JDcmVhdGVDb21iaW5lZE5vZGUo
c2lnbmF0dXJlKTsKLSAgICAgICAgICAgIG1fb3V0cHV0LnRyYW5zaXRpb25DaGFyYWN0ZXJzLmFw
cGVuZChpKTsKLSAgICAgICAgICAgIG1fb3V0cHV0LnRyYW5zaXRpb25EZXN0aW5hdGlvbnMuYXBw
ZW5kKG5vZGVJZCk7Ci0gICAgICAgIH0KLSAgICAgICAgdWludDMyX3QgdHJhbnNpdGlvbnNFbmQg
PSBtX291dHB1dC50cmFuc2l0aW9uQ2hhcmFjdGVycy5zaXplKCk7Ci0gICAgICAgIHVpbnQ4X3Qg
dHJhbnNpdGlvbnNMZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50OF90Pih0cmFuc2l0aW9uc0VuZCAt
IHRyYW5zaXRpb25zU3RhcnQpOwotCi0gICAgICAgIG1fb3V0cHV0Lm5vZGVzW3NvdXJjZU5vZGVJ
ZF0uc2V0VHJhbnNpdGlvbnModHJhbnNpdGlvbnNTdGFydCwgdHJhbnNpdGlvbnNMZW5ndGgpOwot
ICAgIH0KLQotICAgIHZvaWQgY3JlYXRlRmFsbGJhY2tUcmFuc2l0aW9uSWZOZWVkZWQodWludDMy
X3Qgc291cmNlTm9kZUlkLCB1aW50NjRfdCBmYWxsYmFja1RyYW5zaXRpb25TaWduYXR1cmUpCi0g
ICAgewotICAgICAgICBpZiAoZmFsbGJhY2tUcmFuc2l0aW9uU2lnbmF0dXJlICE9IHNpZ25hdHVy
ZUZvckluZGljZXMoaW52YWxpZE5vZGVJbmRleCwgaW52YWxpZE5vZGVJbmRleCkpIHsKLSAgICAg
ICAgICAgIHVpbnQzMl90IG5vZGVJZCA9IGdldE9yQ3JlYXRlQ29tYmluZWROb2RlKGZhbGxiYWNr
VHJhbnNpdGlvblNpZ25hdHVyZSk7Ci0gICAgICAgICAgICBtX291dHB1dC5ub2Rlc1tzb3VyY2VO
b2RlSWRdLmFkZEZhbGxiYWNrVHJhbnNpdGlvbihtX291dHB1dCwgbm9kZUlkKTsKLSAgICAgICAg
fQotICAgIH0KLQogICAgIGNvbnN0IERGQSYgbV9kZmFBOwogICAgIGNvbnN0IERGQSYgbV9kZmFC
OwogICAgIERGQSBtX291dHB1dDsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCB1aW50MzJfdCwgRGVm
YXVsdEhhc2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVpbnQ2NF90Pj4gbV9ub2RlTWFwcGluZzsKICAgICBWZWN0b3I8dWludDY0X3Q+IG1fdW5w
cm9jZXNzZWROb2RlczsKLSAgICB1aW50NjRfdCBtX3RyYW5zaXRpb25UYXJnZXRzWzEyOF07CiB9
OwogCiB2b2lkIERGQUNvbWJpbmVyOjpjb21iaW5lREZBcyh1bnNpZ25lZCBtaW5pbXVtU2l6ZSwg
c3RkOjpmdW5jdGlvbjx2b2lkKERGQSYmKT4gaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQU1pbmltaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFNaW5pbWl6ZXIuY3BwCmluZGV4IGQwYTEyMTcyZWZiYjc0
MmU4Y2YwYzk1OTYyODk1MWI3YTgxNzNmZTQuLmIyMWNhMzU2YTljNzFlZmYxODhkNzdjY2M0OGM2
OTU2YzgyODE5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0RGQU1pbmltaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
REZBTWluaW1pemVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiREZBLmgiCiAj
aW5jbHVkZSAiREZBTm9kZS5oIgorI2luY2x1ZGUgIk11dGFibGVSYW5nZUxpc3QuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1N0cmluZ0hhc2hlci5oPgpAQCAtNDAsNzkgKzQxLDMyIEBAIG5hbWVzcGFjZSBDb250ZW50
RXh0ZW5zaW9ucyB7CiAKIG5hbWVzcGFjZSB7CiAKLS8vIHNpbXBsaWZ5VHJhbnNpdGlvbnMoKSB0
cmllcyB0byBjb2xsYXBzZSBpbmRpdmlkdWFsIHRyYW5zaXRpb25zIGludG8gZmFsbGJhY2sgdHJh
bnNpdGlvbnMuCi0vLyBBZnRlciBzaW1wbGlmeVRyYW5zaXRpb25zKCksIHlvdSBjYW4gYWxzbyBt
YWtlIHRoZSBhc3N1bXB0aW9uIHRoYXQgYSBmYWxsYmFjayB0cmFuc2l0aW9uIHRhcmdldCB3aWxs
IG5ldmVyIGJlCi0vLyBhbHNvIHRoZSB0YXJnZXQgb2YgYW4gaW5kaXZpZHVhbCB0cmFuc2l0aW9u
Lgotc3RhdGljIHZvaWQgc2ltcGxpZnlUcmFuc2l0aW9ucyhERkEmIGRmYSkKK3RlbXBsYXRlPHR5
cGVuYW1lIFZlY3RvclR5cGUsIHR5cGVuYW1lIEl0ZXJhYmxlLCB0eXBlbmFtZSBGdW5jdGlvbj4K
K3N0YXRpYyBpbmxpbmUgdm9pZCBpdGVyYXRlSW50ZXJzZWN0aW9ucyhjb25zdCBWZWN0b3JUeXBl
JiBzaW5ndWxhclRyYW5zaXRpb25zRmlyc3RzLCBjb25zdCBJdGVyYWJsZSYgaXRlcmFibGVUcmFu
c2l0aW9uTGlzdCwgY29uc3QgRnVuY3Rpb24mIGludGVyc2VjdGlvbkhhbmRsZXIpCiB7Ci0gICAg
Zm9yIChERkFOb2RlJiBkZmFOb2RlIDogZGZhLm5vZGVzKSB7Ci0gICAgICAgIGJvb2wgYWRkaW5n
RmFsbGJhY2sgPSBmYWxzZTsKLSAgICAgICAgdWludDMyX3QgbmV3RmFsbGJhY2tEZXN0aW5hdGlv
biA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKLSAgICAgICAgaWYgKCFk
ZmFOb2RlLmhhc0ZhbGxiYWNrVHJhbnNpdGlvbigpCi0gICAgICAgICAgICAmJiAoKGRmYU5vZGUu
dHJhbnNpdGlvbnNMZW5ndGgoKSA9PSAxMjYgJiYgIWRmYU5vZGUuY29udGFpbnNUcmFuc2l0aW9u
KDAsIGRmYSkpCi0gICAgICAgICAgICAgICAgfHwgKGRmYU5vZGUudHJhbnNpdGlvbnNMZW5ndGgo
KSA9PSAxMjcgJiYgZGZhTm9kZS5jb250YWluc1RyYW5zaXRpb24oMCwgZGZhKSkpKSB7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBiZXN0VGFyZ2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpOwotICAgICAgICAgICAgdW5zaWduZWQgYmVzdFRhcmdldFNjb3JlID0gMDsKLSAg
ICAgICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25l
ZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiB0
YXJnZXRIaXN0b2dyYW07Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYW5zaXRpb24g
OiBkZmFOb2RlLnRyYW5zaXRpb25zKGRmYSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXRyYW5z
aXRpb24uZmlyc3QpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAg
ICAgICAgdW5zaWduZWQgdHJhbnNpdGlvblRhcmdldCA9IHRyYW5zaXRpb24uc2Vjb25kOwotICAg
ICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gdGFyZ2V0SGlzdG9ncmFtLmFkZCh0cmFuc2l0
aW9uVGFyZ2V0LCAxKTsKLSAgICAgICAgICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5
KQotICAgICAgICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKys7Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA+IGJlc3RUYXJnZXRT
Y29yZSkgewotICAgICAgICAgICAgICAgICAgICBiZXN0VGFyZ2V0U2NvcmUgPSBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlOwotICAgICAgICAgICAgICAgICAgICBiZXN0VGFyZ2V0ID0gdHJhbnNp
dGlvblRhcmdldDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKGJlc3RUYXJnZXRTY29yZSwgIlRoZXJlIHNob3VsZCBiZSBh
dCBsZWFzdCBvbmUgdmFsaWQgdGFyZ2V0IHNpbmNlIGhhdmluZyB0cmFuc2l0aW9ucyBpcyBhIHBy
ZWNvbmRpdGlvbiB0byBlbnRlciB0aGlzIHBhdGguIik7Ci0KLSAgICAgICAgICAgIG5ld0ZhbGxi
YWNrRGVzdGluYXRpb24gPSBiZXN0VGFyZ2V0OwotICAgICAgICAgICAgYWRkaW5nRmFsbGJhY2sg
PSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBVc2UgdGhlIHNhbWUgbG9j
YXRpb24gdG8gd3JpdGUgbmV3IHRyYW5zaXRpb25zIHBvc3NpYmx5IGZvbGxvd2VkIGJ5IHVudXNl
ZCBtZW1vcnkuCi0gICAgICAgIC8vIFdlIGNhbiBkbyB0aGlzIGJlY2F1c2Ugd2UgYXJlIGFsd2F5
cyBkZWNyZWFzaW5nIHRoZSBhbW91bnQgb2YgbWVtb3J5IHVzZWQuCi0gICAgICAgIC8vIFdlIHdp
bGwgcHJvYmFibHkgbmVlZCBzb21ldGhpbmcgbGlrZSBzZXRIYXNGYWxsYmFja1RyYW5zaXRpb25X
aXRob3V0Q2hhbmdpbmdERkEgdG8gZG8gdGhhdC4KLQotICAgICAgICB1bnNpZ25lZCBvbGRGYWxs
YmFja1RyYW5zaXRpb24gPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7Ci0g
ICAgICAgIGJvb2wgaGFkRmFsbGJhY2tUcmFuc2l0aW9uID0gZGZhTm9kZS5oYXNGYWxsYmFja1Ry
YW5zaXRpb24oKTsKLSAgICAgICAgaWYgKGhhZEZhbGxiYWNrVHJhbnNpdGlvbikKLSAgICAgICAg
ICAgIG9sZEZhbGxiYWNrVHJhbnNpdGlvbiA9IGRmYU5vZGUuZmFsbGJhY2tUcmFuc2l0aW9uRGVz
dGluYXRpb24oZGZhKTsKLSAgICAgICAgCi0gICAgICAgIG5ld0ZhbGxiYWNrRGVzdGluYXRpb24g
PSAobmV3RmFsbGJhY2tEZXN0aW5hdGlvbiA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90
Pjo6bWF4KCkgPyBvbGRGYWxsYmFja1RyYW5zaXRpb24gOiBuZXdGYWxsYmFja0Rlc3RpbmF0aW9u
KTsKLSAgICAgICAgQVNTRVJUKCFhZGRpbmdGYWxsYmFjayB8fCAobmV3RmFsbGJhY2tEZXN0aW5h
dGlvbiAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkgJiYgb2xkRmFsbGJh
Y2tUcmFuc2l0aW9uID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkpOwot
ICAgICAgICBib29sIHdpbGxIYXZlRmFsbGJhY2sgPSBuZXdGYWxsYmFja0Rlc3RpbmF0aW9uICE9
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKLSAgICAgICAgZGZhTm9kZS5z
ZXRIYXNGYWxsYmFja1RyYW5zaXRpb25XaXRob3V0Q2hhbmdpbmdERkEod2lsbEhhdmVGYWxsYmFj
ayk7Ci0gICAgICAgIAotICAgICAgICBpZiAod2lsbEhhdmVGYWxsYmFjaykgewotICAgICAgICAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50OF90LCB1aW50MzJfdD4+IHRyYW5zaXRpb25zID0gZGZh
Tm9kZS50cmFuc2l0aW9ucyhkZmEpOwotICAgICAgICAgICAgdW5zaWduZWQgYXZhaWxhYmxlU2xv
dENvdW50ID0gdHJhbnNpdGlvbnMuc2l6ZSgpICsgaGFkRmFsbGJhY2tUcmFuc2l0aW9uOwotICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRyYW5zaXRpb25zLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRyYW5zaXRpb25zW2ldLnNlY29uZCA9PSBuZXdGYWxs
YmFja0Rlc3RpbmF0aW9uKQotICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5yZW1vdmUo
aS0tKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VCh0cmFuc2l0aW9ucy5zaXplKCkgKyB3aWxsSGF2ZUZhbGxiYWNrIDw9IGF2YWlsYWJsZVNsb3RD
b3VudCk7Ci0gICAgICAgIAotICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RTbG90ID0gZGZhTm9k
ZS50cmFuc2l0aW9uc1N0YXJ0KCk7Ci0gICAgICAgICAgICBkZmFOb2RlLnJlc2V0VHJhbnNpdGlv
bnMoZmlyc3RTbG90LCB0cmFuc2l0aW9ucy5zaXplKCkpOwotICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHRyYW5zaXRpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJzW2ZpcnN0U2xvdCArIGldID0gdHJhbnNpdGlvbnNb
aV0uZmlyc3Q7Ci0gICAgICAgICAgICAgICAgZGZhLnRyYW5zaXRpb25EZXN0aW5hdGlvbnNbZmly
c3RTbG90ICsgaV0gPSB0cmFuc2l0aW9uc1tpXS5zZWNvbmQ7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0cmFuc2l0aW9ucy5zaXplKCk7IGkgPCBhdmFpbGFi
bGVTbG90Q291bnQ7ICsraSkgewotICAgICAgICAgICAgICAgIC8vIEludmFsaWRhdGUgbm93LXVu
dXNlZCBtZW1vcnkgdG8gbWFrZSBmaW5kaW5nIGJ1Z3MgZWFzaWVyLgotICAgICAgICAgICAgICAg
IGRmYS50cmFuc2l0aW9uQ2hhcmFjdGVyc1tmaXJzdFNsb3QgKyBpXSA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDhfdD46Om1heCgpOwotICAgICAgICAgICAgICAgIGRmYS50cmFuc2l0aW9uRGVz
dGluYXRpb25zW2ZpcnN0U2xvdCArIGldID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46
Om1heCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHdpbGxIYXZlRmFsbGJhY2sp
IHsKLSAgICAgICAgICAgICAgICBkZmEudHJhbnNpdGlvbkNoYXJhY3RlcnNbZmlyc3RTbG90ICsg
dHJhbnNpdGlvbnMuc2l6ZSgpXSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDhfdD46Om1heCgp
OwotICAgICAgICAgICAgICAgIGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zW2ZpcnN0U2xvdCAr
IHRyYW5zaXRpb25zLnNpemUoKV0gPSBuZXdGYWxsYmFja0Rlc3RpbmF0aW9uOwotICAgICAgICAg
ICAgfQorICAgIEFTU0VSVCghc2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0cy5pc0VtcHR5KCkpOwor
ICAgIGF1dG8gb3RoZXJJdGVyYXRvciA9IGl0ZXJhYmxlVHJhbnNpdGlvbkxpc3QuYmVnaW4oKTsK
KyAgICBhdXRvIG90aGVyRW5kID0gaXRlcmFibGVUcmFuc2l0aW9uTGlzdC5lbmQoKTsKKworICAg
IGlmIChvdGhlckl0ZXJhdG9yID09IG90aGVyRW5kKQorICAgICAgICByZXR1cm47CisKKyAgICB1
bnNpZ25lZCBzaW5ndWxhclRyYW5zaXRpb25zTGVuZ3RoID0gc2luZ3VsYXJUcmFuc2l0aW9uc0Zp
cnN0cy5zaXplKCk7CisgICAgdW5zaWduZWQgc2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0c0luZGV4
ID0gMDsKKyAgICBmb3IgKDsgb3RoZXJJdGVyYXRvciAhPSBvdGhlckVuZDsgKytvdGhlckl0ZXJh
dG9yKSB7CisgICAgICAgIGF1dG8gZmlyc3RDaGFyYWN0ZXIgPSBvdGhlckl0ZXJhdG9yLmZpcnN0
KCk7CisgICAgICAgIHdoaWxlIChzaW5ndWxhclRyYW5zaXRpb25zRmlyc3RzSW5kZXggPCBzaW5n
dWxhclRyYW5zaXRpb25zTGVuZ3RoCisgICAgICAgICAgICAmJiBzaW5ndWxhclRyYW5zaXRpb25z
Rmlyc3RzW3Npbmd1bGFyVHJhbnNpdGlvbnNGaXJzdHNJbmRleF0gIT0gZmlyc3RDaGFyYWN0ZXIp
CisgICAgICAgICAgICArK3Npbmd1bGFyVHJhbnNpdGlvbnNGaXJzdHNJbmRleDsKKworICAgICAg
ICBpbnRlcnNlY3Rpb25IYW5kbGVyKHNpbmd1bGFyVHJhbnNpdGlvbnNGaXJzdHNJbmRleCwgb3Ro
ZXJJdGVyYXRvcik7CisgICAgICAgICsrc2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0c0luZGV4Owor
CisgICAgICAgIGF1dG8gbGFzdENoYXJhY3RlciA9IG90aGVySXRlcmF0b3IubGFzdCgpOworICAg
ICAgICB3aGlsZSAoc2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0c0luZGV4IDwgc2luZ3VsYXJUcmFu
c2l0aW9uc0xlbmd0aAorICAgICAgICAgICAgJiYgc2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0c1tz
aW5ndWxhclRyYW5zaXRpb25zRmlyc3RzSW5kZXhdIDw9IGxhc3RDaGFyYWN0ZXIpIHsKKyAgICAg
ICAgICAgIGludGVyc2VjdGlvbkhhbmRsZXIoc2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0c0luZGV4
LCBvdGhlckl0ZXJhdG9yKTsKKyAgICAgICAgICAgICsrc2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0
c0luZGV4OwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTM3LDcgKzkxLDMyIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9zZXRzLmFwcGVuZChTZXREZXNjcmlwdG9yKHsgMCwgc2l6ZSwgMCB9KSk7CiAg
ICAgfQogCi0gICAgdm9pZCBtYXJrRWxlbWVudEluQ3VycmVudEdlbmVyYXRpb24odW5zaWduZWQg
ZWxlbWVudEluZGV4KQorICAgIHZvaWQgcmVzZXJ2ZVVuaW5pdGlhbGl6ZWRDYXBhY2l0eSh1bnNp
Z25lZCBlbGVtZW50Q291bnQpCisgICAgeworICAgICAgICBtX3BhcnRpdGlvbmVkRWxlbWVudHMu
cmVzaXplKGVsZW1lbnRDb3VudCk7CisgICAgICAgIG1fZWxlbWVudFBvc2l0aW9uSW5QYXJ0aXRp
b25lZE5vZGVzLnJlc2l6ZShlbGVtZW50Q291bnQpOworICAgICAgICBtX2VsZW1lbnRUb1NldE1h
cC5yZXNpemUoZWxlbWVudENvdW50KTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFNldFVuY2hlY2tl
ZCh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgc2l6ZSkKKyAgICB7CisgICAgICAgIG1fc2V0cy5h
cHBlbmQoU2V0RGVzY3JpcHRvciB7IHN0YXJ0LCBzaXplLCAwIH0pOworICAgIH0KKworICAgIHZv
aWQgc2V0RWxlbWVudFVuY2hlY2tlZCh1bnNpZ25lZCBlbGVtZW50SW5kZXgsIHVuc2lnbmVkIHBv
c2l0aW9uSW5QYXJ0aXRpb24sIHVuc2lnbmVkIHNldEluZGV4KQorICAgIHsKKyAgICAgICAgQVNT
RVJUKHNldEluZGV4IDwgbV9zZXRzLnNpemUoKSk7CisgICAgICAgIG1fcGFydGl0aW9uZWRFbGVt
ZW50c1twb3NpdGlvbkluUGFydGl0aW9uXSA9IGVsZW1lbnRJbmRleDsKKyAgICAgICAgbV9lbGVt
ZW50UG9zaXRpb25JblBhcnRpdGlvbmVkTm9kZXNbZWxlbWVudEluZGV4XSA9IHBvc2l0aW9uSW5Q
YXJ0aXRpb247CisgICAgICAgIG1fZWxlbWVudFRvU2V0TWFwW2VsZW1lbnRJbmRleF0gPSBzZXRJ
bmRleDsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldE9mU2V0KHVuc2lnbmVkIHNl
dEluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2V0c1tzZXRJbmRleF0uc3Rh
cnQ7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIG1hcmtFbGVtZW50SW5DdXJyZW50
R2VuZXJhdGlvbih1bnNpZ25lZCBlbGVtZW50SW5kZXgpCiAgICAgewogICAgICAgICAvLyBTd2Fw
IHRoZSBub2RlIHdpdGggdGhlIGZpcnN0IHVubWFya2VkIG5vZGUuCiAgICAgICAgIHVuc2lnbmVk
IHNldEluZGV4ID0gbV9lbGVtZW50VG9TZXRNYXBbZWxlbWVudEluZGV4XTsKQEAgLTIzOCw0NSAr
MjE3LDY2IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIC8vIExpc3Qgb2Ygc2V0cy4KLSAgICBW
ZWN0b3I8U2V0RGVzY3JpcHRvcj4gbV9zZXRzOworICAgIFZlY3RvcjxTZXREZXNjcmlwdG9yLCAw
LCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9zZXRzOwogCiAgICAgLy8gQWxsIHRoZSBlbGVtZW50
IGluZGljZXMgc3VjaCB0aGF0IHR3byBlbGVtZW50cyBvZiB0aGUgc2FtZSBzZXQgbmV2ZXIgaGF2
ZSBhIGVsZW1lbnQgb2YgYSBkaWZmZXJlbnQgc2V0IGJldHdlZW4gdGhlbS4KLSAgICBWZWN0b3I8
dW5zaWduZWQ+IG1fcGFydGl0aW9uZWRFbGVtZW50czsKKyAgICBWZWN0b3I8dW5zaWduZWQsIDAs
IFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX3BhcnRpdGlvbmVkRWxlbWVudHM7CiAKICAgICAvLyBN
YXAgZWxlbWVudEluZGV4LT5wb3NpdGlvbiBpbiB0aGUgcGFydGl0aW9uZWRFbGVtZW50cy4KLSAg
ICBWZWN0b3I8dW5zaWduZWQ+IG1fZWxlbWVudFBvc2l0aW9uSW5QYXJ0aXRpb25lZE5vZGVzOwor
ICAgIFZlY3Rvcjx1bnNpZ25lZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fZWxlbWVudFBv
c2l0aW9uSW5QYXJ0aXRpb25lZE5vZGVzOwogCiAgICAgLy8gTWFwIGVsZW1lbnRJbmRleC0+U2V0
SW5kZXguCi0gICAgVmVjdG9yPHVuc2lnbmVkPiBtX2VsZW1lbnRUb1NldE1hcDsKKyAgICBWZWN0
b3I8dW5zaWduZWQsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX2VsZW1lbnRUb1NldE1hcDsK
IAogICAgIC8vIExpc3Qgb2Ygc2V0cyB3aXRoIGFueSBtYXJrZWQgbm9kZS4gRWFjaCBzZXQgY2Fu
IGFwcGVhciBhdCBtb3N0IG9uY2UuCiAgICAgLy8gRklYTUU6IGZpbmQgYSBnb29kIGlubGluZSBz
aXplIGZvciB0aGlzLgotICAgIFZlY3Rvcjx1bnNpZ25lZCwgMTI4PiBtX3NldHNNYXJrZWRJbkN1
cnJlbnRHZW5lcmF0aW9uOworICAgIFZlY3Rvcjx1bnNpZ25lZCwgMTI4LCBVbnNhZmVWZWN0b3JP
dmVyZmxvdz4gbV9zZXRzTWFya2VkSW5DdXJyZW50R2VuZXJhdGlvbjsKIH07CiAKIGNsYXNzIEZ1
bGxHcmFwaFBhcnRpdGlvbiB7CisgICAgdHlwZWRlZiBNdXRhYmxlUmFuZ2VMaXN0PGNoYXIsIHVp
bnQzMl90LCAxMjg+IFNpbmd1bGFyVHJhbnNpdGlvbnNNdXRhYmxlUmFuZ2VMaXN0OwogcHVibGlj
OgogICAgIEZ1bGxHcmFwaFBhcnRpdGlvbihjb25zdCBERkEmIGRmYSkKICAgICB7CiAgICAgICAg
IG1fbm9kZVBhcnRpdGlvbi5pbml0aWFsaXplKGRmYS5ub2Rlcy5zaXplKCkpOwogCi0gICAgICAg
IG1fZmxhdHRlbmVkVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGUucmVzaXplKGRmYS5ub2Rl
cy5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkJiBjb3VudGVyIDogbV9mbGF0dGVuZWRU
cmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZSkKLSAgICAgICAgICAgIGNvdW50ZXIgPSAwOwor
ICAgICAgICBTaW5ndWxhclRyYW5zaXRpb25zTXV0YWJsZVJhbmdlTGlzdCBzaW5ndWxhclRyYW5z
aXRpb25zOworICAgICAgICBDb3VudGVyQ29udmVydGVyIGNvdW50ZXJDb252ZXJ0ZXI7CisgICAg
ICAgIGZvciAoY29uc3QgREZBTm9kZSYgbm9kZSA6IGRmYS5ub2RlcykgeworICAgICAgICAgICAg
aWYgKG5vZGUuaXNLaWxsZWQoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIGF1dG8gdHJhbnNpdGlvbnMgPSBub2RlLnRyYW5zaXRpb25zKGRmYSk7CisgICAgICAgICAg
ICBzaW5ndWxhclRyYW5zaXRpb25zLmV4dGVuZCh0cmFuc2l0aW9ucy5iZWdpbigpLCB0cmFuc2l0
aW9ucy5lbmQoKSwgY291bnRlckNvbnZlcnRlcik7CisgICAgICAgIH0KIAotICAgICAgICBtX2Zs
YXR0ZW5lZEZhbGxiYWNrVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGUucmVzaXplKGRmYS5u
b2Rlcy5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkJiBjb3VudGVyIDogbV9mbGF0dGVu
ZWRGYWxsYmFja1RyYW5zaXRpb25zU3RhcnRPZmZzZXRQZXJOb2RlKQotICAgICAgICAgICAgY291
bnRlciA9IDA7CisgICAgICAgIC8vIENvdW50IHRoZSBudW1iZXIgb2YgdHJhbnNpdGlvbiBmb3Ig
ZWFjaCBzaW5ndWxhciByYW5nZS4gVGhpcyB3aWxsIGdpdmUgdXMgdGhlIGJ1Y2tldCBzaXplCisg
ICAgICAgIC8vIGZvciB0aGUgdHJhbnNpdGlvbiBwYXJ0aXRpb24sIHdoZXJlIHRyYW5zaXRpb25z
IGFyZSBwYXJ0aXRpb25lZCBieSAic3ltYm9sIi4KKyAgICAgICAgdW5zaWduZWQgcmFuZ2VJbmRl
eEFjY3VtdWxhdG9yID0gMDsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFuc2l0aW9uIDog
c2luZ3VsYXJUcmFuc2l0aW9ucykgeworICAgICAgICAgICAgbV90cmFuc2l0aW9uUGFydGl0aW9u
LmFkZFNldFVuY2hlY2tlZChyYW5nZUluZGV4QWNjdW11bGF0b3IsIHRyYW5zaXRpb24uZGF0YSk7
CisgICAgICAgICAgICByYW5nZUluZGV4QWNjdW11bGF0b3IgKz0gdHJhbnNpdGlvbi5kYXRhOwor
ICAgICAgICB9CiAKICAgICAgICAgLy8gQ291bnQgdGhlIG51bWJlciBvZiBpbmNvbWluZyB0cmFu
c2l0aW9ucyBwZXIgbm9kZS4KLSAgICAgICAgZm9yIChjb25zdCBERkFOb2RlJiBkZmFOb2RlIDog
ZGZhLm5vZGVzKSB7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYW5zaXRpb24gOiBk
ZmFOb2RlLnRyYW5zaXRpb25zKGRmYSkpCi0gICAgICAgICAgICAgICAgKyttX2ZsYXR0ZW5lZFRy
YW5zaXRpb25zU3RhcnRPZmZzZXRQZXJOb2RlW3RyYW5zaXRpb24uc2Vjb25kXTsKLSAgICAgICAg
ICAgIGlmIChkZmFOb2RlLmhhc0ZhbGxiYWNrVHJhbnNpdGlvbigpKQotICAgICAgICAgICAgICAg
ICsrbV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25zU3RhcnRPZmZzZXRQZXJOb2RlW2RmYU5v
ZGUuZmFsbGJhY2tUcmFuc2l0aW9uRGVzdGluYXRpb24oZGZhKV07CisgICAgICAgIG1fZmxhdHRl
bmVkVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGUucmVzaXplKGRmYS5ub2Rlcy5zaXplKCkp
OworICAgICAgICBtZW1zZXQobV9mbGF0dGVuZWRUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9k
ZS5kYXRhKCksIDAsIG1fZmxhdHRlbmVkVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGUuc2l6
ZSgpICogc2l6ZW9mKHVuc2lnbmVkKSk7CisKKyAgICAgICAgVmVjdG9yPGNoYXIsIDAsIFVuc2Fm
ZVZlY3Rvck92ZXJmbG93PiBzaW5ndWxhclRyYW5zaXRpb25zRmlyc3RzOworICAgICAgICBzaW5n
dWxhclRyYW5zaXRpb25zRmlyc3RzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2luZ3VsYXJUcmFu
c2l0aW9ucy5tX3Jhbmdlcy5zaXplKCkpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYW5z
aXRpb24gOiBzaW5ndWxhclRyYW5zaXRpb25zKQorICAgICAgICAgICAgc2luZ3VsYXJUcmFuc2l0
aW9uc0ZpcnN0cy51bmNoZWNrZWRBcHBlbmQodHJhbnNpdGlvbi5maXJzdCk7CisKKyAgICAgICAg
Zm9yIChjb25zdCBERkFOb2RlJiBub2RlIDogZGZhLm5vZGVzKSB7CisgICAgICAgICAgICBpZiAo
bm9kZS5pc0tpbGxlZCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
YXV0byB0cmFuc2l0aW9ucyA9IG5vZGUudHJhbnNpdGlvbnMoZGZhKTsKKyAgICAgICAgICAgIGl0
ZXJhdGVJbnRlcnNlY3Rpb25zKHNpbmd1bGFyVHJhbnNpdGlvbnNGaXJzdHMsIHRyYW5zaXRpb25z
LCBbJl0odW5zaWduZWQsIGNvbnN0IERGQU5vZGU6OkNvbnN0UmFuZ2VJdGVyYXRvciYgb3JpZ2lu
KSB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgdGFyZ2V0Tm9kZUluZGV4ID0gb3JpZ2luLnRh
cmdldCgpOworICAgICAgICAgICAgICAgICsrbV9mbGF0dGVuZWRUcmFuc2l0aW9uc1N0YXJ0T2Zm
c2V0UGVyTm9kZVt0YXJnZXROb2RlSW5kZXhdOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0K
IAotICAgICAgICAvLyBBY2N1bXVsYXRlIHRoZSBvZmZzZXRzLgorICAgICAgICAvLyBBY2N1bXVs
YXRlIHRoZSBvZmZzZXRzLiBUaGlzIGdpdmVzIHVzIHRoZSBzdGFydCBwb3NpdGlvbiBvZiBlYWNo
IGJ1Y2tldC4KICAgICAgICAgdW5zaWduZWQgdHJhbnNpdGlvbkFjY3VtdWxhdG9yID0gMDsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZmxhdHRlbmVkVHJhbnNpdGlvbnNTdGFy
dE9mZnNldFBlck5vZGUuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIHRyYW5z
aXRpb25zQ291bnRGb3JOb2RlID0gbV9mbGF0dGVuZWRUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVy
Tm9kZVtpXTsKQEAgLTI4NCw2NSArMjg0LDQyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHRyYW5z
aXRpb25BY2N1bXVsYXRvciArPSB0cmFuc2l0aW9uc0NvdW50Rm9yTm9kZTsKICAgICAgICAgfQog
ICAgICAgICB1bnNpZ25lZCBmbGF0dGVuZWRUcmFuc2l0aW9uc1NpemUgPSB0cmFuc2l0aW9uQWNj
dW11bGF0b3I7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZmxhdHRlbmVkVHJhbnNpdGlv
bnNTaXplID09IHJhbmdlSW5kZXhBY2N1bXVsYXRvciwgIlRoZSBudW1iZXIgb2YgdHJhbnNpdGlv
bnMgc2hvdWxkIGJlIHRoZSBzYW1lLCByZWdhcmRsZXNzIG9mIGhvdyB0aGV5IGFyZSBhcnJhbmdl
ZCBpbiBidWNrZXRzLiIpOwogCi0gICAgICAgIHVuc2lnbmVkIGZhbGxiYWNrVHJhbnNpdGlvbkFj
Y3VtdWxhdG9yID0gMDsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZmxhdHRl
bmVkRmFsbGJhY2tUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZS5zaXplKCk7ICsraSkgewot
ICAgICAgICAgICAgdW5zaWduZWQgZmFsbGJhY2tUcmFuc2l0aW9uc0NvdW50Rm9yTm9kZSA9IG1f
ZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZVtpXTsKLSAgICAg
ICAgICAgIG1fZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZVtp
XSA9IGZhbGxiYWNrVHJhbnNpdGlvbkFjY3VtdWxhdG9yOwotICAgICAgICAgICAgZmFsbGJhY2tU
cmFuc2l0aW9uQWNjdW11bGF0b3IgKz0gZmFsbGJhY2tUcmFuc2l0aW9uc0NvdW50Rm9yTm9kZTsK
LSAgICAgICAgfQotICAgICAgICB1bnNpZ25lZCBmbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25z
U2l6ZSA9IGZhbGxiYWNrVHJhbnNpdGlvbkFjY3VtdWxhdG9yOworICAgICAgICBtX3RyYW5zaXRp
b25QYXJ0aXRpb24ucmVzZXJ2ZVVuaW5pdGlhbGl6ZWRDYXBhY2l0eShmbGF0dGVuZWRUcmFuc2l0
aW9uc1NpemUpOwogCiAgICAgICAgIC8vIE5leHQsIGxldCdzIGZpbGwgdGhlIHRyYW5zaXRpb24g
dGFibGUgYW5kIHNldCB1cCB0aGUgc2l6ZSBvZiBlYWNoIGdyb3VwIGF0IHRoZSBzYW1lIHRpbWUu
CiAgICAgICAgIG1fZmxhdHRlbmVkVHJhbnNpdGlvbnNTaXplUGVyTm9kZS5yZXNpemUoZGZhLm5v
ZGVzLnNpemUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQmIGNvdW50ZXIgOiBtX2ZsYXR0ZW5l
ZFRyYW5zaXRpb25zU2l6ZVBlck5vZGUpCiAgICAgICAgICAgICBjb3VudGVyID0gMDsKLQotICAg
ICAgICBtX2ZsYXR0ZW5lZEZhbGxiYWNrVHJhbnNpdGlvbnNTaXplUGVyTm9kZS5yZXNpemUoZGZh
Lm5vZGVzLnNpemUoKSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQmIGNvdW50ZXIgOiBtX2ZsYXR0
ZW5lZEZhbGxiYWNrVHJhbnNpdGlvbnNTaXplUGVyTm9kZSkKLSAgICAgICAgICAgIGNvdW50ZXIg
PSAwOwotCiAgICAgICAgIG1fZmxhdHRlbmVkVHJhbnNpdGlvbnMucmVzaXplKGZsYXR0ZW5lZFRy
YW5zaXRpb25zU2l6ZSk7CiAKLSAgICAgICAgbV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25z
LnJlc2l6ZShmbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25zU2l6ZSk7CisgICAgICAgIFZlY3Rv
cjx1aW50MzJfdD4gdHJhbnNpdGlvblBlclJhbmdlT2Zmc2V0KG1fdHJhbnNpdGlvblBhcnRpdGlv
bi5zaXplKCkpOworICAgICAgICBtZW1zZXQodHJhbnNpdGlvblBlclJhbmdlT2Zmc2V0LmRhdGEo
KSwgMCwgdHJhbnNpdGlvblBlclJhbmdlT2Zmc2V0LnNpemUoKSAqIHNpemVvZih1aW50MzJfdCkp
OwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZmEubm9kZXMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgICAgIGNvbnN0IERGQU5vZGUmIGRmYU5vZGUgPSBkZmEubm9kZXNbaV07
Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYW5zaXRpb24gOiBkZmFOb2RlLnRyYW5z
aXRpb25zKGRmYSkpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXROb2RlSW5kZXgg
PSB0cmFuc2l0aW9uLnNlY29uZDsKKyAgICAgICAgICAgIGNvbnN0IERGQU5vZGUmIG5vZGUgPSBk
ZmEubm9kZXNbaV07CisgICAgICAgICAgICBpZiAobm9kZS5pc0tpbGxlZCgpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBhdXRvIHRyYW5zaXRpb25zID0gbm9kZS50
cmFuc2l0aW9ucyhkZmEpOworICAgICAgICAgICAgaXRlcmF0ZUludGVyc2VjdGlvbnMoc2luZ3Vs
YXJUcmFuc2l0aW9uc0ZpcnN0cywgdHJhbnNpdGlvbnMsIFsmXSh1bnNpZ25lZCBzaW5ndWxhclRy
YW5zaXRvbkluZGV4LCBjb25zdCBERkFOb2RlOjpDb25zdFJhbmdlSXRlcmF0b3ImIG9yaWdpbikg
eworICAgICAgICAgICAgICAgIHVpbnQzMl90IHRhcmdldE5vZGVJbmRleCA9IG9yaWdpbi50YXJn
ZXQoKTsKIAogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0ID0gbV9mbGF0dGVuZWRUcmFu
c2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZVt0YXJnZXROb2RlSW5kZXhdOwogICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIG9mZnNldCA9IG1fZmxhdHRlbmVkVHJhbnNpdGlvbnNTaXplUGVyTm9kZVt0
YXJnZXROb2RlSW5kZXhdOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uSW5GbGF0
dGVuZWRUcmFuc2l0aW9ucyA9IHN0YXJ0ICsgb2Zmc2V0OworICAgICAgICAgICAgICAgIG1fZmxh
dHRlbmVkVHJhbnNpdGlvbnNbcG9zaXRpb25JbkZsYXR0ZW5lZFRyYW5zaXRpb25zXSA9IFRyYW5z
aXRpb24oeyBpIH0pOwogCi0gICAgICAgICAgICAgICAgbV9mbGF0dGVuZWRUcmFuc2l0aW9uc1tz
dGFydCArIG9mZnNldF0gPSBUcmFuc2l0aW9uKHsgaSwgdGFyZ2V0Tm9kZUluZGV4LCB0cmFuc2l0
aW9uLmZpcnN0IH0pOworICAgICAgICAgICAgICAgIHVpbnQzMl90JiBpblJhbmdlT2Zmc2V0ID0g
dHJhbnNpdGlvblBlclJhbmdlT2Zmc2V0W3Npbmd1bGFyVHJhbnNpdG9uSW5kZXhdOworICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uSW5UcmFuc2l0aW9uUGFydGl0aW9uID0gbV90cmFu
c2l0aW9uUGFydGl0aW9uLnN0YXJ0T2Zmc2V0T2ZTZXQoc2luZ3VsYXJUcmFuc2l0b25JbmRleCkg
KyBpblJhbmdlT2Zmc2V0OworICAgICAgICAgICAgICAgICsraW5SYW5nZU9mZnNldDsKIAotICAg
ICAgICAgICAgICAgICsrbV9mbGF0dGVuZWRUcmFuc2l0aW9uc1NpemVQZXJOb2RlW3RhcmdldE5v
ZGVJbmRleF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZGZhTm9kZS5oYXNGYWxs
YmFja1RyYW5zaXRpb24oKSkgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldE5vZGVJ
bmRleCA9IGRmYU5vZGUuZmFsbGJhY2tUcmFuc2l0aW9uRGVzdGluYXRpb24oZGZhKTsKKyAgICAg
ICAgICAgICAgICBtX3RyYW5zaXRpb25QYXJ0aXRpb24uc2V0RWxlbWVudFVuY2hlY2tlZChwb3Np
dGlvbkluRmxhdHRlbmVkVHJhbnNpdGlvbnMsIHBvc2l0aW9uSW5UcmFuc2l0aW9uUGFydGl0aW9u
LCBzaW5ndWxhclRyYW5zaXRvbkluZGV4KTsKIAotICAgICAgICAgICAgICAgIHVuc2lnbmVkIHN0
YXJ0ID0gbV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25zU3RhcnRPZmZzZXRQZXJOb2RlW3Rh
cmdldE5vZGVJbmRleF07Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gbV9mbGF0
dGVuZWRGYWxsYmFja1RyYW5zaXRpb25zU2l6ZVBlck5vZGVbdGFyZ2V0Tm9kZUluZGV4XTsKLQot
ICAgICAgICAgICAgICAgIG1fZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1tzdGFydCArIG9m
ZnNldF0gPSBpOwotICAgICAgICAgICAgICAgICsrbV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRp
b25zU2l6ZVBlck5vZGVbdGFyZ2V0Tm9kZUluZGV4XTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIC8vIENyZWF0ZSB0aGUgaW5pdGlhbCBwYXJ0aXRpb24gb2YgdHJhbnNpdGlv
bi4gRWFjaCBjaGFyYWN0ZXIgZGlmZmVyZW50aWF0aW5nIGEgdHJhbnNpdG9uCi0gICAgICAgIC8v
IGZyb20gYW4gb3RoZXIgZ2V0cyBpdHMgb3duIHNldCBpbiB0aGUgcGFydGl0aW9uLgotICAgICAg
ICBtX3RyYW5zaXRpb25QYXJ0aXRpb24uaW5pdGlhbGl6ZShtX2ZsYXR0ZW5lZFRyYW5zaXRpb25z
LnNpemUoKSk7Ci0gICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCAxMjg7ICsraSkgewot
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCB0cmFuc2l0aW9uSW5kZXggPSAwOyB0cmFuc2l0aW9u
SW5kZXggPCBtX2ZsYXR0ZW5lZFRyYW5zaXRpb25zLnNpemUoKTsgKyt0cmFuc2l0aW9uSW5kZXgp
IHsKLSAgICAgICAgICAgICAgICBjb25zdCBUcmFuc2l0aW9uJiB0cmFuc2l0aW9uID0gbV9mbGF0
dGVuZWRUcmFuc2l0aW9uc1t0cmFuc2l0aW9uSW5kZXhdOwotICAgICAgICAgICAgICAgIGlmICh0
cmFuc2l0aW9uLmNoYXJhY3RlciA9PSBpKQotICAgICAgICAgICAgICAgICAgICBtX3RyYW5zaXRp
b25QYXJ0aXRpb24ubWFya0VsZW1lbnRJbkN1cnJlbnRHZW5lcmF0aW9uKHRyYW5zaXRpb25JbmRl
eCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX3RyYW5zaXRpb25QYXJ0aXRpb24ucmVm
aW5lR2VuZXJhdGlvbihbXSh1bnNpZ25lZCkgeyB9KTsKKyAgICAgICAgICAgICAgICArK21fZmxh
dHRlbmVkVHJhbnNpdGlvbnNTaXplUGVyTm9kZVt0YXJnZXROb2RlSW5kZXhdOworICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0KLQotICAgICAgICAvLyBGYWxsYmFjayBwYXJ0aXRpb25zIGFyZSBj
b25zaWRlcmVkIGFzIGEgc3BlY2lhbCB0eXBlIG9mIGRpZmZlcmVudGlhdG9yLCB3ZSBkb24ndCBz
cGxpdCB0aGVtIGluaXRpYWxseS4KLSAgICAgICAgbV9mYWxsYmFja1RyYW5zaXRpb25QYXJ0aXRp
b24uaW5pdGlhbGl6ZShtX2ZsYXR0ZW5lZEZhbGxiYWNrVHJhbnNpdGlvbnMuc2l6ZSgpKTsKICAg
ICB9CiAKICAgICB2b2lkIG1hcmtOb2RlKHVuc2lnbmVkIG5vZGVJbmRleCkKQEAgLTM1OSwxNyAr
MzM2LDEwIEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBpbmNvbWluZ1RyYW5zaXRpb25zU2l6ZUZvck5vZGU7ICsraSkKICAgICAgICAgICAgICAg
ICAgICAgbV90cmFuc2l0aW9uUGFydGl0aW9uLm1hcmtFbGVtZW50SW5DdXJyZW50R2VuZXJhdGlv
bihpbmNvbWluZ1RyYW5zaXRpb25zU3RhcnRGb3JOb2RlICsgaSk7Ci0KLSAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbmNvbWluZ0ZhbGxiYWNrVHJhbnNpdGlvbnNTdGFydEZvck5vZGUgPSBtX2Zs
YXR0ZW5lZEZhbGxiYWNrVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGVbbm9kZUluZGV4XTsK
LSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmNvbWluZ0ZhbGxiYWNrVHJhbnNpdGlvbnNTaXpl
Rm9yTm9kZSA9IG1fZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1NpemVQZXJOb2RlW25vZGVJ
bmRleF07Ci0KLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5jb21p
bmdGYWxsYmFja1RyYW5zaXRpb25zU2l6ZUZvck5vZGU7ICsraSkKLSAgICAgICAgICAgICAgICAg
ICAgbV9mYWxsYmFja1RyYW5zaXRpb25QYXJ0aXRpb24ubWFya0VsZW1lbnRJbkN1cnJlbnRHZW5l
cmF0aW9uKGluY29taW5nRmFsbGJhY2tUcmFuc2l0aW9uc1N0YXJ0Rm9yTm9kZSArIGkpOwogICAg
ICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0byBzcGxpdCB0aGUg
dHJhbnNpdGlvbnMsIHdlIGhhbmRsZSB0aGUgbmV3IHNldHMgdGhyb3VnaCB0aGUgbWFpbiBsb29w
LgogICAgICAgICAgICAgbV90cmFuc2l0aW9uUGFydGl0aW9uLnJlZmluZUdlbmVyYXRpb24oW10o
dW5zaWduZWQpIHsgfSk7Ci0gICAgICAgICAgICBtX2ZhbGxiYWNrVHJhbnNpdGlvblBhcnRpdGlv
bi5yZWZpbmVHZW5lcmF0aW9uKFtdKHVuc2lnbmVkKSB7IH0pOwogICAgICAgICB9KTsKICAgICB9
CiAKQEAgLTM4NiwyMyArMzU2LDYgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAg
dm9pZCBzcGxpdEJ5RmFsbGJhY2tUcmFuc2l0aW9ucygpCi0gICAgewotICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKG1fbmV4dFRyYW5zaXRpb25TZXRUb1Byb2Nlc3MgfHwgIW1fdHJhbnNpdGlv
blBhcnRpdGlvbi5zaXplKCksICJXZSBjYW4gb25seSBkaXN0aW5ndWlzaCBub2RlcyBieSBmYWxs
YmFjayB0cmFuc2l0aW9uICphZnRlciogYWxsIG90aGVyIHRyYW5zaXRpb25zIGFyZSBjb3ZlcmVk
LiBEb2luZyBvdGhlcndpc2Ugd291bGQgYmUgaW5jb3JyZWN0IHNpbmNlIHRoZSB1bmlxdWUgdHJh
bnNpdGlvbnMgZnJvbSAyIG5vZGVzIGNvdWxkIGNvdmVyIGFsbCBwb3NzaWJsZSB0cmFuc2l0aW9u
cy4iKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGZhbGxiYWNrVHJhbnNpdGlvblNldEluZGV4
ID0gMDsgZmFsbGJhY2tUcmFuc2l0aW9uU2V0SW5kZXggPCBtX2ZhbGxiYWNrVHJhbnNpdGlvblBh
cnRpdGlvbi5zaXplKCk7ICsrZmFsbGJhY2tUcmFuc2l0aW9uU2V0SW5kZXgpIHsKLQotICAgICAg
ICAgICAgbV9mYWxsYmFja1RyYW5zaXRpb25QYXJ0aXRpb24uaXRlcmF0ZVNldChmYWxsYmFja1Ry
YW5zaXRpb25TZXRJbmRleCwgWyZdKHVuc2lnbmVkIHRyYW5zaXRpb25JbmRleCkgewotICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHNvdXJjZU5vZGVJbmRleCA9IG1fZmxhdHRlbmVkRmFsbGJhY2tU
cmFuc2l0aW9uc1t0cmFuc2l0aW9uSW5kZXhdOwotICAgICAgICAgICAgICAgIG1fbm9kZVBhcnRp
dGlvbi5tYXJrRWxlbWVudEluQ3VycmVudEdlbmVyYXRpb24oc291cmNlTm9kZUluZGV4KTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmVmaW5lUGFydGl0aW9ucygpOwotCi0gICAgICAg
ICAgICAvLyBBbnkgbmV3IHNwbGl0IG5lZWQgdG8gc3ByZWFkIHRvIGFsbCB0aGUgdW5pcXVlIHRy
YW5zaXRpb24gdGhhdCBjYW4gcmVhY2ggdGhlIHR3byBuZXcgc2V0cy4KLSAgICAgICAgICAgIHNw
bGl0QnlVbmlxdWVUcmFuc2l0aW9ucygpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgdW5zaWdu
ZWQgbm9kZVJlcGxhY2VtZW50KHVuc2lnbmVkIG5vZGVJbmRleCkKICAgICB7CiAgICAgICAgIHVu
c2lnbmVkIHNldEluZGV4ID0gbV9ub2RlUGFydGl0aW9uLnNldEluZGV4KG5vZGVJbmRleCk7CkBA
IC00MTIsMjEgKzM2NSwyNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHN0cnVjdCBUcmFuc2l0
aW9uIHsKICAgICAgICAgdW5zaWduZWQgc291cmNlOwotICAgICAgICB1bnNpZ25lZCB0YXJnZXQ7
Ci0gICAgICAgIHVpbnQxNl90IGNoYXJhY3RlcjsKICAgICB9OwogCi0gICAgVmVjdG9yPHVuc2ln
bmVkPiBtX2ZsYXR0ZW5lZFRyYW5zaXRpb25zU3RhcnRPZmZzZXRQZXJOb2RlOwotICAgIFZlY3Rv
cjx1bnNpZ25lZD4gbV9mbGF0dGVuZWRUcmFuc2l0aW9uc1NpemVQZXJOb2RlOwotICAgIFZlY3Rv
cjx1bnNpZ25lZD4gbV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25zU3RhcnRPZmZzZXRQZXJO
b2RlOwotICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25z
U2l6ZVBlck5vZGU7CisgICAgc3RydWN0IENvdW50ZXJDb252ZXJ0ZXIgeworICAgICAgICB1aW50
MzJfdCBjb252ZXJ0KHVpbnQzMl90KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gMTsK
KyAgICAgICAgfQogCi0gICAgVmVjdG9yPFRyYW5zaXRpb24+IG1fZmxhdHRlbmVkVHJhbnNpdGlv
bnM7Ci0gICAgVmVjdG9yPHVuc2lnbmVkPiBtX2ZsYXR0ZW5lZEZhbGxiYWNrVHJhbnNpdGlvbnM7
CisgICAgICAgIHZvaWQgZXh0ZW5kKHVpbnQzMl90JiBkZXN0aW5hdGlvbiwgdWludDMyX3QpCisg
ICAgICAgIHsKKyAgICAgICAgICAgICsrZGVzdGluYXRpb247CisgICAgICAgIH0KKyAgICB9Owor
CisgICAgVmVjdG9yPHVuc2lnbmVkLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9mbGF0dGVu
ZWRUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZTsKKyAgICBWZWN0b3I8dW5zaWduZWQsIDAs
IFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX2ZsYXR0ZW5lZFRyYW5zaXRpb25zU2l6ZVBlck5vZGU7
CisgICAgVmVjdG9yPFRyYW5zaXRpb24sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX2ZsYXR0
ZW5lZFRyYW5zaXRpb25zOwogCiAgICAgUGFydGl0aW9uIG1fbm9kZVBhcnRpdGlvbjsKICAgICBQ
YXJ0aXRpb24gbV90cmFuc2l0aW9uUGFydGl0aW9uOwotICAgIFBhcnRpdGlvbiBtX2ZhbGxiYWNr
VHJhbnNpdGlvblBhcnRpdGlvbjsKIAogICAgIHVuc2lnbmVkIG1fbmV4dFRyYW5zaXRpb25TZXRU
b1Byb2Nlc3MgeyAwIH07CiB9OwpAQCAtNDk0LDggKzQ1Miw2IEBAIHN0cnVjdCBBY3Rpb25LZXlI
YXNoVHJhaXRzIDogcHVibGljIFdURjo6Q3VzdG9tSGFzaFRyYWl0czxBY3Rpb25LZXk+IHsKIAog
dm9pZCBERkFNaW5pbWl6ZXI6Om1pbmltaXplKERGQSYgZGZhKQogewotICAgIHNpbXBsaWZ5VHJh
bnNpdGlvbnMoZGZhKTsKLQogICAgIEZ1bGxHcmFwaFBhcnRpdGlvbiBmdWxsR3JhcGhQYXJ0aXRp
b24oZGZhKTsKIAogICAgIC8vIFVubGlrZSB0cmFkaXRpb25hbCBtaW5pbWl6YXRpb24gZmluYWwg
c3RhdGVzIGNhbiBiZSBkaWZmZXJlbnRpYXRlZCBieSB0aGVpciBhY3Rpb24uCkBAIC01MjAsMjEg
KzQ3NiwxMiBAQCB2b2lkIERGQU1pbmltaXplcjo6bWluaW1pemUoREZBJiBkZmEpCiAgICAgLy8g
VXNlIGV2ZXJ5IHNwbGl0dGVyIHRvIHJlZmluZSB0aGUgbm9kZSBwYXJ0aXRpb25zLgogICAgIGZ1
bGxHcmFwaFBhcnRpdGlvbi5zcGxpdEJ5VW5pcXVlVHJhbnNpdGlvbnMoKTsKIAotICAgIC8vIEF0
IHRoaXMgc3RhZ2UsIHdlIGtub3cgdGhhdCBubyBwYWlyIG9mIHN0YXRlIGNhbiBiZSBkaXN0aW5n
dWlzaGVkIGJ5IHRoZSBpbmRpdmlkdWFsIHRyYW5zaXRpb25zLiBUaGV5IGNhbiBzdGlsbAotICAg
IC8vIGJlIGRpc3Rpbmd1aXNoZWQgYnkgdGhlaXIgZmFsbGJhY2sgdHJhbnNpdGlvbnMuCi0gICAg
Ly8KLSAgICAvLyBGb3IgZXhhbXBsZSwgdHdvIHN0YXRlcyBbMSwgMl0gY2FuIGJvdGggaGF2ZSBh
IHRyYW5zaXRpb24gb24gJ3gnIHRvIGEgc3RhdGUgWzNdLCBidXQgZWFjaCBoYXZlIGZhbGxiYWNr
IHRyYW5zaXRpb24KLSAgICAvLyB0byBkaWZmZXJlbnQgc3RhdGVzIFs0XSBhbmQgWzVdLgotICAg
IC8vCi0gICAgLy8gSGVyZSwgd2UgZGlzdGluZ3Vpc2ggc3VjaCBjYXNlcyBhbmQgYXQgZWFjaCBz
dGFnZSByZWZpbmUgdGhlIG5ldyBkaXNjb3ZlcmVkIHNldHMgYnkgdGhlaXIgaW5kaXZpZHVhbCB0
cmFuc2l0aW9ucy4KLSAgICBmdWxsR3JhcGhQYXJ0aXRpb24uc3BsaXRCeUZhbGxiYWNrVHJhbnNp
dGlvbnMoKTsKLQogICAgIFZlY3Rvcjx1bnNpZ25lZD4gcmVsb2NhdGlvblZlY3RvcjsKICAgICBy
ZWxvY2F0aW9uVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGZhLm5vZGVzLnNpemUoKSk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRmYS5ub2Rlcy5zaXplKCk7ICsraSkKICAg
ICAgICAgcmVsb2NhdGlvblZlY3Rvci51bmNoZWNrZWRBcHBlbmQoaSk7CiAKLSAgICAvLyBLaWxs
IHRoZSB1c2VsZXNzIG5vZGVzIGFuZCBrZWVwIHRyYWNrIG9mIHRoZSBuZXcgbm9kZSB0cmFuc2l0
aW9ucyBzaG91bGQgcG9pbnQgdG8uCisgICAgLy8gVXBkYXRlIGFsbCB0aGUgdHJhbnNpdGlvbnMu
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRmYS5ub2Rlcy5zaXplKCk7ICsraSkgewog
ICAgICAgICB1bnNpZ25lZCByZXBsYWNlbWVudCA9IGZ1bGxHcmFwaFBhcnRpdGlvbi5ub2RlUmVw
bGFjZW1lbnQoaSk7CiAgICAgICAgIGlmIChpICE9IHJlcGxhY2VtZW50KSB7CkBAIC01NDMsMTkg
KzQ5MCwxOCBAQCB2b2lkIERGQU1pbmltaXplcjo6bWluaW1pemUoREZBJiBkZmEpCiAgICAgICAg
IH0KICAgICB9CiAKKyAgICBkZmEucm9vdCA9IHJlbG9jYXRpb25WZWN0b3JbZGZhLnJvb3RdOwog
ICAgIGZvciAoREZBTm9kZSYgbm9kZSA6IGRmYS5ub2RlcykgewotICAgICAgICBhdXRvIG5vZGVU
cmFuc2l0aW9ucyA9IG5vZGUudHJhbnNpdGlvbnMoZGZhKTsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG5vZGUudHJhbnNpdGlvbnNMZW5ndGgoKTsgKytpKQotICAgICAgICAgICAg
ZGZhLnRyYW5zaXRpb25EZXN0aW5hdGlvbnNbbm9kZS50cmFuc2l0aW9uc1N0YXJ0KCkgKyBpXSA9
IHJlbG9jYXRpb25WZWN0b3Jbbm9kZVRyYW5zaXRpb25zW2ldLnNlY29uZF07Ci0gICAgICAgIGlm
IChub2RlLmhhc0ZhbGxiYWNrVHJhbnNpdGlvbigpKQotICAgICAgICAgICAgbm9kZS5jaGFuZ2VG
YWxsYmFja1RyYW5zaXRpb24oZGZhLCByZWxvY2F0aW9uVmVjdG9yW25vZGUuZmFsbGJhY2tUcmFu
c2l0aW9uRGVzdGluYXRpb24oZGZhKV0pOworICAgICAgICBpZiAobm9kZS5pc0tpbGxlZCgpKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZm9yIChhdXRvJiB0cmFuc2l0aW9uIDog
bm9kZS50cmFuc2l0aW9ucyhkZmEpKSB7CisgICAgICAgICAgICB1aW50MzJfdCB0YXJnZXQgPSB0
cmFuc2l0aW9uLnRhcmdldCgpOworICAgICAgICAgICAgdWludDMyX3QgcmVsb2NhdGVkVGFyZ2V0
ID0gcmVsb2NhdGlvblZlY3Rvclt0YXJnZXRdOworICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBy
ZWxvY2F0ZWRUYXJnZXQpCisgICAgICAgICAgICAgICAgdHJhbnNpdGlvbi5yZXNldFRhcmdldChy
ZWxvY2F0ZWRUYXJnZXQpOworICAgICAgICB9CiAgICAgfQotCi0gICAgLy8gQWZ0ZXIgbWluaW1p
emluZywgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIGluZGl2aWR1YWwgdHJhbnNpdGlvbiBhcmUgc3Rp
bGwgcG9pdGluZyB0byBkaWZmZXJlbnQgc3RhdGVzLgotICAgIC8vIFRoZSBzdGF0ZSBwb2ludGVk
IGJ5IG9uZSBpbmRpdmlkdWFsIHRyYW5zaXRpb24gYW5kIHRoZSBmYWxsYmFjayBzdGF0ZXMgbWF5
IGhhdmUgYmVlbiBtZXJnZWQuCi0gICAgc2ltcGxpZnlUcmFuc2l0aW9ucyhkZmEpOwotCi0gICAg
ZGZhLnJvb3QgPSByZWxvY2F0aW9uVmVjdG9yW2RmYS5yb290XTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgQ29udGVudEV4dGVuc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0RGQU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
REZBTm9kZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY2YjA5NTE5OTBkNzEwNjRmZjZmMzA2ZmE2ODQxMDk3
OWM1NjhkMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0RGQU5vZGUuY3BwCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRGQU5vZGUuaCIKKworI2luY2x1ZGUgIkRGQS5o
IgorCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCituYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMgeworCitWZWN0b3I8dWludDY0X3Q+IERG
QU5vZGU6OmFjdGlvbnMoY29uc3QgREZBJiBkZmEpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFVz
ZSBpdGVyYXRvcnMgaW5zdGVhZCBvZiBjb3B5aW5nIHRoZSBWZWN0b3IgZWxlbWVudHMuCisgICAg
VmVjdG9yPHVpbnQ2NF90PiB2ZWN0b3I7CisgICAgdmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9hY3Rpb25zTGVuZ3RoKTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSBtX2FjdGlvbnNTdGFy
dDsgaSA8IG1fYWN0aW9uc1N0YXJ0ICsgbV9hY3Rpb25zTGVuZ3RoOyArK2kpCisgICAgICAgIHZl
Y3Rvci51bmNoZWNrZWRBcHBlbmQoZGZhLmFjdGlvbnNbaV0pOworICAgIHJldHVybiB2ZWN0b3I7
Cit9CisKK2Jvb2wgREZBTm9kZTo6Y29udGFpbnNUcmFuc2l0aW9uKGNoYXIgdHJhbnNpdGlvbiwg
REZBJiBkZmEpCit7CisgICAgLy8gQ2FsbGVkIGZyb20gREZBTWluaW1pemVyLCB0aGlzIGxvb3Bz
IHRob3VnaCBhIG1heGltdW0gb2YgMTI4IHRyYW5zaXRpb25zLCBzbyBpdCdzIG5vdCB0b28gc2xv
dy4KKyAgICBBU1NFUlQobV90cmFuc2l0aW9uc0xlbmd0aCA8PSAxMjgpOworICAgIGZvciAodW5z
aWduZWQgaSA9IG1fdHJhbnNpdGlvbnNTdGFydDsgaSA8IG1fdHJhbnNpdGlvbnNTdGFydCArIG1f
dHJhbnNpdGlvbnNMZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoZGZhLnRyYW5zaXRpb25SYW5n
ZXNbaV0uZmlyc3QgPD0gdHJhbnNpdGlvbgorICAgICAgICAgICAgJiYgZGZhLnRyYW5zaXRpb25S
YW5nZXNbaV0ubGFzdCA+PSB0cmFuc2l0aW9uKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBERkFOb2RlOjpraWxsKERGQSYgZGZh
KQoreworICAgIEFTU0VSVChtX2ZsYWdzICE9IElzS2lsbGVkKTsKKyAgICBtX2ZsYWdzID0gSXNL
aWxsZWQ7IC8vIEtpbGxlZCBub2RlcyBkb24ndCBoYXZlIGFueSBvdGhlciBmbGFncy4KKworICAg
IC8vIEludmFsaWRhdGUgdGhlIG5vdy11bnVzZWQgbWVtb3J5IGluIHRoZSBERkEgdG8gbWFrZSBm
aW5kaW5nIGJ1Z3MgZWFzaWVyLgorICAgIGZvciAodW5zaWduZWQgaSA9IG1fdHJhbnNpdGlvbnNT
dGFydDsgaSA8IG1fdHJhbnNpdGlvbnNTdGFydCArIG1fdHJhbnNpdGlvbnNMZW5ndGg7ICsraSkg
eworICAgICAgICBkZmEudHJhbnNpdGlvblJhbmdlc1tpXSA9IHsgLTEsIC0xIH07CisgICAgICAg
IGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zW2ldID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50
MzJfdD46Om1heCgpOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2FjdGlvbnNTdGFy
dDsgaSA8IG1fYWN0aW9uc1N0YXJ0ICsgbV9hY3Rpb25zTGVuZ3RoOyArK2kpCisgICAgICAgIGRm
YS5hY3Rpb25zW2ldID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOworCisg
ICAgbV9hY3Rpb25zU3RhcnQgPSAwOworICAgIG1fYWN0aW9uc0xlbmd0aCA9IDA7CisgICAgbV90
cmFuc2l0aW9uc1N0YXJ0ID0gMDsKKyAgICBtX3RyYW5zaXRpb25zTGVuZ3RoID0gMDsKK307CisK
K2Jvb2wgREZBTm9kZTo6Y2FuVXNlRmFsbGJhY2tUcmFuc2l0aW9uKGNvbnN0IERGQSYgZGZhKSBj
b25zdAoreworICAgIC8vIFRyYW5zaXRpb25zIGNhbiBjb250YWlucyAiMCIgaWYgdGhlIGV4cHJl
c3Npb24gaGFzIGEgZW5kLW9mLWxpbmUgbWFya2VyLgorICAgIC8vIEZhbGxiYWNrIHRyYW5zaXRp
b25zIGNvdmVyIDEtMTI3LiBXZSBoYXZlIHRvIGJlIGNhcmVmdWwgd2l0aCB0aGUgZmlyc3QuCisK
KyAgICBJdGVyYWJsZUNvbnN0UmFuZ2UgaXRlcmFibGVUcmFuc2l0aW9ucyA9IHRyYW5zaXRpb25z
KGRmYSk7CisgICAgYXV0byBpdGVyYXRvciA9IGl0ZXJhYmxlVHJhbnNpdGlvbnMuYmVnaW4oKTsK
KyAgICBhdXRvIGVuZCA9IGl0ZXJhYmxlVHJhbnNpdGlvbnMuZW5kKCk7CisgICAgaWYgKGl0ZXJh
dG9yID09IGVuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY2hhciBsYXN0U2VlbkNo
YXJhY3RlciA9IDA7CisgICAgaWYgKCFpdGVyYXRvci5maXJzdCgpKSB7CisgICAgICAgIGxhc3RT
ZWVuQ2hhcmFjdGVyID0gaXRlcmF0b3IubGFzdCgpOworICAgICAgICBpZiAobGFzdFNlZW5DaGFy
YWN0ZXIgPT0gMTI3KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICsraXRlcmF0
b3I7CisgICAgfQorCisgICAgZm9yICg7aXRlcmF0b3IgIT0gZW5kOyArK2l0ZXJhdG9yKSB7Cisg
ICAgICAgIEFTU0VSVChpdGVyYXRvci5maXJzdCgpID4gbGFzdFNlZW5DaGFyYWN0ZXIpOworICAg
ICAgICBpZiAoaXRlcmF0b3IuZmlyc3QoKSAhPSBsYXN0U2VlbkNoYXJhY3RlciArIDEpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKGl0ZXJhdG9yLnJhbmdlKCkubGFz
dCA9PSAxMjcpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgbGFzdFNlZW5DaGFy
YWN0ZXIgPSBpdGVyYXRvci5sYXN0KCk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwor
dWludDMyX3QgREZBTm9kZTo6YmVzdEZhbGxiYWNrVGFyZ2V0KGNvbnN0IERGQSYgZGZhKSBjb25z
dAoreworICAgIEFTU0VSVChjYW5Vc2VGYWxsYmFja1RyYW5zaXRpb24oZGZhKSk7CisKKyAgICBI
YXNoTWFwPHVpbnQzMl90LCB1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dWludDMyX3Q+OjpIYXNoLCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQzMl90Pj4gaGlzdG9ncmFtOwor
CisgICAgSXRlcmFibGVDb25zdFJhbmdlIGl0ZXJhYmxlVHJhbnNpdGlvbnMgPSB0cmFuc2l0aW9u
cyhkZmEpOworICAgIGF1dG8gaXRlcmF0b3IgPSBpdGVyYWJsZVRyYW5zaXRpb25zLmJlZ2luKCk7
CisgICAgYXV0byBlbmQgPSBpdGVyYWJsZVRyYW5zaXRpb25zLmVuZCgpOworICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoaXRlcmF0b3IgIT0gZW5kLCAiQW4gZW1wdHkgcmFuZ2UgbGlzdCBjYW5ub3Qg
dXNlIGEgZmFsbGJhY2sgdHJhbnNpdGlvbi4iKTsKKworICAgIGlmICghaXRlcmF0b3IuZmlyc3Qo
KSAmJiAhaXRlcmF0b3IubGFzdCgpKQorICAgICAgICArK2l0ZXJhdG9yOworICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoaXRlcmF0b3IgIT0gZW5kLCAiQW4gZW1wdHkgcmFuZ2UgbGlzdCBtYXRjaGlu
ZyBvbmx5IHplcm8gY2Fubm90IHVzZSBhIGZhbGxiYWNrIHRyYW5zaXRpb24uIik7CisKKyAgICB1
aW50MzJfdCBiZXN0VGFyZ2V0ID0gaXRlcmF0b3IudGFyZ2V0KCk7CisgICAgdW5zaWduZWQgYmVz
dFRhcmdldFNjb3JlID0gIWl0ZXJhdG9yLnJhbmdlKCkuZmlyc3QgPyBpdGVyYXRvci5yYW5nZSgp
LnNpemUoKSAtIDEgOiBpdGVyYXRvci5yYW5nZSgpLnNpemUoKTsKKyAgICBoaXN0b2dyYW0uYWRk
KGJlc3RUYXJnZXQsIGJlc3RUYXJnZXRTY29yZSk7CisgICAgKytpdGVyYXRvcjsKKworICAgIGZv
ciAoO2l0ZXJhdG9yICE9IGVuZDsgKytpdGVyYXRvcikgeworICAgICAgICB1bnNpZ25lZCByYW5n
ZVNpemUgPSBpdGVyYXRvci5yYW5nZSgpLnNpemUoKTsKKyAgICAgICAgdWludDMyX3QgdGFyZ2V0
ID0gaXRlcmF0b3IudGFyZ2V0KCk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gaGlzdG9ncmFt
LmFkZCh0YXJnZXQsIHJhbmdlU2l6ZSk7CisgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50
cnkpCisgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlICs9IHJhbmdlU2l6ZTsK
KyAgICAgICAgaWYgKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPiBiZXN0VGFyZ2V0U2NvcmUp
IHsKKyAgICAgICAgICAgIGJlc3RUYXJnZXRTY29yZSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CisgICAgICAgICAgICBiZXN0VGFyZ2V0ID0gdGFyZ2V0OworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBiZXN0VGFyZ2V0OworfQorCit9IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5z
aW9ucworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvREZBTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBTm9kZS5o
CmluZGV4IDZiZDY0ZTExMDE0OTg2YjBkNjg1MWRhNzNlMzY1ZDk3YmFlNDczNjcuLmJkMWExNWMx
YmYyNjdlNzQwZTY5OWRkZGNlMjc3YzEwYzJlMjE4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9ERkFOb2RlLmgKQEAgLTM4LDI3ICszOCwxMTIgQEAgbmFtZXNwYWNlIENv
bnRlbnRFeHRlbnNpb25zIHsKIAogc3RydWN0IERGQTsKIAorc3RydWN0IENoYXJSYW5nZSB7Cisg
ICAgY2hhciBmaXJzdDsKKyAgICBjaGFyIGxhc3Q7CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIGxhc3QgLSBmaXJzdCArIDE7IH0KK307CisKIC8vIEEgREZBTm9kZSBhYnN0cmFj
dCB0aGUgdHJhbnNpdGlvbiB0YWJsZSBvdXQgb2YgYSBERkEgc3RhdGUuIElmIGEgc3RhdGUgaXMg
YWNjZXB0aW5nLCB0aGUgREZBTm9kZSBhbHNvIGhhdmUKIC8vIHRoZSBhY3Rpb25zIGZvciB0aGF0
IHN0YXRlLgogY2xhc3MgREZBTm9kZSB7CiBwdWJsaWM6CisgICAgc3RydWN0IENvbnN0UmFuZ2VJ
dGVyYXRvciB7CisgICAgICAgIGNvbnN0IERGQSYgZGZhOworICAgICAgICB1aW50MzJfdCBwb3Np
dGlvbjsKKworICAgICAgICBjb25zdCBDb25zdFJhbmdlSXRlcmF0b3ImIG9wZXJhdG9yKigpIGNv
bnN0IHsgcmV0dXJuICp0aGlzOyB9CisKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENv
bnN0UmFuZ2VJdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVCgmZGZhICA9PSAmb3RoZXIuZGZhKTsKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbiA9
PSBvdGhlci5wb3NpdGlvbjsKKyAgICAgICAgfQorICAgICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgQ29uc3RSYW5nZUl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7IH0KKworICAgICAgICBDb25zdFJhbmdlSXRlcmF0b3ImIG9wZXJhdG9yKysoKQorICAg
ICAgICB7CisgICAgICAgICAgICArK3Bvc2l0aW9uOworICAgICAgICAgICAgcmV0dXJuICp0aGlz
OworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgQ2hhclJhbmdlJiByYW5nZSgpIGNvbnN0Owor
ICAgICAgICB1aW50MzJfdCB0YXJnZXQoKSBjb25zdDsKKworICAgICAgICBjaGFyIGZpcnN0KCkg
Y29uc3QgeyByZXR1cm4gcmFuZ2UoKS5maXJzdDsgfQorICAgICAgICBjaGFyIGxhc3QoKSBjb25z
dCB7IHJldHVybiByYW5nZSgpLmxhc3Q7IH0KKyAgICAgICAgdWludDMyX3QgZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIHRhcmdldCgpOyB9CisgICAgfTsKKworICAgIHN0cnVjdCBJdGVyYWJsZUNvbnN0
UmFuZ2UgeworICAgICAgICBjb25zdCBERkEmIGRmYTsKKyAgICAgICAgdWludDMyX3QgcmFuZ2Vz
U3RhcnQ7CisgICAgICAgIHVpbnQzMl90IHJhbmdlc0VuZDsKKworICAgICAgICBDb25zdFJhbmdl
SXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiB7IGRmYSwgcmFuZ2VzU3RhcnQgfTsgfQor
ICAgICAgICBDb25zdFJhbmdlSXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4geyBkZmEsIHJh
bmdlc0VuZCB9OyB9CisgICAgfTsKKworICAgIEl0ZXJhYmxlQ29uc3RSYW5nZSB0cmFuc2l0aW9u
cyhjb25zdCBERkEmIGRmYSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBJdGVyYWJsZUNv
bnN0UmFuZ2UgeyBkZmEsIG1fdHJhbnNpdGlvbnNTdGFydCwgbV90cmFuc2l0aW9uc1N0YXJ0ICsg
bV90cmFuc2l0aW9uc0xlbmd0aCB9OworICAgIH0KKworICAgIHN0cnVjdCBSYW5nZUl0ZXJhdG9y
IHsKKyAgICAgICAgREZBJiBkZmE7CisgICAgICAgIHVpbnQzMl90IHBvc2l0aW9uOworCisgICAg
ICAgIFJhbmdlSXRlcmF0b3ImIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzOyB9CisKKyAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJhbmdlSXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAg
ICAgICB7CisgICAgICAgICAgICBBU1NFUlQoJmRmYSAgPT0gJm90aGVyLmRmYSk7CisgICAgICAg
ICAgICByZXR1cm4gcG9zaXRpb24gPT0gb3RoZXIucG9zaXRpb247CisgICAgICAgIH0KKyAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJhbmdlSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorCisgICAgICAgIFJhbmdlSXRlcmF0b3ImIG9wZXJh
dG9yKysoKQorICAgICAgICB7CisgICAgICAgICAgICArK3Bvc2l0aW9uOworICAgICAgICAgICAg
cmV0dXJuICp0aGlzOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgQ2hhclJhbmdlJiByYW5n
ZSgpIGNvbnN0OworICAgICAgICB1aW50MzJfdCB0YXJnZXQoKSBjb25zdDsKKyAgICAgICAgdm9p
ZCByZXNldFRhcmdldCh1aW50MzJfdCk7CisKKyAgICAgICAgY2hhciBmaXJzdCgpIGNvbnN0IHsg
cmV0dXJuIHJhbmdlKCkuZmlyc3Q7IH0KKyAgICAgICAgY2hhciBsYXN0KCkgY29uc3QgeyByZXR1
cm4gcmFuZ2UoKS5sYXN0OyB9CisgICAgICAgIHVpbnQzMl90IGRhdGEoKSBjb25zdCB7IHJldHVy
biB0YXJnZXQoKTsgfQorICAgIH07CisKKyAgICBzdHJ1Y3QgSXRlcmFibGVSYW5nZSB7CisgICAg
ICAgIERGQSYgZGZhOworICAgICAgICB1aW50MzJfdCByYW5nZXNTdGFydDsKKyAgICAgICAgdWlu
dDMyX3QgcmFuZ2VzRW5kOworCisgICAgICAgIFJhbmdlSXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7
IHJldHVybiB7IGRmYSwgcmFuZ2VzU3RhcnQgfTsgfQorICAgICAgICBSYW5nZUl0ZXJhdG9yIGVu
ZCgpIGNvbnN0IHsgcmV0dXJuIHsgZGZhLCByYW5nZXNFbmQgfTsgfQorICAgIH07CisKKyAgICBJ
dGVyYWJsZVJhbmdlIHRyYW5zaXRpb25zKERGQSYgZGZhKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IEl0ZXJhYmxlUmFuZ2UgeyBkZmEsIG1fdHJhbnNpdGlvbnNTdGFydCwgbV90cmFuc2l0aW9uc1N0
YXJ0ICsgbV90cmFuc2l0aW9uc0xlbmd0aCB9OworICAgIH0KKwogICAgIC8vIEZJWE1FOiBTdG9w
IG1pbmltaXppbmcga2lsbGVkIG5vZGVzIGFuZCBhZGQgQVNTRVJUKCFpc0tpbGxlZCgpKSBpbiBt
YW55IGZ1bmN0aW9ucyBoZXJlLgogICAgIHZvaWQga2lsbChERkEmKTsKICAgICBWZWN0b3I8dWlu
dDY0X3Q+IGFjdGlvbnMoY29uc3QgREZBJikgY29uc3Q7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjx1
aW50OF90LCB1aW50MzJfdD4+IHRyYW5zaXRpb25zKGNvbnN0IERGQSYpIGNvbnN0OwotICAgIHVp
bnQzMl90IGZhbGxiYWNrVHJhbnNpdGlvbkRlc3RpbmF0aW9uKGNvbnN0IERGQSYpIGNvbnN0Owot
ICAgIHZvaWQgYWRkRmFsbGJhY2tUcmFuc2l0aW9uKERGQSYsIHVpbnQzMl90IGRlc3RpbmF0aW9u
KTsKLSAgICBib29sIGNvbnRhaW5zVHJhbnNpdGlvbih1aW50OF90LCBERkEmKTsKLSAgICB2b2lk
IGNoYW5nZUZhbGxiYWNrVHJhbnNpdGlvbihERkEmLCB1aW50MzJfdCBuZXdEZXN0aW5hdGlvbik7
CisgICAgYm9vbCBjb250YWluc1RyYW5zaXRpb24oY2hhciwgREZBJik7CiAgICAgCiAgICAgYm9v
bCBpc0tpbGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBJc0tpbGxlZDsgfQotICAgIGJv
b2wgaGFzRmFsbGJhY2tUcmFuc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEhhc0Zh
bGxiYWNrVHJhbnNpdGlvbjsgfQogICAgIGJvb2wgaGFzQWN0aW9ucygpIGNvbnN0IHsgcmV0dXJu
ICEhbV9hY3Rpb25zTGVuZ3RoOyB9Ci0gICAgdWludDhfdCB0cmFuc2l0aW9uc0xlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fdHJhbnNpdGlvbnNMZW5ndGg7IH0KICAgICB1aW50MTZfdCBhY3Rpb25z
TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb25zTGVuZ3RoOyB9CiAgICAgdWludDMyX3Qg
YWN0aW9uc1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb25zU3RhcnQ7IH0KLSAgICB1aW50
MzJfdCB0cmFuc2l0aW9uc1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2l0aW9uc1N0YXJ0
OyB9Ci0gICAgCisKKyAgICBib29sIGNhblVzZUZhbGxiYWNrVHJhbnNpdGlvbihjb25zdCBERkEm
KSBjb25zdDsKKyAgICB1aW50MzJfdCBiZXN0RmFsbGJhY2tUYXJnZXQoY29uc3QgREZBJikgY29u
c3Q7CisKICAgICB2b2lkIHNldEFjdGlvbnModWludDMyX3Qgc3RhcnQsIHVpbnQxNl90IGxlbmd0
aCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9hY3Rpb25zU3RhcnQpOwpAQCAtNzMsMjIgKzE1
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV90cmFuc2l0aW9uc1N0YXJ0ID0gc3RhcnQ7CiAgICAg
ICAgIG1fdHJhbnNpdGlvbnNMZW5ndGggPSBsZW5ndGg7CiAgICAgfQotICAgIHZvaWQgcmVzZXRU
cmFuc2l0aW9ucyh1aW50MzJfdCBzdGFydCwgdWludDE2X3QgbGVuZ3RoKQotICAgIHsKLSAgICAg
ICAgbV90cmFuc2l0aW9uc1N0YXJ0ID0gc3RhcnQ7Ci0gICAgICAgIG1fdHJhbnNpdGlvbnNMZW5n
dGggPSBsZW5ndGg7Ci0gICAgfQotICAgIHZvaWQgc2V0SGFzRmFsbGJhY2tUcmFuc2l0aW9uV2l0
aG91dENoYW5naW5nREZBKGJvb2wgc2hvdWxkSGF2ZUZhbGxiYWNrVHJhbnNpdGlvbikKLSAgICB7
Ci0gICAgICAgIGlmIChzaG91bGRIYXZlRmFsbGJhY2tUcmFuc2l0aW9uKQotICAgICAgICAgICAg
bV9mbGFncyB8PSBIYXNGYWxsYmFja1RyYW5zaXRpb247Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG1fZmxhZ3MgJj0gfkhhc0ZhbGxiYWNrVHJhbnNpdGlvbjsKLSAgICB9Ci0gICAgCi0jaWYg
Q09OVEVOVF9FWFRFTlNJT05TX1NUQVRFX01BQ0hJTkVfREVCVUdHSU5HCi0gICAgVmVjdG9yPHVu
c2lnbmVkPiBjb3JyZXNwb25kaW5nTkZBTm9kZXM7Ci0jZW5kaWYKKwogcHJpdmF0ZToKICAgICB1
aW50MzJfdCBtX2FjdGlvbnNTdGFydCB7IDAgfTsKICAgICB1aW50MzJfdCBtX3RyYW5zaXRpb25z
U3RhcnQgeyAwIH07CkBAIC05Niw4ICsxNjYsNyBAQCBwcml2YXRlOgogICAgIHVpbnQ4X3QgbV90
cmFuc2l0aW9uc0xlbmd0aCB7IDAgfTsKICAgICAKICAgICB1aW50OF90IG1fZmxhZ3MgeyAwIH07
Ci0gICAgY29uc3QgdWludDhfdCBIYXNGYWxsYmFja1RyYW5zaXRpb24gPSAweDAxOwotICAgIGNv
bnN0IHVpbnQ4X3QgSXNLaWxsZWQgPSAweDAyOworICAgIGNvbnN0IHVpbnQ4X3QgSXNLaWxsZWQg
PSAweDAxOwogfTsKIAogLy8gRklYTUU6IFBhY2sgdGhpcyBkb3duIHRvIDEyLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZBLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9JbW11dGFibGVORkEuaAppbmRleCAxZjIwMzRm
OTJjYzY2ZGQ4YzFlZTQ4ZWZiMGVlNTFmNjdjZjFkOGE0Li4xMGMyMjU0NTE3NmUwOTEzMWQyMmQ5
M2U1NGQ1MzAwNjU5Y2FjNDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9JbW11dGFibGVORkEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9JbW11dGFibGVORkEuaApAQCAtOTMsOSArOTMsNiBAQCBzdHJ1Y3QgSW1tdXRhYmxlTkZB
IHsKICAgICAgICAgY29uc3QgSW1tdXRhYmxlTkZBJiBpbW11dGFibGVORkE7CiAgICAgICAgIHVp
bnQzMl90IHBvc2l0aW9uOwogCi0gICAgICAgIGNvbnN0IEltbXV0YWJsZVJhbmdlPENoYXJhY3Rl
clR5cGU+JiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBpbW11dGFibGVORkEudHJhbnNpdGlv
bnNbcG9zaXRpb25dOyB9Ci0gICAgICAgIGNvbnN0IEltbXV0YWJsZVJhbmdlPENoYXJhY3RlclR5
cGU+KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJmltbXV0YWJsZU5GQS50cmFuc2l0aW9u
c1twb3NpdGlvbl07IH0KLQogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29uc3RSYW5n
ZUl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCZp
bW11dGFibGVORkEgPT0gJm90aGVyLmltbXV0YWJsZU5GQSk7CkBAIC0xMDksMTEgKzEwNiwyNyBA
QCBzdHJ1Y3QgSW1tdXRhYmxlTkZBIHsKICAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAg
ICAgfQogCisgICAgICAgIENoYXJhY3RlclR5cGUgZmlyc3QoKSBjb25zdAorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gcmFuZ2UoKS5maXJzdDsKKyAgICAgICAgfQorCisgICAgICAgIENo
YXJhY3RlclR5cGUgbGFzdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBy
YW5nZSgpLmxhc3Q7CisgICAgICAgIH0KKwogICAgICAgICBJdGVyYWJsZUNvbnN0VGFyZ2V0cyBk
YXRhKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgSW1tdXRhYmxlUmFuZ2U8
Q2hhcmFjdGVyVHlwZT4mIHJhbmdlID0gaW1tdXRhYmxlTkZBLnRyYW5zaXRpb25zW3Bvc2l0aW9u
XTsKKyAgICAgICAgICAgIGNvbnN0IEltbXV0YWJsZVJhbmdlPENoYXJhY3RlclR5cGU+JiByYW5n
ZSA9IHRoaXMtPnJhbmdlKCk7CiAgICAgICAgICAgICByZXR1cm4geyBpbW11dGFibGVORkEsIHJh
bmdlLnRhcmdldFN0YXJ0LCByYW5nZS50YXJnZXRFbmQgfTsKICAgICAgICAgfTsKKworICAgIHBy
aXZhdGU6CisgICAgICAgIGNvbnN0IEltbXV0YWJsZVJhbmdlPENoYXJhY3RlclR5cGU+JiByYW5n
ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBpbW11dGFibGVORkEudHJh
bnNpdGlvbnNbcG9zaXRpb25dOworICAgICAgICB9CiAgICAgfTsKIAogICAgIHN0cnVjdCBJdGVy
YWJsZUNvbnN0UmFuZ2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0ltbXV0YWJsZU5GQU5vZGVCdWlsZGVyLmgKaW5kZXggNDU0MTRiZTFkZjZkOGE0
YTRmNWY4Y2Q0MDI0ZTk4ZjRkNGQzMGYwNy4uN2ZmYWZjZWE0OWM0ZTYzNGVjY2E1MGUyZTcxN2U1
MjYxOTkxOThkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
SW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9JbW11dGFibGVORkFOb2RlQnVpbGRlci5oCkBAIC04OSw4ICs4OSw4IEBAIHB1Ymxp
YzoKICAgICB9OwogICAgIAogICAgIHN0cnVjdCBGYWtlUmFuZ2VJdGVyYXRvciB7Ci0gICAgICAg
IGNvbnN0IFRyaXZpYWxSYW5nZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gcmFuZ2U7IH0K
LSAgICAgICAgY29uc3QgVHJpdmlhbFJhbmdlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4g
JnJhbmdlOyB9CisgICAgICAgIENoYXJhY3RlclR5cGUgZmlyc3QoKSBjb25zdCB7IHJldHVybiBy
YW5nZS5maXJzdDsgfQorICAgICAgICBDaGFyYWN0ZXJUeXBlIGxhc3QoKSBjb25zdCB7IHJldHVy
biByYW5nZS5sYXN0OyB9CiAgICAgICAgIHVpbnQzMl90IGRhdGEoKSBjb25zdCB7IHJldHVybiB0
YXJnZXRJZDsgfQogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmFrZVJhbmdlSXRlcmF0
b3ImIG90aGVyKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9NdXRhYmxlUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL011dGFibGVSYW5nZS5oCmluZGV4IDM1ZDE0MmJiODFiNTIzZTkwYjQwNzFhZTEwZTYwMjI1
ZGJiZTU5MjEuLjM0Y2VlYTEyZmIyMmNiZDhhYjJlY2Q3NTY0ZDM4YWRiOTVjMTgxMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL011dGFibGVSYW5nZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL011dGFibGVSYW5nZS5oCkBAIC04
OSw4ICs4OSw2IEBAIHB1YmxpYzoKICAgICB1aW50MzJfdCBuZXh0UmFuZ2VJbmRleDsKICAgICBD
aGFyYWN0ZXJUeXBlIGZpcnN0OwogICAgIENoYXJhY3RlclR5cGUgbGFzdDsKLQotICAgIENoYXJh
Y3RlclR5cGUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGxhc3QgLSBmaXJzdDsgfQogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTXV0YWJsZVJhbmdl
TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTXV0YWJsZVJhbmdlTGlz
dC5oCmluZGV4IGNiMTI4OThmMzMxYTNjM2EwOGM0MmVkM2I3OGUzYTUzNjdiMDQzMDQuLjE2MmM2
NTllMGU1Zjk3OGZlYTI3Nzc0ODlkNDM3NWZkODYyZDFiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL011dGFibGVSYW5nZUxpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9NdXRhYmxlUmFuZ2VMaXN0LmgKQEAgLTQ4LDYgKzQ4
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgVHlwZWRNdXRhYmxlUmFuZ2UmIG9wZXJhdG9y
KigpIGNvbnN0IHsgcmV0dXJuIHJhbmdlTGlzdC5tX3Jhbmdlc1tpbmRleF07IH0KICAgICAgICAg
Y29uc3QgVHlwZWRNdXRhYmxlUmFuZ2UqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmcmFu
Z2VMaXN0Lm1fcmFuZ2VzW2luZGV4XTsgfQogCisgICAgICAgIENoYXJhY3RlclR5cGUgZmlyc3Qo
KSBjb25zdCB7IHJldHVybiByYW5nZUxpc3QubV9yYW5nZXNbaW5kZXhdLmZpcnN0OyB9CisgICAg
ICAgIENoYXJhY3RlclR5cGUgbGFzdCgpIGNvbnN0IHsgcmV0dXJuIHJhbmdlTGlzdC5tX3Jhbmdl
c1tpbmRleF0ubGFzdDsgfQorICAgICAgICBDaGFyYWN0ZXJUeXBlIGRhdGEoKSBjb25zdCB7IHJl
dHVybiByYW5nZUxpc3QubV9yYW5nZXNbaW5kZXhdLmRhdGE7IH0KKwogICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKICAg
ICAgICAgICAgIEFTU0VSVCgmcmFuZ2VMaXN0ID09ICZvdGhlci5yYW5nZUxpc3QpOwpAQCAtOTks
MjEgKzEwMywyMSBAQCBwdWJsaWM6CiAgICAgICAgIHVpbnQzMl90IGxhc3RTZWxmUmFuZ2VJbmRl
eCA9IDA7CiAgICAgICAgIHVpbnQzMl90IHNlbGZSYW5nZUluZGV4ID0gMDsKIAotICAgICAgICBh
dXRvIG90aGVyUmFuZ2VPZmZzZXQgPSBvdGhlckl0ZXJhdG9yLT5maXJzdDsgLy8gVG8gZ2V0IHRo
ZSByaWdodCB0eXBlIDopCisgICAgICAgIGF1dG8gb3RoZXJSYW5nZU9mZnNldCA9IG90aGVySXRl
cmF0b3IuZmlyc3QoKTsgLy8gVG8gZ2V0IHRoZSByaWdodCB0eXBlIDopCiAgICAgICAgIG90aGVy
UmFuZ2VPZmZzZXQgPSAwOwogCiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIFR5cGVkTXV0YWJs
ZVJhbmdlKiBhY3RpdmVTZWxmUmFuZ2UgPSAmbV9yYW5nZXNbc2VsZlJhbmdlSW5kZXhdOwogCiAg
ICAgICAgICAgICAvLyBGaXJzdCwgd2UgbW92ZSBmb3J3YXJkIHVudGlsIHdlIGZpbmQgc29tZXRo
aW5nIGludGVyZXN0aW5nLgotICAgICAgICAgICAgaWYgKGFjdGl2ZVNlbGZSYW5nZS0+bGFzdCA8
IG90aGVySXRlcmF0b3ItPmZpcnN0ICsgb3RoZXJSYW5nZU9mZnNldCkgeworICAgICAgICAgICAg
aWYgKGFjdGl2ZVNlbGZSYW5nZS0+bGFzdCA8IG90aGVySXRlcmF0b3IuZmlyc3QoKSArIG90aGVy
UmFuZ2VPZmZzZXQpIHsKICAgICAgICAgICAgICAgICBsYXN0U2VsZlJhbmdlSW5kZXggPSBzZWxm
UmFuZ2VJbmRleDsKICAgICAgICAgICAgICAgICBzZWxmUmFuZ2VJbmRleCA9IGFjdGl2ZVNlbGZS
YW5nZS0+bmV4dFJhbmdlSW5kZXg7CiAgICAgICAgICAgICAgICAgcmVhY2hlZFNlbGZFbmQgPSAh
c2VsZlJhbmdlSW5kZXg7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAob3RoZXJJdGVyYXRvci0+bGFzdCA8IGFjdGl2ZVNlbGZSYW5nZS0+
Zmlyc3QpIHsKLSAgICAgICAgICAgICAgICBpbnNlcnRCZXR3ZWVuKGxhc3RTZWxmUmFuZ2VJbmRl
eCwgc2VsZlJhbmdlSW5kZXgsIG90aGVySXRlcmF0b3ItPmZpcnN0ICsgb3RoZXJSYW5nZU9mZnNl
dCwgb3RoZXJJdGVyYXRvci0+bGFzdCwgZGF0YUNvbnZlcnRlci5jb252ZXJ0KG90aGVySXRlcmF0
b3IuZGF0YSgpKSk7CisgICAgICAgICAgICBpZiAob3RoZXJJdGVyYXRvci5sYXN0KCkgPCBhY3Rp
dmVTZWxmUmFuZ2UtPmZpcnN0KSB7CisgICAgICAgICAgICAgICAgaW5zZXJ0QmV0d2VlbihsYXN0
U2VsZlJhbmdlSW5kZXgsIHNlbGZSYW5nZUluZGV4LCBvdGhlckl0ZXJhdG9yLmZpcnN0KCkgKyBv
dGhlclJhbmdlT2Zmc2V0LCBvdGhlckl0ZXJhdG9yLmxhc3QoKSwgZGF0YUNvbnZlcnRlci5jb252
ZXJ0KG90aGVySXRlcmF0b3IuZGF0YSgpKSk7CiAKICAgICAgICAgICAgICAgICArK290aGVySXRl
cmF0b3I7CiAgICAgICAgICAgICAgICAgb3RoZXJSYW5nZU9mZnNldCA9IDA7CkBAIC0xMjYsMjQg
KzEzMCwyNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBCdXQgd2UgZG9uJ3Qga25vdyBob3cg
dGhleSBjb2xsaWRlLgogCiAgICAgICAgICAgICAvLyBEbyB3ZSBoYXZlIGEgcGFydCBvbiB0aGUg
bGVmdD8gQ3JlYXRlIGEgbmV3IHJhbmdlIGZvciBpdC4KLSAgICAgICAgICAgIGlmIChhY3RpdmVT
ZWxmUmFuZ2UtPmZpcnN0IDwgb3RoZXJJdGVyYXRvci0+Zmlyc3QgKyBvdGhlclJhbmdlT2Zmc2V0
KSB7CisgICAgICAgICAgICBpZiAoYWN0aXZlU2VsZlJhbmdlLT5maXJzdCA8IG90aGVySXRlcmF0
b3IuZmlyc3QoKSArIG90aGVyUmFuZ2VPZmZzZXQpIHsKICAgICAgICAgICAgICAgICBEYXRhVHlw
ZSBjb3BpZWREYXRhID0gYWN0aXZlU2VsZlJhbmdlLT5kYXRhOwogICAgICAgICAgICAgICAgIENo
YXJhY3RlclR5cGUgbmV3UmFuZ2VGaXJzdENoYXJhY3RlciA9IGFjdGl2ZVNlbGZSYW5nZS0+Zmly
c3Q7Ci0gICAgICAgICAgICAgICAgYWN0aXZlU2VsZlJhbmdlLT5maXJzdCA9IG90aGVySXRlcmF0
b3ItPmZpcnN0ICsgb3RoZXJSYW5nZU9mZnNldDsKLSAgICAgICAgICAgICAgICBpbnNlcnRCZXR3
ZWVuKGxhc3RTZWxmUmFuZ2VJbmRleCwgc2VsZlJhbmdlSW5kZXgsIG5ld1JhbmdlRmlyc3RDaGFy
YWN0ZXIsIG90aGVySXRlcmF0b3ItPmZpcnN0ICsgb3RoZXJSYW5nZU9mZnNldCAtIDEsIFdURjo6
bW92ZShjb3BpZWREYXRhKSk7CisgICAgICAgICAgICAgICAgYWN0aXZlU2VsZlJhbmdlLT5maXJz
dCA9IG90aGVySXRlcmF0b3IuZmlyc3QoKSArIG90aGVyUmFuZ2VPZmZzZXQ7CisgICAgICAgICAg
ICAgICAgaW5zZXJ0QmV0d2VlbihsYXN0U2VsZlJhbmdlSW5kZXgsIHNlbGZSYW5nZUluZGV4LCBu
ZXdSYW5nZUZpcnN0Q2hhcmFjdGVyLCBvdGhlckl0ZXJhdG9yLmZpcnN0KCkgKyBvdGhlclJhbmdl
T2Zmc2V0IC0gMSwgV1RGOjptb3ZlKGNvcGllZERhdGEpKTsKICAgICAgICAgICAgICAgICBhY3Rp
dmVTZWxmUmFuZ2UgPSAmbV9yYW5nZXNbc2VsZlJhbmdlSW5kZXhdOwotICAgICAgICAgICAgfSBl
bHNlIGlmIChvdGhlckl0ZXJhdG9yLT5maXJzdCArIG90aGVyUmFuZ2VPZmZzZXQgPCBhY3RpdmVT
ZWxmUmFuZ2UtPmZpcnN0KSB7Ci0gICAgICAgICAgICAgICAgaW5zZXJ0QmV0d2VlbihsYXN0U2Vs
ZlJhbmdlSW5kZXgsIHNlbGZSYW5nZUluZGV4LCBvdGhlckl0ZXJhdG9yLT5maXJzdCArIG90aGVy
UmFuZ2VPZmZzZXQsIGFjdGl2ZVNlbGZSYW5nZS0+Zmlyc3QgLSAxLCBkYXRhQ29udmVydGVyLmNv
bnZlcnQob3RoZXJJdGVyYXRvci5kYXRhKCkpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAob3Ro
ZXJJdGVyYXRvci5maXJzdCgpICsgb3RoZXJSYW5nZU9mZnNldCA8IGFjdGl2ZVNlbGZSYW5nZS0+
Zmlyc3QpIHsKKyAgICAgICAgICAgICAgICBpbnNlcnRCZXR3ZWVuKGxhc3RTZWxmUmFuZ2VJbmRl
eCwgc2VsZlJhbmdlSW5kZXgsIG90aGVySXRlcmF0b3IuZmlyc3QoKSArIG90aGVyUmFuZ2VPZmZz
ZXQsIGFjdGl2ZVNlbGZSYW5nZS0+Zmlyc3QgLSAxLCBkYXRhQ29udmVydGVyLmNvbnZlcnQob3Ro
ZXJJdGVyYXRvci5kYXRhKCkpKTsKIAogICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGZSYW5nZSA9
ICZtX3Jhbmdlc1tzZWxmUmFuZ2VJbmRleF07Ci0gICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShvdGhlclJhbmdlT2Zmc2V0IDwgYWN0aXZlU2VsZlJhbmdlLT5maXJzdCAtIG90aGVy
SXRlcmF0b3ItPmZpcnN0LCAiVGhlIG9mZnNldCBtdXN0IG1vdmUgZm9yd2FyZCBvciB3ZSBjb3Vs
ZCBnZXQgc3R1Y2sgb24gdGhpcyBvcGVyYXRpb24uIik7Ci0gICAgICAgICAgICAgICAgb3RoZXJS
YW5nZU9mZnNldCA9IGFjdGl2ZVNlbGZSYW5nZS0+Zmlyc3QgLSBvdGhlckl0ZXJhdG9yLT5maXJz
dDsKKyAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG90aGVyUmFuZ2VPZmZzZXQg
PCBhY3RpdmVTZWxmUmFuZ2UtPmZpcnN0IC0gb3RoZXJJdGVyYXRvci5maXJzdCgpLCAiVGhlIG9m
ZnNldCBtdXN0IG1vdmUgZm9yd2FyZCBvciB3ZSBjb3VsZCBnZXQgc3R1Y2sgb24gdGhpcyBvcGVy
YXRpb24uIik7CisgICAgICAgICAgICAgICAgb3RoZXJSYW5nZU9mZnNldCA9IGFjdGl2ZVNlbGZS
YW5nZS0+Zmlyc3QgLSBvdGhlckl0ZXJhdG9yLmZpcnN0KCk7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIC8vIEhlcmUsIHdlIGtub3cgYm90aCByYW5nZXMgc3RhcnQgYXQgdGhlIHNhbWUg
cG9pbnQsIHdlIG5lZWQgdG8gY3JlYXRlIHRoZSBwYXJ0IHRoYXQgaW50ZXJzZWN0CiAgICAgICAg
ICAgICAvLyBhbmQgbWVyZ2UgdGhlIGRhdGEuCiAKLSAgICAgICAgICAgIGlmIChhY3RpdmVTZWxm
UmFuZ2UtPmxhc3QgPT0gb3RoZXJJdGVyYXRvci0+bGFzdCkgeworICAgICAgICAgICAgaWYgKGFj
dGl2ZVNlbGZSYW5nZS0+bGFzdCA9PSBvdGhlckl0ZXJhdG9yLmxhc3QoKSkgewogICAgICAgICAg
ICAgICAgIC8vIElmIHRoZXkgZmluaXNoIHRvZ2V0aGVyLCB0aGluZ3MgYXJlIHJlYWxseSBlYXN5
OiB3ZSBqdXN0IGFkZCBCIHRvIEEuCiAgICAgICAgICAgICAgICAgZGF0YUNvbnZlcnRlci5leHRl
bmQoYWN0aXZlU2VsZlJhbmdlLT5kYXRhLCBvdGhlckl0ZXJhdG9yLmRhdGEoKSk7CiAKQEAgLTE1
NiwxNSArMTYwLDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGFjdGl2ZVNlbGZSYW5nZS0+bGFzdCA+IG90aGVy
SXRlcmF0b3ItPmxhc3QpIHsKKyAgICAgICAgICAgIGlmIChhY3RpdmVTZWxmUmFuZ2UtPmxhc3Qg
PiBvdGhlckl0ZXJhdG9yLmxhc3QoKSkgewogICAgICAgICAgICAgICAgIC8vIElmIEEgaXMgYmln
Z2VyIHRoYW4gQiwgd2UgYWRkIGEgbWVyZ2VkIHZlcnNpb24gYW5kIG1vdmUgQSB0byB0aGUgcmln
aHQuCiAKICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJUeXBlIGNvbWJpbmVkUGFydFN0YXJ0ID0g
YWN0aXZlU2VsZlJhbmdlLT5maXJzdDsKLSAgICAgICAgICAgICAgICBhY3RpdmVTZWxmUmFuZ2Ut
PmZpcnN0ID0gb3RoZXJJdGVyYXRvci0+bGFzdCArIDE7CisgICAgICAgICAgICAgICAgYWN0aXZl
U2VsZlJhbmdlLT5maXJzdCA9IG90aGVySXRlcmF0b3IubGFzdCgpICsgMTsKIAogICAgICAgICAg
ICAgICAgIERhdGFUeXBlIGNvbWJpbmVkRGF0YSA9IGFjdGl2ZVNlbGZSYW5nZS0+ZGF0YTsKICAg
ICAgICAgICAgICAgICBkYXRhQ29udmVydGVyLmV4dGVuZChjb21iaW5lZERhdGEsIG90aGVySXRl
cmF0b3IuZGF0YSgpKTsKLSAgICAgICAgICAgICAgICBpbnNlcnRCZXR3ZWVuKGxhc3RTZWxmUmFu
Z2VJbmRleCwgc2VsZlJhbmdlSW5kZXgsIGNvbWJpbmVkUGFydFN0YXJ0LCBvdGhlckl0ZXJhdG9y
LT5sYXN0LCBXVEY6Om1vdmUoY29tYmluZWREYXRhKSk7CisgICAgICAgICAgICAgICAgaW5zZXJ0
QmV0d2VlbihsYXN0U2VsZlJhbmdlSW5kZXgsIHNlbGZSYW5nZUluZGV4LCBjb21iaW5lZFBhcnRT
dGFydCwgb3RoZXJJdGVyYXRvci5sYXN0KCksIFdURjo6bW92ZShjb21iaW5lZERhdGEpKTsKIAog
ICAgICAgICAgICAgICAgICsrb3RoZXJJdGVyYXRvcjsKICAgICAgICAgICAgICAgICBvdGhlclJh
bmdlT2Zmc2V0ID0gMDsKQEAgLTE3MiwyMiArMTc2LDI3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBoZXJlLCBCIGVuZHMgYWZ0ZXIgQS4g
V2UgbWVyZ2UgdGhlIGludGVyc2VjdGlvbiBhbmQgbW92ZSBvbi4KLSAgICAgICAgICAgIEFTU0VS
VChvdGhlckl0ZXJhdG9yLT5sYXN0ID4gYWN0aXZlU2VsZlJhbmdlLT5sYXN0KTsKKyAgICAgICAg
ICAgIEFTU0VSVChvdGhlckl0ZXJhdG9yLmxhc3QoKSA+IGFjdGl2ZVNlbGZSYW5nZS0+bGFzdCk7
CiAgICAgICAgICAgICBkYXRhQ29udmVydGVyLmV4dGVuZChhY3RpdmVTZWxmUmFuZ2UtPmRhdGEs
IG90aGVySXRlcmF0b3IuZGF0YSgpKTsKIAotICAgICAgICAgICAgb3RoZXJSYW5nZU9mZnNldCA9
IGFjdGl2ZVNlbGZSYW5nZS0+bGFzdCAtIG90aGVySXRlcmF0b3ItPmZpcnN0ICsgMTsKKyAgICAg
ICAgICAgIG90aGVyUmFuZ2VPZmZzZXQgPSBhY3RpdmVTZWxmUmFuZ2UtPmxhc3QgLSBvdGhlckl0
ZXJhdG9yLmZpcnN0KCkgKyAxOwogICAgICAgICAgICAgbGFzdFNlbGZSYW5nZUluZGV4ID0gc2Vs
ZlJhbmdlSW5kZXg7CiAgICAgICAgICAgICBzZWxmUmFuZ2VJbmRleCA9IGFjdGl2ZVNlbGZSYW5n
ZS0+bmV4dFJhbmdlSW5kZXg7CiAgICAgICAgICAgICByZWFjaGVkU2VsZkVuZCA9ICFzZWxmUmFu
Z2VJbmRleDsKICAgICAgICAgfSB3aGlsZSAoIXJlYWNoZWRTZWxmRW5kICYmIG90aGVySXRlcmF0
b3IgIT0gb3RoZXJFbmQpOwogCiAgICAgICAgIHdoaWxlIChvdGhlckl0ZXJhdG9yICE9IG90aGVy
RW5kKSB7Ci0gICAgICAgICAgICBsYXN0U2VsZlJhbmdlSW5kZXggPSBhcHBlbmRSYW5nZShsYXN0
U2VsZlJhbmdlSW5kZXgsIG90aGVySXRlcmF0b3ItPmZpcnN0ICsgb3RoZXJSYW5nZU9mZnNldCwg
b3RoZXJJdGVyYXRvci0+bGFzdCwgZGF0YUNvbnZlcnRlci5jb252ZXJ0KG90aGVySXRlcmF0b3Iu
ZGF0YSgpKSk7CisgICAgICAgICAgICBsYXN0U2VsZlJhbmdlSW5kZXggPSBhcHBlbmRSYW5nZShs
YXN0U2VsZlJhbmdlSW5kZXgsIG90aGVySXRlcmF0b3IuZmlyc3QoKSArIG90aGVyUmFuZ2VPZmZz
ZXQsIG90aGVySXRlcmF0b3IubGFzdCgpLCBkYXRhQ29udmVydGVyLmNvbnZlcnQob3RoZXJJdGVy
YXRvci5kYXRhKCkpKTsKICAgICAgICAgICAgIG90aGVyUmFuZ2VPZmZzZXQgPSAwOwogICAgICAg
ICAgICAgKytvdGhlckl0ZXJhdG9yOwogICAgICAgICB9CiAgICAgfQogCisgICAgdW5zaWduZWQg
c2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9yYW5nZXMuc2l6ZSgpOworICAg
IH0KKwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9y
YW5nZXMuaXNFbXB0eSgpOwpAQCAtMjQxLDggKzI1MCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGRv
IHsKICAgICAgICAgICAgIG1fcmFuZ2VzLmFwcGVuZChUeXBlZE11dGFibGVSYW5nZShkYXRhQ29u
dmVydGVyLmNvbnZlcnQob3RoZXJJdGVyYXRvci5kYXRhKCkpLAogICAgICAgICAgICAgICAgIGxv
b3BDb3VudGVyICsgMSwKLSAgICAgICAgICAgICAgICBvdGhlckl0ZXJhdG9yLT5maXJzdCwKLSAg
ICAgICAgICAgICAgICBvdGhlckl0ZXJhdG9yLT5sYXN0KSk7CisgICAgICAgICAgICAgICAgb3Ro
ZXJJdGVyYXRvci5maXJzdCgpLAorICAgICAgICAgICAgICAgIG90aGVySXRlcmF0b3IubGFzdCgp
KSk7CiAgICAgICAgICAgICArK2xvb3BDb3VudGVyOwogICAgICAgICAgICAgKytvdGhlckl0ZXJh
dG9yOwogICAgICAgICB9IHdoaWxlIChvdGhlckl0ZXJhdG9yICE9IG90aGVyRW5kKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmNwcAppbmRleCA2YTJiM2U0
MDE5MWZjNzU1NzAyNWMzMzhjOTJjZWFjNDkzZWUwNmJkLi45NGI4YjczZjgzMDNhMzAwOGJhY2Uz
NmM2YWIwODkwNzU0ZWViY2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ORkFUb0RGQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvTkZBVG9ERkEuY3BwCkBAIC0zMzYsNzMgKzMzNiw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBj
cmVhdGVDb21iaW5lZFRyYW5zaXRpb24oUHJlYWxsb2NhdGVkTkZBTm9kZVJhbmdlTGlzdCYgY29t
YmluCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgY2FuVXNlRmFsbGJhY2tUcmFuc2l0
aW9uKGNvbnN0IFByZWFsbG9jYXRlZE5GQU5vZGVSYW5nZUxpc3QmIHJhbmdlTGlzdCkKLXsKLSAg
ICAvLyBUcmFuc2l0aW9ucyBjYW4gY29udGFpbnMgIjAiIGlmIHRoZSBleHByZXNzaW9uIGhhcyBh
IGVuZC1vZi1saW5lIG1hcmtlci4KLSAgICAvLyBGYWxsYmFjayB0cmFuc2l0aW9ucyBjb3ZlciAx
LTEyNy4gV2UgaGF2ZSB0byBiZSBjYXJlZnVsIHdpdGggdGhlIGZpcnN0LgotCi0gICAgYXV0byBp
dGVyYXRvciA9IHJhbmdlTGlzdC5iZWdpbigpOwotICAgIGF1dG8gZW5kID0gcmFuZ2VMaXN0LmVu
ZCgpOwotICAgIGlmIChpdGVyYXRvciA9PSBlbmQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGNoYXIgbGFzdFNlZW5DaGFyYWN0ZXIgPSAwOwotICAgIGlmICghaXRlcmF0b3ItPmZpcnN0
KSB7Ci0gICAgICAgIGxhc3RTZWVuQ2hhcmFjdGVyID0gaXRlcmF0b3ItPmxhc3Q7Ci0gICAgICAg
IGlmIChsYXN0U2VlbkNoYXJhY3RlciA9PSAxMjcpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgKytpdGVyYXRvcjsKLSAgICB9Ci0KLSAgICBmb3IgKDtpdGVyYXRvciAhPSBlbmQ7
ICsraXRlcmF0b3IpIHsKLSAgICAgICAgQVNTRVJUKGl0ZXJhdG9yLT5maXJzdCA+IGxhc3RTZWVu
Q2hhcmFjdGVyKTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yLT5maXJzdCAhPSBsYXN0U2VlbkNoYXJh
Y3RlciArIDEpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKGl0ZXJh
dG9yLT5sYXN0ID09IDEyNykKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBsYXN0
U2VlbkNoYXJhY3RlciA9IGl0ZXJhdG9yLT5sYXN0OwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdWludDMyX3QgZmluZEJlc3RGYWxsYmFja1RhcmdldChjb25z
dCBQcmVhbGxvY2F0ZWRORkFOb2RlUmFuZ2VMaXN0JiByYW5nZUxpc3QsIGNvbnN0IFZlY3Rvcjx1
bnNpZ25lZCwgMTI4PiYgcmFuZ2VUb1RhcmdldCkKLXsKLSAgICBBU1NFUlQoY2FuVXNlRmFsbGJh
Y2tUcmFuc2l0aW9uKHJhbmdlTGlzdCkpOwotCi0gICAgSGFzaE1hcDx1aW50MzJfdCwgdW5zaWdu
ZWQsIERlZmF1bHRIYXNoPHVpbnQzMl90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czx1aW50MzJfdD4+IGhpc3RvZ3JhbTsKLQotICAgIHVuc2lnbmVkIHJhbmdlVG9U
YXJnZXRJbmRleCA9IDA7Ci0gICAgYXV0byBpdGVyYXRvciA9IHJhbmdlTGlzdC5iZWdpbigpOwot
ICAgIGF1dG8gZW5kID0gcmFuZ2VMaXN0LmVuZCgpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
aXRlcmF0b3IgIT0gZW5kLCAiQW4gZW1wdHkgcmFuZ2UgbGlzdCBjYW5ub3QgdXNlIGEgZmFsbGJh
Y2sgdHJhbnNpdGlvbi4iKTsKLQotICAgIGlmICghaXRlcmF0b3ItPmZpcnN0ICYmICFpdGVyYXRv
ci0+bGFzdCkgewotICAgICAgICArK2l0ZXJhdG9yOwotICAgICAgICArK3JhbmdlVG9UYXJnZXRJ
bmRleDsKLSAgICB9Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpdGVyYXRvciAhPSBlbmQsICJB
biBlbXB0eSByYW5nZSBsaXN0IG1hdGNoaW5nIG9ubHkgemVybyBjYW5ub3QgdXNlIGEgZmFsbGJh
Y2sgdHJhbnNpdGlvbi4iKTsKLQotICAgIHVpbnQzMl90IGJlc3RUYXJnZXQgPSByYW5nZVRvVGFy
Z2V0W3JhbmdlVG9UYXJnZXRJbmRleF07Ci0gICAgdW5zaWduZWQgYmVzdFRhcmdldFNjb3JlID0g
IWl0ZXJhdG9yLT5maXJzdCA/IGl0ZXJhdG9yLT5zaXplKCkgLSAxIDogaXRlcmF0b3ItPnNpemUo
KTsKLSAgICBoaXN0b2dyYW0uYWRkKGJlc3RUYXJnZXQsIGJlc3RUYXJnZXRTY29yZSk7Ci0gICAg
KytpdGVyYXRvcjsKLSAgICArK3JhbmdlVG9UYXJnZXRJbmRleDsKLQotICAgIGZvciAoO2l0ZXJh
dG9yICE9IGVuZDsgKytpdGVyYXRvciwgKytyYW5nZVRvVGFyZ2V0SW5kZXgpIHsKLSAgICAgICAg
dW5zaWduZWQgcmFuZ2VTaXplID0gaXRlcmF0b3ItPnNpemUoKTsKLSAgICAgICAgdWludDMyX3Qg
dGFyZ2V0ID0gcmFuZ2VUb1RhcmdldFtyYW5nZVRvVGFyZ2V0SW5kZXhdOwotICAgICAgICBhdXRv
IGFkZFJlc3VsdCA9IGhpc3RvZ3JhbS5hZGQodGFyZ2V0LCByYW5nZVNpemUpOwotICAgICAgICBp
ZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSArPSByYW5nZVNpemU7Ci0gICAgICAgIGlmIChhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID4gYmVzdFRhcmdldFNjb3JlKSB7Ci0gICAgICAgICAgICBiZXN0VGFyZ2V0U2NvcmUgPSBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgICAgICAgICAgYmVzdFRhcmdldCA9IHRhcmdl
dDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gYmVzdFRhcmdldDsKLX0KLQogc3RhdGlj
IEFMV0FZU19JTkxJTkUgdW5zaWduZWQgZ2V0T3JDcmVhdGVERkFOb2RlKGNvbnN0IE5vZGVJZFNl
dCYgbmZhTm9kZVNldCwgY29uc3QgTkZBJiBuZmEsIERGQSYgZGZhLCBVbmlxdWVOb2RlSWRTZXRU
YWJsZSYgdW5pcXVlTm9kZUlkU2V0VGFibGUsIFZlY3RvcjxVbmlxdWVOb2RlSWRTZXRJbXBsKj4m
IHVucHJvY2Vzc2VkTm9kZXMpCiB7CiAgICAgTm9kZUlkU2V0VG9VbmlxdWVOb2RlSWRTZXRTb3Vy
Y2Ugbm9kZUlkU2V0VG9VbmlxdWVOb2RlSWRTZXRTb3VyY2UoZGZhLCBuZmEsIG5mYU5vZGVTZXQp
OwpAQCAtNDMyLDQ2ICszNjUsMjQgQEAgREZBIE5GQVRvREZBOjpjb252ZXJ0KE5GQSYgbmZhKQog
ICAgIHVucHJvY2Vzc2VkTm9kZXMuYXBwZW5kKGFkZFJlc3VsdC5pdGVyYXRvci0+aW1wbCgpKTsK
IAogICAgIFByZWFsbG9jYXRlZE5GQU5vZGVSYW5nZUxpc3QgY29tYmluZWRSYW5nZUxpc3Q7Ci0g
ICAgVmVjdG9yPHVuc2lnbmVkLCAxMjg+IHJhbmdlVG9UYXJnZXQ7CiAgICAgZG8gewogICAgICAg
ICBVbmlxdWVOb2RlSWRTZXRJbXBsKiB1bmlxdWVOb2RlSWRTZXRJbXBsID0gdW5wcm9jZXNzZWRO
b2Rlcy50YWtlTGFzdCgpOwogICAgICAgICBjcmVhdGVDb21iaW5lZFRyYW5zaXRpb24oY29tYmlu
ZWRSYW5nZUxpc3QsICp1bmlxdWVOb2RlSWRTZXRJbXBsLCBuZmEsIG5mYU5vZGVDbG9zdXJlcyk7
CiAKLSAgICAgICAgcmFuZ2VUb1RhcmdldC5jbGVhcigpOworICAgICAgICB1bnNpZ25lZCB0cmFu
c2l0aW9uc1N0YXJ0ID0gZGZhLnRyYW5zaXRpb25SYW5nZXMuc2l6ZSgpOwogICAgICAgICBmb3Ig
KGNvbnN0IE5GQU5vZGVSYW5nZSYgcmFuZ2UgOiBjb21iaW5lZFJhbmdlTGlzdCkgewogICAgICAg
ICAgICAgdW5zaWduZWQgdGFyZ2V0Tm9kZUlkID0gZ2V0T3JDcmVhdGVERkFOb2RlKHJhbmdlLmRh
dGEsIG5mYSwgZGZhLCB1bmlxdWVOb2RlSWRTZXRUYWJsZSwgdW5wcm9jZXNzZWROb2Rlcyk7Ci0g
ICAgICAgICAgICByYW5nZVRvVGFyZ2V0LmFwcGVuZCh0YXJnZXROb2RlSWQpOworICAgICAgICAg
ICAgZGZhLnRyYW5zaXRpb25SYW5nZXMuYXBwZW5kKHsgcmFuZ2UuZmlyc3QsIHJhbmdlLmxhc3Qg
fSk7CisgICAgICAgICAgICBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9ucy5hcHBlbmQodGFyZ2V0
Tm9kZUlkKTsKICAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdXNlRmFsbGJhY2tUcmFuc2l0aW9u
ID0gY2FuVXNlRmFsbGJhY2tUcmFuc2l0aW9uKGNvbWJpbmVkUmFuZ2VMaXN0KTsKLSAgICAgICAg
dWludDMyX3QgcHJlZmVyZWRGYWxsYmFja1RhcmdldCA9IDA7Ci0gICAgICAgIGlmICh1c2VGYWxs
YmFja1RyYW5zaXRpb24pCi0gICAgICAgICAgICBwcmVmZXJlZEZhbGxiYWNrVGFyZ2V0ID0gZmlu
ZEJlc3RGYWxsYmFja1RhcmdldChjb21iaW5lZFJhbmdlTGlzdCwgcmFuZ2VUb1RhcmdldCk7Ci0K
LSAgICAgICAgdW5zaWduZWQgdHJhbnNpdGlvbnNTdGFydCA9IGRmYS50cmFuc2l0aW9uQ2hhcmFj
dGVycy5zaXplKCk7Ci0gICAgICAgIHVuc2lnbmVkIHJhbmdlVG9UYXJnZXRJbmRleCA9IDA7Ci0K
LSAgICAgICAgZm9yIChjb25zdCBORkFOb2RlUmFuZ2UmIHJhbmdlIDogY29tYmluZWRSYW5nZUxp
c3QpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldE5vZGVJZCA9IHJhbmdlVG9UYXJnZXRb
cmFuZ2VUb1RhcmdldEluZGV4XTsKLQotICAgICAgICAgICAgaWYgKCEodXNlRmFsbGJhY2tUcmFu
c2l0aW9uICYmIHRhcmdldE5vZGVJZCA9PSBwcmVmZXJlZEZhbGxiYWNrVGFyZ2V0KSkgewotICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJhbmdlLmZpcnN0OyBpIDw9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihyYW5nZS5sYXN0KTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRm
YS50cmFuc2l0aW9uQ2hhcmFjdGVycy5hcHBlbmQoc3RhdGljX2Nhc3Q8dWludDhfdD4oaSkpOwot
ICAgICAgICAgICAgICAgICAgICBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9ucy5hcHBlbmQodGFy
Z2V0Tm9kZUlkKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICArK3JhbmdlVG9UYXJnZXRJbmRleDsKLSAgICAgICAgfQotICAgICAgICB1bnNpZ25lZCB0cmFu
c2l0aW9uc0VuZCA9IGRmYS50cmFuc2l0aW9uQ2hhcmFjdGVycy5zaXplKCk7CisgICAgICAgIHVu
c2lnbmVkIHRyYW5zaXRpb25zRW5kID0gZGZhLnRyYW5zaXRpb25SYW5nZXMuc2l6ZSgpOwogICAg
ICAgICB1bnNpZ25lZCB0cmFuc2l0aW9uc0xlbmd0aCA9IHRyYW5zaXRpb25zRW5kIC0gdHJhbnNp
dGlvbnNTdGFydDsKKwogICAgICAgICB1bnNpZ25lZCBkZmFOb2RlSWQgPSB1bmlxdWVOb2RlSWRT
ZXRJbXBsLT5tX2RmYU5vZGVJZDsKICAgICAgICAgREZBTm9kZSYgZGZhU291cmNlTm9kZSA9IGRm
YS5ub2Rlc1tkZmFOb2RlSWRdOwotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHRyYW5zaXRp
b25zTGVuZ3RoIDwgMTI3LCAiVHJhbnNpdGlvbnMgY292ZXJpbmcgdGhlIGVudGlyZSBhbHBoYWJl
dCBzaG91bGQgdXNlIGEgZmFsbGJhY2sgdHJhbnNpdGlvbiIpOwogICAgICAgICBkZmFTb3VyY2VO
b2RlLnNldFRyYW5zaXRpb25zKHRyYW5zaXRpb25zU3RhcnQsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KHRyYW5zaXRpb25zTGVuZ3RoKSk7Ci0KLSAgICAgICAgaWYgKHVzZUZhbGxiYWNrVHJhbnNpdGlv
bikKLSAgICAgICAgICAgIGRmYVNvdXJjZU5vZGUuYWRkRmFsbGJhY2tUcmFuc2l0aW9uKGRmYSwg
cHJlZmVyZWRGYWxsYmFja1RhcmdldCk7CiAgICAgfSB3aGlsZSAoIXVucHJvY2Vzc2VkTm9kZXMu
aXNFbXB0eSgpKTsKKwogICAgIHJldHVybiBkZmE7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4YTMzY2FjMGI3ZTEzMjhhNzVkNTk0Nzgw
MjdhMjFiYzU2ODY3NjRkLi42ZGY5NDE0N2VhNmJlYmZlNGI5NGM3MmNjNDliMDQzZTljMTliY2Ey
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTUtMDctMDIgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIFtDb250ZW50IEV4dGVuc2lvbnNdIE1ha2UgdGhlIERGQSB0cmFu
c2l0aW9ucyByYW5nZXMgaW5zdGVhZCBvZiBjaGFyYWN0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY1NzUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Db250ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0RGQU1pbmltaXplci5jcHA6CisgICAgICAgIFNpbmNlIHRoZSBtaW5pbWl6ZXIgaXMg
cGVyZmVjdCwgd2UgZ2V0IHRoZSBtaW5pbWFsIHNvbHV0aW9uIG5vdywKKyAgICAgICAgd2hpY2gg
aXMgcmVhbGx5IGNvb2whCisKIDIwMTUtMDYtMjkgIEpha2UgTmllbHNlbiAgPGphY29iX25pZWxz
ZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB0aW1lb3V0IGluIHJ1bi13ZWJraXQtdGVzdHMg
Zm9yIGxhdW5jaGluZyB0aGUgc2ltdWxhdG9yCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAppbmRleCAxNGMyNWI0YTkx
NGI1Y2M0NzZlOTVlMzhkNjBjZDEwZDcyYjc3OWQ0Li41MWI0Zjc3OGE3NGMzMTAzNjEyYWE4ZGYw
Y2ZmZWNhYThkZWRjYjUyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTE5MzAsNCArMTkzMCw0NzAgQEAg
VEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBRdWFudGlmaWVkT25lT3JNb3JlUmFuZ2VzQ2Fz
ZTExQW5kMTNJbkdyb3VwcykKICAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZGRqanl5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lv
bnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CiB9CiAKK1RFU1RfRihD
b250ZW50RXh0ZW5zaW9uVGVzdCwgQ29tYmluZWRSYW5nZU92ZXJsYXBDYXNlMSkKK3sKKyAgICBh
dXRvIG1hdGNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwi
YmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihmb28pKlthLW1dXCJ9fSwi
CisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJpZ25vcmUtcHJldmlvdXMtcnVsZXNc
In0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihiYXIpKltjLWVdXCJ9fV0iKTsKKwor
ICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYTovL3d3
dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xv
YWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJiOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6
OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoImM6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9LCB0cnVlKTsKKyAgICB0ZXN0UmVx
dWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImQ6Ly93d3cud2Via2l0Lm9y
Zy8iKSwgeyB9LCB0cnVlKTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoImU6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9LCB0cnVlKTsKKyAgICB0ZXN0
UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImY6Ly93d3cud2Via2l0
Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOwor
ICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgibTovL3d3
dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xv
YWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJuOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisKKyAgICBhdXRvIHNlYXJjaEJhY2tlbmQg
PSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dl
clwiOntcInVybC1maWx0ZXJcIjpcIihmb28pKlthLW1dXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rp
b25cIjp7XCJ0eXBlXCI6XCJpZ25vcmUtcHJldmlvdXMtcnVsZXNcIn0sXCJ0cmlnZ2VyXCI6e1wi
dXJsLWZpbHRlclwiOlwiKGJhcikqW2MtZV1cIn19XSIpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJj
aEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hLnh4eC8iKSwgeyBDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0
KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5iLnh4eC8iKSwg
eyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RS
ZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jLnh4
eC8iKSwgeyB9LCB0cnVlKTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZC54eHgvIiksIHsgfSwgdHJ1ZSk7CisgICAgdGVzdFJl
cXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmUueHh4
LyIpLCB7IH0sIHRydWUpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoInp6ejovL3d3dy5mLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5tLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5uLnh4eC8iKSwgeyB9KTsKK30KKwor
CitURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIENvbWJpbmVkUmFuZ2VPdmVybGFwQ2FzZTIp
Cit7CisgICAgYXV0byBtYXRjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntc
InR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4oZm9vKSpb
YS1tXVwifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiaWdub3JlLXByZXZp
b3VzLXJ1bGVzXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4oYmFyKSpiXCJ9fV0i
KTsKKworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
YTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpC
bG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJiOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSwgdHJ1ZSk7CisgICAgdGVzdFJlcXVl
c3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJjOi8vd3d3LndlYmtpdC5vcmcv
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0
ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoIm06Ly93d3cud2Vi
a2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0p
OworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgibjov
L3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOworCisgICAgYXV0byBzZWFyY2hCYWNrZW5kID0gbWFr
ZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7
XCJ1cmwtZmlsdGVyXCI6XCIoZm9vKSpbYS1tXVwifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6
e1widHlwZVwiOlwiaWdub3JlLXByZXZpb3VzLXJ1bGVzXCJ9LFwidHJpZ2dlclwiOntcInVybC1m
aWx0ZXJcIjpcIihiYXIpKmxcIn19XSIpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5rLnh4eC8iKSwgeyBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNl
YXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5sLnh4eC8iKSwgeyB9
LCB0cnVlKTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJ6eno6Ly93d3cubS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6
OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1l
bnRSZXF1ZXN0KCJ6eno6Ly93d3cubi54eHgvIiksIHsgfSk7Cit9CisKK1RFU1RfRihDb250ZW50
RXh0ZW5zaW9uVGVzdCwgQ29tYmluZWRSYW5nZU92ZXJsYXBDYXNlMykKK3sKKyAgICBhdXRvIG1h
dGNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tc
In0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihmb28pKltiLWRdXCJ9fSwiCisgICAg
ICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3Rv
clwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGJhcikqW2Et
bV1cIn19XSIpOworCisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJhOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJiOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qo
bWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJkOi8vd3d3LndlYmtpdC5vcmcvIiks
IHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3Is
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJl
cXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJlOi8vd3d3LndlYmtpdC5v
cmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2Vs
ZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJtOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5
cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJuOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisK
KyAgICBhdXRvIHNlYXJjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5
cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIihmb28pKltiLWRd
XCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25l
XCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6
XCIoYmFyKSpbYS1tXVwifX1dIik7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmEueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0
KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5iLnh4eC8iKSwg
eyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3Rvciwg
Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVx
dWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZC54eHgv
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0
b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmUu
eHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNl
bGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoInp6ejovL3d3dy5tLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlw
ZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cubi54eHgvIiksIHsgfSk7Cit9CisK
K1RFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgQ29tYmluZWRSYW5nZU92ZXJsYXBDYXNlNCkK
K3sKKyAgICBhdXRvIG1hdGNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1wi
dHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihmb28pKmxc
In19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVc
IixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpc
Il4oYmFyKSpbYS1tXVwifX1dIik7CisKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoImE6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVx
dWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoIms6Ly93d3cud2Via2l0Lm9y
Zy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxl
Y3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoImw6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlw
ZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6
OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoIm06Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRj
aEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoIm46Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9
KTsKKworICAgIGF1dG8gc2VhcmNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6
e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGZvbykq
bFwifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9u
ZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwi
OlwiKGJhcikqW2EtbV1cIn19XSIpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVz
dChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuay54eHgvIiks
IHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3Ig
fSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
enp6Oi8vd3d3LmwueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NE
aXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tM
b2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoInp6ejovL3d3dy5tLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cubi54eHgvIiksIHsgfSk7Cit9CisKK1RF
U1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgQ29tYmluZWRSYW5nZU92ZXJsYXBDYXNlNSkKK3sK
KyAgICBhdXRvIG1hdGNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlw
ZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihmb28pKlthLWVd
XCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25l
XCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6
XCJeKGJhcikqW2UtaF1cIn19XSIpOworCisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJhOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImQ6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0
KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZTovL3d3dy53ZWJraXQub3JnLyIp
LCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9y
LCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RS
ZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZjovL3d3dy53ZWJraXQu
b3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNl
bGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgiaDovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25U
eXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaTovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOwor
CisgICAgYXV0byBzZWFyY2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0
eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoZm9vKSpbYS1l
XVwifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9u
ZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwi
OlwiKGJhcikqW2UtaF1cIn19XSIpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kLnh4eC8iKSwgeyBDb250ZW50RXh0
ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJj
aEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5lLnh4eC8iKSwgeyBDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChz
ZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZi54eHgvIiksIHsg
Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7
CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6
Oi8vd3d3LmgueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNw
bGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5E
b2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5pLnh4eC8iKSwgeyB9KTsKK30KKworVEVTVF9GKENv
bnRlbnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFJhbmdlT3ZlcmxhcENhc2U2KQoreworICAgIGF1
dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJi
bG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykqZVwifX0sIgorICAg
ICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9uZVwiLFwic2VsZWN0
b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihiYXIpKltl
LWhdXCJ9fV0iKTsKKworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgiYTovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KG1h
dGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZDovL3d3dy53ZWJraXQub3JnLyIpLCB7
IH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
ZTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpD
U1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Qmxv
Y2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgiZjovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25U
eXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaDovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAg
IHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaTovL3d3dy53
ZWJraXQub3JnLyIpLCB7IH0pOworCisgICAgYXV0byBzZWFyY2hCYWNrZW5kID0gbWFrZUJhY2tl
bmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwt
ZmlsdGVyXCI6XCIoZm9vKSplXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6
XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJc
Ijp7XCJ1cmwtZmlsdGVyXCI6XCIoYmFyKSpbZS1oXVwifX1dIik7CisgICAgdGVzdFJlcXVlc3Qo
c2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmEueHh4LyIpLCB7
IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
Inp6ejovL3d3dy5kLnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZS54eHgvIiksIHsgQ29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmYueHh4LyIpLCB7IENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRl
c3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5o
Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVT
ZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJ6eno6Ly93d3cuaS54eHgvIiksIHsgfSk7Cit9CisKK1RFU1RfRihDb250ZW50RXh0
ZW5zaW9uVGVzdCwgQ29tYmluZWRSYW5nZU92ZXJsYXBDYXNlNykKK3sKKyAgICBhdXRvIG1hdGNo
QmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0s
XCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihmb28pKlthLWVdXCJ9fSwiCisgICAgICAg
ICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3Rvclwi
OlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGJhcikqZVwifX1d
Iik7CisKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
ImE6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgiZDovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJlOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lv
bnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJmOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisKKyAg
ICBhdXRvIHNlYXJjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVc
IjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIihmb28pKlthLWVdXCJ9
fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIs
XCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIo
YmFyKSplXCJ9fV0iKTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1l
bnRSZXF1ZXN0KCJ6eno6Ly93d3cuYS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZC54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZS54eHgvIiksIHsgQ29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmYueHh4LyIpLCB7IH0pOworfQor
CitURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIENvbWJpbmVkUmFuZ2VPdmVybGFwQ2FzZTgp
Cit7CisgICAgYXV0byBtYXRjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntc
InR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4oZm9vKSpb
ZS1oXVwifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXkt
bm9uZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRl
clwiOlwiXihiYXIpKlthLWVdXCJ9fV0iKTsKKworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRl
c3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZDovL3d3dy53ZWJr
aXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9u
ZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgiZTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9u
VHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgiZjovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJoOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRj
aEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImk6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9
KTsKKworICAgIGF1dG8gc2VhcmNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6
e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGZvbykq
W2UtaF1cIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5
LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0
ZXJcIjpcIihiYXIpKlthLWVdXCJ9fV0iKTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYS54eHgvIiksIHsgQ29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJl
cXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmQueHh4
LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVj
dG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoInp6ejovL3d3dy5lLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJs
b2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJ6eno6Ly93d3cuZi54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5
cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuaC54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFj
dGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuaS54eHgvIiksIHsgfSk7Cit9CisKK1RFU1Rf
RihDb250ZW50RXh0ZW5zaW9uVGVzdCwgQ29tYmluZWRSYW5nZU92ZXJsYXBDYXNlOSkKK3sKKyAg
ICBhdXRvIG1hdGNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwi
OlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihmb28pKmVcIn19LCIK
KyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNl
bGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4oYmFy
KSpbYS1lXVwifX1dIik7CisKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoImE6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6
QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdCht
YXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImQ6Ly93d3cud2Via2l0Lm9yZy8iKSwg
eyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9
KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImU6
Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NT
RGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2Nr
TG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoImY6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9KTsKKworICAgIGF1dG8gc2VhcmNoQmFja2Vu
ZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmln
Z2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGZvbykqZVwifX0sIgorICAgICAgICAie1wiYWN0aW9u
XCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9uZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5c
In0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGJhcikqW2EtZV1cIn19XSIpOworICAg
IHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3
dy5hLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5v
bmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1l
bnRSZXF1ZXN0KCJ6eno6Ly93d3cuZC54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmUueHh4LyIpLCB7IENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNl
YXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5mLnh4eC8iKSwgeyB9
KTsKK30KKworVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFJhbmdlT3Zlcmxh
cENhc2UxMCkKK3sKKyAgICBhdXRvIG1hdGNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0
aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwi
Xihmb28pKltlLWhdXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3Mt
ZGlzcGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1
cmwtZmlsdGVyXCI6XCJeKGJhcikqZVwifX1dIik7CisKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImE6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9KTsK
KyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImQ6Ly93
d3cud2Via2l0Lm9yZy8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoImU6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lv
bnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImY6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1h
dGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaDovL3d3dy53ZWJraXQub3JnLyIpLCB7
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJl
cXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJpOi8vd3d3LndlYmtpdC5v
cmcvIiksIHsgfSk7CisKKyAgICBhdXRvIHNlYXJjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tc
ImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJc
IjpcIihmb28pKltlLWhdXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJj
c3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7
XCJ1cmwtZmlsdGVyXCI6XCIoYmFyKSplXCJ9fV0iKTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYS54eHgvIiksIHsgfSk7Cisg
ICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8v
d3d3LmQueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5E
b2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5lLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6
QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFj
dGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZi54eHgvIiksIHsgQ29udGVudEV4dGVuc2lv
bnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuaC54eHgvIiksIHsgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFy
Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuaS54eHgvIiksIHsgfSk7
Cit9CisKK1RFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgQ29tYmluZWRSYW5nZU92ZXJsYXBD
YXNlMTEpCit7CisgICAgYXV0byBtYXRjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlv
blwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4o
Zm9vKSpbZS1nXVwifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRp
c3BsYXktbm9uZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJs
LWZpbHRlclwiOlwiXihiYXIpKltkLWZdXCJ9fV0iKTsKKworICAgIHRlc3RSZXF1ZXN0KG1hdGNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYzovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0p
OworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZDov
L3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NE
aXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgiZTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZjovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0
ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZzovL3d3dy53ZWJraXQub3JnLyIpLCB7IENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVl
c3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJoOi8vd3d3LndlYmtpdC5vcmcv
IiksIHsgfSk7CisKKyAgICBhdXRvIHNlYXJjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFj
dGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpc
Iihmb28pKltlLWddXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3Mt
ZGlzcGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1
cmwtZmlsdGVyXCI6XCIoYmFyKSpbZC1mXVwifX1dIik7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmMueHh4LyIpLCB7IH0pOwor
ICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejov
L3d3dy5kLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxh
eU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFj
dGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmYueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6
QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5nLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5oLnh4eC8iKSwgeyB9KTsKK30K
KworCitURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIENvbWJpbmVkUmFuZ2VPdmVybGFwQ2Fz
ZTEyKQoreworICAgIGF1dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25c
Ijp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZv
bykqW2UtZ11cIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNw
bGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1m
aWx0ZXJcIjpcIl4oYmFyKSpbZC1nXVwifX1dIik7CisKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImM6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9KTsK
KyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImQ6Ly93
d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlz
cGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5E
b2N1bWVudFJlcXVlc3QoImU6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoImY6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0
ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImc6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdCht
YXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImg6Ly93d3cud2Via2l0Lm9yZy8iKSwg
eyB9KTsKKworICAgIGF1dG8gc2VhcmNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9u
XCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGZv
bykqW2UtZ11cIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNw
bGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1m
aWx0ZXJcIjpcIihiYXIpKltkLWddXCJ9fV0iKTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYy54eHgvIiksIHsgfSk7CisgICAg
dGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3
LmQueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9u
ZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoInp6ejovL3d3dy5lLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9u
VHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5
cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZi54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFj
dGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmcueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6
QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5oLnh4eC8iKSwgeyB9KTsKK30KKworVEVT
VF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFJhbmdlT3ZlcmxhcENhc2UxMykKK3sK
KyAgICBhdXRvIG1hdGNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlw
ZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihmb28pKltiLWRd
XCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25l
XCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6
XCJeKGJhcikqW2MtZV1cIn19XSIpOworCisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJhOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisgICAgdGVz
dFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJiOi8vd3d3LndlYmtp
dC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsK
KyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImM6Ly93
d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlz
cGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9h
ZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
ImQ6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJs
b2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoImU6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9u
VHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImg6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9KTsK
KworICAgIGF1dG8gc2VhcmNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1wi
dHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGZvbykqW2It
ZF1cIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5v
bmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJc
IjpcIihiYXIpKltjLWVdXCJ9fV0iKTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJl
cXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmIueHh4
LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAg
dGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3
LmMueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9u
ZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOwor
ICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejov
L3d3dy5kLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxh
eU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9
KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6
eno6Ly93d3cuZS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rp
c3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmgueHh4LyIpLCB7IH0pOworfQorCitURVNUX0Yo
Q29udGVudEV4dGVuc2lvblRlc3QsIENvbWJpbmVkUmFuZ2VPdmVybGFwQ2FzZTE0KQoreworICAg
IGF1dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6
XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykqW2ItZV1cIn19
LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixc
InNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4o
YmFyKSpbYy1lXVwifX1dIik7CisKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5E
b2N1bWVudFJlcXVlc3QoImE6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9KTsKKyAgICB0ZXN0UmVx
dWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImI6Ly93d3cud2Via2l0Lm9y
Zy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAg
IHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYzovL3d3dy53
ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5
Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0p
OworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZDov
L3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NE
aXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tM
b2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgiZTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBl
OjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgiaDovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOworCisgICAgYXV0byBzZWFyY2hC
YWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxc
InRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoZm9vKSpbYi1lXVwifX0sIgorICAgICAgICAi
e1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9uZVwiLFwic2VsZWN0b3JcIjpc
Ii5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGJhcikqW2MtZV1cIn19
XSIpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
Inp6ejovL3d3dy5hLnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYi54eHgvIiksIHsgQ29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYy54eHgvIiksIHsgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2Vh
cmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmQueHh4LyIpLCB7IENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0
KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5lLnh4eC8iKSwg
eyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3Rvciwg
Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVx
dWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuaC54eHgv
IiksIHsgfSk7Cit9CisKK1RFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgQ29tYmluZWRSYW5n
ZU92ZXJsYXBDYXNlMTUpCit7CisgICAgYXV0byBtYXRjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgi
W3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0
ZXJcIjpcIl4oZm9vKSpbYy1mXVwifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwi
OlwiY3NzLWRpc3BsYXktbm9uZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2Vy
XCI6e1widXJsLWZpbHRlclwiOlwiXihiYXIpKltjLWZdXCJ9fV0iKTsKKworICAgIHRlc3RSZXF1
ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYTovL3d3dy53ZWJraXQub3Jn
LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgiYjovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYzovL3d3dy53ZWJraXQub3JnLyIpLCB7IENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0
KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZDovL3d3dy53ZWJraXQub3JnLyIp
LCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9y
LCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RS
ZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZTovL3d3dy53ZWJraXQu
b3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNl
bGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAg
IHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZjovL3d3dy53
ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5
Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0p
OworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZzov
L3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOworCisgICAgYXV0byBzZWFyY2hCYWNrZW5kID0gbWFr
ZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7
XCJ1cmwtZmlsdGVyXCI6XCIoZm9vKSpbYy1mXVwifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6
e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9uZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0s
XCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGJhcikqW2MtZl1cIn19XSIpOworICAgIHRl
c3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5h
Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1l
bnRSZXF1ZXN0KCJ6eno6Ly93d3cuYi54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2Vh
cmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmMueHh4LyIpLCB7IENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0
KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kLnh4eC8iKSwg
eyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3Rvciwg
Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVx
dWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZS54eHgv
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0
b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmYu
eHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNl
bGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAg
IHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3
dy5nLnh4eC8iKSwgeyB9KTsKK30KKworVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBDb21i
aW5lZFJhbmdlT3ZlcmxhcENhc2UxNikKK3sKKyAgICBhdXRvIG1hdGNoQmFja2VuZCA9IG1ha2VC
YWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1wi
dXJsLWZpbHRlclwiOlwiXihmb28pKmNcIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5
cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJp
Z2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4oYmFyKSpjXCJ9fV0iKTsKKworICAgIHRlc3RSZXF1
ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYTovL3d3dy53ZWJraXQub3Jn
LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgiYjovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYzovL3d3dy53ZWJraXQub3JnLyIpLCB7IENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0
KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZDovL3d3dy53ZWJraXQub3JnLyIp
LCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgiZTovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOworCisgICAgYXV0byBzZWFyY2hCYWNrZW5k
ID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdn
ZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoZm9vKSpjXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25c
Ijp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwi
fSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoYmFyKSpjXCJ9fV0iKTsKKyAgICB0ZXN0
UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYS54
eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgienp6Oi8vd3d3LmIueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJj
aEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jLnh4eC8iKSwgeyBDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChz
ZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZC54eHgvIiksIHsg
fSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
enp6Oi8vd3d3LmUueHh4LyIpLCB7IH0pOworfQorCitURVNUX0YoQ29udGVudEV4dGVuc2lvblRl
c3QsIENvbWJpbmVkUXVhbnRpZmllZE9uZU9yTW9yZVJhbmdlc0Nhc2UxMUFuZDEzKQoreworICAg
IGF1dG8gc2VhcmNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwi
OlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGZvbykqW2MtZV0rW2ct
aV0rWVlZXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxh
eS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmls
dGVyXCI6XCIoYmFyKSpbYi1kXStbaC1qXStZWVlcIn19XSIpOworCisgICAgLy8gVGhlIGludGVy
ZXN0aW5nIHJhbmdlcyBvbmx5IG1hdGNoIGJldHdlZW4gJ2InIGFuZCAnaycsIHBsdXMgYSBnYXAg
aW4gJ2YnLgorICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoInp6ejovL3d3dy5hYXl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmFieXl5Lnh4eC8iKSwgeyB9
KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6
eno6Ly93d3cuYWN5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hZHl5eS54eHgvIiksIHsgfSk7Cisg
ICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8v
d3d3LmFleXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWZ5eXkueHh4LyIpLCB7IH0pOworICAgIHRl
c3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5h
Z3l5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmFoeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVx
dWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWl5eXku
eHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoInp6ejovL3d3dy5hanl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qo
c2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmFreXl5Lnh4eC8i
KSwgeyB9KTsKKworICAgIC8vICdiJyBpcyB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBzZWNv
bmQgcnVsZS4KKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJ6eno6Ly93d3cuYnl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmJheXl5Lnh4eC8iKSwgeyB9
KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6
eno6Ly93d3cuYmJ5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5iY3l5eS54eHgvIiksIHsgfSk7Cisg
ICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8v
d3d3LmJkeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYmV5eXkueHh4LyIpLCB7IH0pOworICAgIHRl
c3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5i
Znl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmJneXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVx
dWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYmh5eXku
eHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNl
bGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoInp6ejovL3d3dy5iaXl5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmJqeXl5Lnh4eC8iKSwgeyBD
b250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsK
KyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6
Ly93d3cuYmt5eXkueHh4LyIpLCB7IH0pOworCisgICAgLy8gJ2MnIGlzIHRoZSBmaXJzdCBjaGFy
YWN0ZXIgb2YgdGhlIGZpcnN0IHJ1bGUsIGFuZCBpdCBvdmVybGFwcyB0aGUgZmlyc3QgY2hhcmFj
dGVyIG9mIHRoZSBzZWNvbmQgcnVsZS4KKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuY3l5eS54eHgvIiksIHsgfSk7CisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmNh
eXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuY2J5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1
ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jY3l5eS54
eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgienp6Oi8vd3d3LmNkeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChz
ZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuY2V5eXkueHh4LyIp
LCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoInp6ejovL3d3dy5jZnl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmNneXl5Lnh4eC8iKSwgeyBD
b250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1
ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jaHl5eS54
eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2Vs
ZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAg
dGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3
LmNpeXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxh
eU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9
KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6
eno6Ly93d3cuY2p5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpD
U1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5ja3l5eS54eHgvIiksIHsgfSk7CisKKyAg
ICAvLyAnZCcgaXMgaW4gdGhlIGZpcnN0IHJhbmdlIG9mIGJvdGggcnVsZS4gVGhpcyBzZXJpZXMg
Y292ZXIgb3ZlcmxhcHMgYmV0d2VlbiB0aGUgdHdvIHJ1bGVzLgorICAgIHRlc3RSZXF1ZXN0KHNl
YXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kZ3l5eS54eHgvIiks
IHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0
UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZGRn
eXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0p
OworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6
ejovL3d3dy5kZGh5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpD
U1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Qmxv
Y2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoInp6ejovL3d3dy5kZGhoeXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZGVneXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kZWh5eXkueHh4LyIpLCB7IENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVl
c3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmRmZ3l5eS54
eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgienp6Oi8vd3d3LmRmaHl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qo
c2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmRqeXl5Lnh4eC8i
KSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3Rv
ciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJ6eno6Ly93d3cuZGRqeXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlw
ZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZGRqanl5eS54eHgvIiksIHsgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7Cit9
CisKK1RFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgQ29tYmluZWRRdWFudGlmaWVkT25lT3JN
b3JlUmFuZ2VzQ2FzZTExQW5kMTNJbkdyb3VwcykKK3sKKyAgICBhdXRvIHNlYXJjaEJhY2tlbmQg
PSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dl
clwiOntcInVybC1maWx0ZXJcIjpcIihmb28pKihbYy1lXSkrKFtnLWldK1lZWSlcIn19LCIKKyAg
ICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVj
dG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIihiYXIpKlti
LWRdK1toLWpdK1lZWVwifX1dIik7CisKKyAgICAvLyBUaGUgaW50ZXJlc3RpbmcgcmFuZ2VzIG9u
bHkgbWF0Y2ggYmV0d2VlbiAnYicgYW5kICdrJywgcGx1cyBhIGdhcCBpbiAnZicuCisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmFh
eXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWJ5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1
ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hY3l5eS54
eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgienp6Oi8vd3d3LmFkeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChz
ZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWV5eXkueHh4LyIp
LCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoInp6ejovL3d3dy5hZnl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmFneXl5Lnh4eC8iKSwgeyB9
KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6
eno6Ly93d3cuYWh5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5haXl5eS54eHgvIiksIHsgfSk7Cisg
ICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8v
d3d3LmFqeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWt5eXkueHh4LyIpLCB7IH0pOworCisgICAg
Ly8gJ2InIGlzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHNlY29uZCBydWxlLgorICAgIHRl
c3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5i
eXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYmF5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1
ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5iYnl5eS54
eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgienp6Oi8vd3d3LmJjeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChz
ZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYmR5eXkueHh4LyIp
LCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoInp6ejovL3d3dy5iZXl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmJmeXl5Lnh4eC8iKSwgeyB9
KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6
eno6Ly93d3cuYmd5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5iaHl5eS54eHgvIiksIHsgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAg
dGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3
LmJpeXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxh
eU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYmp5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0
KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5ia3l5eS54eHgv
IiksIHsgfSk7CisKKyAgICAvLyAnYycgaXMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgZmly
c3QgcnVsZSwgYW5kIGl0IG92ZXJsYXBzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHNlY29u
ZCBydWxlLgorICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoInp6ejovL3d3dy5jeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuY2F5eXkueHh4LyIpLCB7IH0p
OworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6
ejovL3d3dy5jYnl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmNjeXl5Lnh4eC8iKSwgeyB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93
d3cuY2R5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jZXl5eS54eHgvIiksIHsgfSk7CisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmNm
eXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuY2d5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmNoeXl5Lnh4eC8iKSwgeyBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFy
Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuY2l5eXkueHh4LyIpLCB7
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBD
b250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1
ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5janl5eS54
eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2Vs
ZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgienp6Oi8vd3d3LmNreXl5Lnh4eC8iKSwgeyB9KTsKKworICAgIC8vICdkJyBpcyBpbiB0
aGUgZmlyc3QgcmFuZ2Ugb2YgYm90aCBydWxlLiBUaGlzIHNlcmllcyBjb3ZlciBvdmVybGFwcyBi
ZXR3ZWVuIHRoZSB0d28gcnVsZXMuCisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmRneXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kZGd5eXkueHh4LyIpLCB7IENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVl
c3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmRkaHl5eS54
eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2Vs
ZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAg
dGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3
LmRkaGh5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNw
bGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2Fk
IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
Inp6ejovL3d3dy5kZWd5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBl
OjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgienp6Oi8vd3d3LmRlaHl5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZGZneXl5Lnh4eC8iKSwgeyB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93
d3cuZGZoeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZGp5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRl
bnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RS
ZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kZGp5
eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9u
ZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoInp6ejovL3d3dy5kZGpqeXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6
QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0RGQU1pbmltaXplci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvREZBTWluaW1pemVyLmNwcAppbmRleCAzZDQwY2IwMDViNzZiZDE3YmRmMmVlMTBhNTM1NWE5
Zjc1NWRiMjc4Li5lZTMyMWI3ZjllYTc0ZDBjNmZlZGI4OWQ4Y2IyY2Y0NWVjN2RjZjdmIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvREZBTWluaW1pemVyLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvREZBTWluaW1pemVyLmNw
cApAQCAtODMsNyArODMsNyBAQCBURVNUX0YoREZBTWluaW1pemVyVGVzdCwgRmFsbGJhY2tUcmFu
c2l0aW9uc1RvT3RoZXJOb2RlSW5TYW1lR3JvdXBEb2VzTm90RGlmZmVyZQogICAgIENvbnRlbnRF
eHRlbnNpb25zOjpERkEgZGZhID0gYnVpbGRERkFGcm9tUGF0dGVybnMoeyAiXmFhYyIsICJeYS5j
IiwgIl5iLmMifSk7CiAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oOSksIGNvdW50
TGl2ZU5vZGVzKGRmYSkpOwogICAgIGRmYS5taW5pbWl6ZSgpOwotICAgIEVYUEVDVF9FUShzdGF0
aWNfY2FzdDxzaXplX3Q+KDUpLCBjb3VudExpdmVOb2RlcyhkZmEpKTsKKyAgICBFWFBFQ1RfRVEo
c3RhdGljX2Nhc3Q8c2l6ZV90Pig0KSwgY291bnRMaXZlTm9kZXMoZGZhKSk7CiB9CiAKIFRFU1Rf
RihERkFNaW5pbWl6ZXJUZXN0LCBTaW1wbGVGYWxsQmFja1RyYW5zaXRpb25EaWZmZXJlbnRpYXRv
cjEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256125</attachid>
            <date>2015-07-03 19:02:47 -0700</date>
            <delta_ts>2015-07-06 11:50:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146575-20150703190151.patch</filename>
            <type>text/plain</type>
            <size>129915</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2ZhNDExOWI1YWM2NmMx
MDk1YjRmMzY5MDZmYjliYWQ5YTA4MmRjNy4uNzAyYjlkYjJhYjkzZTU1MDliOGZkYzRmOTc5NWM2
YTJlYjE0NTc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NyBAQAorMjAxNS0wNy0wMyAgQmVu
amFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQg
RXh0ZW5zaW9uc10gTWFrZSB0aGUgREZBIHRyYW5zaXRpb25zIHJhbmdlcyBpbnN0ZWFkIG9mIGNo
YXJhY3RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0NjU3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgREZBIGFuZCBjb2RlIHVzaW5nIHRoZSBERkEgdG8gdXNl
IHJhbmdlcworICAgICAgICB0byByZXByZXNlbnQgdGhlIHRyYW5zaXRpb25zIGJldHdlZW4gYW55
IHR3byBub2Rlcy4KKworICAgICAgICBUaGlzIHBhdGNoIGJ1aWxkcyBvbiB0b3Agb2YgdGhlIHRv
b2xzIGludHJvZHVjZWQgaW4gcjE4NjA3OS4KKworICAgICAgICBUaGUgREZBIHN0cnVjdHVyZSBp
cyBiYXNpY2FsbHkgdGhlIHNhbWUgYXMgSW1tdXRhYmxlTkZBIGJ1dCB3aXRob3V0CisgICAgICAg
IGFueSBlcHNpbG9uIHRyYW5zaXRpb25zLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNl
cyBhIHRyYW5zaXRpb24gaXRlcmF0b3IgdG8gbWFrZSB0aGUgREZBCisgICAgICAgIGNvbXBhdGli
bGUgd2l0aCB0aGUgZXhpc3RpbmcgYWxnb3JpdGhtcy4KKworICAgICAgICAtLS0KKworICAgICAg
ICBUaGUgREZBIGNvbWJpbmVyIGlzIHJlYnVpbHQgb24gdG9wIG9mIE11dGFibGVSYW5nZUxpc3Qu
IENvbWJpbmluZyB0aGUgdHJhbnNpdGlvbnMKKyAgICAgICAgb2YgdHdvIG5vZGVzIGlzIG9uZSBi
eSBtZXJnaW5nIHRoZSByYW5nZSBsaXN0IG9mIGVhY2ggbm90IGludG8gYSBjb21tb24KKyAgICAg
ICAgTXV0YWJsZVJhbmdlTGlzdC4KKyAgICAgICAgVGhlIGRhdGEgY29udmVydGVyIHRha2VzIGNh
cmUgb2YgY3JlYXRpbmcgdGhlIHNpZ25hdHVyZSBvZiB0aGUgY29tYmluYXRpb24uCisKKyAgICAg
ICAgVGhlIGNvZGUgZ290IHNpbXBsZXIgc2luY2UgTXV0YWJsZVJhbmdlTGlzdCBkb2VzIG1vc3Qg
b2YgdGhlIHdvcmsgbm93LiBJdCBpcyBhbHNvCisgICAgICAgIG11Y2ggZmFzdGVyLgorCisgICAg
ICAgIC0tLQorCisgICAgICAgIFRoZSBtaW5pbWl6ZXIgaXMgbW9yZSBpbnRlcnN0aW5nLgorCisg
ICAgICAgIFdpdGggdGhlIGN1cnJlbnQgYWxnb3JpdGhtLCB3ZSBjYW5ub3QgcmVzb2x2ZSBvdmVy
bGFwcyBiZXR3ZWVuIHJhbmdlcy4gT24gdGhlIG90aGVyCisgICAgICAgIGhhbmQsIHRoZSBtaW5p
bWl6ZXIgZG9lcyBub3QgY2FyZSBhYm91dCB0aGUgc3ltYm9sIG9mIHRoZSB0cmFuc2l0aW9ucyBp
ZiB3ZSBhcmUgY2FyZWZ1bAorICAgICAgICB0byBwYXJ0aXRpb24gdHJhbnNpdGlvbnMgb2YgdGhl
IHNhbWUgc3ltYm9sIHRvZ2V0aGVyLgorCisgICAgICAgIFdoYXQgSSBkaWQgd2FzIHRvIHR1cm4g
dGhlIG1pbmltaXplciBpbnRvIGEgcHVyZSB0cmFuc2l0aW9uIGJhc2VkIG9uZSwgQlVUIGVhY2gK
KyAgICAgICAgInN5bWJvbCIgaXMgYWN0dWFsbHkgYW4gdW5icmVha2FibGUgcmFuZ2UuCisKKyAg
ICAgICAgVGhlIGZpcnN0IHN0ZXAgaXMgdG8gZ28gb3ZlciBhbGwgdGhlIHRyYW5zaXRpb25zIG9m
IGFsbCB0aGUgbm9kZXMgYW5kIGZpbmQgdGhlIGxhcmdlc3QKKyAgICAgICAgcmFuZ2VzIHN1Y2gg
dGhhdCB0aGUgYWxwaGFiZXQgb2YgaW50ZXJlc3QgaXMgY292ZXJlZCBidXQgdGhlcmUgaXMgbm90
IGEgc2luZ2xlIGludGVyc2VjdGlvbgorICAgICAgICBiZXR3ZWVuIGFueSB0d28gbm9kZXMgKHdo
YXQgSSBjYWxsZWQgInNpbmd1bGFyIHRyYW5zaXRpb25zIiBpbiB0aGUgY29kZSkuIAorCisgICAg
ICAgIFRoaXMgY2FuIGJlIGRvbmUgZWZmaWNpZW50bHkgd2l0aCBNdXRhYmxlUmFuZ2VMaXN0Lgor
ICAgICAgICBBIGxpdHRsZSB0cmljayB0aGVyZSBpcyB0aGF0IEkgYWxzbyB1c2VkIHRoZSBjb252
ZXJ0ZXIgdG8gY291bnQgaG93IG1hbnkgcmVhbCB0cmFuc2l0aW9uCisgICAgICAgIG92ZXJhbGFw
cyBhbnkgc2luZ3VsYXIgdHJhbnNpdGlvbi4KKworICAgICAgICBUaG9zZSBzaW5ndWxhciB0cmFu
c2l0aW9ucyBiZWNvbWUgdGhlIGFscGhhYmV0IG9mIG91ciBtaW5pbWl6ZXIuIFRoZSAic3ltYm9s
IiBvZiBvdXIgYWxwaGFiZXQKKyAgICAgICAgaXMgc2ltcGx5IHRoZSBwb3NpdGlvbiBvZiB0aGUg
c2luZ3VsYXIgdHJhbnNpdGlvbiBpbiB0aGUgbGlzdC4KKworICAgICAgICBUaGUgcGFydGl0aW9u
IG9mIHRyYW5zaXRpb24gaXMgY3JlYXRlZCBieSBwb3B1bGF0aW5nIGVhY2ggc2V0IHdpdGggYWxs
IHRoZSB0cmFuc2l0aW9uIHRoYXQKKyAgICAgICAgb3ZlcmxhcHMgdGhlIHN5bWJvbHMuCisgICAg
ICAgIE5vdGUgdGhhdCBzaW5jZSB0aGUgcGFydGl0aW9uIGlzIGNyZWF0ZWQgb24gdGhlIGZseSwg
dGhlIFRyYW5zaXRpb24gc3RydWN0dXJlIHVzZWQgZm9yCisgICAgICAgIHJlcGFydGl0aW9uaW5n
IG9ubHkgY29udGFpbnMgdGhlIHNvdXJjZSBvZiB0aGUgdHJhbnNpdGlvbnMuCisKKyAgICAgICAg
T25jZSBvdXIgdHJhbnNpdGlvbiBwYXJpdGlvbiBoYXMgYmVlbiBjYXJlZnVseSBjcmVhdGVkLCB3
ZSBjYW4gY29tcGxldGVseSBmb3JnZXQgYWJvdXQKKyAgICAgICAgdGhlIHN5bWJvbHMgYW5kIG9u
bHkgd29yayB3aXRoIHN1YnNldHMuCisKKyAgICAgICAgU2luY2UgdGhlIHNpbmd1bGFyIHRyYW5z
aXRpb25zIGhhdmUgbm8gb3ZlcmxhcCAodW5saWtlIGZhbGxiYWNrIHRyYW5zaXRpb25zKSwgdGhp
cyBuZXcgbWluaW1pemVyCisgICAgICAgIHdpbGwgZmluZCB0aGUgbWluaW1pYWwgc29sdXRpb24g
Zm9yIHdlbGwgZm9ybWVkIGlucHV0LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBOjptZW1vcnlVc2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpwcmludFRyYW5zaXRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjphY3Rpb25zKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjp0cmFuc2l0
aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZB
Tm9kZTo6ZmFsbGJhY2tUcmFuc2l0aW9uRGVzdGluYXRpb24pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OmNoYW5nZUZhbGxiYWNrVHJhbnNp
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZB
Tm9kZTo6YWRkRmFsbGJhY2tUcmFuc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjpjb250YWluc1RyYW5zaXRpb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OmtpbGwpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQTo6ZGVidWdQ
cmludERvdCk6IERlbGV0ZWQuCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvREZBLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6Q29uc3RSYW5nZUl0
ZXJhdG9yOjpyYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZB
Tm9kZTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjp0YXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OlJhbmdlSXRlcmF0b3I6OnJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjpSYW5nZUl0ZXJhdG9yOjp0YXJn
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OlJhbmdl
SXRlcmF0b3I6OnJlc2V0VGFyZ2V0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFC
eXRlY29kZUNvbXBpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpERkFCeXRlY29kZUNvbXBpbGVyOjpyYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlQ29tcGlsZXI6Om5vZGVUcmFuc2l0aW9uc01heEJ5dGVj
b2RlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNv
ZGVDb21waWxlcjo6Y29tcGlsZU5vZGVUcmFuc2l0aW9ucyk6CisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvREZBQ29tYmluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OkRGQU1lcmdlcjo6VGFyZ2V0Q29udmVydGVyOjpjb252ZXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFNZXJnZXI6OlRhcmdldENvbnZlcnRlcjo6ZXh0
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFNZXJnZXI6OlRh
cmdldENvbnZlcnRlcjo6c2V0SGFsZlNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6REZBTWVyZ2VyOjptZXJnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6REZBTWVyZ2VyOjpnZXRPckNyZWF0ZUNvbWJpbmVkTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTWVyZ2VyOjpzZXRIYWxmU2lnbmF0
dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFN
ZXJnZXI6OnBvcHVsYXRlVHJhbnNpdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OkRGQU1lcmdlcjo6cG9wdWxhdGVGcm9tRmFsbGJhY2tUcmFuc2l0
aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZB
TWVyZ2VyOjpjcmVhdGVUcmFuc2l0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6REZBTWVyZ2VyOjpjcmVhdGVGYWxsYmFja1RyYW5zaXRpb25JZk5l
ZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvREZBTWluaW1pemVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFNaW5pbWl6ZXI6
Om1pbmltaXplKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFOb2RlLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6YWN0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6Y29udGFp
bnNUcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFO
b2RlOjpraWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2Rl
OjpjYW5Vc2VGYWxsYmFja1RyYW5zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkRGQU5vZGU6OmJlc3RGYWxsYmFja1RhcmdldCk6CisgICAgICAgICogY29udGVu
dGV4dGVuc2lvbnMvREZBTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OkNoYXJSYW5nZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6REZBTm9kZTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjpvcGVyYXRvciopOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OkNvbnN0UmFuZ2VJdGVyYXRvcjo6b3Bl
cmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6
Q29uc3RSYW5nZUl0ZXJhdG9yOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpERkFOb2RlOjpDb25zdFJhbmdlSXRlcmF0b3I6Om9wZXJhdG9yKyspOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OkNvbnN0UmFuZ2VJ
dGVyYXRvcjo6Zmlyc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRG
QU5vZGU6OkNvbnN0UmFuZ2VJdGVyYXRvcjo6bGFzdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjpkYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjpJdGVyYWJsZUNvbnN0UmFu
Z2U6OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2Rl
OjpJdGVyYWJsZUNvbnN0UmFuZ2U6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6REZBTm9kZTo6dHJhbnNpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkRGQU5vZGU6OlJhbmdlSXRlcmF0b3I6Om9wZXJhdG9yKik6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6UmFuZ2VJdGVyYXRvcjo6b3Bl
cmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6
UmFuZ2VJdGVyYXRvcjo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6REZBTm9kZTo6UmFuZ2VJdGVyYXRvcjo6b3BlcmF0b3IrKyk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6UmFuZ2VJdGVyYXRvcjo6Zmlyc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OlJhbmdlSXRl
cmF0b3I6Omxhc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5v
ZGU6OlJhbmdlSXRlcmF0b3I6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OkRGQU5vZGU6Okl0ZXJhYmxlUmFuZ2U6OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjpJdGVyYWJsZVJhbmdlOjplbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6Omhhc0ZhbGxiYWNrVHJhbnNp
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZB
Tm9kZTo6dHJhbnNpdGlvbnNMZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OnRyYW5zaXRpb25zU3RhcnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OnJlc2V0VHJhbnNpdGlv
bnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5v
ZGU6OnNldEhhc0ZhbGxiYWNrVHJhbnNpdGlvbldpdGhvdXRDaGFuZ2luZ0RGQSk6IERlbGV0ZWQu
CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZBLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBOjpDb25zdFJhbmdlSXRlcmF0
b3I6OmZpcnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFi
bGVORkE6OkNvbnN0UmFuZ2VJdGVyYXRvcjo6bGFzdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBOjpDb25zdFJhbmdlSXRlcmF0b3I6OmRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkltbXV0YWJsZU5GQTo6Q29uc3RS
YW5nZUl0ZXJhdG9yOjpyYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6SW1tdXRhYmxlTkZBOjpDb25zdFJhbmdlSXRlcmF0b3I6Om9wZXJhdG9yKik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBOjpDb25z
dFJhbmdlSXRlcmF0b3I6Om9wZXJhdG9yLT4pOiBEZWxldGVkLgorICAgICAgICAqIGNvbnRlbnRl
eHRlbnNpb25zL0ltbXV0YWJsZU5GQU5vZGVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXI6OkZha2VSYW5nZUl0ZXJh
dG9yOjpmaXJzdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SW1tdXRh
YmxlTkZBTm9kZUJ1aWxkZXI6OkZha2VSYW5nZUl0ZXJhdG9yOjpsYXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFibGVORkFOb2RlQnVpbGRlcjo6RmFrZVJh
bmdlSXRlcmF0b3I6Om9wZXJhdG9yKik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXI6OkZha2VSYW5nZUl0ZXJhdG9y
OjpvcGVyYXRvci0+KTogRGVsZXRlZC4KKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9NdXRh
YmxlUmFuZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpNdXRhYmxl
UmFuZ2U6OnNpemUpOiBEZWxldGVkLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL011dGFi
bGVSYW5nZUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpNdXRh
YmxlUmFuZ2VMaXN0OjpDb25zdEl0ZXJhdG9yOjpmaXJzdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6TXV0YWJsZVJhbmdlTGlzdDo6Q29uc3RJdGVyYXRvcjo6bGFzdCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6TXV0YWJsZVJhbmdlTGlzdDo6
Q29uc3RJdGVyYXRvcjo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6TXV0YWJsZVJhbmdlTGlzdDo6ZXh0ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpNdXRhYmxlUmFuZ2VMaXN0OjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpNdXRhYmxlUmFuZ2VMaXN0Ojppbml0aWFsaXplRnJvbSk6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6Ok5GQVRvREZBOjpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpjYW5Vc2VGYWxsYmFja1RyYW5zaXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmZpbmRCZXN0RmFsbGJhY2tUYXJn
ZXQpOiBEZWxldGVkLgorCiAyMDE1LTA3LTAzICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5j
b20+CiAKICAgICAgICAgVHJpZWQgdG8gZml4IHRoZSBpT1MgYnVpbGQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjQxOGM2NTU2
NGUzMzQwODllOWI5OTFjYzczZjNhNGZjZjQwMGEyMC4uYjVmYTAzOWEwNTkwN2E5ZTQzZTEzYmY2
MTdkMmYxZTI5ZmJkZTc4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAzMSw2ICsxMDMxLDcgQEAKIAkJMjZDMTVDRjcxODU3
RTE1RTAwRjE1QzAzIC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDI2QzE1Q0Y1MTg1N0UxNUQwMEYxNUMwMyAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmggKi87IH07CiAJCTI2QzE3QTNFMTQ5
MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVtSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkMxN0EzQzE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5
c3RlbUlPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTI2QzE3QTNGMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVtSU9TLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZDMTdBM0QxNDkxRDJENDAw
RDEyQkEyIC8qIEZpbGVTeXN0ZW1JT1MubW0gKi87IH07CisJCTI2RDRFODQ2MUI0MjUzOUQwMEUw
MzNBMiAvKiBERkFOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI2RDRFODQ1MUI0MjUzOUQwMEUwMzNBMiAvKiBERkFOb2RlLmNwcCAqLzsgfTsK
IAkJMjZFOTQ0RDgxQUM0QjJERDAwN0I4NUI1IC8qIENvbWJpbmVkVVJMRmlsdGVycy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkU5NDRENDFBQzRC
MkREMDA3Qjg1QjUgLyogQ29tYmluZWRVUkxGaWx0ZXJzLmNwcCAqLzsgfTsKIAkJMjZFOTQ0RDkx
QUM0QjJERDAwN0I4NUI1IC8qIENvbWJpbmVkVVJMRmlsdGVycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZFOTQ0RDUxQUM0QjJERDAwN0I4NUI1IC8q
IENvbWJpbmVkVVJMRmlsdGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTI2RTk0NEREMUFDNEI0RUEwMDdCODVCNSAvKiBUZXJtLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkU5NDREQzFBQzRCNEVB
MDA3Qjg1QjUgLyogVGVybS5oICovOyB9OwpAQCAtODE4MCw2ICs4MTgxLDcgQEAKIAkJMjZDMTVD
RjUxODU3RTE1RDAwRjE1QzAzIC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkMxN0EzQzE0OTFEMkQ0MDBEMTJCQTIg
LyogRmlsZVN5c3RlbUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxl
U3lzdGVtSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2QzE3QTNEMTQ5MUQy
RDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVtSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRmlsZVN5c3RlbUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMjZENEU4NDUxQjQyNTM5RDAwRTAzM0EyIC8qIERGQU5vZGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gREZBTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTI2RTk0NEQ0MUFDNEIyREQwMDdCODVCNSAvKiBDb21iaW5lZFVSTEZpbHRl
cnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tYmluZWRVUkxG
aWx0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjZFOTQ0RDUxQUM0QjJE
RDAwN0I4NUI1IC8qIENvbWJpbmVkVVJMRmlsdGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb21iaW5lZFVSTEZpbHRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMjZFOTQ0REMxQUM0QjRFQTAwN0I4NUI1IC8qIFRlcm0uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGVybS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTU3MDYsNiArMTU3MDgsNyBAQAogCQkJCTI2QTgwNzgzMUIxOEY5NzcwMEUyMTlCRSAvKiBERkFD
b21iaW5lci5oICovLAogCQkJCTI2QTUxN0ZCMUFCOTIyMzgwMDYzMzVERiAvKiBERkFNaW5pbWl6
ZXIuY3BwICovLAogCQkJCTI2QTUxN0ZDMUFCOTIyMzgwMDYzMzVERiAvKiBERkFNaW5pbWl6ZXIu
aCAqLywKKwkJCQkyNkQ0RTg0NTFCNDI1MzlEMDBFMDMzQTIgLyogREZBTm9kZS5jcHAgKi8sCiAJ
CQkJMjY3NzI1RjkxQTVCM0FEOTAwM0MyNEREIC8qIERGQU5vZGUuaCAqLywKIAkJCQkyNkY3NTZC
MjFCM0I2NkY3MDAwNURENzkgLyogSW1tdXRhYmxlTkZBLmggKi8sCiAJCQkJMjZGNzU2QjQxQjNC
NjhGMjAwMDVERDc5IC8qIEltbXV0YWJsZU5GQU5vZGVCdWlsZGVyLmggKi8sCkBAIC0zMDI1MCw2
ICszMDI1Myw3IEBACiAJCQkJQjJBMUYyQUQwQ0VGMEFCRjAwNDQyRjZBIC8qIFNWR0dseXBoRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNEQ5MTJCRDEzQ0E5QTk3MDBEMjE5MTUgLyog
U1ZHR2x5cGhSZWZFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTI5MEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdHcmFkaWVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MjZENEU4NDYxQjQyNTM5RDAwRTAzM0EyIC8qIERGQU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjIyMjdBQjUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0dyYXBoaWNzRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk2NTBGQkYyQTBEOUFGMDQ3MDA4RkMyOTIgLyogU1ZHSEtlcm5FbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNTU5OUEzMEQwMEQ4QkEwMEJCODI1QyAvKiBT
VkdJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0RGQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9ERkEuY3BwCmluZGV4IDBlZTA0ZDljMmNiY2M5ZDRjYjMwYWMzMmFhODFkMzUzMmUzOTI0Y2Yu
LmU1OGI3YzQ0ZTMyZjQ4YjFkNDBmOWRhNjM4ZjIxNjlmYjczM2M5YzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvREZBLmNwcApAQCAtNDYsODkgKzQ2LDExIEBAIHNpemVfdCBE
RkE6Om1lbW9yeVVzZWQoKSBjb25zdAogewogICAgIHJldHVybiBzaXplb2YoREZBKQogICAgICAg
ICArIGFjdGlvbnMuY2FwYWNpdHkoKSAqIHNpemVvZih1aW50NjRfdCkKLSAgICAgICAgKyB0cmFu
c2l0aW9uQ2hhcmFjdGVycy5jYXBhY2l0eSgpICogc2l6ZW9mKHVpbnQ4X3QpCisgICAgICAgICsg
dHJhbnNpdGlvblJhbmdlcy5jYXBhY2l0eSgpICogc2l6ZW9mKENoYXJSYW5nZSkKICAgICAgICAg
KyB0cmFuc2l0aW9uRGVzdGluYXRpb25zLmNhcGFjaXR5KCkgKiBzaXplb2YodWludDMyX3QpCiAg
ICAgICAgICsgbm9kZXMuY2FwYWNpdHkoKSAqIHNpemVvZihERkFOb2RlKTsKIH0KIAotLy8gRklY
TUU6IE1ha2UgREZBTm9kZS5jcHAuCi1WZWN0b3I8dWludDY0X3Q+IERGQU5vZGU6OmFjdGlvbnMo
Y29uc3QgREZBJiBkZmEpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFVzZSBpdGVyYXRvcnMgaW5z
dGVhZCBvZiBjb3B5aW5nIHRoZSBWZWN0b3IgZWxlbWVudHMuCi0gICAgVmVjdG9yPHVpbnQ2NF90
PiB2ZWN0b3I7Ci0gICAgdmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9hY3Rpb25zTGVu
Z3RoKTsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSBtX2FjdGlvbnNTdGFydDsgaSA8IG1fYWN0aW9u
c1N0YXJ0ICsgbV9hY3Rpb25zTGVuZ3RoOyArK2kpCi0gICAgICAgIHZlY3Rvci51bmNoZWNrZWRB
cHBlbmQoZGZhLmFjdGlvbnNbaV0pOwotICAgIHJldHVybiB2ZWN0b3I7Ci19Ci0gICAgCi1WZWN0
b3I8c3RkOjpwYWlyPHVpbnQ4X3QsIHVpbnQzMl90Pj4gREZBTm9kZTo6dHJhbnNpdGlvbnMoY29u
c3QgREZBJiBkZmEpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFVzZSBpdGVyYXRvcnMgaW5zdGVh
ZCBvZiBjb3B5aW5nIHRoZSBWZWN0b3IgZWxlbWVudHMuCi0gICAgVmVjdG9yPHN0ZDo6cGFpcjx1
aW50OF90LCB1aW50MzJfdD4+IHZlY3RvcjsKLSAgICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eSh0cmFuc2l0aW9uc0xlbmd0aCgpKTsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSBtX3RyYW5z
aXRpb25zU3RhcnQ7IGkgPCBtX3RyYW5zaXRpb25zU3RhcnQgKyBtX3RyYW5zaXRpb25zTGVuZ3Ro
OyArK2kpCi0gICAgICAgIHZlY3Rvci51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3BhaXIoZGZh
LnRyYW5zaXRpb25DaGFyYWN0ZXJzW2ldLCBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9uc1tpXSkp
OwotICAgIHJldHVybiB2ZWN0b3I7Ci19Ci0KLXVpbnQzMl90IERGQU5vZGU6OmZhbGxiYWNrVHJh
bnNpdGlvbkRlc3RpbmF0aW9uKGNvbnN0IERGQSYgZGZhKSBjb25zdAotewotICAgIFJFTEVBU0Vf
QVNTRVJUKGhhc0ZhbGxiYWNrVHJhbnNpdGlvbigpKTsKLQotICAgIC8vIElmIHRoZXJlIGlzIGEg
ZmFsbGJhY2sgdHJhbnNpdGlvbiwgaXQgaXMganVzdCBhZnRlciB0aGUgb3RoZXIgdHJhbnNpdGlv
bnMgYW5kIGhhcyBhbiBpbnZhbGlkIEFTQ0lJIGNoYXJhY3RlciB0byBtYXJrIGl0IGFzIGEgZmFs
bGJhY2sgdHJhbnNpdGlvbi4KLSAgICBBU1NFUlQoZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJzW21f
dHJhbnNpdGlvbnNTdGFydCArIG1fdHJhbnNpdGlvbnNMZW5ndGhdID09IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDhfdD46Om1heCgpKTsKLSAgICByZXR1cm4gZGZhLnRyYW5zaXRpb25EZXN0aW5h
dGlvbnNbbV90cmFuc2l0aW9uc1N0YXJ0ICsgbV90cmFuc2l0aW9uc0xlbmd0aF07Ci19Ci0KLXZv
aWQgREZBTm9kZTo6Y2hhbmdlRmFsbGJhY2tUcmFuc2l0aW9uKERGQSYgZGZhLCB1aW50MzJfdCBu
ZXdEZXN0aW5hdGlvbikKLXsKLSAgICBSRUxFQVNFX0FTU0VSVChoYXNGYWxsYmFja1RyYW5zaXRp
b24oKSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkZmEudHJhbnNpdGlvbkNoYXJhY3RlcnNb
bV90cmFuc2l0aW9uc1N0YXJ0ICsgbV90cmFuc2l0aW9uc0xlbmd0aF0gPT0gc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50OF90Pjo6bWF4KCksICJXaGVuIGNoYW5naW5nIGEgZmFsbGJhY2sgdHJhbnNp
dGlvbiwgdGhlIGZhbGxiYWNrIHRyYW5zaXRpb24gc2hvdWxkIGFscmVhZHkgYmUgbWFya2VkIGFz
IHN1Y2giKTsKLSAgICBkZmEudHJhbnNpdGlvbkNoYXJhY3RlcnNbbV90cmFuc2l0aW9uc1N0YXJ0
ICsgbV90cmFuc2l0aW9uc0xlbmd0aF0gPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+Ojpt
YXgoKTsKLSAgICBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9uc1ttX3RyYW5zaXRpb25zU3RhcnQg
KyBtX3RyYW5zaXRpb25zTGVuZ3RoXSA9IG5ld0Rlc3RpbmF0aW9uOwotfQotCi12b2lkIERGQU5v
ZGU6OmFkZEZhbGxiYWNrVHJhbnNpdGlvbihERkEmIGRmYSwgdWludDMyX3QgZGVzdGluYXRpb24p
Ci17Ci0gICAgUkVMRUFTRV9BU1NFUlQoZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJzLnNpemUoKSA9
PSBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9ucy5zaXplKCkpOwotICAgIFJFTEVBU0VfQVNTRVJU
X1dJVEhfTUVTU0FHRShkZmEudHJhbnNpdGlvbkNoYXJhY3RlcnMuc2l6ZSgpID09IG1fdHJhbnNp
dGlvbnNTdGFydCArIG1fdHJhbnNpdGlvbnNMZW5ndGgsICJBZGRpbmcgYSBmYWxsYmFjayB0cmFu
c2l0aW9uIHNob3VsZCBvbmx5IGhhcHBlbiBpZiB0aGUgbm9kZSBpcyBhdCB0aGUgZW5kIik7Ci0g
ICAgZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJzLmFwcGVuZChzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQ4X3Q+OjptYXgoKSk7Ci0gICAgZGZhLnRyYW5zaXRpb25EZXN0aW5hdGlvbnMuYXBwZW5kKGRl
c3RpbmF0aW9uKTsKLSAgICBBU1NFUlQoIShtX2ZsYWdzICYgSGFzRmFsbGJhY2tUcmFuc2l0aW9u
KSk7Ci0gICAgbV9mbGFncyB8PSBIYXNGYWxsYmFja1RyYW5zaXRpb247Ci19Ci0KLWJvb2wgREZB
Tm9kZTo6Y29udGFpbnNUcmFuc2l0aW9uKHVpbnQ4X3QgdHJhbnNpdGlvbiwgREZBJiBkZmEpCi17
Ci0gICAgLy8gQ2FsbGVkIGZyb20gREZBTWluaW1pemVyLCB0aGlzIGxvb3BzIHRob3VnaCBhIG1h
eGltdW0gb2YgMTI4IHRyYW5zaXRpb25zLCBzbyBpdCdzIG5vdCB0b28gc2xvdy4KLSAgICBBU1NF
UlQobV90cmFuc2l0aW9uc0xlbmd0aCA8PSAxMjgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IG1f
dHJhbnNpdGlvbnNTdGFydDsgaSA8IG1fdHJhbnNpdGlvbnNTdGFydCArIG1fdHJhbnNpdGlvbnNM
ZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJzW2ldID09
IHRyYW5zaXRpb24pCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotICAgIAotdm9pZCBERkFOb2RlOjpraWxsKERGQSYgZGZhKQotewotICAgIEFT
U0VSVChtX2ZsYWdzICE9IElzS2lsbGVkKTsKLSAgICBtX2ZsYWdzID0gSXNLaWxsZWQ7IC8vIEtp
bGxlZCBub2RlcyBkb24ndCBoYXZlIGFueSBvdGhlciBmbGFncy4KLSAgICAKLSAgICAvLyBJbnZh
bGlkYXRlIHRoZSBub3ctdW51c2VkIG1lbW9yeSBpbiB0aGUgREZBIHRvIG1ha2UgZmluZGluZyBi
dWdzIGVhc2llci4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3RyYW5zaXRpb25zU3RhcnQ7IGkg
PCBtX3RyYW5zaXRpb25zU3RhcnQgKyBtX3RyYW5zaXRpb25zTGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJzW2ldID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50
OF90Pjo6bWF4KCk7Ci0gICAgICAgIGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zW2ldID0gc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpOwotICAgIH0KLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX2FjdGlvbnNTdGFydDsgaSA8IG1fYWN0aW9uc1N0YXJ0ICsgbV9hY3Rpb25zTGVu
Z3RoOyArK2kpCi0gICAgICAgIGRmYS5hY3Rpb25zW2ldID0gc3RkOjpudW1lcmljX2xpbWl0czx1
aW50NjRfdD46Om1heCgpOwotCi0gICAgbV9hY3Rpb25zU3RhcnQgPSAwOwotICAgIG1fYWN0aW9u
c0xlbmd0aCA9IDA7Ci0gICAgbV90cmFuc2l0aW9uc1N0YXJ0ID0gMDsKLSAgICBtX3RyYW5zaXRp
b25zTGVuZ3RoID0gMDsKLX07Ci0KIHZvaWQgREZBOjptaW5pbWl6ZSgpCiB7CiAgICAgREZBTWlu
aW1pemVyOjptaW5pbWl6ZSgqdGhpcyk7CkBAIC0xNjUsMTcgKzg3LDE4IEBAIHN0YXRpYyB2b2lk
IHByaW50VHJhbnNpdGlvbnMoY29uc3QgREZBJiBkZmEsIHVuc2lnbmVkIHNvdXJjZU5vZGVJZCkK
ICAgICBjb25zdCBERkFOb2RlJiBzb3VyY2VOb2RlID0gZGZhLm5vZGVzW3NvdXJjZU5vZGVJZF07
CiAgICAgYXV0byB0cmFuc2l0aW9ucyA9IHNvdXJjZU5vZGUudHJhbnNpdGlvbnMoZGZhKTsKIAot
ICAgIGlmICh0cmFuc2l0aW9ucy5pc0VtcHR5KCkgJiYgIXNvdXJjZU5vZGUuaGFzRmFsbGJhY2tU
cmFuc2l0aW9uKCkpCisgICAgaWYgKHRyYW5zaXRpb25zLmJlZ2luKCkgPT0gdHJhbnNpdGlvbnMu
ZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEhhc2hNYXA8dW5zaWduZWQsIFZlY3Rvcjx1
aW50MTZfdD4sIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+IHRyYW5zaXRpb25zUGVyVGFyZ2V0OwogCiAgICAg
Ly8gRmlyc3QsIHdlIGJ1aWxkIHRoZSBsaXN0IG9mIHRyYW5zaXRpb25zIGNvbWluZyB0byBlYWNo
IHRhcmdldCBub2RlLgogICAgIGZvciAoY29uc3QgYXV0byYgdHJhbnNpdGlvbiA6IHRyYW5zaXRp
b25zKSB7Ci0gICAgICAgIHVuc2lnbmVkIHRhcmdldCA9IHRyYW5zaXRpb24uc2Vjb25kOworICAg
ICAgICB1bnNpZ25lZCB0YXJnZXQgPSB0cmFuc2l0aW9uLnRhcmdldCgpOwogICAgICAgICB0cmFu
c2l0aW9uc1BlclRhcmdldC5hZGQodGFyZ2V0LCBWZWN0b3I8dWludDE2X3Q+KCkpOwogCi0gICAg
ICAgIHRyYW5zaXRpb25zUGVyVGFyZ2V0LmZpbmQodGFyZ2V0KS0+dmFsdWUuYXBwZW5kKHRyYW5z
aXRpb24uZmlyc3QpOworICAgICAgICBmb3IgKHVuc2lnbmVkIG9mZnNldCA9IDA7IG9mZnNldCA8
IHRyYW5zaXRpb24ucmFuZ2UoKS5zaXplKCk7ICsrb2Zmc2V0KQorICAgICAgICAgICAgdHJhbnNp
dGlvbnNQZXJUYXJnZXQuZmluZCh0YXJnZXQpLT52YWx1ZS5hcHBlbmQodHJhbnNpdGlvbi5maXJz
dCgpICsgb2Zmc2V0KTsKICAgICB9CiAKICAgICAvLyBUaGVuIHdlIGdvIG92ZXIgZWFjaCBvbmUg
YW4gZGlzcGxheSB0aGUgcmFuZ2VzIG9uZSBieSBvbmUuCkBAIC0yMDIsOSArMTI1LDYgQEAgc3Rh
dGljIHZvaWQgcHJpbnRUcmFuc2l0aW9ucyhjb25zdCBERkEmIGRmYSwgdW5zaWduZWQgc291cmNl
Tm9kZUlkKQogCiAgICAgICAgIGRhdGFMb2dGKCJcIl07XG4iKTsKICAgICB9Ci0KLSAgICBpZiAo
c291cmNlTm9kZS5oYXNGYWxsYmFja1RyYW5zaXRpb24oKSkKLSAgICAgICAgZGF0YUxvZ0YoIiAg
ICAgICAgJWQgLT4gJWQgW2xhYmVsPVwiW2ZhbGxiYWNrXVwiXTtcbiIsIHNvdXJjZU5vZGVJZCwg
c291cmNlTm9kZS5mYWxsYmFja1RyYW5zaXRpb25EZXN0aW5hdGlvbihkZmEpKTsKIH0KIAogdm9p
ZCBERkE6OmRlYnVnUHJpbnREb3QoKSBjb25zdApAQCAtMjI4LDE3ICsxNDgsNiBAQCB2b2lkIERG
QTo6ZGVidWdQcmludERvdCgpIGNvbnN0CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAg
ICAgICBWZWN0b3I8dW5zaWduZWQ+IGNvcnJlc3BvbmRpbmdORkFOb2RlcyA9IG5vZGVzW2ldLmNv
cnJlc3BvbmRpbmdORkFOb2RlczsKLSAgICAgICAgaWYgKCFjb3JyZXNwb25kaW5nTkZBTm9kZXMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiPEJSLz5ORkEgTm9kZXM6ICIpOwot
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjb3JyZXNwb25kaW5nREZBTm9kZUluZGV4ID0gMDsg
Y29ycmVzcG9uZGluZ0RGQU5vZGVJbmRleCA8IGNvcnJlc3BvbmRpbmdORkFOb2Rlcy5zaXplKCk7
ICsrY29ycmVzcG9uZGluZ0RGQU5vZGVJbmRleCkgewotICAgICAgICAgICAgICAgIGlmIChjb3Jy
ZXNwb25kaW5nREZBTm9kZUluZGV4KQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiLCAi
KTsKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiJWQiLCBjb3JyZXNwb25kaW5nTkZBTm9kZXNb
Y29ycmVzcG9uZGluZ0RGQU5vZGVJbmRleF0pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGRhdGFMb2dGKCI+XSIpOwotCiAgICAgICAgIGlmICghYWN0aW9ucy5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBkYXRhTG9nRigiIFtzaGFwZT1kb3VibGVjaXJjbGVdIik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQS5oIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmgKaW5kZXggMTg4ZGZiNDlhMDZkYTc3YTY4NDJl
MjU4NzJjMTkwNzZhOTY4NjZhZS4uOTExNzU1MzkyYzViYjhlNDlmYmNmMWYxNGE0MWMwNDgwY2Zl
ZDQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmgKQEAgLTQ3LDE0ICs0
NywzOSBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgREZBIHsKICNpZiBDT05URU5UX0VYVEVOU0lP
TlNfU1RBVEVfTUFDSElORV9ERUJVR0dJTkcKICAgICB2b2lkIGRlYnVnUHJpbnREb3QoKSBjb25z
dDsKICNlbmRpZgotICAgIAorCisgICAgVmVjdG9yPERGQU5vZGU+IG5vZGVzOwogICAgIFZlY3Rv
cjx1aW50NjRfdD4gYWN0aW9uczsKLSAgICBWZWN0b3I8dWludDhfdD4gdHJhbnNpdGlvbkNoYXJh
Y3RlcnM7CisgICAgVmVjdG9yPENoYXJSYW5nZT4gdHJhbnNpdGlvblJhbmdlczsKICAgICBWZWN0
b3I8dWludDMyX3Q+IHRyYW5zaXRpb25EZXN0aW5hdGlvbnM7Ci0gICAgVmVjdG9yPERGQU5vZGU+
IG5vZGVzOwogICAgIHVuc2lnbmVkIHJvb3QgeyAwIH07CiB9OwogCitpbmxpbmUgY29uc3QgQ2hh
clJhbmdlJiBERkFOb2RlOjpDb25zdFJhbmdlSXRlcmF0b3I6OnJhbmdlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZGZhLnRyYW5zaXRpb25SYW5nZXNbcG9zaXRpb25dOworfQorCitpbmxpbmUgdWlu
dDMyX3QgREZBTm9kZTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjp0YXJnZXQoKSBjb25zdAoreworICAg
IHJldHVybiBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9uc1twb3NpdGlvbl07Cit9CisKK2lubGlu
ZSBjb25zdCBDaGFyUmFuZ2UmIERGQU5vZGU6OlJhbmdlSXRlcmF0b3I6OnJhbmdlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZGZhLnRyYW5zaXRpb25SYW5nZXNbcG9zaXRpb25dOworfQorCitpbmxp
bmUgdWludDMyX3QgREZBTm9kZTo6UmFuZ2VJdGVyYXRvcjo6dGFyZ2V0KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZGZhLnRyYW5zaXRpb25EZXN0aW5hdGlvbnNbcG9zaXRpb25dOworfQorCitpbmxp
bmUgdm9pZCBERkFOb2RlOjpSYW5nZUl0ZXJhdG9yOjpyZXNldFRhcmdldCh1aW50MzJfdCBuZXdU
YXJnZXQpCit7CisgICAgZGZhLnRyYW5zaXRpb25EZXN0aW5hdGlvbnNbcG9zaXRpb25dID0gbmV3
VGFyZ2V0OworfQorCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHAK
aW5kZXggZTBmZDEyMDI0NzZiZjA4YTRiY2QyMjg5ZDE1MDhhMmVmMDc2MmE0Yy4uYjgwZWM1ZTkz
YjA3MWFhZjEwMmZkMGQ5ZjFhYzQxYTAwZjMwNmE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHAKQEAgLTIw
NCwxMCArMjA0LDE4IEBAIFZlY3RvcjxERkFCeXRlY29kZUNvbXBpbGVyOjpSYW5nZT4gREZBQnl0
ZWNvZGVDb21waWxlcjo6cmFuZ2VzKGNvbnN0IERGQU5vZGUmIG5vCiAgICAgbWVtc2V0KGRlc3Rp
bmF0aW9ucywgMHhmZiwgc2l6ZW9mKGRlc3RpbmF0aW9ucykpOwogICAgIGNvbnN0IHVpbnQzMl90
IG5vRGVzdGluYXRpb24gPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7CiAK
LSAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBub2RlLnRyYW5zaXRpb25zKG1fZGZhKSkgewot
ICAgICAgICBSRUxFQVNFX0FTU0VSVChwYWlyLmZpcnN0IDwgV1RGX0FSUkFZX0xFTkdUSChkZXN0
aW5hdGlvbnMpKTsKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkZXN0aW5hdGlvbnNbcGFp
ci5maXJzdF0gPT0gbm9EZXN0aW5hdGlvbiwgIlRyYW5zaXRpb25zIHNob3VsZCBiZSB1bmlxdWUi
KTsKLSAgICAgICAgZGVzdGluYXRpb25zW3BhaXIuZmlyc3RdID0gcGFpci5zZWNvbmQ7CisgICAg
Ym9vbCBjYW5Vc2VGYWxsYmFja1RyYW5zaXRpb24gPSBub2RlLmNhblVzZUZhbGxiYWNrVHJhbnNp
dGlvbihtX2RmYSk7CisgICAgdWludDMyX3QgZmFsbGJhY2tUcmFuc2l0aW9uVGFyZ2V0ID0gc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50MzI+OjptYXgoKTsKKyAgICBpZiAoY2FuVXNlRmFsbGJhY2tU
cmFuc2l0aW9uKQorICAgICAgICBmYWxsYmFja1RyYW5zaXRpb25UYXJnZXQgPSBub2RlLmJlc3RG
YWxsYmFja1RhcmdldChtX2RmYSk7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYW5zaXRpb24g
OiBub2RlLnRyYW5zaXRpb25zKG1fZGZhKSkgeworICAgICAgICB1aW50MzJfdCB0YXJnZXROb2Rl
SW5kZXggPSB0cmFuc2l0aW9uLnRhcmdldCgpOworICAgICAgICBpZiAoY2FuVXNlRmFsbGJhY2tU
cmFuc2l0aW9uICYmIGZhbGxiYWNrVHJhbnNpdGlvblRhcmdldCA9PSB0YXJnZXROb2RlSW5kZXgp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBmb3IgKHVpbnQxNl90IGkgPSB0cmFu
c2l0aW9uLnJhbmdlKCkuZmlyc3Q7IGkgPD0gdHJhbnNpdGlvbi5yYW5nZSgpLmxhc3Q7ICsraSkK
KyAgICAgICAgICAgIGRlc3RpbmF0aW9uc1tpXSA9IHRhcmdldE5vZGVJbmRleDsKICAgICB9CiAK
ICAgICBWZWN0b3I8UmFuZ2U+IHJhbmdlczsKQEAgLTIxNSw3ICsyMjMsNiBAQCBWZWN0b3I8REZB
Qnl0ZWNvZGVDb21waWxlcjo6UmFuZ2U+IERGQUJ5dGVjb2RlQ29tcGlsZXI6OnJhbmdlcyhjb25z
dCBERkFOb2RlJiBubwogICAgIGJvb2wgaGFzUmFuZ2VNaW4gPSBmYWxzZTsKICAgICBmb3IgKHVp
bnQ4X3QgaSA9IDA7IGkgPCAxMjg7IGkrKykgewogICAgICAgICBpZiAoaGFzUmFuZ2VNaW4pIHsK
LSAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIShub2RlLmhhc0ZhbGxiYWNrVHJhbnNp
dGlvbigpICYmIG5vZGUuZmFsbGJhY2tUcmFuc2l0aW9uRGVzdGluYXRpb24obV9kZmEpID09IGRl
c3RpbmF0aW9uc1tyYW5nZU1pbl0pLCAiSW5kaXZpZHVhbCB0cmFuc2l0aW9ucyB0byB0aGUgZmFs
bGJhY2sgdHJhbnNpdGlvbnMgc2hvdWxkIGhhdmUgYmVlbiBlbGltaW5hdGVkIGJ5IHRoZSBvcHRp
bWl6ZXIuIik7CiAgICAgICAgICAgICBpZiAoZGVzdGluYXRpb25zW2ldICE9IGRlc3RpbmF0aW9u
c1tyYW5nZU1pbl0pIHsKIAogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGVuZCBvZiBh
IHJhbmdlLiBDaGVjayBpZiBpdCBjYW4gYmUgY2FzZSBpbnNlbnNpdGl2ZS4KQEAgLTI2MCw2ICsy
NjcsNyBAQCBWZWN0b3I8REZBQnl0ZWNvZGVDb21waWxlcjo6UmFuZ2U+IERGQUJ5dGVjb2RlQ29t
cGlsZXI6OnJhbmdlcyhjb25zdCBERkFOb2RlJiBubwogICAgICAgICAvLyBJZiBhIHJhbmdlIGdv
ZXMgdG8gMTI3LCB0aGVyZSB3aWxsIG5ldmVyIGJlIHZhbHVlcyBoaWdoZXIgdGhhbiBpdCwgc28g
Y2hlY2tpbmcgZm9yIGNhc2UtaW5zZW5zaXRpdmUgcmFuZ2VzIHdvdWxkIGFsd2F5cyBmYWlsLgog
ICAgICAgICByYW5nZXMuYXBwZW5kKFJhbmdlKHJhbmdlTWluLCAxMjcsIGRlc3RpbmF0aW9uc1ty
YW5nZU1pbl0sIHRydWUpKTsKICAgICB9CisKICAgICByZXR1cm4gcmFuZ2VzOwogfQogICAgIApA
QCAtMjg5LDcgKzI5Nyw3IEBAIHVuc2lnbmVkIERGQUJ5dGVjb2RlQ29tcGlsZXI6Om5vZGVUcmFu
c2l0aW9uc01heEJ5dGVjb2RlU2l6ZShjb25zdCBERkFOb2RlJiBub2RlCiAgICAgdW5zaWduZWQg
c2l6ZSA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiByYW5nZSA6IHJhbmdlcyhub2RlKSkKICAg
ICAgICAgc2l6ZSArPSBjaGVja0ZvclJhbmdlTWF4Qnl0ZWNvZGVTaXplKHJhbmdlKTsKLSAgICBp
ZiAobm9kZS5oYXNGYWxsYmFja1RyYW5zaXRpb24oKSkKKyAgICBpZiAobm9kZS5jYW5Vc2VGYWxs
YmFja1RyYW5zaXRpb24obV9kZmEpKQogICAgICAgICBzaXplICs9IHNpemVvZihERkFCeXRlY29k
ZUluc3RydWN0aW9uOjpKdW1wKSArIHNpemVvZih1aW50MzJfdCk7CiAgICAgZWxzZQogICAgICAg
ICBzaXplICs9IGluc3RydWN0aW9uU2l6ZVdpdGhBcmd1bWVudHMoREZBQnl0ZWNvZGVJbnN0cnVj
dGlvbjo6VGVybWluYXRlKTsKQEAgLTMwMyw4ICszMTEsOCBAQCB2b2lkIERGQUJ5dGVjb2RlQ29t
cGlsZXI6OmNvbXBpbGVOb2RlVHJhbnNpdGlvbnModWludDMyX3Qgbm9kZUluZGV4KQogICAgIAog
ICAgIGZvciAoY29uc3QgYXV0byYgcmFuZ2UgOiByYW5nZXMobm9kZSkpCiAgICAgICAgIGNvbXBp
bGVDaGVja0ZvclJhbmdlKG5vZGVJbmRleCwgcmFuZ2UpOwotICAgIGlmIChub2RlLmhhc0ZhbGxi
YWNrVHJhbnNpdGlvbigpKQotICAgICAgICBlbWl0SnVtcChub2RlSW5kZXgsIG5vZGUuZmFsbGJh
Y2tUcmFuc2l0aW9uRGVzdGluYXRpb24obV9kZmEpKTsKKyAgICBpZiAobm9kZS5jYW5Vc2VGYWxs
YmFja1RyYW5zaXRpb24obV9kZmEpKQorICAgICAgICBlbWl0SnVtcChub2RlSW5kZXgsIG5vZGUu
YmVzdEZhbGxiYWNrVGFyZ2V0KG1fZGZhKSk7CiAgICAgZWxzZQogICAgICAgICBlbWl0VGVybWlu
YXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RG
QUNvbWJpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUNvbWJp
bmVyLmNwcAppbmRleCAzNzUzYzZmYzExNjkyNTU1MDNkOGI1ZmZkZjMxMGIwMmZlMzkxMDcxLi42
MDk2YzNiMGYyMzg1MTYwNWE5YWE1ZWEwNTE4ODQ5YjA1ODVmNWNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFDb21iaW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQ29tYmluZXIuY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiREZBQ29tYmluZXIuaCIKIAorI2lu
Y2x1ZGUgIk11dGFibGVSYW5nZUxpc3QuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKQEAgLTM0LDYgKzM1LDM1IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CiAKIGNsYXNzIERGQU1lcmdlciB7
CisgICAgdHlwZWRlZiBNdXRhYmxlUmFuZ2VMaXN0PGNoYXIsIHVpbnQ2NF90LCAxMjg+IENvbWJp
bmVkVHJhbnNpdGlvbnNNdXRhYmxlUmFuZ2VMaXN0OworCisgICAgZW51bSBjbGFzcyBXaGljaERG
QSB7CisgICAgICAgIEEsCisgICAgICAgIEIKKyAgICB9OworCisgICAgdGVtcGxhdGU8V2hpY2hE
RkEgd2hpY2hERkE+CisgICAgc3RydWN0IFRhcmdldENvbnZlcnRlciB7CisgICAgICAgIHVpbnQ2
NF90IGNvbnZlcnQodWludDMyX3QgdGFyZ2V0KQorICAgICAgICB7CisgICAgICAgICAgICB1aW50
NjRfdCB2YWx1ZSA9IDB4ZmZmZmZmZmZmZmZmZmZmZjsKKyAgICAgICAgICAgIGV4dGVuZCh2YWx1
ZSwgdGFyZ2V0KTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZvaWQgZXh0ZW5kKHVpbnQ2NF90JiBkZXN0aW5hdGlvbiwgdWludDMyX3QgdGFyZ2V0KQor
ICAgICAgICB7CisgICAgICAgICAgICBzZXRIYWxmU2lnbmF0dXJlKGRlc3RpbmF0aW9uLCB0YXJn
ZXQpOworICAgICAgICB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCBzZXRIYWxmU2lnbmF0
dXJlKHVpbnQ2NF90JiBzaWduYXR1cmUsIHVpbnQzMl90IHZhbHVlKQorICAgICAgICB7CisgICAg
ICAgICAgICB1bnNpZ25lZCBzaGlmdEFtb3VudCA9ICh3aGljaERGQSA9PSBXaGljaERGQTo6QSkg
PyAzMiA6IDA7CisgICAgICAgICAgICB1aW50NjRfdCBtYXNrID0gc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KDB4ZmZmZmZmZmYpIDw8ICgzMiAtIHNoaWZ0QW1vdW50KTsKKyAgICAgICAgICAgIHNpZ25h
dHVyZSA9IChzaWduYXR1cmUgJiBtYXNrKSB8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1ZSkg
PDwgc2hpZnRBbW91bnQ7CisgICAgICAgIH0KKyAgICB9OworCiBwdWJsaWM6CiAgICAgREZBTWVy
Z2VyKGNvbnN0IERGQSYgYSwgY29uc3QgREZBJiBiKQogICAgICAgICA6IG1fZGZhQShhKQpAQCAt
NDksMzIgKzc5LDQwIEBAIHB1YmxpYzoKICAgICAgICAgdWludDY0X3Qgcm9vdFNpZ25hdHVyZSA9
IHNpZ25hdHVyZUZvckluZGljZXMobV9kZmFBLnJvb3QsIG1fZGZhQi5yb290KTsKICAgICAgICAg
Z2V0T3JDcmVhdGVDb21iaW5lZE5vZGUocm9vdFNpZ25hdHVyZSk7CiAKKyAgICAgICAgQ29tYmlu
ZWRUcmFuc2l0aW9uc011dGFibGVSYW5nZUxpc3QgY29tYmluZWRUcmFuc2l0aW9uczsKICAgICAg
ICAgd2hpbGUgKCFtX3VucHJvY2Vzc2VkTm9kZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBt
ZW1zZXQobV90cmFuc2l0aW9uVGFyZ2V0cywgMHhmZiwgc2l6ZW9mKG1fdHJhbnNpdGlvblRhcmdl
dHMpKTsKKyAgICAgICAgICAgIGNvbWJpbmVkVHJhbnNpdGlvbnMuY2xlYXIoKTsKIAogICAgICAg
ICAgICAgdWludDY0X3QgdW5wcm9jZXNzZWROb2RlID0gbV91bnByb2Nlc3NlZE5vZGVzLnRha2VM
YXN0KCk7CiAKLSAgICAgICAgICAgIC8vIFdlIGNhbm5vdCBjYWNoZSB0aGUgc291cmNlIG5vZGUg
aXRzZWxmIHNpbmNlIHdlIG1vZGlmeSB0aGUgbWFjaGluZS4gV2Ugb25seSBtYW5pcHVsYXRlIHRo
ZSBJRHMuCi0gICAgICAgICAgICB1aW50MzJfdCBzb3VyY2VOb2RlSWQgPSBtX25vZGVNYXBwaW5n
LmdldCh1bnByb2Nlc3NlZE5vZGUpOwotCi0gICAgICAgICAgICAvLyBQb3B1bGF0ZSB0aGUgdW5p
cXVlIHRyYW5zaXRpb25zLgogICAgICAgICAgICAgdWludDMyX3QgaW5kZXhBID0gZXh0cmFjdElu
ZGV4QSh1bnByb2Nlc3NlZE5vZGUpOwotICAgICAgICAgICAgaWYgKGluZGV4QSAhPSBpbnZhbGlk
Tm9kZUluZGV4KQotICAgICAgICAgICAgICAgIHBvcHVsYXRlVHJhbnNpdGlvbnM8V2hpY2hERkE6
OkE+KGluZGV4QSk7CisgICAgICAgICAgICBpZiAoaW5kZXhBICE9IGludmFsaWROb2RlSW5kZXgp
IHsKKyAgICAgICAgICAgICAgICBjb25zdCBERkFOb2RlJiBub2RlQSA9IG1fZGZhQS5ub2Rlc1tp
bmRleEFdOworICAgICAgICAgICAgICAgIGF1dG8gdHJhbnNpdGlvbnNBID0gbm9kZUEudHJhbnNp
dGlvbnMobV9kZmFBKTsKKyAgICAgICAgICAgICAgICBUYXJnZXRDb252ZXJ0ZXI8V2hpY2hERkE6
OkE+IGNvbnZlcnRlckE7CisgICAgICAgICAgICAgICAgY29tYmluZWRUcmFuc2l0aW9ucy5leHRl
bmQodHJhbnNpdGlvbnNBLmJlZ2luKCksIHRyYW5zaXRpb25zQS5lbmQoKSwgY29udmVydGVyQSk7
CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4QiA9IGV4dHJhY3RJ
bmRleEIodW5wcm9jZXNzZWROb2RlKTsKLSAgICAgICAgICAgIGlmIChpbmRleEIgIT0gaW52YWxp
ZE5vZGVJbmRleCkKLSAgICAgICAgICAgICAgICBwb3B1bGF0ZVRyYW5zaXRpb25zPFdoaWNoREZB
OjpCPihpbmRleEIpOwotCi0gICAgICAgICAgICAvLyBTcHJlYWQgdGhlIGZhbGxiYWNrIHRyYW5z
aXRpb25zIG92ZXIgdGhlIHVuaXF1ZSB0cmFuc2l0aW9ucyBhbmQga2VlcCBhIHJlZmVyZW5jZSB0
byB0aGUgZmFsbGJhY2sgdHJhbnNpdGlvbi4KLSAgICAgICAgICAgIHVpbnQ2NF90IGZhbGxiYWNr
VHJhbnNpdGlvblNpZ25hdHVyZSA9IHNpZ25hdHVyZUZvckluZGljZXMoaW52YWxpZE5vZGVJbmRl
eCwgaW52YWxpZE5vZGVJbmRleCk7Ci0gICAgICAgICAgICBpZiAoaW5kZXhBICE9IGludmFsaWRO
b2RlSW5kZXgpCi0gICAgICAgICAgICAgICAgcG9wdWxhdGVGcm9tRmFsbGJhY2tUcmFuc2l0aW9u
czxXaGljaERGQTo6QT4oaW5kZXhBLCBmYWxsYmFja1RyYW5zaXRpb25TaWduYXR1cmUpOwotICAg
ICAgICAgICAgaWYgKGluZGV4QiAhPSBpbnZhbGlkTm9kZUluZGV4KQotICAgICAgICAgICAgICAg
IHBvcHVsYXRlRnJvbUZhbGxiYWNrVHJhbnNpdGlvbnM8V2hpY2hERkE6OkI+KGluZGV4QiwgZmFs
bGJhY2tUcmFuc2l0aW9uU2lnbmF0dXJlKTsKLQotICAgICAgICAgICAgY3JlYXRlVHJhbnNpdGlv
bnMoc291cmNlTm9kZUlkKTsKLSAgICAgICAgICAgIGNyZWF0ZUZhbGxiYWNrVHJhbnNpdGlvbklm
TmVlZGVkKHNvdXJjZU5vZGVJZCwgZmFsbGJhY2tUcmFuc2l0aW9uU2lnbmF0dXJlKTsKKyAgICAg
ICAgICAgIGlmIChpbmRleEIgIT0gaW52YWxpZE5vZGVJbmRleCkgeworICAgICAgICAgICAgICAg
IGNvbnN0IERGQU5vZGUmIG5vZGVCID0gbV9kZmFCLm5vZGVzW2luZGV4Ql07CisgICAgICAgICAg
ICAgICAgYXV0byB0cmFuc2l0aW9uc0IgPSBub2RlQi50cmFuc2l0aW9ucyhtX2RmYUIpOworICAg
ICAgICAgICAgICAgIFRhcmdldENvbnZlcnRlcjxXaGljaERGQTo6Qj4gY29udmVydGVyQjsKKyAg
ICAgICAgICAgICAgICBjb21iaW5lZFRyYW5zaXRpb25zLmV4dGVuZCh0cmFuc2l0aW9uc0IuYmVn
aW4oKSwgdHJhbnNpdGlvbnNCLmVuZCgpLCBjb252ZXJ0ZXJCKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdW5zaWduZWQgdHJhbnNpdGlvbnNTdGFydCA9IG1fb3V0cHV0LnRyYW5zaXRp
b25SYW5nZXMuc2l6ZSgpOworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiByYW5nZSA6IGNv
bWJpbmVkVHJhbnNpdGlvbnMpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXROb2Rl
SWQgPSBnZXRPckNyZWF0ZUNvbWJpbmVkTm9kZShyYW5nZS5kYXRhKTsKKyAgICAgICAgICAgICAg
ICBtX291dHB1dC50cmFuc2l0aW9uUmFuZ2VzLmFwcGVuZCh7IHJhbmdlLmZpcnN0LCByYW5nZS5s
YXN0IH0pOworICAgICAgICAgICAgICAgIG1fb3V0cHV0LnRyYW5zaXRpb25EZXN0aW5hdGlvbnMu
YXBwZW5kKHRhcmdldE5vZGVJZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB1bnNpZ25l
ZCB0cmFuc2l0aW9uc0VuZCA9IG1fb3V0cHV0LnRyYW5zaXRpb25SYW5nZXMuc2l6ZSgpOworICAg
ICAgICAgICAgdW5zaWduZWQgdHJhbnNpdGlvbnNMZW5ndGggPSB0cmFuc2l0aW9uc0VuZCAtIHRy
YW5zaXRpb25zU3RhcnQ7CisKKyAgICAgICAgICAgIHVpbnQzMl90IHNvdXJjZU5vZGVJZCA9IG1f
bm9kZU1hcHBpbmcuZ2V0KHVucHJvY2Vzc2VkTm9kZSk7CisgICAgICAgICAgICBERkFOb2RlJiBk
ZmFTb3VyY2VOb2RlID0gbV9vdXRwdXQubm9kZXNbc291cmNlTm9kZUlkXTsKKyAgICAgICAgICAg
IGRmYVNvdXJjZU5vZGUuc2V0VHJhbnNpdGlvbnModHJhbnNpdGlvbnNTdGFydCwgc3RhdGljX2Nh
c3Q8dWludDhfdD4odHJhbnNpdGlvbnNMZW5ndGgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gbV9vdXRwdXQ7CiAgICAgfQpAQCAtODIsMTEgKzEyMCw2IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgdWludDMyX3QgaW52YWxpZE5vZGVJbmRleCA9IDB4ZmZmZmZmZmY7CiAKLSAgICBlbnVt
IGNsYXNzIFdoaWNoREZBIHsKLSAgICAgICAgQSwKLSAgICAgICAgQgotICAgIH07Ci0KICAgICBz
dGF0aWMgdWludDY0X3Qgc2lnbmF0dXJlRm9ySW5kaWNlcyh1aW50MzJfdCBhSW5kZXgsIHVpbnQz
Ml90IGJJbmRleCkKICAgICB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
YUluZGV4KSA8PCAzMiB8IGJJbmRleDsKQEAgLTEyMiwxNCArMTU1LDE0IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICB1aW50MzJfdCBhY3Rpb25zU3RhcnQgPSBub2RlLmFjdGlvbnNTdGFydCgpOwog
ICAgICAgICAgICAgdWludDMyX3QgYWN0aW9uc0VuZCA9IGFjdGlvbnNTdGFydCArIG5vZGUuYWN0
aW9uc0xlbmd0aCgpOwogICAgICAgICAgICAgZm9yICh1aW50MzJfdCBpID0gYWN0aW9uc1N0YXJ0
OyBpIDwgYWN0aW9uc0VuZDsgKytpKQotICAgICAgICAgICAgYWN0aW9ucy5hZGQobV9kZmFBLmFj
dGlvbnNbaV0pOworICAgICAgICAgICAgICAgIGFjdGlvbnMuYWRkKG1fZGZhQS5hY3Rpb25zW2ld
KTsKICAgICAgICAgfQogICAgICAgICBpZiAoaW5kZXhCICE9IGludmFsaWROb2RlSW5kZXgpIHsK
ICAgICAgICAgICAgIGNvbnN0IERGQU5vZGUmIG5vZGUgPSBtX2RmYUIubm9kZXNbaW5kZXhCXTsK
ICAgICAgICAgICAgIHVpbnQzMl90IGFjdGlvbnNTdGFydCA9IG5vZGUuYWN0aW9uc1N0YXJ0KCk7
CiAgICAgICAgICAgICB1aW50MzJfdCBhY3Rpb25zRW5kID0gYWN0aW9uc1N0YXJ0ICsgbm9kZS5h
Y3Rpb25zTGVuZ3RoKCk7CiAgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSBhY3Rpb25zU3Rh
cnQ7IGkgPCBhY3Rpb25zRW5kOyArK2kpCi0gICAgICAgICAgICBhY3Rpb25zLmFkZChtX2RmYUIu
YWN0aW9uc1tpXSk7CisgICAgICAgICAgICAgICAgYWN0aW9ucy5hZGQobV9kZmFCLmFjdGlvbnNb
aV0pOwogICAgICAgICB9CiAKICAgICAgICAgdWludDMyX3QgYWN0aW9uc1N0YXJ0ID0gbV9vdXRw
dXQuYWN0aW9ucy5zaXplKCk7CkBAIC0xNDIsODcgKzE3NSwxMSBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gbmV3Tm9kZUluZGV4OwogICAgIH0KIAotICAgIHRlbXBsYXRlPFdoaWNoREZBIHdo
aWNoREZBPgotICAgIHZvaWQgc2V0SGFsZlNpZ25hdHVyZSh1aW50NjRfdCYgc2lnbmF0dXJlLCB1
aW50MzJfdCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHNoaWZ0QW1vdW50ID0gKHdo
aWNoREZBID09IFdoaWNoREZBOjpBKSA/IDMyIDogMDsKLSAgICAgICAgdWludDY0X3QgbWFzayA9
IHN0YXRpY19jYXN0PHVpbnQ2NF90PigweGZmZmZmZmZmKSA8PCAoMzIgLSBzaGlmdEFtb3VudCk7
Ci0gICAgICAgIHNpZ25hdHVyZSA9IChzaWduYXR1cmUgJiBtYXNrKSB8IHN0YXRpY19jYXN0PHVp
bnQ2NF90Pih2YWx1ZSkgPDwgc2hpZnRBbW91bnQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8V2hp
Y2hERkEgd2hpY2hERkE+Ci0gICAgdm9pZCBwb3B1bGF0ZVRyYW5zaXRpb25zKHVpbnQzMl90IG5v
ZGVJbmRleCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IERGQSYgZGZhID0gKHdoaWNoREZBID09IFdo
aWNoREZBOjpBKSA/IG1fZGZhQSA6IG1fZGZhQjsKLSAgICAgICAgY29uc3QgREZBTm9kZSYgbm9k
ZSA9IGRmYS5ub2Rlc1tub2RlSW5kZXhdOwotICAgICAgICB1aW50MzJfdCB0cmFuc2l0aW9uc1N0
YXJ0ID0gbm9kZS50cmFuc2l0aW9uc1N0YXJ0KCk7Ci0gICAgICAgIHVpbnQzMl90IHRyYW5zaXRp
b25zRW5kID0gdHJhbnNpdGlvbnNTdGFydCArIG5vZGUudHJhbnNpdGlvbnNMZW5ndGgoKTsKLQot
ICAgICAgICAvLyBFeHRyYWN0IHRyYW5zaXRpb25zLgotICAgICAgICBmb3IgKHVpbnQzMl90IHRy
YW5zaXRpb25JbmRleCA9IHRyYW5zaXRpb25zU3RhcnQ7IHRyYW5zaXRpb25JbmRleCA8IHRyYW5z
aXRpb25zRW5kOyArK3RyYW5zaXRpb25JbmRleCkgewotICAgICAgICAgICAgdWludDhfdCB0cmFu
c2l0aW9uQ2hhcmFjdGVyID0gZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJzW3RyYW5zaXRpb25JbmRl
eF07Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh0cmFuc2l0aW9uQ2hhcmFjdGVyIDwgV1RG
X0FSUkFZX0xFTkdUSChtX3RyYW5zaXRpb25UYXJnZXRzKSk7Ci0KLSAgICAgICAgICAgIHVpbnQz
Ml90IHRyYW5zaXRpb25EZXN0aW5hdGlvbiA9IGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zW3Ry
YW5zaXRpb25JbmRleF07Ci0gICAgICAgICAgICBzZXRIYWxmU2lnbmF0dXJlPHdoaWNoREZBPiht
X3RyYW5zaXRpb25UYXJnZXRzW3RyYW5zaXRpb25DaGFyYWN0ZXJdLCB0cmFuc2l0aW9uRGVzdGlu
YXRpb24pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8V2hpY2hERkEgd2hpY2hE
RkE+Ci0gICAgdm9pZCBwb3B1bGF0ZUZyb21GYWxsYmFja1RyYW5zaXRpb25zKHVpbnQzMl90IG5v
ZGVJbmRleCwgdWludDY0X3QmIGZhbGxiYWNrVHJhbnNpdGlvblNpZ25hdHVyZSkKLSAgICB7Ci0g
ICAgICAgIGNvbnN0IERGQSYgZGZhID0gKHdoaWNoREZBID09IFdoaWNoREZBOjpBKSA/IG1fZGZh
QSA6IG1fZGZhQjsKLSAgICAgICAgY29uc3QgREZBTm9kZSYgbm9kZSA9IGRmYS5ub2Rlc1tub2Rl
SW5kZXhdOwotICAgICAgICBpZiAoIW5vZGUuaGFzRmFsbGJhY2tUcmFuc2l0aW9uKCkpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdWludDMyX3QgZmFsbGJhY2tUYXJnZXQgPSBub2Rl
LmZhbGxiYWNrVHJhbnNpdGlvbkRlc3RpbmF0aW9uKGRmYSk7Ci0gICAgICAgIHNldEhhbGZTaWdu
YXR1cmU8d2hpY2hERkE+KGZhbGxiYWNrVHJhbnNpdGlvblNpZ25hdHVyZSwgZmFsbGJhY2tUYXJn
ZXQpOwotCi0gICAgICAgIC8vIFNwcmVhZCB0aGUgZmFsbGJhY2sgb3ZlciB0cmFuc2l0aW9ucyB3
aGVyZSB0aGUgb3RoZXIgaGFzIHNvbWV0aGluZyBhbmQgd2UgZG9uJ3QuCi0gICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKG1fdHJhbnNpdGlvblRhcmdldHMp
OyArK2kpIHsKLSAgICAgICAgICAgIHVpbnQ2NF90JiB0YXJnZXRTaWduYXR1cmUgPSBtX3RyYW5z
aXRpb25UYXJnZXRzW2ldOwotCi0gICAgICAgICAgICB1aW50MzJfdCBvdGhlclRhcmdldCA9ICh3
aGljaERGQSA9PSBXaGljaERGQTo6QSkgPyBleHRyYWN0SW5kZXhCKHRhcmdldFNpZ25hdHVyZSkg
OiBleHRyYWN0SW5kZXhBKHRhcmdldFNpZ25hdHVyZSk7Ci0gICAgICAgICAgICB1aW50MzJfdCBz
ZWxmVGFyZ2V0ID0gKHdoaWNoREZBID09IFdoaWNoREZBOjpBKSA/IGV4dHJhY3RJbmRleEEodGFy
Z2V0U2lnbmF0dXJlKSA6IGV4dHJhY3RJbmRleEIodGFyZ2V0U2lnbmF0dXJlKTsKLQotICAgICAg
ICAgICAgaWYgKG90aGVyVGFyZ2V0ICE9IGludmFsaWROb2RlSW5kZXggJiYgc2VsZlRhcmdldCA9
PSBpbnZhbGlkTm9kZUluZGV4KQotICAgICAgICAgICAgICAgIHNldEhhbGZTaWduYXR1cmU8d2hp
Y2hERkE+KHRhcmdldFNpZ25hdHVyZSwgZmFsbGJhY2tUYXJnZXQpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgdm9pZCBjcmVhdGVUcmFuc2l0aW9ucyh1aW50MzJfdCBzb3VyY2VOb2RlSWQpCi0g
ICAgewotICAgICAgICAvLyBDcmVhdGUgdHJhbnNpdGlvbnMgb3V0IG9mIHRoZSBzb3VyY2Ugbm9k
ZSwgY3JlYXRpbmcgbmV3IG5vZGVzIGFzIG5lZWRlZC4KLSAgICAgICAgdWludDMyX3QgdHJhbnNp
dGlvbnNTdGFydCA9IG1fb3V0cHV0LnRyYW5zaXRpb25DaGFyYWN0ZXJzLnNpemUoKTsKLSAgICAg
ICAgZm9yICh1aW50OF90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChtX3RyYW5zaXRpb25U
YXJnZXRzKTsgKytpKSB7Ci0gICAgICAgICAgICB1aW50NjRfdCBzaWduYXR1cmUgPSBtX3RyYW5z
aXRpb25UYXJnZXRzW2ldOwotICAgICAgICAgICAgaWYgKHNpZ25hdHVyZSA9PSBzaWduYXR1cmVG
b3JJbmRpY2VzKGludmFsaWROb2RlSW5kZXgsIGludmFsaWROb2RlSW5kZXgpKQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgdWludDMyX3Qgbm9kZUlkID0gZ2V0T3JDcmVh
dGVDb21iaW5lZE5vZGUoc2lnbmF0dXJlKTsKLSAgICAgICAgICAgIG1fb3V0cHV0LnRyYW5zaXRp
b25DaGFyYWN0ZXJzLmFwcGVuZChpKTsKLSAgICAgICAgICAgIG1fb3V0cHV0LnRyYW5zaXRpb25E
ZXN0aW5hdGlvbnMuYXBwZW5kKG5vZGVJZCk7Ci0gICAgICAgIH0KLSAgICAgICAgdWludDMyX3Qg
dHJhbnNpdGlvbnNFbmQgPSBtX291dHB1dC50cmFuc2l0aW9uQ2hhcmFjdGVycy5zaXplKCk7Ci0g
ICAgICAgIHVpbnQ4X3QgdHJhbnNpdGlvbnNMZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50OF90Pih0
cmFuc2l0aW9uc0VuZCAtIHRyYW5zaXRpb25zU3RhcnQpOwotCi0gICAgICAgIG1fb3V0cHV0Lm5v
ZGVzW3NvdXJjZU5vZGVJZF0uc2V0VHJhbnNpdGlvbnModHJhbnNpdGlvbnNTdGFydCwgdHJhbnNp
dGlvbnNMZW5ndGgpOwotICAgIH0KLQotICAgIHZvaWQgY3JlYXRlRmFsbGJhY2tUcmFuc2l0aW9u
SWZOZWVkZWQodWludDMyX3Qgc291cmNlTm9kZUlkLCB1aW50NjRfdCBmYWxsYmFja1RyYW5zaXRp
b25TaWduYXR1cmUpCi0gICAgewotICAgICAgICBpZiAoZmFsbGJhY2tUcmFuc2l0aW9uU2lnbmF0
dXJlICE9IHNpZ25hdHVyZUZvckluZGljZXMoaW52YWxpZE5vZGVJbmRleCwgaW52YWxpZE5vZGVJ
bmRleCkpIHsKLSAgICAgICAgICAgIHVpbnQzMl90IG5vZGVJZCA9IGdldE9yQ3JlYXRlQ29tYmlu
ZWROb2RlKGZhbGxiYWNrVHJhbnNpdGlvblNpZ25hdHVyZSk7Ci0gICAgICAgICAgICBtX291dHB1
dC5ub2Rlc1tzb3VyY2VOb2RlSWRdLmFkZEZhbGxiYWNrVHJhbnNpdGlvbihtX291dHB1dCwgbm9k
ZUlkKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIGNvbnN0IERGQSYgbV9kZmFBOwogICAgIGNv
bnN0IERGQSYgbV9kZmFCOwogICAgIERGQSBtX291dHB1dDsKICAgICBIYXNoTWFwPHVpbnQ2NF90
LCB1aW50MzJfdCwgRGVmYXVsdEhhc2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4gbV9ub2RlTWFwcGluZzsKICAgICBWZWN0b3I8
dWludDY0X3Q+IG1fdW5wcm9jZXNzZWROb2RlczsKLSAgICB1aW50NjRfdCBtX3RyYW5zaXRpb25U
YXJnZXRzWzEyOF07CiB9OwogCiB2b2lkIERGQUNvbWJpbmVyOjpjb21iaW5lREZBcyh1bnNpZ25l
ZCBtaW5pbXVtU2l6ZSwgc3RkOjpmdW5jdGlvbjx2b2lkKERGQSYmKT4gaGFuZGxlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQU1pbmltaXplci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFNaW5pbWl6ZXIuY3BwCmluZGV4
IGQwYTEyMTcyZWZiYjc0MmU4Y2YwYzk1OTYyODk1MWI3YTgxNzNmZTQuLmIyMWNhMzU2YTljNzFl
ZmYxODhkNzdjY2M0OGM2OTU2YzgyODE5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0RGQU1pbmltaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvREZBTWluaW1pemVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5j
bHVkZSAiREZBLmgiCiAjaW5jbHVkZSAiREZBTm9kZS5oIgorI2luY2x1ZGUgIk11dGFibGVSYW5n
ZUxpc3QuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0hhc2hlci5oPgpAQCAtNDAsNzkgKzQxLDMyIEBAIG5h
bWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CiAKIG5hbWVzcGFjZSB7CiAKLS8vIHNpbXBsaWZ5
VHJhbnNpdGlvbnMoKSB0cmllcyB0byBjb2xsYXBzZSBpbmRpdmlkdWFsIHRyYW5zaXRpb25zIGlu
dG8gZmFsbGJhY2sgdHJhbnNpdGlvbnMuCi0vLyBBZnRlciBzaW1wbGlmeVRyYW5zaXRpb25zKCks
IHlvdSBjYW4gYWxzbyBtYWtlIHRoZSBhc3N1bXB0aW9uIHRoYXQgYSBmYWxsYmFjayB0cmFuc2l0
aW9uIHRhcmdldCB3aWxsIG5ldmVyIGJlCi0vLyBhbHNvIHRoZSB0YXJnZXQgb2YgYW4gaW5kaXZp
ZHVhbCB0cmFuc2l0aW9uLgotc3RhdGljIHZvaWQgc2ltcGxpZnlUcmFuc2l0aW9ucyhERkEmIGRm
YSkKK3RlbXBsYXRlPHR5cGVuYW1lIFZlY3RvclR5cGUsIHR5cGVuYW1lIEl0ZXJhYmxlLCB0eXBl
bmFtZSBGdW5jdGlvbj4KK3N0YXRpYyBpbmxpbmUgdm9pZCBpdGVyYXRlSW50ZXJzZWN0aW9ucyhj
b25zdCBWZWN0b3JUeXBlJiBzaW5ndWxhclRyYW5zaXRpb25zRmlyc3RzLCBjb25zdCBJdGVyYWJs
ZSYgaXRlcmFibGVUcmFuc2l0aW9uTGlzdCwgY29uc3QgRnVuY3Rpb24mIGludGVyc2VjdGlvbkhh
bmRsZXIpCiB7Ci0gICAgZm9yIChERkFOb2RlJiBkZmFOb2RlIDogZGZhLm5vZGVzKSB7Ci0gICAg
ICAgIGJvb2wgYWRkaW5nRmFsbGJhY2sgPSBmYWxzZTsKLSAgICAgICAgdWludDMyX3QgbmV3RmFs
bGJhY2tEZXN0aW5hdGlvbiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsK
LSAgICAgICAgaWYgKCFkZmFOb2RlLmhhc0ZhbGxiYWNrVHJhbnNpdGlvbigpCi0gICAgICAgICAg
ICAmJiAoKGRmYU5vZGUudHJhbnNpdGlvbnNMZW5ndGgoKSA9PSAxMjYgJiYgIWRmYU5vZGUuY29u
dGFpbnNUcmFuc2l0aW9uKDAsIGRmYSkpCi0gICAgICAgICAgICAgICAgfHwgKGRmYU5vZGUudHJh
bnNpdGlvbnNMZW5ndGgoKSA9PSAxMjcgJiYgZGZhTm9kZS5jb250YWluc1RyYW5zaXRpb24oMCwg
ZGZhKSkpKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBiZXN0VGFyZ2V0ID0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpOwotICAgICAgICAgICAgdW5zaWduZWQgYmVzdFRhcmdl
dFNjb3JlID0gMDsKLSAgICAgICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIHVuc2lnbmVkLCBEZWZh
dWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8dW5zaWduZWQ+PiB0YXJnZXRIaXN0b2dyYW07Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIHRyYW5zaXRpb24gOiBkZmFOb2RlLnRyYW5zaXRpb25zKGRmYSkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoIXRyYW5zaXRpb24uZmlyc3QpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgdHJhbnNpdGlvblRhcmdldCA9IHRyYW5zaXRp
b24uc2Vjb25kOwotICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gdGFyZ2V0SGlzdG9n
cmFtLmFkZCh0cmFuc2l0aW9uVGFyZ2V0LCAxKTsKLSAgICAgICAgICAgICAgICBpZiAoIWFkZFJl
c3VsdC5pc05ld0VudHJ5KQotICAgICAgICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlKys7Ci0KLSAgICAgICAgICAgICAgICBpZiAoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA+IGJlc3RUYXJnZXRTY29yZSkgewotICAgICAgICAgICAgICAgICAgICBiZXN0VGFyZ2V0U2Nv
cmUgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgICAgICAgICAgICAgICAgICBiZXN0
VGFyZ2V0ID0gdHJhbnNpdGlvblRhcmdldDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGJlc3RUYXJnZXRTY29yZSwgIlRo
ZXJlIHNob3VsZCBiZSBhdCBsZWFzdCBvbmUgdmFsaWQgdGFyZ2V0IHNpbmNlIGhhdmluZyB0cmFu
c2l0aW9ucyBpcyBhIHByZWNvbmRpdGlvbiB0byBlbnRlciB0aGlzIHBhdGguIik7Ci0KLSAgICAg
ICAgICAgIG5ld0ZhbGxiYWNrRGVzdGluYXRpb24gPSBiZXN0VGFyZ2V0OwotICAgICAgICAgICAg
YWRkaW5nRmFsbGJhY2sgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBV
c2UgdGhlIHNhbWUgbG9jYXRpb24gdG8gd3JpdGUgbmV3IHRyYW5zaXRpb25zIHBvc3NpYmx5IGZv
bGxvd2VkIGJ5IHVudXNlZCBtZW1vcnkuCi0gICAgICAgIC8vIFdlIGNhbiBkbyB0aGlzIGJlY2F1
c2Ugd2UgYXJlIGFsd2F5cyBkZWNyZWFzaW5nIHRoZSBhbW91bnQgb2YgbWVtb3J5IHVzZWQuCi0g
ICAgICAgIC8vIFdlIHdpbGwgcHJvYmFibHkgbmVlZCBzb21ldGhpbmcgbGlrZSBzZXRIYXNGYWxs
YmFja1RyYW5zaXRpb25XaXRob3V0Q2hhbmdpbmdERkEgdG8gZG8gdGhhdC4KLQotICAgICAgICB1
bnNpZ25lZCBvbGRGYWxsYmFja1RyYW5zaXRpb24gPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQz
Ml90Pjo6bWF4KCk7Ci0gICAgICAgIGJvb2wgaGFkRmFsbGJhY2tUcmFuc2l0aW9uID0gZGZhTm9k
ZS5oYXNGYWxsYmFja1RyYW5zaXRpb24oKTsKLSAgICAgICAgaWYgKGhhZEZhbGxiYWNrVHJhbnNp
dGlvbikKLSAgICAgICAgICAgIG9sZEZhbGxiYWNrVHJhbnNpdGlvbiA9IGRmYU5vZGUuZmFsbGJh
Y2tUcmFuc2l0aW9uRGVzdGluYXRpb24oZGZhKTsKLSAgICAgICAgCi0gICAgICAgIG5ld0ZhbGxi
YWNrRGVzdGluYXRpb24gPSAobmV3RmFsbGJhY2tEZXN0aW5hdGlvbiA9PSBzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQzMl90Pjo6bWF4KCkgPyBvbGRGYWxsYmFja1RyYW5zaXRpb24gOiBuZXdGYWxs
YmFja0Rlc3RpbmF0aW9uKTsKLSAgICAgICAgQVNTRVJUKCFhZGRpbmdGYWxsYmFjayB8fCAobmV3
RmFsbGJhY2tEZXN0aW5hdGlvbiAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4
KCkgJiYgb2xkRmFsbGJhY2tUcmFuc2l0aW9uID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMy
X3Q+OjptYXgoKSkpOwotICAgICAgICBib29sIHdpbGxIYXZlRmFsbGJhY2sgPSBuZXdGYWxsYmFj
a0Rlc3RpbmF0aW9uICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKLSAg
ICAgICAgZGZhTm9kZS5zZXRIYXNGYWxsYmFja1RyYW5zaXRpb25XaXRob3V0Q2hhbmdpbmdERkEo
d2lsbEhhdmVGYWxsYmFjayk7Ci0gICAgICAgIAotICAgICAgICBpZiAod2lsbEhhdmVGYWxsYmFj
aykgewotICAgICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50OF90LCB1aW50MzJfdD4+IHRy
YW5zaXRpb25zID0gZGZhTm9kZS50cmFuc2l0aW9ucyhkZmEpOwotICAgICAgICAgICAgdW5zaWdu
ZWQgYXZhaWxhYmxlU2xvdENvdW50ID0gdHJhbnNpdGlvbnMuc2l6ZSgpICsgaGFkRmFsbGJhY2tU
cmFuc2l0aW9uOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRyYW5zaXRp
b25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRyYW5zaXRpb25zW2ldLnNl
Y29uZCA9PSBuZXdGYWxsYmFja0Rlc3RpbmF0aW9uKQotICAgICAgICAgICAgICAgICAgICB0cmFu
c2l0aW9ucy5yZW1vdmUoaS0tKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCh0cmFuc2l0aW9ucy5zaXplKCkgKyB3aWxsSGF2ZUZhbGxiYWNrIDw9
IGF2YWlsYWJsZVNsb3RDb3VudCk7Ci0gICAgICAgIAotICAgICAgICAgICAgdW5zaWduZWQgZmly
c3RTbG90ID0gZGZhTm9kZS50cmFuc2l0aW9uc1N0YXJ0KCk7Ci0gICAgICAgICAgICBkZmFOb2Rl
LnJlc2V0VHJhbnNpdGlvbnMoZmlyc3RTbG90LCB0cmFuc2l0aW9ucy5zaXplKCkpOwotICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRyYW5zaXRpb25zLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgICAgICAgICAgZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJzW2ZpcnN0U2xvdCArIGld
ID0gdHJhbnNpdGlvbnNbaV0uZmlyc3Q7Ci0gICAgICAgICAgICAgICAgZGZhLnRyYW5zaXRpb25E
ZXN0aW5hdGlvbnNbZmlyc3RTbG90ICsgaV0gPSB0cmFuc2l0aW9uc1tpXS5zZWNvbmQ7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0cmFuc2l0aW9ucy5zaXpl
KCk7IGkgPCBhdmFpbGFibGVTbG90Q291bnQ7ICsraSkgewotICAgICAgICAgICAgICAgIC8vIElu
dmFsaWRhdGUgbm93LXVudXNlZCBtZW1vcnkgdG8gbWFrZSBmaW5kaW5nIGJ1Z3MgZWFzaWVyLgot
ICAgICAgICAgICAgICAgIGRmYS50cmFuc2l0aW9uQ2hhcmFjdGVyc1tmaXJzdFNsb3QgKyBpXSA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDhfdD46Om1heCgpOwotICAgICAgICAgICAgICAgIGRm
YS50cmFuc2l0aW9uRGVzdGluYXRpb25zW2ZpcnN0U2xvdCArIGldID0gc3RkOjpudW1lcmljX2xp
bWl0czx1aW50MzJfdD46Om1heCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHdp
bGxIYXZlRmFsbGJhY2spIHsKLSAgICAgICAgICAgICAgICBkZmEudHJhbnNpdGlvbkNoYXJhY3Rl
cnNbZmlyc3RTbG90ICsgdHJhbnNpdGlvbnMuc2l6ZSgpXSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDhfdD46Om1heCgpOwotICAgICAgICAgICAgICAgIGRmYS50cmFuc2l0aW9uRGVzdGluYXRp
b25zW2ZpcnN0U2xvdCArIHRyYW5zaXRpb25zLnNpemUoKV0gPSBuZXdGYWxsYmFja0Rlc3RpbmF0
aW9uOwotICAgICAgICAgICAgfQorICAgIEFTU0VSVCghc2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0
cy5pc0VtcHR5KCkpOworICAgIGF1dG8gb3RoZXJJdGVyYXRvciA9IGl0ZXJhYmxlVHJhbnNpdGlv
bkxpc3QuYmVnaW4oKTsKKyAgICBhdXRvIG90aGVyRW5kID0gaXRlcmFibGVUcmFuc2l0aW9uTGlz
dC5lbmQoKTsKKworICAgIGlmIChvdGhlckl0ZXJhdG9yID09IG90aGVyRW5kKQorICAgICAgICBy
ZXR1cm47CisKKyAgICB1bnNpZ25lZCBzaW5ndWxhclRyYW5zaXRpb25zTGVuZ3RoID0gc2luZ3Vs
YXJUcmFuc2l0aW9uc0ZpcnN0cy5zaXplKCk7CisgICAgdW5zaWduZWQgc2luZ3VsYXJUcmFuc2l0
aW9uc0ZpcnN0c0luZGV4ID0gMDsKKyAgICBmb3IgKDsgb3RoZXJJdGVyYXRvciAhPSBvdGhlckVu
ZDsgKytvdGhlckl0ZXJhdG9yKSB7CisgICAgICAgIGF1dG8gZmlyc3RDaGFyYWN0ZXIgPSBvdGhl
ckl0ZXJhdG9yLmZpcnN0KCk7CisgICAgICAgIHdoaWxlIChzaW5ndWxhclRyYW5zaXRpb25zRmly
c3RzSW5kZXggPCBzaW5ndWxhclRyYW5zaXRpb25zTGVuZ3RoCisgICAgICAgICAgICAmJiBzaW5n
dWxhclRyYW5zaXRpb25zRmlyc3RzW3Npbmd1bGFyVHJhbnNpdGlvbnNGaXJzdHNJbmRleF0gIT0g
Zmlyc3RDaGFyYWN0ZXIpCisgICAgICAgICAgICArK3Npbmd1bGFyVHJhbnNpdGlvbnNGaXJzdHNJ
bmRleDsKKworICAgICAgICBpbnRlcnNlY3Rpb25IYW5kbGVyKHNpbmd1bGFyVHJhbnNpdGlvbnNG
aXJzdHNJbmRleCwgb3RoZXJJdGVyYXRvcik7CisgICAgICAgICsrc2luZ3VsYXJUcmFuc2l0aW9u
c0ZpcnN0c0luZGV4OworCisgICAgICAgIGF1dG8gbGFzdENoYXJhY3RlciA9IG90aGVySXRlcmF0
b3IubGFzdCgpOworICAgICAgICB3aGlsZSAoc2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0c0luZGV4
IDwgc2luZ3VsYXJUcmFuc2l0aW9uc0xlbmd0aAorICAgICAgICAgICAgJiYgc2luZ3VsYXJUcmFu
c2l0aW9uc0ZpcnN0c1tzaW5ndWxhclRyYW5zaXRpb25zRmlyc3RzSW5kZXhdIDw9IGxhc3RDaGFy
YWN0ZXIpIHsKKyAgICAgICAgICAgIGludGVyc2VjdGlvbkhhbmRsZXIoc2luZ3VsYXJUcmFuc2l0
aW9uc0ZpcnN0c0luZGV4LCBvdGhlckl0ZXJhdG9yKTsKKyAgICAgICAgICAgICsrc2luZ3VsYXJU
cmFuc2l0aW9uc0ZpcnN0c0luZGV4OwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTM3LDcgKzkx
LDMyIEBAIHB1YmxpYzoKICAgICAgICAgbV9zZXRzLmFwcGVuZChTZXREZXNjcmlwdG9yKHsgMCwg
c2l6ZSwgMCB9KSk7CiAgICAgfQogCi0gICAgdm9pZCBtYXJrRWxlbWVudEluQ3VycmVudEdlbmVy
YXRpb24odW5zaWduZWQgZWxlbWVudEluZGV4KQorICAgIHZvaWQgcmVzZXJ2ZVVuaW5pdGlhbGl6
ZWRDYXBhY2l0eSh1bnNpZ25lZCBlbGVtZW50Q291bnQpCisgICAgeworICAgICAgICBtX3BhcnRp
dGlvbmVkRWxlbWVudHMucmVzaXplKGVsZW1lbnRDb3VudCk7CisgICAgICAgIG1fZWxlbWVudFBv
c2l0aW9uSW5QYXJ0aXRpb25lZE5vZGVzLnJlc2l6ZShlbGVtZW50Q291bnQpOworICAgICAgICBt
X2VsZW1lbnRUb1NldE1hcC5yZXNpemUoZWxlbWVudENvdW50KTsKKyAgICB9CisKKyAgICB2b2lk
IGFkZFNldFVuY2hlY2tlZCh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgc2l6ZSkKKyAgICB7Cisg
ICAgICAgIG1fc2V0cy5hcHBlbmQoU2V0RGVzY3JpcHRvciB7IHN0YXJ0LCBzaXplLCAwIH0pOwor
ICAgIH0KKworICAgIHZvaWQgc2V0RWxlbWVudFVuY2hlY2tlZCh1bnNpZ25lZCBlbGVtZW50SW5k
ZXgsIHVuc2lnbmVkIHBvc2l0aW9uSW5QYXJ0aXRpb24sIHVuc2lnbmVkIHNldEluZGV4KQorICAg
IHsKKyAgICAgICAgQVNTRVJUKHNldEluZGV4IDwgbV9zZXRzLnNpemUoKSk7CisgICAgICAgIG1f
cGFydGl0aW9uZWRFbGVtZW50c1twb3NpdGlvbkluUGFydGl0aW9uXSA9IGVsZW1lbnRJbmRleDsK
KyAgICAgICAgbV9lbGVtZW50UG9zaXRpb25JblBhcnRpdGlvbmVkTm9kZXNbZWxlbWVudEluZGV4
XSA9IHBvc2l0aW9uSW5QYXJ0aXRpb247CisgICAgICAgIG1fZWxlbWVudFRvU2V0TWFwW2VsZW1l
bnRJbmRleF0gPSBzZXRJbmRleDsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldE9m
U2V0KHVuc2lnbmVkIHNldEluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2V0
c1tzZXRJbmRleF0uc3RhcnQ7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIG1hcmtF
bGVtZW50SW5DdXJyZW50R2VuZXJhdGlvbih1bnNpZ25lZCBlbGVtZW50SW5kZXgpCiAgICAgewog
ICAgICAgICAvLyBTd2FwIHRoZSBub2RlIHdpdGggdGhlIGZpcnN0IHVubWFya2VkIG5vZGUuCiAg
ICAgICAgIHVuc2lnbmVkIHNldEluZGV4ID0gbV9lbGVtZW50VG9TZXRNYXBbZWxlbWVudEluZGV4
XTsKQEAgLTIzOCw0NSArMjE3LDY2IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIC8vIExpc3Qg
b2Ygc2V0cy4KLSAgICBWZWN0b3I8U2V0RGVzY3JpcHRvcj4gbV9zZXRzOworICAgIFZlY3RvcjxT
ZXREZXNjcmlwdG9yLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9zZXRzOwogCiAgICAgLy8g
QWxsIHRoZSBlbGVtZW50IGluZGljZXMgc3VjaCB0aGF0IHR3byBlbGVtZW50cyBvZiB0aGUgc2Ft
ZSBzZXQgbmV2ZXIgaGF2ZSBhIGVsZW1lbnQgb2YgYSBkaWZmZXJlbnQgc2V0IGJldHdlZW4gdGhl
bS4KLSAgICBWZWN0b3I8dW5zaWduZWQ+IG1fcGFydGl0aW9uZWRFbGVtZW50czsKKyAgICBWZWN0
b3I8dW5zaWduZWQsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX3BhcnRpdGlvbmVkRWxlbWVu
dHM7CiAKICAgICAvLyBNYXAgZWxlbWVudEluZGV4LT5wb3NpdGlvbiBpbiB0aGUgcGFydGl0aW9u
ZWRFbGVtZW50cy4KLSAgICBWZWN0b3I8dW5zaWduZWQ+IG1fZWxlbWVudFBvc2l0aW9uSW5QYXJ0
aXRpb25lZE5vZGVzOworICAgIFZlY3Rvcjx1bnNpZ25lZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZs
b3c+IG1fZWxlbWVudFBvc2l0aW9uSW5QYXJ0aXRpb25lZE5vZGVzOwogCiAgICAgLy8gTWFwIGVs
ZW1lbnRJbmRleC0+U2V0SW5kZXguCi0gICAgVmVjdG9yPHVuc2lnbmVkPiBtX2VsZW1lbnRUb1Nl
dE1hcDsKKyAgICBWZWN0b3I8dW5zaWduZWQsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX2Vs
ZW1lbnRUb1NldE1hcDsKIAogICAgIC8vIExpc3Qgb2Ygc2V0cyB3aXRoIGFueSBtYXJrZWQgbm9k
ZS4gRWFjaCBzZXQgY2FuIGFwcGVhciBhdCBtb3N0IG9uY2UuCiAgICAgLy8gRklYTUU6IGZpbmQg
YSBnb29kIGlubGluZSBzaXplIGZvciB0aGlzLgotICAgIFZlY3Rvcjx1bnNpZ25lZCwgMTI4PiBt
X3NldHNNYXJrZWRJbkN1cnJlbnRHZW5lcmF0aW9uOworICAgIFZlY3Rvcjx1bnNpZ25lZCwgMTI4
LCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9zZXRzTWFya2VkSW5DdXJyZW50R2VuZXJhdGlvbjsK
IH07CiAKIGNsYXNzIEZ1bGxHcmFwaFBhcnRpdGlvbiB7CisgICAgdHlwZWRlZiBNdXRhYmxlUmFu
Z2VMaXN0PGNoYXIsIHVpbnQzMl90LCAxMjg+IFNpbmd1bGFyVHJhbnNpdGlvbnNNdXRhYmxlUmFu
Z2VMaXN0OwogcHVibGljOgogICAgIEZ1bGxHcmFwaFBhcnRpdGlvbihjb25zdCBERkEmIGRmYSkK
ICAgICB7CiAgICAgICAgIG1fbm9kZVBhcnRpdGlvbi5pbml0aWFsaXplKGRmYS5ub2Rlcy5zaXpl
KCkpOwogCi0gICAgICAgIG1fZmxhdHRlbmVkVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGUu
cmVzaXplKGRmYS5ub2Rlcy5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkJiBjb3VudGVy
IDogbV9mbGF0dGVuZWRUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZSkKLSAgICAgICAgICAg
IGNvdW50ZXIgPSAwOworICAgICAgICBTaW5ndWxhclRyYW5zaXRpb25zTXV0YWJsZVJhbmdlTGlz
dCBzaW5ndWxhclRyYW5zaXRpb25zOworICAgICAgICBDb3VudGVyQ29udmVydGVyIGNvdW50ZXJD
b252ZXJ0ZXI7CisgICAgICAgIGZvciAoY29uc3QgREZBTm9kZSYgbm9kZSA6IGRmYS5ub2Rlcykg
eworICAgICAgICAgICAgaWYgKG5vZGUuaXNLaWxsZWQoKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIGF1dG8gdHJhbnNpdGlvbnMgPSBub2RlLnRyYW5zaXRpb25zKGRm
YSk7CisgICAgICAgICAgICBzaW5ndWxhclRyYW5zaXRpb25zLmV4dGVuZCh0cmFuc2l0aW9ucy5i
ZWdpbigpLCB0cmFuc2l0aW9ucy5lbmQoKSwgY291bnRlckNvbnZlcnRlcik7CisgICAgICAgIH0K
IAotICAgICAgICBtX2ZsYXR0ZW5lZEZhbGxiYWNrVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5v
ZGUucmVzaXplKGRmYS5ub2Rlcy5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkJiBjb3Vu
dGVyIDogbV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25zU3RhcnRPZmZzZXRQZXJOb2RlKQot
ICAgICAgICAgICAgY291bnRlciA9IDA7CisgICAgICAgIC8vIENvdW50IHRoZSBudW1iZXIgb2Yg
dHJhbnNpdGlvbiBmb3IgZWFjaCBzaW5ndWxhciByYW5nZS4gVGhpcyB3aWxsIGdpdmUgdXMgdGhl
IGJ1Y2tldCBzaXplCisgICAgICAgIC8vIGZvciB0aGUgdHJhbnNpdGlvbiBwYXJ0aXRpb24sIHdo
ZXJlIHRyYW5zaXRpb25zIGFyZSBwYXJ0aXRpb25lZCBieSAic3ltYm9sIi4KKyAgICAgICAgdW5z
aWduZWQgcmFuZ2VJbmRleEFjY3VtdWxhdG9yID0gMDsKKyAgICAgICAgZm9yIChjb25zdCBhdXRv
JiB0cmFuc2l0aW9uIDogc2luZ3VsYXJUcmFuc2l0aW9ucykgeworICAgICAgICAgICAgbV90cmFu
c2l0aW9uUGFydGl0aW9uLmFkZFNldFVuY2hlY2tlZChyYW5nZUluZGV4QWNjdW11bGF0b3IsIHRy
YW5zaXRpb24uZGF0YSk7CisgICAgICAgICAgICByYW5nZUluZGV4QWNjdW11bGF0b3IgKz0gdHJh
bnNpdGlvbi5kYXRhOworICAgICAgICB9CiAKICAgICAgICAgLy8gQ291bnQgdGhlIG51bWJlciBv
ZiBpbmNvbWluZyB0cmFuc2l0aW9ucyBwZXIgbm9kZS4KLSAgICAgICAgZm9yIChjb25zdCBERkFO
b2RlJiBkZmFOb2RlIDogZGZhLm5vZGVzKSB7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IHRyYW5zaXRpb24gOiBkZmFOb2RlLnRyYW5zaXRpb25zKGRmYSkpCi0gICAgICAgICAgICAgICAg
KyttX2ZsYXR0ZW5lZFRyYW5zaXRpb25zU3RhcnRPZmZzZXRQZXJOb2RlW3RyYW5zaXRpb24uc2Vj
b25kXTsKLSAgICAgICAgICAgIGlmIChkZmFOb2RlLmhhc0ZhbGxiYWNrVHJhbnNpdGlvbigpKQot
ICAgICAgICAgICAgICAgICsrbV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25zU3RhcnRPZmZz
ZXRQZXJOb2RlW2RmYU5vZGUuZmFsbGJhY2tUcmFuc2l0aW9uRGVzdGluYXRpb24oZGZhKV07Cisg
ICAgICAgIG1fZmxhdHRlbmVkVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGUucmVzaXplKGRm
YS5ub2Rlcy5zaXplKCkpOworICAgICAgICBtZW1zZXQobV9mbGF0dGVuZWRUcmFuc2l0aW9uc1N0
YXJ0T2Zmc2V0UGVyTm9kZS5kYXRhKCksIDAsIG1fZmxhdHRlbmVkVHJhbnNpdGlvbnNTdGFydE9m
ZnNldFBlck5vZGUuc2l6ZSgpICogc2l6ZW9mKHVuc2lnbmVkKSk7CisKKyAgICAgICAgVmVjdG9y
PGNoYXIsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBzaW5ndWxhclRyYW5zaXRpb25zRmlyc3Rz
OworICAgICAgICBzaW5ndWxhclRyYW5zaXRpb25zRmlyc3RzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoc2luZ3VsYXJUcmFuc2l0aW9ucy5tX3Jhbmdlcy5zaXplKCkpOworICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIHRyYW5zaXRpb24gOiBzaW5ndWxhclRyYW5zaXRpb25zKQorICAgICAgICAgICAg
c2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0cy51bmNoZWNrZWRBcHBlbmQodHJhbnNpdGlvbi5maXJz
dCk7CisKKyAgICAgICAgZm9yIChjb25zdCBERkFOb2RlJiBub2RlIDogZGZhLm5vZGVzKSB7Cisg
ICAgICAgICAgICBpZiAobm9kZS5pc0tpbGxlZCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgYXV0byB0cmFuc2l0aW9ucyA9IG5vZGUudHJhbnNpdGlvbnMoZGZhKTsK
KyAgICAgICAgICAgIGl0ZXJhdGVJbnRlcnNlY3Rpb25zKHNpbmd1bGFyVHJhbnNpdGlvbnNGaXJz
dHMsIHRyYW5zaXRpb25zLCBbJl0odW5zaWduZWQsIGNvbnN0IERGQU5vZGU6OkNvbnN0UmFuZ2VJ
dGVyYXRvciYgb3JpZ2luKSB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgdGFyZ2V0Tm9kZUlu
ZGV4ID0gb3JpZ2luLnRhcmdldCgpOworICAgICAgICAgICAgICAgICsrbV9mbGF0dGVuZWRUcmFu
c2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZVt0YXJnZXROb2RlSW5kZXhdOworICAgICAgICAgICAg
fSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBBY2N1bXVsYXRlIHRoZSBvZmZzZXRzLgorICAg
ICAgICAvLyBBY2N1bXVsYXRlIHRoZSBvZmZzZXRzLiBUaGlzIGdpdmVzIHVzIHRoZSBzdGFydCBw
b3NpdGlvbiBvZiBlYWNoIGJ1Y2tldC4KICAgICAgICAgdW5zaWduZWQgdHJhbnNpdGlvbkFjY3Vt
dWxhdG9yID0gMDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZmxhdHRlbmVk
VHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGUuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAg
IHVuc2lnbmVkIHRyYW5zaXRpb25zQ291bnRGb3JOb2RlID0gbV9mbGF0dGVuZWRUcmFuc2l0aW9u
c1N0YXJ0T2Zmc2V0UGVyTm9kZVtpXTsKQEAgLTI4NCw2NSArMjg0LDQyIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHRyYW5zaXRpb25BY2N1bXVsYXRvciArPSB0cmFuc2l0aW9uc0NvdW50Rm9yTm9k
ZTsKICAgICAgICAgfQogICAgICAgICB1bnNpZ25lZCBmbGF0dGVuZWRUcmFuc2l0aW9uc1NpemUg
PSB0cmFuc2l0aW9uQWNjdW11bGF0b3I7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZmxh
dHRlbmVkVHJhbnNpdGlvbnNTaXplID09IHJhbmdlSW5kZXhBY2N1bXVsYXRvciwgIlRoZSBudW1i
ZXIgb2YgdHJhbnNpdGlvbnMgc2hvdWxkIGJlIHRoZSBzYW1lLCByZWdhcmRsZXNzIG9mIGhvdyB0
aGV5IGFyZSBhcnJhbmdlZCBpbiBidWNrZXRzLiIpOwogCi0gICAgICAgIHVuc2lnbmVkIGZhbGxi
YWNrVHJhbnNpdGlvbkFjY3VtdWxhdG9yID0gMDsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZS5z
aXplKCk7ICsraSkgewotICAgICAgICAgICAgdW5zaWduZWQgZmFsbGJhY2tUcmFuc2l0aW9uc0Nv
dW50Rm9yTm9kZSA9IG1fZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVy
Tm9kZVtpXTsKLSAgICAgICAgICAgIG1fZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1N0YXJ0
T2Zmc2V0UGVyTm9kZVtpXSA9IGZhbGxiYWNrVHJhbnNpdGlvbkFjY3VtdWxhdG9yOwotICAgICAg
ICAgICAgZmFsbGJhY2tUcmFuc2l0aW9uQWNjdW11bGF0b3IgKz0gZmFsbGJhY2tUcmFuc2l0aW9u
c0NvdW50Rm9yTm9kZTsKLSAgICAgICAgfQotICAgICAgICB1bnNpZ25lZCBmbGF0dGVuZWRGYWxs
YmFja1RyYW5zaXRpb25zU2l6ZSA9IGZhbGxiYWNrVHJhbnNpdGlvbkFjY3VtdWxhdG9yOworICAg
ICAgICBtX3RyYW5zaXRpb25QYXJ0aXRpb24ucmVzZXJ2ZVVuaW5pdGlhbGl6ZWRDYXBhY2l0eShm
bGF0dGVuZWRUcmFuc2l0aW9uc1NpemUpOwogCiAgICAgICAgIC8vIE5leHQsIGxldCdzIGZpbGwg
dGhlIHRyYW5zaXRpb24gdGFibGUgYW5kIHNldCB1cCB0aGUgc2l6ZSBvZiBlYWNoIGdyb3VwIGF0
IHRoZSBzYW1lIHRpbWUuCiAgICAgICAgIG1fZmxhdHRlbmVkVHJhbnNpdGlvbnNTaXplUGVyTm9k
ZS5yZXNpemUoZGZhLm5vZGVzLnNpemUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQmIGNvdW50
ZXIgOiBtX2ZsYXR0ZW5lZFRyYW5zaXRpb25zU2l6ZVBlck5vZGUpCiAgICAgICAgICAgICBjb3Vu
dGVyID0gMDsKLQotICAgICAgICBtX2ZsYXR0ZW5lZEZhbGxiYWNrVHJhbnNpdGlvbnNTaXplUGVy
Tm9kZS5yZXNpemUoZGZhLm5vZGVzLnNpemUoKSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQmIGNv
dW50ZXIgOiBtX2ZsYXR0ZW5lZEZhbGxiYWNrVHJhbnNpdGlvbnNTaXplUGVyTm9kZSkKLSAgICAg
ICAgICAgIGNvdW50ZXIgPSAwOwotCiAgICAgICAgIG1fZmxhdHRlbmVkVHJhbnNpdGlvbnMucmVz
aXplKGZsYXR0ZW5lZFRyYW5zaXRpb25zU2l6ZSk7CiAKLSAgICAgICAgbV9mbGF0dGVuZWRGYWxs
YmFja1RyYW5zaXRpb25zLnJlc2l6ZShmbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25zU2l6ZSk7
CisgICAgICAgIFZlY3Rvcjx1aW50MzJfdD4gdHJhbnNpdGlvblBlclJhbmdlT2Zmc2V0KG1fdHJh
bnNpdGlvblBhcnRpdGlvbi5zaXplKCkpOworICAgICAgICBtZW1zZXQodHJhbnNpdGlvblBlclJh
bmdlT2Zmc2V0LmRhdGEoKSwgMCwgdHJhbnNpdGlvblBlclJhbmdlT2Zmc2V0LnNpemUoKSAqIHNp
emVvZih1aW50MzJfdCkpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZmEu
bm9kZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IERGQU5vZGUmIGRmYU5vZGUg
PSBkZmEubm9kZXNbaV07Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYW5zaXRpb24g
OiBkZmFOb2RlLnRyYW5zaXRpb25zKGRmYSkpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCB0
YXJnZXROb2RlSW5kZXggPSB0cmFuc2l0aW9uLnNlY29uZDsKKyAgICAgICAgICAgIGNvbnN0IERG
QU5vZGUmIG5vZGUgPSBkZmEubm9kZXNbaV07CisgICAgICAgICAgICBpZiAobm9kZS5pc0tpbGxl
ZCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBhdXRvIHRyYW5z
aXRpb25zID0gbm9kZS50cmFuc2l0aW9ucyhkZmEpOworICAgICAgICAgICAgaXRlcmF0ZUludGVy
c2VjdGlvbnMoc2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0cywgdHJhbnNpdGlvbnMsIFsmXSh1bnNp
Z25lZCBzaW5ndWxhclRyYW5zaXRvbkluZGV4LCBjb25zdCBERkFOb2RlOjpDb25zdFJhbmdlSXRl
cmF0b3ImIG9yaWdpbikgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IHRhcmdldE5vZGVJbmRl
eCA9IG9yaWdpbi50YXJnZXQoKTsKIAogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0ID0g
bV9mbGF0dGVuZWRUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZVt0YXJnZXROb2RlSW5kZXhd
OwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IG1fZmxhdHRlbmVkVHJhbnNpdGlv
bnNTaXplUGVyTm9kZVt0YXJnZXROb2RlSW5kZXhdOworICAgICAgICAgICAgICAgIHVuc2lnbmVk
IHBvc2l0aW9uSW5GbGF0dGVuZWRUcmFuc2l0aW9ucyA9IHN0YXJ0ICsgb2Zmc2V0OworICAgICAg
ICAgICAgICAgIG1fZmxhdHRlbmVkVHJhbnNpdGlvbnNbcG9zaXRpb25JbkZsYXR0ZW5lZFRyYW5z
aXRpb25zXSA9IFRyYW5zaXRpb24oeyBpIH0pOwogCi0gICAgICAgICAgICAgICAgbV9mbGF0dGVu
ZWRUcmFuc2l0aW9uc1tzdGFydCArIG9mZnNldF0gPSBUcmFuc2l0aW9uKHsgaSwgdGFyZ2V0Tm9k
ZUluZGV4LCB0cmFuc2l0aW9uLmZpcnN0IH0pOworICAgICAgICAgICAgICAgIHVpbnQzMl90JiBp
blJhbmdlT2Zmc2V0ID0gdHJhbnNpdGlvblBlclJhbmdlT2Zmc2V0W3Npbmd1bGFyVHJhbnNpdG9u
SW5kZXhdOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uSW5UcmFuc2l0aW9uUGFy
dGl0aW9uID0gbV90cmFuc2l0aW9uUGFydGl0aW9uLnN0YXJ0T2Zmc2V0T2ZTZXQoc2luZ3VsYXJU
cmFuc2l0b25JbmRleCkgKyBpblJhbmdlT2Zmc2V0OworICAgICAgICAgICAgICAgICsraW5SYW5n
ZU9mZnNldDsKIAotICAgICAgICAgICAgICAgICsrbV9mbGF0dGVuZWRUcmFuc2l0aW9uc1NpemVQ
ZXJOb2RlW3RhcmdldE5vZGVJbmRleF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAo
ZGZhTm9kZS5oYXNGYWxsYmFja1RyYW5zaXRpb24oKSkgewotICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHRhcmdldE5vZGVJbmRleCA9IGRmYU5vZGUuZmFsbGJhY2tUcmFuc2l0aW9uRGVzdGluYXRp
b24oZGZhKTsKKyAgICAgICAgICAgICAgICBtX3RyYW5zaXRpb25QYXJ0aXRpb24uc2V0RWxlbWVu
dFVuY2hlY2tlZChwb3NpdGlvbkluRmxhdHRlbmVkVHJhbnNpdGlvbnMsIHBvc2l0aW9uSW5UcmFu
c2l0aW9uUGFydGl0aW9uLCBzaW5ndWxhclRyYW5zaXRvbkluZGV4KTsKIAotICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIHN0YXJ0ID0gbV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25zU3RhcnRP
ZmZzZXRQZXJOb2RlW3RhcmdldE5vZGVJbmRleF07Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQg
b2Zmc2V0ID0gbV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25zU2l6ZVBlck5vZGVbdGFyZ2V0
Tm9kZUluZGV4XTsKLQotICAgICAgICAgICAgICAgIG1fZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0
aW9uc1tzdGFydCArIG9mZnNldF0gPSBpOwotICAgICAgICAgICAgICAgICsrbV9mbGF0dGVuZWRG
YWxsYmFja1RyYW5zaXRpb25zU2l6ZVBlck5vZGVbdGFyZ2V0Tm9kZUluZGV4XTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIENyZWF0ZSB0aGUgaW5pdGlhbCBwYXJ0aXRp
b24gb2YgdHJhbnNpdGlvbi4gRWFjaCBjaGFyYWN0ZXIgZGlmZmVyZW50aWF0aW5nIGEgdHJhbnNp
dG9uCi0gICAgICAgIC8vIGZyb20gYW4gb3RoZXIgZ2V0cyBpdHMgb3duIHNldCBpbiB0aGUgcGFy
dGl0aW9uLgotICAgICAgICBtX3RyYW5zaXRpb25QYXJ0aXRpb24uaW5pdGlhbGl6ZShtX2ZsYXR0
ZW5lZFRyYW5zaXRpb25zLnNpemUoKSk7Ci0gICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkg
PCAxMjg7ICsraSkgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCB0cmFuc2l0aW9uSW5kZXgg
PSAwOyB0cmFuc2l0aW9uSW5kZXggPCBtX2ZsYXR0ZW5lZFRyYW5zaXRpb25zLnNpemUoKTsgKyt0
cmFuc2l0aW9uSW5kZXgpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBUcmFuc2l0aW9uJiB0cmFu
c2l0aW9uID0gbV9mbGF0dGVuZWRUcmFuc2l0aW9uc1t0cmFuc2l0aW9uSW5kZXhdOwotICAgICAg
ICAgICAgICAgIGlmICh0cmFuc2l0aW9uLmNoYXJhY3RlciA9PSBpKQotICAgICAgICAgICAgICAg
ICAgICBtX3RyYW5zaXRpb25QYXJ0aXRpb24ubWFya0VsZW1lbnRJbkN1cnJlbnRHZW5lcmF0aW9u
KHRyYW5zaXRpb25JbmRleCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX3RyYW5zaXRp
b25QYXJ0aXRpb24ucmVmaW5lR2VuZXJhdGlvbihbXSh1bnNpZ25lZCkgeyB9KTsKKyAgICAgICAg
ICAgICAgICArK21fZmxhdHRlbmVkVHJhbnNpdGlvbnNTaXplUGVyTm9kZVt0YXJnZXROb2RlSW5k
ZXhdOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLQotICAgICAgICAvLyBGYWxsYmFjayBw
YXJ0aXRpb25zIGFyZSBjb25zaWRlcmVkIGFzIGEgc3BlY2lhbCB0eXBlIG9mIGRpZmZlcmVudGlh
dG9yLCB3ZSBkb24ndCBzcGxpdCB0aGVtIGluaXRpYWxseS4KLSAgICAgICAgbV9mYWxsYmFja1Ry
YW5zaXRpb25QYXJ0aXRpb24uaW5pdGlhbGl6ZShtX2ZsYXR0ZW5lZEZhbGxiYWNrVHJhbnNpdGlv
bnMuc2l6ZSgpKTsKICAgICB9CiAKICAgICB2b2lkIG1hcmtOb2RlKHVuc2lnbmVkIG5vZGVJbmRl
eCkKQEAgLTM1OSwxNyArMzM2LDEwIEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBpbmNvbWluZ1RyYW5zaXRpb25zU2l6ZUZvck5vZGU7ICsraSkK
ICAgICAgICAgICAgICAgICAgICAgbV90cmFuc2l0aW9uUGFydGl0aW9uLm1hcmtFbGVtZW50SW5D
dXJyZW50R2VuZXJhdGlvbihpbmNvbWluZ1RyYW5zaXRpb25zU3RhcnRGb3JOb2RlICsgaSk7Ci0K
LSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmNvbWluZ0ZhbGxiYWNrVHJhbnNpdGlvbnNTdGFy
dEZvck5vZGUgPSBtX2ZsYXR0ZW5lZEZhbGxiYWNrVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5v
ZGVbbm9kZUluZGV4XTsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmNvbWluZ0ZhbGxiYWNr
VHJhbnNpdGlvbnNTaXplRm9yTm9kZSA9IG1fZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1Np
emVQZXJOb2RlW25vZGVJbmRleF07Ci0KLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgaW5jb21pbmdGYWxsYmFja1RyYW5zaXRpb25zU2l6ZUZvck5vZGU7ICsraSkKLSAg
ICAgICAgICAgICAgICAgICAgbV9mYWxsYmFja1RyYW5zaXRpb25QYXJ0aXRpb24ubWFya0VsZW1l
bnRJbkN1cnJlbnRHZW5lcmF0aW9uKGluY29taW5nRmFsbGJhY2tUcmFuc2l0aW9uc1N0YXJ0Rm9y
Tm9kZSArIGkpOwogICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIC8vIFdlIG9ubHkgbmVl
ZCB0byBzcGxpdCB0aGUgdHJhbnNpdGlvbnMsIHdlIGhhbmRsZSB0aGUgbmV3IHNldHMgdGhyb3Vn
aCB0aGUgbWFpbiBsb29wLgogICAgICAgICAgICAgbV90cmFuc2l0aW9uUGFydGl0aW9uLnJlZmlu
ZUdlbmVyYXRpb24oW10odW5zaWduZWQpIHsgfSk7Ci0gICAgICAgICAgICBtX2ZhbGxiYWNrVHJh
bnNpdGlvblBhcnRpdGlvbi5yZWZpbmVHZW5lcmF0aW9uKFtdKHVuc2lnbmVkKSB7IH0pOwogICAg
ICAgICB9KTsKICAgICB9CiAKQEAgLTM4NiwyMyArMzU2LDYgQEAgcHVibGljOgogICAgICAgICB9
CiAgICAgfQogCi0gICAgdm9pZCBzcGxpdEJ5RmFsbGJhY2tUcmFuc2l0aW9ucygpCi0gICAgewot
ICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fbmV4dFRyYW5zaXRpb25TZXRUb1Byb2Nlc3Mg
fHwgIW1fdHJhbnNpdGlvblBhcnRpdGlvbi5zaXplKCksICJXZSBjYW4gb25seSBkaXN0aW5ndWlz
aCBub2RlcyBieSBmYWxsYmFjayB0cmFuc2l0aW9uICphZnRlciogYWxsIG90aGVyIHRyYW5zaXRp
b25zIGFyZSBjb3ZlcmVkLiBEb2luZyBvdGhlcndpc2Ugd291bGQgYmUgaW5jb3JyZWN0IHNpbmNl
IHRoZSB1bmlxdWUgdHJhbnNpdGlvbnMgZnJvbSAyIG5vZGVzIGNvdWxkIGNvdmVyIGFsbCBwb3Nz
aWJsZSB0cmFuc2l0aW9ucy4iKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGZhbGxiYWNrVHJh
bnNpdGlvblNldEluZGV4ID0gMDsgZmFsbGJhY2tUcmFuc2l0aW9uU2V0SW5kZXggPCBtX2ZhbGxi
YWNrVHJhbnNpdGlvblBhcnRpdGlvbi5zaXplKCk7ICsrZmFsbGJhY2tUcmFuc2l0aW9uU2V0SW5k
ZXgpIHsKLQotICAgICAgICAgICAgbV9mYWxsYmFja1RyYW5zaXRpb25QYXJ0aXRpb24uaXRlcmF0
ZVNldChmYWxsYmFja1RyYW5zaXRpb25TZXRJbmRleCwgWyZdKHVuc2lnbmVkIHRyYW5zaXRpb25J
bmRleCkgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNvdXJjZU5vZGVJbmRleCA9IG1fZmxh
dHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1t0cmFuc2l0aW9uSW5kZXhdOwotICAgICAgICAgICAg
ICAgIG1fbm9kZVBhcnRpdGlvbi5tYXJrRWxlbWVudEluQ3VycmVudEdlbmVyYXRpb24oc291cmNl
Tm9kZUluZGV4KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmVmaW5lUGFydGl0aW9u
cygpOwotCi0gICAgICAgICAgICAvLyBBbnkgbmV3IHNwbGl0IG5lZWQgdG8gc3ByZWFkIHRvIGFs
bCB0aGUgdW5pcXVlIHRyYW5zaXRpb24gdGhhdCBjYW4gcmVhY2ggdGhlIHR3byBuZXcgc2V0cy4K
LSAgICAgICAgICAgIHNwbGl0QnlVbmlxdWVUcmFuc2l0aW9ucygpOwotICAgICAgICB9Ci0gICAg
fQotCiAgICAgdW5zaWduZWQgbm9kZVJlcGxhY2VtZW50KHVuc2lnbmVkIG5vZGVJbmRleCkKICAg
ICB7CiAgICAgICAgIHVuc2lnbmVkIHNldEluZGV4ID0gbV9ub2RlUGFydGl0aW9uLnNldEluZGV4
KG5vZGVJbmRleCk7CkBAIC00MTIsMjEgKzM2NSwyNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IHN0cnVjdCBUcmFuc2l0aW9uIHsKICAgICAgICAgdW5zaWduZWQgc291cmNlOwotICAgICAgICB1
bnNpZ25lZCB0YXJnZXQ7Ci0gICAgICAgIHVpbnQxNl90IGNoYXJhY3RlcjsKICAgICB9OwogCi0g
ICAgVmVjdG9yPHVuc2lnbmVkPiBtX2ZsYXR0ZW5lZFRyYW5zaXRpb25zU3RhcnRPZmZzZXRQZXJO
b2RlOwotICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9mbGF0dGVuZWRUcmFuc2l0aW9uc1NpemVQZXJO
b2RlOwotICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25z
U3RhcnRPZmZzZXRQZXJOb2RlOwotICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9mbGF0dGVuZWRGYWxs
YmFja1RyYW5zaXRpb25zU2l6ZVBlck5vZGU7CisgICAgc3RydWN0IENvdW50ZXJDb252ZXJ0ZXIg
eworICAgICAgICB1aW50MzJfdCBjb252ZXJ0KHVpbnQzMl90KQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gMTsKKyAgICAgICAgfQogCi0gICAgVmVjdG9yPFRyYW5zaXRpb24+IG1fZmxh
dHRlbmVkVHJhbnNpdGlvbnM7Ci0gICAgVmVjdG9yPHVuc2lnbmVkPiBtX2ZsYXR0ZW5lZEZhbGxi
YWNrVHJhbnNpdGlvbnM7CisgICAgICAgIHZvaWQgZXh0ZW5kKHVpbnQzMl90JiBkZXN0aW5hdGlv
biwgdWludDMyX3QpCisgICAgICAgIHsKKyAgICAgICAgICAgICsrZGVzdGluYXRpb247CisgICAg
ICAgIH0KKyAgICB9OworCisgICAgVmVjdG9yPHVuc2lnbmVkLCAwLCBVbnNhZmVWZWN0b3JPdmVy
Zmxvdz4gbV9mbGF0dGVuZWRUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZTsKKyAgICBWZWN0
b3I8dW5zaWduZWQsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX2ZsYXR0ZW5lZFRyYW5zaXRp
b25zU2l6ZVBlck5vZGU7CisgICAgVmVjdG9yPFRyYW5zaXRpb24sIDAsIFVuc2FmZVZlY3Rvck92
ZXJmbG93PiBtX2ZsYXR0ZW5lZFRyYW5zaXRpb25zOwogCiAgICAgUGFydGl0aW9uIG1fbm9kZVBh
cnRpdGlvbjsKICAgICBQYXJ0aXRpb24gbV90cmFuc2l0aW9uUGFydGl0aW9uOwotICAgIFBhcnRp
dGlvbiBtX2ZhbGxiYWNrVHJhbnNpdGlvblBhcnRpdGlvbjsKIAogICAgIHVuc2lnbmVkIG1fbmV4
dFRyYW5zaXRpb25TZXRUb1Byb2Nlc3MgeyAwIH07CiB9OwpAQCAtNDk0LDggKzQ1Miw2IEBAIHN0
cnVjdCBBY3Rpb25LZXlIYXNoVHJhaXRzIDogcHVibGljIFdURjo6Q3VzdG9tSGFzaFRyYWl0czxB
Y3Rpb25LZXk+IHsKIAogdm9pZCBERkFNaW5pbWl6ZXI6Om1pbmltaXplKERGQSYgZGZhKQogewot
ICAgIHNpbXBsaWZ5VHJhbnNpdGlvbnMoZGZhKTsKLQogICAgIEZ1bGxHcmFwaFBhcnRpdGlvbiBm
dWxsR3JhcGhQYXJ0aXRpb24oZGZhKTsKIAogICAgIC8vIFVubGlrZSB0cmFkaXRpb25hbCBtaW5p
bWl6YXRpb24gZmluYWwgc3RhdGVzIGNhbiBiZSBkaWZmZXJlbnRpYXRlZCBieSB0aGVpciBhY3Rp
b24uCkBAIC01MjAsMjEgKzQ3NiwxMiBAQCB2b2lkIERGQU1pbmltaXplcjo6bWluaW1pemUoREZB
JiBkZmEpCiAgICAgLy8gVXNlIGV2ZXJ5IHNwbGl0dGVyIHRvIHJlZmluZSB0aGUgbm9kZSBwYXJ0
aXRpb25zLgogICAgIGZ1bGxHcmFwaFBhcnRpdGlvbi5zcGxpdEJ5VW5pcXVlVHJhbnNpdGlvbnMo
KTsKIAotICAgIC8vIEF0IHRoaXMgc3RhZ2UsIHdlIGtub3cgdGhhdCBubyBwYWlyIG9mIHN0YXRl
IGNhbiBiZSBkaXN0aW5ndWlzaGVkIGJ5IHRoZSBpbmRpdmlkdWFsIHRyYW5zaXRpb25zLiBUaGV5
IGNhbiBzdGlsbAotICAgIC8vIGJlIGRpc3Rpbmd1aXNoZWQgYnkgdGhlaXIgZmFsbGJhY2sgdHJh
bnNpdGlvbnMuCi0gICAgLy8KLSAgICAvLyBGb3IgZXhhbXBsZSwgdHdvIHN0YXRlcyBbMSwgMl0g
Y2FuIGJvdGggaGF2ZSBhIHRyYW5zaXRpb24gb24gJ3gnIHRvIGEgc3RhdGUgWzNdLCBidXQgZWFj
aCBoYXZlIGZhbGxiYWNrIHRyYW5zaXRpb24KLSAgICAvLyB0byBkaWZmZXJlbnQgc3RhdGVzIFs0
XSBhbmQgWzVdLgotICAgIC8vCi0gICAgLy8gSGVyZSwgd2UgZGlzdGluZ3Vpc2ggc3VjaCBjYXNl
cyBhbmQgYXQgZWFjaCBzdGFnZSByZWZpbmUgdGhlIG5ldyBkaXNjb3ZlcmVkIHNldHMgYnkgdGhl
aXIgaW5kaXZpZHVhbCB0cmFuc2l0aW9ucy4KLSAgICBmdWxsR3JhcGhQYXJ0aXRpb24uc3BsaXRC
eUZhbGxiYWNrVHJhbnNpdGlvbnMoKTsKLQogICAgIFZlY3Rvcjx1bnNpZ25lZD4gcmVsb2NhdGlv
blZlY3RvcjsKICAgICByZWxvY2F0aW9uVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGZh
Lm5vZGVzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRmYS5ub2Rlcy5z
aXplKCk7ICsraSkKICAgICAgICAgcmVsb2NhdGlvblZlY3Rvci51bmNoZWNrZWRBcHBlbmQoaSk7
CiAKLSAgICAvLyBLaWxsIHRoZSB1c2VsZXNzIG5vZGVzIGFuZCBrZWVwIHRyYWNrIG9mIHRoZSBu
ZXcgbm9kZSB0cmFuc2l0aW9ucyBzaG91bGQgcG9pbnQgdG8uCisgICAgLy8gVXBkYXRlIGFsbCB0
aGUgdHJhbnNpdGlvbnMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRmYS5ub2Rlcy5z
aXplKCk7ICsraSkgewogICAgICAgICB1bnNpZ25lZCByZXBsYWNlbWVudCA9IGZ1bGxHcmFwaFBh
cnRpdGlvbi5ub2RlUmVwbGFjZW1lbnQoaSk7CiAgICAgICAgIGlmIChpICE9IHJlcGxhY2VtZW50
KSB7CkBAIC01NDMsMTkgKzQ5MCwxOCBAQCB2b2lkIERGQU1pbmltaXplcjo6bWluaW1pemUoREZB
JiBkZmEpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBkZmEucm9vdCA9IHJlbG9jYXRpb25WZWN0
b3JbZGZhLnJvb3RdOwogICAgIGZvciAoREZBTm9kZSYgbm9kZSA6IGRmYS5ub2RlcykgewotICAg
ICAgICBhdXRvIG5vZGVUcmFuc2l0aW9ucyA9IG5vZGUudHJhbnNpdGlvbnMoZGZhKTsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5vZGUudHJhbnNpdGlvbnNMZW5ndGgoKTsgKytp
KQotICAgICAgICAgICAgZGZhLnRyYW5zaXRpb25EZXN0aW5hdGlvbnNbbm9kZS50cmFuc2l0aW9u
c1N0YXJ0KCkgKyBpXSA9IHJlbG9jYXRpb25WZWN0b3Jbbm9kZVRyYW5zaXRpb25zW2ldLnNlY29u
ZF07Ci0gICAgICAgIGlmIChub2RlLmhhc0ZhbGxiYWNrVHJhbnNpdGlvbigpKQotICAgICAgICAg
ICAgbm9kZS5jaGFuZ2VGYWxsYmFja1RyYW5zaXRpb24oZGZhLCByZWxvY2F0aW9uVmVjdG9yW25v
ZGUuZmFsbGJhY2tUcmFuc2l0aW9uRGVzdGluYXRpb24oZGZhKV0pOworICAgICAgICBpZiAobm9k
ZS5pc0tpbGxlZCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZm9yIChhdXRv
JiB0cmFuc2l0aW9uIDogbm9kZS50cmFuc2l0aW9ucyhkZmEpKSB7CisgICAgICAgICAgICB1aW50
MzJfdCB0YXJnZXQgPSB0cmFuc2l0aW9uLnRhcmdldCgpOworICAgICAgICAgICAgdWludDMyX3Qg
cmVsb2NhdGVkVGFyZ2V0ID0gcmVsb2NhdGlvblZlY3Rvclt0YXJnZXRdOworICAgICAgICAgICAg
aWYgKHRhcmdldCAhPSByZWxvY2F0ZWRUYXJnZXQpCisgICAgICAgICAgICAgICAgdHJhbnNpdGlv
bi5yZXNldFRhcmdldChyZWxvY2F0ZWRUYXJnZXQpOworICAgICAgICB9CiAgICAgfQotCi0gICAg
Ly8gQWZ0ZXIgbWluaW1pemluZywgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIGluZGl2aWR1YWwgdHJh
bnNpdGlvbiBhcmUgc3RpbGwgcG9pdGluZyB0byBkaWZmZXJlbnQgc3RhdGVzLgotICAgIC8vIFRo
ZSBzdGF0ZSBwb2ludGVkIGJ5IG9uZSBpbmRpdmlkdWFsIHRyYW5zaXRpb24gYW5kIHRoZSBmYWxs
YmFjayBzdGF0ZXMgbWF5IGhhdmUgYmVlbiBtZXJnZWQuCi0gICAgc2ltcGxpZnlUcmFuc2l0aW9u
cyhkZmEpOwotCi0gICAgZGZhLnJvb3QgPSByZWxvY2F0aW9uVmVjdG9yW2RmYS5yb290XTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvREZBTm9kZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY2YjA5NTE5OTBkNzEwNjRm
ZjZmMzA2ZmE2ODQxMDk3OWM1NjhkMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0RGQU5vZGUuY3BwCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRGQU5vZGUuaCIKKwor
I2luY2x1ZGUgIkRGQS5oIgorCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMgeworCitWZWN0
b3I8dWludDY0X3Q+IERGQU5vZGU6OmFjdGlvbnMoY29uc3QgREZBJiBkZmEpIGNvbnN0Cit7Cisg
ICAgLy8gRklYTUU6IFVzZSBpdGVyYXRvcnMgaW5zdGVhZCBvZiBjb3B5aW5nIHRoZSBWZWN0b3Ig
ZWxlbWVudHMuCisgICAgVmVjdG9yPHVpbnQ2NF90PiB2ZWN0b3I7CisgICAgdmVjdG9yLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobV9hY3Rpb25zTGVuZ3RoKTsKKyAgICBmb3IgKHVpbnQzMl90IGkg
PSBtX2FjdGlvbnNTdGFydDsgaSA8IG1fYWN0aW9uc1N0YXJ0ICsgbV9hY3Rpb25zTGVuZ3RoOyAr
K2kpCisgICAgICAgIHZlY3Rvci51bmNoZWNrZWRBcHBlbmQoZGZhLmFjdGlvbnNbaV0pOworICAg
IHJldHVybiB2ZWN0b3I7Cit9CisKK2Jvb2wgREZBTm9kZTo6Y29udGFpbnNUcmFuc2l0aW9uKGNo
YXIgdHJhbnNpdGlvbiwgREZBJiBkZmEpCit7CisgICAgLy8gQ2FsbGVkIGZyb20gREZBTWluaW1p
emVyLCB0aGlzIGxvb3BzIHRob3VnaCBhIG1heGltdW0gb2YgMTI4IHRyYW5zaXRpb25zLCBzbyBp
dCdzIG5vdCB0b28gc2xvdy4KKyAgICBBU1NFUlQobV90cmFuc2l0aW9uc0xlbmd0aCA8PSAxMjgp
OworICAgIGZvciAodW5zaWduZWQgaSA9IG1fdHJhbnNpdGlvbnNTdGFydDsgaSA8IG1fdHJhbnNp
dGlvbnNTdGFydCArIG1fdHJhbnNpdGlvbnNMZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoZGZh
LnRyYW5zaXRpb25SYW5nZXNbaV0uZmlyc3QgPD0gdHJhbnNpdGlvbgorICAgICAgICAgICAgJiYg
ZGZhLnRyYW5zaXRpb25SYW5nZXNbaV0ubGFzdCA+PSB0cmFuc2l0aW9uKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBERkFOb2Rl
OjpraWxsKERGQSYgZGZhKQoreworICAgIEFTU0VSVChtX2ZsYWdzICE9IElzS2lsbGVkKTsKKyAg
ICBtX2ZsYWdzID0gSXNLaWxsZWQ7IC8vIEtpbGxlZCBub2RlcyBkb24ndCBoYXZlIGFueSBvdGhl
ciBmbGFncy4KKworICAgIC8vIEludmFsaWRhdGUgdGhlIG5vdy11bnVzZWQgbWVtb3J5IGluIHRo
ZSBERkEgdG8gbWFrZSBmaW5kaW5nIGJ1Z3MgZWFzaWVyLgorICAgIGZvciAodW5zaWduZWQgaSA9
IG1fdHJhbnNpdGlvbnNTdGFydDsgaSA8IG1fdHJhbnNpdGlvbnNTdGFydCArIG1fdHJhbnNpdGlv
bnNMZW5ndGg7ICsraSkgeworICAgICAgICBkZmEudHJhbnNpdGlvblJhbmdlc1tpXSA9IHsgLTEs
IC0xIH07CisgICAgICAgIGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zW2ldID0gc3RkOjpudW1l
cmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX2FjdGlvbnNTdGFydDsgaSA8IG1fYWN0aW9uc1N0YXJ0ICsgbV9hY3Rpb25zTGVuZ3RoOyAr
K2kpCisgICAgICAgIGRmYS5hY3Rpb25zW2ldID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRf
dD46Om1heCgpOworCisgICAgbV9hY3Rpb25zU3RhcnQgPSAwOworICAgIG1fYWN0aW9uc0xlbmd0
aCA9IDA7CisgICAgbV90cmFuc2l0aW9uc1N0YXJ0ID0gMDsKKyAgICBtX3RyYW5zaXRpb25zTGVu
Z3RoID0gMDsKK307CisKK2Jvb2wgREZBTm9kZTo6Y2FuVXNlRmFsbGJhY2tUcmFuc2l0aW9uKGNv
bnN0IERGQSYgZGZhKSBjb25zdAoreworICAgIC8vIFRyYW5zaXRpb25zIGNhbiBjb250YWlucyAi
MCIgaWYgdGhlIGV4cHJlc3Npb24gaGFzIGEgZW5kLW9mLWxpbmUgbWFya2VyLgorICAgIC8vIEZh
bGxiYWNrIHRyYW5zaXRpb25zIGNvdmVyIDEtMTI3LiBXZSBoYXZlIHRvIGJlIGNhcmVmdWwgd2l0
aCB0aGUgZmlyc3QuCisKKyAgICBJdGVyYWJsZUNvbnN0UmFuZ2UgaXRlcmFibGVUcmFuc2l0aW9u
cyA9IHRyYW5zaXRpb25zKGRmYSk7CisgICAgYXV0byBpdGVyYXRvciA9IGl0ZXJhYmxlVHJhbnNp
dGlvbnMuYmVnaW4oKTsKKyAgICBhdXRvIGVuZCA9IGl0ZXJhYmxlVHJhbnNpdGlvbnMuZW5kKCk7
CisgICAgaWYgKGl0ZXJhdG9yID09IGVuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Y2hhciBsYXN0U2VlbkNoYXJhY3RlciA9IDA7CisgICAgaWYgKCFpdGVyYXRvci5maXJzdCgpKSB7
CisgICAgICAgIGxhc3RTZWVuQ2hhcmFjdGVyID0gaXRlcmF0b3IubGFzdCgpOworICAgICAgICBp
ZiAobGFzdFNlZW5DaGFyYWN0ZXIgPT0gMTI3KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICsraXRlcmF0b3I7CisgICAgfQorCisgICAgZm9yICg7aXRlcmF0b3IgIT0gZW5kOyAr
K2l0ZXJhdG9yKSB7CisgICAgICAgIEFTU0VSVChpdGVyYXRvci5maXJzdCgpID4gbGFzdFNlZW5D
aGFyYWN0ZXIpOworICAgICAgICBpZiAoaXRlcmF0b3IuZmlyc3QoKSAhPSBsYXN0U2VlbkNoYXJh
Y3RlciArIDEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKGl0ZXJh
dG9yLnJhbmdlKCkubGFzdCA9PSAxMjcpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgbGFzdFNlZW5DaGFyYWN0ZXIgPSBpdGVyYXRvci5sYXN0KCk7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKwordWludDMyX3QgREZBTm9kZTo6YmVzdEZhbGxiYWNrVGFyZ2V0KGNvbnN0
IERGQSYgZGZhKSBjb25zdAoreworICAgIEFTU0VSVChjYW5Vc2VGYWxsYmFja1RyYW5zaXRpb24o
ZGZhKSk7CisKKyAgICBIYXNoTWFwPHVpbnQzMl90LCB1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dWlu
dDMyX3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQzMl90
Pj4gaGlzdG9ncmFtOworCisgICAgSXRlcmFibGVDb25zdFJhbmdlIGl0ZXJhYmxlVHJhbnNpdGlv
bnMgPSB0cmFuc2l0aW9ucyhkZmEpOworICAgIGF1dG8gaXRlcmF0b3IgPSBpdGVyYWJsZVRyYW5z
aXRpb25zLmJlZ2luKCk7CisgICAgYXV0byBlbmQgPSBpdGVyYWJsZVRyYW5zaXRpb25zLmVuZCgp
OworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXRlcmF0b3IgIT0gZW5kLCAiQW4gZW1wdHkgcmFu
Z2UgbGlzdCBjYW5ub3QgdXNlIGEgZmFsbGJhY2sgdHJhbnNpdGlvbi4iKTsKKworICAgIGlmICgh
aXRlcmF0b3IuZmlyc3QoKSAmJiAhaXRlcmF0b3IubGFzdCgpKQorICAgICAgICArK2l0ZXJhdG9y
OworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXRlcmF0b3IgIT0gZW5kLCAiQW4gZW1wdHkgcmFu
Z2UgbGlzdCBtYXRjaGluZyBvbmx5IHplcm8gY2Fubm90IHVzZSBhIGZhbGxiYWNrIHRyYW5zaXRp
b24uIik7CisKKyAgICB1aW50MzJfdCBiZXN0VGFyZ2V0ID0gaXRlcmF0b3IudGFyZ2V0KCk7Cisg
ICAgdW5zaWduZWQgYmVzdFRhcmdldFNjb3JlID0gIWl0ZXJhdG9yLnJhbmdlKCkuZmlyc3QgPyBp
dGVyYXRvci5yYW5nZSgpLnNpemUoKSAtIDEgOiBpdGVyYXRvci5yYW5nZSgpLnNpemUoKTsKKyAg
ICBoaXN0b2dyYW0uYWRkKGJlc3RUYXJnZXQsIGJlc3RUYXJnZXRTY29yZSk7CisgICAgKytpdGVy
YXRvcjsKKworICAgIGZvciAoO2l0ZXJhdG9yICE9IGVuZDsgKytpdGVyYXRvcikgeworICAgICAg
ICB1bnNpZ25lZCByYW5nZVNpemUgPSBpdGVyYXRvci5yYW5nZSgpLnNpemUoKTsKKyAgICAgICAg
dWludDMyX3QgdGFyZ2V0ID0gaXRlcmF0b3IudGFyZ2V0KCk7CisgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gaGlzdG9ncmFtLmFkZCh0YXJnZXQsIHJhbmdlU2l6ZSk7CisgICAgICAgIGlmICghYWRk
UmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ICs9IHJhbmdlU2l6ZTsKKyAgICAgICAgaWYgKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPiBi
ZXN0VGFyZ2V0U2NvcmUpIHsKKyAgICAgICAgICAgIGJlc3RUYXJnZXRTY29yZSA9IGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICBiZXN0VGFyZ2V0ID0gdGFyZ2V0OworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiBiZXN0VGFyZ2V0OworfQorCit9IC8vIG5hbWVzcGFj
ZSBDb250ZW50RXh0ZW5zaW9ucworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvREZBTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvREZBTm9kZS5oCmluZGV4IDZiZDY0ZTExMDE0OTg2YjBkNjg1MWRhNzNlMzY1ZDk3YmFl
NDczNjcuLmJkMWExNWMxYmYyNjdlNzQwZTY5OWRkZGNlMjc3YzEwYzJlMjE4ZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQU5vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFOb2RlLmgKQEAgLTM4LDI3ICszOCwxMTIg
QEAgbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKIAogc3RydWN0IERGQTsKIAorc3RydWN0
IENoYXJSYW5nZSB7CisgICAgY2hhciBmaXJzdDsKKyAgICBjaGFyIGxhc3Q7CisgICAgdW5zaWdu
ZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGxhc3QgLSBmaXJzdCArIDE7IH0KK307CisKIC8vIEEg
REZBTm9kZSBhYnN0cmFjdCB0aGUgdHJhbnNpdGlvbiB0YWJsZSBvdXQgb2YgYSBERkEgc3RhdGUu
IElmIGEgc3RhdGUgaXMgYWNjZXB0aW5nLCB0aGUgREZBTm9kZSBhbHNvIGhhdmUKIC8vIHRoZSBh
Y3Rpb25zIGZvciB0aGF0IHN0YXRlLgogY2xhc3MgREZBTm9kZSB7CiBwdWJsaWM6CisgICAgc3Ry
dWN0IENvbnN0UmFuZ2VJdGVyYXRvciB7CisgICAgICAgIGNvbnN0IERGQSYgZGZhOworICAgICAg
ICB1aW50MzJfdCBwb3NpdGlvbjsKKworICAgICAgICBjb25zdCBDb25zdFJhbmdlSXRlcmF0b3Im
IG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisKKyAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IENvbnN0UmFuZ2VJdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsK
KyAgICAgICAgICAgIEFTU0VSVCgmZGZhICA9PSAmb3RoZXIuZGZhKTsKKyAgICAgICAgICAgIHJl
dHVybiBwb3NpdGlvbiA9PSBvdGhlci5wb3NpdGlvbjsKKyAgICAgICAgfQorICAgICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgQ29uc3RSYW5nZUl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKworICAgICAgICBDb25zdFJhbmdlSXRlcmF0b3ImIG9w
ZXJhdG9yKysoKQorICAgICAgICB7CisgICAgICAgICAgICArK3Bvc2l0aW9uOworICAgICAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgQ2hhclJhbmdlJiBy
YW5nZSgpIGNvbnN0OworICAgICAgICB1aW50MzJfdCB0YXJnZXQoKSBjb25zdDsKKworICAgICAg
ICBjaGFyIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gcmFuZ2UoKS5maXJzdDsgfQorICAgICAgICBj
aGFyIGxhc3QoKSBjb25zdCB7IHJldHVybiByYW5nZSgpLmxhc3Q7IH0KKyAgICAgICAgdWludDMy
X3QgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHRhcmdldCgpOyB9CisgICAgfTsKKworICAgIHN0cnVj
dCBJdGVyYWJsZUNvbnN0UmFuZ2UgeworICAgICAgICBjb25zdCBERkEmIGRmYTsKKyAgICAgICAg
dWludDMyX3QgcmFuZ2VzU3RhcnQ7CisgICAgICAgIHVpbnQzMl90IHJhbmdlc0VuZDsKKworICAg
ICAgICBDb25zdFJhbmdlSXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiB7IGRmYSwgcmFu
Z2VzU3RhcnQgfTsgfQorICAgICAgICBDb25zdFJhbmdlSXRlcmF0b3IgZW5kKCkgY29uc3QgeyBy
ZXR1cm4geyBkZmEsIHJhbmdlc0VuZCB9OyB9CisgICAgfTsKKworICAgIEl0ZXJhYmxlQ29uc3RS
YW5nZSB0cmFuc2l0aW9ucyhjb25zdCBERkEmIGRmYSkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBJdGVyYWJsZUNvbnN0UmFuZ2UgeyBkZmEsIG1fdHJhbnNpdGlvbnNTdGFydCwgbV90cmFu
c2l0aW9uc1N0YXJ0ICsgbV90cmFuc2l0aW9uc0xlbmd0aCB9OworICAgIH0KKworICAgIHN0cnVj
dCBSYW5nZUl0ZXJhdG9yIHsKKyAgICAgICAgREZBJiBkZmE7CisgICAgICAgIHVpbnQzMl90IHBv
c2l0aW9uOworCisgICAgICAgIFJhbmdlSXRlcmF0b3ImIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0
aGlzOyB9CisKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJhbmdlSXRlcmF0b3ImIG90
aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoJmRmYSAgPT0gJm90aGVy
LmRmYSk7CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb24gPT0gb3RoZXIucG9zaXRpb247Cisg
ICAgICAgIH0KKyAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJhbmdlSXRlcmF0b3ImIG90
aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorCisgICAgICAgIFJhbmdl
SXRlcmF0b3ImIG9wZXJhdG9yKysoKQorICAgICAgICB7CisgICAgICAgICAgICArK3Bvc2l0aW9u
OworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisKKyAgICAgICAgY29uc3Qg
Q2hhclJhbmdlJiByYW5nZSgpIGNvbnN0OworICAgICAgICB1aW50MzJfdCB0YXJnZXQoKSBjb25z
dDsKKyAgICAgICAgdm9pZCByZXNldFRhcmdldCh1aW50MzJfdCk7CisKKyAgICAgICAgY2hhciBm
aXJzdCgpIGNvbnN0IHsgcmV0dXJuIHJhbmdlKCkuZmlyc3Q7IH0KKyAgICAgICAgY2hhciBsYXN0
KCkgY29uc3QgeyByZXR1cm4gcmFuZ2UoKS5sYXN0OyB9CisgICAgICAgIHVpbnQzMl90IGRhdGEo
KSBjb25zdCB7IHJldHVybiB0YXJnZXQoKTsgfQorICAgIH07CisKKyAgICBzdHJ1Y3QgSXRlcmFi
bGVSYW5nZSB7CisgICAgICAgIERGQSYgZGZhOworICAgICAgICB1aW50MzJfdCByYW5nZXNTdGFy
dDsKKyAgICAgICAgdWludDMyX3QgcmFuZ2VzRW5kOworCisgICAgICAgIFJhbmdlSXRlcmF0b3Ig
YmVnaW4oKSBjb25zdCB7IHJldHVybiB7IGRmYSwgcmFuZ2VzU3RhcnQgfTsgfQorICAgICAgICBS
YW5nZUl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHsgZGZhLCByYW5nZXNFbmQgfTsgfQor
ICAgIH07CisKKyAgICBJdGVyYWJsZVJhbmdlIHRyYW5zaXRpb25zKERGQSYgZGZhKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIEl0ZXJhYmxlUmFuZ2UgeyBkZmEsIG1fdHJhbnNpdGlvbnNTdGFydCwg
bV90cmFuc2l0aW9uc1N0YXJ0ICsgbV90cmFuc2l0aW9uc0xlbmd0aCB9OworICAgIH0KKwogICAg
IC8vIEZJWE1FOiBTdG9wIG1pbmltaXppbmcga2lsbGVkIG5vZGVzIGFuZCBhZGQgQVNTRVJUKCFp
c0tpbGxlZCgpKSBpbiBtYW55IGZ1bmN0aW9ucyBoZXJlLgogICAgIHZvaWQga2lsbChERkEmKTsK
ICAgICBWZWN0b3I8dWludDY0X3Q+IGFjdGlvbnMoY29uc3QgREZBJikgY29uc3Q7Ci0gICAgVmVj
dG9yPHN0ZDo6cGFpcjx1aW50OF90LCB1aW50MzJfdD4+IHRyYW5zaXRpb25zKGNvbnN0IERGQSYp
IGNvbnN0OwotICAgIHVpbnQzMl90IGZhbGxiYWNrVHJhbnNpdGlvbkRlc3RpbmF0aW9uKGNvbnN0
IERGQSYpIGNvbnN0OwotICAgIHZvaWQgYWRkRmFsbGJhY2tUcmFuc2l0aW9uKERGQSYsIHVpbnQz
Ml90IGRlc3RpbmF0aW9uKTsKLSAgICBib29sIGNvbnRhaW5zVHJhbnNpdGlvbih1aW50OF90LCBE
RkEmKTsKLSAgICB2b2lkIGNoYW5nZUZhbGxiYWNrVHJhbnNpdGlvbihERkEmLCB1aW50MzJfdCBu
ZXdEZXN0aW5hdGlvbik7CisgICAgYm9vbCBjb250YWluc1RyYW5zaXRpb24oY2hhciwgREZBJik7
CiAgICAgCiAgICAgYm9vbCBpc0tpbGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBJc0tp
bGxlZDsgfQotICAgIGJvb2wgaGFzRmFsbGJhY2tUcmFuc2l0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9mbGFncyAmIEhhc0ZhbGxiYWNrVHJhbnNpdGlvbjsgfQogICAgIGJvb2wgaGFzQWN0aW9ucygp
IGNvbnN0IHsgcmV0dXJuICEhbV9hY3Rpb25zTGVuZ3RoOyB9Ci0gICAgdWludDhfdCB0cmFuc2l0
aW9uc0xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNpdGlvbnNMZW5ndGg7IH0KICAgICB1
aW50MTZfdCBhY3Rpb25zTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb25zTGVuZ3RoOyB9
CiAgICAgdWludDMyX3QgYWN0aW9uc1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb25zU3Rh
cnQ7IH0KLSAgICB1aW50MzJfdCB0cmFuc2l0aW9uc1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV90
cmFuc2l0aW9uc1N0YXJ0OyB9Ci0gICAgCisKKyAgICBib29sIGNhblVzZUZhbGxiYWNrVHJhbnNp
dGlvbihjb25zdCBERkEmKSBjb25zdDsKKyAgICB1aW50MzJfdCBiZXN0RmFsbGJhY2tUYXJnZXQo
Y29uc3QgREZBJikgY29uc3Q7CisKICAgICB2b2lkIHNldEFjdGlvbnModWludDMyX3Qgc3RhcnQs
IHVpbnQxNl90IGxlbmd0aCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9hY3Rpb25zU3RhcnQp
OwpAQCAtNzMsMjIgKzE1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV90cmFuc2l0aW9uc1N0YXJ0
ID0gc3RhcnQ7CiAgICAgICAgIG1fdHJhbnNpdGlvbnNMZW5ndGggPSBsZW5ndGg7CiAgICAgfQot
ICAgIHZvaWQgcmVzZXRUcmFuc2l0aW9ucyh1aW50MzJfdCBzdGFydCwgdWludDE2X3QgbGVuZ3Ro
KQotICAgIHsKLSAgICAgICAgbV90cmFuc2l0aW9uc1N0YXJ0ID0gc3RhcnQ7Ci0gICAgICAgIG1f
dHJhbnNpdGlvbnNMZW5ndGggPSBsZW5ndGg7Ci0gICAgfQotICAgIHZvaWQgc2V0SGFzRmFsbGJh
Y2tUcmFuc2l0aW9uV2l0aG91dENoYW5naW5nREZBKGJvb2wgc2hvdWxkSGF2ZUZhbGxiYWNrVHJh
bnNpdGlvbikKLSAgICB7Ci0gICAgICAgIGlmIChzaG91bGRIYXZlRmFsbGJhY2tUcmFuc2l0aW9u
KQotICAgICAgICAgICAgbV9mbGFncyB8PSBIYXNGYWxsYmFja1RyYW5zaXRpb247Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fZmxhZ3MgJj0gfkhhc0ZhbGxiYWNrVHJhbnNpdGlvbjsKLSAg
ICB9Ci0gICAgCi0jaWYgQ09OVEVOVF9FWFRFTlNJT05TX1NUQVRFX01BQ0hJTkVfREVCVUdHSU5H
Ci0gICAgVmVjdG9yPHVuc2lnbmVkPiBjb3JyZXNwb25kaW5nTkZBTm9kZXM7Ci0jZW5kaWYKKwog
cHJpdmF0ZToKICAgICB1aW50MzJfdCBtX2FjdGlvbnNTdGFydCB7IDAgfTsKICAgICB1aW50MzJf
dCBtX3RyYW5zaXRpb25zU3RhcnQgeyAwIH07CkBAIC05Niw4ICsxNjYsNyBAQCBwcml2YXRlOgog
ICAgIHVpbnQ4X3QgbV90cmFuc2l0aW9uc0xlbmd0aCB7IDAgfTsKICAgICAKICAgICB1aW50OF90
IG1fZmxhZ3MgeyAwIH07Ci0gICAgY29uc3QgdWludDhfdCBIYXNGYWxsYmFja1RyYW5zaXRpb24g
PSAweDAxOwotICAgIGNvbnN0IHVpbnQ4X3QgSXNLaWxsZWQgPSAweDAyOworICAgIGNvbnN0IHVp
bnQ4X3QgSXNLaWxsZWQgPSAweDAxOwogfTsKIAogLy8gRklYTUU6IFBhY2sgdGhpcyBkb3duIHRv
IDEyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvSW1tdXRh
YmxlTkZBLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9JbW11dGFibGVORkEu
aAppbmRleCAxZjIwMzRmOTJjYzY2ZGQ4YzFlZTQ4ZWZiMGVlNTFmNjdjZjFkOGE0Li4xMGMyMjU0
NTE3NmUwOTEzMWQyMmQ5M2U1NGQ1MzAwNjU5Y2FjNDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9JbW11dGFibGVORkEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9JbW11dGFibGVORkEuaApAQCAtOTMsOSArOTMsNiBAQCBzdHJ1
Y3QgSW1tdXRhYmxlTkZBIHsKICAgICAgICAgY29uc3QgSW1tdXRhYmxlTkZBJiBpbW11dGFibGVO
RkE7CiAgICAgICAgIHVpbnQzMl90IHBvc2l0aW9uOwogCi0gICAgICAgIGNvbnN0IEltbXV0YWJs
ZVJhbmdlPENoYXJhY3RlclR5cGU+JiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBpbW11dGFi
bGVORkEudHJhbnNpdGlvbnNbcG9zaXRpb25dOyB9Ci0gICAgICAgIGNvbnN0IEltbXV0YWJsZVJh
bmdlPENoYXJhY3RlclR5cGU+KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJmltbXV0YWJs
ZU5GQS50cmFuc2l0aW9uc1twb3NpdGlvbl07IH0KLQogICAgICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQ29uc3RSYW5nZUl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICAgICAgewogICAgICAg
ICAgICAgQVNTRVJUKCZpbW11dGFibGVORkEgPT0gJm90aGVyLmltbXV0YWJsZU5GQSk7CkBAIC0x
MDksMTEgKzEwNiwyNyBAQCBzdHJ1Y3QgSW1tdXRhYmxlTkZBIHsKICAgICAgICAgICAgIHJldHVy
biAqdGhpczsKICAgICAgICAgfQogCisgICAgICAgIENoYXJhY3RlclR5cGUgZmlyc3QoKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gcmFuZ2UoKS5maXJzdDsKKyAgICAgICAg
fQorCisgICAgICAgIENoYXJhY3RlclR5cGUgbGFzdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiByYW5nZSgpLmxhc3Q7CisgICAgICAgIH0KKwogICAgICAgICBJdGVyYWJs
ZUNvbnN0VGFyZ2V0cyBkYXRhKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgY29uc3Qg
SW1tdXRhYmxlUmFuZ2U8Q2hhcmFjdGVyVHlwZT4mIHJhbmdlID0gaW1tdXRhYmxlTkZBLnRyYW5z
aXRpb25zW3Bvc2l0aW9uXTsKKyAgICAgICAgICAgIGNvbnN0IEltbXV0YWJsZVJhbmdlPENoYXJh
Y3RlclR5cGU+JiByYW5nZSA9IHRoaXMtPnJhbmdlKCk7CiAgICAgICAgICAgICByZXR1cm4geyBp
bW11dGFibGVORkEsIHJhbmdlLnRhcmdldFN0YXJ0LCByYW5nZS50YXJnZXRFbmQgfTsKICAgICAg
ICAgfTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGNvbnN0IEltbXV0YWJsZVJhbmdlPENoYXJh
Y3RlclR5cGU+JiByYW5nZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBp
bW11dGFibGVORkEudHJhbnNpdGlvbnNbcG9zaXRpb25dOworICAgICAgICB9CiAgICAgfTsKIAog
ICAgIHN0cnVjdCBJdGVyYWJsZUNvbnN0UmFuZ2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5GQU5vZGVCdWlsZGVyLmgKaW5kZXgg
NDU0MTRiZTFkZjZkOGE0YTRmNWY4Y2Q0MDI0ZTk4ZjRkNGQzMGYwNy4uN2ZmYWZjZWE0OWM0ZTYz
NGVjY2E1MGUyZTcxN2U1MjYxOTkxOThkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9JbW11dGFibGVORkFOb2RlQnVpbGRlci5oCkBAIC04OSw4
ICs4OSw4IEBAIHB1YmxpYzoKICAgICB9OwogICAgIAogICAgIHN0cnVjdCBGYWtlUmFuZ2VJdGVy
YXRvciB7Ci0gICAgICAgIGNvbnN0IFRyaXZpYWxSYW5nZSYgb3BlcmF0b3IqKCkgY29uc3QgeyBy
ZXR1cm4gcmFuZ2U7IH0KLSAgICAgICAgY29uc3QgVHJpdmlhbFJhbmdlKiBvcGVyYXRvci0+KCkg
Y29uc3QgeyByZXR1cm4gJnJhbmdlOyB9CisgICAgICAgIENoYXJhY3RlclR5cGUgZmlyc3QoKSBj
b25zdCB7IHJldHVybiByYW5nZS5maXJzdDsgfQorICAgICAgICBDaGFyYWN0ZXJUeXBlIGxhc3Qo
KSBjb25zdCB7IHJldHVybiByYW5nZS5sYXN0OyB9CiAgICAgICAgIHVpbnQzMl90IGRhdGEoKSBj
b25zdCB7IHJldHVybiB0YXJnZXRJZDsgfQogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RmFrZVJhbmdlSXRlcmF0b3ImIG90aGVyKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9NdXRhYmxlUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL011dGFibGVSYW5nZS5oCmluZGV4IDM1ZDE0MmJiODFiNTIzZTkw
YjQwNzFhZTEwZTYwMjI1ZGJiZTU5MjEuLjM0Y2VlYTEyZmIyMmNiZDhhYjJlY2Q3NTY0ZDM4YWRi
OTVjMTgxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL011
dGFibGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL011dGFi
bGVSYW5nZS5oCkBAIC04OSw4ICs4OSw2IEBAIHB1YmxpYzoKICAgICB1aW50MzJfdCBuZXh0UmFu
Z2VJbmRleDsKICAgICBDaGFyYWN0ZXJUeXBlIGZpcnN0OwogICAgIENoYXJhY3RlclR5cGUgbGFz
dDsKLQotICAgIENoYXJhY3RlclR5cGUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGxhc3QgLSBmaXJz
dDsgfQogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvTXV0YWJsZVJhbmdlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
TXV0YWJsZVJhbmdlTGlzdC5oCmluZGV4IGNiMTI4OThmMzMxYTNjM2EwOGM0MmVkM2I3OGUzYTUz
NjdiMDQzMDQuLjE2MmM2NTllMGU1Zjk3OGZlYTI3Nzc0ODlkNDM3NWZkODYyZDFiNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL011dGFibGVSYW5nZUxpc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9NdXRhYmxlUmFuZ2VMaXN0
LmgKQEAgLTQ4LDYgKzQ4LDEwIEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgVHlwZWRNdXRhYmxl
UmFuZ2UmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIHJhbmdlTGlzdC5tX3Jhbmdlc1tpbmRl
eF07IH0KICAgICAgICAgY29uc3QgVHlwZWRNdXRhYmxlUmFuZ2UqIG9wZXJhdG9yLT4oKSBjb25z
dCB7IHJldHVybiAmcmFuZ2VMaXN0Lm1fcmFuZ2VzW2luZGV4XTsgfQogCisgICAgICAgIENoYXJh
Y3RlclR5cGUgZmlyc3QoKSBjb25zdCB7IHJldHVybiByYW5nZUxpc3QubV9yYW5nZXNbaW5kZXhd
LmZpcnN0OyB9CisgICAgICAgIENoYXJhY3RlclR5cGUgbGFzdCgpIGNvbnN0IHsgcmV0dXJuIHJh
bmdlTGlzdC5tX3Jhbmdlc1tpbmRleF0ubGFzdDsgfQorICAgICAgICBDaGFyYWN0ZXJUeXBlIGRh
dGEoKSBjb25zdCB7IHJldHVybiByYW5nZUxpc3QubV9yYW5nZXNbaW5kZXhdLmRhdGE7IH0KKwog
ICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0
CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCgmcmFuZ2VMaXN0ID09ICZvdGhlci5yYW5n
ZUxpc3QpOwpAQCAtOTksMjEgKzEwMywyMSBAQCBwdWJsaWM6CiAgICAgICAgIHVpbnQzMl90IGxh
c3RTZWxmUmFuZ2VJbmRleCA9IDA7CiAgICAgICAgIHVpbnQzMl90IHNlbGZSYW5nZUluZGV4ID0g
MDsKIAotICAgICAgICBhdXRvIG90aGVyUmFuZ2VPZmZzZXQgPSBvdGhlckl0ZXJhdG9yLT5maXJz
dDsgLy8gVG8gZ2V0IHRoZSByaWdodCB0eXBlIDopCisgICAgICAgIGF1dG8gb3RoZXJSYW5nZU9m
ZnNldCA9IG90aGVySXRlcmF0b3IuZmlyc3QoKTsgLy8gVG8gZ2V0IHRoZSByaWdodCB0eXBlIDop
CiAgICAgICAgIG90aGVyUmFuZ2VPZmZzZXQgPSAwOwogCiAgICAgICAgIGRvIHsKICAgICAgICAg
ICAgIFR5cGVkTXV0YWJsZVJhbmdlKiBhY3RpdmVTZWxmUmFuZ2UgPSAmbV9yYW5nZXNbc2VsZlJh
bmdlSW5kZXhdOwogCiAgICAgICAgICAgICAvLyBGaXJzdCwgd2UgbW92ZSBmb3J3YXJkIHVudGls
IHdlIGZpbmQgc29tZXRoaW5nIGludGVyZXN0aW5nLgotICAgICAgICAgICAgaWYgKGFjdGl2ZVNl
bGZSYW5nZS0+bGFzdCA8IG90aGVySXRlcmF0b3ItPmZpcnN0ICsgb3RoZXJSYW5nZU9mZnNldCkg
eworICAgICAgICAgICAgaWYgKGFjdGl2ZVNlbGZSYW5nZS0+bGFzdCA8IG90aGVySXRlcmF0b3Iu
Zmlyc3QoKSArIG90aGVyUmFuZ2VPZmZzZXQpIHsKICAgICAgICAgICAgICAgICBsYXN0U2VsZlJh
bmdlSW5kZXggPSBzZWxmUmFuZ2VJbmRleDsKICAgICAgICAgICAgICAgICBzZWxmUmFuZ2VJbmRl
eCA9IGFjdGl2ZVNlbGZSYW5nZS0+bmV4dFJhbmdlSW5kZXg7CiAgICAgICAgICAgICAgICAgcmVh
Y2hlZFNlbGZFbmQgPSAhc2VsZlJhbmdlSW5kZXg7CiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAob3RoZXJJdGVyYXRvci0+bGFzdCA8IGFj
dGl2ZVNlbGZSYW5nZS0+Zmlyc3QpIHsKLSAgICAgICAgICAgICAgICBpbnNlcnRCZXR3ZWVuKGxh
c3RTZWxmUmFuZ2VJbmRleCwgc2VsZlJhbmdlSW5kZXgsIG90aGVySXRlcmF0b3ItPmZpcnN0ICsg
b3RoZXJSYW5nZU9mZnNldCwgb3RoZXJJdGVyYXRvci0+bGFzdCwgZGF0YUNvbnZlcnRlci5jb252
ZXJ0KG90aGVySXRlcmF0b3IuZGF0YSgpKSk7CisgICAgICAgICAgICBpZiAob3RoZXJJdGVyYXRv
ci5sYXN0KCkgPCBhY3RpdmVTZWxmUmFuZ2UtPmZpcnN0KSB7CisgICAgICAgICAgICAgICAgaW5z
ZXJ0QmV0d2VlbihsYXN0U2VsZlJhbmdlSW5kZXgsIHNlbGZSYW5nZUluZGV4LCBvdGhlckl0ZXJh
dG9yLmZpcnN0KCkgKyBvdGhlclJhbmdlT2Zmc2V0LCBvdGhlckl0ZXJhdG9yLmxhc3QoKSwgZGF0
YUNvbnZlcnRlci5jb252ZXJ0KG90aGVySXRlcmF0b3IuZGF0YSgpKSk7CiAKICAgICAgICAgICAg
ICAgICArK290aGVySXRlcmF0b3I7CiAgICAgICAgICAgICAgICAgb3RoZXJSYW5nZU9mZnNldCA9
IDA7CkBAIC0xMjYsMjQgKzEzMCwyNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBCdXQgd2Ug
ZG9uJ3Qga25vdyBob3cgdGhleSBjb2xsaWRlLgogCiAgICAgICAgICAgICAvLyBEbyB3ZSBoYXZl
IGEgcGFydCBvbiB0aGUgbGVmdD8gQ3JlYXRlIGEgbmV3IHJhbmdlIGZvciBpdC4KLSAgICAgICAg
ICAgIGlmIChhY3RpdmVTZWxmUmFuZ2UtPmZpcnN0IDwgb3RoZXJJdGVyYXRvci0+Zmlyc3QgKyBv
dGhlclJhbmdlT2Zmc2V0KSB7CisgICAgICAgICAgICBpZiAoYWN0aXZlU2VsZlJhbmdlLT5maXJz
dCA8IG90aGVySXRlcmF0b3IuZmlyc3QoKSArIG90aGVyUmFuZ2VPZmZzZXQpIHsKICAgICAgICAg
ICAgICAgICBEYXRhVHlwZSBjb3BpZWREYXRhID0gYWN0aXZlU2VsZlJhbmdlLT5kYXRhOwogICAg
ICAgICAgICAgICAgIENoYXJhY3RlclR5cGUgbmV3UmFuZ2VGaXJzdENoYXJhY3RlciA9IGFjdGl2
ZVNlbGZSYW5nZS0+Zmlyc3Q7Ci0gICAgICAgICAgICAgICAgYWN0aXZlU2VsZlJhbmdlLT5maXJz
dCA9IG90aGVySXRlcmF0b3ItPmZpcnN0ICsgb3RoZXJSYW5nZU9mZnNldDsKLSAgICAgICAgICAg
ICAgICBpbnNlcnRCZXR3ZWVuKGxhc3RTZWxmUmFuZ2VJbmRleCwgc2VsZlJhbmdlSW5kZXgsIG5l
d1JhbmdlRmlyc3RDaGFyYWN0ZXIsIG90aGVySXRlcmF0b3ItPmZpcnN0ICsgb3RoZXJSYW5nZU9m
ZnNldCAtIDEsIFdURjo6bW92ZShjb3BpZWREYXRhKSk7CisgICAgICAgICAgICAgICAgYWN0aXZl
U2VsZlJhbmdlLT5maXJzdCA9IG90aGVySXRlcmF0b3IuZmlyc3QoKSArIG90aGVyUmFuZ2VPZmZz
ZXQ7CisgICAgICAgICAgICAgICAgaW5zZXJ0QmV0d2VlbihsYXN0U2VsZlJhbmdlSW5kZXgsIHNl
bGZSYW5nZUluZGV4LCBuZXdSYW5nZUZpcnN0Q2hhcmFjdGVyLCBvdGhlckl0ZXJhdG9yLmZpcnN0
KCkgKyBvdGhlclJhbmdlT2Zmc2V0IC0gMSwgV1RGOjptb3ZlKGNvcGllZERhdGEpKTsKICAgICAg
ICAgICAgICAgICBhY3RpdmVTZWxmUmFuZ2UgPSAmbV9yYW5nZXNbc2VsZlJhbmdlSW5kZXhdOwot
ICAgICAgICAgICAgfSBlbHNlIGlmIChvdGhlckl0ZXJhdG9yLT5maXJzdCArIG90aGVyUmFuZ2VP
ZmZzZXQgPCBhY3RpdmVTZWxmUmFuZ2UtPmZpcnN0KSB7Ci0gICAgICAgICAgICAgICAgaW5zZXJ0
QmV0d2VlbihsYXN0U2VsZlJhbmdlSW5kZXgsIHNlbGZSYW5nZUluZGV4LCBvdGhlckl0ZXJhdG9y
LT5maXJzdCArIG90aGVyUmFuZ2VPZmZzZXQsIGFjdGl2ZVNlbGZSYW5nZS0+Zmlyc3QgLSAxLCBk
YXRhQ29udmVydGVyLmNvbnZlcnQob3RoZXJJdGVyYXRvci5kYXRhKCkpKTsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAob3RoZXJJdGVyYXRvci5maXJzdCgpICsgb3RoZXJSYW5nZU9mZnNldCA8IGFj
dGl2ZVNlbGZSYW5nZS0+Zmlyc3QpIHsKKyAgICAgICAgICAgICAgICBpbnNlcnRCZXR3ZWVuKGxh
c3RTZWxmUmFuZ2VJbmRleCwgc2VsZlJhbmdlSW5kZXgsIG90aGVySXRlcmF0b3IuZmlyc3QoKSAr
IG90aGVyUmFuZ2VPZmZzZXQsIGFjdGl2ZVNlbGZSYW5nZS0+Zmlyc3QgLSAxLCBkYXRhQ29udmVy
dGVyLmNvbnZlcnQob3RoZXJJdGVyYXRvci5kYXRhKCkpKTsKIAogICAgICAgICAgICAgICAgIGFj
dGl2ZVNlbGZSYW5nZSA9ICZtX3Jhbmdlc1tzZWxmUmFuZ2VJbmRleF07Ci0gICAgICAgICAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShvdGhlclJhbmdlT2Zmc2V0IDwgYWN0aXZlU2VsZlJhbmdl
LT5maXJzdCAtIG90aGVySXRlcmF0b3ItPmZpcnN0LCAiVGhlIG9mZnNldCBtdXN0IG1vdmUgZm9y
d2FyZCBvciB3ZSBjb3VsZCBnZXQgc3R1Y2sgb24gdGhpcyBvcGVyYXRpb24uIik7Ci0gICAgICAg
ICAgICAgICAgb3RoZXJSYW5nZU9mZnNldCA9IGFjdGl2ZVNlbGZSYW5nZS0+Zmlyc3QgLSBvdGhl
ckl0ZXJhdG9yLT5maXJzdDsKKyAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG90
aGVyUmFuZ2VPZmZzZXQgPCBhY3RpdmVTZWxmUmFuZ2UtPmZpcnN0IC0gb3RoZXJJdGVyYXRvci5m
aXJzdCgpLCAiVGhlIG9mZnNldCBtdXN0IG1vdmUgZm9yd2FyZCBvciB3ZSBjb3VsZCBnZXQgc3R1
Y2sgb24gdGhpcyBvcGVyYXRpb24uIik7CisgICAgICAgICAgICAgICAgb3RoZXJSYW5nZU9mZnNl
dCA9IGFjdGl2ZVNlbGZSYW5nZS0+Zmlyc3QgLSBvdGhlckl0ZXJhdG9yLmZpcnN0KCk7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIEhlcmUsIHdlIGtub3cgYm90aCByYW5nZXMgc3Rh
cnQgYXQgdGhlIHNhbWUgcG9pbnQsIHdlIG5lZWQgdG8gY3JlYXRlIHRoZSBwYXJ0IHRoYXQgaW50
ZXJzZWN0CiAgICAgICAgICAgICAvLyBhbmQgbWVyZ2UgdGhlIGRhdGEuCiAKLSAgICAgICAgICAg
IGlmIChhY3RpdmVTZWxmUmFuZ2UtPmxhc3QgPT0gb3RoZXJJdGVyYXRvci0+bGFzdCkgeworICAg
ICAgICAgICAgaWYgKGFjdGl2ZVNlbGZSYW5nZS0+bGFzdCA9PSBvdGhlckl0ZXJhdG9yLmxhc3Qo
KSkgewogICAgICAgICAgICAgICAgIC8vIElmIHRoZXkgZmluaXNoIHRvZ2V0aGVyLCB0aGluZ3Mg
YXJlIHJlYWxseSBlYXN5OiB3ZSBqdXN0IGFkZCBCIHRvIEEuCiAgICAgICAgICAgICAgICAgZGF0
YUNvbnZlcnRlci5leHRlbmQoYWN0aXZlU2VsZlJhbmdlLT5kYXRhLCBvdGhlckl0ZXJhdG9yLmRh
dGEoKSk7CiAKQEAgLTE1NiwxNSArMTYwLDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGFjdGl2ZVNlbGZSYW5n
ZS0+bGFzdCA+IG90aGVySXRlcmF0b3ItPmxhc3QpIHsKKyAgICAgICAgICAgIGlmIChhY3RpdmVT
ZWxmUmFuZ2UtPmxhc3QgPiBvdGhlckl0ZXJhdG9yLmxhc3QoKSkgewogICAgICAgICAgICAgICAg
IC8vIElmIEEgaXMgYmlnZ2VyIHRoYW4gQiwgd2UgYWRkIGEgbWVyZ2VkIHZlcnNpb24gYW5kIG1v
dmUgQSB0byB0aGUgcmlnaHQuCiAKICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJUeXBlIGNvbWJp
bmVkUGFydFN0YXJ0ID0gYWN0aXZlU2VsZlJhbmdlLT5maXJzdDsKLSAgICAgICAgICAgICAgICBh
Y3RpdmVTZWxmUmFuZ2UtPmZpcnN0ID0gb3RoZXJJdGVyYXRvci0+bGFzdCArIDE7CisgICAgICAg
ICAgICAgICAgYWN0aXZlU2VsZlJhbmdlLT5maXJzdCA9IG90aGVySXRlcmF0b3IubGFzdCgpICsg
MTsKIAogICAgICAgICAgICAgICAgIERhdGFUeXBlIGNvbWJpbmVkRGF0YSA9IGFjdGl2ZVNlbGZS
YW5nZS0+ZGF0YTsKICAgICAgICAgICAgICAgICBkYXRhQ29udmVydGVyLmV4dGVuZChjb21iaW5l
ZERhdGEsIG90aGVySXRlcmF0b3IuZGF0YSgpKTsKLSAgICAgICAgICAgICAgICBpbnNlcnRCZXR3
ZWVuKGxhc3RTZWxmUmFuZ2VJbmRleCwgc2VsZlJhbmdlSW5kZXgsIGNvbWJpbmVkUGFydFN0YXJ0
LCBvdGhlckl0ZXJhdG9yLT5sYXN0LCBXVEY6Om1vdmUoY29tYmluZWREYXRhKSk7CisgICAgICAg
ICAgICAgICAgaW5zZXJ0QmV0d2VlbihsYXN0U2VsZlJhbmdlSW5kZXgsIHNlbGZSYW5nZUluZGV4
LCBjb21iaW5lZFBhcnRTdGFydCwgb3RoZXJJdGVyYXRvci5sYXN0KCksIFdURjo6bW92ZShjb21i
aW5lZERhdGEpKTsKIAogICAgICAgICAgICAgICAgICsrb3RoZXJJdGVyYXRvcjsKICAgICAgICAg
ICAgICAgICBvdGhlclJhbmdlT2Zmc2V0ID0gMDsKQEAgLTE3MiwyMiArMTc2LDI3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBoZXJlLCBC
IGVuZHMgYWZ0ZXIgQS4gV2UgbWVyZ2UgdGhlIGludGVyc2VjdGlvbiBhbmQgbW92ZSBvbi4KLSAg
ICAgICAgICAgIEFTU0VSVChvdGhlckl0ZXJhdG9yLT5sYXN0ID4gYWN0aXZlU2VsZlJhbmdlLT5s
YXN0KTsKKyAgICAgICAgICAgIEFTU0VSVChvdGhlckl0ZXJhdG9yLmxhc3QoKSA+IGFjdGl2ZVNl
bGZSYW5nZS0+bGFzdCk7CiAgICAgICAgICAgICBkYXRhQ29udmVydGVyLmV4dGVuZChhY3RpdmVT
ZWxmUmFuZ2UtPmRhdGEsIG90aGVySXRlcmF0b3IuZGF0YSgpKTsKIAotICAgICAgICAgICAgb3Ro
ZXJSYW5nZU9mZnNldCA9IGFjdGl2ZVNlbGZSYW5nZS0+bGFzdCAtIG90aGVySXRlcmF0b3ItPmZp
cnN0ICsgMTsKKyAgICAgICAgICAgIG90aGVyUmFuZ2VPZmZzZXQgPSBhY3RpdmVTZWxmUmFuZ2Ut
Pmxhc3QgLSBvdGhlckl0ZXJhdG9yLmZpcnN0KCkgKyAxOwogICAgICAgICAgICAgbGFzdFNlbGZS
YW5nZUluZGV4ID0gc2VsZlJhbmdlSW5kZXg7CiAgICAgICAgICAgICBzZWxmUmFuZ2VJbmRleCA9
IGFjdGl2ZVNlbGZSYW5nZS0+bmV4dFJhbmdlSW5kZXg7CiAgICAgICAgICAgICByZWFjaGVkU2Vs
ZkVuZCA9ICFzZWxmUmFuZ2VJbmRleDsKICAgICAgICAgfSB3aGlsZSAoIXJlYWNoZWRTZWxmRW5k
ICYmIG90aGVySXRlcmF0b3IgIT0gb3RoZXJFbmQpOwogCiAgICAgICAgIHdoaWxlIChvdGhlckl0
ZXJhdG9yICE9IG90aGVyRW5kKSB7Ci0gICAgICAgICAgICBsYXN0U2VsZlJhbmdlSW5kZXggPSBh
cHBlbmRSYW5nZShsYXN0U2VsZlJhbmdlSW5kZXgsIG90aGVySXRlcmF0b3ItPmZpcnN0ICsgb3Ro
ZXJSYW5nZU9mZnNldCwgb3RoZXJJdGVyYXRvci0+bGFzdCwgZGF0YUNvbnZlcnRlci5jb252ZXJ0
KG90aGVySXRlcmF0b3IuZGF0YSgpKSk7CisgICAgICAgICAgICBsYXN0U2VsZlJhbmdlSW5kZXgg
PSBhcHBlbmRSYW5nZShsYXN0U2VsZlJhbmdlSW5kZXgsIG90aGVySXRlcmF0b3IuZmlyc3QoKSAr
IG90aGVyUmFuZ2VPZmZzZXQsIG90aGVySXRlcmF0b3IubGFzdCgpLCBkYXRhQ29udmVydGVyLmNv
bnZlcnQob3RoZXJJdGVyYXRvci5kYXRhKCkpKTsKICAgICAgICAgICAgIG90aGVyUmFuZ2VPZmZz
ZXQgPSAwOwogICAgICAgICAgICAgKytvdGhlckl0ZXJhdG9yOwogICAgICAgICB9CiAgICAgfQog
CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9yYW5n
ZXMuc2l6ZSgpOworICAgIH0KKwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gbV9yYW5nZXMuaXNFbXB0eSgpOwpAQCAtMjQxLDggKzI1MCw4IEBAIHByaXZh
dGU6CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIG1fcmFuZ2VzLmFwcGVuZChUeXBlZE11dGFi
bGVSYW5nZShkYXRhQ29udmVydGVyLmNvbnZlcnQob3RoZXJJdGVyYXRvci5kYXRhKCkpLAogICAg
ICAgICAgICAgICAgIGxvb3BDb3VudGVyICsgMSwKLSAgICAgICAgICAgICAgICBvdGhlckl0ZXJh
dG9yLT5maXJzdCwKLSAgICAgICAgICAgICAgICBvdGhlckl0ZXJhdG9yLT5sYXN0KSk7CisgICAg
ICAgICAgICAgICAgb3RoZXJJdGVyYXRvci5maXJzdCgpLAorICAgICAgICAgICAgICAgIG90aGVy
SXRlcmF0b3IubGFzdCgpKSk7CiAgICAgICAgICAgICArK2xvb3BDb3VudGVyOwogICAgICAgICAg
ICAgKytvdGhlckl0ZXJhdG9yOwogICAgICAgICB9IHdoaWxlIChvdGhlckl0ZXJhdG9yICE9IG90
aGVyRW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05G
QVRvREZBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmNw
cAppbmRleCA2YTJiM2U0MDE5MWZjNzU1NzAyNWMzMzhjOTJjZWFjNDkzZWUwNmJkLi45NGI4Yjcz
ZjgzMDNhMzAwOGJhY2UzNmM2YWIwODkwNzU0ZWViY2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwCkBAIC0zMzYsNzMgKzMzNiw2IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBjcmVhdGVDb21iaW5lZFRyYW5zaXRpb24oUHJlYWxsb2NhdGVkTkZBTm9k
ZVJhbmdlTGlzdCYgY29tYmluCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgY2FuVXNl
RmFsbGJhY2tUcmFuc2l0aW9uKGNvbnN0IFByZWFsbG9jYXRlZE5GQU5vZGVSYW5nZUxpc3QmIHJh
bmdlTGlzdCkKLXsKLSAgICAvLyBUcmFuc2l0aW9ucyBjYW4gY29udGFpbnMgIjAiIGlmIHRoZSBl
eHByZXNzaW9uIGhhcyBhIGVuZC1vZi1saW5lIG1hcmtlci4KLSAgICAvLyBGYWxsYmFjayB0cmFu
c2l0aW9ucyBjb3ZlciAxLTEyNy4gV2UgaGF2ZSB0byBiZSBjYXJlZnVsIHdpdGggdGhlIGZpcnN0
LgotCi0gICAgYXV0byBpdGVyYXRvciA9IHJhbmdlTGlzdC5iZWdpbigpOwotICAgIGF1dG8gZW5k
ID0gcmFuZ2VMaXN0LmVuZCgpOwotICAgIGlmIChpdGVyYXRvciA9PSBlbmQpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGNoYXIgbGFzdFNlZW5DaGFyYWN0ZXIgPSAwOwotICAgIGlmICgh
aXRlcmF0b3ItPmZpcnN0KSB7Ci0gICAgICAgIGxhc3RTZWVuQ2hhcmFjdGVyID0gaXRlcmF0b3It
Pmxhc3Q7Ci0gICAgICAgIGlmIChsYXN0U2VlbkNoYXJhY3RlciA9PSAxMjcpCi0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgKytpdGVyYXRvcjsKLSAgICB9Ci0KLSAgICBmb3IgKDtp
dGVyYXRvciAhPSBlbmQ7ICsraXRlcmF0b3IpIHsKLSAgICAgICAgQVNTRVJUKGl0ZXJhdG9yLT5m
aXJzdCA+IGxhc3RTZWVuQ2hhcmFjdGVyKTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yLT5maXJzdCAh
PSBsYXN0U2VlbkNoYXJhY3RlciArIDEpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgaWYgKGl0ZXJhdG9yLT5sYXN0ID09IDEyNykKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICBsYXN0U2VlbkNoYXJhY3RlciA9IGl0ZXJhdG9yLT5sYXN0OwotICAgIH0KLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdWludDMyX3QgZmluZEJlc3RGYWxs
YmFja1RhcmdldChjb25zdCBQcmVhbGxvY2F0ZWRORkFOb2RlUmFuZ2VMaXN0JiByYW5nZUxpc3Qs
IGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCwgMTI4PiYgcmFuZ2VUb1RhcmdldCkKLXsKLSAgICBBU1NF
UlQoY2FuVXNlRmFsbGJhY2tUcmFuc2l0aW9uKHJhbmdlTGlzdCkpOwotCi0gICAgSGFzaE1hcDx1
aW50MzJfdCwgdW5zaWduZWQsIERlZmF1bHRIYXNoPHVpbnQzMl90Pjo6SGFzaCwgV1RGOjpVbnNp
Z25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50MzJfdD4+IGhpc3RvZ3JhbTsKLQotICAgIHVu
c2lnbmVkIHJhbmdlVG9UYXJnZXRJbmRleCA9IDA7Ci0gICAgYXV0byBpdGVyYXRvciA9IHJhbmdl
TGlzdC5iZWdpbigpOwotICAgIGF1dG8gZW5kID0gcmFuZ2VMaXN0LmVuZCgpOwotICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoaXRlcmF0b3IgIT0gZW5kLCAiQW4gZW1wdHkgcmFuZ2UgbGlzdCBjYW5u
b3QgdXNlIGEgZmFsbGJhY2sgdHJhbnNpdGlvbi4iKTsKLQotICAgIGlmICghaXRlcmF0b3ItPmZp
cnN0ICYmICFpdGVyYXRvci0+bGFzdCkgewotICAgICAgICArK2l0ZXJhdG9yOwotICAgICAgICAr
K3JhbmdlVG9UYXJnZXRJbmRleDsKLSAgICB9Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpdGVy
YXRvciAhPSBlbmQsICJBbiBlbXB0eSByYW5nZSBsaXN0IG1hdGNoaW5nIG9ubHkgemVybyBjYW5u
b3QgdXNlIGEgZmFsbGJhY2sgdHJhbnNpdGlvbi4iKTsKLQotICAgIHVpbnQzMl90IGJlc3RUYXJn
ZXQgPSByYW5nZVRvVGFyZ2V0W3JhbmdlVG9UYXJnZXRJbmRleF07Ci0gICAgdW5zaWduZWQgYmVz
dFRhcmdldFNjb3JlID0gIWl0ZXJhdG9yLT5maXJzdCA/IGl0ZXJhdG9yLT5zaXplKCkgLSAxIDog
aXRlcmF0b3ItPnNpemUoKTsKLSAgICBoaXN0b2dyYW0uYWRkKGJlc3RUYXJnZXQsIGJlc3RUYXJn
ZXRTY29yZSk7Ci0gICAgKytpdGVyYXRvcjsKLSAgICArK3JhbmdlVG9UYXJnZXRJbmRleDsKLQot
ICAgIGZvciAoO2l0ZXJhdG9yICE9IGVuZDsgKytpdGVyYXRvciwgKytyYW5nZVRvVGFyZ2V0SW5k
ZXgpIHsKLSAgICAgICAgdW5zaWduZWQgcmFuZ2VTaXplID0gaXRlcmF0b3ItPnNpemUoKTsKLSAg
ICAgICAgdWludDMyX3QgdGFyZ2V0ID0gcmFuZ2VUb1RhcmdldFtyYW5nZVRvVGFyZ2V0SW5kZXhd
OwotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IGhpc3RvZ3JhbS5hZGQodGFyZ2V0LCByYW5nZVNp
emUpOwotICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICAgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSByYW5nZVNpemU7Ci0gICAgICAgIGlmIChhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID4gYmVzdFRhcmdldFNjb3JlKSB7Ci0gICAgICAgICAgICBiZXN0
VGFyZ2V0U2NvcmUgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgICAgICAgICAgYmVz
dFRhcmdldCA9IHRhcmdldDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gYmVzdFRhcmdl
dDsKLX0KLQogc3RhdGljIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgZ2V0T3JDcmVhdGVERkFOb2Rl
KGNvbnN0IE5vZGVJZFNldCYgbmZhTm9kZVNldCwgY29uc3QgTkZBJiBuZmEsIERGQSYgZGZhLCBV
bmlxdWVOb2RlSWRTZXRUYWJsZSYgdW5pcXVlTm9kZUlkU2V0VGFibGUsIFZlY3RvcjxVbmlxdWVO
b2RlSWRTZXRJbXBsKj4mIHVucHJvY2Vzc2VkTm9kZXMpCiB7CiAgICAgTm9kZUlkU2V0VG9Vbmlx
dWVOb2RlSWRTZXRTb3VyY2Ugbm9kZUlkU2V0VG9VbmlxdWVOb2RlSWRTZXRTb3VyY2UoZGZhLCBu
ZmEsIG5mYU5vZGVTZXQpOwpAQCAtNDMyLDQ2ICszNjUsMjQgQEAgREZBIE5GQVRvREZBOjpjb252
ZXJ0KE5GQSYgbmZhKQogICAgIHVucHJvY2Vzc2VkTm9kZXMuYXBwZW5kKGFkZFJlc3VsdC5pdGVy
YXRvci0+aW1wbCgpKTsKIAogICAgIFByZWFsbG9jYXRlZE5GQU5vZGVSYW5nZUxpc3QgY29tYmlu
ZWRSYW5nZUxpc3Q7Ci0gICAgVmVjdG9yPHVuc2lnbmVkLCAxMjg+IHJhbmdlVG9UYXJnZXQ7CiAg
ICAgZG8gewogICAgICAgICBVbmlxdWVOb2RlSWRTZXRJbXBsKiB1bmlxdWVOb2RlSWRTZXRJbXBs
ID0gdW5wcm9jZXNzZWROb2Rlcy50YWtlTGFzdCgpOwogICAgICAgICBjcmVhdGVDb21iaW5lZFRy
YW5zaXRpb24oY29tYmluZWRSYW5nZUxpc3QsICp1bmlxdWVOb2RlSWRTZXRJbXBsLCBuZmEsIG5m
YU5vZGVDbG9zdXJlcyk7CiAKLSAgICAgICAgcmFuZ2VUb1RhcmdldC5jbGVhcigpOworICAgICAg
ICB1bnNpZ25lZCB0cmFuc2l0aW9uc1N0YXJ0ID0gZGZhLnRyYW5zaXRpb25SYW5nZXMuc2l6ZSgp
OwogICAgICAgICBmb3IgKGNvbnN0IE5GQU5vZGVSYW5nZSYgcmFuZ2UgOiBjb21iaW5lZFJhbmdl
TGlzdCkgewogICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0Tm9kZUlkID0gZ2V0T3JDcmVhdGVE
RkFOb2RlKHJhbmdlLmRhdGEsIG5mYSwgZGZhLCB1bmlxdWVOb2RlSWRTZXRUYWJsZSwgdW5wcm9j
ZXNzZWROb2Rlcyk7Ci0gICAgICAgICAgICByYW5nZVRvVGFyZ2V0LmFwcGVuZCh0YXJnZXROb2Rl
SWQpOworICAgICAgICAgICAgZGZhLnRyYW5zaXRpb25SYW5nZXMuYXBwZW5kKHsgcmFuZ2UuZmly
c3QsIHJhbmdlLmxhc3QgfSk7CisgICAgICAgICAgICBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9u
cy5hcHBlbmQodGFyZ2V0Tm9kZUlkKTsKICAgICAgICAgfQotCi0gICAgICAgIGJvb2wgdXNlRmFs
bGJhY2tUcmFuc2l0aW9uID0gY2FuVXNlRmFsbGJhY2tUcmFuc2l0aW9uKGNvbWJpbmVkUmFuZ2VM
aXN0KTsKLSAgICAgICAgdWludDMyX3QgcHJlZmVyZWRGYWxsYmFja1RhcmdldCA9IDA7Ci0gICAg
ICAgIGlmICh1c2VGYWxsYmFja1RyYW5zaXRpb24pCi0gICAgICAgICAgICBwcmVmZXJlZEZhbGxi
YWNrVGFyZ2V0ID0gZmluZEJlc3RGYWxsYmFja1RhcmdldChjb21iaW5lZFJhbmdlTGlzdCwgcmFu
Z2VUb1RhcmdldCk7Ci0KLSAgICAgICAgdW5zaWduZWQgdHJhbnNpdGlvbnNTdGFydCA9IGRmYS50
cmFuc2l0aW9uQ2hhcmFjdGVycy5zaXplKCk7Ci0gICAgICAgIHVuc2lnbmVkIHJhbmdlVG9UYXJn
ZXRJbmRleCA9IDA7Ci0KLSAgICAgICAgZm9yIChjb25zdCBORkFOb2RlUmFuZ2UmIHJhbmdlIDog
Y29tYmluZWRSYW5nZUxpc3QpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldE5vZGVJZCA9
IHJhbmdlVG9UYXJnZXRbcmFuZ2VUb1RhcmdldEluZGV4XTsKLQotICAgICAgICAgICAgaWYgKCEo
dXNlRmFsbGJhY2tUcmFuc2l0aW9uICYmIHRhcmdldE5vZGVJZCA9PSBwcmVmZXJlZEZhbGxiYWNr
VGFyZ2V0KSkgewotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJhbmdlLmZpcnN0
OyBpIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5nZS5sYXN0KTsgKytpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGRmYS50cmFuc2l0aW9uQ2hhcmFjdGVycy5hcHBlbmQoc3RhdGljX2Nhc3Q8
dWludDhfdD4oaSkpOwotICAgICAgICAgICAgICAgICAgICBkZmEudHJhbnNpdGlvbkRlc3RpbmF0
aW9ucy5hcHBlbmQodGFyZ2V0Tm9kZUlkKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICArK3JhbmdlVG9UYXJnZXRJbmRleDsKLSAgICAgICAgfQotICAgICAg
ICB1bnNpZ25lZCB0cmFuc2l0aW9uc0VuZCA9IGRmYS50cmFuc2l0aW9uQ2hhcmFjdGVycy5zaXpl
KCk7CisgICAgICAgIHVuc2lnbmVkIHRyYW5zaXRpb25zRW5kID0gZGZhLnRyYW5zaXRpb25SYW5n
ZXMuc2l6ZSgpOwogICAgICAgICB1bnNpZ25lZCB0cmFuc2l0aW9uc0xlbmd0aCA9IHRyYW5zaXRp
b25zRW5kIC0gdHJhbnNpdGlvbnNTdGFydDsKKwogICAgICAgICB1bnNpZ25lZCBkZmFOb2RlSWQg
PSB1bmlxdWVOb2RlSWRTZXRJbXBsLT5tX2RmYU5vZGVJZDsKICAgICAgICAgREZBTm9kZSYgZGZh
U291cmNlTm9kZSA9IGRmYS5ub2Rlc1tkZmFOb2RlSWRdOwotICAgICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKHRyYW5zaXRpb25zTGVuZ3RoIDwgMTI3LCAiVHJhbnNpdGlvbnMgY292ZXJpbmcgdGhl
IGVudGlyZSBhbHBoYWJldCBzaG91bGQgdXNlIGEgZmFsbGJhY2sgdHJhbnNpdGlvbiIpOwogICAg
ICAgICBkZmFTb3VyY2VOb2RlLnNldFRyYW5zaXRpb25zKHRyYW5zaXRpb25zU3RhcnQsIHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KHRyYW5zaXRpb25zTGVuZ3RoKSk7Ci0KLSAgICAgICAgaWYgKHVzZUZh
bGxiYWNrVHJhbnNpdGlvbikKLSAgICAgICAgICAgIGRmYVNvdXJjZU5vZGUuYWRkRmFsbGJhY2tU
cmFuc2l0aW9uKGRmYSwgcHJlZmVyZWRGYWxsYmFja1RhcmdldCk7CiAgICAgfSB3aGlsZSAoIXVu
cHJvY2Vzc2VkTm9kZXMuaXNFbXB0eSgpKTsKKwogICAgIHJldHVybiBkZmE7CiB9CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ODc2MGNjZjVh
NDE5NzRiMDhjODIwOThlNTRkMjg4OGFmNDcxN2E4Li4wMWIyOWQ2MDc2OTYxZDYyZDRhMDk1MGM5
MzY2NTExZjFlMjgzN2IzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDctMDMgIEJlbmphbWluIFBvdWxhaW4g
IDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtDb250ZW50IEV4dGVuc2lvbnNdIE1h
a2UgdGhlIERGQSB0cmFuc2l0aW9ucyByYW5nZXMgaW5zdGVhZCBvZiBjaGFyYWN0ZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY1NzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0RGQU1pbmltaXplci5jcHA6CisgICAgICAgIFNpbmNlIHRo
ZSBtaW5pbWl6ZXIgaXMgcGVyZmVjdCwgd2UgZ2V0IHRoZSBtaW5pbWFsIHNvbHV0aW9uIG5vdywK
KyAgICAgICAgd2hpY2ggaXMgcmVhbGx5IGNvb2whCisKIDIwMTUtMDctMDMgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBbWGNvZGVdIFVwZGF0ZSBzb21lIGJ1aWxk
IHNldHRpbmdzIGFzIHJlY29tbWVuZGVkIGJ5IFhjb2RlIDcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCmluZGV4IDE0
YzI1YjRhOTE0YjVjYzQ3NmU5NWUzOGQ2MGNkMTBkNzJiNzc5ZDQuLjUxYjRmNzc4YTc0YzMxMDM2
MTJhYThkZjBjZmZlY2FhOGRlZGNiNTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcApAQCAtMTkzMCw0ICsxOTMw
LDQ3MCBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFF1YW50aWZpZWRPbmVPck1vcmVS
YW5nZXNDYXNlMTFBbmQxM0luR3JvdXBzKQogICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kZGpqeXl5Lnh4eC8iKSwgeyBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKIH0KIAor
VEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFJhbmdlT3ZlcmxhcENhc2UxKQor
eworICAgIGF1dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0
eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykqW2Et
bV1cIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImlnbm9yZS1wcmV2aW91
cy1ydWxlc1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGJhcikqW2MtZV1cIn19
XSIpOworCisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJhOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6
OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoImI6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgiYzovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0sIHRydWUpOworICAg
IHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZDovL3d3dy53
ZWJraXQub3JnLyIpLCB7IH0sIHRydWUpOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwg
bWFpbkRvY3VtZW50UmVxdWVzdCgiZTovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0sIHRydWUpOwor
ICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZjovL3d3
dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xv
YWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJtOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6
OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoIm46Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9KTsKKworICAgIGF1dG8gc2VhcmNo
QmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0s
XCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGZvbykqW2EtbV1cIn19LCIKKyAgICAgICAg
IntcImFjdGlvblwiOntcInR5cGVcIjpcImlnbm9yZS1wcmV2aW91cy1ydWxlc1wifSxcInRyaWdn
ZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoYmFyKSpbYy1lXVwifX1dIik7CisgICAgdGVzdFJlcXVl
c3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmEueHh4LyIp
LCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmIu
eHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7Cisg
ICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8v
d3d3LmMueHh4LyIpLCB7IH0sIHRydWUpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kLnh4eC8iKSwgeyB9LCB0cnVlKTsKKyAg
ICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93
d3cuZS54eHgvIiksIHsgfSwgdHJ1ZSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwg
bWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmYueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3Lm0ueHh4LyIpLCB7IENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2Vh
cmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3Lm4ueHh4LyIpLCB7IH0p
OworfQorCisKK1RFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgQ29tYmluZWRSYW5nZU92ZXJs
YXBDYXNlMikKK3sKKyAgICBhdXRvIG1hdGNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0
aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwi
Xihmb28pKlthLW1dXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJpZ25v
cmUtcHJldmlvdXMtcnVsZXNcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihiYXIp
KmJcIn19XSIpOworCisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJhOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5E
b2N1bWVudFJlcXVlc3QoImI6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9LCB0cnVlKTsKKyAgICB0
ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImM6Ly93d3cud2Vi
a2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0p
OworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgibTov
L3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9j
a0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJuOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisKKyAgICBhdXRvIHNlYXJjaEJhY2tl
bmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJp
Z2dlclwiOntcInVybC1maWx0ZXJcIjpcIihmb28pKlthLW1dXCJ9fSwiCisgICAgICAgICJ7XCJh
Y3Rpb25cIjp7XCJ0eXBlXCI6XCJpZ25vcmUtcHJldmlvdXMtcnVsZXNcIn0sXCJ0cmlnZ2VyXCI6
e1widXJsLWZpbHRlclwiOlwiKGJhcikqbFwifX1dIik7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmEueHh4LyIpLCB7IENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qo
c2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmsueHh4LyIpLCB7
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJl
cXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmwueHh4
LyIpLCB7IH0sIHRydWUpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoInp6ejovL3d3dy5tLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5uLnh4eC8iKSwgeyB9KTsKK30KKworVEVTVF9G
KENvbnRlbnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFJhbmdlT3ZlcmxhcENhc2UzKQoreworICAg
IGF1dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6
XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykqW2ItZF1cIn19
LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixc
InNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4o
YmFyKSpbYS1tXVwifX1dIik7CisKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5E
b2N1bWVudFJlcXVlc3QoImE6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVz
dChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImI6Ly93d3cud2Via2l0Lm9yZy8i
KSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3Rv
ciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0
UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImQ6Ly93d3cud2Via2l0
Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVT
ZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImU6Ly93d3cu
d2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxh
eU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoIm06Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6
QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdCht
YXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoIm46Ly93d3cud2Via2l0Lm9yZy8iKSwg
eyB9KTsKKworICAgIGF1dG8gc2VhcmNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9u
XCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGZv
bykqW2ItZF1cIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNw
bGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1m
aWx0ZXJcIjpcIihiYXIpKlthLW1dXCJ9fV0iKTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYS54eHgvIiksIHsgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmIu
eHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNl
bGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAg
IHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3
dy5kLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5v
bmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsK
KyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6
Ly93d3cuZS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3Bs
YXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgienp6Oi8vd3d3Lm0ueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNl
YXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5uLnh4eC8iKSwgeyB9
KTsKK30KKworVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFJhbmdlT3Zlcmxh
cENhc2U0KQoreworICAgIGF1dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rp
b25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJe
KGZvbykqbFwifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3Bs
YXktbm9uZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZp
bHRlclwiOlwiXihiYXIpKlthLW1dXCJ9fV0iKTsKKworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAg
IHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiazovL3d3dy53
ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5
Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgibDovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgibTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1
ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgibjovL3d3dy53ZWJraXQub3Jn
LyIpLCB7IH0pOworCisgICAgYXV0byBzZWFyY2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJh
Y3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6
XCIoZm9vKSpsXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlz
cGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwt
ZmlsdGVyXCI6XCIoYmFyKSpbYS1tXVwifX1dIik7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmEueHh4LyIpLCB7IENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRl
c3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5r
Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVT
ZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJ6eno6Ly93d3cubC54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5
cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBl
OjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgienp6Oi8vd3d3Lm0ueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJj
aEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5uLnh4eC8iKSwgeyB9KTsK
K30KKworVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFJhbmdlT3ZlcmxhcENh
c2U1KQoreworICAgIGF1dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25c
Ijp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZv
bykqW2EtZV1cIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNw
bGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1m
aWx0ZXJcIjpcIl4oYmFyKSpbZS1oXVwifX1dIik7CisKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImE6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0
KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZDovL3d3dy53ZWJraXQub3JnLyIp
LCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVz
dFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJlOi8vd3d3LndlYmtp
dC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25l
U2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7Cisg
ICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJmOi8vd3d3
LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3Bs
YXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJoOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qo
bWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJpOi8vd3d3LndlYmtpdC5vcmcvIiks
IHsgfSk7CisKKyAgICBhdXRvIHNlYXJjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlv
blwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIihm
b28pKlthLWVdXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlz
cGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwt
ZmlsdGVyXCI6XCIoYmFyKSpbZS1oXVwifX1dIik7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmEueHh4LyIpLCB7IENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2Vh
cmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmQueHh4LyIpLCB7IENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVl
c3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmUueHh4LyIp
LCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9y
LCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RS
ZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5mLnh4
eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxl
Y3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJ6eno6Ly93d3cuaC54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6
OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmkueHh4LyIpLCB7IH0pOworfQorCitU
RVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIENvbWJpbmVkUmFuZ2VPdmVybGFwQ2FzZTYpCit7
CisgICAgYXV0byBtYXRjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5
cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4oZm9vKSplXCJ9
fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIs
XCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJe
KGJhcikqW2UtaF1cIn19XSIpOworCisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJhOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisgICAgdGVzdFJl
cXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJkOi8vd3d3LndlYmtpdC5v
cmcvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJlOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25U
eXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJmOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qo
bWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJoOi8vd3d3LndlYmtpdC5vcmcvIiks
IHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3Ig
fSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJp
Oi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisKKyAgICBhdXRvIHNlYXJjaEJhY2tlbmQgPSBt
YWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwi
OntcInVybC1maWx0ZXJcIjpcIihmb28pKmVcIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntc
InR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwi
dHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIihiYXIpKltlLWhdXCJ9fV0iKTsKKyAgICB0ZXN0
UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYS54
eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgienp6Oi8vd3d3LmQueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJj
aEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5lLnh4eC8iKSwgeyBDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChz
ZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZi54eHgvIiksIHsg
Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7
CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6
Oi8vd3d3LmgueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNw
bGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5E
b2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5pLnh4eC8iKSwgeyB9KTsKK30KKworVEVTVF9GKENv
bnRlbnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFJhbmdlT3ZlcmxhcENhc2U3KQoreworICAgIGF1
dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJi
bG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykqW2EtZV1cIn19LCIK
KyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNl
bGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4oYmFy
KSplXCJ9fV0iKTsKKworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgiYTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJkOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lv
bnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImU6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRj
aEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImY6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9
KTsKKworICAgIGF1dG8gc2VhcmNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6
e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGZvbykq
W2EtZV1cIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5
LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0
ZXJcIjpcIihiYXIpKmVcIn19XSIpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kLnh4eC8iKSwgeyBDb250ZW50RXh0
ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJj
aEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5lLnh4eC8iKSwgeyBDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChz
ZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZi54eHgvIiksIHsg
fSk7Cit9CisKK1RFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgQ29tYmluZWRSYW5nZU92ZXJs
YXBDYXNlOCkKK3sKKyAgICBhdXRvIG1hdGNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0
aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwi
Xihmb28pKltlLWhdXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3Mt
ZGlzcGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1
cmwtZmlsdGVyXCI6XCJeKGJhcikqW2EtZV1cIn19XSIpOworCisgICAgdGVzdFJlcXVlc3QobWF0
Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJhOi8vd3d3LndlYmtpdC5vcmcvIiksIHsg
Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7
CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJkOi8v
d3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rp
c3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJlOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lv
bnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJmOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRj
aEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImg6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBD
b250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1
ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaTovL3d3dy53ZWJraXQub3Jn
LyIpLCB7IH0pOworCisgICAgYXV0byBzZWFyY2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJh
Y3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6
XCIoZm9vKSpbZS1oXVwifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3Nz
LWRpc3BsYXktbm9uZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1wi
dXJsLWZpbHRlclwiOlwiKGJhcikqW2EtZV1cIn19XSIpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJj
aEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hLnh4eC8iKSwgeyBDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93
d3cuZC54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlO
b25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgienp6Oi8vd3d3LmUueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9u
VHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5E
b2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5mLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6
QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5oLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5pLnh4eC8iKSwgeyB9KTsKK30K
KworVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFJhbmdlT3ZlcmxhcENhc2U5
KQoreworICAgIGF1dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7
XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykq
ZVwifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9u
ZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwi
OlwiXihiYXIpKlthLWVdXCJ9fV0iKTsKKworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwg
bWFpbkRvY3VtZW50UmVxdWVzdCgiYTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRl
bnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RS
ZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZDovL3d3dy53ZWJraXQu
b3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNl
bGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgiZTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25U
eXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlw
ZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgiZjovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOworCisgICAgYXV0byBzZWFy
Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wi
fSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoZm9vKSplXCJ9fSwiCisgICAgICAgICJ7
XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwi
LmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoYmFyKSpbYS1lXVwifX1d
Iik7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
enp6Oi8vd3d3LmEueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NE
aXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVz
dChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZS54eHgvIiks
IHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3Is
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJl
cXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmYueHh4
LyIpLCB7IH0pOworfQorCitURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIENvbWJpbmVkUmFu
Z2VPdmVybGFwQ2FzZTEwKQoreworICAgIGF1dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQo
Ilt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmls
dGVyXCI6XCJeKGZvbykqW2UtaF1cIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVc
IjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dl
clwiOntcInVybC1maWx0ZXJcIjpcIl4oYmFyKSplXCJ9fV0iKTsKKworICAgIHRlc3RSZXF1ZXN0
KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYTovL3d3dy53ZWJraXQub3JnLyIp
LCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgiZDovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1h
dGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZjovL3d3dy53ZWJraXQub3JnLyIpLCB7
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJl
cXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJoOi8vd3d3LndlYmtpdC5v
cmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImk6Ly93d3cu
d2Via2l0Lm9yZy8iKSwgeyB9KTsKKworICAgIGF1dG8gc2VhcmNoQmFja2VuZCA9IG1ha2VCYWNr
ZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJs
LWZpbHRlclwiOlwiKGZvbykqW2UtaF1cIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5
cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJp
Z2dlclwiOntcInVybC1maWx0ZXJcIjpcIihiYXIpKmVcIn19XSIpOworICAgIHRlc3RSZXF1ZXN0
KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hLnh4eC8iKSwg
eyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJ6eno6Ly93d3cuZC54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmUueHh4LyIpLCB7IENvbnRlbnRFeHRl
bnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5mLnh4eC8iKSwgeyBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNl
YXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5oLnh4eC8iKSwgeyBD
b250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1
ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5pLnh4eC8i
KSwgeyB9KTsKK30KKworVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFJhbmdl
T3ZlcmxhcENhc2UxMSkKK3sKKyAgICBhdXRvIG1hdGNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJb
e1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRl
clwiOlwiXihmb28pKltlLWddXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6
XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJc
Ijp7XCJ1cmwtZmlsdGVyXCI6XCJeKGJhcikqW2QtZl1cIn19XSIpOworCisgICAgdGVzdFJlcXVl
c3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJjOi8vd3d3LndlYmtpdC5vcmcv
IiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJkOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5
cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJlOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0
Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJmOi8vd3d3LndlYmtpdC5vcmcvIiksIHsg
Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVl
c3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJnOi8vd3d3LndlYmtpdC5vcmcv
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0
ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImg6Ly93d3cud2Vi
a2l0Lm9yZy8iKSwgeyB9KTsKKworICAgIGF1dG8gc2VhcmNoQmFja2VuZCA9IG1ha2VCYWNrZW5k
KCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZp
bHRlclwiOlwiKGZvbykqW2UtZ11cIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVc
IjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dl
clwiOntcInVybC1maWx0ZXJcIjpcIihiYXIpKltkLWZdXCJ9fV0iKTsKKyAgICB0ZXN0UmVxdWVz
dChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYy54eHgvIiks
IHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgienp6Oi8vd3d3LmQueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpD
U1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5lLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lv
bnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZi54eHgvIiksIHsgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRl
bnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmcueHh4LyIpLCB7IENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qo
c2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmgueHh4LyIpLCB7
IH0pOworfQorCisKK1RFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgQ29tYmluZWRSYW5nZU92
ZXJsYXBDYXNlMTIpCit7CisgICAgYXV0byBtYXRjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tc
ImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJc
IjpcIl4oZm9vKSpbZS1nXVwifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwi
Y3NzLWRpc3BsYXktbm9uZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6
e1widXJsLWZpbHRlclwiOlwiXihiYXIpKltkLWddXCJ9fV0iKTsKKworICAgIHRlc3RSZXF1ZXN0
KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYzovL3d3dy53ZWJraXQub3JnLyIp
LCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgiZDovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBl
OjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0
ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZjovL3d3dy53ZWJraXQub3JnLyIpLCB7IENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0
KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZzovL3d3dy53ZWJraXQub3JnLyIp
LCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9y
LCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RS
ZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaDovL3d3dy53ZWJraXQu
b3JnLyIpLCB7IH0pOworCisgICAgYXV0byBzZWFyY2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7
XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVy
XCI6XCIoZm9vKSpbZS1nXVwifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwi
Y3NzLWRpc3BsYXktbm9uZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6
e1widXJsLWZpbHRlclwiOlwiKGJhcikqW2QtZ11cIn19XSIpOworICAgIHRlc3RSZXF1ZXN0KHNl
YXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jLnh4eC8iKSwgeyB9
KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6
eno6Ly93d3cuZC54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rp
c3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmUueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6
QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5mLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lv
bnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZy54eHgvIiksIHsgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRl
bnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmgueHh4LyIpLCB7IH0pOwor
fQorCitURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIENvbWJpbmVkUmFuZ2VPdmVybGFwQ2Fz
ZTEzKQoreworICAgIGF1dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25c
Ijp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZv
bykqW2ItZF1cIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNw
bGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1m
aWx0ZXJcIjpcIl4oYmFyKSpbYy1lXVwifX1dIik7CisKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImE6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9KTsK
KyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImI6Ly93
d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tM
b2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgiYzovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBl
OjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgiZDovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9u
VHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgiZTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0
KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaDovL3d3dy53ZWJraXQub3JnLyIp
LCB7IH0pOworCisgICAgYXV0byBzZWFyY2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rp
b25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIo
Zm9vKSpbYi1kXVwifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRp
c3BsYXktbm9uZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJs
LWZpbHRlclwiOlwiKGJhcikqW2MtZV1cIn19XSIpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hLnh4eC8iKSwgeyB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93
d3cuYi54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9
KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6
eno6Ly93d3cuYy54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rp
c3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xv
YWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgienp6Oi8vd3d3LmQueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpD
U1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Qmxv
Y2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoInp6ejovL3d3dy5lLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlw
ZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuaC54eHgvIiksIHsgfSk7Cit9CisK
K1RFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgQ29tYmluZWRSYW5nZU92ZXJsYXBDYXNlMTQp
Cit7CisgICAgYXV0byBtYXRjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntc
InR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4oZm9vKSpb
Yi1lXVwifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXkt
bm9uZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRl
clwiOlwiXihiYXIpKltjLWVdXCJ9fV0iKTsKKworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYTovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOworICAg
IHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYjovL3d3dy53
ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQg
fSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJj
Oi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNT
U0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9j
a0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJkOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5
cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBl
OjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1l
bnRSZXF1ZXN0KCJlOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFj
dGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJoOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisKKyAgICBhdXRv
IHNlYXJjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJs
b2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIihmb28pKltiLWVdXCJ9fSwiCisg
ICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxl
Y3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoYmFyKSpb
Yy1lXVwifX1dIik7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgienp6Oi8vd3d3LmEueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJj
aEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5iLnh4eC8iKSwgeyBDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0
KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jLnh4eC8iKSwg
eyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3Rvciwg
Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVx
dWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZC54eHgv
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0
b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmUu
eHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNl
bGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAg
IHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3
dy5oLnh4eC8iKSwgeyB9KTsKK30KKworVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBDb21i
aW5lZFJhbmdlT3ZlcmxhcENhc2UxNSkKK3sKKyAgICBhdXRvIG1hdGNoQmFja2VuZCA9IG1ha2VC
YWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1wi
dXJsLWZpbHRlclwiOlwiXihmb28pKltjLWZdXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7
XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxc
InRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGJhcikqW2MtZl1cIn19XSIpOworCisgICAg
dGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJhOi8vd3d3Lndl
YmtpdC5vcmcvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJiOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisgICAgdGVzdFJlcXVl
c3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJjOi8vd3d3LndlYmtpdC5vcmcv
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0
b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVz
dFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJkOi8vd3d3LndlYmtp
dC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25l
U2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7Cisg
ICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJlOi8vd3d3
LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3Bs
YXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQg
fSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJm
Oi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNT
U0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9j
a0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJnOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisKKyAgICBhdXRvIHNlYXJjaEJhY2tl
bmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJp
Z2dlclwiOntcInVybC1maWx0ZXJcIjpcIihmb28pKltjLWZdXCJ9fSwiCisgICAgICAgICJ7XCJh
Y3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhp
ZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoYmFyKSpbYy1mXVwifX1dIik7
CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6
Oi8vd3d3LmEueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5iLnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVx
dWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYy54eHgv
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0
b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmQu
eHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNl
bGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAg
IHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3
dy5lLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5v
bmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsK
KyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6
Ly93d3cuZi54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3Bs
YXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQg
fSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
enp6Oi8vd3d3LmcueHh4LyIpLCB7IH0pOworfQorCitURVNUX0YoQ29udGVudEV4dGVuc2lvblRl
c3QsIENvbWJpbmVkUmFuZ2VPdmVybGFwQ2FzZTE2KQoreworICAgIGF1dG8gbWF0Y2hCYWNrZW5k
ID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdn
ZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykqY1wifX0sIgorICAgICAgICAie1wiYWN0aW9u
XCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9uZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5c
In0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihiYXIpKmNcIn19XSIpOworCisgICAg
dGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJhOi8vd3d3Lndl
YmtpdC5vcmcvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJiOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisgICAgdGVzdFJlcXVl
c3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJjOi8vd3d3LndlYmtpdC5vcmcv
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0
b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVz
dFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJkOi8vd3d3LndlYmtp
dC5vcmcvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1l
bnRSZXF1ZXN0KCJlOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisKKyAgICBhdXRvIHNlYXJj
aEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9
LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIihmb28pKmNcIn19LCIKKyAgICAgICAgIntc
ImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIu
aGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIihiYXIpKmNcIn19XSIpOwor
ICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejov
L3d3dy5hLnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYi54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVl
c3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmMueHh4LyIp
LCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9y
LCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RS
ZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kLnh4
eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJ6eno6Ly93d3cuZS54eHgvIiksIHsgfSk7Cit9CisKK1RFU1RfRihDb250ZW50RXh0
ZW5zaW9uVGVzdCwgQ29tYmluZWRRdWFudGlmaWVkT25lT3JNb3JlUmFuZ2VzQ2FzZTExQW5kMTMp
Cit7CisgICAgYXV0byBzZWFyY2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7
XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoZm9vKSpb
Yy1lXStbZy1pXStZWVlcIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNz
cy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntc
InVybC1maWx0ZXJcIjpcIihiYXIpKltiLWRdK1toLWpdK1lZWVwifX1dIik7CisKKyAgICAvLyBU
aGUgaW50ZXJlc3RpbmcgcmFuZ2VzIG9ubHkgbWF0Y2ggYmV0d2VlbiAnYicgYW5kICdrJywgcGx1
cyBhIGdhcCBpbiAnZicuCisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgienp6Oi8vd3d3LmFheXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVz
dChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWJ5eXkueHh4
LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoInp6ejovL3d3dy5hY3l5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2Vh
cmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmFkeXl5Lnh4eC8iKSwg
eyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJ6eno6Ly93d3cuYWV5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hZnl5eS54eHgvIiksIHsgfSk7
CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6
Oi8vd3d3LmFneXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWh5eXkueHh4LyIpLCB7IH0pOworICAg
IHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3
dy5haXl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmFqeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0
UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWt5
eXkueHh4LyIpLCB7IH0pOworCisgICAgLy8gJ2InIGlzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2Yg
dGhlIHNlY29uZCBydWxlLgorICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoInp6ejovL3d3dy5ieXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVz
dChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYmF5eXkueHh4
LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoInp6ejovL3d3dy5iYnl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2Vh
cmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmJjeXl5Lnh4eC8iKSwg
eyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJ6eno6Ly93d3cuYmR5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5iZXl5eS54eHgvIiksIHsgfSk7
CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6
Oi8vd3d3LmJmeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYmd5eXkueHh4LyIpLCB7IH0pOworICAg
IHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3
dy5iaHl5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3Bs
YXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmJpeXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVz
dChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYmp5eXkueHh4
LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVj
dG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoInp6ejovL3d3dy5ia3l5eS54eHgvIiksIHsgfSk7CisKKyAgICAvLyAnYycgaXMgdGhlIGZp
cnN0IGNoYXJhY3RlciBvZiB0aGUgZmlyc3QgcnVsZSwgYW5kIGl0IG92ZXJsYXBzIHRoZSBmaXJz
dCBjaGFyYWN0ZXIgb2YgdGhlIHNlY29uZCBydWxlLgorICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jeXl5Lnh4eC8iKSwgeyB9KTsK
KyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6
Ly93d3cuY2F5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jYnl5eS54eHgvIiksIHsgfSk7CisgICAg
dGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3
LmNjeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuY2R5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RS
ZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jZXl5
eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgienp6Oi8vd3d3LmNmeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVz
dChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuY2d5eXkueHh4
LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAg
dGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3
LmNoeXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxh
eU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9
KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6
eno6Ly93d3cuY2l5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpD
U1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Qmxv
Y2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoInp6ejovL3d3dy5janl5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmNreXl5Lnh4eC8iKSwgeyB9
KTsKKworICAgIC8vICdkJyBpcyBpbiB0aGUgZmlyc3QgcmFuZ2Ugb2YgYm90aCBydWxlLiBUaGlz
IHNlcmllcyBjb3ZlciBvdmVybGFwcyBiZXR3ZWVuIHRoZSB0d28gcnVsZXMuCisgICAgdGVzdFJl
cXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmRneXl5
Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOwor
ICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejov
L3d3dy5kZGd5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9j
a0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgienp6Oi8vd3d3LmRkaHl5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25U
eXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmRkaGh5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kZWd5eXkueHh4LyIpLCB7IENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qo
c2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmRlaHl5eS54eHgv
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0
ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cu
ZGZneXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZGZoeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0
UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZGp5
eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9u
ZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoInp6ejovL3d3dy5kZGp5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNl
YXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kZGpqeXl5Lnh4eC8i
KSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3Rv
ciB9KTsKK30KKworVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFF1YW50aWZp
ZWRPbmVPck1vcmVSYW5nZXNDYXNlMTFBbmQxM0luR3JvdXBzKQoreworICAgIGF1dG8gc2VhcmNo
QmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0s
XCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGZvbykqKFtjLWVdKSsoW2ctaV0rWVlZKVwi
fX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9uZVwi
LFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwi
KGJhcikqW2ItZF0rW2gtal0rWVlZXCJ9fV0iKTsKKworICAgIC8vIFRoZSBpbnRlcmVzdGluZyBy
YW5nZXMgb25seSBtYXRjaCBiZXR3ZWVuICdiJyBhbmQgJ2snLCBwbHVzIGEgZ2FwIGluICdmJy4K
KyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6
Ly93d3cuYWF5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hYnl5eS54eHgvIiksIHsgfSk7CisgICAg
dGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3
LmFjeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWR5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RS
ZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hZXl5
eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgienp6Oi8vd3d3LmFmeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVz
dChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWd5eXkueHh4
LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoInp6ejovL3d3dy5haHl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2Vh
cmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmFpeXl5Lnh4eC8iKSwg
eyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJ6eno6Ly93d3cuYWp5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5ha3l5eS54eHgvIiksIHsgfSk7
CisKKyAgICAvLyAnYicgaXMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgc2Vjb25kIHJ1bGUu
CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6
Oi8vd3d3LmJ5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5iYXl5eS54eHgvIiksIHsgfSk7CisgICAg
dGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3
LmJieXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYmN5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RS
ZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5iZHl5
eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgienp6Oi8vd3d3LmJleXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVz
dChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYmZ5eXkueHh4
LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoInp6ejovL3d3dy5iZ3l5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2Vh
cmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmJoeXl5Lnh4eC8iKSwg
eyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9
KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6
eno6Ly93d3cuYml5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpD
U1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5ianl5eS54eHgvIiksIHsgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmJr
eXl5Lnh4eC8iKSwgeyB9KTsKKworICAgIC8vICdjJyBpcyB0aGUgZmlyc3QgY2hhcmFjdGVyIG9m
IHRoZSBmaXJzdCBydWxlLCBhbmQgaXQgb3ZlcmxhcHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0
aGUgc2Vjb25kIHJ1bGUuCisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgienp6Oi8vd3d3LmN5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0
KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jYXl5eS54eHgv
IiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgienp6Oi8vd3d3LmNieXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFy
Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuY2N5eXkueHh4LyIpLCB7
IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
Inp6ejovL3d3dy5jZHl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmNleXl5Lnh4eC8iKSwgeyB9KTsK
KyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6
Ly93d3cuY2Z5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jZ3l5eS54eHgvIiksIHsgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFy
Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuY2h5eXkueHh4LyIpLCB7
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBD
b250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1
ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jaXl5eS54
eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2Vs
ZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAg
dGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3
LmNqeXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxh
eU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuY2t5eXkueHh4LyIpLCB7IH0pOworCisgICAgLy8gJ2Qn
IGlzIGluIHRoZSBmaXJzdCByYW5nZSBvZiBib3RoIHJ1bGUuIFRoaXMgc2VyaWVzIGNvdmVyIG92
ZXJsYXBzIGJldHdlZW4gdGhlIHR3byBydWxlcy4KKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZGd5eXkueHh4LyIpLCB7IENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qo
c2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmRkZ3l5eS54eHgv
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0
ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cu
ZGRoeXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxh
eU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9
KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6
eno6Ly93d3cuZGRoaHl5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6
OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpC
bG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgienp6Oi8vd3d3LmRlZ3l5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFj
dGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZGVoeXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0
ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJj
aEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kZmd5eXkueHh4LyIpLCB7
IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
Inp6ejovL3d3dy5kZmh5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kanl5eS54eHgvIiksIHsgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7Cisg
ICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8v
d3d3LmRkanl5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rp
c3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmRkamp5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRl
bnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworfQorCiB9IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvREZBTWluaW1pemVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9ERkFNaW5pbWl6ZXIuY3BwCmluZGV4IDNkNDBjYjAwNWI3NmJkMTdiZGYyZWUx
MGE1MzU1YTlmNzU1ZGIyNzguLmVlMzIxYjdmOWVhNzRkMGM2ZmVkYjg5ZDhjYjJjZjQ1ZWM3ZGNm
N2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ERkFNaW5p
bWl6ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ERkFNaW5p
bWl6ZXIuY3BwCkBAIC04Myw3ICs4Myw3IEBAIFRFU1RfRihERkFNaW5pbWl6ZXJUZXN0LCBGYWxs
YmFja1RyYW5zaXRpb25zVG9PdGhlck5vZGVJblNhbWVHcm91cERvZXNOb3REaWZmZXJlCiAgICAg
Q29udGVudEV4dGVuc2lvbnM6OkRGQSBkZmEgPSBidWlsZERGQUZyb21QYXR0ZXJucyh7ICJeYWFj
IiwgIl5hLmMiLCAiXmIuYyJ9KTsKICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90Pig5
KSwgY291bnRMaXZlTm9kZXMoZGZhKSk7CiAgICAgZGZhLm1pbmltaXplKCk7Ci0gICAgRVhQRUNU
X0VRKHN0YXRpY19jYXN0PHNpemVfdD4oNSksIGNvdW50TGl2ZU5vZGVzKGRmYSkpOworICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDQpLCBjb3VudExpdmVOb2RlcyhkZmEpKTsKIH0K
IAogVEVTVF9GKERGQU1pbmltaXplclRlc3QsIFNpbXBsZUZhbGxCYWNrVHJhbnNpdGlvbkRpZmZl
cmVudGlhdG9yMSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256227</attachid>
            <date>2015-07-06 11:50:23 -0700</date>
            <delta_ts>2015-07-06 14:07:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146575-20150706114925.patch</filename>
            <type>text/plain</type>
            <size>128938</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NjM2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1NyBAQAorMjAxNS0wNy0wNiAgQmVuamFt
aW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQgRXh0
ZW5zaW9uc10gTWFrZSB0aGUgREZBIHRyYW5zaXRpb25zIHJhbmdlcyBpbnN0ZWFkIG9mIGNoYXJh
Y3RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NjU3NQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAg
VGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBERkEgYW5kIGNvZGUgdXNpbmcgdGhlIERGQSB0byB1c2Ug
cmFuZ2VzCisgICAgICAgIHRvIHJlcHJlc2VudCB0aGUgdHJhbnNpdGlvbnMgYmV0d2VlbiBhbnkg
dHdvIG5vZGVzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYnVpbGRzIG9uIHRvcCBvZiB0aGUgdG9v
bHMgaW50cm9kdWNlZCBpbiByMTg2MDc5LgorCisgICAgICAgIFRoZSBERkEgc3RydWN0dXJlIGlz
IGJhc2ljYWxseSB0aGUgc2FtZSBhcyBJbW11dGFibGVORkEgYnV0IHdpdGhvdXQKKyAgICAgICAg
YW55IGVwc2lsb24gdHJhbnNpdGlvbnMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2Vz
IGEgdHJhbnNpdGlvbiBpdGVyYXRvciB0byBtYWtlIHRoZSBERkEKKyAgICAgICAgY29tcGF0aWJs
ZSB3aXRoIHRoZSBleGlzdGluZyBhbGdvcml0aG1zLgorCisgICAgICAgIC0tLQorCisgICAgICAg
IFRoZSBERkEgY29tYmluZXIgaXMgcmVidWlsdCBvbiB0b3Agb2YgTXV0YWJsZVJhbmdlTGlzdC4g
Q29tYmluaW5nIHRoZSB0cmFuc2l0aW9ucworICAgICAgICBvZiB0d28gbm9kZXMgaXMgb25lIGJ5
IG1lcmdpbmcgdGhlIHJhbmdlIGxpc3Qgb2YgZWFjaCBub3QgaW50byBhIGNvbW1vbgorICAgICAg
ICBNdXRhYmxlUmFuZ2VMaXN0LgorICAgICAgICBUaGUgZGF0YSBjb252ZXJ0ZXIgdGFrZXMgY2Fy
ZSBvZiBjcmVhdGluZyB0aGUgc2lnbmF0dXJlIG9mIHRoZSBjb21iaW5hdGlvbi4KKworICAgICAg
ICBUaGUgY29kZSBnb3Qgc2ltcGxlciBzaW5jZSBNdXRhYmxlUmFuZ2VMaXN0IGRvZXMgbW9zdCBv
ZiB0aGUgd29yayBub3cuIEl0IGlzIGFsc28KKyAgICAgICAgbXVjaCBmYXN0ZXIuCisKKyAgICAg
ICAgLS0tCisKKyAgICAgICAgVGhlIG1pbmltaXplciBpcyBtb3JlIGludGVyc3RpbmcuCisKKyAg
ICAgICAgV2l0aCB0aGUgY3VycmVudCBhbGdvcml0aG0sIHdlIGNhbm5vdCByZXNvbHZlIG92ZXJs
YXBzIGJldHdlZW4gcmFuZ2VzLiBPbiB0aGUgb3RoZXIKKyAgICAgICAgaGFuZCwgdGhlIG1pbmlt
aXplciBkb2VzIG5vdCBjYXJlIGFib3V0IHRoZSBzeW1ib2wgb2YgdGhlIHRyYW5zaXRpb25zIGlm
IHdlIGFyZSBjYXJlZnVsCisgICAgICAgIHRvIHBhcnRpdGlvbiB0cmFuc2l0aW9ucyBvZiB0aGUg
c2FtZSBzeW1ib2wgdG9nZXRoZXIuCisKKyAgICAgICAgV2hhdCBJIGRpZCB3YXMgdG8gdHVybiB0
aGUgbWluaW1pemVyIGludG8gYSBwdXJlIHRyYW5zaXRpb24gYmFzZWQgb25lLCBCVVQgZWFjaAor
ICAgICAgICAic3ltYm9sIiBpcyBhY3R1YWxseSBhbiB1bmJyZWFrYWJsZSByYW5nZS4KKworICAg
ICAgICBUaGUgZmlyc3Qgc3RlcCBpcyB0byBnbyBvdmVyIGFsbCB0aGUgdHJhbnNpdGlvbnMgb2Yg
YWxsIHRoZSBub2RlcyBhbmQgZmluZCB0aGUgbGFyZ2VzdAorICAgICAgICByYW5nZXMgc3VjaCB0
aGF0IHRoZSBhbHBoYWJldCBvZiBpbnRlcmVzdCBpcyBjb3ZlcmVkIGJ1dCB0aGVyZSBpcyBub3Qg
YSBzaW5nbGUgaW50ZXJzZWN0aW9uCisgICAgICAgIGJldHdlZW4gYW55IHR3byBub2RlcyAod2hh
dCBJIGNhbGxlZCAic2luZ3VsYXIgdHJhbnNpdGlvbnMiIGluIHRoZSBjb2RlKS4gCisKKyAgICAg
ICAgVGhpcyBjYW4gYmUgZG9uZSBlZmZpY2llbnRseSB3aXRoIE11dGFibGVSYW5nZUxpc3QuCisg
ICAgICAgIEEgbGl0dGxlIHRyaWNrIHRoZXJlIGlzIHRoYXQgSSBhbHNvIHVzZWQgdGhlIGNvbnZl
cnRlciB0byBjb3VudCBob3cgbWFueSByZWFsIHRyYW5zaXRpb24KKyAgICAgICAgb3ZlcmFsYXBz
IGFueSBzaW5ndWxhciB0cmFuc2l0aW9uLgorCisgICAgICAgIFRob3NlIHNpbmd1bGFyIHRyYW5z
aXRpb25zIGJlY29tZSB0aGUgYWxwaGFiZXQgb2Ygb3VyIG1pbmltaXplci4gVGhlICJzeW1ib2wi
IG9mIG91ciBhbHBoYWJldAorICAgICAgICBpcyBzaW1wbHkgdGhlIHBvc2l0aW9uIG9mIHRoZSBz
aW5ndWxhciB0cmFuc2l0aW9uIGluIHRoZSBsaXN0LgorCisgICAgICAgIFRoZSBwYXJ0aXRpb24g
b2YgdHJhbnNpdGlvbiBpcyBjcmVhdGVkIGJ5IHBvcHVsYXRpbmcgZWFjaCBzZXQgd2l0aCBhbGwg
dGhlIHRyYW5zaXRpb24gdGhhdAorICAgICAgICBvdmVybGFwcyB0aGUgc3ltYm9scy4KKyAgICAg
ICAgTm90ZSB0aGF0IHNpbmNlIHRoZSBwYXJ0aXRpb24gaXMgY3JlYXRlZCBvbiB0aGUgZmx5LCB0
aGUgVHJhbnNpdGlvbiBzdHJ1Y3R1cmUgdXNlZCBmb3IKKyAgICAgICAgcmVwYXJ0aXRpb25pbmcg
b25seSBjb250YWlucyB0aGUgc291cmNlIG9mIHRoZSB0cmFuc2l0aW9ucy4KKworICAgICAgICBP
bmNlIG91ciB0cmFuc2l0aW9uIHBhcml0aW9uIGhhcyBiZWVuIGNhcmVmdWx5IGNyZWF0ZWQsIHdl
IGNhbiBjb21wbGV0ZWx5IGZvcmdldCBhYm91dAorICAgICAgICB0aGUgc3ltYm9scyBhbmQgb25s
eSB3b3JrIHdpdGggc3Vic2V0cy4KKworICAgICAgICBTaW5jZSB0aGUgc2luZ3VsYXIgdHJhbnNp
dGlvbnMgaGF2ZSBubyBvdmVybGFwICh1bmxpa2UgZmFsbGJhY2sgdHJhbnNpdGlvbnMpLCB0aGlz
IG5ldyBtaW5pbWl6ZXIKKyAgICAgICAgd2lsbCBmaW5kIHRoZSBtaW5pbWlhbCBzb2x1dGlvbiBm
b3Igd2VsbCBmb3JtZWQgaW5wdXQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvREZBLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkE6Om1lbW9yeVVzZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OnByaW50VHJhbnNpdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OmFjdGlvbnMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OnRyYW5zaXRp
b25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFO
b2RlOjpmYWxsYmFja1RyYW5zaXRpb25EZXN0aW5hdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6Y2hhbmdlRmFsbGJhY2tUcmFuc2l0
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFO
b2RlOjphZGRGYWxsYmFja1RyYW5zaXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OmNvbnRhaW5zVHJhbnNpdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6a2lsbCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBOjpkZWJ1Z1By
aW50RG90KTogRGVsZXRlZC4KKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjpDb25zdFJhbmdlSXRl
cmF0b3I6OnJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFO
b2RlOjpDb25zdFJhbmdlSXRlcmF0b3I6OnRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6UmFuZ2VJdGVyYXRvcjo6cmFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OlJhbmdlSXRlcmF0b3I6OnRhcmdl
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6UmFuZ2VJ
dGVyYXRvcjo6cmVzZXRUYXJnZXQpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5
dGVjb2RlQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OkRGQUJ5dGVjb2RlQ29tcGlsZXI6OnJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVDb21waWxlcjo6bm9kZVRyYW5zaXRpb25zTWF4Qnl0ZWNv
ZGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29k
ZUNvbXBpbGVyOjpjb21waWxlTm9kZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiBjb250ZW50ZXh0
ZW5zaW9ucy9ERkFDb21iaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6REZBTWVyZ2VyOjpUYXJnZXRDb252ZXJ0ZXI6OmNvbnZlcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU1lcmdlcjo6VGFyZ2V0Q29udmVydGVyOjpleHRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU1lcmdlcjo6VGFy
Z2V0Q29udmVydGVyOjpzZXRIYWxmU2lnbmF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpERkFNZXJnZXI6Om1lcmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpERkFNZXJnZXI6OmdldE9yQ3JlYXRlQ29tYmluZWROb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFNZXJnZXI6OnNldEhhbGZTaWduYXR1
cmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU1l
cmdlcjo6cG9wdWxhdGVUcmFuc2l0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6REZBTWVyZ2VyOjpwb3B1bGF0ZUZyb21GYWxsYmFja1RyYW5zaXRp
b25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFN
ZXJnZXI6OmNyZWF0ZVRyYW5zaXRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpERkFNZXJnZXI6OmNyZWF0ZUZhbGxiYWNrVHJhbnNpdGlvbklmTmVl
ZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFNaW5pbWl6ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU1pbmltaXplcjo6
bWluaW1pemUpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQU5vZGUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjphY3Rpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjpjb250YWlu
c1RyYW5zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5v
ZGU6OmtpbGwpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6
OmNhblVzZUZhbGxiYWNrVHJhbnNpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6REZBTm9kZTo6YmVzdEZhbGxiYWNrVGFyZ2V0KToKKyAgICAgICAgKiBjb250ZW50
ZXh0ZW5zaW9ucy9ERkFOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6Q2hhclJhbmdlOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpERkFOb2RlOjpDb25zdFJhbmdlSXRlcmF0b3I6Om9wZXJhdG9yKik6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjpvcGVy
YXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjpD
b25zdFJhbmdlSXRlcmF0b3I6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkRGQU5vZGU6OkNvbnN0UmFuZ2VJdGVyYXRvcjo6b3BlcmF0b3IrKyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6Q29uc3RSYW5nZUl0
ZXJhdG9yOjpmaXJzdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZB
Tm9kZTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjpsYXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpERkFOb2RlOjpDb25zdFJhbmdlSXRlcmF0b3I6OmRhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6Okl0ZXJhYmxlQ29uc3RSYW5n
ZTo6YmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6
Okl0ZXJhYmxlQ29uc3RSYW5nZTo6ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpERkFOb2RlOjp0cmFuc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6REZBTm9kZTo6UmFuZ2VJdGVyYXRvcjo6b3BlcmF0b3IqKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjpSYW5nZUl0ZXJhdG9yOjpvcGVy
YXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjpS
YW5nZUl0ZXJhdG9yOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpERkFOb2RlOjpSYW5nZUl0ZXJhdG9yOjpvcGVyYXRvcisrKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjpSYW5nZUl0ZXJhdG9yOjpmaXJzdCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6UmFuZ2VJdGVy
YXRvcjo6bGFzdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9k
ZTo6UmFuZ2VJdGVyYXRvcjo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6REZBTm9kZTo6SXRlcmFibGVSYW5nZTo6YmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6Okl0ZXJhYmxlUmFuZ2U6OmVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6aGFzRmFsbGJhY2tUcmFuc2l0
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFO
b2RlOjp0cmFuc2l0aW9uc0xlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6dHJhbnNpdGlvbnNTdGFydCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6cmVzZXRUcmFuc2l0aW9u
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9k
ZTo6c2V0SGFzRmFsbGJhY2tUcmFuc2l0aW9uV2l0aG91dENoYW5naW5nREZBKTogRGVsZXRlZC4K
KyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9JbW11dGFibGVORkEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFibGVORkE6OkNvbnN0UmFuZ2VJdGVyYXRv
cjo6Zmlyc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkltbXV0YWJs
ZU5GQTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjpsYXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpJbW11dGFibGVORkE6OkNvbnN0UmFuZ2VJdGVyYXRvcjo6ZGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBOjpDb25zdFJh
bmdlSXRlcmF0b3I6OnJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpJbW11dGFibGVORkE6OkNvbnN0UmFuZ2VJdGVyYXRvcjo6b3BlcmF0b3IqKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFibGVORkE6OkNvbnN0
UmFuZ2VJdGVyYXRvcjo6b3BlcmF0b3ItPik6IERlbGV0ZWQuCisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpJbW11dGFibGVORkFOb2RlQnVpbGRlcjo6RmFrZVJhbmdlSXRlcmF0
b3I6OmZpcnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFi
bGVORkFOb2RlQnVpbGRlcjo6RmFrZVJhbmdlSXRlcmF0b3I6Omxhc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkltbXV0YWJsZU5GQU5vZGVCdWlsZGVyOjpGYWtlUmFu
Z2VJdGVyYXRvcjo6b3BlcmF0b3IqKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpJbW11dGFibGVORkFOb2RlQnVpbGRlcjo6RmFrZVJhbmdlSXRlcmF0b3I6
Om9wZXJhdG9yLT4pOiBEZWxldGVkLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL011dGFi
bGVSYW5nZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok11dGFibGVS
YW5nZTo6c2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvTXV0YWJs
ZVJhbmdlTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok11dGFi
bGVSYW5nZUxpc3Q6OkNvbnN0SXRlcmF0b3I6OmZpcnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpNdXRhYmxlUmFuZ2VMaXN0OjpDb25zdEl0ZXJhdG9yOjpsYXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpNdXRhYmxlUmFuZ2VMaXN0OjpD
b25zdEl0ZXJhdG9yOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpNdXRhYmxlUmFuZ2VMaXN0OjpleHRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6Ok11dGFibGVSYW5nZUxpc3Q6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6Ok11dGFibGVSYW5nZUxpc3Q6OmluaXRpYWxpemVGcm9tKToKKyAgICAg
ICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6TkZBVG9ERkE6OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OmNhblVzZUZhbGxiYWNrVHJhbnNpdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6ZmluZEJlc3RGYWxsYmFja1Rhcmdl
dCk6IERlbGV0ZWQuCisKIDIwMTUtMDctMDYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW01hY10gSW5hY3RpdmUgQWlyUGxheSByb3V0ZSBzaG91bGQg
YXV0b21hdGljYWxseSB0aW1lb3V0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODYzNjIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTEwMzEsNiArMTAzMSw3IEBACiAJCTI2QzE1Q0Y3MTg1N0UxNUUwMEYxNUMwMyAvKiBSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkMxNUNGNTE4NTdF
MTVEMDBGMTVDMDMgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZS5oICovOyB9OwogCQkyNkMxN0EzRTE0OTFEMkQ0MDBEMTJCQTIgLyogRmls
ZVN5c3RlbUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMjZDMTdBM0MxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1JT1MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyNkMxN0EzRjE0OTFEMkQ0
MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDI2QzE3QTNEMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVt
SU9TLm1tICovOyB9OworCQkyNkQ0RTg0NjFCNDI1MzlEMDBFMDMzQTIgLyogREZBTm9kZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkQ0RTg0NTFC
NDI1MzlEMDBFMDMzQTIgLyogREZBTm9kZS5jcHAgKi87IH07CiAJCTI2RTk0NEQ4MUFDNEIyREQw
MDdCODVCNSAvKiBDb21iaW5lZFVSTEZpbHRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZFOTQ0RDQxQUM0QjJERDAwN0I4NUI1IC8qIENvbWJp
bmVkVVJMRmlsdGVycy5jcHAgKi87IH07CiAJCTI2RTk0NEQ5MUFDNEIyREQwMDdCODVCNSAvKiBD
b21iaW5lZFVSTEZpbHRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI2RTk0NEQ1MUFDNEIyREQwMDdCODVCNSAvKiBDb21iaW5lZFVSTEZpbHRlcnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyNkU5
NDRERDFBQzRCNEVBMDA3Qjg1QjUgLyogVGVybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjZFOTQ0REMxQUM0QjRFQTAwN0I4NUI1IC8qIFRlcm0uaCAq
LzsgfTsKQEAgLTgxODAsNiArODE4MSw3IEBACiAJCTI2QzE1Q0Y1MTg1N0UxNUQwMEYxNUMwMyAv
KiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMjZDMTdBM0MxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1JT1MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbUlPUy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyNkMxN0EzRDE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5
c3RlbUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbGVT
eXN0ZW1JT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2RDRFODQ1MUI0MjUz
OUQwMEUwMzNBMiAvKiBERkFOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERGQU5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkU5NDRE
NDFBQzRCMkREMDA3Qjg1QjUgLyogQ29tYmluZWRVUkxGaWx0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbWJpbmVkVVJMRmlsdGVycy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2RTk0NEQ1MUFDNEIyREQwMDdCODVCNSAvKiBDb21iaW5l
ZFVSTEZpbHRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tYmluZWRV
UkxGaWx0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2RTk0NERDMUFDNEI0
RUEwMDdCODVCNSAvKiBUZXJtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRl
cm0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NzA2LDYgKzE1NzA4LDcgQEAK
IAkJCQkyNkE4MDc4MzFCMThGOTc3MDBFMjE5QkUgLyogREZBQ29tYmluZXIuaCAqLywKIAkJCQky
NkE1MTdGQjFBQjkyMjM4MDA2MzM1REYgLyogREZBTWluaW1pemVyLmNwcCAqLywKIAkJCQkyNkE1
MTdGQzFBQjkyMjM4MDA2MzM1REYgLyogREZBTWluaW1pemVyLmggKi8sCisJCQkJMjZENEU4NDUx
QjQyNTM5RDAwRTAzM0EyIC8qIERGQU5vZGUuY3BwICovLAogCQkJCTI2NzcyNUY5MUE1QjNBRDkw
MDNDMjRERCAvKiBERkFOb2RlLmggKi8sCiAJCQkJMjZGNzU2QjIxQjNCNjZGNzAwMDVERDc5IC8q
IEltbXV0YWJsZU5GQS5oICovLAogCQkJCTI2Rjc1NkI0MUIzQjY4RjIwMDA1REQ3OSAvKiBJbW11
dGFibGVORkFOb2RlQnVpbGRlci5oICovLApAQCAtMzAyNTAsNiArMzAyNTMsNyBAQAogCQkJCUIy
QTFGMkFEMENFRjBBQkYwMDQ0MkY2QSAvKiBTVkdHbHlwaEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMjREOTEyQkQxM0NBOUE5NzAwRDIxOTE1IC8qIFNWR0dseXBoUmVmRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0EyOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHR3Jh
ZGllbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI2RDRFODQ2MUI0MjUzOUQwMEUw
MzNBMiAvKiBERkFOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QUI1MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdHcmFwaGljc0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjUw
RkJGMkEwRDlBRjA0NzAwOEZDMjkyIC8qIFNWR0hLZXJuRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMjU1OTlBMzBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHSW1hZ2UuY3BwIGluIFNvdXJj
ZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQS5jcHAJKHJl
dmlzaW9uIDE4NjM2MikKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDg5ICs0NiwxMSBAQCBzaXplX3QgREZBOjptZW1vcnlV
c2VkKCkgY29uc3QKIHsKICAgICByZXR1cm4gc2l6ZW9mKERGQSkKICAgICAgICAgKyBhY3Rpb25z
LmNhcGFjaXR5KCkgKiBzaXplb2YodWludDY0X3QpCi0gICAgICAgICsgdHJhbnNpdGlvbkNoYXJh
Y3RlcnMuY2FwYWNpdHkoKSAqIHNpemVvZih1aW50OF90KQorICAgICAgICArIHRyYW5zaXRpb25S
YW5nZXMuY2FwYWNpdHkoKSAqIHNpemVvZihDaGFyUmFuZ2UpCiAgICAgICAgICsgdHJhbnNpdGlv
bkRlc3RpbmF0aW9ucy5jYXBhY2l0eSgpICogc2l6ZW9mKHVpbnQzMl90KQogICAgICAgICArIG5v
ZGVzLmNhcGFjaXR5KCkgKiBzaXplb2YoREZBTm9kZSk7CiB9CiAKLS8vIEZJWE1FOiBNYWtlIERG
QU5vZGUuY3BwLgotVmVjdG9yPHVpbnQ2NF90PiBERkFOb2RlOjphY3Rpb25zKGNvbnN0IERGQSYg
ZGZhKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBVc2UgaXRlcmF0b3JzIGluc3RlYWQgb2YgY29w
eWluZyB0aGUgVmVjdG9yIGVsZW1lbnRzLgotICAgIFZlY3Rvcjx1aW50NjRfdD4gdmVjdG9yOwot
ICAgIHZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fYWN0aW9uc0xlbmd0aCk7Ci0gICAg
Zm9yICh1aW50MzJfdCBpID0gbV9hY3Rpb25zU3RhcnQ7IGkgPCBtX2FjdGlvbnNTdGFydCArIG1f
YWN0aW9uc0xlbmd0aDsgKytpKQotICAgICAgICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKGRmYS5h
Y3Rpb25zW2ldKTsKLSAgICByZXR1cm4gdmVjdG9yOwotfQotICAgIAotVmVjdG9yPHN0ZDo6cGFp
cjx1aW50OF90LCB1aW50MzJfdD4+IERGQU5vZGU6OnRyYW5zaXRpb25zKGNvbnN0IERGQSYgZGZh
KSBjb25zdAotewotICAgIC8vIEZJWE1FOiBVc2UgaXRlcmF0b3JzIGluc3RlYWQgb2YgY29weWlu
ZyB0aGUgVmVjdG9yIGVsZW1lbnRzLgotICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWludDhfdCwgdWlu
dDMyX3Q+PiB2ZWN0b3I7Ci0gICAgdmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodHJhbnNp
dGlvbnNMZW5ndGgoKSk7Ci0gICAgZm9yICh1aW50MzJfdCBpID0gbV90cmFuc2l0aW9uc1N0YXJ0
OyBpIDwgbV90cmFuc2l0aW9uc1N0YXJ0ICsgbV90cmFuc2l0aW9uc0xlbmd0aDsgKytpKQotICAg
ICAgICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGRmYS50cmFuc2l0aW9u
Q2hhcmFjdGVyc1tpXSwgZGZhLnRyYW5zaXRpb25EZXN0aW5hdGlvbnNbaV0pKTsKLSAgICByZXR1
cm4gdmVjdG9yOwotfQotCi11aW50MzJfdCBERkFOb2RlOjpmYWxsYmFja1RyYW5zaXRpb25EZXN0
aW5hdGlvbihjb25zdCBERkEmIGRmYSkgY29uc3QKLXsKLSAgICBSRUxFQVNFX0FTU0VSVChoYXNG
YWxsYmFja1RyYW5zaXRpb24oKSk7Ci0KLSAgICAvLyBJZiB0aGVyZSBpcyBhIGZhbGxiYWNrIHRy
YW5zaXRpb24sIGl0IGlzIGp1c3QgYWZ0ZXIgdGhlIG90aGVyIHRyYW5zaXRpb25zIGFuZCBoYXMg
YW4gaW52YWxpZCBBU0NJSSBjaGFyYWN0ZXIgdG8gbWFyayBpdCBhcyBhIGZhbGxiYWNrIHRyYW5z
aXRpb24uCi0gICAgQVNTRVJUKGRmYS50cmFuc2l0aW9uQ2hhcmFjdGVyc1ttX3RyYW5zaXRpb25z
U3RhcnQgKyBtX3RyYW5zaXRpb25zTGVuZ3RoXSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4
X3Q+OjptYXgoKSk7Ci0gICAgcmV0dXJuIGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zW21fdHJh
bnNpdGlvbnNTdGFydCArIG1fdHJhbnNpdGlvbnNMZW5ndGhdOwotfQotCi12b2lkIERGQU5vZGU6
OmNoYW5nZUZhbGxiYWNrVHJhbnNpdGlvbihERkEmIGRmYSwgdWludDMyX3QgbmV3RGVzdGluYXRp
b24pCi17Ci0gICAgUkVMRUFTRV9BU1NFUlQoaGFzRmFsbGJhY2tUcmFuc2l0aW9uKCkpOwotICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJzW21fdHJhbnNpdGlv
bnNTdGFydCArIG1fdHJhbnNpdGlvbnNMZW5ndGhdID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDhfdD46Om1heCgpLCAiV2hlbiBjaGFuZ2luZyBhIGZhbGxiYWNrIHRyYW5zaXRpb24sIHRoZSBm
YWxsYmFjayB0cmFuc2l0aW9uIHNob3VsZCBhbHJlYWR5IGJlIG1hcmtlZCBhcyBzdWNoIik7Ci0g
ICAgZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJzW21fdHJhbnNpdGlvbnNTdGFydCArIG1fdHJhbnNp
dGlvbnNMZW5ndGhdID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWF4KCk7Ci0gICAg
ZGZhLnRyYW5zaXRpb25EZXN0aW5hdGlvbnNbbV90cmFuc2l0aW9uc1N0YXJ0ICsgbV90cmFuc2l0
aW9uc0xlbmd0aF0gPSBuZXdEZXN0aW5hdGlvbjsKLX0KLQotdm9pZCBERkFOb2RlOjphZGRGYWxs
YmFja1RyYW5zaXRpb24oREZBJiBkZmEsIHVpbnQzMl90IGRlc3RpbmF0aW9uKQotewotICAgIFJF
TEVBU0VfQVNTRVJUKGRmYS50cmFuc2l0aW9uQ2hhcmFjdGVycy5zaXplKCkgPT0gZGZhLnRyYW5z
aXRpb25EZXN0aW5hdGlvbnMuc2l6ZSgpKTsKLSAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NB
R0UoZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJzLnNpemUoKSA9PSBtX3RyYW5zaXRpb25zU3RhcnQg
KyBtX3RyYW5zaXRpb25zTGVuZ3RoLCAiQWRkaW5nIGEgZmFsbGJhY2sgdHJhbnNpdGlvbiBzaG91
bGQgb25seSBoYXBwZW4gaWYgdGhlIG5vZGUgaXMgYXQgdGhlIGVuZCIpOwotICAgIGRmYS50cmFu
c2l0aW9uQ2hhcmFjdGVycy5hcHBlbmQoc3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWF4
KCkpOwotICAgIGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zLmFwcGVuZChkZXN0aW5hdGlvbik7
Ci0gICAgQVNTRVJUKCEobV9mbGFncyAmIEhhc0ZhbGxiYWNrVHJhbnNpdGlvbikpOwotICAgIG1f
ZmxhZ3MgfD0gSGFzRmFsbGJhY2tUcmFuc2l0aW9uOwotfQotCi1ib29sIERGQU5vZGU6OmNvbnRh
aW5zVHJhbnNpdGlvbih1aW50OF90IHRyYW5zaXRpb24sIERGQSYgZGZhKQotewotICAgIC8vIENh
bGxlZCBmcm9tIERGQU1pbmltaXplciwgdGhpcyBsb29wcyB0aG91Z2ggYSBtYXhpbXVtIG9mIDEy
OCB0cmFuc2l0aW9ucywgc28gaXQncyBub3QgdG9vIHNsb3cuCi0gICAgQVNTRVJUKG1fdHJhbnNp
dGlvbnNMZW5ndGggPD0gMTI4KTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3RyYW5zaXRpb25z
U3RhcnQ7IGkgPCBtX3RyYW5zaXRpb25zU3RhcnQgKyBtX3RyYW5zaXRpb25zTGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgaWYgKGRmYS50cmFuc2l0aW9uQ2hhcmFjdGVyc1tpXSA9PSB0cmFuc2l0aW9u
KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0K
LSAgICAKLXZvaWQgREZBTm9kZTo6a2lsbChERkEmIGRmYSkKLXsKLSAgICBBU1NFUlQobV9mbGFn
cyAhPSBJc0tpbGxlZCk7Ci0gICAgbV9mbGFncyA9IElzS2lsbGVkOyAvLyBLaWxsZWQgbm9kZXMg
ZG9uJ3QgaGF2ZSBhbnkgb3RoZXIgZmxhZ3MuCi0gICAgCi0gICAgLy8gSW52YWxpZGF0ZSB0aGUg
bm93LXVudXNlZCBtZW1vcnkgaW4gdGhlIERGQSB0byBtYWtlIGZpbmRpbmcgYnVncyBlYXNpZXIu
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbV90cmFuc2l0aW9uc1N0YXJ0OyBpIDwgbV90cmFuc2l0
aW9uc1N0YXJ0ICsgbV90cmFuc2l0aW9uc0xlbmd0aDsgKytpKSB7Ci0gICAgICAgIGRmYS50cmFu
c2l0aW9uQ2hhcmFjdGVyc1tpXSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDhfdD46Om1heCgp
OwotICAgICAgICBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9uc1tpXSA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDMyX3Q+OjptYXgoKTsKLSAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9h
Y3Rpb25zU3RhcnQ7IGkgPCBtX2FjdGlvbnNTdGFydCArIG1fYWN0aW9uc0xlbmd0aDsgKytpKQot
ICAgICAgICBkZmEuYWN0aW9uc1tpXSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+Ojpt
YXgoKTsKLQotICAgIG1fYWN0aW9uc1N0YXJ0ID0gMDsKLSAgICBtX2FjdGlvbnNMZW5ndGggPSAw
OwotICAgIG1fdHJhbnNpdGlvbnNTdGFydCA9IDA7Ci0gICAgbV90cmFuc2l0aW9uc0xlbmd0aCA9
IDA7Ci19OwotCiB2b2lkIERGQTo6bWluaW1pemUoKQogewogICAgIERGQU1pbmltaXplcjo6bWlu
aW1pemUoKnRoaXMpOwpAQCAtMTY1LDE3ICs4NywxOCBAQCBzdGF0aWMgdm9pZCBwcmludFRyYW5z
aXRpb25zKGNvbnN0IERGQSYgCiAgICAgY29uc3QgREZBTm9kZSYgc291cmNlTm9kZSA9IGRmYS5u
b2Rlc1tzb3VyY2VOb2RlSWRdOwogICAgIGF1dG8gdHJhbnNpdGlvbnMgPSBzb3VyY2VOb2RlLnRy
YW5zaXRpb25zKGRmYSk7CiAKLSAgICBpZiAodHJhbnNpdGlvbnMuaXNFbXB0eSgpICYmICFzb3Vy
Y2VOb2RlLmhhc0ZhbGxiYWNrVHJhbnNpdGlvbigpKQorICAgIGlmICh0cmFuc2l0aW9ucy5iZWdp
bigpID09IHRyYW5zaXRpb25zLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBIYXNoTWFw
PHVuc2lnbmVkLCBWZWN0b3I8dWludDE2X3Q+LCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiB0cmFuc2l0aW9u
c1BlclRhcmdldDsKIAogICAgIC8vIEZpcnN0LCB3ZSBidWlsZCB0aGUgbGlzdCBvZiB0cmFuc2l0
aW9ucyBjb21pbmcgdG8gZWFjaCB0YXJnZXQgbm9kZS4KICAgICBmb3IgKGNvbnN0IGF1dG8mIHRy
YW5zaXRpb24gOiB0cmFuc2l0aW9ucykgewotICAgICAgICB1bnNpZ25lZCB0YXJnZXQgPSB0cmFu
c2l0aW9uLnNlY29uZDsKKyAgICAgICAgdW5zaWduZWQgdGFyZ2V0ID0gdHJhbnNpdGlvbi50YXJn
ZXQoKTsKICAgICAgICAgdHJhbnNpdGlvbnNQZXJUYXJnZXQuYWRkKHRhcmdldCwgVmVjdG9yPHVp
bnQxNl90PigpKTsKIAotICAgICAgICB0cmFuc2l0aW9uc1BlclRhcmdldC5maW5kKHRhcmdldCkt
PnZhbHVlLmFwcGVuZCh0cmFuc2l0aW9uLmZpcnN0KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBv
ZmZzZXQgPSAwOyBvZmZzZXQgPCB0cmFuc2l0aW9uLnJhbmdlKCkuc2l6ZSgpOyArK29mZnNldCkK
KyAgICAgICAgICAgIHRyYW5zaXRpb25zUGVyVGFyZ2V0LmZpbmQodGFyZ2V0KS0+dmFsdWUuYXBw
ZW5kKHRyYW5zaXRpb24uZmlyc3QoKSArIG9mZnNldCk7CiAgICAgfQogCiAgICAgLy8gVGhlbiB3
ZSBnbyBvdmVyIGVhY2ggb25lIGFuIGRpc3BsYXkgdGhlIHJhbmdlcyBvbmUgYnkgb25lLgpAQCAt
MjAyLDkgKzEyNSw2IEBAIHN0YXRpYyB2b2lkIHByaW50VHJhbnNpdGlvbnMoY29uc3QgREZBJiAK
IAogICAgICAgICBkYXRhTG9nRigiXCJdO1xuIik7CiAgICAgfQotCi0gICAgaWYgKHNvdXJjZU5v
ZGUuaGFzRmFsbGJhY2tUcmFuc2l0aW9uKCkpCi0gICAgICAgIGRhdGFMb2dGKCIgICAgICAgICVk
IC0+ICVkIFtsYWJlbD1cIltmYWxsYmFja11cIl07XG4iLCBzb3VyY2VOb2RlSWQsIHNvdXJjZU5v
ZGUuZmFsbGJhY2tUcmFuc2l0aW9uRGVzdGluYXRpb24oZGZhKSk7CiB9CiAKIHZvaWQgREZBOjpk
ZWJ1Z1ByaW50RG90KCkgY29uc3QKQEAgLTIyOCwxNyArMTQ4LDYgQEAgdm9pZCBERkE6OmRlYnVn
UHJpbnREb3QoKSBjb25zdAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgVmVj
dG9yPHVuc2lnbmVkPiBjb3JyZXNwb25kaW5nTkZBTm9kZXMgPSBub2Rlc1tpXS5jb3JyZXNwb25k
aW5nTkZBTm9kZXM7Ci0gICAgICAgIGlmICghY29ycmVzcG9uZGluZ05GQU5vZGVzLmlzRW1wdHko
KSkgewotICAgICAgICAgICAgZGF0YUxvZ0YoIjxCUi8+TkZBIE5vZGVzOiAiKTsKLSAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgY29ycmVzcG9uZGluZ0RGQU5vZGVJbmRleCA9IDA7IGNvcnJlc3Bv
bmRpbmdERkFOb2RlSW5kZXggPCBjb3JyZXNwb25kaW5nTkZBTm9kZXMuc2l6ZSgpOyArK2NvcnJl
c3BvbmRpbmdERkFOb2RlSW5kZXgpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29ycmVzcG9uZGlu
Z0RGQU5vZGVJbmRleCkKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiwgIik7Ci0gICAg
ICAgICAgICAgICAgZGF0YUxvZ0YoIiVkIiwgY29ycmVzcG9uZGluZ05GQU5vZGVzW2NvcnJlc3Bv
bmRpbmdERkFOb2RlSW5kZXhdKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBk
YXRhTG9nRigiPl0iKTsKLQogICAgICAgICBpZiAoIWFjdGlvbnMuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgZGF0YUxvZ0YoIiBbc2hhcGU9ZG91YmxlY2lyY2xlXSIpOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkEuaAkocmV2aXNpb24gMTg2MzYyKQorKysgU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE0
ICs0NywzOSBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgREZBIHsKICNpZiBDT05URU5UX0VYVEVO
U0lPTlNfU1RBVEVfTUFDSElORV9ERUJVR0dJTkcKICAgICB2b2lkIGRlYnVnUHJpbnREb3QoKSBj
b25zdDsKICNlbmRpZgotICAgIAorCisgICAgVmVjdG9yPERGQU5vZGU+IG5vZGVzOwogICAgIFZl
Y3Rvcjx1aW50NjRfdD4gYWN0aW9uczsKLSAgICBWZWN0b3I8dWludDhfdD4gdHJhbnNpdGlvbkNo
YXJhY3RlcnM7CisgICAgVmVjdG9yPENoYXJSYW5nZT4gdHJhbnNpdGlvblJhbmdlczsKICAgICBW
ZWN0b3I8dWludDMyX3Q+IHRyYW5zaXRpb25EZXN0aW5hdGlvbnM7Ci0gICAgVmVjdG9yPERGQU5v
ZGU+IG5vZGVzOwogICAgIHVuc2lnbmVkIHJvb3QgeyAwIH07CiB9OwogCitpbmxpbmUgY29uc3Qg
Q2hhclJhbmdlJiBERkFOb2RlOjpDb25zdFJhbmdlSXRlcmF0b3I6OnJhbmdlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZGZhLnRyYW5zaXRpb25SYW5nZXNbcG9zaXRpb25dOworfQorCitpbmxpbmUg
dWludDMyX3QgREZBTm9kZTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjp0YXJnZXQoKSBjb25zdAorewor
ICAgIHJldHVybiBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9uc1twb3NpdGlvbl07Cit9CisKK2lu
bGluZSBjb25zdCBDaGFyUmFuZ2UmIERGQU5vZGU6OlJhbmdlSXRlcmF0b3I6OnJhbmdlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZGZhLnRyYW5zaXRpb25SYW5nZXNbcG9zaXRpb25dOworfQorCitp
bmxpbmUgdWludDMyX3QgREZBTm9kZTo6UmFuZ2VJdGVyYXRvcjo6dGFyZ2V0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZGZhLnRyYW5zaXRpb25EZXN0aW5hdGlvbnNbcG9zaXRpb25dOworfQorCitp
bmxpbmUgdm9pZCBERkFOb2RlOjpSYW5nZUl0ZXJhdG9yOjpyZXNldFRhcmdldCh1aW50MzJfdCBu
ZXdUYXJnZXQpCit7CisgICAgZGZhLnRyYW5zaXRpb25EZXN0aW5hdGlvbnNbcG9zaXRpb25dID0g
bmV3VGFyZ2V0OworfQorCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29t
cGlsZXIuY3BwCShyZXZpc2lvbiAxODYzNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDEw
ICsyMDQsMTggQEAgVmVjdG9yPERGQUJ5dGVjb2RlQ29tcGlsZXI6OlJhbmdlPiBERkFCeQogICAg
IG1lbXNldChkZXN0aW5hdGlvbnMsIDB4ZmYsIHNpemVvZihkZXN0aW5hdGlvbnMpKTsKICAgICBj
b25zdCB1aW50MzJfdCBub0Rlc3RpbmF0aW9uID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJf
dD46Om1heCgpOwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbm9kZS50cmFuc2l0aW9u
cyhtX2RmYSkpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQocGFpci5maXJzdCA8IFdURl9BUlJB
WV9MRU5HVEgoZGVzdGluYXRpb25zKSk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVz
dGluYXRpb25zW3BhaXIuZmlyc3RdID09IG5vRGVzdGluYXRpb24sICJUcmFuc2l0aW9ucyBzaG91
bGQgYmUgdW5pcXVlIik7Ci0gICAgICAgIGRlc3RpbmF0aW9uc1twYWlyLmZpcnN0XSA9IHBhaXIu
c2Vjb25kOworICAgIGJvb2wgY2FuVXNlRmFsbGJhY2tUcmFuc2l0aW9uID0gbm9kZS5jYW5Vc2VG
YWxsYmFja1RyYW5zaXRpb24obV9kZmEpOworICAgIHVpbnQzMl90IGZhbGxiYWNrVHJhbnNpdGlv
blRhcmdldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKKyAgICBpZiAo
Y2FuVXNlRmFsbGJhY2tUcmFuc2l0aW9uKQorICAgICAgICBmYWxsYmFja1RyYW5zaXRpb25UYXJn
ZXQgPSBub2RlLmJlc3RGYWxsYmFja1RhcmdldChtX2RmYSk7CisKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIHRyYW5zaXRpb24gOiBub2RlLnRyYW5zaXRpb25zKG1fZGZhKSkgeworICAgICAgICB1aW50
MzJfdCB0YXJnZXROb2RlSW5kZXggPSB0cmFuc2l0aW9uLnRhcmdldCgpOworICAgICAgICBpZiAo
Y2FuVXNlRmFsbGJhY2tUcmFuc2l0aW9uICYmIGZhbGxiYWNrVHJhbnNpdGlvblRhcmdldCA9PSB0
YXJnZXROb2RlSW5kZXgpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBmb3IgKHVp
bnQxNl90IGkgPSB0cmFuc2l0aW9uLnJhbmdlKCkuZmlyc3Q7IGkgPD0gdHJhbnNpdGlvbi5yYW5n
ZSgpLmxhc3Q7ICsraSkKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uc1tpXSA9IHRhcmdldE5vZGVJ
bmRleDsKICAgICB9CiAKICAgICBWZWN0b3I8UmFuZ2U+IHJhbmdlczsKQEAgLTIxNSw3ICsyMjMs
NiBAQCBWZWN0b3I8REZBQnl0ZWNvZGVDb21waWxlcjo6UmFuZ2U+IERGQUJ5CiAgICAgYm9vbCBo
YXNSYW5nZU1pbiA9IGZhbHNlOwogICAgIGZvciAodWludDhfdCBpID0gMDsgaSA8IDEyODsgaSsr
KSB7CiAgICAgICAgIGlmIChoYXNSYW5nZU1pbikgewotICAgICAgICAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRSghKG5vZGUuaGFzRmFsbGJhY2tUcmFuc2l0aW9uKCkgJiYgbm9kZS5mYWxsYmFja1Ry
YW5zaXRpb25EZXN0aW5hdGlvbihtX2RmYSkgPT0gZGVzdGluYXRpb25zW3JhbmdlTWluXSksICJJ
bmRpdmlkdWFsIHRyYW5zaXRpb25zIHRvIHRoZSBmYWxsYmFjayB0cmFuc2l0aW9ucyBzaG91bGQg
aGF2ZSBiZWVuIGVsaW1pbmF0ZWQgYnkgdGhlIG9wdGltaXplci4iKTsKICAgICAgICAgICAgIGlm
IChkZXN0aW5hdGlvbnNbaV0gIT0gZGVzdGluYXRpb25zW3JhbmdlTWluXSkgewogCiAgICAgICAg
ICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZW5kIG9mIGEgcmFuZ2UuIENoZWNrIGlmIGl0IGNhbiBi
ZSBjYXNlIGluc2Vuc2l0aXZlLgpAQCAtMjYwLDYgKzI2Nyw3IEBAIFZlY3RvcjxERkFCeXRlY29k
ZUNvbXBpbGVyOjpSYW5nZT4gREZBQnkKICAgICAgICAgLy8gSWYgYSByYW5nZSBnb2VzIHRvIDEy
NywgdGhlcmUgd2lsbCBuZXZlciBiZSB2YWx1ZXMgaGlnaGVyIHRoYW4gaXQsIHNvIGNoZWNraW5n
IGZvciBjYXNlLWluc2Vuc2l0aXZlIHJhbmdlcyB3b3VsZCBhbHdheXMgZmFpbC4KICAgICAgICAg
cmFuZ2VzLmFwcGVuZChSYW5nZShyYW5nZU1pbiwgMTI3LCBkZXN0aW5hdGlvbnNbcmFuZ2VNaW5d
LCB0cnVlKSk7CiAgICAgfQorCiAgICAgcmV0dXJuIHJhbmdlczsKIH0KICAgICAKQEAgLTI4OSw3
ICsyOTcsNyBAQCB1bnNpZ25lZCBERkFCeXRlY29kZUNvbXBpbGVyOjpub2RlVHJhbnNpCiAgICAg
dW5zaWduZWQgc2l6ZSA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiByYW5nZSA6IHJhbmdlcyhu
b2RlKSkKICAgICAgICAgc2l6ZSArPSBjaGVja0ZvclJhbmdlTWF4Qnl0ZWNvZGVTaXplKHJhbmdl
KTsKLSAgICBpZiAobm9kZS5oYXNGYWxsYmFja1RyYW5zaXRpb24oKSkKKyAgICBpZiAobm9kZS5j
YW5Vc2VGYWxsYmFja1RyYW5zaXRpb24obV9kZmEpKQogICAgICAgICBzaXplICs9IHNpemVvZihE
RkFCeXRlY29kZUluc3RydWN0aW9uOjpKdW1wKSArIHNpemVvZih1aW50MzJfdCk7CiAgICAgZWxz
ZQogICAgICAgICBzaXplICs9IGluc3RydWN0aW9uU2l6ZVdpdGhBcmd1bWVudHMoREZBQnl0ZWNv
ZGVJbnN0cnVjdGlvbjo6VGVybWluYXRlKTsKQEAgLTMwMyw4ICszMTEsOCBAQCB2b2lkIERGQUJ5
dGVjb2RlQ29tcGlsZXI6OmNvbXBpbGVOb2RlVHJhCiAgICAgCiAgICAgZm9yIChjb25zdCBhdXRv
JiByYW5nZSA6IHJhbmdlcyhub2RlKSkKICAgICAgICAgY29tcGlsZUNoZWNrRm9yUmFuZ2Uobm9k
ZUluZGV4LCByYW5nZSk7Ci0gICAgaWYgKG5vZGUuaGFzRmFsbGJhY2tUcmFuc2l0aW9uKCkpCi0g
ICAgICAgIGVtaXRKdW1wKG5vZGVJbmRleCwgbm9kZS5mYWxsYmFja1RyYW5zaXRpb25EZXN0aW5h
dGlvbihtX2RmYSkpOworICAgIGlmIChub2RlLmNhblVzZUZhbGxiYWNrVHJhbnNpdGlvbihtX2Rm
YSkpCisgICAgICAgIGVtaXRKdW1wKG5vZGVJbmRleCwgbm9kZS5iZXN0RmFsbGJhY2tUYXJnZXQo
bV9kZmEpKTsKICAgICBlbHNlCiAgICAgICAgIGVtaXRUZXJtaW5hdGUoKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQ29tYmluZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUNvbWJpbmVyLmNwcAkocmV2
aXNpb24gMTg2MzYyKQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQ29t
YmluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiREZBQ29tYmluZXIuaCIKIAorI2luY2x1ZGUgIk11dGFibGVSYW5n
ZUxpc3QuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAKQEAgLTM0LDYgKzM1LDM1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBD
b250ZW50RXh0ZW5zaW9ucyB7CiAKIGNsYXNzIERGQU1lcmdlciB7CisgICAgdHlwZWRlZiBNdXRh
YmxlUmFuZ2VMaXN0PGNoYXIsIHVpbnQ2NF90LCAxMjg+IENvbWJpbmVkVHJhbnNpdGlvbnNNdXRh
YmxlUmFuZ2VMaXN0OworCisgICAgZW51bSBjbGFzcyBXaGljaERGQSB7CisgICAgICAgIEEsCisg
ICAgICAgIEIKKyAgICB9OworCisgICAgdGVtcGxhdGU8V2hpY2hERkEgd2hpY2hERkE+CisgICAg
c3RydWN0IFRhcmdldENvbnZlcnRlciB7CisgICAgICAgIHVpbnQ2NF90IGNvbnZlcnQodWludDMy
X3QgdGFyZ2V0KQorICAgICAgICB7CisgICAgICAgICAgICB1aW50NjRfdCB2YWx1ZSA9IDB4ZmZm
ZmZmZmZmZmZmZmZmZjsKKyAgICAgICAgICAgIGV4dGVuZCh2YWx1ZSwgdGFyZ2V0KTsKKyAgICAg
ICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZXh0ZW5kKHVp
bnQ2NF90JiBkZXN0aW5hdGlvbiwgdWludDMyX3QgdGFyZ2V0KQorICAgICAgICB7CisgICAgICAg
ICAgICBzZXRIYWxmU2lnbmF0dXJlKGRlc3RpbmF0aW9uLCB0YXJnZXQpOworICAgICAgICB9Cisg
ICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCBzZXRIYWxmU2lnbmF0dXJlKHVpbnQ2NF90JiBzaWdu
YXR1cmUsIHVpbnQzMl90IHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBz
aGlmdEFtb3VudCA9ICh3aGljaERGQSA9PSBXaGljaERGQTo6QSkgPyAzMiA6IDA7CisgICAgICAg
ICAgICB1aW50NjRfdCBtYXNrID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDB4ZmZmZmZmZmYpIDw8
ICgzMiAtIHNoaWZ0QW1vdW50KTsKKyAgICAgICAgICAgIHNpZ25hdHVyZSA9IChzaWduYXR1cmUg
JiBtYXNrKSB8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1ZSkgPDwgc2hpZnRBbW91bnQ7Cisg
ICAgICAgIH0KKyAgICB9OworCiBwdWJsaWM6CiAgICAgREZBTWVyZ2VyKGNvbnN0IERGQSYgYSwg
Y29uc3QgREZBJiBiKQogICAgICAgICA6IG1fZGZhQShhKQpAQCAtNDksMzIgKzc5LDQwIEBAIHB1
YmxpYzoKICAgICAgICAgdWludDY0X3Qgcm9vdFNpZ25hdHVyZSA9IHNpZ25hdHVyZUZvckluZGlj
ZXMobV9kZmFBLnJvb3QsIG1fZGZhQi5yb290KTsKICAgICAgICAgZ2V0T3JDcmVhdGVDb21iaW5l
ZE5vZGUocm9vdFNpZ25hdHVyZSk7CiAKKyAgICAgICAgQ29tYmluZWRUcmFuc2l0aW9uc011dGFi
bGVSYW5nZUxpc3QgY29tYmluZWRUcmFuc2l0aW9uczsKICAgICAgICAgd2hpbGUgKCFtX3VucHJv
Y2Vzc2VkTm9kZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBtZW1zZXQobV90cmFuc2l0aW9u
VGFyZ2V0cywgMHhmZiwgc2l6ZW9mKG1fdHJhbnNpdGlvblRhcmdldHMpKTsKKyAgICAgICAgICAg
IGNvbWJpbmVkVHJhbnNpdGlvbnMuY2xlYXIoKTsKIAogICAgICAgICAgICAgdWludDY0X3QgdW5w
cm9jZXNzZWROb2RlID0gbV91bnByb2Nlc3NlZE5vZGVzLnRha2VMYXN0KCk7CiAKLSAgICAgICAg
ICAgIC8vIFdlIGNhbm5vdCBjYWNoZSB0aGUgc291cmNlIG5vZGUgaXRzZWxmIHNpbmNlIHdlIG1v
ZGlmeSB0aGUgbWFjaGluZS4gV2Ugb25seSBtYW5pcHVsYXRlIHRoZSBJRHMuCi0gICAgICAgICAg
ICB1aW50MzJfdCBzb3VyY2VOb2RlSWQgPSBtX25vZGVNYXBwaW5nLmdldCh1bnByb2Nlc3NlZE5v
ZGUpOwotCi0gICAgICAgICAgICAvLyBQb3B1bGF0ZSB0aGUgdW5pcXVlIHRyYW5zaXRpb25zLgog
ICAgICAgICAgICAgdWludDMyX3QgaW5kZXhBID0gZXh0cmFjdEluZGV4QSh1bnByb2Nlc3NlZE5v
ZGUpOwotICAgICAgICAgICAgaWYgKGluZGV4QSAhPSBpbnZhbGlkTm9kZUluZGV4KQotICAgICAg
ICAgICAgICAgIHBvcHVsYXRlVHJhbnNpdGlvbnM8V2hpY2hERkE6OkE+KGluZGV4QSk7CisgICAg
ICAgICAgICBpZiAoaW5kZXhBICE9IGludmFsaWROb2RlSW5kZXgpIHsKKyAgICAgICAgICAgICAg
ICBjb25zdCBERkFOb2RlJiBub2RlQSA9IG1fZGZhQS5ub2Rlc1tpbmRleEFdOworICAgICAgICAg
ICAgICAgIGF1dG8gdHJhbnNpdGlvbnNBID0gbm9kZUEudHJhbnNpdGlvbnMobV9kZmFBKTsKKyAg
ICAgICAgICAgICAgICBUYXJnZXRDb252ZXJ0ZXI8V2hpY2hERkE6OkE+IGNvbnZlcnRlckE7Cisg
ICAgICAgICAgICAgICAgY29tYmluZWRUcmFuc2l0aW9ucy5leHRlbmQodHJhbnNpdGlvbnNBLmJl
Z2luKCksIHRyYW5zaXRpb25zQS5lbmQoKSwgY29udmVydGVyQSk7CisgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4QiA9IGV4dHJhY3RJbmRleEIodW5wcm9jZXNzZWRO
b2RlKTsKLSAgICAgICAgICAgIGlmIChpbmRleEIgIT0gaW52YWxpZE5vZGVJbmRleCkKLSAgICAg
ICAgICAgICAgICBwb3B1bGF0ZVRyYW5zaXRpb25zPFdoaWNoREZBOjpCPihpbmRleEIpOworICAg
ICAgICAgICAgaWYgKGluZGV4QiAhPSBpbnZhbGlkTm9kZUluZGV4KSB7CisgICAgICAgICAgICAg
ICAgY29uc3QgREZBTm9kZSYgbm9kZUIgPSBtX2RmYUIubm9kZXNbaW5kZXhCXTsKKyAgICAgICAg
ICAgICAgICBhdXRvIHRyYW5zaXRpb25zQiA9IG5vZGVCLnRyYW5zaXRpb25zKG1fZGZhQik7Cisg
ICAgICAgICAgICAgICAgVGFyZ2V0Q29udmVydGVyPFdoaWNoREZBOjpCPiBjb252ZXJ0ZXJCOwor
ICAgICAgICAgICAgICAgIGNvbWJpbmVkVHJhbnNpdGlvbnMuZXh0ZW5kKHRyYW5zaXRpb25zQi5i
ZWdpbigpLCB0cmFuc2l0aW9uc0IuZW5kKCksIGNvbnZlcnRlckIpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB1bnNpZ25lZCB0cmFuc2l0aW9uc1N0YXJ0ID0gbV9vdXRwdXQudHJhbnNp
dGlvblJhbmdlcy5zaXplKCk7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHJhbmdlIDog
Y29tYmluZWRUcmFuc2l0aW9ucykgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldE5v
ZGVJZCA9IGdldE9yQ3JlYXRlQ29tYmluZWROb2RlKHJhbmdlLmRhdGEpOworICAgICAgICAgICAg
ICAgIG1fb3V0cHV0LnRyYW5zaXRpb25SYW5nZXMuYXBwZW5kKHsgcmFuZ2UuZmlyc3QsIHJhbmdl
Lmxhc3QgfSk7CisgICAgICAgICAgICAgICAgbV9vdXRwdXQudHJhbnNpdGlvbkRlc3RpbmF0aW9u
cy5hcHBlbmQodGFyZ2V0Tm9kZUlkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHVuc2ln
bmVkIHRyYW5zaXRpb25zRW5kID0gbV9vdXRwdXQudHJhbnNpdGlvblJhbmdlcy5zaXplKCk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCB0cmFuc2l0aW9uc0xlbmd0aCA9IHRyYW5zaXRpb25zRW5kIC0g
dHJhbnNpdGlvbnNTdGFydDsKIAotICAgICAgICAgICAgLy8gU3ByZWFkIHRoZSBmYWxsYmFjayB0
cmFuc2l0aW9ucyBvdmVyIHRoZSB1bmlxdWUgdHJhbnNpdGlvbnMgYW5kIGtlZXAgYSByZWZlcmVu
Y2UgdG8gdGhlIGZhbGxiYWNrIHRyYW5zaXRpb24uCi0gICAgICAgICAgICB1aW50NjRfdCBmYWxs
YmFja1RyYW5zaXRpb25TaWduYXR1cmUgPSBzaWduYXR1cmVGb3JJbmRpY2VzKGludmFsaWROb2Rl
SW5kZXgsIGludmFsaWROb2RlSW5kZXgpOwotICAgICAgICAgICAgaWYgKGluZGV4QSAhPSBpbnZh
bGlkTm9kZUluZGV4KQotICAgICAgICAgICAgICAgIHBvcHVsYXRlRnJvbUZhbGxiYWNrVHJhbnNp
dGlvbnM8V2hpY2hERkE6OkE+KGluZGV4QSwgZmFsbGJhY2tUcmFuc2l0aW9uU2lnbmF0dXJlKTsK
LSAgICAgICAgICAgIGlmIChpbmRleEIgIT0gaW52YWxpZE5vZGVJbmRleCkKLSAgICAgICAgICAg
ICAgICBwb3B1bGF0ZUZyb21GYWxsYmFja1RyYW5zaXRpb25zPFdoaWNoREZBOjpCPihpbmRleEIs
IGZhbGxiYWNrVHJhbnNpdGlvblNpZ25hdHVyZSk7Ci0KLSAgICAgICAgICAgIGNyZWF0ZVRyYW5z
aXRpb25zKHNvdXJjZU5vZGVJZCk7Ci0gICAgICAgICAgICBjcmVhdGVGYWxsYmFja1RyYW5zaXRp
b25JZk5lZWRlZChzb3VyY2VOb2RlSWQsIGZhbGxiYWNrVHJhbnNpdGlvblNpZ25hdHVyZSk7Cisg
ICAgICAgICAgICB1aW50MzJfdCBzb3VyY2VOb2RlSWQgPSBtX25vZGVNYXBwaW5nLmdldCh1bnBy
b2Nlc3NlZE5vZGUpOworICAgICAgICAgICAgREZBTm9kZSYgZGZhU291cmNlTm9kZSA9IG1fb3V0
cHV0Lm5vZGVzW3NvdXJjZU5vZGVJZF07CisgICAgICAgICAgICBkZmFTb3VyY2VOb2RlLnNldFRy
YW5zaXRpb25zKHRyYW5zaXRpb25zU3RhcnQsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHRyYW5zaXRp
b25zTGVuZ3RoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fb3V0cHV0OwogICAgIH0K
QEAgLTgyLDExICsxMjAsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHVpbnQzMl90IGludmFs
aWROb2RlSW5kZXggPSAweGZmZmZmZmZmOwogCi0gICAgZW51bSBjbGFzcyBXaGljaERGQSB7Ci0g
ICAgICAgIEEsCi0gICAgICAgIEIKLSAgICB9OwotCiAgICAgc3RhdGljIHVpbnQ2NF90IHNpZ25h
dHVyZUZvckluZGljZXModWludDMyX3QgYUluZGV4LCB1aW50MzJfdCBiSW5kZXgpCiAgICAgewog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFJbmRleCkgPDwgMzIgfCBiSW5k
ZXg7CkBAIC0xMjIsMTQgKzE1NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgdWludDMyX3Qg
YWN0aW9uc1N0YXJ0ID0gbm9kZS5hY3Rpb25zU3RhcnQoKTsKICAgICAgICAgICAgIHVpbnQzMl90
IGFjdGlvbnNFbmQgPSBhY3Rpb25zU3RhcnQgKyBub2RlLmFjdGlvbnNMZW5ndGgoKTsKICAgICAg
ICAgICAgIGZvciAodWludDMyX3QgaSA9IGFjdGlvbnNTdGFydDsgaSA8IGFjdGlvbnNFbmQ7ICsr
aSkKLSAgICAgICAgICAgIGFjdGlvbnMuYWRkKG1fZGZhQS5hY3Rpb25zW2ldKTsKKyAgICAgICAg
ICAgICAgICBhY3Rpb25zLmFkZChtX2RmYUEuYWN0aW9uc1tpXSk7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGluZGV4QiAhPSBpbnZhbGlkTm9kZUluZGV4KSB7CiAgICAgICAgICAgICBjb25zdCBE
RkFOb2RlJiBub2RlID0gbV9kZmFCLm5vZGVzW2luZGV4Ql07CiAgICAgICAgICAgICB1aW50MzJf
dCBhY3Rpb25zU3RhcnQgPSBub2RlLmFjdGlvbnNTdGFydCgpOwogICAgICAgICAgICAgdWludDMy
X3QgYWN0aW9uc0VuZCA9IGFjdGlvbnNTdGFydCArIG5vZGUuYWN0aW9uc0xlbmd0aCgpOwogICAg
ICAgICAgICAgZm9yICh1aW50MzJfdCBpID0gYWN0aW9uc1N0YXJ0OyBpIDwgYWN0aW9uc0VuZDsg
KytpKQotICAgICAgICAgICAgYWN0aW9ucy5hZGQobV9kZmFCLmFjdGlvbnNbaV0pOworICAgICAg
ICAgICAgICAgIGFjdGlvbnMuYWRkKG1fZGZhQi5hY3Rpb25zW2ldKTsKICAgICAgICAgfQogCiAg
ICAgICAgIHVpbnQzMl90IGFjdGlvbnNTdGFydCA9IG1fb3V0cHV0LmFjdGlvbnMuc2l6ZSgpOwpA
QCAtMTQyLDg3ICsxNzUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG5ld05vZGVJbmRl
eDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxXaGljaERGQSB3aGljaERGQT4KLSAgICB2b2lkIHNl
dEhhbGZTaWduYXR1cmUodWludDY0X3QmIHNpZ25hdHVyZSwgdWludDMyX3QgdmFsdWUpCi0gICAg
ewotICAgICAgICB1bnNpZ25lZCBzaGlmdEFtb3VudCA9ICh3aGljaERGQSA9PSBXaGljaERGQTo6
QSkgPyAzMiA6IDA7Ci0gICAgICAgIHVpbnQ2NF90IG1hc2sgPSBzdGF0aWNfY2FzdDx1aW50NjRf
dD4oMHhmZmZmZmZmZikgPDwgKDMyIC0gc2hpZnRBbW91bnQpOwotICAgICAgICBzaWduYXR1cmUg
PSAoc2lnbmF0dXJlICYgbWFzaykgfCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odmFsdWUpIDw8IHNo
aWZ0QW1vdW50OwotICAgIH0KLQotICAgIHRlbXBsYXRlPFdoaWNoREZBIHdoaWNoREZBPgotICAg
IHZvaWQgcG9wdWxhdGVUcmFuc2l0aW9ucyh1aW50MzJfdCBub2RlSW5kZXgpCi0gICAgewotICAg
ICAgICBjb25zdCBERkEmIGRmYSA9ICh3aGljaERGQSA9PSBXaGljaERGQTo6QSkgPyBtX2RmYUEg
OiBtX2RmYUI7Ci0gICAgICAgIGNvbnN0IERGQU5vZGUmIG5vZGUgPSBkZmEubm9kZXNbbm9kZUlu
ZGV4XTsKLSAgICAgICAgdWludDMyX3QgdHJhbnNpdGlvbnNTdGFydCA9IG5vZGUudHJhbnNpdGlv
bnNTdGFydCgpOwotICAgICAgICB1aW50MzJfdCB0cmFuc2l0aW9uc0VuZCA9IHRyYW5zaXRpb25z
U3RhcnQgKyBub2RlLnRyYW5zaXRpb25zTGVuZ3RoKCk7Ci0KLSAgICAgICAgLy8gRXh0cmFjdCB0
cmFuc2l0aW9ucy4KLSAgICAgICAgZm9yICh1aW50MzJfdCB0cmFuc2l0aW9uSW5kZXggPSB0cmFu
c2l0aW9uc1N0YXJ0OyB0cmFuc2l0aW9uSW5kZXggPCB0cmFuc2l0aW9uc0VuZDsgKyt0cmFuc2l0
aW9uSW5kZXgpIHsKLSAgICAgICAgICAgIHVpbnQ4X3QgdHJhbnNpdGlvbkNoYXJhY3RlciA9IGRm
YS50cmFuc2l0aW9uQ2hhcmFjdGVyc1t0cmFuc2l0aW9uSW5kZXhdOwotICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQodHJhbnNpdGlvbkNoYXJhY3RlciA8IFdURl9BUlJBWV9MRU5HVEgobV90cmFu
c2l0aW9uVGFyZ2V0cykpOwotCi0gICAgICAgICAgICB1aW50MzJfdCB0cmFuc2l0aW9uRGVzdGlu
YXRpb24gPSBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9uc1t0cmFuc2l0aW9uSW5kZXhdOwotICAg
ICAgICAgICAgc2V0SGFsZlNpZ25hdHVyZTx3aGljaERGQT4obV90cmFuc2l0aW9uVGFyZ2V0c1t0
cmFuc2l0aW9uQ2hhcmFjdGVyXSwgdHJhbnNpdGlvbkRlc3RpbmF0aW9uKTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIHRlbXBsYXRlPFdoaWNoREZBIHdoaWNoREZBPgotICAgIHZvaWQgcG9wdWxh
dGVGcm9tRmFsbGJhY2tUcmFuc2l0aW9ucyh1aW50MzJfdCBub2RlSW5kZXgsIHVpbnQ2NF90JiBm
YWxsYmFja1RyYW5zaXRpb25TaWduYXR1cmUpCi0gICAgewotICAgICAgICBjb25zdCBERkEmIGRm
YSA9ICh3aGljaERGQSA9PSBXaGljaERGQTo6QSkgPyBtX2RmYUEgOiBtX2RmYUI7Ci0gICAgICAg
IGNvbnN0IERGQU5vZGUmIG5vZGUgPSBkZmEubm9kZXNbbm9kZUluZGV4XTsKLSAgICAgICAgaWYg
KCFub2RlLmhhc0ZhbGxiYWNrVHJhbnNpdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIHVpbnQzMl90IGZhbGxiYWNrVGFyZ2V0ID0gbm9kZS5mYWxsYmFja1RyYW5zaXRpb25E
ZXN0aW5hdGlvbihkZmEpOwotICAgICAgICBzZXRIYWxmU2lnbmF0dXJlPHdoaWNoREZBPihmYWxs
YmFja1RyYW5zaXRpb25TaWduYXR1cmUsIGZhbGxiYWNrVGFyZ2V0KTsKLQotICAgICAgICAvLyBT
cHJlYWQgdGhlIGZhbGxiYWNrIG92ZXIgdHJhbnNpdGlvbnMgd2hlcmUgdGhlIG90aGVyIGhhcyBz
b21ldGhpbmcgYW5kIHdlIGRvbid0LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
V1RGX0FSUkFZX0xFTkdUSChtX3RyYW5zaXRpb25UYXJnZXRzKTsgKytpKSB7Ci0gICAgICAgICAg
ICB1aW50NjRfdCYgdGFyZ2V0U2lnbmF0dXJlID0gbV90cmFuc2l0aW9uVGFyZ2V0c1tpXTsKLQot
ICAgICAgICAgICAgdWludDMyX3Qgb3RoZXJUYXJnZXQgPSAod2hpY2hERkEgPT0gV2hpY2hERkE6
OkEpID8gZXh0cmFjdEluZGV4Qih0YXJnZXRTaWduYXR1cmUpIDogZXh0cmFjdEluZGV4QSh0YXJn
ZXRTaWduYXR1cmUpOwotICAgICAgICAgICAgdWludDMyX3Qgc2VsZlRhcmdldCA9ICh3aGljaERG
QSA9PSBXaGljaERGQTo6QSkgPyBleHRyYWN0SW5kZXhBKHRhcmdldFNpZ25hdHVyZSkgOiBleHRy
YWN0SW5kZXhCKHRhcmdldFNpZ25hdHVyZSk7Ci0KLSAgICAgICAgICAgIGlmIChvdGhlclRhcmdl
dCAhPSBpbnZhbGlkTm9kZUluZGV4ICYmIHNlbGZUYXJnZXQgPT0gaW52YWxpZE5vZGVJbmRleCkK
LSAgICAgICAgICAgICAgICBzZXRIYWxmU2lnbmF0dXJlPHdoaWNoREZBPih0YXJnZXRTaWduYXR1
cmUsIGZhbGxiYWNrVGFyZ2V0KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgY3JlYXRl
VHJhbnNpdGlvbnModWludDMyX3Qgc291cmNlTm9kZUlkKQotICAgIHsKLSAgICAgICAgLy8gQ3Jl
YXRlIHRyYW5zaXRpb25zIG91dCBvZiB0aGUgc291cmNlIG5vZGUsIGNyZWF0aW5nIG5ldyBub2Rl
cyBhcyBuZWVkZWQuCi0gICAgICAgIHVpbnQzMl90IHRyYW5zaXRpb25zU3RhcnQgPSBtX291dHB1
dC50cmFuc2l0aW9uQ2hhcmFjdGVycy5zaXplKCk7Ci0gICAgICAgIGZvciAodWludDhfdCBpID0g
MDsgaSA8IFdURl9BUlJBWV9MRU5HVEgobV90cmFuc2l0aW9uVGFyZ2V0cyk7ICsraSkgewotICAg
ICAgICAgICAgdWludDY0X3Qgc2lnbmF0dXJlID0gbV90cmFuc2l0aW9uVGFyZ2V0c1tpXTsKLSAg
ICAgICAgICAgIGlmIChzaWduYXR1cmUgPT0gc2lnbmF0dXJlRm9ySW5kaWNlcyhpbnZhbGlkTm9k
ZUluZGV4LCBpbnZhbGlkTm9kZUluZGV4KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIHVpbnQzMl90IG5vZGVJZCA9IGdldE9yQ3JlYXRlQ29tYmluZWROb2RlKHNpZ25h
dHVyZSk7Ci0gICAgICAgICAgICBtX291dHB1dC50cmFuc2l0aW9uQ2hhcmFjdGVycy5hcHBlbmQo
aSk7Ci0gICAgICAgICAgICBtX291dHB1dC50cmFuc2l0aW9uRGVzdGluYXRpb25zLmFwcGVuZChu
b2RlSWQpOwotICAgICAgICB9Ci0gICAgICAgIHVpbnQzMl90IHRyYW5zaXRpb25zRW5kID0gbV9v
dXRwdXQudHJhbnNpdGlvbkNoYXJhY3RlcnMuc2l6ZSgpOwotICAgICAgICB1aW50OF90IHRyYW5z
aXRpb25zTGVuZ3RoID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odHJhbnNpdGlvbnNFbmQgLSB0cmFu
c2l0aW9uc1N0YXJ0KTsKLQotICAgICAgICBtX291dHB1dC5ub2Rlc1tzb3VyY2VOb2RlSWRdLnNl
dFRyYW5zaXRpb25zKHRyYW5zaXRpb25zU3RhcnQsIHRyYW5zaXRpb25zTGVuZ3RoKTsKLSAgICB9
Ci0KLSAgICB2b2lkIGNyZWF0ZUZhbGxiYWNrVHJhbnNpdGlvbklmTmVlZGVkKHVpbnQzMl90IHNv
dXJjZU5vZGVJZCwgdWludDY0X3QgZmFsbGJhY2tUcmFuc2l0aW9uU2lnbmF0dXJlKQotICAgIHsK
LSAgICAgICAgaWYgKGZhbGxiYWNrVHJhbnNpdGlvblNpZ25hdHVyZSAhPSBzaWduYXR1cmVGb3JJ
bmRpY2VzKGludmFsaWROb2RlSW5kZXgsIGludmFsaWROb2RlSW5kZXgpKSB7Ci0gICAgICAgICAg
ICB1aW50MzJfdCBub2RlSWQgPSBnZXRPckNyZWF0ZUNvbWJpbmVkTm9kZShmYWxsYmFja1RyYW5z
aXRpb25TaWduYXR1cmUpOwotICAgICAgICAgICAgbV9vdXRwdXQubm9kZXNbc291cmNlTm9kZUlk
XS5hZGRGYWxsYmFja1RyYW5zaXRpb24obV9vdXRwdXQsIG5vZGVJZCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KICAgICBjb25zdCBERkEmIG1fZGZhQTsKICAgICBjb25zdCBERkEmIG1fZGZhQjsKICAg
ICBERkEgbV9vdXRwdXQ7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgdWludDMyX3QsIERlZmF1bHRI
YXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
aW50NjRfdD4+IG1fbm9kZU1hcHBpbmc7CiAgICAgVmVjdG9yPHVpbnQ2NF90PiBtX3VucHJvY2Vz
c2VkTm9kZXM7Ci0gICAgdWludDY0X3QgbV90cmFuc2l0aW9uVGFyZ2V0c1sxMjhdOwogfTsKIAog
dm9pZCBERkFDb21iaW5lcjo6Y29tYmluZURGQXModW5zaWduZWQgbWluaW11bVNpemUsIHN0ZDo6
ZnVuY3Rpb248dm9pZChERkEmJik+IGhhbmRsZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9ERkFNaW5pbWl6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQU1pbmltaXplci5jcHAJKHJldmlzaW9uIDE4NjM2MikK
KysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQU1pbmltaXplci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRGQS5oIgogI2luY2x1
ZGUgIkRGQU5vZGUuaCIKKyNpbmNsdWRlICJNdXRhYmxlUmFuZ2VMaXN0LmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9T
dHJpbmdIYXNoZXIuaD4KQEAgLTQwLDc5ICs0MSwzMiBAQCBuYW1lc3BhY2UgQ29udGVudEV4dGVu
c2lvbnMgewogCiBuYW1lc3BhY2UgewogCi0vLyBzaW1wbGlmeVRyYW5zaXRpb25zKCkgdHJpZXMg
dG8gY29sbGFwc2UgaW5kaXZpZHVhbCB0cmFuc2l0aW9ucyBpbnRvIGZhbGxiYWNrIHRyYW5zaXRp
b25zLgotLy8gQWZ0ZXIgc2ltcGxpZnlUcmFuc2l0aW9ucygpLCB5b3UgY2FuIGFsc28gbWFrZSB0
aGUgYXNzdW1wdGlvbiB0aGF0IGEgZmFsbGJhY2sgdHJhbnNpdGlvbiB0YXJnZXQgd2lsbCBuZXZl
ciBiZQotLy8gYWxzbyB0aGUgdGFyZ2V0IG9mIGFuIGluZGl2aWR1YWwgdHJhbnNpdGlvbi4KLXN0
YXRpYyB2b2lkIHNpbXBsaWZ5VHJhbnNpdGlvbnMoREZBJiBkZmEpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBWZWN0b3JUeXBlLCB0eXBlbmFtZSBJdGVyYWJsZSwgdHlwZW5hbWUgRnVuY3Rpb24+CitzdGF0
aWMgaW5saW5lIHZvaWQgaXRlcmF0ZUludGVyc2VjdGlvbnMoY29uc3QgVmVjdG9yVHlwZSYgc2lu
Z3VsYXJUcmFuc2l0aW9uc0ZpcnN0cywgY29uc3QgSXRlcmFibGUmIGl0ZXJhYmxlVHJhbnNpdGlv
bkxpc3QsIGNvbnN0IEZ1bmN0aW9uJiBpbnRlcnNlY3Rpb25IYW5kbGVyKQogewotICAgIGZvciAo
REZBTm9kZSYgZGZhTm9kZSA6IGRmYS5ub2RlcykgewotICAgICAgICBib29sIGFkZGluZ0ZhbGxi
YWNrID0gZmFsc2U7Ci0gICAgICAgIHVpbnQzMl90IG5ld0ZhbGxiYWNrRGVzdGluYXRpb24gPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7Ci0gICAgICAgIGlmICghZGZhTm9k
ZS5oYXNGYWxsYmFja1RyYW5zaXRpb24oKQotICAgICAgICAgICAgJiYgKChkZmFOb2RlLnRyYW5z
aXRpb25zTGVuZ3RoKCkgPT0gMTI2ICYmICFkZmFOb2RlLmNvbnRhaW5zVHJhbnNpdGlvbigwLCBk
ZmEpKQotICAgICAgICAgICAgICAgIHx8IChkZmFOb2RlLnRyYW5zaXRpb25zTGVuZ3RoKCkgPT0g
MTI3ICYmIGRmYU5vZGUuY29udGFpbnNUcmFuc2l0aW9uKDAsIGRmYSkpKSkgewotICAgICAgICAg
ICAgdW5zaWduZWQgYmVzdFRhcmdldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGJlc3RUYXJnZXRTY29yZSA9IDA7Ci0gICAgICAg
ICAgICBIYXNoTWFwPHVuc2lnbmVkLCB1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpI
YXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gdGFyZ2V0
SGlzdG9ncmFtOwotICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFuc2l0aW9uIDogZGZh
Tm9kZS50cmFuc2l0aW9ucyhkZmEpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCF0cmFuc2l0aW9u
LmZpcnN0KQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHRyYW5zaXRpb25UYXJnZXQgPSB0cmFuc2l0aW9uLnNlY29uZDsKLSAgICAgICAg
ICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IHRhcmdldEhpc3RvZ3JhbS5hZGQodHJhbnNpdGlvblRh
cmdldCwgMSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAg
ICAgICAgICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSsrOwotCi0gICAgICAg
ICAgICAgICAgaWYgKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPiBiZXN0VGFyZ2V0U2NvcmUp
IHsKLSAgICAgICAgICAgICAgICAgICAgYmVzdFRhcmdldFNjb3JlID0gYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgYmVzdFRhcmdldCA9IHRyYW5zaXRpb25U
YXJnZXQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShiZXN0VGFyZ2V0U2NvcmUsICJUaGVyZSBzaG91bGQgYmUgYXQgbGVh
c3Qgb25lIHZhbGlkIHRhcmdldCBzaW5jZSBoYXZpbmcgdHJhbnNpdGlvbnMgaXMgYSBwcmVjb25k
aXRpb24gdG8gZW50ZXIgdGhpcyBwYXRoLiIpOwotCi0gICAgICAgICAgICBuZXdGYWxsYmFja0Rl
c3RpbmF0aW9uID0gYmVzdFRhcmdldDsKLSAgICAgICAgICAgIGFkZGluZ0ZhbGxiYWNrID0gdHJ1
ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gVXNlIHRoZSBzYW1lIGxvY2F0aW9u
IHRvIHdyaXRlIG5ldyB0cmFuc2l0aW9ucyBwb3NzaWJseSBmb2xsb3dlZCBieSB1bnVzZWQgbWVt
b3J5LgotICAgICAgICAvLyBXZSBjYW4gZG8gdGhpcyBiZWNhdXNlIHdlIGFyZSBhbHdheXMgZGVj
cmVhc2luZyB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2VkLgotICAgICAgICAvLyBXZSB3aWxsIHBy
b2JhYmx5IG5lZWQgc29tZXRoaW5nIGxpa2Ugc2V0SGFzRmFsbGJhY2tUcmFuc2l0aW9uV2l0aG91
dENoYW5naW5nREZBIHRvIGRvIHRoYXQuCi0KLSAgICAgICAgdW5zaWduZWQgb2xkRmFsbGJhY2tU
cmFuc2l0aW9uID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpOwotICAgICAg
ICBib29sIGhhZEZhbGxiYWNrVHJhbnNpdGlvbiA9IGRmYU5vZGUuaGFzRmFsbGJhY2tUcmFuc2l0
aW9uKCk7Ci0gICAgICAgIGlmIChoYWRGYWxsYmFja1RyYW5zaXRpb24pCi0gICAgICAgICAgICBv
bGRGYWxsYmFja1RyYW5zaXRpb24gPSBkZmFOb2RlLmZhbGxiYWNrVHJhbnNpdGlvbkRlc3RpbmF0
aW9uKGRmYSk7Ci0gICAgICAgIAotICAgICAgICBuZXdGYWxsYmFja0Rlc3RpbmF0aW9uID0gKG5l
d0ZhbGxiYWNrRGVzdGluYXRpb24gPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1h
eCgpID8gb2xkRmFsbGJhY2tUcmFuc2l0aW9uIDogbmV3RmFsbGJhY2tEZXN0aW5hdGlvbik7Ci0g
ICAgICAgIEFTU0VSVCghYWRkaW5nRmFsbGJhY2sgfHwgKG5ld0ZhbGxiYWNrRGVzdGluYXRpb24g
IT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpICYmIG9sZEZhbGxiYWNrVHJh
bnNpdGlvbiA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpKTsKLSAgICAg
ICAgYm9vbCB3aWxsSGF2ZUZhbGxiYWNrID0gbmV3RmFsbGJhY2tEZXN0aW5hdGlvbiAhPSBzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7Ci0gICAgICAgIGRmYU5vZGUuc2V0SGFz
RmFsbGJhY2tUcmFuc2l0aW9uV2l0aG91dENoYW5naW5nREZBKHdpbGxIYXZlRmFsbGJhY2spOwot
ICAgICAgICAKLSAgICAgICAgaWYgKHdpbGxIYXZlRmFsbGJhY2spIHsKLSAgICAgICAgICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8dWludDhfdCwgdWludDMyX3Q+PiB0cmFuc2l0aW9ucyA9IGRmYU5vZGUu
dHJhbnNpdGlvbnMoZGZhKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGF2YWlsYWJsZVNsb3RDb3Vu
dCA9IHRyYW5zaXRpb25zLnNpemUoKSArIGhhZEZhbGxiYWNrVHJhbnNpdGlvbjsKLSAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0cmFuc2l0aW9ucy5zaXplKCk7ICsraSkgewot
ICAgICAgICAgICAgICAgIGlmICh0cmFuc2l0aW9uc1tpXS5zZWNvbmQgPT0gbmV3RmFsbGJhY2tE
ZXN0aW5hdGlvbikKLSAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnMucmVtb3ZlKGktLSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodHJh
bnNpdGlvbnMuc2l6ZSgpICsgd2lsbEhhdmVGYWxsYmFjayA8PSBhdmFpbGFibGVTbG90Q291bnQp
OwotICAgICAgICAKLSAgICAgICAgICAgIHVuc2lnbmVkIGZpcnN0U2xvdCA9IGRmYU5vZGUudHJh
bnNpdGlvbnNTdGFydCgpOwotICAgICAgICAgICAgZGZhTm9kZS5yZXNldFRyYW5zaXRpb25zKGZp
cnN0U2xvdCwgdHJhbnNpdGlvbnMuc2l6ZSgpKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB0cmFuc2l0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgIGRm
YS50cmFuc2l0aW9uQ2hhcmFjdGVyc1tmaXJzdFNsb3QgKyBpXSA9IHRyYW5zaXRpb25zW2ldLmZp
cnN0OwotICAgICAgICAgICAgICAgIGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zW2ZpcnN0U2xv
dCArIGldID0gdHJhbnNpdGlvbnNbaV0uc2Vjb25kOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gdHJhbnNpdGlvbnMuc2l6ZSgpOyBpIDwgYXZhaWxhYmxlU2xv
dENvdW50OyArK2kpIHsKLSAgICAgICAgICAgICAgICAvLyBJbnZhbGlkYXRlIG5vdy11bnVzZWQg
bWVtb3J5IHRvIG1ha2UgZmluZGluZyBidWdzIGVhc2llci4KLSAgICAgICAgICAgICAgICBkZmEu
dHJhbnNpdGlvbkNoYXJhY3RlcnNbZmlyc3RTbG90ICsgaV0gPSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVpbnQ4X3Q+OjptYXgoKTsKLSAgICAgICAgICAgICAgICBkZmEudHJhbnNpdGlvbkRlc3RpbmF0
aW9uc1tmaXJzdFNsb3QgKyBpXSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgo
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh3aWxsSGF2ZUZhbGxiYWNrKSB7Ci0g
ICAgICAgICAgICAgICAgZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJzW2ZpcnN0U2xvdCArIHRyYW5z
aXRpb25zLnNpemUoKV0gPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgoKTsKLSAg
ICAgICAgICAgICAgICBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9uc1tmaXJzdFNsb3QgKyB0cmFu
c2l0aW9ucy5zaXplKCldID0gbmV3RmFsbGJhY2tEZXN0aW5hdGlvbjsKLSAgICAgICAgICAgIH0K
KyAgICBBU1NFUlQoIXNpbmd1bGFyVHJhbnNpdGlvbnNGaXJzdHMuaXNFbXB0eSgpKTsKKyAgICBh
dXRvIG90aGVySXRlcmF0b3IgPSBpdGVyYWJsZVRyYW5zaXRpb25MaXN0LmJlZ2luKCk7CisgICAg
YXV0byBvdGhlckVuZCA9IGl0ZXJhYmxlVHJhbnNpdGlvbkxpc3QuZW5kKCk7CisKKyAgICBpZiAo
b3RoZXJJdGVyYXRvciA9PSBvdGhlckVuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWdu
ZWQgc2luZ3VsYXJUcmFuc2l0aW9uc0xlbmd0aCA9IHNpbmd1bGFyVHJhbnNpdGlvbnNGaXJzdHMu
c2l6ZSgpOworICAgIHVuc2lnbmVkIHNpbmd1bGFyVHJhbnNpdGlvbnNGaXJzdHNJbmRleCA9IDA7
CisgICAgZm9yICg7IG90aGVySXRlcmF0b3IgIT0gb3RoZXJFbmQ7ICsrb3RoZXJJdGVyYXRvcikg
eworICAgICAgICBhdXRvIGZpcnN0Q2hhcmFjdGVyID0gb3RoZXJJdGVyYXRvci5maXJzdCgpOwor
ICAgICAgICB3aGlsZSAoc2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0c0luZGV4IDwgc2luZ3VsYXJU
cmFuc2l0aW9uc0xlbmd0aAorICAgICAgICAgICAgJiYgc2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0
c1tzaW5ndWxhclRyYW5zaXRpb25zRmlyc3RzSW5kZXhdICE9IGZpcnN0Q2hhcmFjdGVyKQorICAg
ICAgICAgICAgKytzaW5ndWxhclRyYW5zaXRpb25zRmlyc3RzSW5kZXg7CisKKyAgICAgICAgaW50
ZXJzZWN0aW9uSGFuZGxlcihzaW5ndWxhclRyYW5zaXRpb25zRmlyc3RzSW5kZXgsIG90aGVySXRl
cmF0b3IpOworICAgICAgICArK3Npbmd1bGFyVHJhbnNpdGlvbnNGaXJzdHNJbmRleDsKKworICAg
ICAgICBhdXRvIGxhc3RDaGFyYWN0ZXIgPSBvdGhlckl0ZXJhdG9yLmxhc3QoKTsKKyAgICAgICAg
d2hpbGUgKHNpbmd1bGFyVHJhbnNpdGlvbnNGaXJzdHNJbmRleCA8IHNpbmd1bGFyVHJhbnNpdGlv
bnNMZW5ndGgKKyAgICAgICAgICAgICYmIHNpbmd1bGFyVHJhbnNpdGlvbnNGaXJzdHNbc2luZ3Vs
YXJUcmFuc2l0aW9uc0ZpcnN0c0luZGV4XSA8PSBsYXN0Q2hhcmFjdGVyKSB7CisgICAgICAgICAg
ICBpbnRlcnNlY3Rpb25IYW5kbGVyKHNpbmd1bGFyVHJhbnNpdGlvbnNGaXJzdHNJbmRleCwgb3Ro
ZXJJdGVyYXRvcik7CisgICAgICAgICAgICArK3Npbmd1bGFyVHJhbnNpdGlvbnNGaXJzdHNJbmRl
eDsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEzNyw3ICs5MSwzMiBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fc2V0cy5hcHBlbmQoU2V0RGVzY3JpcHRvcih7IDAsIHNpemUsIDAgfSkpOwogICAgIH0K
IAotICAgIHZvaWQgbWFya0VsZW1lbnRJbkN1cnJlbnRHZW5lcmF0aW9uKHVuc2lnbmVkIGVsZW1l
bnRJbmRleCkKKyAgICB2b2lkIHJlc2VydmVVbmluaXRpYWxpemVkQ2FwYWNpdHkodW5zaWduZWQg
ZWxlbWVudENvdW50KQorICAgIHsKKyAgICAgICAgbV9wYXJ0aXRpb25lZEVsZW1lbnRzLnJlc2l6
ZShlbGVtZW50Q291bnQpOworICAgICAgICBtX2VsZW1lbnRQb3NpdGlvbkluUGFydGl0aW9uZWRO
b2Rlcy5yZXNpemUoZWxlbWVudENvdW50KTsKKyAgICAgICAgbV9lbGVtZW50VG9TZXRNYXAucmVz
aXplKGVsZW1lbnRDb3VudCk7CisgICAgfQorCisgICAgdm9pZCBhZGRTZXRVbmNoZWNrZWQodW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIHNpemUpCisgICAgeworICAgICAgICBtX3NldHMuYXBwZW5k
KFNldERlc2NyaXB0b3IgeyBzdGFydCwgc2l6ZSwgMCB9KTsKKyAgICB9CisKKyAgICB2b2lkIHNl
dEVsZW1lbnRVbmNoZWNrZWQodW5zaWduZWQgZWxlbWVudEluZGV4LCB1bnNpZ25lZCBwb3NpdGlv
bkluUGFydGl0aW9uLCB1bnNpZ25lZCBzZXRJbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChz
ZXRJbmRleCA8IG1fc2V0cy5zaXplKCkpOworICAgICAgICBtX3BhcnRpdGlvbmVkRWxlbWVudHNb
cG9zaXRpb25JblBhcnRpdGlvbl0gPSBlbGVtZW50SW5kZXg7CisgICAgICAgIG1fZWxlbWVudFBv
c2l0aW9uSW5QYXJ0aXRpb25lZE5vZGVzW2VsZW1lbnRJbmRleF0gPSBwb3NpdGlvbkluUGFydGl0
aW9uOworICAgICAgICBtX2VsZW1lbnRUb1NldE1hcFtlbGVtZW50SW5kZXhdID0gc2V0SW5kZXg7
CisgICAgfQorCisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXRPZlNldCh1bnNpZ25lZCBzZXRJbmRl
eCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NldHNbc2V0SW5kZXhdLnN0YXJ0Owor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtYXJrRWxlbWVudEluQ3VycmVudEdlbmVy
YXRpb24odW5zaWduZWQgZWxlbWVudEluZGV4KQogICAgIHsKICAgICAgICAgLy8gU3dhcCB0aGUg
bm9kZSB3aXRoIHRoZSBmaXJzdCB1bm1hcmtlZCBub2RlLgogICAgICAgICB1bnNpZ25lZCBzZXRJ
bmRleCA9IG1fZWxlbWVudFRvU2V0TWFwW2VsZW1lbnRJbmRleF07CkBAIC0yMzgsNDUgKzIxNyw2
NiBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICAvLyBMaXN0IG9mIHNldHMuCi0gICAgVmVjdG9y
PFNldERlc2NyaXB0b3I+IG1fc2V0czsKKyAgICBWZWN0b3I8U2V0RGVzY3JpcHRvciwgMCwgVW5z
YWZlVmVjdG9yT3ZlcmZsb3c+IG1fc2V0czsKIAogICAgIC8vIEFsbCB0aGUgZWxlbWVudCBpbmRp
Y2VzIHN1Y2ggdGhhdCB0d28gZWxlbWVudHMgb2YgdGhlIHNhbWUgc2V0IG5ldmVyIGhhdmUgYSBl
bGVtZW50IG9mIGEgZGlmZmVyZW50IHNldCBiZXR3ZWVuIHRoZW0uCi0gICAgVmVjdG9yPHVuc2ln
bmVkPiBtX3BhcnRpdGlvbmVkRWxlbWVudHM7CisgICAgVmVjdG9yPHVuc2lnbmVkLCAwLCBVbnNh
ZmVWZWN0b3JPdmVyZmxvdz4gbV9wYXJ0aXRpb25lZEVsZW1lbnRzOwogCiAgICAgLy8gTWFwIGVs
ZW1lbnRJbmRleC0+cG9zaXRpb24gaW4gdGhlIHBhcnRpdGlvbmVkRWxlbWVudHMuCi0gICAgVmVj
dG9yPHVuc2lnbmVkPiBtX2VsZW1lbnRQb3NpdGlvbkluUGFydGl0aW9uZWROb2RlczsKKyAgICBW
ZWN0b3I8dW5zaWduZWQsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX2VsZW1lbnRQb3NpdGlv
bkluUGFydGl0aW9uZWROb2RlczsKIAogICAgIC8vIE1hcCBlbGVtZW50SW5kZXgtPlNldEluZGV4
LgotICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9lbGVtZW50VG9TZXRNYXA7CisgICAgVmVjdG9yPHVu
c2lnbmVkLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9lbGVtZW50VG9TZXRNYXA7CiAKICAg
ICAvLyBMaXN0IG9mIHNldHMgd2l0aCBhbnkgbWFya2VkIG5vZGUuIEVhY2ggc2V0IGNhbiBhcHBl
YXIgYXQgbW9zdCBvbmNlLgogICAgIC8vIEZJWE1FOiBmaW5kIGEgZ29vZCBpbmxpbmUgc2l6ZSBm
b3IgdGhpcy4KLSAgICBWZWN0b3I8dW5zaWduZWQsIDEyOD4gbV9zZXRzTWFya2VkSW5DdXJyZW50
R2VuZXJhdGlvbjsKKyAgICBWZWN0b3I8dW5zaWduZWQsIDEyOCwgVW5zYWZlVmVjdG9yT3ZlcmZs
b3c+IG1fc2V0c01hcmtlZEluQ3VycmVudEdlbmVyYXRpb247CiB9OwogCiBjbGFzcyBGdWxsR3Jh
cGhQYXJ0aXRpb24geworICAgIHR5cGVkZWYgTXV0YWJsZVJhbmdlTGlzdDxjaGFyLCB1aW50MzJf
dCwgMTI4PiBTaW5ndWxhclRyYW5zaXRpb25zTXV0YWJsZVJhbmdlTGlzdDsKIHB1YmxpYzoKICAg
ICBGdWxsR3JhcGhQYXJ0aXRpb24oY29uc3QgREZBJiBkZmEpCiAgICAgewogICAgICAgICBtX25v
ZGVQYXJ0aXRpb24uaW5pdGlhbGl6ZShkZmEubm9kZXMuc2l6ZSgpKTsKIAotICAgICAgICBtX2Zs
YXR0ZW5lZFRyYW5zaXRpb25zU3RhcnRPZmZzZXRQZXJOb2RlLnJlc2l6ZShkZmEubm9kZXMuc2l6
ZSgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCYgY291bnRlciA6IG1fZmxhdHRlbmVkVHJhbnNp
dGlvbnNTdGFydE9mZnNldFBlck5vZGUpCi0gICAgICAgICAgICBjb3VudGVyID0gMDsKKyAgICAg
ICAgU2luZ3VsYXJUcmFuc2l0aW9uc011dGFibGVSYW5nZUxpc3Qgc2luZ3VsYXJUcmFuc2l0aW9u
czsKKyAgICAgICAgQ291bnRlckNvbnZlcnRlciBjb3VudGVyQ29udmVydGVyOworICAgICAgICBm
b3IgKGNvbnN0IERGQU5vZGUmIG5vZGUgOiBkZmEubm9kZXMpIHsKKyAgICAgICAgICAgIGlmIChu
b2RlLmlzS2lsbGVkKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBh
dXRvIHRyYW5zaXRpb25zID0gbm9kZS50cmFuc2l0aW9ucyhkZmEpOworICAgICAgICAgICAgc2lu
Z3VsYXJUcmFuc2l0aW9ucy5leHRlbmQodHJhbnNpdGlvbnMuYmVnaW4oKSwgdHJhbnNpdGlvbnMu
ZW5kKCksIGNvdW50ZXJDb252ZXJ0ZXIpOworICAgICAgICB9CiAKLSAgICAgICAgbV9mbGF0dGVu
ZWRGYWxsYmFja1RyYW5zaXRpb25zU3RhcnRPZmZzZXRQZXJOb2RlLnJlc2l6ZShkZmEubm9kZXMu
c2l6ZSgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCYgY291bnRlciA6IG1fZmxhdHRlbmVkRmFs
bGJhY2tUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZSkKLSAgICAgICAgICAgIGNvdW50ZXIg
PSAwOworICAgICAgICAvLyBDb3VudCB0aGUgbnVtYmVyIG9mIHRyYW5zaXRpb24gZm9yIGVhY2gg
c2luZ3VsYXIgcmFuZ2UuIFRoaXMgd2lsbCBnaXZlIHVzIHRoZSBidWNrZXQgc2l6ZQorICAgICAg
ICAvLyBmb3IgdGhlIHRyYW5zaXRpb24gcGFydGl0aW9uLCB3aGVyZSB0cmFuc2l0aW9ucyBhcmUg
cGFydGl0aW9uZWQgYnkgInN5bWJvbCIuCisgICAgICAgIHVuc2lnbmVkIHJhbmdlSW5kZXhBY2N1
bXVsYXRvciA9IDA7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgdHJhbnNpdGlvbiA6IHNpbmd1
bGFyVHJhbnNpdGlvbnMpIHsKKyAgICAgICAgICAgIG1fdHJhbnNpdGlvblBhcnRpdGlvbi5hZGRT
ZXRVbmNoZWNrZWQocmFuZ2VJbmRleEFjY3VtdWxhdG9yLCB0cmFuc2l0aW9uLmRhdGEpOworICAg
ICAgICAgICAgcmFuZ2VJbmRleEFjY3VtdWxhdG9yICs9IHRyYW5zaXRpb24uZGF0YTsKKyAgICAg
ICAgfQogCiAgICAgICAgIC8vIENvdW50IHRoZSBudW1iZXIgb2YgaW5jb21pbmcgdHJhbnNpdGlv
bnMgcGVyIG5vZGUuCi0gICAgICAgIGZvciAoY29uc3QgREZBTm9kZSYgZGZhTm9kZSA6IGRmYS5u
b2RlcykgewotICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFuc2l0aW9uIDogZGZhTm9k
ZS50cmFuc2l0aW9ucyhkZmEpKQotICAgICAgICAgICAgICAgICsrbV9mbGF0dGVuZWRUcmFuc2l0
aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZVt0cmFuc2l0aW9uLnNlY29uZF07Ci0gICAgICAgICAgICBp
ZiAoZGZhTm9kZS5oYXNGYWxsYmFja1RyYW5zaXRpb24oKSkKLSAgICAgICAgICAgICAgICArK21f
ZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZVtkZmFOb2RlLmZh
bGxiYWNrVHJhbnNpdGlvbkRlc3RpbmF0aW9uKGRmYSldOworICAgICAgICBtX2ZsYXR0ZW5lZFRy
YW5zaXRpb25zU3RhcnRPZmZzZXRQZXJOb2RlLnJlc2l6ZShkZmEubm9kZXMuc2l6ZSgpKTsKKyAg
ICAgICAgbWVtc2V0KG1fZmxhdHRlbmVkVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGUuZGF0
YSgpLCAwLCBtX2ZsYXR0ZW5lZFRyYW5zaXRpb25zU3RhcnRPZmZzZXRQZXJOb2RlLnNpemUoKSAq
IHNpemVvZih1bnNpZ25lZCkpOworCisgICAgICAgIFZlY3RvcjxjaGFyLCAwLCBVbnNhZmVWZWN0
b3JPdmVyZmxvdz4gc2luZ3VsYXJUcmFuc2l0aW9uc0ZpcnN0czsKKyAgICAgICAgc2luZ3VsYXJU
cmFuc2l0aW9uc0ZpcnN0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpbmd1bGFyVHJhbnNpdGlv
bnMubV9yYW5nZXMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFuc2l0aW9u
IDogc2luZ3VsYXJUcmFuc2l0aW9ucykKKyAgICAgICAgICAgIHNpbmd1bGFyVHJhbnNpdGlvbnNG
aXJzdHMudW5jaGVja2VkQXBwZW5kKHRyYW5zaXRpb24uZmlyc3QpOworCisgICAgICAgIGZvciAo
Y29uc3QgREZBTm9kZSYgbm9kZSA6IGRmYS5ub2RlcykgeworICAgICAgICAgICAgaWYgKG5vZGUu
aXNLaWxsZWQoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGF1dG8g
dHJhbnNpdGlvbnMgPSBub2RlLnRyYW5zaXRpb25zKGRmYSk7CisgICAgICAgICAgICBpdGVyYXRl
SW50ZXJzZWN0aW9ucyhzaW5ndWxhclRyYW5zaXRpb25zRmlyc3RzLCB0cmFuc2l0aW9ucywgWyZd
KHVuc2lnbmVkLCBjb25zdCBERkFOb2RlOjpDb25zdFJhbmdlSXRlcmF0b3ImIG9yaWdpbikgewor
ICAgICAgICAgICAgICAgIHVpbnQzMl90IHRhcmdldE5vZGVJbmRleCA9IG9yaWdpbi50YXJnZXQo
KTsKKyAgICAgICAgICAgICAgICArK21fZmxhdHRlbmVkVHJhbnNpdGlvbnNTdGFydE9mZnNldFBl
ck5vZGVbdGFyZ2V0Tm9kZUluZGV4XTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKLSAg
ICAgICAgLy8gQWNjdW11bGF0ZSB0aGUgb2Zmc2V0cy4KKyAgICAgICAgLy8gQWNjdW11bGF0ZSB0
aGUgb2Zmc2V0cy4gVGhpcyBnaXZlcyB1cyB0aGUgc3RhcnQgcG9zaXRpb24gb2YgZWFjaCBidWNr
ZXQuCiAgICAgICAgIHVuc2lnbmVkIHRyYW5zaXRpb25BY2N1bXVsYXRvciA9IDA7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2ZsYXR0ZW5lZFRyYW5zaXRpb25zU3RhcnRPZmZz
ZXRQZXJOb2RlLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCB0cmFuc2l0aW9u
c0NvdW50Rm9yTm9kZSA9IG1fZmxhdHRlbmVkVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGVb
aV07CkBAIC0yODQsNjUgKzI4NCw0MiBAQCBwdWJsaWM6CiAgICAgICAgICAgICB0cmFuc2l0aW9u
QWNjdW11bGF0b3IgKz0gdHJhbnNpdGlvbnNDb3VudEZvck5vZGU7CiAgICAgICAgIH0KICAgICAg
ICAgdW5zaWduZWQgZmxhdHRlbmVkVHJhbnNpdGlvbnNTaXplID0gdHJhbnNpdGlvbkFjY3VtdWxh
dG9yOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGZsYXR0ZW5lZFRyYW5zaXRpb25zU2l6
ZSA9PSByYW5nZUluZGV4QWNjdW11bGF0b3IsICJUaGUgbnVtYmVyIG9mIHRyYW5zaXRpb25zIHNo
b3VsZCBiZSB0aGUgc2FtZSwgcmVnYXJkbGVzcyBvZiBob3cgdGhleSBhcmUgYXJyYW5nZWQgaW4g
YnVja2V0cy4iKTsKIAotICAgICAgICB1bnNpZ25lZCBmYWxsYmFja1RyYW5zaXRpb25BY2N1bXVs
YXRvciA9IDA7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2ZsYXR0ZW5lZEZh
bGxiYWNrVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGUuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgICAgIHVuc2lnbmVkIGZhbGxiYWNrVHJhbnNpdGlvbnNDb3VudEZvck5vZGUgPSBtX2ZsYXR0
ZW5lZEZhbGxiYWNrVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGVbaV07Ci0gICAgICAgICAg
ICBtX2ZsYXR0ZW5lZEZhbGxiYWNrVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGVbaV0gPSBm
YWxsYmFja1RyYW5zaXRpb25BY2N1bXVsYXRvcjsKLSAgICAgICAgICAgIGZhbGxiYWNrVHJhbnNp
dGlvbkFjY3VtdWxhdG9yICs9IGZhbGxiYWNrVHJhbnNpdGlvbnNDb3VudEZvck5vZGU7Ci0gICAg
ICAgIH0KLSAgICAgICAgdW5zaWduZWQgZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1NpemUg
PSBmYWxsYmFja1RyYW5zaXRpb25BY2N1bXVsYXRvcjsKKyAgICAgICAgbV90cmFuc2l0aW9uUGFy
dGl0aW9uLnJlc2VydmVVbmluaXRpYWxpemVkQ2FwYWNpdHkoZmxhdHRlbmVkVHJhbnNpdGlvbnNT
aXplKTsKIAogICAgICAgICAvLyBOZXh0LCBsZXQncyBmaWxsIHRoZSB0cmFuc2l0aW9uIHRhYmxl
IGFuZCBzZXQgdXAgdGhlIHNpemUgb2YgZWFjaCBncm91cCBhdCB0aGUgc2FtZSB0aW1lLgogICAg
ICAgICBtX2ZsYXR0ZW5lZFRyYW5zaXRpb25zU2l6ZVBlck5vZGUucmVzaXplKGRmYS5ub2Rlcy5z
aXplKCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkJiBjb3VudGVyIDogbV9mbGF0dGVuZWRUcmFu
c2l0aW9uc1NpemVQZXJOb2RlKQogICAgICAgICAgICAgY291bnRlciA9IDA7Ci0KLSAgICAgICAg
bV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25zU2l6ZVBlck5vZGUucmVzaXplKGRmYS5ub2Rl
cy5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkJiBjb3VudGVyIDogbV9mbGF0dGVuZWRG
YWxsYmFja1RyYW5zaXRpb25zU2l6ZVBlck5vZGUpCi0gICAgICAgICAgICBjb3VudGVyID0gMDsK
LQogICAgICAgICBtX2ZsYXR0ZW5lZFRyYW5zaXRpb25zLnJlc2l6ZShmbGF0dGVuZWRUcmFuc2l0
aW9uc1NpemUpOwogCi0gICAgICAgIG1fZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9ucy5yZXNp
emUoZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1NpemUpOworICAgICAgICBWZWN0b3I8dWlu
dDMyX3Q+IHRyYW5zaXRpb25QZXJSYW5nZU9mZnNldChtX3RyYW5zaXRpb25QYXJ0aXRpb24uc2l6
ZSgpKTsKKyAgICAgICAgbWVtc2V0KHRyYW5zaXRpb25QZXJSYW5nZU9mZnNldC5kYXRhKCksIDAs
IHRyYW5zaXRpb25QZXJSYW5nZU9mZnNldC5zaXplKCkgKiBzaXplb2YodWludDMyX3QpKTsKIAog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGZhLm5vZGVzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgICAgICBjb25zdCBERkFOb2RlJiBkZmFOb2RlID0gZGZhLm5vZGVzW2ldOwotICAg
ICAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFuc2l0aW9uIDogZGZhTm9kZS50cmFuc2l0aW9u
cyhkZmEpKSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0Tm9kZUluZGV4ID0gdHJh
bnNpdGlvbi5zZWNvbmQ7CisgICAgICAgICAgICBjb25zdCBERkFOb2RlJiBub2RlID0gZGZhLm5v
ZGVzW2ldOworICAgICAgICAgICAgaWYgKG5vZGUuaXNLaWxsZWQoKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgYXV0byB0cmFuc2l0aW9ucyA9IG5vZGUudHJhbnNp
dGlvbnMoZGZhKTsKKyAgICAgICAgICAgIGl0ZXJhdGVJbnRlcnNlY3Rpb25zKHNpbmd1bGFyVHJh
bnNpdGlvbnNGaXJzdHMsIHRyYW5zaXRpb25zLCBbJl0odW5zaWduZWQgc2luZ3VsYXJUcmFuc2l0
b25JbmRleCwgY29uc3QgREZBTm9kZTo6Q29uc3RSYW5nZUl0ZXJhdG9yJiBvcmlnaW4pIHsKKyAg
ICAgICAgICAgICAgICB1aW50MzJfdCB0YXJnZXROb2RlSW5kZXggPSBvcmlnaW4udGFyZ2V0KCk7
CiAKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydCA9IG1fZmxhdHRlbmVkVHJhbnNpdGlv
bnNTdGFydE9mZnNldFBlck5vZGVbdGFyZ2V0Tm9kZUluZGV4XTsKICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBvZmZzZXQgPSBtX2ZsYXR0ZW5lZFRyYW5zaXRpb25zU2l6ZVBlck5vZGVbdGFyZ2V0
Tm9kZUluZGV4XTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBwb3NpdGlvbkluRmxhdHRlbmVk
VHJhbnNpdGlvbnMgPSBzdGFydCArIG9mZnNldDsKKyAgICAgICAgICAgICAgICBtX2ZsYXR0ZW5l
ZFRyYW5zaXRpb25zW3Bvc2l0aW9uSW5GbGF0dGVuZWRUcmFuc2l0aW9uc10gPSBUcmFuc2l0aW9u
KHsgaSB9KTsKIAotICAgICAgICAgICAgICAgIG1fZmxhdHRlbmVkVHJhbnNpdGlvbnNbc3RhcnQg
KyBvZmZzZXRdID0gVHJhbnNpdGlvbih7IGksIHRhcmdldE5vZGVJbmRleCwgdHJhbnNpdGlvbi5m
aXJzdCB9KTsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCYgaW5SYW5nZU9mZnNldCA9IHRyYW5z
aXRpb25QZXJSYW5nZU9mZnNldFtzaW5ndWxhclRyYW5zaXRvbkluZGV4XTsKKyAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBwb3NpdGlvbkluVHJhbnNpdGlvblBhcnRpdGlvbiA9IG1fdHJhbnNpdGlv
blBhcnRpdGlvbi5zdGFydE9mZnNldE9mU2V0KHNpbmd1bGFyVHJhbnNpdG9uSW5kZXgpICsgaW5S
YW5nZU9mZnNldDsKKyAgICAgICAgICAgICAgICArK2luUmFuZ2VPZmZzZXQ7CiAKLSAgICAgICAg
ICAgICAgICArK21fZmxhdHRlbmVkVHJhbnNpdGlvbnNTaXplUGVyTm9kZVt0YXJnZXROb2RlSW5k
ZXhdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGRmYU5vZGUuaGFzRmFsbGJhY2tU
cmFuc2l0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXROb2RlSW5kZXgg
PSBkZmFOb2RlLmZhbGxiYWNrVHJhbnNpdGlvbkRlc3RpbmF0aW9uKGRmYSk7Ci0KLSAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBzdGFydCA9IG1fZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1N0
YXJ0T2Zmc2V0UGVyTm9kZVt0YXJnZXROb2RlSW5kZXhdOwotICAgICAgICAgICAgICAgIHVuc2ln
bmVkIG9mZnNldCA9IG1fZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1NpemVQZXJOb2RlW3Rh
cmdldE5vZGVJbmRleF07CisgICAgICAgICAgICAgICAgbV90cmFuc2l0aW9uUGFydGl0aW9uLnNl
dEVsZW1lbnRVbmNoZWNrZWQocG9zaXRpb25JbkZsYXR0ZW5lZFRyYW5zaXRpb25zLCBwb3NpdGlv
bkluVHJhbnNpdGlvblBhcnRpdGlvbiwgc2luZ3VsYXJUcmFuc2l0b25JbmRleCk7CiAKLSAgICAg
ICAgICAgICAgICBtX2ZsYXR0ZW5lZEZhbGxiYWNrVHJhbnNpdGlvbnNbc3RhcnQgKyBvZmZzZXRd
ID0gaTsKLSAgICAgICAgICAgICAgICArK21fZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1Np
emVQZXJOb2RlW3RhcmdldE5vZGVJbmRleF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBDcmVhdGUgdGhlIGluaXRpYWwgcGFydGl0aW9uIG9mIHRyYW5zaXRpb24uIEVh
Y2ggY2hhcmFjdGVyIGRpZmZlcmVudGlhdGluZyBhIHRyYW5zaXRvbgotICAgICAgICAvLyBmcm9t
IGFuIG90aGVyIGdldHMgaXRzIG93biBzZXQgaW4gdGhlIHBhcnRpdGlvbi4KLSAgICAgICAgbV90
cmFuc2l0aW9uUGFydGl0aW9uLmluaXRpYWxpemUobV9mbGF0dGVuZWRUcmFuc2l0aW9ucy5zaXpl
KCkpOwotICAgICAgICBmb3IgKHVpbnQxNl90IGkgPSAwOyBpIDwgMTI4OyArK2kpIHsKLSAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgdHJhbnNpdGlvbkluZGV4ID0gMDsgdHJhbnNpdGlvbkluZGV4
IDwgbV9mbGF0dGVuZWRUcmFuc2l0aW9ucy5zaXplKCk7ICsrdHJhbnNpdGlvbkluZGV4KSB7Ci0g
ICAgICAgICAgICAgICAgY29uc3QgVHJhbnNpdGlvbiYgdHJhbnNpdGlvbiA9IG1fZmxhdHRlbmVk
VHJhbnNpdGlvbnNbdHJhbnNpdGlvbkluZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAodHJhbnNp
dGlvbi5jaGFyYWN0ZXIgPT0gaSkKLSAgICAgICAgICAgICAgICAgICAgbV90cmFuc2l0aW9uUGFy
dGl0aW9uLm1hcmtFbGVtZW50SW5DdXJyZW50R2VuZXJhdGlvbih0cmFuc2l0aW9uSW5kZXgpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgbV90cmFuc2l0aW9uUGFydGl0aW9uLnJlZmluZUdl
bmVyYXRpb24oW10odW5zaWduZWQpIHsgfSk7CisgICAgICAgICAgICAgICAgKyttX2ZsYXR0ZW5l
ZFRyYW5zaXRpb25zU2l6ZVBlck5vZGVbdGFyZ2V0Tm9kZUluZGV4XTsKKyAgICAgICAgICAgIH0p
OwogICAgICAgICB9Ci0KLSAgICAgICAgLy8gRmFsbGJhY2sgcGFydGl0aW9ucyBhcmUgY29uc2lk
ZXJlZCBhcyBhIHNwZWNpYWwgdHlwZSBvZiBkaWZmZXJlbnRpYXRvciwgd2UgZG9uJ3Qgc3BsaXQg
dGhlbSBpbml0aWFsbHkuCi0gICAgICAgIG1fZmFsbGJhY2tUcmFuc2l0aW9uUGFydGl0aW9uLmlu
aXRpYWxpemUobV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25zLnNpemUoKSk7CiAgICAgfQog
CiAgICAgdm9pZCBtYXJrTm9kZSh1bnNpZ25lZCBub2RlSW5kZXgpCkBAIC0zNTksMTcgKzMzNiwx
MCBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
aW5jb21pbmdUcmFuc2l0aW9uc1NpemVGb3JOb2RlOyArK2kpCiAgICAgICAgICAgICAgICAgICAg
IG1fdHJhbnNpdGlvblBhcnRpdGlvbi5tYXJrRWxlbWVudEluQ3VycmVudEdlbmVyYXRpb24oaW5j
b21pbmdUcmFuc2l0aW9uc1N0YXJ0Rm9yTm9kZSArIGkpOwotCi0gICAgICAgICAgICAgICAgdW5z
aWduZWQgaW5jb21pbmdGYWxsYmFja1RyYW5zaXRpb25zU3RhcnRGb3JOb2RlID0gbV9mbGF0dGVu
ZWRGYWxsYmFja1RyYW5zaXRpb25zU3RhcnRPZmZzZXRQZXJOb2RlW25vZGVJbmRleF07Ci0gICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW5jb21pbmdGYWxsYmFja1RyYW5zaXRpb25zU2l6ZUZvck5v
ZGUgPSBtX2ZsYXR0ZW5lZEZhbGxiYWNrVHJhbnNpdGlvbnNTaXplUGVyTm9kZVtub2RlSW5kZXhd
OwotCi0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGluY29taW5nRmFs
bGJhY2tUcmFuc2l0aW9uc1NpemVGb3JOb2RlOyArK2kpCi0gICAgICAgICAgICAgICAgICAgIG1f
ZmFsbGJhY2tUcmFuc2l0aW9uUGFydGl0aW9uLm1hcmtFbGVtZW50SW5DdXJyZW50R2VuZXJhdGlv
bihpbmNvbWluZ0ZhbGxiYWNrVHJhbnNpdGlvbnNTdGFydEZvck5vZGUgKyBpKTsKICAgICAgICAg
ICAgIH0pOwogCiAgICAgICAgICAgICAvLyBXZSBvbmx5IG5lZWQgdG8gc3BsaXQgdGhlIHRyYW5z
aXRpb25zLCB3ZSBoYW5kbGUgdGhlIG5ldyBzZXRzIHRocm91Z2ggdGhlIG1haW4gbG9vcC4KICAg
ICAgICAgICAgIG1fdHJhbnNpdGlvblBhcnRpdGlvbi5yZWZpbmVHZW5lcmF0aW9uKFtdKHVuc2ln
bmVkKSB7IH0pOwotICAgICAgICAgICAgbV9mYWxsYmFja1RyYW5zaXRpb25QYXJ0aXRpb24ucmVm
aW5lR2VuZXJhdGlvbihbXSh1bnNpZ25lZCkgeyB9KTsKICAgICAgICAgfSk7CiAgICAgfQogCkBA
IC0zODYsMjMgKzM1Niw2IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQg
c3BsaXRCeUZhbGxiYWNrVHJhbnNpdGlvbnMoKQotICAgIHsKLSAgICAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShtX25leHRUcmFuc2l0aW9uU2V0VG9Qcm9jZXNzIHx8ICFtX3RyYW5zaXRpb25QYXJ0
aXRpb24uc2l6ZSgpLCAiV2UgY2FuIG9ubHkgZGlzdGluZ3Vpc2ggbm9kZXMgYnkgZmFsbGJhY2sg
dHJhbnNpdGlvbiAqYWZ0ZXIqIGFsbCBvdGhlciB0cmFuc2l0aW9ucyBhcmUgY292ZXJlZC4gRG9p
bmcgb3RoZXJ3aXNlIHdvdWxkIGJlIGluY29ycmVjdCBzaW5jZSB0aGUgdW5pcXVlIHRyYW5zaXRp
b25zIGZyb20gMiBub2RlcyBjb3VsZCBjb3ZlciBhbGwgcG9zc2libGUgdHJhbnNpdGlvbnMuIik7
Ci0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBmYWxsYmFja1RyYW5zaXRpb25TZXRJbmRleCA9IDA7
IGZhbGxiYWNrVHJhbnNpdGlvblNldEluZGV4IDwgbV9mYWxsYmFja1RyYW5zaXRpb25QYXJ0aXRp
b24uc2l6ZSgpOyArK2ZhbGxiYWNrVHJhbnNpdGlvblNldEluZGV4KSB7Ci0KLSAgICAgICAgICAg
IG1fZmFsbGJhY2tUcmFuc2l0aW9uUGFydGl0aW9uLml0ZXJhdGVTZXQoZmFsbGJhY2tUcmFuc2l0
aW9uU2V0SW5kZXgsIFsmXSh1bnNpZ25lZCB0cmFuc2l0aW9uSW5kZXgpIHsKLSAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBzb3VyY2VOb2RlSW5kZXggPSBtX2ZsYXR0ZW5lZEZhbGxiYWNrVHJhbnNp
dGlvbnNbdHJhbnNpdGlvbkluZGV4XTsKLSAgICAgICAgICAgICAgICBtX25vZGVQYXJ0aXRpb24u
bWFya0VsZW1lbnRJbkN1cnJlbnRHZW5lcmF0aW9uKHNvdXJjZU5vZGVJbmRleCk7Ci0gICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgIHJlZmluZVBhcnRpdGlvbnMoKTsKLQotICAgICAgICAgICAg
Ly8gQW55IG5ldyBzcGxpdCBuZWVkIHRvIHNwcmVhZCB0byBhbGwgdGhlIHVuaXF1ZSB0cmFuc2l0
aW9uIHRoYXQgY2FuIHJlYWNoIHRoZSB0d28gbmV3IHNldHMuCi0gICAgICAgICAgICBzcGxpdEJ5
VW5pcXVlVHJhbnNpdGlvbnMoKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIHVuc2lnbmVkIG5v
ZGVSZXBsYWNlbWVudCh1bnNpZ25lZCBub2RlSW5kZXgpCiAgICAgewogICAgICAgICB1bnNpZ25l
ZCBzZXRJbmRleCA9IG1fbm9kZVBhcnRpdGlvbi5zZXRJbmRleChub2RlSW5kZXgpOwpAQCAtNDEy
LDIxICszNjUsMjYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdHJ1Y3QgVHJhbnNpdGlvbiB7
CiAgICAgICAgIHVuc2lnbmVkIHNvdXJjZTsKLSAgICAgICAgdW5zaWduZWQgdGFyZ2V0OwotICAg
ICAgICB1aW50MTZfdCBjaGFyYWN0ZXI7CiAgICAgfTsKIAotICAgIFZlY3Rvcjx1bnNpZ25lZD4g
bV9mbGF0dGVuZWRUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZTsKLSAgICBWZWN0b3I8dW5z
aWduZWQ+IG1fZmxhdHRlbmVkVHJhbnNpdGlvbnNTaXplUGVyTm9kZTsKLSAgICBWZWN0b3I8dW5z
aWduZWQ+IG1fZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZTsK
LSAgICBWZWN0b3I8dW5zaWduZWQ+IG1fZmxhdHRlbmVkRmFsbGJhY2tUcmFuc2l0aW9uc1NpemVQ
ZXJOb2RlOworICAgIHN0cnVjdCBDb3VudGVyQ29udmVydGVyIHsKKyAgICAgICAgdWludDMyX3Qg
Y29udmVydCh1aW50MzJfdCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAg
ICAgIH0KKworICAgICAgICB2b2lkIGV4dGVuZCh1aW50MzJfdCYgZGVzdGluYXRpb24sIHVpbnQz
Ml90KQorICAgICAgICB7CisgICAgICAgICAgICArK2Rlc3RpbmF0aW9uOworICAgICAgICB9Cisg
ICAgfTsKIAotICAgIFZlY3RvcjxUcmFuc2l0aW9uPiBtX2ZsYXR0ZW5lZFRyYW5zaXRpb25zOwot
ICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25zOworICAg
IFZlY3Rvcjx1bnNpZ25lZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fZmxhdHRlbmVkVHJh
bnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGU7CisgICAgVmVjdG9yPHVuc2lnbmVkLCAwLCBVbnNh
ZmVWZWN0b3JPdmVyZmxvdz4gbV9mbGF0dGVuZWRUcmFuc2l0aW9uc1NpemVQZXJOb2RlOworICAg
IFZlY3RvcjxUcmFuc2l0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9mbGF0dGVuZWRU
cmFuc2l0aW9uczsKIAogICAgIFBhcnRpdGlvbiBtX25vZGVQYXJ0aXRpb247CiAgICAgUGFydGl0
aW9uIG1fdHJhbnNpdGlvblBhcnRpdGlvbjsKLSAgICBQYXJ0aXRpb24gbV9mYWxsYmFja1RyYW5z
aXRpb25QYXJ0aXRpb247CiAKICAgICB1bnNpZ25lZCBtX25leHRUcmFuc2l0aW9uU2V0VG9Qcm9j
ZXNzIHsgMCB9OwogfTsKQEAgLTQ5NCw4ICs0NTIsNiBAQCBzdHJ1Y3QgQWN0aW9uS2V5SGFzaFRy
YWl0cyA6IHB1YmxpYyBXVEY6CiAKIHZvaWQgREZBTWluaW1pemVyOjptaW5pbWl6ZShERkEmIGRm
YSkKIHsKLSAgICBzaW1wbGlmeVRyYW5zaXRpb25zKGRmYSk7Ci0KICAgICBGdWxsR3JhcGhQYXJ0
aXRpb24gZnVsbEdyYXBoUGFydGl0aW9uKGRmYSk7CiAKICAgICAvLyBVbmxpa2UgdHJhZGl0aW9u
YWwgbWluaW1pemF0aW9uIGZpbmFsIHN0YXRlcyBjYW4gYmUgZGlmZmVyZW50aWF0ZWQgYnkgdGhl
aXIgYWN0aW9uLgpAQCAtNTIwLDIxICs0NzYsMTIgQEAgdm9pZCBERkFNaW5pbWl6ZXI6Om1pbmlt
aXplKERGQSYgZGZhKQogICAgIC8vIFVzZSBldmVyeSBzcGxpdHRlciB0byByZWZpbmUgdGhlIG5v
ZGUgcGFydGl0aW9ucy4KICAgICBmdWxsR3JhcGhQYXJ0aXRpb24uc3BsaXRCeVVuaXF1ZVRyYW5z
aXRpb25zKCk7CiAKLSAgICAvLyBBdCB0aGlzIHN0YWdlLCB3ZSBrbm93IHRoYXQgbm8gcGFpciBv
ZiBzdGF0ZSBjYW4gYmUgZGlzdGluZ3Vpc2hlZCBieSB0aGUgaW5kaXZpZHVhbCB0cmFuc2l0aW9u
cy4gVGhleSBjYW4gc3RpbGwKLSAgICAvLyBiZSBkaXN0aW5ndWlzaGVkIGJ5IHRoZWlyIGZhbGxi
YWNrIHRyYW5zaXRpb25zLgotICAgIC8vCi0gICAgLy8gRm9yIGV4YW1wbGUsIHR3byBzdGF0ZXMg
WzEsIDJdIGNhbiBib3RoIGhhdmUgYSB0cmFuc2l0aW9uIG9uICd4JyB0byBhIHN0YXRlIFszXSwg
YnV0IGVhY2ggaGF2ZSBmYWxsYmFjayB0cmFuc2l0aW9uCi0gICAgLy8gdG8gZGlmZmVyZW50IHN0
YXRlcyBbNF0gYW5kIFs1XS4KLSAgICAvLwotICAgIC8vIEhlcmUsIHdlIGRpc3Rpbmd1aXNoIHN1
Y2ggY2FzZXMgYW5kIGF0IGVhY2ggc3RhZ2UgcmVmaW5lIHRoZSBuZXcgZGlzY292ZXJlZCBzZXRz
IGJ5IHRoZWlyIGluZGl2aWR1YWwgdHJhbnNpdGlvbnMuCi0gICAgZnVsbEdyYXBoUGFydGl0aW9u
LnNwbGl0QnlGYWxsYmFja1RyYW5zaXRpb25zKCk7Ci0KICAgICBWZWN0b3I8dW5zaWduZWQ+IHJl
bG9jYXRpb25WZWN0b3I7CiAgICAgcmVsb2NhdGlvblZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGRmYS5ub2Rlcy5zaXplKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZmEu
bm9kZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHJlbG9jYXRpb25WZWN0b3IudW5jaGVja2VkQXBw
ZW5kKGkpOwogCi0gICAgLy8gS2lsbCB0aGUgdXNlbGVzcyBub2RlcyBhbmQga2VlcCB0cmFjayBv
ZiB0aGUgbmV3IG5vZGUgdHJhbnNpdGlvbnMgc2hvdWxkIHBvaW50IHRvLgorICAgIC8vIFVwZGF0
ZSBhbGwgdGhlIHRyYW5zaXRpb25zLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZmEu
bm9kZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgdW5zaWduZWQgcmVwbGFjZW1lbnQgPSBmdWxs
R3JhcGhQYXJ0aXRpb24ubm9kZVJlcGxhY2VtZW50KGkpOwogICAgICAgICBpZiAoaSAhPSByZXBs
YWNlbWVudCkgewpAQCAtNTQzLDE5ICs0OTAsMTggQEAgdm9pZCBERkFNaW5pbWl6ZXI6Om1pbmlt
aXplKERGQSYgZGZhKQogICAgICAgICB9CiAgICAgfQogCisgICAgZGZhLnJvb3QgPSByZWxvY2F0
aW9uVmVjdG9yW2RmYS5yb290XTsKICAgICBmb3IgKERGQU5vZGUmIG5vZGUgOiBkZmEubm9kZXMp
IHsKLSAgICAgICAgYXV0byBub2RlVHJhbnNpdGlvbnMgPSBub2RlLnRyYW5zaXRpb25zKGRmYSk7
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBub2RlLnRyYW5zaXRpb25zTGVuZ3Ro
KCk7ICsraSkKLSAgICAgICAgICAgIGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zW25vZGUudHJh
bnNpdGlvbnNTdGFydCgpICsgaV0gPSByZWxvY2F0aW9uVmVjdG9yW25vZGVUcmFuc2l0aW9uc1tp
XS5zZWNvbmRdOwotICAgICAgICBpZiAobm9kZS5oYXNGYWxsYmFja1RyYW5zaXRpb24oKSkKLSAg
ICAgICAgICAgIG5vZGUuY2hhbmdlRmFsbGJhY2tUcmFuc2l0aW9uKGRmYSwgcmVsb2NhdGlvblZl
Y3Rvcltub2RlLmZhbGxiYWNrVHJhbnNpdGlvbkRlc3RpbmF0aW9uKGRmYSldKTsKLSAgICB9Cisg
ICAgICAgIGlmIChub2RlLmlzS2lsbGVkKCkpCisgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
IC8vIEFmdGVyIG1pbmltaXppbmcsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSBpbmRpdmlkdWFsIHRy
YW5zaXRpb24gYXJlIHN0aWxsIHBvaXRpbmcgdG8gZGlmZmVyZW50IHN0YXRlcy4KLSAgICAvLyBU
aGUgc3RhdGUgcG9pbnRlZCBieSBvbmUgaW5kaXZpZHVhbCB0cmFuc2l0aW9uIGFuZCB0aGUgZmFs
bGJhY2sgc3RhdGVzIG1heSBoYXZlIGJlZW4gbWVyZ2VkLgotICAgIHNpbXBsaWZ5VHJhbnNpdGlv
bnMoZGZhKTsKLQotICAgIGRmYS5yb290ID0gcmVsb2NhdGlvblZlY3RvcltkZmEucm9vdF07Cisg
ICAgICAgIGZvciAoYXV0byYgdHJhbnNpdGlvbiA6IG5vZGUudHJhbnNpdGlvbnMoZGZhKSkgewor
ICAgICAgICAgICAgdWludDMyX3QgdGFyZ2V0ID0gdHJhbnNpdGlvbi50YXJnZXQoKTsKKyAgICAg
ICAgICAgIHVpbnQzMl90IHJlbG9jYXRlZFRhcmdldCA9IHJlbG9jYXRpb25WZWN0b3JbdGFyZ2V0
XTsKKyAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gcmVsb2NhdGVkVGFyZ2V0KQorICAgICAgICAg
ICAgICAgIHRyYW5zaXRpb24ucmVzZXRUYXJnZXQocmVsb2NhdGVkVGFyZ2V0KTsKKyAgICAgICAg
fQorICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQU5vZGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQU5vZGUuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBTm9kZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiREZBTm9kZS5oIgorCisjaW5jbHVkZSAiREZBLmgiCisKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25h
bWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CisKK1ZlY3Rvcjx1aW50NjRfdD4gREZBTm9kZTo6
YWN0aW9ucyhjb25zdCBERkEmIGRmYSkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogVXNlIGl0ZXJh
dG9ycyBpbnN0ZWFkIG9mIGNvcHlpbmcgdGhlIFZlY3RvciBlbGVtZW50cy4KKyAgICBWZWN0b3I8
dWludDY0X3Q+IHZlY3RvcjsKKyAgICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2Fj
dGlvbnNMZW5ndGgpOworICAgIGZvciAodWludDMyX3QgaSA9IG1fYWN0aW9uc1N0YXJ0OyBpIDwg
bV9hY3Rpb25zU3RhcnQgKyBtX2FjdGlvbnNMZW5ndGg7ICsraSkKKyAgICAgICAgdmVjdG9yLnVu
Y2hlY2tlZEFwcGVuZChkZmEuYWN0aW9uc1tpXSk7CisgICAgcmV0dXJuIHZlY3RvcjsKK30KKwor
Ym9vbCBERkFOb2RlOjpjb250YWluc1RyYW5zaXRpb24oY2hhciB0cmFuc2l0aW9uLCBjb25zdCBE
RkEmIGRmYSkgY29uc3QKK3sKKyAgICAvLyBDYWxsZWQgZnJvbSBERkFNaW5pbWl6ZXIsIHRoaXMg
bG9vcHMgdGhvdWdoIGEgbWF4aW11bSBvZiAxMjggdHJhbnNpdGlvbnMsIHNvIGl0J3Mgbm90IHRv
byBzbG93LgorICAgIEFTU0VSVChtX3RyYW5zaXRpb25zTGVuZ3RoIDw9IDEyOCk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gbV90cmFuc2l0aW9uc1N0YXJ0OyBpIDwgbV90cmFuc2l0aW9uc1N0YXJ0
ICsgbV90cmFuc2l0aW9uc0xlbmd0aDsgKytpKSB7CisgICAgICAgIGlmIChkZmEudHJhbnNpdGlv
blJhbmdlc1tpXS5maXJzdCA8PSB0cmFuc2l0aW9uCisgICAgICAgICAgICAmJiBkZmEudHJhbnNp
dGlvblJhbmdlc1tpXS5sYXN0ID49IHRyYW5zaXRpb24pCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIERGQU5vZGU6OmtpbGwoREZB
JiBkZmEpCit7CisgICAgQVNTRVJUKG1fZmxhZ3MgIT0gSXNLaWxsZWQpOworICAgIG1fZmxhZ3Mg
PSBJc0tpbGxlZDsgLy8gS2lsbGVkIG5vZGVzIGRvbid0IGhhdmUgYW55IG90aGVyIGZsYWdzLgor
CisgICAgLy8gSW52YWxpZGF0ZSB0aGUgbm93LXVudXNlZCBtZW1vcnkgaW4gdGhlIERGQSB0byBt
YWtlIGZpbmRpbmcgYnVncyBlYXNpZXIuCisgICAgZm9yICh1bnNpZ25lZCBpID0gbV90cmFuc2l0
aW9uc1N0YXJ0OyBpIDwgbV90cmFuc2l0aW9uc1N0YXJ0ICsgbV90cmFuc2l0aW9uc0xlbmd0aDsg
KytpKSB7CisgICAgICAgIGRmYS50cmFuc2l0aW9uUmFuZ2VzW2ldID0geyAtMSwgLTEgfTsKKyAg
ICAgICAgZGZhLnRyYW5zaXRpb25EZXN0aW5hdGlvbnNbaV0gPSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVpbnQzMl90Pjo6bWF4KCk7CisgICAgfQorICAgIGZvciAodW5zaWduZWQgaSA9IG1fYWN0aW9u
c1N0YXJ0OyBpIDwgbV9hY3Rpb25zU3RhcnQgKyBtX2FjdGlvbnNMZW5ndGg7ICsraSkKKyAgICAg
ICAgZGZhLmFjdGlvbnNbaV0gPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCk7
CisKKyAgICBtX2FjdGlvbnNTdGFydCA9IDA7CisgICAgbV9hY3Rpb25zTGVuZ3RoID0gMDsKKyAg
ICBtX3RyYW5zaXRpb25zU3RhcnQgPSAwOworICAgIG1fdHJhbnNpdGlvbnNMZW5ndGggPSAwOwor
fTsKKworYm9vbCBERkFOb2RlOjpjYW5Vc2VGYWxsYmFja1RyYW5zaXRpb24oY29uc3QgREZBJiBk
ZmEpIGNvbnN0Cit7CisgICAgLy8gVHJhbnNpdGlvbnMgY2FuIGNvbnRhaW5zICIwIiBpZiB0aGUg
ZXhwcmVzc2lvbiBoYXMgYSBlbmQtb2YtbGluZSBtYXJrZXIuCisgICAgLy8gRmFsbGJhY2sgdHJh
bnNpdGlvbnMgY292ZXIgMS0xMjcuIFdlIGhhdmUgdG8gYmUgY2FyZWZ1bCB3aXRoIHRoZSBmaXJz
dC4KKworICAgIEl0ZXJhYmxlQ29uc3RSYW5nZSBpdGVyYWJsZVRyYW5zaXRpb25zID0gdHJhbnNp
dGlvbnMoZGZhKTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gaXRlcmFibGVUcmFuc2l0aW9ucy5iZWdp
bigpOworICAgIGF1dG8gZW5kID0gaXRlcmFibGVUcmFuc2l0aW9ucy5lbmQoKTsKKyAgICBpZiAo
aXRlcmF0b3IgPT0gZW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjaGFyIGxhc3RT
ZWVuQ2hhcmFjdGVyID0gMDsKKyAgICBpZiAoIWl0ZXJhdG9yLmZpcnN0KCkpIHsKKyAgICAgICAg
bGFzdFNlZW5DaGFyYWN0ZXIgPSBpdGVyYXRvci5sYXN0KCk7CisgICAgICAgIGlmIChsYXN0U2Vl
bkNoYXJhY3RlciA9PSAxMjcpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgKytp
dGVyYXRvcjsKKyAgICB9CisKKyAgICBmb3IgKDtpdGVyYXRvciAhPSBlbmQ7ICsraXRlcmF0b3Ip
IHsKKyAgICAgICAgQVNTRVJUKGl0ZXJhdG9yLmZpcnN0KCkgPiBsYXN0U2VlbkNoYXJhY3Rlcik7
CisgICAgICAgIGlmIChpdGVyYXRvci5maXJzdCgpICE9IGxhc3RTZWVuQ2hhcmFjdGVyICsgMSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAoaXRlcmF0b3IucmFuZ2Uo
KS5sYXN0ID09IDEyNykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBsYXN0U2Vl
bkNoYXJhY3RlciA9IGl0ZXJhdG9yLmxhc3QoKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit1aW50MzJfdCBERkFOb2RlOjpiZXN0RmFsbGJhY2tUYXJnZXQoY29uc3QgREZBJiBkZmEp
IGNvbnN0Cit7CisgICAgQVNTRVJUKGNhblVzZUZhbGxiYWNrVHJhbnNpdGlvbihkZmEpKTsKKwor
ICAgIEhhc2hNYXA8dWludDMyX3QsIHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1aW50MzJfdD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDMyX3Q+PiBoaXN0b2dy
YW07CisKKyAgICBJdGVyYWJsZUNvbnN0UmFuZ2UgaXRlcmFibGVUcmFuc2l0aW9ucyA9IHRyYW5z
aXRpb25zKGRmYSk7CisgICAgYXV0byBpdGVyYXRvciA9IGl0ZXJhYmxlVHJhbnNpdGlvbnMuYmVn
aW4oKTsKKyAgICBhdXRvIGVuZCA9IGl0ZXJhYmxlVHJhbnNpdGlvbnMuZW5kKCk7CisgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShpdGVyYXRvciAhPSBlbmQsICJBbiBlbXB0eSByYW5nZSBsaXN0IGNh
bm5vdCB1c2UgYSBmYWxsYmFjayB0cmFuc2l0aW9uLiIpOworCisgICAgaWYgKCFpdGVyYXRvci5m
aXJzdCgpICYmICFpdGVyYXRvci5sYXN0KCkpCisgICAgICAgICsraXRlcmF0b3I7CisgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShpdGVyYXRvciAhPSBlbmQsICJBbiBlbXB0eSByYW5nZSBsaXN0IG1h
dGNoaW5nIG9ubHkgemVybyBjYW5ub3QgdXNlIGEgZmFsbGJhY2sgdHJhbnNpdGlvbi4iKTsKKwor
ICAgIHVpbnQzMl90IGJlc3RUYXJnZXQgPSBpdGVyYXRvci50YXJnZXQoKTsKKyAgICB1bnNpZ25l
ZCBiZXN0VGFyZ2V0U2NvcmUgPSAhaXRlcmF0b3IucmFuZ2UoKS5maXJzdCA/IGl0ZXJhdG9yLnJh
bmdlKCkuc2l6ZSgpIC0gMSA6IGl0ZXJhdG9yLnJhbmdlKCkuc2l6ZSgpOworICAgIGhpc3RvZ3Jh
bS5hZGQoYmVzdFRhcmdldCwgYmVzdFRhcmdldFNjb3JlKTsKKyAgICArK2l0ZXJhdG9yOworCisg
ICAgZm9yICg7aXRlcmF0b3IgIT0gZW5kOyArK2l0ZXJhdG9yKSB7CisgICAgICAgIHVuc2lnbmVk
IHJhbmdlU2l6ZSA9IGl0ZXJhdG9yLnJhbmdlKCkuc2l6ZSgpOworICAgICAgICB1aW50MzJfdCB0
YXJnZXQgPSBpdGVyYXRvci50YXJnZXQoKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBoaXN0
b2dyYW0uYWRkKHRhcmdldCwgcmFuZ2VTaXplKTsKKyAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNO
ZXdFbnRyeSkKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgKz0gcmFuZ2VT
aXplOworICAgICAgICBpZiAoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA+IGJlc3RUYXJnZXRT
Y29yZSkgeworICAgICAgICAgICAgYmVzdFRhcmdldFNjb3JlID0gYWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZTsKKyAgICAgICAgICAgIGJlc3RUYXJnZXQgPSB0YXJnZXQ7CisgICAgICAgIH0KKyAg
ICB9CisgICAgcmV0dXJuIGJlc3RUYXJnZXQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIENvbnRlbnRF
eHRlbnNpb25zCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShD
T05URU5UX0VYVEVOU0lPTlMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9ERkFOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvREZBTm9kZS5oCShyZXZpc2lvbiAxODYzNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9ERkFOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDI3ICszOCwxMTIgQEAg
bmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKIAogc3RydWN0IERGQTsKIAorc3RydWN0IENo
YXJSYW5nZSB7CisgICAgY2hhciBmaXJzdDsKKyAgICBjaGFyIGxhc3Q7CisgICAgdW5zaWduZWQg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGxhc3QgLSBmaXJzdCArIDE7IH0KK307CisKIC8vIEEgREZB
Tm9kZSBhYnN0cmFjdCB0aGUgdHJhbnNpdGlvbiB0YWJsZSBvdXQgb2YgYSBERkEgc3RhdGUuIElm
IGEgc3RhdGUgaXMgYWNjZXB0aW5nLCB0aGUgREZBTm9kZSBhbHNvIGhhdmUKIC8vIHRoZSBhY3Rp
b25zIGZvciB0aGF0IHN0YXRlLgogY2xhc3MgREZBTm9kZSB7CiBwdWJsaWM6CisgICAgc3RydWN0
IENvbnN0UmFuZ2VJdGVyYXRvciB7CisgICAgICAgIGNvbnN0IERGQSYgZGZhOworICAgICAgICB1
aW50MzJfdCBwb3NpdGlvbjsKKworICAgICAgICBjb25zdCBDb25zdFJhbmdlSXRlcmF0b3ImIG9w
ZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisKKyAgICAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IENvbnN0UmFuZ2VJdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVCgmZGZhICA9PSAmb3RoZXIuZGZhKTsKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbiA9PSBvdGhlci5wb3NpdGlvbjsKKyAgICAgICAgfQorICAgICAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgQ29uc3RSYW5nZUl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7IH0KKworICAgICAgICBDb25zdFJhbmdlSXRlcmF0b3ImIG9wZXJh
dG9yKysoKQorICAgICAgICB7CisgICAgICAgICAgICArK3Bvc2l0aW9uOworICAgICAgICAgICAg
cmV0dXJuICp0aGlzOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgQ2hhclJhbmdlJiByYW5n
ZSgpIGNvbnN0OworICAgICAgICB1aW50MzJfdCB0YXJnZXQoKSBjb25zdDsKKworICAgICAgICBj
aGFyIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gcmFuZ2UoKS5maXJzdDsgfQorICAgICAgICBjaGFy
IGxhc3QoKSBjb25zdCB7IHJldHVybiByYW5nZSgpLmxhc3Q7IH0KKyAgICAgICAgdWludDMyX3Qg
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHRhcmdldCgpOyB9CisgICAgfTsKKworICAgIHN0cnVjdCBJ
dGVyYWJsZUNvbnN0UmFuZ2UgeworICAgICAgICBjb25zdCBERkEmIGRmYTsKKyAgICAgICAgdWlu
dDMyX3QgcmFuZ2VzU3RhcnQ7CisgICAgICAgIHVpbnQzMl90IHJhbmdlc0VuZDsKKworICAgICAg
ICBDb25zdFJhbmdlSXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiB7IGRmYSwgcmFuZ2Vz
U3RhcnQgfTsgfQorICAgICAgICBDb25zdFJhbmdlSXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1
cm4geyBkZmEsIHJhbmdlc0VuZCB9OyB9CisgICAgfTsKKworICAgIEl0ZXJhYmxlQ29uc3RSYW5n
ZSB0cmFuc2l0aW9ucyhjb25zdCBERkEmIGRmYSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBJdGVyYWJsZUNvbnN0UmFuZ2UgeyBkZmEsIG1fdHJhbnNpdGlvbnNTdGFydCwgbV90cmFuc2l0
aW9uc1N0YXJ0ICsgbV90cmFuc2l0aW9uc0xlbmd0aCB9OworICAgIH0KKworICAgIHN0cnVjdCBS
YW5nZUl0ZXJhdG9yIHsKKyAgICAgICAgREZBJiBkZmE7CisgICAgICAgIHVpbnQzMl90IHBvc2l0
aW9uOworCisgICAgICAgIFJhbmdlSXRlcmF0b3ImIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlz
OyB9CisKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJhbmdlSXRlcmF0b3ImIG90aGVy
KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoJmRmYSAgPT0gJm90aGVyLmRm
YSk7CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb24gPT0gb3RoZXIucG9zaXRpb247CisgICAg
ICAgIH0KKyAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJhbmdlSXRlcmF0b3ImIG90aGVy
KSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorCisgICAgICAgIFJhbmdlSXRl
cmF0b3ImIG9wZXJhdG9yKysoKQorICAgICAgICB7CisgICAgICAgICAgICArK3Bvc2l0aW9uOwor
ICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgQ2hh
clJhbmdlJiByYW5nZSgpIGNvbnN0OworICAgICAgICB1aW50MzJfdCB0YXJnZXQoKSBjb25zdDsK
KyAgICAgICAgdm9pZCByZXNldFRhcmdldCh1aW50MzJfdCk7CisKKyAgICAgICAgY2hhciBmaXJz
dCgpIGNvbnN0IHsgcmV0dXJuIHJhbmdlKCkuZmlyc3Q7IH0KKyAgICAgICAgY2hhciBsYXN0KCkg
Y29uc3QgeyByZXR1cm4gcmFuZ2UoKS5sYXN0OyB9CisgICAgICAgIHVpbnQzMl90IGRhdGEoKSBj
b25zdCB7IHJldHVybiB0YXJnZXQoKTsgfQorICAgIH07CisKKyAgICBzdHJ1Y3QgSXRlcmFibGVS
YW5nZSB7CisgICAgICAgIERGQSYgZGZhOworICAgICAgICB1aW50MzJfdCByYW5nZXNTdGFydDsK
KyAgICAgICAgdWludDMyX3QgcmFuZ2VzRW5kOworCisgICAgICAgIFJhbmdlSXRlcmF0b3IgYmVn
aW4oKSBjb25zdCB7IHJldHVybiB7IGRmYSwgcmFuZ2VzU3RhcnQgfTsgfQorICAgICAgICBSYW5n
ZUl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHsgZGZhLCByYW5nZXNFbmQgfTsgfQorICAg
IH07CisKKyAgICBJdGVyYWJsZVJhbmdlIHRyYW5zaXRpb25zKERGQSYgZGZhKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIEl0ZXJhYmxlUmFuZ2UgeyBkZmEsIG1fdHJhbnNpdGlvbnNTdGFydCwgbV90
cmFuc2l0aW9uc1N0YXJ0ICsgbV90cmFuc2l0aW9uc0xlbmd0aCB9OworICAgIH0KKwogICAgIC8v
IEZJWE1FOiBTdG9wIG1pbmltaXppbmcga2lsbGVkIG5vZGVzIGFuZCBhZGQgQVNTRVJUKCFpc0tp
bGxlZCgpKSBpbiBtYW55IGZ1bmN0aW9ucyBoZXJlLgogICAgIHZvaWQga2lsbChERkEmKTsKICAg
ICBWZWN0b3I8dWludDY0X3Q+IGFjdGlvbnMoY29uc3QgREZBJikgY29uc3Q7Ci0gICAgVmVjdG9y
PHN0ZDo6cGFpcjx1aW50OF90LCB1aW50MzJfdD4+IHRyYW5zaXRpb25zKGNvbnN0IERGQSYpIGNv
bnN0OwotICAgIHVpbnQzMl90IGZhbGxiYWNrVHJhbnNpdGlvbkRlc3RpbmF0aW9uKGNvbnN0IERG
QSYpIGNvbnN0OwotICAgIHZvaWQgYWRkRmFsbGJhY2tUcmFuc2l0aW9uKERGQSYsIHVpbnQzMl90
IGRlc3RpbmF0aW9uKTsKLSAgICBib29sIGNvbnRhaW5zVHJhbnNpdGlvbih1aW50OF90LCBERkEm
KTsKLSAgICB2b2lkIGNoYW5nZUZhbGxiYWNrVHJhbnNpdGlvbihERkEmLCB1aW50MzJfdCBuZXdE
ZXN0aW5hdGlvbik7CisgICAgYm9vbCBjb250YWluc1RyYW5zaXRpb24oY2hhciwgY29uc3QgREZB
JikgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBpc0tpbGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxh
Z3MgJiBJc0tpbGxlZDsgfQotICAgIGJvb2wgaGFzRmFsbGJhY2tUcmFuc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9mbGFncyAmIEhhc0ZhbGxiYWNrVHJhbnNpdGlvbjsgfQogICAgIGJvb2wgaGFz
QWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuICEhbV9hY3Rpb25zTGVuZ3RoOyB9Ci0gICAgdWludDhf
dCB0cmFuc2l0aW9uc0xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNpdGlvbnNMZW5ndGg7
IH0KICAgICB1aW50MTZfdCBhY3Rpb25zTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb25z
TGVuZ3RoOyB9CiAgICAgdWludDMyX3QgYWN0aW9uc1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9h
Y3Rpb25zU3RhcnQ7IH0KLSAgICB1aW50MzJfdCB0cmFuc2l0aW9uc1N0YXJ0KCkgY29uc3QgeyBy
ZXR1cm4gbV90cmFuc2l0aW9uc1N0YXJ0OyB9Ci0gICAgCisKKyAgICBib29sIGNhblVzZUZhbGxi
YWNrVHJhbnNpdGlvbihjb25zdCBERkEmKSBjb25zdDsKKyAgICB1aW50MzJfdCBiZXN0RmFsbGJh
Y2tUYXJnZXQoY29uc3QgREZBJikgY29uc3Q7CisKICAgICB2b2lkIHNldEFjdGlvbnModWludDMy
X3Qgc3RhcnQsIHVpbnQxNl90IGxlbmd0aCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9hY3Rp
b25zU3RhcnQpOwpAQCAtNzMsMjIgKzE1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV90cmFuc2l0
aW9uc1N0YXJ0ID0gc3RhcnQ7CiAgICAgICAgIG1fdHJhbnNpdGlvbnNMZW5ndGggPSBsZW5ndGg7
CiAgICAgfQotICAgIHZvaWQgcmVzZXRUcmFuc2l0aW9ucyh1aW50MzJfdCBzdGFydCwgdWludDE2
X3QgbGVuZ3RoKQotICAgIHsKLSAgICAgICAgbV90cmFuc2l0aW9uc1N0YXJ0ID0gc3RhcnQ7Ci0g
ICAgICAgIG1fdHJhbnNpdGlvbnNMZW5ndGggPSBsZW5ndGg7Ci0gICAgfQotICAgIHZvaWQgc2V0
SGFzRmFsbGJhY2tUcmFuc2l0aW9uV2l0aG91dENoYW5naW5nREZBKGJvb2wgc2hvdWxkSGF2ZUZh
bGxiYWNrVHJhbnNpdGlvbikKLSAgICB7Ci0gICAgICAgIGlmIChzaG91bGRIYXZlRmFsbGJhY2tU
cmFuc2l0aW9uKQotICAgICAgICAgICAgbV9mbGFncyB8PSBIYXNGYWxsYmFja1RyYW5zaXRpb247
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZmxhZ3MgJj0gfkhhc0ZhbGxiYWNrVHJhbnNp
dGlvbjsKLSAgICB9Ci0gICAgCi0jaWYgQ09OVEVOVF9FWFRFTlNJT05TX1NUQVRFX01BQ0hJTkVf
REVCVUdHSU5HCi0gICAgVmVjdG9yPHVuc2lnbmVkPiBjb3JyZXNwb25kaW5nTkZBTm9kZXM7Ci0j
ZW5kaWYKKwogcHJpdmF0ZToKICAgICB1aW50MzJfdCBtX2FjdGlvbnNTdGFydCB7IDAgfTsKICAg
ICB1aW50MzJfdCBtX3RyYW5zaXRpb25zU3RhcnQgeyAwIH07CkBAIC05NiwxNyArMTY2LDEwIEBA
IHByaXZhdGU6CiAgICAgdWludDhfdCBtX3RyYW5zaXRpb25zTGVuZ3RoIHsgMCB9OwogICAgIAog
ICAgIHVpbnQ4X3QgbV9mbGFncyB7IDAgfTsKLSAgICBjb25zdCB1aW50OF90IEhhc0ZhbGxiYWNr
VHJhbnNpdGlvbiA9IDB4MDE7Ci0gICAgY29uc3QgdWludDhfdCBJc0tpbGxlZCA9IDB4MDI7Cisg
ICAgY29uc3QgdWludDhfdCBJc0tpbGxlZCA9IDB4MDE7CiB9OwogCi0vLyBGSVhNRTogUGFjayB0
aGlzIGRvd24gdG8gMTIuCi0vLyBJdCdzIHByb2JhYmx5IGFscmVhZHkgMTIgb24gQVJNdjcuCi0j
aWYgQ09OVEVOVF9FWFRFTlNJT05TX1NUQVRFX01BQ0hJTkVfREVCVUdHSU5HCi1DT01QSUxFX0FT
U0VSVChzaXplb2YoREZBTm9kZSkgPD0gMTYgKyBzaXplb2YoVmVjdG9yPHVuc2lnbmVkPiksIEtl
ZXAgdGhlIERGQU5vZGVzIHNtYWxsKTsKLSNlbHNlCiBDT01QSUxFX0FTU0VSVChzaXplb2YoREZB
Tm9kZSkgPD0gMTYsIEtlZXAgdGhlIERGQU5vZGVzIHNtYWxsKTsKLSNlbmRpZgogCiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5GQS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5GQS5o
CShyZXZpc2lvbiAxODYzNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9J
bW11dGFibGVORkEuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsOSArOTMsNiBAQCBzdHJ1Y3QgSW1t
dXRhYmxlTkZBIHsKICAgICAgICAgY29uc3QgSW1tdXRhYmxlTkZBJiBpbW11dGFibGVORkE7CiAg
ICAgICAgIHVpbnQzMl90IHBvc2l0aW9uOwogCi0gICAgICAgIGNvbnN0IEltbXV0YWJsZVJhbmdl
PENoYXJhY3RlclR5cGU+JiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBpbW11dGFibGVORkEu
dHJhbnNpdGlvbnNbcG9zaXRpb25dOyB9Ci0gICAgICAgIGNvbnN0IEltbXV0YWJsZVJhbmdlPENo
YXJhY3RlclR5cGU+KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJmltbXV0YWJsZU5GQS50
cmFuc2l0aW9uc1twb3NpdGlvbl07IH0KLQogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q29uc3RSYW5nZUl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAg
QVNTRVJUKCZpbW11dGFibGVORkEgPT0gJm90aGVyLmltbXV0YWJsZU5GQSk7CkBAIC0xMDksMTEg
KzEwNiwyNyBAQCBzdHJ1Y3QgSW1tdXRhYmxlTkZBIHsKICAgICAgICAgICAgIHJldHVybiAqdGhp
czsKICAgICAgICAgfQogCisgICAgICAgIENoYXJhY3RlclR5cGUgZmlyc3QoKSBjb25zdAorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gcmFuZ2UoKS5maXJzdDsKKyAgICAgICAgfQorCisg
ICAgICAgIENoYXJhY3RlclR5cGUgbGFzdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiByYW5nZSgpLmxhc3Q7CisgICAgICAgIH0KKwogICAgICAgICBJdGVyYWJsZUNvbnN0
VGFyZ2V0cyBkYXRhKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgSW1tdXRh
YmxlUmFuZ2U8Q2hhcmFjdGVyVHlwZT4mIHJhbmdlID0gaW1tdXRhYmxlTkZBLnRyYW5zaXRpb25z
W3Bvc2l0aW9uXTsKKyAgICAgICAgICAgIGNvbnN0IEltbXV0YWJsZVJhbmdlPENoYXJhY3RlclR5
cGU+JiByYW5nZSA9IHRoaXMtPnJhbmdlKCk7CiAgICAgICAgICAgICByZXR1cm4geyBpbW11dGFi
bGVORkEsIHJhbmdlLnRhcmdldFN0YXJ0LCByYW5nZS50YXJnZXRFbmQgfTsKICAgICAgICAgfTsK
KworICAgIHByaXZhdGU6CisgICAgICAgIGNvbnN0IEltbXV0YWJsZVJhbmdlPENoYXJhY3RlclR5
cGU+JiByYW5nZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBpbW11dGFi
bGVORkEudHJhbnNpdGlvbnNbcG9zaXRpb25dOworICAgICAgICB9CiAgICAgfTsKIAogICAgIHN0
cnVjdCBJdGVyYWJsZUNvbnN0UmFuZ2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9JbW11dGFibGVORkFOb2RlQnVpbGRlci5oCShyZXZp
c2lvbiAxODYzNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9JbW11dGFi
bGVORkFOb2RlQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw4ICs4OSw4IEBAIHB1Ymxp
YzoKICAgICB9OwogICAgIAogICAgIHN0cnVjdCBGYWtlUmFuZ2VJdGVyYXRvciB7Ci0gICAgICAg
IGNvbnN0IFRyaXZpYWxSYW5nZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gcmFuZ2U7IH0K
LSAgICAgICAgY29uc3QgVHJpdmlhbFJhbmdlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4g
JnJhbmdlOyB9CisgICAgICAgIENoYXJhY3RlclR5cGUgZmlyc3QoKSBjb25zdCB7IHJldHVybiBy
YW5nZS5maXJzdDsgfQorICAgICAgICBDaGFyYWN0ZXJUeXBlIGxhc3QoKSBjb25zdCB7IHJldHVy
biByYW5nZS5sYXN0OyB9CiAgICAgICAgIHVpbnQzMl90IGRhdGEoKSBjb25zdCB7IHJldHVybiB0
YXJnZXRJZDsgfQogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmFrZVJhbmdlSXRlcmF0
b3ImIG90aGVyKQogICAgICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9NdXRhYmxlUmFuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9NdXRhYmxlUmFuZ2UuaAkocmV2aXNpb24gMTg2MzYyKQorKysgU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvTXV0YWJsZVJhbmdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg5LDggKzg5LDYgQEAgcHVibGljOgogICAgIHVpbnQzMl90IG5leHRSYW5nZUluZGV4OwogICAg
IENoYXJhY3RlclR5cGUgZmlyc3Q7CiAgICAgQ2hhcmFjdGVyVHlwZSBsYXN0OwotCi0gICAgQ2hh
cmFjdGVyVHlwZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbGFzdCAtIGZpcnN0OyB9CiB9OwogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9NdXRhYmxlUmFuZ2VMaXN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTXV0YWJs
ZVJhbmdlTGlzdC5oCShyZXZpc2lvbiAxODYzNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9NdXRhYmxlUmFuZ2VMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgVHlwZWRNdXRhYmxlUmFuZ2UmIG9wZXJhdG9y
KigpIGNvbnN0IHsgcmV0dXJuIHJhbmdlTGlzdC5tX3Jhbmdlc1tpbmRleF07IH0KICAgICAgICAg
Y29uc3QgVHlwZWRNdXRhYmxlUmFuZ2UqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmcmFu
Z2VMaXN0Lm1fcmFuZ2VzW2luZGV4XTsgfQogCisgICAgICAgIENoYXJhY3RlclR5cGUgZmlyc3Qo
KSBjb25zdCB7IHJldHVybiByYW5nZUxpc3QubV9yYW5nZXNbaW5kZXhdLmZpcnN0OyB9CisgICAg
ICAgIENoYXJhY3RlclR5cGUgbGFzdCgpIGNvbnN0IHsgcmV0dXJuIHJhbmdlTGlzdC5tX3Jhbmdl
c1tpbmRleF0ubGFzdDsgfQorICAgICAgICBDaGFyYWN0ZXJUeXBlIGRhdGEoKSBjb25zdCB7IHJl
dHVybiByYW5nZUxpc3QubV9yYW5nZXNbaW5kZXhdLmRhdGE7IH0KKwogICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKICAg
ICAgICAgICAgIEFTU0VSVCgmcmFuZ2VMaXN0ID09ICZvdGhlci5yYW5nZUxpc3QpOwpAQCAtOTks
MjEgKzEwMywyMSBAQCBwdWJsaWM6CiAgICAgICAgIHVpbnQzMl90IGxhc3RTZWxmUmFuZ2VJbmRl
eCA9IDA7CiAgICAgICAgIHVpbnQzMl90IHNlbGZSYW5nZUluZGV4ID0gMDsKIAotICAgICAgICBh
dXRvIG90aGVyUmFuZ2VPZmZzZXQgPSBvdGhlckl0ZXJhdG9yLT5maXJzdDsgLy8gVG8gZ2V0IHRo
ZSByaWdodCB0eXBlIDopCisgICAgICAgIGF1dG8gb3RoZXJSYW5nZU9mZnNldCA9IG90aGVySXRl
cmF0b3IuZmlyc3QoKTsgLy8gVG8gZ2V0IHRoZSByaWdodCB0eXBlIDopCiAgICAgICAgIG90aGVy
UmFuZ2VPZmZzZXQgPSAwOwogCiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIFR5cGVkTXV0YWJs
ZVJhbmdlKiBhY3RpdmVTZWxmUmFuZ2UgPSAmbV9yYW5nZXNbc2VsZlJhbmdlSW5kZXhdOwogCiAg
ICAgICAgICAgICAvLyBGaXJzdCwgd2UgbW92ZSBmb3J3YXJkIHVudGlsIHdlIGZpbmQgc29tZXRo
aW5nIGludGVyZXN0aW5nLgotICAgICAgICAgICAgaWYgKGFjdGl2ZVNlbGZSYW5nZS0+bGFzdCA8
IG90aGVySXRlcmF0b3ItPmZpcnN0ICsgb3RoZXJSYW5nZU9mZnNldCkgeworICAgICAgICAgICAg
aWYgKGFjdGl2ZVNlbGZSYW5nZS0+bGFzdCA8IG90aGVySXRlcmF0b3IuZmlyc3QoKSArIG90aGVy
UmFuZ2VPZmZzZXQpIHsKICAgICAgICAgICAgICAgICBsYXN0U2VsZlJhbmdlSW5kZXggPSBzZWxm
UmFuZ2VJbmRleDsKICAgICAgICAgICAgICAgICBzZWxmUmFuZ2VJbmRleCA9IGFjdGl2ZVNlbGZS
YW5nZS0+bmV4dFJhbmdlSW5kZXg7CiAgICAgICAgICAgICAgICAgcmVhY2hlZFNlbGZFbmQgPSAh
c2VsZlJhbmdlSW5kZXg7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAob3RoZXJJdGVyYXRvci0+bGFzdCA8IGFjdGl2ZVNlbGZSYW5nZS0+
Zmlyc3QpIHsKLSAgICAgICAgICAgICAgICBpbnNlcnRCZXR3ZWVuKGxhc3RTZWxmUmFuZ2VJbmRl
eCwgc2VsZlJhbmdlSW5kZXgsIG90aGVySXRlcmF0b3ItPmZpcnN0ICsgb3RoZXJSYW5nZU9mZnNl
dCwgb3RoZXJJdGVyYXRvci0+bGFzdCwgZGF0YUNvbnZlcnRlci5jb252ZXJ0KG90aGVySXRlcmF0
b3IuZGF0YSgpKSk7CisgICAgICAgICAgICBpZiAob3RoZXJJdGVyYXRvci5sYXN0KCkgPCBhY3Rp
dmVTZWxmUmFuZ2UtPmZpcnN0KSB7CisgICAgICAgICAgICAgICAgaW5zZXJ0QmV0d2VlbihsYXN0
U2VsZlJhbmdlSW5kZXgsIHNlbGZSYW5nZUluZGV4LCBvdGhlckl0ZXJhdG9yLmZpcnN0KCkgKyBv
dGhlclJhbmdlT2Zmc2V0LCBvdGhlckl0ZXJhdG9yLmxhc3QoKSwgZGF0YUNvbnZlcnRlci5jb252
ZXJ0KG90aGVySXRlcmF0b3IuZGF0YSgpKSk7CiAKICAgICAgICAgICAgICAgICArK290aGVySXRl
cmF0b3I7CiAgICAgICAgICAgICAgICAgb3RoZXJSYW5nZU9mZnNldCA9IDA7CkBAIC0xMjYsMjQg
KzEzMCwyNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBCdXQgd2UgZG9uJ3Qga25vdyBob3cg
dGhleSBjb2xsaWRlLgogCiAgICAgICAgICAgICAvLyBEbyB3ZSBoYXZlIGEgcGFydCBvbiB0aGUg
bGVmdD8gQ3JlYXRlIGEgbmV3IHJhbmdlIGZvciBpdC4KLSAgICAgICAgICAgIGlmIChhY3RpdmVT
ZWxmUmFuZ2UtPmZpcnN0IDwgb3RoZXJJdGVyYXRvci0+Zmlyc3QgKyBvdGhlclJhbmdlT2Zmc2V0
KSB7CisgICAgICAgICAgICBpZiAoYWN0aXZlU2VsZlJhbmdlLT5maXJzdCA8IG90aGVySXRlcmF0
b3IuZmlyc3QoKSArIG90aGVyUmFuZ2VPZmZzZXQpIHsKICAgICAgICAgICAgICAgICBEYXRhVHlw
ZSBjb3BpZWREYXRhID0gYWN0aXZlU2VsZlJhbmdlLT5kYXRhOwogICAgICAgICAgICAgICAgIENo
YXJhY3RlclR5cGUgbmV3UmFuZ2VGaXJzdENoYXJhY3RlciA9IGFjdGl2ZVNlbGZSYW5nZS0+Zmly
c3Q7Ci0gICAgICAgICAgICAgICAgYWN0aXZlU2VsZlJhbmdlLT5maXJzdCA9IG90aGVySXRlcmF0
b3ItPmZpcnN0ICsgb3RoZXJSYW5nZU9mZnNldDsKLSAgICAgICAgICAgICAgICBpbnNlcnRCZXR3
ZWVuKGxhc3RTZWxmUmFuZ2VJbmRleCwgc2VsZlJhbmdlSW5kZXgsIG5ld1JhbmdlRmlyc3RDaGFy
YWN0ZXIsIG90aGVySXRlcmF0b3ItPmZpcnN0ICsgb3RoZXJSYW5nZU9mZnNldCAtIDEsIFdURjo6
bW92ZShjb3BpZWREYXRhKSk7CisgICAgICAgICAgICAgICAgYWN0aXZlU2VsZlJhbmdlLT5maXJz
dCA9IG90aGVySXRlcmF0b3IuZmlyc3QoKSArIG90aGVyUmFuZ2VPZmZzZXQ7CisgICAgICAgICAg
ICAgICAgaW5zZXJ0QmV0d2VlbihsYXN0U2VsZlJhbmdlSW5kZXgsIHNlbGZSYW5nZUluZGV4LCBu
ZXdSYW5nZUZpcnN0Q2hhcmFjdGVyLCBvdGhlckl0ZXJhdG9yLmZpcnN0KCkgKyBvdGhlclJhbmdl
T2Zmc2V0IC0gMSwgV1RGOjptb3ZlKGNvcGllZERhdGEpKTsKICAgICAgICAgICAgICAgICBhY3Rp
dmVTZWxmUmFuZ2UgPSAmbV9yYW5nZXNbc2VsZlJhbmdlSW5kZXhdOwotICAgICAgICAgICAgfSBl
bHNlIGlmIChvdGhlckl0ZXJhdG9yLT5maXJzdCArIG90aGVyUmFuZ2VPZmZzZXQgPCBhY3RpdmVT
ZWxmUmFuZ2UtPmZpcnN0KSB7Ci0gICAgICAgICAgICAgICAgaW5zZXJ0QmV0d2VlbihsYXN0U2Vs
ZlJhbmdlSW5kZXgsIHNlbGZSYW5nZUluZGV4LCBvdGhlckl0ZXJhdG9yLT5maXJzdCArIG90aGVy
UmFuZ2VPZmZzZXQsIGFjdGl2ZVNlbGZSYW5nZS0+Zmlyc3QgLSAxLCBkYXRhQ29udmVydGVyLmNv
bnZlcnQob3RoZXJJdGVyYXRvci5kYXRhKCkpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAob3Ro
ZXJJdGVyYXRvci5maXJzdCgpICsgb3RoZXJSYW5nZU9mZnNldCA8IGFjdGl2ZVNlbGZSYW5nZS0+
Zmlyc3QpIHsKKyAgICAgICAgICAgICAgICBpbnNlcnRCZXR3ZWVuKGxhc3RTZWxmUmFuZ2VJbmRl
eCwgc2VsZlJhbmdlSW5kZXgsIG90aGVySXRlcmF0b3IuZmlyc3QoKSArIG90aGVyUmFuZ2VPZmZz
ZXQsIGFjdGl2ZVNlbGZSYW5nZS0+Zmlyc3QgLSAxLCBkYXRhQ29udmVydGVyLmNvbnZlcnQob3Ro
ZXJJdGVyYXRvci5kYXRhKCkpKTsKIAogICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGZSYW5nZSA9
ICZtX3Jhbmdlc1tzZWxmUmFuZ2VJbmRleF07Ci0gICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShvdGhlclJhbmdlT2Zmc2V0IDwgYWN0aXZlU2VsZlJhbmdlLT5maXJzdCAtIG90aGVy
SXRlcmF0b3ItPmZpcnN0LCAiVGhlIG9mZnNldCBtdXN0IG1vdmUgZm9yd2FyZCBvciB3ZSBjb3Vs
ZCBnZXQgc3R1Y2sgb24gdGhpcyBvcGVyYXRpb24uIik7Ci0gICAgICAgICAgICAgICAgb3RoZXJS
YW5nZU9mZnNldCA9IGFjdGl2ZVNlbGZSYW5nZS0+Zmlyc3QgLSBvdGhlckl0ZXJhdG9yLT5maXJz
dDsKKyAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG90aGVyUmFuZ2VPZmZzZXQg
PCBhY3RpdmVTZWxmUmFuZ2UtPmZpcnN0IC0gb3RoZXJJdGVyYXRvci5maXJzdCgpLCAiVGhlIG9m
ZnNldCBtdXN0IG1vdmUgZm9yd2FyZCBvciB3ZSBjb3VsZCBnZXQgc3R1Y2sgb24gdGhpcyBvcGVy
YXRpb24uIik7CisgICAgICAgICAgICAgICAgb3RoZXJSYW5nZU9mZnNldCA9IGFjdGl2ZVNlbGZS
YW5nZS0+Zmlyc3QgLSBvdGhlckl0ZXJhdG9yLmZpcnN0KCk7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIC8vIEhlcmUsIHdlIGtub3cgYm90aCByYW5nZXMgc3RhcnQgYXQgdGhlIHNhbWUg
cG9pbnQsIHdlIG5lZWQgdG8gY3JlYXRlIHRoZSBwYXJ0IHRoYXQgaW50ZXJzZWN0CiAgICAgICAg
ICAgICAvLyBhbmQgbWVyZ2UgdGhlIGRhdGEuCiAKLSAgICAgICAgICAgIGlmIChhY3RpdmVTZWxm
UmFuZ2UtPmxhc3QgPT0gb3RoZXJJdGVyYXRvci0+bGFzdCkgeworICAgICAgICAgICAgaWYgKGFj
dGl2ZVNlbGZSYW5nZS0+bGFzdCA9PSBvdGhlckl0ZXJhdG9yLmxhc3QoKSkgewogICAgICAgICAg
ICAgICAgIC8vIElmIHRoZXkgZmluaXNoIHRvZ2V0aGVyLCB0aGluZ3MgYXJlIHJlYWxseSBlYXN5
OiB3ZSBqdXN0IGFkZCBCIHRvIEEuCiAgICAgICAgICAgICAgICAgZGF0YUNvbnZlcnRlci5leHRl
bmQoYWN0aXZlU2VsZlJhbmdlLT5kYXRhLCBvdGhlckl0ZXJhdG9yLmRhdGEoKSk7CiAKQEAgLTE1
NiwxNSArMTYwLDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGFjdGl2ZVNlbGZSYW5nZS0+bGFzdCA+IG90aGVy
SXRlcmF0b3ItPmxhc3QpIHsKKyAgICAgICAgICAgIGlmIChhY3RpdmVTZWxmUmFuZ2UtPmxhc3Qg
PiBvdGhlckl0ZXJhdG9yLmxhc3QoKSkgewogICAgICAgICAgICAgICAgIC8vIElmIEEgaXMgYmln
Z2VyIHRoYW4gQiwgd2UgYWRkIGEgbWVyZ2VkIHZlcnNpb24gYW5kIG1vdmUgQSB0byB0aGUgcmln
aHQuCiAKICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJUeXBlIGNvbWJpbmVkUGFydFN0YXJ0ID0g
YWN0aXZlU2VsZlJhbmdlLT5maXJzdDsKLSAgICAgICAgICAgICAgICBhY3RpdmVTZWxmUmFuZ2Ut
PmZpcnN0ID0gb3RoZXJJdGVyYXRvci0+bGFzdCArIDE7CisgICAgICAgICAgICAgICAgYWN0aXZl
U2VsZlJhbmdlLT5maXJzdCA9IG90aGVySXRlcmF0b3IubGFzdCgpICsgMTsKIAogICAgICAgICAg
ICAgICAgIERhdGFUeXBlIGNvbWJpbmVkRGF0YSA9IGFjdGl2ZVNlbGZSYW5nZS0+ZGF0YTsKICAg
ICAgICAgICAgICAgICBkYXRhQ29udmVydGVyLmV4dGVuZChjb21iaW5lZERhdGEsIG90aGVySXRl
cmF0b3IuZGF0YSgpKTsKLSAgICAgICAgICAgICAgICBpbnNlcnRCZXR3ZWVuKGxhc3RTZWxmUmFu
Z2VJbmRleCwgc2VsZlJhbmdlSW5kZXgsIGNvbWJpbmVkUGFydFN0YXJ0LCBvdGhlckl0ZXJhdG9y
LT5sYXN0LCBXVEY6Om1vdmUoY29tYmluZWREYXRhKSk7CisgICAgICAgICAgICAgICAgaW5zZXJ0
QmV0d2VlbihsYXN0U2VsZlJhbmdlSW5kZXgsIHNlbGZSYW5nZUluZGV4LCBjb21iaW5lZFBhcnRT
dGFydCwgb3RoZXJJdGVyYXRvci5sYXN0KCksIFdURjo6bW92ZShjb21iaW5lZERhdGEpKTsKIAog
ICAgICAgICAgICAgICAgICsrb3RoZXJJdGVyYXRvcjsKICAgICAgICAgICAgICAgICBvdGhlclJh
bmdlT2Zmc2V0ID0gMDsKQEAgLTE3MiwyMiArMTc2LDI3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBoZXJlLCBCIGVuZHMgYWZ0ZXIgQS4g
V2UgbWVyZ2UgdGhlIGludGVyc2VjdGlvbiBhbmQgbW92ZSBvbi4KLSAgICAgICAgICAgIEFTU0VS
VChvdGhlckl0ZXJhdG9yLT5sYXN0ID4gYWN0aXZlU2VsZlJhbmdlLT5sYXN0KTsKKyAgICAgICAg
ICAgIEFTU0VSVChvdGhlckl0ZXJhdG9yLmxhc3QoKSA+IGFjdGl2ZVNlbGZSYW5nZS0+bGFzdCk7
CiAgICAgICAgICAgICBkYXRhQ29udmVydGVyLmV4dGVuZChhY3RpdmVTZWxmUmFuZ2UtPmRhdGEs
IG90aGVySXRlcmF0b3IuZGF0YSgpKTsKIAotICAgICAgICAgICAgb3RoZXJSYW5nZU9mZnNldCA9
IGFjdGl2ZVNlbGZSYW5nZS0+bGFzdCAtIG90aGVySXRlcmF0b3ItPmZpcnN0ICsgMTsKKyAgICAg
ICAgICAgIG90aGVyUmFuZ2VPZmZzZXQgPSBhY3RpdmVTZWxmUmFuZ2UtPmxhc3QgLSBvdGhlckl0
ZXJhdG9yLmZpcnN0KCkgKyAxOwogICAgICAgICAgICAgbGFzdFNlbGZSYW5nZUluZGV4ID0gc2Vs
ZlJhbmdlSW5kZXg7CiAgICAgICAgICAgICBzZWxmUmFuZ2VJbmRleCA9IGFjdGl2ZVNlbGZSYW5n
ZS0+bmV4dFJhbmdlSW5kZXg7CiAgICAgICAgICAgICByZWFjaGVkU2VsZkVuZCA9ICFzZWxmUmFu
Z2VJbmRleDsKICAgICAgICAgfSB3aGlsZSAoIXJlYWNoZWRTZWxmRW5kICYmIG90aGVySXRlcmF0
b3IgIT0gb3RoZXJFbmQpOwogCiAgICAgICAgIHdoaWxlIChvdGhlckl0ZXJhdG9yICE9IG90aGVy
RW5kKSB7Ci0gICAgICAgICAgICBsYXN0U2VsZlJhbmdlSW5kZXggPSBhcHBlbmRSYW5nZShsYXN0
U2VsZlJhbmdlSW5kZXgsIG90aGVySXRlcmF0b3ItPmZpcnN0ICsgb3RoZXJSYW5nZU9mZnNldCwg
b3RoZXJJdGVyYXRvci0+bGFzdCwgZGF0YUNvbnZlcnRlci5jb252ZXJ0KG90aGVySXRlcmF0b3Iu
ZGF0YSgpKSk7CisgICAgICAgICAgICBsYXN0U2VsZlJhbmdlSW5kZXggPSBhcHBlbmRSYW5nZShs
YXN0U2VsZlJhbmdlSW5kZXgsIG90aGVySXRlcmF0b3IuZmlyc3QoKSArIG90aGVyUmFuZ2VPZmZz
ZXQsIG90aGVySXRlcmF0b3IubGFzdCgpLCBkYXRhQ29udmVydGVyLmNvbnZlcnQob3RoZXJJdGVy
YXRvci5kYXRhKCkpKTsKICAgICAgICAgICAgIG90aGVyUmFuZ2VPZmZzZXQgPSAwOwogICAgICAg
ICAgICAgKytvdGhlckl0ZXJhdG9yOwogICAgICAgICB9CiAgICAgfQogCisgICAgdW5zaWduZWQg
c2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9yYW5nZXMuc2l6ZSgpOworICAg
IH0KKwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9y
YW5nZXMuaXNFbXB0eSgpOwpAQCAtMjQxLDggKzI1MCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGRv
IHsKICAgICAgICAgICAgIG1fcmFuZ2VzLmFwcGVuZChUeXBlZE11dGFibGVSYW5nZShkYXRhQ29u
dmVydGVyLmNvbnZlcnQob3RoZXJJdGVyYXRvci5kYXRhKCkpLAogICAgICAgICAgICAgICAgIGxv
b3BDb3VudGVyICsgMSwKLSAgICAgICAgICAgICAgICBvdGhlckl0ZXJhdG9yLT5maXJzdCwKLSAg
ICAgICAgICAgICAgICBvdGhlckl0ZXJhdG9yLT5sYXN0KSk7CisgICAgICAgICAgICAgICAgb3Ro
ZXJJdGVyYXRvci5maXJzdCgpLAorICAgICAgICAgICAgICAgIG90aGVySXRlcmF0b3IubGFzdCgp
KSk7CiAgICAgICAgICAgICArK2xvb3BDb3VudGVyOwogICAgICAgICAgICAgKytvdGhlckl0ZXJh
dG9yOwogICAgICAgICB9IHdoaWxlIChvdGhlckl0ZXJhdG9yICE9IG90aGVyRW5kKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAJKHJldmlz
aW9uIDE4NjM2MikKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZB
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDczICszMzYsNiBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgY3JlYXRlQ29tYmluZWRUcmFuc2l0CiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wg
Y2FuVXNlRmFsbGJhY2tUcmFuc2l0aW9uKGNvbnN0IFByZWFsbG9jYXRlZE5GQU5vZGVSYW5nZUxp
c3QmIHJhbmdlTGlzdCkKLXsKLSAgICAvLyBUcmFuc2l0aW9ucyBjYW4gY29udGFpbnMgIjAiIGlm
IHRoZSBleHByZXNzaW9uIGhhcyBhIGVuZC1vZi1saW5lIG1hcmtlci4KLSAgICAvLyBGYWxsYmFj
ayB0cmFuc2l0aW9ucyBjb3ZlciAxLTEyNy4gV2UgaGF2ZSB0byBiZSBjYXJlZnVsIHdpdGggdGhl
IGZpcnN0LgotCi0gICAgYXV0byBpdGVyYXRvciA9IHJhbmdlTGlzdC5iZWdpbigpOwotICAgIGF1
dG8gZW5kID0gcmFuZ2VMaXN0LmVuZCgpOwotICAgIGlmIChpdGVyYXRvciA9PSBlbmQpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNoYXIgbGFzdFNlZW5DaGFyYWN0ZXIgPSAwOwotICAg
IGlmICghaXRlcmF0b3ItPmZpcnN0KSB7Ci0gICAgICAgIGxhc3RTZWVuQ2hhcmFjdGVyID0gaXRl
cmF0b3ItPmxhc3Q7Ci0gICAgICAgIGlmIChsYXN0U2VlbkNoYXJhY3RlciA9PSAxMjcpCi0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgKytpdGVyYXRvcjsKLSAgICB9Ci0KLSAgICBm
b3IgKDtpdGVyYXRvciAhPSBlbmQ7ICsraXRlcmF0b3IpIHsKLSAgICAgICAgQVNTRVJUKGl0ZXJh
dG9yLT5maXJzdCA+IGxhc3RTZWVuQ2hhcmFjdGVyKTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yLT5m
aXJzdCAhPSBsYXN0U2VlbkNoYXJhY3RlciArIDEpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgaWYgKGl0ZXJhdG9yLT5sYXN0ID09IDEyNykKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICBsYXN0U2VlbkNoYXJhY3RlciA9IGl0ZXJhdG9yLT5sYXN0OwotICAg
IH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdWludDMyX3QgZmluZEJl
c3RGYWxsYmFja1RhcmdldChjb25zdCBQcmVhbGxvY2F0ZWRORkFOb2RlUmFuZ2VMaXN0JiByYW5n
ZUxpc3QsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCwgMTI4PiYgcmFuZ2VUb1RhcmdldCkKLXsKLSAg
ICBBU1NFUlQoY2FuVXNlRmFsbGJhY2tUcmFuc2l0aW9uKHJhbmdlTGlzdCkpOwotCi0gICAgSGFz
aE1hcDx1aW50MzJfdCwgdW5zaWduZWQsIERlZmF1bHRIYXNoPHVpbnQzMl90Pjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50MzJfdD4+IGhpc3RvZ3JhbTsKLQot
ICAgIHVuc2lnbmVkIHJhbmdlVG9UYXJnZXRJbmRleCA9IDA7Ci0gICAgYXV0byBpdGVyYXRvciA9
IHJhbmdlTGlzdC5iZWdpbigpOwotICAgIGF1dG8gZW5kID0gcmFuZ2VMaXN0LmVuZCgpOwotICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoaXRlcmF0b3IgIT0gZW5kLCAiQW4gZW1wdHkgcmFuZ2UgbGlz
dCBjYW5ub3QgdXNlIGEgZmFsbGJhY2sgdHJhbnNpdGlvbi4iKTsKLQotICAgIGlmICghaXRlcmF0
b3ItPmZpcnN0ICYmICFpdGVyYXRvci0+bGFzdCkgewotICAgICAgICArK2l0ZXJhdG9yOwotICAg
ICAgICArK3JhbmdlVG9UYXJnZXRJbmRleDsKLSAgICB9Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShpdGVyYXRvciAhPSBlbmQsICJBbiBlbXB0eSByYW5nZSBsaXN0IG1hdGNoaW5nIG9ubHkgemVy
byBjYW5ub3QgdXNlIGEgZmFsbGJhY2sgdHJhbnNpdGlvbi4iKTsKLQotICAgIHVpbnQzMl90IGJl
c3RUYXJnZXQgPSByYW5nZVRvVGFyZ2V0W3JhbmdlVG9UYXJnZXRJbmRleF07Ci0gICAgdW5zaWdu
ZWQgYmVzdFRhcmdldFNjb3JlID0gIWl0ZXJhdG9yLT5maXJzdCA/IGl0ZXJhdG9yLT5zaXplKCkg
LSAxIDogaXRlcmF0b3ItPnNpemUoKTsKLSAgICBoaXN0b2dyYW0uYWRkKGJlc3RUYXJnZXQsIGJl
c3RUYXJnZXRTY29yZSk7Ci0gICAgKytpdGVyYXRvcjsKLSAgICArK3JhbmdlVG9UYXJnZXRJbmRl
eDsKLQotICAgIGZvciAoO2l0ZXJhdG9yICE9IGVuZDsgKytpdGVyYXRvciwgKytyYW5nZVRvVGFy
Z2V0SW5kZXgpIHsKLSAgICAgICAgdW5zaWduZWQgcmFuZ2VTaXplID0gaXRlcmF0b3ItPnNpemUo
KTsKLSAgICAgICAgdWludDMyX3QgdGFyZ2V0ID0gcmFuZ2VUb1RhcmdldFtyYW5nZVRvVGFyZ2V0
SW5kZXhdOwotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IGhpc3RvZ3JhbS5hZGQodGFyZ2V0LCBy
YW5nZVNpemUpOwotICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICAg
ICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSByYW5nZVNpemU7Ci0gICAgICAgIGlmIChh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID4gYmVzdFRhcmdldFNjb3JlKSB7Ci0gICAgICAgICAg
ICBiZXN0VGFyZ2V0U2NvcmUgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgICAgICAg
ICAgYmVzdFRhcmdldCA9IHRhcmdldDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gYmVz
dFRhcmdldDsKLX0KLQogc3RhdGljIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgZ2V0T3JDcmVhdGVE
RkFOb2RlKGNvbnN0IE5vZGVJZFNldCYgbmZhTm9kZVNldCwgY29uc3QgTkZBJiBuZmEsIERGQSYg
ZGZhLCBVbmlxdWVOb2RlSWRTZXRUYWJsZSYgdW5pcXVlTm9kZUlkU2V0VGFibGUsIFZlY3RvcjxV
bmlxdWVOb2RlSWRTZXRJbXBsKj4mIHVucHJvY2Vzc2VkTm9kZXMpCiB7CiAgICAgTm9kZUlkU2V0
VG9VbmlxdWVOb2RlSWRTZXRTb3VyY2Ugbm9kZUlkU2V0VG9VbmlxdWVOb2RlSWRTZXRTb3VyY2Uo
ZGZhLCBuZmEsIG5mYU5vZGVTZXQpOwpAQCAtNDMyLDQ2ICszNjUsMjQgQEAgREZBIE5GQVRvREZB
Ojpjb252ZXJ0KE5GQSYgbmZhKQogICAgIHVucHJvY2Vzc2VkTm9kZXMuYXBwZW5kKGFkZFJlc3Vs
dC5pdGVyYXRvci0+aW1wbCgpKTsKIAogICAgIFByZWFsbG9jYXRlZE5GQU5vZGVSYW5nZUxpc3Qg
Y29tYmluZWRSYW5nZUxpc3Q7Ci0gICAgVmVjdG9yPHVuc2lnbmVkLCAxMjg+IHJhbmdlVG9UYXJn
ZXQ7CiAgICAgZG8gewogICAgICAgICBVbmlxdWVOb2RlSWRTZXRJbXBsKiB1bmlxdWVOb2RlSWRT
ZXRJbXBsID0gdW5wcm9jZXNzZWROb2Rlcy50YWtlTGFzdCgpOwogICAgICAgICBjcmVhdGVDb21i
aW5lZFRyYW5zaXRpb24oY29tYmluZWRSYW5nZUxpc3QsICp1bmlxdWVOb2RlSWRTZXRJbXBsLCBu
ZmEsIG5mYU5vZGVDbG9zdXJlcyk7CiAKLSAgICAgICAgcmFuZ2VUb1RhcmdldC5jbGVhcigpOwor
ICAgICAgICB1bnNpZ25lZCB0cmFuc2l0aW9uc1N0YXJ0ID0gZGZhLnRyYW5zaXRpb25SYW5nZXMu
c2l6ZSgpOwogICAgICAgICBmb3IgKGNvbnN0IE5GQU5vZGVSYW5nZSYgcmFuZ2UgOiBjb21iaW5l
ZFJhbmdlTGlzdCkgewogICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0Tm9kZUlkID0gZ2V0T3JD
cmVhdGVERkFOb2RlKHJhbmdlLmRhdGEsIG5mYSwgZGZhLCB1bmlxdWVOb2RlSWRTZXRUYWJsZSwg
dW5wcm9jZXNzZWROb2Rlcyk7Ci0gICAgICAgICAgICByYW5nZVRvVGFyZ2V0LmFwcGVuZCh0YXJn
ZXROb2RlSWQpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB1c2VGYWxsYmFja1RyYW5zaXRp
b24gPSBjYW5Vc2VGYWxsYmFja1RyYW5zaXRpb24oY29tYmluZWRSYW5nZUxpc3QpOwotICAgICAg
ICB1aW50MzJfdCBwcmVmZXJlZEZhbGxiYWNrVGFyZ2V0ID0gMDsKLSAgICAgICAgaWYgKHVzZUZh
bGxiYWNrVHJhbnNpdGlvbikKLSAgICAgICAgICAgIHByZWZlcmVkRmFsbGJhY2tUYXJnZXQgPSBm
aW5kQmVzdEZhbGxiYWNrVGFyZ2V0KGNvbWJpbmVkUmFuZ2VMaXN0LCByYW5nZVRvVGFyZ2V0KTsK
LQotICAgICAgICB1bnNpZ25lZCB0cmFuc2l0aW9uc1N0YXJ0ID0gZGZhLnRyYW5zaXRpb25DaGFy
YWN0ZXJzLnNpemUoKTsKLSAgICAgICAgdW5zaWduZWQgcmFuZ2VUb1RhcmdldEluZGV4ID0gMDsK
LQotICAgICAgICBmb3IgKGNvbnN0IE5GQU5vZGVSYW5nZSYgcmFuZ2UgOiBjb21iaW5lZFJhbmdl
TGlzdCkgewotICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0Tm9kZUlkID0gcmFuZ2VUb1Rhcmdl
dFtyYW5nZVRvVGFyZ2V0SW5kZXhdOwotCi0gICAgICAgICAgICBpZiAoISh1c2VGYWxsYmFja1Ry
YW5zaXRpb24gJiYgdGFyZ2V0Tm9kZUlkID09IHByZWZlcmVkRmFsbGJhY2tUYXJnZXQpKSB7Ci0g
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmFuZ2UuZmlyc3Q7IGkgPD0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHJhbmdlLmxhc3QpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAg
ZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJzLmFwcGVuZChzdGF0aWNfY2FzdDx1aW50OF90PihpKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zLmFwcGVuZCh0
YXJnZXROb2RlSWQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICsrcmFuZ2VUb1RhcmdldEluZGV4OworICAgICAgICAgICAgZGZhLnRyYW5zaXRpb25SYW5n
ZXMuYXBwZW5kKHsgcmFuZ2UuZmlyc3QsIHJhbmdlLmxhc3QgfSk7CisgICAgICAgICAgICBkZmEu
dHJhbnNpdGlvbkRlc3RpbmF0aW9ucy5hcHBlbmQodGFyZ2V0Tm9kZUlkKTsKICAgICAgICAgfQot
ICAgICAgICB1bnNpZ25lZCB0cmFuc2l0aW9uc0VuZCA9IGRmYS50cmFuc2l0aW9uQ2hhcmFjdGVy
cy5zaXplKCk7CisgICAgICAgIHVuc2lnbmVkIHRyYW5zaXRpb25zRW5kID0gZGZhLnRyYW5zaXRp
b25SYW5nZXMuc2l6ZSgpOwogICAgICAgICB1bnNpZ25lZCB0cmFuc2l0aW9uc0xlbmd0aCA9IHRy
YW5zaXRpb25zRW5kIC0gdHJhbnNpdGlvbnNTdGFydDsKKwogICAgICAgICB1bnNpZ25lZCBkZmFO
b2RlSWQgPSB1bmlxdWVOb2RlSWRTZXRJbXBsLT5tX2RmYU5vZGVJZDsKICAgICAgICAgREZBTm9k
ZSYgZGZhU291cmNlTm9kZSA9IGRmYS5ub2Rlc1tkZmFOb2RlSWRdOwotICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKHRyYW5zaXRpb25zTGVuZ3RoIDwgMTI3LCAiVHJhbnNpdGlvbnMgY292ZXJp
bmcgdGhlIGVudGlyZSBhbHBoYWJldCBzaG91bGQgdXNlIGEgZmFsbGJhY2sgdHJhbnNpdGlvbiIp
OwogICAgICAgICBkZmFTb3VyY2VOb2RlLnNldFRyYW5zaXRpb25zKHRyYW5zaXRpb25zU3RhcnQs
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHRyYW5zaXRpb25zTGVuZ3RoKSk7Ci0KLSAgICAgICAgaWYg
KHVzZUZhbGxiYWNrVHJhbnNpdGlvbikKLSAgICAgICAgICAgIGRmYVNvdXJjZU5vZGUuYWRkRmFs
bGJhY2tUcmFuc2l0aW9uKGRmYSwgcHJlZmVyZWRGYWxsYmFja1RhcmdldCk7CiAgICAgfSB3aGls
ZSAoIXVucHJvY2Vzc2VkTm9kZXMuaXNFbXB0eSgpKTsKKwogICAgIHJldHVybiBkZmE7CiB9CiAK
SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE4NjM2MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDE1LTA3LTA2ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0
Lm9yZz4KKworICAgICAgICBbQ29udGVudCBFeHRlbnNpb25zXSBNYWtlIHRoZSBERkEgdHJhbnNp
dGlvbnMgcmFuZ2VzIGluc3RlYWQgb2YgY2hhcmFjdGVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Db250ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0RGQU1pbmltaXplci5jcHA6CisgICAgICAgIFNpbmNlIHRoZSBtaW5pbWl6ZXIgaXMg
cGVyZmVjdCwgd2UgZ2V0IHRoZSBtaW5pbWFsIHNvbHV0aW9uIG5vdywKKyAgICAgICAgd2hpY2gg
aXMgcmVhbGx5IGNvb2whCisKIDIwMTUtMDctMDYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNzA2MzkuCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50
RXh0ZW5zaW9ucy5jcHAJKHJldmlzaW9uIDE4NjM2MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
MzAsNCArMTkzMCw0NzAgQEAgVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBRdWFudGlmaWVk
TwogICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6
ejovL3d3dy5kZGpqeXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKIH0KIAorVEVTVF9GKENvbnRlbnRFeHRlbnNpb25U
ZXN0LCBDb21iaW5lZFJhbmdlT3ZlcmxhcENhc2UxKQoreworICAgIGF1dG8gbWF0Y2hCYWNrZW5k
ID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdn
ZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykqW2EtbV1cIn19LCIKKyAgICAgICAgIntcImFj
dGlvblwiOntcInR5cGVcIjpcImlnbm9yZS1wcmV2aW91cy1ydWxlc1wifSxcInRyaWdnZXJcIjp7
XCJ1cmwtZmlsdGVyXCI6XCJeKGJhcikqW2MtZV1cIn19XSIpOworCisgICAgdGVzdFJlcXVlc3Qo
bWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJhOi8vd3d3LndlYmtpdC5vcmcvIiks
IHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0
UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImI6Ly93d3cud2Via2l0
Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOwor
ICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYzovL3d3
dy53ZWJraXQub3JnLyIpLCB7IH0sIHRydWUpOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZDovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0sIHRydWUp
OworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZTov
L3d3dy53ZWJraXQub3JnLyIpLCB7IH0sIHRydWUpOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZjovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qo
bWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJtOi8vd3d3LndlYmtpdC5vcmcvIiks
IHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0
UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoIm46Ly93d3cud2Via2l0
Lm9yZy8iKSwgeyB9KTsKKworICAgIGF1dG8gc2VhcmNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJb
e1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRl
clwiOlwiKGZvbykqW2EtbV1cIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpc
Imlnbm9yZS1wcmV2aW91cy1ydWxlc1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIo
YmFyKSpbYy1lXVwifX1dIik7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmEueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwg
bWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmIueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmMueHh4LyIpLCB7IH0sIHRydWUp
OworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6
ejovL3d3dy5kLnh4eC8iKSwgeyB9LCB0cnVlKTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZS54eHgvIiksIHsgfSwgdHJ1ZSk7
CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6
Oi8vd3d3LmYueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xv
YWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgienp6Oi8vd3d3Lm0ueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpC
bG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgienp6Oi8vd3d3Lm4ueHh4LyIpLCB7IH0pOworfQorCisKK1RFU1RfRihDb250ZW50
RXh0ZW5zaW9uVGVzdCwgQ29tYmluZWRSYW5nZU92ZXJsYXBDYXNlMikKK3sKKyAgICBhdXRvIG1h
dGNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tc
In0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihmb28pKlthLW1dXCJ9fSwiCisgICAg
ICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJpZ25vcmUtcHJldmlvdXMtcnVsZXNcIn0sXCJ0
cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihiYXIpKmJcIn19XSIpOworCisgICAgdGVzdFJl
cXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJhOi8vd3d3LndlYmtpdC5v
cmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImI6Ly93d3cu
d2Via2l0Lm9yZy8iKSwgeyB9LCB0cnVlKTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoImM6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0
ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgibTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVl
c3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJuOi8vd3d3LndlYmtpdC5vcmcv
IiksIHsgfSk7CisKKyAgICBhdXRvIHNlYXJjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFj
dGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpc
Iihmb28pKlthLW1dXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJpZ25v
cmUtcHJldmlvdXMtcnVsZXNcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGJhcikq
bFwifX1dIik7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgienp6Oi8vd3d3LmEueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBl
OjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgienp6Oi8vd3d3LmsueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmwueHh4LyIpLCB7IH0sIHRydWUpOworICAgIHRl
c3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5t
Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOwor
ICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejov
L3d3dy5uLnh4eC8iKSwgeyB9KTsKK30KKworVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBD
b21iaW5lZFJhbmdlT3ZlcmxhcENhc2UzKQoreworICAgIGF1dG8gbWF0Y2hCYWNrZW5kID0gbWFr
ZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7
XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykqW2ItZF1cIn19LCIKKyAgICAgICAgIntcImFjdGlvblwi
OntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9
LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4oYmFyKSpbYS1tXVwifX1dIik7CisKKyAg
ICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImE6Ly93d3cu
d2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxh
eU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoImI6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6
QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFj
dGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoImQ6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lv
bnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImU6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0
ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoIm06Ly93d3cud2Vi
a2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5v
bmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoIm46Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9KTsKKworICAgIGF1dG8gc2VhcmNo
QmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0s
XCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGZvbykqW2ItZF1cIn19LCIKKyAgICAgICAg
IntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6
XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIihiYXIpKlthLW1dXCJ9
fV0iKTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJ6eno6Ly93d3cuYS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNT
U0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwg
bWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmIueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kLnh4eC8iKSwgeyBDb250ZW50RXh0
ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZS54eHgvIiksIHsgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAg
dGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3
Lm0ueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9u
ZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoInp6ejovL3d3dy5uLnh4eC8iKSwgeyB9KTsKK30KKworVEVTVF9GKENvbnRlbnRF
eHRlbnNpb25UZXN0LCBDb21iaW5lZFJhbmdlT3ZlcmxhcENhc2U0KQoreworICAgIGF1dG8gbWF0
Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wi
fSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykqbFwifX0sIgorICAgICAgICAi
e1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9uZVwiLFwic2VsZWN0b3JcIjpc
Ii5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihiYXIpKlthLW1dXCJ9
fV0iKTsKKworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgiYTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBl
OjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiazovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRl
c3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgibDovL3d3dy53ZWJr
aXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9u
ZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOwor
ICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgibTovL3d3
dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNw
bGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgibjovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOworCisgICAgYXV0byBz
ZWFyY2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9j
a1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoZm9vKSpsXCJ9fSwiCisgICAgICAg
ICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3Rvclwi
OlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoYmFyKSpbYS1tXVwi
fX1dIik7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgienp6Oi8vd3d3LmEueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpD
U1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5rLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVx
dWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cubC54eHgv
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0
b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3Lm0u
eHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNl
bGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoInp6ejovL3d3dy5uLnh4eC8iKSwgeyB9KTsKK30KKworVEVTVF9GKENvbnRlbnRFeHRl
bnNpb25UZXN0LCBDb21iaW5lZFJhbmdlT3ZlcmxhcENhc2U1KQoreworICAgIGF1dG8gbWF0Y2hC
YWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxc
InRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykqW2EtZV1cIn19LCIKKyAgICAgICAg
IntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6
XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4oYmFyKSpbZS1oXVwi
fX1dIik7CisKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoImE6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlw
ZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgiZDovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJlOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJmOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAg
dGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJoOi8vd3d3Lndl
YmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlO
b25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1l
bnRSZXF1ZXN0KCJpOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisKKyAgICBhdXRvIHNlYXJj
aEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9
LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIihmb28pKlthLWVdXCJ9fSwiCisgICAgICAg
ICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3Rvclwi
OlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoYmFyKSpbZS1oXVwi
fX1dIik7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgienp6Oi8vd3d3LmEueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpC
bG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgienp6Oi8vd3d3LmQueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25U
eXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmUueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5mLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVz
dChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuaC54eHgvIiks
IHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3Ig
fSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
enp6Oi8vd3d3LmkueHh4LyIpLCB7IH0pOworfQorCitURVNUX0YoQ29udGVudEV4dGVuc2lvblRl
c3QsIENvbWJpbmVkUmFuZ2VPdmVybGFwQ2FzZTYpCit7CisgICAgYXV0byBtYXRjaEJhY2tlbmQg
PSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dl
clwiOntcInVybC1maWx0ZXJcIjpcIl4oZm9vKSplXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25c
Ijp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwi
fSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGJhcikqW2UtaF1cIn19XSIpOworCisg
ICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJhOi8vd3d3
LndlYmtpdC5vcmcvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJkOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisgICAgdGVzdFJl
cXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJlOi8vd3d3LndlYmtpdC5v
cmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2Vs
ZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAg
dGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJmOi8vd3d3Lndl
YmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlO
b25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1l
bnRSZXF1ZXN0KCJoOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFj
dGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0
Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJpOi8vd3d3LndlYmtpdC5vcmcvIiksIHsg
fSk7CisKKyAgICBhdXRvIHNlYXJjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwi
OntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIihmb28p
KmVcIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5v
bmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJc
IjpcIihiYXIpKltlLWhdXCJ9fV0iKTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJl
cXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmQueHh4
LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoInp6ejovL3d3dy5lLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlw
ZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6
OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1l
bnRSZXF1ZXN0KCJ6eno6Ly93d3cuZi54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmgueHh4LyIpLCB7IENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAg
IHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3
dy5pLnh4eC8iKSwgeyB9KTsKK30KKworVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBDb21i
aW5lZFJhbmdlT3ZlcmxhcENhc2U3KQoreworICAgIGF1dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJh
Y2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1
cmwtZmlsdGVyXCI6XCJeKGZvbykqW2EtZV1cIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntc
InR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwi
dHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4oYmFyKSplXCJ9fV0iKTsKKworICAgIHRlc3RS
ZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYTovL3d3dy53ZWJraXQu
b3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7Cisg
ICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJkOi8vd3d3
LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9h
ZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
ImU6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJs
b2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoImY6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9KTsKKworICAgIGF1dG8gc2VhcmNoQmFj
a2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0
cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGZvbykqW2EtZV1cIn19LCIKKyAgICAgICAgIntc
ImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIu
aGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIihiYXIpKmVcIn19XSIpOwor
ICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejov
L3d3dy5hLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2Fk
IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
Inp6ejovL3d3dy5kLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Qmxv
Y2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoInp6ejovL3d3dy5lLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlw
ZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6
OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1l
bnRSZXF1ZXN0KCJ6eno6Ly93d3cuZi54eHgvIiksIHsgfSk7Cit9CisKK1RFU1RfRihDb250ZW50
RXh0ZW5zaW9uVGVzdCwgQ29tYmluZWRSYW5nZU92ZXJsYXBDYXNlOCkKK3sKKyAgICBhdXRvIG1h
dGNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tc
In0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihmb28pKltlLWhdXCJ9fSwiCisgICAg
ICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3Rv
clwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGJhcikqW2Et
ZV1cIn19XSIpOworCisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJhOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJkOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7Cisg
ICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJlOi8vd3d3
LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3Bs
YXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQg
fSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJm
Oi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJs
b2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoImg6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9u
VHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgiaTovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOworCisgICAgYXV0byBz
ZWFyY2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9j
a1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoZm9vKSpbZS1oXVwifX0sIgorICAg
ICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9uZVwiLFwic2VsZWN0
b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGJhcikqW2Et
ZV1cIn19XSIpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoInp6ejovL3d3dy5hLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlw
ZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZC54eHgvIiksIHsgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmUu
eHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNl
bGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAg
IHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3
dy5mLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0p
OworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6
ejovL3d3dy5oLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tM
b2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoInp6ejovL3d3dy5pLnh4eC8iKSwgeyB9KTsKK30KKworVEVTVF9GKENvbnRlbnRFeHRlbnNp
b25UZXN0LCBDb21iaW5lZFJhbmdlT3ZlcmxhcENhc2U5KQoreworICAgIGF1dG8gbWF0Y2hCYWNr
ZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRy
aWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykqZVwifX0sIgorICAgICAgICAie1wiYWN0
aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9uZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRk
ZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihiYXIpKlthLWVdXCJ9fV0iKTsK
KworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYTov
L3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NE
aXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgiZDovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1
ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZTovL3d3dy53ZWJraXQub3Jn
LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVj
dG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRl
c3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZjovL3d3dy53ZWJr
aXQub3JnLyIpLCB7IH0pOworCisgICAgYXV0byBzZWFyY2hCYWNrZW5kID0gbWFrZUJhY2tlbmQo
Ilt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmls
dGVyXCI6XCIoZm9vKSplXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJj
c3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7
XCJ1cmwtZmlsdGVyXCI6XCIoYmFyKSpbYS1lXVwifX1dIik7CisgICAgdGVzdFJlcXVlc3Qoc2Vh
cmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmEueHh4LyIpLCB7IENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOwor
ICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejov
L3d3dy5kLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxh
eU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFj
dGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmYueHh4LyIpLCB7IH0pOworfQorCitURVNUX0Yo
Q29udGVudEV4dGVuc2lvblRlc3QsIENvbWJpbmVkUmFuZ2VPdmVybGFwQ2FzZTEwKQoreworICAg
IGF1dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6
XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykqW2UtaF1cIn19
LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixc
InNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4o
YmFyKSplXCJ9fV0iKTsKKworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgiYTovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0
KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZDovL3d3dy53ZWJraXQub3JnLyIp
LCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgiZTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBl
OjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgiZjovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJoOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lv
bnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImk6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9KTsKKwor
ICAgIGF1dG8gc2VhcmNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlw
ZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGZvbykqW2UtaF1c
In19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVc
IixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpc
IihiYXIpKmVcIn19XSIpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoInp6ejovL3d3dy5hLnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChz
ZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZC54eHgvIiksIHsg
fSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
enp6Oi8vd3d3LmUueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NE
aXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tM
b2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoInp6ejovL3d3dy5mLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoInp6ejovL3d3dy5oLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9u
VHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5E
b2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5pLnh4eC8iKSwgeyB9KTsKK30KKworVEVTVF9GKENv
bnRlbnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFJhbmdlT3ZlcmxhcENhc2UxMSkKK3sKKyAgICBh
dXRvIG1hdGNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwi
YmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihmb28pKltlLWddXCJ9fSwi
CisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIsXCJz
ZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGJh
cikqW2QtZl1cIn19XSIpOworCisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJjOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisgICAgdGVzdFJlcXVl
c3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJkOi8vd3d3LndlYmtpdC5vcmcv
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0
b3IgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJlOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6
OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpC
bG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJmOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25U
eXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJnOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoImg6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9KTsKKworICAg
IGF1dG8gc2VhcmNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwi
OlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGZvbykqW2UtZ11cIn19
LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixc
InNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIihi
YXIpKltkLWZdXCJ9fV0iKTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYy54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qo
c2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmQueHh4LyIpLCB7
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0p
OworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6
ejovL3d3dy5lLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlz
cGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9h
ZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJ6eno6Ly93d3cuZi54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNT
U0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9j
a0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgienp6Oi8vd3d3LmcueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBl
OjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgienp6Oi8vd3d3LmgueHh4LyIpLCB7IH0pOworfQorCisKK1RFU1RfRihDb250
ZW50RXh0ZW5zaW9uVGVzdCwgQ29tYmluZWRSYW5nZU92ZXJsYXBDYXNlMTIpCit7CisgICAgYXV0
byBtYXRjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJs
b2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4oZm9vKSpbZS1nXVwifX0sIgor
ICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9uZVwiLFwic2Vs
ZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihiYXIp
KltkLWddXCJ9fV0iKTsKKworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgiYzovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0
KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZDovL3d3dy53ZWJraXQub3JnLyIp
LCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9y
IH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
ZTovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpD
U1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Qmxv
Y2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgiZjovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25U
eXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlw
ZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgiZzovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgiaDovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOworCisgICAgYXV0
byBzZWFyY2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJi
bG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoZm9vKSpbZS1nXVwifX0sIgor
ICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9uZVwiLFwic2Vs
ZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGJhcikq
W2QtZ11cIn19XSIpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoInp6ejovL3d3dy5jLnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFy
Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZC54eHgvIiksIHsgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7Cisg
ICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8v
d3d3LmUueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5
Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0p
OworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6
ejovL3d3dy5mLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlz
cGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9h
ZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJ6eno6Ly93d3cuZy54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNT
U0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9j
a0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgienp6Oi8vd3d3LmgueHh4LyIpLCB7IH0pOworfQorCitURVNUX0YoQ29udGVudEV4dGVu
c2lvblRlc3QsIENvbWJpbmVkUmFuZ2VPdmVybGFwQ2FzZTEzKQoreworICAgIGF1dG8gbWF0Y2hC
YWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxc
InRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJeKGZvbykqW2ItZF1cIn19LCIKKyAgICAgICAg
IntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6
XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4oYmFyKSpbYy1lXVwi
fX1dIik7CisKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoImE6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChtYXRjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImI6Ly93d3cud2Via2l0Lm9yZy8iKSwgeyBDb250
ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0
KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYzovL3d3dy53ZWJraXQub3JnLyIp
LCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9y
LCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RS
ZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZDovL3d3dy53ZWJraXQu
b3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNl
bGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAg
IHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiZTovL3d3dy53
ZWJraXQub3JnLyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5
Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgiaDovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOworCisgICAgYXV0byBzZWFy
Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wi
fSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoZm9vKSpbYi1kXVwifX0sIgorICAgICAg
ICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9uZVwiLFwic2VsZWN0b3Jc
IjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGJhcikqW2MtZV1c
In19XSIpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoInp6ejovL3d3dy5hLnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYi54eHgvIiksIHsgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFy
Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYy54eHgvIiksIHsgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qo
c2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmQueHh4LyIpLCB7
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBD
b250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1
ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5lLnh4eC8i
KSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3Rv
ciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJ6eno6Ly93d3cuaC54eHgvIiksIHsgfSk7Cit9CisKK1RFU1RfRihDb250ZW50RXh0ZW5zaW9u
VGVzdCwgQ29tYmluZWRSYW5nZU92ZXJsYXBDYXNlMTQpCit7CisgICAgYXV0byBtYXRjaEJhY2tl
bmQgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJp
Z2dlclwiOntcInVybC1maWx0ZXJcIjpcIl4oZm9vKSpbYi1lXVwifX0sIgorICAgICAgICAie1wi
YWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9uZVwiLFwic2VsZWN0b3JcIjpcIi5o
aWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihiYXIpKltjLWVdXCJ9fV0i
KTsKKworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
YTovL3d3dy53ZWJraXQub3JnLyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiYjovL3d3dy53ZWJraXQub3JnLyIpLCB7IENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0
Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJjOi8vd3d3LndlYmtpdC5vcmcvIiksIHsg
Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVl
c3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJkOi8vd3d3LndlYmtpdC5vcmcv
IiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0
b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVz
dFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJlOi8vd3d3LndlYmtp
dC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25l
U2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7Cisg
ICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJoOi8vd3d3
LndlYmtpdC5vcmcvIiksIHsgfSk7CisKKyAgICBhdXRvIHNlYXJjaEJhY2tlbmQgPSBtYWtlQmFj
a2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVy
bC1maWx0ZXJcIjpcIihmb28pKltiLWVdXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0
eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRy
aWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoYmFyKSpbYy1lXVwifX1dIik7CisgICAgdGVzdFJl
cXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmEueHh4
LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoInp6ejovL3d3dy5iLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlw
ZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoInp6ejovL3d3dy5jLnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZC54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwg
bWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmUueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5oLnh4eC8iKSwgeyB9KTsKK30KKwor
VEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFJhbmdlT3ZlcmxhcENhc2UxNSkK
K3sKKyAgICBhdXRvIG1hdGNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1wi
dHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiXihmb28pKltj
LWZdXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1u
b25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVy
XCI6XCJeKGJhcikqW2MtZl1cIn19XSIpOworCisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJhOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisgICAg
dGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJiOi8vd3d3Lndl
YmtpdC5vcmcvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJjOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJkOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNr
ZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJlOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0
Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJmOi8vd3d3LndlYmtpdC5vcmcvIiksIHsg
Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVl
c3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJnOi8vd3d3LndlYmtpdC5vcmcv
IiksIHsgfSk7CisKKyAgICBhdXRvIHNlYXJjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgiW3tcImFj
dGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpc
Iihmb28pKltjLWZdXCJ9fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3Mt
ZGlzcGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1
cmwtZmlsdGVyXCI6XCIoYmFyKSpbYy1mXVwifX1dIik7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmEueHh4LyIpLCB7IH0pOwor
ICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejov
L3d3dy5iLnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYy54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwg
bWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmQueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5lLnh4eC8iKSwgeyBDb250ZW50RXh0
ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZi54eHgvIiksIHsgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2Vh
cmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmcueHh4LyIpLCB7IH0p
OworfQorCitURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIENvbWJpbmVkUmFuZ2VPdmVybGFw
Q2FzZTE2KQoreworICAgIGF1dG8gbWF0Y2hCYWNrZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rp
b25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJe
KGZvbykqY1wifX0sIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiY3NzLWRpc3Bs
YXktbm9uZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5cIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZp
bHRlclwiOlwiXihiYXIpKmNcIn19XSIpOworCisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJhOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisgICAg
dGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJiOi8vd3d3Lndl
YmtpdC5vcmcvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJjOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJkOi8vd3d3LndlYmtpdC5vcmcvIiksIHsgfSk7CisgICAgdGVz
dFJlcXVlc3QobWF0Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJlOi8vd3d3LndlYmtp
dC5vcmcvIiksIHsgfSk7CisKKyAgICBhdXRvIHNlYXJjaEJhY2tlbmQgPSBtYWtlQmFja2VuZCgi
W3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0
ZXJcIjpcIihmb28pKmNcIn19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNz
cy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntc
InVybC1maWx0ZXJcIjpcIihiYXIpKmNcIn19XSIpOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hLnh4eC8iKSwgeyB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93
d3cuYi54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmMueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kLnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVx
dWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZS54eHgv
IiksIHsgfSk7Cit9CisKK1RFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgQ29tYmluZWRRdWFu
dGlmaWVkT25lT3JNb3JlUmFuZ2VzQ2FzZTExQW5kMTMpCit7CisgICAgYXV0byBzZWFyY2hCYWNr
ZW5kID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRy
aWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIoZm9vKSpbYy1lXStbZy1pXStZWVlcIn19LCIKKyAg
ICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVj
dG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIihiYXIpKlti
LWRdK1toLWpdK1lZWVwifX1dIik7CisKKyAgICAvLyBUaGUgaW50ZXJlc3RpbmcgcmFuZ2VzIG9u
bHkgbWF0Y2ggYmV0d2VlbiAnYicgYW5kICdrJywgcGx1cyBhIGdhcCBpbiAnZicuCisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmFh
eXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWJ5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1
ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hY3l5eS54
eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgienp6Oi8vd3d3LmFkeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChz
ZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWV5eXkueHh4LyIp
LCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoInp6ejovL3d3dy5hZnl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmFneXl5Lnh4eC8iKSwgeyB9
KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6
eno6Ly93d3cuYWh5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5haXl5eS54eHgvIiksIHsgfSk7Cisg
ICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8v
d3d3LmFqeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWt5eXkueHh4LyIpLCB7IH0pOworCisgICAg
Ly8gJ2InIGlzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHNlY29uZCBydWxlLgorICAgIHRl
c3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5i
eXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYmF5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1
ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5iYnl5eS54
eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgienp6Oi8vd3d3LmJjeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChz
ZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYmR5eXkueHh4LyIp
LCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoInp6ejovL3d3dy5iZXl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmJmeXl5Lnh4eC8iKSwgeyB9
KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6
eno6Ly93d3cuYmd5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tl
bmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5iaHl5eS54eHgvIiksIHsgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAg
dGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3
LmJpeXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxh
eU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYmp5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0
KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5ia3l5eS54eHgv
IiksIHsgfSk7CisKKyAgICAvLyAnYycgaXMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgZmly
c3QgcnVsZSwgYW5kIGl0IG92ZXJsYXBzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHNlY29u
ZCBydWxlLgorICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoInp6ejovL3d3dy5jeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuY2F5eXkueHh4LyIpLCB7IH0p
OworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6
ejovL3d3dy5jYnl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmNjeXl5Lnh4eC8iKSwgeyB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93
d3cuY2R5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jZXl5eS54eHgvIiksIHsgfSk7CisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmNm
eXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuY2d5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmNoeXl5Lnh4eC8iKSwgeyBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFy
Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuY2l5eXkueHh4LyIpLCB7
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBD
b250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1
ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5janl5eS54
eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2Vs
ZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgienp6Oi8vd3d3LmNreXl5Lnh4eC8iKSwgeyB9KTsKKworICAgIC8vICdkJyBpcyBpbiB0
aGUgZmlyc3QgcmFuZ2Ugb2YgYm90aCBydWxlLiBUaGlzIHNlcmllcyBjb3ZlciBvdmVybGFwcyBi
ZXR3ZWVuIHRoZSB0d28gcnVsZXMuCisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmRneXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJh
Y2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kZGd5eXkueHh4LyIpLCB7IENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVl
c3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmRkaHl5eS54
eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2Vs
ZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAg
dGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3
LmRkaGh5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNw
bGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2Fk
IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
Inp6ejovL3d3dy5kZWd5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBl
OjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgienp6Oi8vd3d3LmRlaHl5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZGZneXl5Lnh4eC8iKSwgeyB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93
d3cuZGZoeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZGp5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRl
bnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworICAgIHRlc3RS
ZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kZGp5
eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9u
ZVNlbGVjdG9yIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoInp6ejovL3d3dy5kZGpqeXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6
QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKK30KKworVEVTVF9GKENvbnRl
bnRFeHRlbnNpb25UZXN0LCBDb21iaW5lZFF1YW50aWZpZWRPbmVPck1vcmVSYW5nZXNDYXNlMTFB
bmQxM0luR3JvdXBzKQoreworICAgIGF1dG8gc2VhcmNoQmFja2VuZCA9IG1ha2VCYWNrZW5kKCJb
e1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRl
clwiOlwiKGZvbykqKFtjLWVdKSsoW2ctaV0rWVlZKVwifX0sIgorICAgICAgICAie1wiYWN0aW9u
XCI6e1widHlwZVwiOlwiY3NzLWRpc3BsYXktbm9uZVwiLFwic2VsZWN0b3JcIjpcIi5oaWRkZW5c
In0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiKGJhcikqW2ItZF0rW2gtal0rWVlZXCJ9
fV0iKTsKKworICAgIC8vIFRoZSBpbnRlcmVzdGluZyByYW5nZXMgb25seSBtYXRjaCBiZXR3ZWVu
ICdiJyBhbmQgJ2snLCBwbHVzIGEgZ2FwIGluICdmJy4KKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWF5eXkueHh4LyIpLCB7IH0p
OworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6
ejovL3d3dy5hYnl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmFjeXl5Lnh4eC8iKSwgeyB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93
d3cuYWR5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5hZXl5eS54eHgvIiksIHsgfSk7CisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmFm
eXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWd5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1
ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5haHl5eS54
eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgienp6Oi8vd3d3LmFpeXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChz
ZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYWp5eXkueHh4LyIp
LCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoInp6ejovL3d3dy5ha3l5eS54eHgvIiksIHsgfSk7CisKKyAgICAvLyAnYicgaXMgdGhlIGZp
cnN0IGNoYXJhY3RlciBvZiB0aGUgc2Vjb25kIHJ1bGUuCisgICAgdGVzdFJlcXVlc3Qoc2VhcmNo
QmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmJ5eXkueHh4LyIpLCB7IH0p
OworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6
ejovL3d3dy5iYXl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmJieXl5Lnh4eC8iKSwgeyB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93
d3cuYmN5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5iZHl5eS54eHgvIiksIHsgfSk7CisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmJl
eXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9j
dW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYmZ5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1
ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5iZ3l5eS54
eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgienp6Oi8vd3d3LmJoeXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFy
Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuYml5eXkueHh4LyIpLCB7
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yIH0p
OworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6
ejovL3d3dy5ianl5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNT
U0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwg
bWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmJreXl5Lnh4eC8iKSwgeyB9KTsKKworICAg
IC8vICdjJyBpcyB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBmaXJzdCBydWxlLCBhbmQgaXQg
b3ZlcmxhcHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgc2Vjb25kIHJ1bGUuCisgICAgdGVz
dFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmN5
eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoInp6ejovL3d3dy5jYXl5eS54eHgvIiksIHsgfSk7CisgICAgdGVzdFJlcXVl
c3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmNieXl5Lnh4
eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJ6eno6Ly93d3cuY2N5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNl
YXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jZHl5eS54eHgvIiks
IHsgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVz
dCgienp6Oi8vd3d3LmNleXl5Lnh4eC8iKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hC
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuY2Z5eXkueHh4LyIpLCB7IH0p
OworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6
ejovL3d3dy5jZ3l5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJs
b2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJ6eno6Ly93d3cuY2h5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9u
VHlwZTo6QmxvY2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5E
b2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5jaXl5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lv
bnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2Vu
ZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmNqeXl5Lnh4eC8iKSwgeyBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKKyAgICB0
ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cu
Y2t5eXkueHh4LyIpLCB7IH0pOworCisgICAgLy8gJ2QnIGlzIGluIHRoZSBmaXJzdCByYW5nZSBv
ZiBib3RoIHJ1bGUuIFRoaXMgc2VyaWVzIGNvdmVyIG92ZXJsYXBzIGJldHdlZW4gdGhlIHR3byBy
dWxlcy4KKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0
KCJ6eno6Ly93d3cuZGd5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBl
OjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgienp6Oi8vd3d3LmRkZ3l5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5k
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZGRoeXl5Lnh4eC8iKSwgeyBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciwgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsKKyAgICB0ZXN0UmVxdWVzdChzZWFy
Y2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6Ly93d3cuZGRoaHl5eS54eHgvIiks
IHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3Is
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfSk7CisgICAgdGVzdFJl
cXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmRlZ3l5
eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCB9KTsK
KyAgICB0ZXN0UmVxdWVzdChzZWFyY2hCYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ6eno6
Ly93d3cuZGVoeXl5Lnh4eC8iKSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Qmxv
Y2tMb2FkIH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJl
cXVlc3QoInp6ejovL3d3dy5kZmd5eXkueHh4LyIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNl
YXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoInp6ejovL3d3dy5kZmh5eXkueHh4LyIp
LCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHNlYXJjaEJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVl
c3QoInp6ejovL3d3dy5kanl5eS54eHgvIiksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5
cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7CisgICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFj
a2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8vd3d3LmRkanl5eS54eHgvIiksIHsgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IgfSk7Cisg
ICAgdGVzdFJlcXVlc3Qoc2VhcmNoQmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgienp6Oi8v
d3d3LmRkamp5eXkueHh4LyIpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NE
aXNwbGF5Tm9uZVNlbGVjdG9yIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvREZBTWluaW1pemVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvREZBTWlu
aW1pemVyLmNwcAkocmV2aXNpb24gMTg2MzYyKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0RGQU1pbmltaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcg
QEAgVEVTVF9GKERGQU1pbmltaXplclRlc3QsIEZhbGxiYWNrVHJhbnNpdAogICAgIENvbnRlbnRF
eHRlbnNpb25zOjpERkEgZGZhID0gYnVpbGRERkFGcm9tUGF0dGVybnMoeyAiXmFhYyIsICJeYS5j
IiwgIl5iLmMifSk7CiAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oOSksIGNvdW50
TGl2ZU5vZGVzKGRmYSkpOwogICAgIGRmYS5taW5pbWl6ZSgpOwotICAgIEVYUEVDVF9FUShzdGF0
aWNfY2FzdDxzaXplX3Q+KDUpLCBjb3VudExpdmVOb2RlcyhkZmEpKTsKKyAgICBFWFBFQ1RfRVEo
c3RhdGljX2Nhc3Q8c2l6ZV90Pig0KSwgY291bnRMaXZlTm9kZXMoZGZhKSk7CiB9CiAKIFRFU1Rf
RihERkFNaW5pbWl6ZXJUZXN0LCBTaW1wbGVGYWxsQmFja1RyYW5zaXRpb25EaWZmZXJlbnRpYXRv
cjEpCg==
</data>
<flag name="review"
          id="281312"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>