<?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>198760</bug_id>
          
          <creation_ts>2019-06-11 11:10:14 -0700</creation_ts>
          <short_desc>[WASM-References] Add support for multiple tables</short_desc>
          <delta_ts>2019-06-18 15:04:57 -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>JavaScriptCore</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Michaud">justin_michaud</reporter>
          <assigned_to name="Justin Michaud">justin_michaud</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1543767</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-11 11:10:14 -0700</bug_when>
    <thetext>Add support for multiple tables</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544614</commentid>
    <comment_count>1</comment_count>
      <attachid>372080</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-13 16:00:11 -0700</bug_when>
    <thetext>Created attachment 372080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544617</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-06-13 16:02:14 -0700</bug_when>
    <thetext>This patch modifies one of the wasm.json files. Please ensure that any changes in one have been mirrored to the other. You can find the wasm.json files at &quot;Source/JavaScriptCore/wasm/wasm.json&quot; and &quot;JSTests/wasm/wasm.json&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544893</commentid>
    <comment_count>3</comment_count>
      <attachid>372080</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-06-14 16:51:34 -0700</bug_when>
    <thetext>Comment on attachment 372080
Patch

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

Mostly LGTM, but some questions and I think I found a bug.

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        existing users to give a table index. We also add some extra checks for table.get/set.

extra checks. Why didn&apos;t we do this before? Can you explain?

&gt; Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp:958
&gt; +        if (idx &gt;= instance-&gt;table(tableIndex)-&gt;length())
&gt; +            return 0;

why? We didn&apos;t do this before.

&gt; Source/JavaScriptCore/wasm/WasmInstance.cpp:96
&gt; +    *bitwise_cast&lt;Table**&gt;(bitwise_cast&lt;char*&gt;(this) + offsetOfTablePtr(m_numImportFunctions, i)) = &amp;table.leakRef();
&gt; +    this-&gt;table(i)-&gt;ref();

this is wrong. this table is already +1, and you&apos;re leaking it, then ref() after. I think leakRef is all you need.

&gt; Source/JavaScriptCore/wasm/WasmInstance.h:147
&gt; +        return (offsetOfTail() + sizeof(ImportFunctionInfo) * numImportFunctions + sizeof(Table*) * numTables).unsafeGet();

I think you need to do rounding here after the number of import functions. Or add some static asserts that they have same alignment as ImportFunctionInfo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544940</commentid>
    <comment_count>4</comment_count>
      <attachid>372080</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-14 19:31:20 -0700</bug_when>
    <thetext>Comment on attachment 372080
Patch

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

&gt;&gt; Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp:958
&gt;&gt; +            return 0;
&gt; 
&gt; why? We didn&apos;t do this before.

I never wrote a test case for out of bounds access until now. It should trap according to the semantics, but instead we just hit the release assert. I am moving these checks to the funcref patch since I responded to the EncodedJSValue comments there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544956</commentid>
    <comment_count>5</comment_count>
      <attachid>372175</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-14 21:21:18 -0700</bug_when>
    <thetext>Created attachment 372175
patch (requires funcref patch)

This is the patch with the comments above addressed, and rebased to apply after the funcref patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545374</commentid>
    <comment_count>6</comment_count>
      <attachid>372266</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-17 13:15:48 -0700</bug_when>
    <thetext>Created attachment 372266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545403</commentid>
    <comment_count>7</comment_count>
      <attachid>372266</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-06-17 15:01:02 -0700</bug_when>
    <thetext>Comment on attachment 372266
Patch

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

r=me with comments. I found one bug, and the rest are nits. Also, I didn&apos;t read through all testing, but I commented in areas where it would be good to have tests.

&gt; Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp:1918
&gt; +        RELEASE_ASSERT(Arg::isValidAddrForm(Instance::offsetOfTablePtr(m_numImportFunctions, tableIndex), B3::Width64));

this is now wrong. Before, it was guaranteed, but now it&apos;s not. On arm64, this may not fit in an immediate. Please add a test and make this a branch.

&gt; Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp:1923
&gt; +        append(Move, Arg::addr(instanceValue(), Instance::offsetOfTablePtr(m_numImportFunctions, tableIndex)), callableFunctionBufferLength);

this is where the branch should be. Basically, look for &quot;isValidForm&quot;, and you need to branch on instruction selection based on that. Should be easy to make an arm64 test fail by having many, many, tables

&gt; Source/JavaScriptCore/wasm/WasmInstance.cpp:113
&gt; +    if (auto* t = this-&gt;table(i))
&gt; +        t-&gt;deref();

t =&gt; table

&gt; Source/JavaScriptCore/wasm/WasmInstance.h:157
&gt; +        return (offsetOfTail() + sizeof(ImportFunctionInfo) * numImportFunctions + sizeof(Table*) * numTables).unsafeGet();

I think this should be:

roundUpToMultipleOf&lt;sizeof(Table*)&gt;((offsetOfTail() + sizeof(ImportFunctionInfo) * numImportFunctions) + sizeof(Table*)*numTables

Or static assert

&gt; Source/JavaScriptCore/wasm/WasmSectionParser.cpp:219
&gt;      WASM_PARSER_FAIL_IF(!parseVarUInt32(count), &quot;can&apos;t get Table&apos;s count&quot;);

let&apos;s add a maximum number of tables here

&gt; Source/JavaScriptCore/wasm/WasmSectionParser.cpp:379
&gt; +        WASM_PARSER_FAIL_IF(m_info-&gt;tables[tableIndex].type() != TableElementType::Funcref, &quot;Table &quot;, tableIndex, &quot; must have type &apos;anyfunc&apos; to have an element section&quot;);

Do we have a test?

&gt; Source/JavaScriptCore/wasm/WasmValidate.cpp:183
&gt; +    WASM_VALIDATOR_FAIL_IF(tableIndex &gt;= m_module.tableCount(), &quot;table index &quot;, tableIndex, &quot; is invalid, limit is &quot;, m_module.tableCount());

Do we have a test?

&gt; Source/JavaScriptCore/wasm/WasmValidate.cpp:192
&gt; +    WASM_VALIDATOR_FAIL_IF(tableIndex &gt;= m_module.tableCount(), &quot;table index &quot;, tableIndex, &quot; is invalid, limit is &quot;, m_module.tableCount());

Do we have a test?

&gt; Source/JavaScriptCore/wasm/WasmValidate.cpp:197
&gt; +    WASM_VALIDATOR_FAIL_IF(m_module.tables[tableIndex].type() != TableElementType::Anyref
&gt; +        &amp;&amp; m_module.tables[tableIndex].type() != TableElementType::Funcref, &quot;table.set expects the table to have type anyref or anyfunc&quot;);

do we have tests for this?

&gt; Source/JavaScriptCore/wasm/WasmValidate.cpp:387
&gt; +    WASM_VALIDATOR_FAIL_IF(m_module.tables[tableIndex].type() != TableElementType::Funcref, &quot;Table must have type Anyfunc to call&quot;);

do we have tests for this?

&gt; JSTests/wasm/spec-tests/imports.wast.js:199
&gt; +// These tests assert that we can only have one table. The references spec makes this incorrect, and this should be fixed when it gets merged into the main spec.
&gt; +//assert_invalid(&quot;\x00\x61\x73\x6d\x01\x00\x00\x00\x02\x8d\x80\x80\x80\x00\x02\x00\x00\x01\x70\x00\x0a\x00\x00\x01\x70\x00\x0a&quot;);
&gt;  
&gt;  // imports.wast:297
&gt; -assert_invalid(&quot;\x00\x61\x73\x6d\x01\x00\x00\x00\x02\x87\x80\x80\x80\x00\x01\x00\x00\x01\x70\x00\x0a\x04\x84\x80\x80\x80\x00\x01\x70\x00\x0a&quot;);
&gt; +//assert_invalid(&quot;\x00\x61\x73\x6d\x01\x00\x00\x00\x02\x87\x80\x80\x80\x00\x01\x00\x00\x01\x70\x00\x0a\x04\x84\x80\x80\x80\x00\x01\x70\x00\x0a&quot;);
&gt;  
&gt;  // imports.wast:301
&gt; -assert_invalid(&quot;\x00\x61\x73\x6d\x01\x00\x00\x00\x04\x87\x80\x80\x80\x00\x02\x70\x00\x0a\x70\x00\x0a&quot;);
&gt; +//assert_invalid(&quot;\x00\x61\x73\x6d\x01\x00\x00\x00\x04\x87\x80\x80\x80\x00\x02\x70\x00\x0a\x70\x00\x0a&quot;);

just delete these lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545448</commentid>
    <comment_count>8</comment_count>
      <attachid>372266</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-17 16:27:54 -0700</bug_when>
    <thetext>Comment on attachment 372266
Patch

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

&gt;&gt; Source/JavaScriptCore/wasm/WasmInstance.h:157
&gt;&gt; +        return (offsetOfTail() + sizeof(ImportFunctionInfo) * numImportFunctions + sizeof(Table*) * numTables).unsafeGet();
&gt; 
&gt; I think this should be:
&gt; 
&gt; roundUpToMultipleOf&lt;sizeof(Table*)&gt;((offsetOfTail() + sizeof(ImportFunctionInfo) * numImportFunctions) + sizeof(Table*)*numTables
&gt; 
&gt; Or static assert

How does this differ from the static assert above?

&gt;&gt; Source/JavaScriptCore/wasm/WasmSectionParser.cpp:219
&gt;&gt;      WASM_PARSER_FAIL_IF(!parseVarUInt32(count), &quot;can&apos;t get Table&apos;s count&quot;);
&gt; 
&gt; let&apos;s add a maximum number of tables here

I just picked 1000000 arbitrarily, but I will file a spec bug: https://webassembly.github.io/reference-types/js-api/index.html#limits says 1 still.

&gt;&gt; Source/JavaScriptCore/wasm/WasmSectionParser.cpp:379
&gt;&gt; +        WASM_PARSER_FAIL_IF(m_info-&gt;tables[tableIndex].type() != TableElementType::Funcref, &quot;Table &quot;, tableIndex, &quot; must have type &apos;anyfunc&apos; to have an element section&quot;);
&gt; 
&gt; Do we have a test?

Yes, one in the other patch as well as one in this patch for when the table index != 0

&gt;&gt; Source/JavaScriptCore/wasm/WasmValidate.cpp:197
&gt;&gt; +        &amp;&amp; m_module.tables[tableIndex].type() != TableElementType::Funcref, &quot;table.set expects the table to have type anyref or anyfunc&quot;);
&gt; 
&gt; do we have tests for this?

It is currently impossible to do so, so I will turn this into a debug assert.

&gt;&gt; Source/JavaScriptCore/wasm/WasmValidate.cpp:387
&gt;&gt; +    WASM_VALIDATOR_FAIL_IF(m_module.tables[tableIndex].type() != TableElementType::Funcref, &quot;Table must have type Anyfunc to call&quot;);
&gt; 
&gt; do we have tests for this?

It is a parse error, so I will turn this into a release assert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545522</commentid>
    <comment_count>9</comment_count>
      <attachid>372266</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-17 18:57:39 -0700</bug_when>
    <thetext>Comment on attachment 372266
Patch

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

&gt;&gt; Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp:1923
&gt;&gt; +        append(Move, Arg::addr(instanceValue(), Instance::offsetOfTablePtr(m_numImportFunctions, tableIndex)), callableFunctionBufferLength);
&gt; 
&gt; this is where the branch should be. Basically, look for &quot;isValidForm&quot;, and you need to branch on instruction selection based on that. Should be easy to make an arm64 test fail by having many, many, tables

The test case I uploaded runs on iOS, and I added a static assert here to warn anyone who tries to increase the limit in the future. Is that OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545524</commentid>
    <comment_count>10</comment_count>
      <attachid>372313</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-17 19:00:22 -0700</bug_when>
    <thetext>Created attachment 372313
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545626</commentid>
    <comment_count>11</comment_count>
      <attachid>372266</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-06-18 08:59:36 -0700</bug_when>
    <thetext>Comment on attachment 372266
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp:1923
&gt;&gt;&gt; +        append(Move, Arg::addr(instanceValue(), Instance::offsetOfTablePtr(m_numImportFunctions, tableIndex)), callableFunctionBufferLength);
&gt;&gt; 
&gt;&gt; this is where the branch should be. Basically, look for &quot;isValidForm&quot;, and you need to branch on instruction selection based on that. Should be easy to make an arm64 test fail by having many, many, tables
&gt; 
&gt; The test case I uploaded runs on iOS, and I added a static assert here to warn anyone who tries to increase the limit in the future. Is that OK?

Your test uses the maximum number of import functions too? What if you remove the limit on the number of tables, and use a large number for the table index?

&gt;&gt;&gt; Source/JavaScriptCore/wasm/WasmValidate.cpp:197
&gt;&gt;&gt; +        &amp;&amp; m_module.tables[tableIndex].type() != TableElementType::Funcref, &quot;table.set expects the table to have type anyref or anyfunc&quot;);
&gt;&gt; 
&gt;&gt; do we have tests for this?
&gt; 
&gt; It is currently impossible to do so, so I will turn this into a debug assert.

Why is it impossible? Isn’t this the job of the validator?

&gt;&gt;&gt; Source/JavaScriptCore/wasm/WasmValidate.cpp:387
&gt;&gt;&gt; +    WASM_VALIDATOR_FAIL_IF(m_module.tables[tableIndex].type() != TableElementType::Funcref, &quot;Table must have type Anyfunc to call&quot;);
&gt;&gt; 
&gt;&gt; do we have tests for this?
&gt; 
&gt; It is a parse error, so I will turn this into a release assert.

Why? Aren’t we validating here? The whole point is we can see arbitrary things, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545660</commentid>
    <comment_count>12</comment_count>
      <attachid>372347</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-18 10:29:50 -0700</bug_when>
    <thetext>Created attachment 372347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545784</commentid>
    <comment_count>13</comment_count>
      <attachid>372376</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-18 13:51:50 -0700</bug_when>
    <thetext>Created attachment 372376
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545789</commentid>
    <comment_count>14</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-18 13:56:14 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #11)
&gt; &gt;&gt;&gt; Source/JavaScriptCore/wasm/WasmValidate.cpp:197
&gt; &gt;&gt;&gt; +        &amp;&amp; m_module.tables[tableIndex].type() != TableElementType::Funcref, &quot;table.set expects the table to have type anyref or anyfunc&quot;);
&gt; &gt;&gt; 
&gt; &gt;&gt; do we have tests for this?
&gt; &gt; 
&gt; &gt; It is currently impossible to do so, so I will turn this into a debug assert.
&gt; 
&gt; Why is it impossible? Isn’t this the job of the validator?
The type makes it impossible, but I wasn&apos;t sure how to put a static_assert to warn anyone who adds a new table type.

&gt; 
&gt; &gt;&gt;&gt; Source/JavaScriptCore/wasm/WasmValidate.cpp:387
&gt; &gt;&gt;&gt; +    WASM_VALIDATOR_FAIL_IF(m_module.tables[tableIndex].type() != TableElementType::Funcref, &quot;Table must have type Anyfunc to call&quot;);
&gt; &gt;&gt; 
&gt; &gt;&gt; do we have tests for this?
&gt; &gt; 
&gt; &gt; It is a parse error, so I will turn this into a release assert.
&gt; 
&gt; Why? Aren’t we validating here? The whole point is we can see arbitrary
&gt; things, right?
It is a parse error if the table index is too big / the wrong type (the check was there before this patch), and I added a test to make sure it is a parse error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545792</commentid>
    <comment_count>15</comment_count>
      <attachid>372380</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-18 13:59:14 -0700</bug_when>
    <thetext>Created attachment 372380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545798</commentid>
    <comment_count>16</comment_count>
      <attachid>372376</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-06-18 14:04:08 -0700</bug_when>
    <thetext>Comment on attachment 372376
Patch

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

Still LGTM, two small comments

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        Support multiple wasm tables. We turn tableInformation into a tables array, and update all of the
&gt; +        existing users to give a table index.

Sorry, I should have commented earlier, but you should have at least a sentence on the implementation details, e.g, that it hangs off the end of Instance. Feel free to add even more.

&gt; Source/JavaScriptCore/wasm/WasmInstance.cpp:113
&gt; +    if (auto* table = this-&gt;table(i))
&gt; +        table-&gt;deref();

shouldn&apos;t this be an assert that !table(i)? We have that assert in the JS code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545803</commentid>
    <comment_count>17</comment_count>
      <attachid>372381</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-18 14:13:08 -0700</bug_when>
    <thetext>Created attachment 372381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545829</commentid>
    <comment_count>18</comment_count>
      <attachid>372381</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-18 15:01:09 -0700</bug_when>
    <thetext>Comment on attachment 372381
Patch

Clearing flags on attachment: 372381

Committed r246571: &lt;https://trac.webkit.org/changeset/246571&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545830</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-18 15:01:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545832</commentid>
    <comment_count>20</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-06-18 15:04:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/51867688&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372080</attachid>
            <date>2019-06-13 16:00:11 -0700</date>
            <delta_ts>2019-06-14 21:21:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198760-20190613160010.patch</filename>
            <type>text/plain</type>
            <size>85420</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MjBlMmU4NGE2NDA2NDZkZGI5OWUxYzUxMDQ5NmQyNTJkNmY3ZWY2Li4zMmM1ODdmYWViMDM4YzZl
MDgzZTU3MmIzYzMzMzkwZGM2Yjc4N2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAxOS0wNi0xMyAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gQWRkIHN1cHBvcnQgZm9yIG11
bHRpcGxlIHRhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk4NzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU3VwcG9ydCBtdWx0aXBsZSB3YXNtIHRhYmxlcy4gV2UgdHVybiB0YWJsZUluZm9ybWF0
aW9uIGludG8gYSB0YWJsZXMgYXJyYXksIGFuZCB1cGRhdGUgYWxsIG9mIHRoZQorICAgICAgICBl
eGlzdGluZyB1c2VycyB0byBnaXZlIGEgdGFibGUgaW5kZXguIFdlIGFsc28gYWRkIHNvbWUgZXh0
cmEgY2hlY2tzIGZvciB0YWJsZS5nZXQvc2V0LgorCisgICAgICAgICogd2FzbS9XYXNtQWlySVJH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6QWlySVJH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVH
ZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVTZXQpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KToKKyAg
ICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6
QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJH
ZW5lcmF0b3I6OmFkZFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRv
cjo6YWRkVGFibGVTZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRD
YWxsSW5kaXJlY3QpOgorICAgICAgICAqIHdhc20vV2FzbUV4Y2VwdGlvblR5cGUuaDoKKyAgICAg
ICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RWxlbWVudDo6RWxl
bWVudCk6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbik6CisgICAg
ICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZVVucmVhY2hhYmxl
RXhwcmVzc2lvbik6CisgICAgICAgICogd2FzbS9XYXNtSW5zdGFuY2UuY3BwOgorICAgICAgICAo
SlNDOjpXYXNtOjpJbnN0YW5jZTo6SW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0
YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OmV4dHJhTWVtb3J5
QWxsb2NhdGVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnRhYmxlKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnNldFRhYmxlKToKKyAgICAgICAgKiB3YXNt
L1dhc21JbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6dXBkYXRlQ2Fj
aGVkTWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mR2xvYmFs
cyk6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpvZmZzZXRPZlRhYmxlUHRyKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6SW5zdGFuY2U6OnRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6
SW5zdGFuY2U6OnNldFRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFu
Y2U6Om9mZnNldE9mVGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbU1vZHVsZUlu
Zm9ybWF0aW9uLmg6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZUluZm9ybWF0aW9uOjp0YWJs
ZUNvdW50IGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJbXBvcnQpOgorICAgICAgICAo
SlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZVRhYmxlSGVscGVyKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VUYWJsZSk6CisgICAgICAgIChKU0M6Oldhc206
OlNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCk6CisgICAgICAgICogd2FzbS9XYXNtVGFibGUu
aDoKKyAgICAgICAgKEpTQzo6V2FzbTo6VGFibGU6Om93bmVyIGNvbnN0KToKKyAgICAgICAgKiB3
YXNtL1dhc21WYWxpZGF0ZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRU
YWJsZUdldCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRUYWJsZVNldCk6Cisg
ICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAq
IHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseUluc3RhbmNlOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpK
U1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vanMv
SlNXZWJBc3NlbWJseUluc3RhbmNlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1v
ZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjps
aW5rKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKToK
KyAgICAgICAgKiB3YXNtL3dhc20uanNvbjoKKwogMjAxOS0wNi0xMSAgU2FhbSBCYXJhdGkgIDxz
YmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSb2xsIG91dCBQQUMgY2FnZQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKaW5kZXggOTk0
NGY3NTIzZjQ3MDJmNTlmZjYwOWE0MzNiZDhhNDZiMWRmYTUxNi4uYTUyZGNlMWE5Y2JkMmU3NzYw
OWQ0NWUzZjc0ZmE2M2M0YTMxMDU0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC0yMzYsOCArMjM2LDggQEAgcHVibGljOgog
ICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJlZklzTnVsbChFeHByZXNz
aW9uVHlwZSYgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCiAgICAgLy8gVGFibGVz
Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQoRXhwcmVz
c2lvblR5cGUmIGlkeCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhw
cmVzc2lvblR5cGUmIHZhbHVlKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBhZGRUYWJsZUdldCh1aW50MzJfdCwgRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhwcmVzc2lvblR5
cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFi
bGVTZXQodWludDMyX3QsIEV4cHJlc3Npb25UeXBlJiBpZHgsIEV4cHJlc3Npb25UeXBlJiB2YWx1
ZSk7CiAKICAgICAvLyBMb2NhbHMKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBnZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CkBAIC0y
NzYsNyArMjc2LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbHMKICAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsKHVpbnQzMl90IGNhbGxlZUluZGV4LCBjb25zdCBT
aWduYXR1cmUmLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5k
aXJlY3QoY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYs
IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwog
ICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFVucmVhY2hhYmxlKCk7CiAK
ICAgICBQYXJ0aWFsUmVzdWx0IGFkZFNoaWZ0KFR5cGUsIEIzOjpBaXI6Ok9wY29kZSwgRXhwcmVz
c2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBlIHNoaWZ0LCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0KTsKQEAgLTYyMyw2ICs2MjMsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHVpbnQzMl90
IG1fbWF4TnVtSlNDYWxsQXJndW1lbnRzIHsgMCB9OworICAgIHVuc2lnbmVkIG1fbnVtSW1wb3J0
RnVuY3Rpb25zOwogCiAgICAgQjM6OlBhdGNocG9pbnRTcGVjaWFsKiBtX3BhdGNocG9pbnRTcGVj
aWFsIHsgbnVsbHB0ciB9OwogfTsKQEAgLTY3OCw2ICs2NzksNyBAQCBBaXJJUkdlbmVyYXRvcjo6
QWlySVJHZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIEIzOjpQcm9jZWR1
cmUmIHBybwogICAgICwgbV9wcm9jKHByb2NlZHVyZSkKICAgICAsIG1fY29kZShtX3Byb2MuY29k
ZSgpKQogICAgICwgbV91bmxpbmtlZFdhc21Ub1dhc21DYWxscyh1bmxpbmtlZFdhc21Ub1dhc21D
YWxscykKKyAgICAsIG1fbnVtSW1wb3J0RnVuY3Rpb25zKGluZm8uaW1wb3J0RnVuY3Rpb25Db3Vu
dCgpKQogewogICAgIG1fY3VycmVudEJsb2NrID0gbV9jb2RlLmFkZEJsb2NrKCk7CiAgICAgbV9y
b290QmxvY2sgPSBtX2N1cnJlbnRCbG9jazsKQEAgLTk0NCwzNiArOTQ2LDUyIEBAIGF1dG8gQWly
SVJHZW5lcmF0b3I6OmFkZFJlZklzTnVsbChFeHByZXNzaW9uVHlwZSYgdmFsdWUsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBBaXJJUkdlbmVyYXRv
cjo6YWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVHZXQodWlu
dDMyX3QgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5l
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KICAgICBB
U1NFUlQoaWR4LnRtcCgpKTsKICAgICBBU1NFUlQoaWR4LnR5cGUoKSA9PSBUeXBlOjpJMzIpOwog
ICAgIHJlc3VsdCA9IHRtcEZvclR5cGUoVHlwZTo6QW55cmVmKTsKIAotICAgIHVpbnQ2NF90ICgq
ZG9HZXQpKEluc3RhbmNlKiwgaW50MzJfdCkgPSBbXSAoSW5zdGFuY2UqIGluc3RhbmNlLCBpbnQz
Ml90IGlkeCkgLT4gdWludDY0X3QgewotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGlu
c3RhbmNlLT50YWJsZSgpLT5nZXQoaWR4KSk7CisgICAgdWludDY0X3QgKCpkb0dldCkoSW5zdGFu
Y2UqLCB1aW50MzJfdCwgdWludDMyX3QpID0gW10gKEluc3RhbmNlKiBpbnN0YW5jZSwgdWludDMy
X3QgdGFibGVJbmRleCwgdWludDMyX3QgaWR4KSAtPiB1aW50NjRfdCB7CisgICAgICAgIGlmIChp
ZHggPj0gaW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5sZW5ndGgoKSkKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGluc3RhbmNlLT50YWJs
ZSh0YWJsZUluZGV4KS0+Z2V0KGlkeCkpOwogICAgIH07CiAKLSAgICBlbWl0Q0NhbGwoZG9HZXQs
IHJlc3VsdCwgaW5zdGFuY2VWYWx1ZSgpLCBpZHgpOworICAgIGVtaXRDQ2FsbChkb0dldCwgcmVz
dWx0LCBpbnN0YW5jZVZhbHVlKCksIGFkZENvbnN0YW50KFR5cGU6OkkzMiwgdGFibGVJbmRleCks
IGlkeCk7CisgICAgZW1pdENoZWNrKFsmXSB7CisgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaFRl
c3QzMiwgbnVsbHB0ciwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgcmVzdWx0
LCByZXN1bHQpOworICAgIH0sIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlv
bihqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzVGFibGVBY2Nlc3MpOworICAgIH0pOwog
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVTZXQo
RXhwcmVzc2lvblR5cGUmIGlkeCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKSAtPiBQYXJ0aWFsUmVz
dWx0CithdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZVNldCh1aW50MzJfdCB0YWJsZUluZGV4
LCBFeHByZXNzaW9uVHlwZSYgaWR4LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUpIC0+IFBhcnRpYWxS
ZXN1bHQKIHsKICAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCiAgICAgQVNTRVJUKGlkeC50bXAoKSk7
CiAgICAgQVNTRVJUKGlkeC50eXBlKCkgPT0gVHlwZTo6STMyKTsKICAgICBBU1NFUlQodmFsdWUu
dG1wKCkpOwogCi0gICAgdm9pZCAoKmRvU2V0KShJbnN0YW5jZSosIGludDMyX3QsIHVpbnQ2NF90
IHZhbHVlKSA9IFtdIChJbnN0YW5jZSogaW5zdGFuY2UsIGludDMyX3QgaWR4LCB1aW50NjRfdCB2
YWx1ZSkgLT4gdm9pZCB7CisgICAgYm9vbCAoKmRvU2V0KShJbnN0YW5jZSosIHVpbnQzMl90LCB1
aW50MzJfdCwgdWludDY0X3QgdmFsdWUpID0gW10gKEluc3RhbmNlKiBpbnN0YW5jZSwgdWludDMy
X3QgdGFibGVJbmRleCwgdWludDMyX3QgaWR4LCB1aW50NjRfdCB2YWx1ZSkgLT4gYm9vbCB7CiAg
ICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGJveCB3YXNtIEZ1bmNyZWZzIG9uY2UgdGhleSBh
cmUgc3VwcG9ydGVkIGhlcmUuCiAgICAgICAgIC8vIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk4MTU3PgotICAgICAgICBpbnN0YW5jZS0+dGFibGUoKS0+c2V0KGlk
eCwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSk7CisgICAgICAgIGlmIChpZHggPj0gaW5zdGFuY2Ut
PnRhYmxlKHRhYmxlSW5kZXgpLT5sZW5ndGgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgaW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5zZXQoaWR4LCBKU1ZhbHVlOjpk
ZWNvZGUodmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfTsKIAotICAgIGVtaXRD
Q2FsbChkb1NldCwgVHlwZWRUbXAoKSwgaW5zdGFuY2VWYWx1ZSgpLCBpZHgsIHZhbHVlKTsKKyAg
ICBhdXRvIHRlbXAgPSBnMzIoKTsKKyAgICBlbWl0Q0NhbGwoZG9TZXQsIHRlbXAsIGluc3RhbmNl
VmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlwZTo6STMyLCB0YWJsZUluZGV4KSwgaWR4LCB2YWx1ZSk7
CisgICAgZW1pdENoZWNrKFsmXSB7CisgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwg
bnVsbHB0ciwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgdGVtcCwgdGVtcCk7
CisgICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYpIHsKKyAgICAgICAgdGhpcy0+ZW1pdFRocm93RXhjZXB0aW9uKGppdCwgRXhj
ZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNUYWJsZUFjY2Vzcyk7CisgICAgfSk7CiAKICAgICByZXR1
cm4geyB9OwogfQpAQCAtMTg2NiwxMSArMTg4NCwxMiBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjph
ZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJl
LAogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRp
cmVjdChjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYg
YXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBBaXJJ
UkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNp
Z25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNz
aW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgRXhwcmVzc2lvblR5cGUg
Y2FsbGVlSW5kZXggPSBhcmdzLnRha2VMYXN0KCk7CiAgICAgQVNTRVJUKHNpZ25hdHVyZS5hcmd1
bWVudENvdW50KCkgPT0gYXJncy5zaXplKCkpOwotICAgIEFTU0VSVChtX2luZm8udGFibGVJbmZv
cm1hdGlvbi50eXBlKCkgPT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZik7CisgICAgQVNTRVJU
KG1faW5mby50YWJsZUNvdW50KCkgPiB0YWJsZUluZGV4KTsKKyAgICBBU1NFUlQobV9pbmZvLnRh
Ymxlc1t0YWJsZUluZGV4XS50eXBlKCkgPT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZik7CiAK
ICAgICBtX21ha2VzQ2FsbHMgPSB0cnVlOwogICAgIC8vIE5vdGU6IGNhbGwgaW5kaXJlY3QgY2Fu
IGNhbGwgZWl0aGVyIFdlYkFzc2VtYmx5RnVuY3Rpb24gb3IgV2ViQXNzZW1ibHlXcmFwcGVyRnVu
Y3Rpb24uIEJlY2F1c2UKQEAgLTE4ODUsMTIgKzE5MDQsMTIgQEAgYXV0byBBaXJJUkdlbmVyYXRv
cjo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhw
cmVzc2kKICAgICBFeHByZXNzaW9uVHlwZSBpbnN0YW5jZXNCdWZmZXIgPSBnNjQoKTsKICAgICBF
eHByZXNzaW9uVHlwZSBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoID0gZzY0KCk7CiAgICAg
ewotICAgICAgICBSRUxFQVNFX0FTU0VSVChBcmc6OmlzVmFsaWRBZGRyRm9ybShJbnN0YW5jZTo6
b2Zmc2V0T2ZUYWJsZSgpLCBCMzo6V2lkdGg2NCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChB
cmc6OmlzVmFsaWRBZGRyRm9ybShJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZVB0cihtX251bUltcG9y
dEZ1bmN0aW9ucywgdGFibGVJbmRleCksIEIzOjpXaWR0aDY0KSk7CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEZ1bmNSZWZUYWJsZTo6b2Zmc2V0T2ZGdW5jdGlv
bnMoKSwgQjM6OldpZHRoNjQpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoQXJnOjppc1ZhbGlk
QWRkckZvcm0oRnVuY1JlZlRhYmxlOjpvZmZzZXRPZkluc3RhbmNlcygpLCBCMzo6V2lkdGg2NCkp
OwogICAgICAgICBSRUxFQVNFX0FTU0VSVChBcmc6OmlzVmFsaWRBZGRyRm9ybShGdW5jUmVmVGFi
bGU6Om9mZnNldE9mTGVuZ3RoKCksIEIzOjpXaWR0aDY0KSk7CiAKLSAgICAgICAgYXBwZW5kKE1v
dmUsIEFyZzo6YWRkcihpbnN0YW5jZVZhbHVlKCksIEluc3RhbmNlOjpvZmZzZXRPZlRhYmxlKCkp
LCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgYXBwZW5kKE1vdmUsIEFy
Zzo6YWRkcihpbnN0YW5jZVZhbHVlKCksIEluc3RhbmNlOjpvZmZzZXRPZlRhYmxlUHRyKG1fbnVt
SW1wb3J0RnVuY3Rpb25zLCB0YWJsZUluZGV4KSksIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5n
dGgpOwogICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjphZGRyKGNhbGxhYmxlRnVuY3Rpb25CdWZm
ZXJMZW5ndGgsIEZ1bmNSZWZUYWJsZTo6b2Zmc2V0T2ZGdW5jdGlvbnMoKSksIGNhbGxhYmxlRnVu
Y3Rpb25CdWZmZXIpOwogICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjphZGRyKGNhbGxhYmxlRnVu
Y3Rpb25CdWZmZXJMZW5ndGgsIEZ1bmNSZWZUYWJsZTo6b2Zmc2V0T2ZJbnN0YW5jZXMoKSksIGlu
c3RhbmNlc0J1ZmZlcik7CiAgICAgICAgIGFwcGVuZChNb3ZlMzIsIEFyZzo6YWRkcihjYWxsYWJs
ZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoLCBUYWJsZTo6b2Zmc2V0T2ZMZW5ndGgoKSksIGNhbGxhYmxl
RnVuY3Rpb25CdWZmZXJMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDk0MGM4ODgyMjlhZDk0NmVlNjc0MTAxNjc1OGI1
ZGM1NDQ4YWNhODkuLjMwZTQwMWQ5ZDc1Mjc3ZjQzZTkyNmNhNGU2NzEyODVkNTMyY2FjMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAK
QEAgLTE4OCw4ICsxODgsOCBAQCBwdWJsaWM6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkUmVmSXNOdWxsKEV4cHJlc3Npb25UeXBlJiB2YWx1ZSwgRXhwcmVzc2lvblR5
cGUmIHJlc3VsdCk7CiAKICAgICAvLyBUYWJsZXMKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5V
U0VEX1JFVFVSTiBhZGRUYWJsZUdldChFeHByZXNzaW9uVHlwZSYgaWR4LCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJs
ZVNldChFeHByZXNzaW9uVHlwZSYgaWR4LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUpOworICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlR2V0KHVpbnQzMl90LCBFeHBy
ZXNzaW9uVHlwZSYgaWR4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVz
dWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZVNldCh1aW50MzJfdCwgRXhwcmVzc2lvblR5
cGUmIGlkeCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKTsKIAogICAgIC8vIExvY2FscwogICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAgLTIyOCw3ICsyMjgsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBDYWxscwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwo
dWludDMyX3QgY2FsbGVlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9u
VHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmLCBWZWN0
b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQ
YXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QodW5zaWduZWQg
dGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJn
cywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkVW5yZWFjaGFibGUoKTsKIAogICAgIHZvaWQgZHVtcChjb25zdCBWZWN0b3I8
Q29udHJvbEVudHJ5PiYgY29udHJvbFN0YWNrLCBjb25zdCBFeHByZXNzaW9uTGlzdCogZXhwcmVz
c2lvblN0YWNrKTsKQEAgLTI5MCw2ICsyOTAsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHVp
bnQzMl90IG1fbWF4TnVtSlNDYWxsQXJndW1lbnRzIHsgMCB9OworICAgIHVuc2lnbmVkIG1fbnVt
SW1wb3J0RnVuY3Rpb25zOwogfTsKIAogLy8gTWVtb3J5IGFjY2Vzc2VzIGluIFdlYkFzc2VtYmx5
IGhhdmUgdW5zaWduZWQgMzItYml0IG9mZnNldHMsIHdoZXJlYXMgdGhleSBoYXZlIHNpZ25lZCAz
Mi1iaXQgb2Zmc2V0cyBpbiBCMy4KQEAgLTM0MSw2ICszNDIsNyBAQCBCM0lSR2VuZXJhdG9yOjpC
M0lSR2VuZXJhdG9yKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHBy
b2NlZHVyZQogICAgICwgbV9wcm9jKHByb2NlZHVyZSkKICAgICAsIG1fdW5saW5rZWRXYXNtVG9X
YXNtQ2FsbHModW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMpCiAgICAgLCBtX2NvbnN0YW50SW5zZXJ0
aW9uVmFsdWVzKG1fcHJvYykKKyAgICAsIG1fbnVtSW1wb3J0RnVuY3Rpb25zKGluZm8uaW1wb3J0
RnVuY3Rpb25Db3VudCgpKQogewogICAgIG1fY3VycmVudEJsb2NrID0gbV9wcm9jLmFkZEJsb2Nr
KCk7CiAKQEAgLTU1NywzMiArNTU5LDU1IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkUmVmSXNO
dWxsKEV4cHJlc3Npb25UeXBlJiB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKICAgICBy
ZXR1cm4geyB9OwogfQogCi1hdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KEV4cHJlc3Np
b25UeXBlJiBpZHgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1
dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGFibGVHZXQodWludDMyX3QgdGFibGVJbmRleCwgRXhwcmVz
c2lvblR5cGUmIGlkeCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAog
ewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KLSAgICB1aW50NjRfdCAoKmRvR2V0KShJbnN0YW5j
ZSosIGludDMyX3QpID0gW10gKEluc3RhbmNlKiBpbnN0YW5jZSwgaW50MzJfdCBpZHgpIC0+IHVp
bnQ2NF90IHsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShpbnN0YW5jZS0+dGFibGUo
KS0+Z2V0KGlkeCkpOworICAgIHVpbnQ2NF90ICgqZG9HZXQpKEluc3RhbmNlKiwgdWludDMyX3Qs
IHVpbnQzMl90KSA9IFtdIChJbnN0YW5jZSogaW5zdGFuY2UsIHVpbnQzMl90IHRhYmxlSW5kZXgs
IHVpbnQzMl90IGlkeCkgLT4gdWludDY0X3QgeworICAgICAgICBpZiAoaWR4ID49IGluc3RhbmNl
LT50YWJsZSh0YWJsZUluZGV4KS0+bGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShpbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCkt
PmdldChpZHgpKTsKICAgICB9OwogCiAgICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIHRvQjNUeXBlKEFueXJlZiksIG9yaWdpbigpLAogICAg
ICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3Jp
Z2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oZG9HZXQsIEIzQ0NhbGxQdHJUYWcpKSwKLSAg
ICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBpZHgpOworICAgICAgICBpbnN0YW5jZVZhbHVlKCksIG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0
YWJsZUluZGV4KSwgaWR4KTsKKworICAgIHsKKyAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdp
bigpLAorICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9j
LCBFcXVhbCwgb3JpZ2luKCksIHJlc3VsdCwgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25z
dDY0VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIDApKSk7CisKKyAgICAgICAgY2hlY2stPnNldEdl
bmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJikgeworICAgICAgICAgICAgdGhpcy0+ZW1pdEV4Y2VwdGlvbkNoZWNrKGppdCwg
RXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNUYWJsZUFjY2Vzcyk7CisgICAgICAgIH0pOworICAg
IH0KIAogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGFibGVT
ZXQoRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKSAtPiBQYXJ0aWFs
UmVzdWx0CithdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlU2V0KHVpbnQzMl90IHRhYmxlSW5k
ZXgsIEV4cHJlc3Npb25UeXBlJiBpZHgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4gUGFydGlh
bFJlc3VsdAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KLSAgICB2b2lkICgqZG9TZXQpKElu
c3RhbmNlKiwgaW50MzJfdCwgdWludDY0X3QgdmFsdWUpID0gW10gKEluc3RhbmNlKiBpbnN0YW5j
ZSwgaW50MzJfdCBpZHgsIHVpbnQ2NF90IHZhbHVlKSAtPiB2b2lkIHsKKyAgICBib29sICgqZG9T
ZXQpKEluc3RhbmNlKiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50NjRfdCB2YWx1ZSkgPSBbXSAo
SW5zdGFuY2UqIGluc3RhbmNlLCB1aW50MzJfdCB0YWJsZUluZGV4LCB1aW50MzJfdCBpZHgsIHVp
bnQ2NF90IHZhbHVlKSAtPiBib29sIHsKICAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gYm94
IHdhc20gRnVuY3JlZnMgb25jZSB0aGV5IGFyZSBzdXBwb3J0ZWQgaGVyZS4KICAgICAgICAgLy8g
PGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNTc+Ci0gICAgICAg
IGluc3RhbmNlLT50YWJsZSgpLT5zZXQoaWR4LCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpKTsKKyAg
ICAgICAgaWYgKGlkeCA+PSBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPmxlbmd0aCgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpbnN0YW5jZS0+dGFibGUodGFibGVJ
bmRleCktPnNldChpZHgsIEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9OwogCi0gICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVl
PihtX3Byb2MsIEIzOjpWb2lkLCBvcmlnaW4oKSwKKyAgICBhdXRvIHJlc3VsdCA9IG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBCMzo6SW50MzIsIG9yaWdpbigp
LAogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJv
Yywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oZG9TZXQsIEIzQ0NhbGxQdHJUYWcp
KSwKLSAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBpZHgsIHZhbHVlKTsKKyAgICAgICAgaW5zdGFu
Y2VWYWx1ZSgpLCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9j
LCBvcmlnaW4oKSwgdGFibGVJbmRleCksIGlkeCwgdmFsdWUpOworCisgICAgeworICAgICAgICBD
aGVja1ZhbHVlKiBjaGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4o
bV9wcm9jLCBDaGVjaywgb3JpZ2luKCksCisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwgcmVzdWx0LCBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgMCkpKTsKKwor
ICAgICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgICAgICB0aGlzLT5lbWl0
RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25UeXBlOjpPdXRPZkJvdW5kc1RhYmxlQWNjZXNz
KTsKKyAgICAgICAgfSk7CisgICAgfQogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTEyNzAsNyAr
MTI5NSw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbklu
ZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwKICAgICByZXR1cm4geyB9OwogfQogCi1h
dXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmIHNpZ25h
dHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3Qo
dW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxF
eHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxS
ZXN1bHQKIHsKICAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVJbmRleCA9IGFyZ3MudGFrZUxhc3Qo
KTsKICAgICBBU1NFUlQoc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSA9PSBhcmdzLnNpemUoKSk7
CkBAIC0xMjg3LDcgKzEzMTIsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVj
dChjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3NpbwogICAgIEV4cHJl
c3Npb25UeXBlIG1hc2s7CiAgICAgewogICAgICAgICBFeHByZXNzaW9uVHlwZSB0YWJsZSA9IG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRl
clR5cGUoKSwgb3JpZ2luKCksCi0gICAgICAgICAgICBpbnN0YW5jZVZhbHVlKCksIHNhZmVDYXN0
PGludDMyX3Q+KEluc3RhbmNlOjpvZmZzZXRPZlRhYmxlKCkpKTsKKyAgICAgICAgICAgIGluc3Rh
bmNlVmFsdWUoKSwgc2FmZUNhc3Q8aW50MzJfdD4oSW5zdGFuY2U6Om9mZnNldE9mVGFibGVQdHIo
bV9udW1JbXBvcnRGdW5jdGlvbnMsIHRhYmxlSW5kZXgpKSk7CiAgICAgICAgIGNhbGxhYmxlRnVu
Y3Rpb25CdWZmZXIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3By
b2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAogICAgICAgICAgICAgdGFibGUsIHNh
ZmVDYXN0PGludDMyX3Q+KEZ1bmNSZWZUYWJsZTo6b2Zmc2V0T2ZGdW5jdGlvbnMoKSkpOwogICAg
ICAgICBpbnN0YW5jZXNCdWZmZXIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUV4Y2VwdGlvblR5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21FeGNlcHRpb25UeXBlLmgKaW5kZXggZDQ0NmMwZWQxYjRk
ZDlmNjZmZjU5MzgyNjVhMDY2ZTBkYzkyZDYxMS4uNDZjNTNlODYyYjJiNzUyNGNkMmY4MzUzOGQw
NGYyYWE0ZGNhMWNjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUV4Y2VwdGlvblR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRXhj
ZXB0aW9uVHlwZS5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXYXNtIHsKIAogI2RlZmlu
ZSBGT1JfRUFDSF9FWENFUFRJT04obWFjcm8pIFwKICAgICBtYWNybyhPdXRPZkJvdW5kc01lbW9y
eUFjY2VzcywgICJPdXQgb2YgYm91bmRzIG1lbW9yeSBhY2Nlc3MiKSBcCisgICAgbWFjcm8oT3V0
T2ZCb3VuZHNUYWJsZUFjY2VzcywgICJPdXQgb2YgYm91bmRzIHRhYmxlIGFjY2VzcyIpIFwKICAg
ICBtYWNybyhPdXRPZkJvdW5kc0NhbGxJbmRpcmVjdCwgIk91dCBvZiBib3VuZHMgY2FsbF9pbmRp
cmVjdCIpIFwKICAgICBtYWNybyhOdWxsVGFibGVFbnRyeSwgICJjYWxsX2luZGlyZWN0IHRvIGEg
bnVsbCB0YWJsZSBlbnRyeSIpIFwKICAgICBtYWNybyhCYWRTaWduYXR1cmUsICJjYWxsX2luZGly
ZWN0IHRvIGEgc2lnbmF0dXJlIHRoYXQgZG9lcyBub3QgbWF0Y2giKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKaW5kZXggNjI5MjI1MGYyNWVlYTk0OTBjNDNhNGViZDQ2
ZDJlMjVlMGMzNmM5NS4uN2E2MjQwMjg1YTgzYzMwOTZhZTc3Y2QwNTk0MjQ3MTMzOWI5ZDlkMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaApAQCAtMjA0LDEwICsyMDQs
MTIgQEAgc3RydWN0IFNlZ21lbnQgewogfTsKIAogc3RydWN0IEVsZW1lbnQgewotICAgIEVsZW1l
bnQoSTMySW5pdEV4cHIgb2Zmc2V0KQotICAgICAgICA6IG9mZnNldChvZmZzZXQpCisgICAgRWxl
bWVudCh1aW50MzJfdCB0YWJsZUluZGV4LCBJMzJJbml0RXhwciBvZmZzZXQpCisgICAgICAgIDog
dGFibGVJbmRleCh0YWJsZUluZGV4KQorICAgICAgICAsIG9mZnNldChvZmZzZXQpCiAgICAgeyB9
CiAKKyAgICB1aW50MzJfdCB0YWJsZUluZGV4OwogICAgIEkzMkluaXRFeHByIG9mZnNldDsKICAg
ICBWZWN0b3I8dWludDMyX3Q+IGZ1bmN0aW9uSW5kaWNlczsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCmluZGV4IGRmYWU4ZjJjZjNhZDJk
YTE4YWE4OGJiMjZiZDU1OGNjN2Q4NDc2ZGUuLjE2NzQ3ODA2MjNlNzBiMGIxNjE0ZWFiMjIzYjg2
YTUwNTUxMjVjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
dW5jdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5j
dGlvblBhcnNlci5oCkBAIC0yODMsMTkgKzI4MywyMyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENv
bnRleHQ+OjpwYXJzZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAKICAgICBjYXNlIFRh
YmxlR2V0OiB7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFz
c2VtYmx5UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKKyAgICAg
ICAgdW5zaWduZWQgdGFibGVJbmRleDsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFy
c2VWYXJVSW50MzIodGFibGVJbmRleCksICJjYW4ndCBwYXJzZSB0YWJsZSBpbmRleCIpOwogICAg
ICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQsIGlkeDsKICAgICAgICAgV0FTTV9UUllfUE9QX0VY
UFJFU1NJT05fU1RBQ0tfSU5UTyhpZHgsICJ0YWJsZS5nZXQiKTsKLSAgICAgICAgV0FTTV9UUllf
QUREX1RPX0NPTlRFWFQoYWRkVGFibGVHZXQoaWR4LCByZXN1bHQpKTsKKyAgICAgICAgV0FTTV9U
UllfQUREX1RPX0NPTlRFWFQoYWRkVGFibGVHZXQodGFibGVJbmRleCwgaWR4LCByZXN1bHQpKTsK
ICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgfQogCiAgICAgY2FzZSBUYWJsZVNldDogewogICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMoKSwgInJlZmVyZW5j
ZXMgYXJlIG5vdCBlbmFibGVkIik7CisgICAgICAgIHVuc2lnbmVkIHRhYmxlSW5kZXg7CisgICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHRhYmxlSW5kZXgpLCAiY2Fu
J3QgcGFyc2UgdGFibGUgaW5kZXgiKTsKICAgICAgICAgRXhwcmVzc2lvblR5cGUgdmFsLCBpZHg7
CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8odmFsLCAidGFibGUu
c2V0Iik7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8oaWR4LCAi
dGFibGUuc2V0Iik7Ci0gICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFRhYmxlU2V0
KGlkeCwgdmFsKSk7CisgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFRhYmxlU2V0
KHRhYmxlSW5kZXgsIGlkeCwgdmFsKSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBA
IC0zODUsMTMgKzM4OSwxMyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4
cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAKICAgICBjYXNlIENhbGxJbmRpcmVjdDogewog
ICAgICAgICB1aW50MzJfdCBzaWduYXR1cmVJbmRleDsKLSAgICAgICAgdWludDhfdCByZXNlcnZl
ZDsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighbV9pbmZvLnRhYmxlSW5mb3JtYXRpb24s
ICJjYWxsX2luZGlyZWN0IGlzIG9ubHkgdmFsaWQgd2hlbiBhIHRhYmxlIGlzIGRlZmluZWQgb3Ig
aW1wb3J0ZWQiKTsKKyAgICAgICAgdWludDhfdCB0YWJsZUluZGV4OworICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFtX2luZm8udGFibGVDb3VudCgpLCAiY2FsbF9pbmRpcmVjdCBpcyBvbmx5
IHZhbGlkIHdoZW4gYSB0YWJsZSBpcyBkZWZpbmVkIG9yIGltcG9ydGVkIik7CiAgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHNpZ25hdHVyZUluZGV4KSwgImNhbid0
IGdldCBjYWxsX2luZGlyZWN0J3Mgc2lnbmF0dXJlIGluZGV4Iik7Ci0gICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDEocmVzZXJ2ZWQpLCAiY2FuJ3QgZ2V0IGNhbGxfaW5k
aXJlY3QncyByZXNlcnZlZCBieXRlIik7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYocmVz
ZXJ2ZWQsICJjYWxsX2luZGlyZWN0J3MgJ3Jlc2VydmVkJyB2YXJ1aW50MSBtdXN0IGJlIDB4MCIp
OworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQxKHRhYmxlSW5kZXgp
LCAiY2FuJ3QgZ2V0IGNhbGxfaW5kaXJlY3QncyB0YWJsZSBpbmRleCIpOworICAgICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKHRhYmxlSW5kZXggPj0gbV9pbmZvLnRhYmxlQ291bnQoKSwgImNhbGxf
aW5kaXJlY3QncyB0YWJsZSBpbmRleCAiLCB0YWJsZUluZGV4LCAiIGludmFsaWQsIGxpbWl0IGlz
ICIsIG1faW5mby50YWJsZUNvdW50KCkpOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1f
aW5mby51c2VkU2lnbmF0dXJlcy5zaXplKCkgPD0gc2lnbmF0dXJlSW5kZXgsICJjYWxsX2luZGly
ZWN0J3Mgc2lnbmF0dXJlIGluZGV4ICIsIHNpZ25hdHVyZUluZGV4LCAiIGV4Y2VlZHMga25vd24g
c2lnbmF0dXJlcyAiLCBtX2luZm8udXNlZFNpZ25hdHVyZXMuc2l6ZSgpKTsKLSAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRihtX2luZm8udGFibGVJbmZvcm1hdGlvbi50eXBlKCkgIT0gVGFibGVF
bGVtZW50VHlwZTo6RnVuY3JlZiwgImNhbGxfaW5kaXJlY3QgaXMgb25seSB2YWxpZCB3aGVuIGEg
dGFibGUgaGFzIHR5cGUgYW55ZnVuYyIpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1f
aW5mby50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpICE9IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNy
ZWYsICJjYWxsX2luZGlyZWN0IGlzIG9ubHkgdmFsaWQgd2hlbiBhIHRhYmxlIGhhcyB0eXBlIGFu
eWZ1bmMiKTsKIAogICAgICAgICBjb25zdCBTaWduYXR1cmUmIGNhbGxlZVNpZ25hdHVyZSA9IG1f
aW5mby51c2VkU2lnbmF0dXJlc1tzaWduYXR1cmVJbmRleF0uZ2V0KCk7CiAgICAgICAgIHNpemVf
dCBhcmd1bWVudENvdW50ID0gY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSArIDE7IC8v
IEFkZCB0aGUgY2FsbGVlJ3MgaW5kZXguCkBAIC00MDUsNyArNDA5LDcgQEAgYXV0byBGdW5jdGlv
blBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogICAg
ICAgICBtX2V4cHJlc3Npb25TdGFjay5zaHJpbmsoZmlyc3RBcmd1bWVudEluZGV4KTsKIAogICAg
ICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQgPSBDb250ZXh0OjplbXB0eUV4cHJlc3Npb24oKTsK
LSAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkQ2FsbEluZGlyZWN0KGNhbGxlZVNp
Z25hdHVyZSwgYXJncywgcmVzdWx0KSk7CisgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhU
KGFkZENhbGxJbmRpcmVjdCh0YWJsZUluZGV4LCBjYWxsZWVTaWduYXR1cmUsIGFyZ3MsIHJlc3Vs
dCkpOwogCiAgICAgICAgIGlmIChyZXN1bHQgIT0gQ29udGV4dDo6ZW1wdHlFeHByZXNzaW9uKCkp
CiAgICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5hcHBlbmQocmVzdWx0KTsKQEAgLTY3NCw3
ICs2NzgsMTEgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VVbnJlYWNoYWJs
ZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgfQogCiAgICAgY2FzZSBUYWJsZUdl
dDoKLSAgICBjYXNlIFRhYmxlU2V0OgorICAgIGNhc2UgVGFibGVTZXQ6IHsKKyAgICAgICAgdW5z
aWduZWQgdGFibGVJbmRleDsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJV
SW50MzIodGFibGVJbmRleCksICJjYW4ndCBwYXJzZSB0YWJsZSBpbmRleCIpOworICAgICAgICBG
QUxMVEhST1VHSDsKKyAgICB9CiAgICAgY2FzZSBSZWZJc051bGw6CiAgICAgY2FzZSBSZWZOdWxs
OiB7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5
UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCmluZGV4IDM3MDU5OTY4ZTBiNzg1NGQy
NzMzNmYxOTM3ZWMyNThhMzcwYjQ5NjYuLjk5ZTdlZDU2YTg2Yzg1ODdhNjVkNjE3MGEwY2RlMWEy
ODY5YTYyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0
YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNw
cApAQCAtNjAsMTggKzYwLDE5IEBAIEluc3RhbmNlOjpJbnN0YW5jZShDb250ZXh0KiBjb250ZXh0
LCBSZWY8TW9kdWxlPiYmIG1vZHVsZSwgRW50cnlGcmFtZSoqIHBvaW50ZXJUCiAgICAgICAgIGlm
IChtX21vZHVsZS5nZXQoKS5tb2R1bGVJbmZvcm1hdGlvbigpLmdsb2JhbHNbaV0udHlwZSA9PSBB
bnlyZWYpCiAgICAgICAgICAgICBtX2dsb2JhbHNUb01hcmsuc2V0KGkpOwogICAgIH0KKyAgICBt
ZW1zZXQoYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mVGFibGVQdHIobV9udW1J
bXBvcnRGdW5jdGlvbnMsIDApLCAwLCBtX21vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS50YWJs
ZUNvdW50KCkgKiBzaXplb2YoVGFibGUqKSk7CiB9CiAKIFJlZjxJbnN0YW5jZT4gSW5zdGFuY2U6
OmNyZWF0ZShDb250ZXh0KiBjb250ZXh0LCBSZWY8TW9kdWxlPiYmIG1vZHVsZSwgRW50cnlGcmFt
ZSoqIHBvaW50ZXJUb1RvcEVudHJ5RnJhbWUsIHZvaWQqKiBwb2ludGVyVG9BY3R1YWxTdGFja0xp
bWl0LCBTdG9yZVRvcENhbGxGcmFtZUNhbGxiYWNrJiYgc3RvcmVUb3BDYWxsRnJhbWUpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2MoYWxsb2NhdGlvblNp
emUobW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmltcG9ydEZ1bmN0aW9uQ291bnQoKSkpKSBJ
bnN0YW5jZShjb250ZXh0LCBXVEZNb3ZlKG1vZHVsZSksIHBvaW50ZXJUb1RvcEVudHJ5RnJhbWUs
IHBvaW50ZXJUb0FjdHVhbFN0YWNrTGltaXQsIFdURk1vdmUoc3RvcmVUb3BDYWxsRnJhbWUpKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2MoYWxsb2NhdGlv
blNpemUobW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmltcG9ydEZ1bmN0aW9uQ291bnQoKSwg
bW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLnRhYmxlQ291bnQoKSkpKSBJbnN0YW5jZShjb250
ZXh0LCBXVEZNb3ZlKG1vZHVsZSksIHBvaW50ZXJUb1RvcEVudHJ5RnJhbWUsIHBvaW50ZXJUb0Fj
dHVhbFN0YWNrTGltaXQsIFdURk1vdmUoc3RvcmVUb3BDYWxsRnJhbWUpKSk7CiB9CiAKIEluc3Rh
bmNlOjp+SW5zdGFuY2UoKSB7IH0KIAogc2l6ZV90IEluc3RhbmNlOjpleHRyYU1lbW9yeUFsbG9j
YXRlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdsb2JhbE1lbW9yeUJ5dGVTaXplKG1fbW9kdWxl
LmdldCgpKSArIGFsbG9jYXRpb25TaXplKG1fbnVtSW1wb3J0RnVuY3Rpb25zKTsKKyAgICByZXR1
cm4gZ2xvYmFsTWVtb3J5Qnl0ZVNpemUobV9tb2R1bGUuZ2V0KCkpICsgYWxsb2NhdGlvblNpemUo
bV9udW1JbXBvcnRGdW5jdGlvbnMsIG1fbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLnRhYmxl
Q291bnQoKSk7CiB9CiAKIHZvaWQgSW5zdGFuY2U6OnNldEdsb2JhbCh1bnNpZ25lZCBpLCBKU1Zh
bHVlIHZhbHVlKQpAQCAtODAsNiArODEsMjEgQEAgdm9pZCBJbnN0YW5jZTo6c2V0R2xvYmFsKHVu
c2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiAgICAgbV9nbG9iYWxzLmdldCgpW2ldLmFueXJlZi5z
ZXQoKm93bmVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKS0+dm0oKSwgb3duZXI8SlNXZWJBc3Nl
bWJseUluc3RhbmNlPigpLCB2YWx1ZSk7CiB9CiAKK1RhYmxlKiBJbnN0YW5jZTo6dGFibGUodW5z
aWduZWQgaSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChpIDwgbV9tb2R1bGUtPm1vZHVsZUluZm9y
bWF0aW9uKCkudGFibGVDb3VudCgpKTsKKyAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxUYWJsZSoq
PihiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZUYWJsZVB0cihtX251bUltcG9y
dEZ1bmN0aW9ucywgaSkpOworfQorCit2b2lkIEluc3RhbmNlOjpzZXRUYWJsZSh1bnNpZ25lZCBp
LCBSZWY8VGFibGU+JiYgdGFibGUpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoaSA8IG1fbW9kdWxl
LT5tb2R1bGVJbmZvcm1hdGlvbigpLnRhYmxlQ291bnQoKSk7CisgICAgaWYgKGF1dG8qIHQgPSB0
aGlzLT50YWJsZShpKSkKKyAgICAgICAgdC0+ZGVyZWYoKTsKKyAgICAqYml0d2lzZV9jYXN0PFRh
YmxlKio+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZlRhYmxlUHRyKG1fbnVt
SW1wb3J0RnVuY3Rpb25zLCBpKSkgPSAmdGFibGUubGVha1JlZigpOworICAgIHRoaXMtPnRhYmxl
KGkpLT5yZWYoKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8v
IEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21JbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3Rh
bmNlLmgKaW5kZXggYmYxMWMxNTIyYjlhNjE5ZjNjMzcwNDY2ZTRiNzhjMzJlODUwZGNiZC4uMjJi
YWZiOTUyZTJkOWQ3ZTA3ZDZlNmU4ZmViYTZhYTI3OGRiM2JkZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmgKQEAgLTY0LDcgKzY0LDggQEAgcHVibGljOgogICAg
IE1vZHVsZSYgbW9kdWxlKCkgeyByZXR1cm4gbV9tb2R1bGUuZ2V0KCk7IH0KICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jaygpIHsgcmV0dXJuIG1fY29kZUJsb2NrLmdldCgpOyB9CiAgICAgTWVtb3J5
KiBtZW1vcnkoKSB7IHJldHVybiBtX21lbW9yeS5nZXQoKTsgfQotICAgIFRhYmxlKiB0YWJsZSgp
IHsgcmV0dXJuIG1fdGFibGUuZ2V0KCk7IH0KKyAgICBUYWJsZSogdGFibGUodW5zaWduZWQpOwor
ICAgIHZvaWQgc2V0VGFibGUodW5zaWduZWQsIFJlZjxUYWJsZT4mJik7CiAKICAgICB2b2lkKiBj
YWNoZWRNZW1vcnkoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZE1lbW9yeTsgfQogICAgIHNpemVf
dCBjYWNoZWRNZW1vcnlTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRNZW1vcnlTaXplOyB9
CkBAIC04Miw3ICs4Myw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fY2FjaGVkTWVtb3J5U2l6
ZSA9IG1lbW9yeSgpLT5zaXplKCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgdm9pZCBzZXRUYWJs
ZShSZWY8VGFibGU+JiYgdGFibGUpIHsgbV90YWJsZSA9IFdURk1vdmUodGFibGUpOyB9CiAKICAg
ICBpbnQzMl90IGxvYWRJMzJHbG9iYWwodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9nbG9i
YWxzLmdldCgpW2ldLnByaW1pdGl2ZTsgfQogICAgIGludDY0X3QgbG9hZEk2NEdsb2JhbCh1bnNp
Z25lZCBpKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbHMuZ2V0KClbaV0ucHJpbWl0aXZlOyB9CkBA
IC05NCw3ICs5NCw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZN
ZW1vcnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fbWVtb3J5KTsgfQog
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZHbG9iYWxzKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEluc3RhbmNlLCBtX2dsb2JhbHMpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZlRhYmxlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX3RhYmxlKTsg
fQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWNoZWRNZW1vcnkoKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fY2FjaGVkTWVtb3J5KTsgfQogICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEluc3RhbmNlLCBtX2NhY2hlZE1lbW9yeVNpemUpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZlBvaW50ZXJUb1RvcEVudHJ5RnJhbWUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoSW5zdGFuY2UsIG1fcG9pbnRlclRvVG9wRW50cnlGcmFtZSk7IH0KQEAgLTEzMyw2ICsxMzIs
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkltcG9ydEZ1bmN0aW9uKHNp
emVfdCBpbXBvcnRGdW5jdGlvbk51bSkgeyByZXR1cm4gb2Zmc2V0T2ZUYWlsKCkgKyBpbXBvcnRG
dW5jdGlvbk51bSAqIHNpemVvZihJbXBvcnRGdW5jdGlvbkluZm8pICsgT0JKRUNUX09GRlNFVE9G
KEltcG9ydEZ1bmN0aW9uSW5mbywgaW1wb3J0RnVuY3Rpb24pOyB9CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gVCogaW1wb3J0RnVuY3Rpb24odW5zaWduZWQgaW1wb3J0RnVuY3Rpb25OdW0pIHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KCZpbXBvcnRGdW5jdGlvbkluZm8oaW1wb3J0RnVu
Y3Rpb25OdW0pLT5pbXBvcnRGdW5jdGlvbik7IH0KIAorICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0
T2ZUYWJsZVB0cih1bnNpZ25lZCBudW1JbXBvcnRGdW5jdGlvbnMsIHVuc2lnbmVkIGkpIHsgcmV0
dXJuIG9mZnNldE9mVGFpbCgpICsgc2l6ZW9mKEltcG9ydEZ1bmN0aW9uSW5mbykgKiBudW1JbXBv
cnRGdW5jdGlvbnMgKyBzaXplb2YoVGFibGUqKSAqIGk7IH0KKwogICAgIHZvaWQgc3RvcmVUb3BD
YWxsRnJhbWUodm9pZCogY2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgbV9zdG9yZVRvcENhbGxG
cmFtZShjYWxsRnJhbWUpOwpAQCAtMTQxLDkgKzE0Miw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgSW5zdGFuY2UoQ29udGV4dCosIFJlZjxNb2R1bGU+JiYsIEVudHJ5RnJhbWUqKiwgdm9pZCoq
LCBTdG9yZVRvcENhbGxGcmFtZUNhbGxiYWNrJiYpOwogICAgIAotICAgIHN0YXRpYyBzaXplX3Qg
YWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IG51bUltcG9ydEZ1bmN0aW9ucykKKyAgICBz
dGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBudW1JbXBvcnRGdW5j
dGlvbnMsIENoZWNrZWQ8c2l6ZV90PiBudW1UYWJsZXMpCiAgICAgewotICAgICAgICByZXR1cm4g
KG9mZnNldE9mVGFpbCgpICsgc2l6ZW9mKEltcG9ydEZ1bmN0aW9uSW5mbykgKiBudW1JbXBvcnRG
dW5jdGlvbnMpLnVuc2FmZUdldCgpOworICAgICAgICByZXR1cm4gKG9mZnNldE9mVGFpbCgpICsg
c2l6ZW9mKEltcG9ydEZ1bmN0aW9uSW5mbykgKiBudW1JbXBvcnRGdW5jdGlvbnMgKyBzaXplb2Yo
VGFibGUqKSAqIG51bVRhYmxlcykudW5zYWZlR2V0KCk7CiAgICAgfQogICAgIHZvaWQqIG1fb3du
ZXIgeyBudWxscHRyIH07IC8vIEluIGEgSlMgZW1iZWRkaW5nLCB0aGlzIGlzIGEgSlNXZWJBc3Nl
bWJseUluc3RhbmNlKi4KICAgICBDb250ZXh0KiBtX2NvbnRleHQgeyBudWxscHRyIH07CkBAIC0x
NTIsNyArMTUzLDYgQEAgcHJpdmF0ZToKICAgICBSZWY8TW9kdWxlPiBtX21vZHVsZTsKICAgICBS
ZWZQdHI8Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKICAgICBSZWZQdHI8TWVtb3J5PiBtX21lbW9y
eTsKLSAgICBSZWZQdHI8VGFibGU+IG1fdGFibGU7CiAKICAgICB1bmlvbiBHbG9iYWxWYWx1ZSB7
CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBhbnlyZWY7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oCmluZGV4IGFkNWViOTUy
NmFjN2FjM2JlNDM3ZmM2MjNkZjBiZDdkYzIwODA3ZDIuLjEzZjMzMmIxYjU4NGI5MzgxOTVhYzJm
MTNjZTdjOTI0NWY0ZDgzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oCkBAIC02NCw3ICs2NCw3IEBAIHN0cnVjdCBNb2R1bGVJ
bmZvcm1hdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGVJbmZvcm1hdGlv
bj4gewogICAgIC8vIEN1cnJlbnRseSwgb3VyIHdhc20gaW1wbGVtZW50YXRpb24gYWxsb3dzIG9u
bHkgb25lIG1lbW9yeSBhbmQgdGFibGUuCiAgICAgLy8gSWYgd2UgbmVlZCB0byByZW1vdmUgdGhp
cyBsaW1pdGF0aW9uLCB3ZSB3b3VsZCBoYXZlIE1lbW9yeUluZm9ybWF0aW9uIGFuZCBUYWJsZUlu
Zm9ybWF0aW9uIGluIHRoZSBWZWN0b3JzLgogICAgIHVpbnQzMl90IG1lbW9yeUNvdW50KCkgY29u
c3QgeyByZXR1cm4gbWVtb3J5ID8gMSA6IDA7IH0KLSAgICB1aW50MzJfdCB0YWJsZUNvdW50KCkg
Y29uc3QgeyByZXR1cm4gdGFibGVJbmZvcm1hdGlvbiA/IDEgOiAwOyB9CisgICAgdWludDMyX3Qg
dGFibGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHRhYmxlcy5zaXplKCk7IH0KIAogICAgIFZlY3Rv
cjxJbXBvcnQ+IGltcG9ydHM7CiAgICAgVmVjdG9yPFNpZ25hdHVyZUluZGV4PiBpbXBvcnRGdW5j
dGlvblNpZ25hdHVyZUluZGljZXM7CkBAIC03OSw3ICs3OSw3IEBAIHN0cnVjdCBNb2R1bGVJbmZv
cm1hdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGVJbmZvcm1hdGlvbj4g
ewogICAgIE9wdGlvbmFsPHVpbnQzMl90PiBzdGFydEZ1bmN0aW9uSW5kZXhTcGFjZTsKICAgICBW
ZWN0b3I8U2VnbWVudDo6UHRyPiBkYXRhOwogICAgIFZlY3RvcjxFbGVtZW50PiBlbGVtZW50czsK
LSAgICBUYWJsZUluZm9ybWF0aW9uIHRhYmxlSW5mb3JtYXRpb247CisgICAgVmVjdG9yPFRhYmxl
SW5mb3JtYXRpb24+IHRhYmxlczsKICAgICBWZWN0b3I8R2xvYmFsPiBnbG9iYWxzOwogICAgIHVu
c2lnbmVkIGZpcnN0SW50ZXJuYWxHbG9iYWwgeyAwIH07CiAgICAgVmVjdG9yPEN1c3RvbVNlY3Rp
b24+IGN1c3RvbVNlY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVNlY3Rpb25QYXJzZXIuY3BwCmluZGV4IDMwYjZmM2NlZDlkZjU2MjYyMjI2MjcyNTNjMjQ2ODRh
M2M4YjQ5NDMuLjljNDJjMTE3YzVkZDI2ZWM3NDk2MzJjZDExN2Y2Njk2MThiMTIxOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKQEAg
LTExOSw2ICsxMTksNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW1wb3J0KCkgLT4gUGFy
dGlhbFJlc3VsdAogICAgICAgICB9CiAgICAgICAgIGNhc2UgRXh0ZXJuYWxLaW5kOjpUYWJsZTog
ewogICAgICAgICAgICAgYm9vbCBpc0ltcG9ydCA9IHRydWU7CisgICAgICAgICAgICBraW5kSW5k
ZXggPSBtX2luZm8tPnRhYmxlcy5zaXplKCk7CiAgICAgICAgICAgICBQYXJ0aWFsUmVzdWx0IHJl
c3VsdCA9IHBhcnNlVGFibGVIZWxwZXIoaXNJbXBvcnQpOwogICAgICAgICAgICAgaWYgKFVOTElL
RUxZKCFyZXN1bHQpKQogICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZN
b3ZlKHJlc3VsdC5lcnJvcigpKSk7CkBAIC0xOTMsOCArMTk0LDYgQEAgYXV0byBTZWN0aW9uUGFy
c2VyOjpwYXJzZVJlc2l6YWJsZUxpbWl0cyh1aW50MzJfdCYgaW5pdGlhbCwgT3B0aW9uYWw8dWlu
dDMyX3Q+JgogCiBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlVGFibGVIZWxwZXIoYm9vbCBpc0lt
cG9ydCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYobV9pbmZv
LT50YWJsZUNvdW50KCkgPiAwLCAiQ2Fubm90IGhhdmUgbW9yZSB0aGFuIG9uZSBUYWJsZSBmb3Ig
bm93Iik7Ci0KICAgICBpbnQ4X3QgdHlwZTsKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJz
ZUludDcodHlwZSksICJjYW4ndCBwYXJzZSBUYWJsZSB0eXBlIik7CiAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRih0eXBlICE9IFdhc206OkFueWZ1bmMgJiYgdHlwZSAhPSBXYXNtOjpBbnlyZWYsICJU
YWJsZSB0eXBlIHNob3VsZCBiZSBhbnlmdW5jIG9yIGFueXJlZiwgZ290ICIsIHR5cGUpOwpAQCAt
MjA5LDcgKzIwOCw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VUYWJsZUhlbHBlcihib29s
IGlzSW1wb3J0KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgQVNTRVJUKCFtYXhpbXVtIHx8ICptYXhp
bXVtID49IGluaXRpYWwpOwogCiAgICAgVGFibGVFbGVtZW50VHlwZSB0YWJsZVR5cGUgPSB0eXBl
ID09IFdhc206OkFueWZ1bmMgPyBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmIDogVGFibGVFbGVt
ZW50VHlwZTo6QW55cmVmOwotICAgIG1faW5mby0+dGFibGVJbmZvcm1hdGlvbiA9IFRhYmxlSW5m
b3JtYXRpb24oaW5pdGlhbCwgbWF4aW11bSwgaXNJbXBvcnQsIHRhYmxlVHlwZSk7CisgICAgbV9p
bmZvLT50YWJsZXMuYXBwZW5kKFRhYmxlSW5mb3JtYXRpb24oaW5pdGlhbCwgbWF4aW11bSwgaXNJ
bXBvcnQsIHRhYmxlVHlwZSkpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTIxOCwxNSArMjE3
LDEzIEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VUYWJsZSgpIC0+IFBhcnRpYWxSZXN1bHQK
IHsKICAgICB1aW50MzJfdCBjb3VudDsKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZh
clVJbnQzMihjb3VudCksICJjYW4ndCBnZXQgVGFibGUncyBjb3VudCIpOwotICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoY291bnQgPiAxLCAiVGFibGUgY291bnQgb2YgIiwgY291bnQsICIgaXMgaW52
YWxpZCwgYXQgbW9zdCAxIGlzIGFsbG93ZWQgZm9yIG5vdyIpOwotCi0gICAgaWYgKCFjb3VudCkK
LSAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGJvb2wgaXNJbXBvcnQgPSBmYWxzZTsKLSAgICBQ
YXJ0aWFsUmVzdWx0IHJlc3VsdCA9IHBhcnNlVGFibGVIZWxwZXIoaXNJbXBvcnQpOwotICAgIGlm
IChVTkxJS0VMWSghcmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1v
dmUocmVzdWx0LmVycm9yKCkpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7
ICsraSkgeworICAgICAgICBib29sIGlzSW1wb3J0ID0gZmFsc2U7CisgICAgICAgIFBhcnRpYWxS
ZXN1bHQgcmVzdWx0ID0gcGFyc2VUYWJsZUhlbHBlcihpc0ltcG9ydCk7CisgICAgICAgIGlmIChV
TkxJS0VMWSghcmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZN
b3ZlKHJlc3VsdC5lcnJvcigpKSk7CisgICAgfQogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTM4
Myw5ICszODAsOSBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRp
YWxSZXN1bHQKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoaW5k
ZXhDb3VudCksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIGluZGV4IGNvdW50IGZvciBF
bGVtZW50IHNlY3Rpb24iKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihpbmRleENvdW50
ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwgIkVsZW1lbnQgc2VjdGlv
bidzICIsIGVsZW1lbnROdW0sICJ0aCBpbmRleCBjb3VudCBpcyB0b28gYmlnICIsIGluZGV4Q291
bnQpOwogCi0gICAgICAgIEFTU0VSVCghIW1faW5mby0+dGFibGVJbmZvcm1hdGlvbik7CisgICAg
ICAgIEFTU0VSVCghIW1faW5mby0+dGFibGVzW3RhYmxlSW5kZXhdKTsKIAotICAgICAgICBFbGVt
ZW50IGVsZW1lbnQobWFrZUkzMkluaXRFeHByKGluaXRPcGNvZGUsIGluaXRFeHByQml0cykpOwor
ICAgICAgICBFbGVtZW50IGVsZW1lbnQodGFibGVJbmRleCwgbWFrZUkzMkluaXRFeHByKGluaXRP
cGNvZGUsIGluaXRFeHByQml0cykpOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFlbGVt
ZW50LmZ1bmN0aW9uSW5kaWNlcy50cnlSZXNlcnZlQ2FwYWNpdHkoaW5kZXhDb3VudCksICJjYW4n
dCBhbGxvY2F0ZSBtZW1vcnkgZm9yICIsIGluZGV4Q291bnQsICIgRWxlbWVudCBpbmRpY2VzIik7
CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgaW5kZXhDb3VudDsg
KytpbmRleCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRh
YmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaAppbmRleCA0ZDU3
ZDQxNTJjZmE3YjE1ZWMzZjE1YzYxNmU3ZmMzYjQzN2VjNmFmLi41MzkyYzgzOWE2NzJlNmEzZmI4
MjVjZjQxZjVkNTc0NDA0NmVkYmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFi
bGUuaApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHVpbnQzMl90IGFsbG9j
YXRlZExlbmd0aCh1aW50MzJfdCBsZW5ndGgpOwogICAgIHVpbnQzMl90IG1hc2soKSBjb25zdCB7
IHJldHVybiBtX21hc2s7IH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQqIG93bmVyKCkg
Y29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4obV9vd25lcik7IH0KICAgICB2b2lk
IHNldE93bmVyKEpTT2JqZWN0KiBvd25lcikKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9vd25l
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcAppbmRleCBh
NGI3OGU0NThkZjQ1OThlMGNjZGE2MWZhOTRlYzkxOWEyOWFmY2Y0Li45YjI2Nzk4YTBhOThlNGVm
MWU0NTU0NDdhYjY3OTA0MWU1MDQ3MDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21WYWxpZGF0ZS5jcHAKQEAgLTEwNSw4ICsxMDUsOCBAQCBwdWJsaWM6CiAgICAgUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUmIHZhbHVlLCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKIAogICAgIC8vIFRhYmxlcwotICAgIFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCk7Ci0gICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZVNl
dChFeHByZXNzaW9uVHlwZSYgaWR4LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUpOworICAgIFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQodWludDMyX3QsIEV4cHJlc3Npb25UeXBl
JiBpZHgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gYWRkVGFibGVTZXQodWludDMyX3QsIEV4cHJlc3Npb25UeXBlJiBpZHgsIEV4cHJlc3Np
b25UeXBlJiB2YWx1ZSk7CiAKICAgICAvLyBMb2NhbHMKICAgICBSZXN1bHQgV0FSTl9VTlVTRURf
UkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsK
QEAgLTE0Nyw3ICsxNDcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxscwogICAgIFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1bnNpZ25lZCBjYWxsZWVJbmRleCwgY29uc3QgU2ln
bmF0dXJlJiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5
cGUmIHJlc3VsdCk7Ci0gICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJl
Y3QoY29uc3QgU2lnbmF0dXJlJiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywg
RXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgY29u
c3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7
CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZGlkS2lsbChFeHByZXNzaW9uVHlwZSkgeyB9CiAK
QEAgLTE3NywyMCArMTc3LDIyIEBAIGF1dG8gVmFsaWRhdGU6OmFkZEFyZ3VtZW50cyhjb25zdCBT
aWduYXR1cmUmIHNpZ25hdHVyZSkgLT4gUmVzdWx0CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0
byBWYWxpZGF0ZTo6YWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhwcmVzc2lvblR5
cGUmIHJlc3VsdCkgLT4gUmVzdWx0CithdXRvIFZhbGlkYXRlOjphZGRUYWJsZUdldCh1bnNpZ25l
ZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSYgaWR4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KSAtPiBSZXN1bHQKIHsKICAgICByZXN1bHQgPSBUeXBlOjpBbnlyZWY7CiAgICAgV0FTTV9WQUxJ
REFUT1JfRkFJTF9JRihUeXBlOjpJMzIgIT0gaWR4LCAidGFibGUuZ2V0IGluZGV4IHRvIHR5cGUg
IiwgaWR4LCAiIGV4cGVjdGVkICIsIFR5cGU6OkkzMik7Ci0gICAgV0FTTV9WQUxJREFUT1JfRkFJ
TF9JRihUYWJsZUVsZW1lbnRUeXBlOjpBbnlyZWYgIT0gbV9tb2R1bGUudGFibGVJbmZvcm1hdGlv
bi50eXBlKCksICJ0YWJsZS5nZXQgZXhwZWN0cyB0aGUgdGFibGUgdG8gaGF2ZSB0eXBlICIsIFR5
cGU6OkFueXJlZik7CisgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRih0YWJsZUluZGV4ID49IG1f
bW9kdWxlLnRhYmxlQ291bnQoKSwgInRhYmxlIGluZGV4ICIsIHRhYmxlSW5kZXgsICIgaXMgaW52
YWxpZCwgbGltaXQgaXMgIiwgbV9tb2R1bGUudGFibGVDb3VudCgpKTsKKyAgICBXQVNNX1ZBTElE
QVRPUl9GQUlMX0lGKFRhYmxlRWxlbWVudFR5cGU6OkFueXJlZiAhPSBtX21vZHVsZS50YWJsZXNb
dGFibGVJbmRleF0udHlwZSgpLCAidGFibGUuZ2V0IGV4cGVjdHMgdGhlIHRhYmxlIHRvIGhhdmUg
dHlwZSAiLCBUeXBlOjpBbnlyZWYpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBWYWxp
ZGF0ZTo6YWRkVGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGlkeCwgRXhwcmVzc2lvblR5cGUmIHZh
bHVlKSAtPiBSZXN1bHQKK2F1dG8gVmFsaWRhdGU6OmFkZFRhYmxlU2V0KHVuc2lnbmVkIHRhYmxl
SW5kZXgsIEV4cHJlc3Npb25UeXBlJiBpZHgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4gUmVz
dWx0CiB7CiAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihUeXBlOjpJMzIgIT0gaWR4LCAidGFi
bGUuc2V0IGluZGV4IHRvIHR5cGUgIiwgaWR4LCAiIGV4cGVjdGVkICIsIFR5cGU6OkkzMik7Cisg
ICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRih0YWJsZUluZGV4ID49IG1fbW9kdWxlLnRhYmxlQ291
bnQoKSwgInRhYmxlIGluZGV4ICIsIHRhYmxlSW5kZXgsICIgaXMgaW52YWxpZCwgbGltaXQgaXMg
IiwgbV9tb2R1bGUudGFibGVDb3VudCgpKTsKICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKFR5
cGU6OkFueXJlZiAhPSB2YWx1ZSwgInRhYmxlLnNldCB2YWx1ZSB0byB0eXBlICIsIHZhbHVlLCAi
IGV4cGVjdGVkICIsIFR5cGU6OkFueXJlZik7Ci0gICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihU
YWJsZUVsZW1lbnRUeXBlOjpBbnlyZWYgIT0gbV9tb2R1bGUudGFibGVJbmZvcm1hdGlvbi50eXBl
KCksICJ0YWJsZS5zZXQgZXhwZWN0cyB0aGUgdGFibGUgdG8gaGF2ZSB0eXBlICIsIFR5cGU6OkFu
eXJlZik7CisgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihUYWJsZUVsZW1lbnRUeXBlOjpBbnly
ZWYgIT0gbV9tb2R1bGUudGFibGVzW3RhYmxlSW5kZXhdLnR5cGUoKSwgInRhYmxlLnNldCBleHBl
Y3RzIHRoZSB0YWJsZSB0byBoYXZlIHR5cGUgIiwgVHlwZTo6QW55cmVmKTsKIAogICAgIHJldHVy
biB7IH07CiB9CkBAIC0zNjgsOSArMzcwLDEwIEBAIGF1dG8gVmFsaWRhdGU6OmFkZENhbGwodW5z
aWduZWQsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8RXhwcmVzCiAg
ICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBWYWxpZGF0ZTo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0
IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdz
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBSZXN1bHQKK2F1dG8gVmFsaWRhdGU6OmFkZENh
bGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVy
ZSwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCkgLT4gUmVzdWx0CiB7Ci0gICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihtX21vZHVsZS50
YWJsZUluZm9ybWF0aW9uLnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCAiVGFi
bGUgbXVzdCBoYXZlIHR5cGUgQW55ZnVuYyB0byBjYWxsIik7CisgICAgV0FTTV9WQUxJREFUT1Jf
RkFJTF9JRih0YWJsZUluZGV4ID49IG1fbW9kdWxlLnRhYmxlQ291bnQoKSwgInRhYmxlIGluZGV4
ICIsIHRhYmxlSW5kZXgsICIgaXMgaW52YWxpZCwgbGltaXQgaXMgIiwgbV9tb2R1bGUudGFibGVD
b3VudCgpKTsKKyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKG1fbW9kdWxlLnRhYmxlc1t0YWJs
ZUluZGV4XS50eXBlKCkgIT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgIlRhYmxlIG11c3Qg
aGF2ZSB0eXBlIEFueWZ1bmMgdG8gY2FsbCIpOwogICAgIGNvbnN0IGF1dG8gYXJndW1lbnRDb3Vu
dCA9IHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCk7CiAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9J
Rihhcmd1bWVudENvdW50ICE9IGFyZ3Muc2l6ZSgpIC0gMSwgImFyaXR5IG1pc21hdGNoIGluIGNh
bGxfaW5kaXJlY3QsIGdvdCAiLCBhcmdzLnNpemUoKSAtIDEsICIgYXJndW1lbnRzLCBleHBlY3Rl
ZCAiLCBhcmd1bWVudENvdW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKaW5kZXggNjY2YmY0N2YxZmUyMzMw
MmZjMzBmZDRlMWRjNzM5NDVlYTRiM2QzZi4uZjYyMjkxZGNiNDU1MDJmYjJhYWMwOTIyMzdmNGVh
ZjQ0ZTJlMDQzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCkBAIC01Myw2ICs1Myw3IEBAIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZTo6SlNXZWJBc3NlbWJseUluc3RhbmNlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFJlZjxXCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2luc3RhbmNl
KFdURk1vdmUoaW5zdGFuY2UpKQogICAgICwgbV92bSgmdm0pCisgICAgLCBtX3RhYmxlcyhtX2lu
c3RhbmNlLT5tb2R1bGUoKS5tb2R1bGVJbmZvcm1hdGlvbigpLnRhYmxlQ291bnQoKSkKIHsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGhpcy0+aW5zdGFuY2UoKS5udW1JbXBvcnRGdW5j
dGlvbnMoKTsgKytpKQogICAgICAgICBuZXcgKHRoaXMtPmluc3RhbmNlKCkuaW1wb3J0RnVuY3Rp
b248V3JpdGVCYXJyaWVyPEpTT2JqZWN0Pj4oaSkpIFdyaXRlQmFycmllcjxKU09iamVjdD4oKTsK
QEAgLTg1LDcgKzg2LDggQEAgdm9pZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX2NvZGVCbG9jayk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3QpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fbWVtb3J5KTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3RhYmxlKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGhpc09iamVjdC0+aW5zdGFuY2UoKS5tb2R1
bGUoKS5tb2R1bGVJbmZvcm1hdGlvbigpLnRhYmxlQ291bnQoKTsgKytpKQorICAgICAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3RhYmxlc1tpXSk7CiAgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9jYWxsZWUpOwogICAgIHZpc2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNp
dGVkKHRoaXNPYmplY3QtPm1faW5zdGFuY2UtPmV4dHJhTWVtb3J5QWxsb2NhdGVkKCkpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5pbnN0YW5jZSgpLm51bUltcG9y
dEZ1bmN0aW9ucygpOyArK2kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCmluZGV4IDIxNzg0YTkzOWQ4ZWI0N2U4ZjUyNDZl
MjY2M2VmMzY3NzA0OTI4ZTUuLmUxNjMxZmNiYjE4MzNlMDE4ZWY3YzRkNjE3ODA5MTgyNGQ0ZTYx
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlJbnN0YW5jZS5oCkBAIC03MSwxMSArNzEsMTMgQEAgcHVibGljOgogICAgIH0KICAgICBX
YXNtOjpNZW1vcnlNb2RlIG1lbW9yeU1vZGUoKSB7IHJldHVybiBtZW1vcnkoKS0+bWVtb3J5KCku
bW9kZSgpOyB9CiAKLSAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlKCkgeyByZXR1cm4gbV90
YWJsZS5nZXQoKTsgfQotICAgIHZvaWQgc2V0VGFibGUoVk0mIHZtLCBKU1dlYkFzc2VtYmx5VGFi
bGUqIHZhbHVlKSB7Ci0gICAgICAgIEFTU0VSVCghdGFibGUoKSk7Ci0gICAgICAgIG1fdGFibGUu
c2V0KHZtLCB0aGlzLCB2YWx1ZSk7Ci0gICAgICAgIGluc3RhbmNlKCkuc2V0VGFibGUobWFrZVJl
ZigqdGFibGUoKS0+dGFibGUoKSkpOworICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUodW5z
aWduZWQgaSkgeyByZXR1cm4gbV90YWJsZXNbaV0uZ2V0KCk7IH0KKyAgICB2b2lkIHNldFRhYmxl
KFZNJiB2bSwgdWludDMyX3QgaW5kZXgsIEpTV2ViQXNzZW1ibHlUYWJsZSogdmFsdWUpCisgICAg
eworICAgICAgICBBU1NFUlQoaW5kZXggPCBtX3RhYmxlcy5zaXplKCkpOworICAgICAgICBBU1NF
UlQoIXRhYmxlKGluZGV4KSk7CisgICAgICAgIG1fdGFibGVzW2luZGV4XS5zZXQodm0sIHRoaXMs
IHZhbHVlKTsKKyAgICAgICAgaW5zdGFuY2UoKS5zZXRUYWJsZShpbmRleCwgbWFrZVJlZigqdGFi
bGUoaW5kZXgpLT50YWJsZSgpKSk7CiAgICAgfQogCiAgICAgSlNXZWJBc3NlbWJseU1vZHVsZSog
bW9kdWxlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGUuZ2V0KCk7IH0KQEAgLTk4LDcgKzEwMCw3
IEBAIHByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+IG1f
Y29kZUJsb2NrOwogICAgIFdyaXRlQmFycmllcjxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4gbV9t
b2R1bGVOYW1lc3BhY2VPYmplY3Q7CiAgICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlNZW1v
cnk+IG1fbWVtb3J5OwotICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5VGFibGU+IG1fdGFi
bGU7CisgICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5VGFibGU+PiBtX3RhYmxl
czsKICAgICBXcml0ZUJhcnJpZXI8V2ViQXNzZW1ibHlUb0pTQ2FsbGVlPiBtX2NhbGxlZTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkLmNwcAppbmRleCA0ZjgwMWU1NzY5MjdmZjY2ZWU1MGM2NTA4OTBlZmUw
MjE3MDdiOGYyLi5mNTA0NWZmNThjZjMwZTdmMmM2OTcwMGRhYmY1Y2FhMTI0MWJhNjlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJl
Y29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQuY3BwCkBAIC0xMTMsOCArMTEzLDYgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVs
ZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRP
YmoKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoYmVmb3JlLCAiICIsIFN0cmluZzo6ZnJvbVVU
RjgoaW1wb3J0Lm1vZHVsZSksICI6IiwgU3RyaW5nOjpmcm9tVVRGOChpbXBvcnQuZmllbGQpLCAi
ICIsIGFmdGVyKTsKICAgICB9OwogCi0gICAgYm9vbCBoYXNUYWJsZUltcG9ydCA9IGZhbHNlOwot
CiAgICAgZm9yIChjb25zdCBhdXRvJiBpbXBvcnQgOiBtb2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRz
KSB7CiAgICAgICAgIC8vIFZhbGlkYXRpb24gYW5kIGxpbmtpbmcgb3RoZXIgdGhhbiBXYXNtOjpF
eHRlcm5hbEtpbmQ6OkZ1bmN0aW9uIGlzIGFscmVhZHkgZG9uZSBpbiBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UuCiAgICAgICAgIC8vIEV2ZW50dWFsbHkgd2Ugd2lsbCBtb3ZlIGFsbCB0aGUgbGlua2lu
ZyBjb2RlIGluIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSBoZXJlIGFuZCByZW1vdmUgdGhpcyBzd2l0
Y2ggc3RhdGVtZW50LgpAQCAtMjU5LDIwICsyNTcsMTggQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVs
ZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRP
YmoKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxLaW5kOjpUYWJsZTog
ewotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWhhc1RhYmxlSW1wb3J0KTsgLy8gVGhpcyBz
aG91bGQgYmUgZ3VhcmFudGVlZCBieSBhIHZhbGlkYXRpb24gZmFpbHVyZS4KICAgICAgICAgICAg
IC8vIDcuIE90aGVyd2lzZSAoaSBpcyBhIHRhYmxlIGltcG9ydCk6Ci0gICAgICAgICAgICBoYXNU
YWJsZUltcG9ydCA9IHRydWU7CiAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxl
ID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5VGFibGUqPih2bSwgdmFsdWUpOwogICAgICAg
ICAgICAgLy8gaS4gSWYgdiBpcyBub3QgYSBXZWJBc3NlbWJseS5UYWJsZSBvYmplY3QsIHRocm93
IGEgV2ViQXNzZW1ibHkuTGlua0Vycm9yLgogICAgICAgICAgICAgaWYgKCF0YWJsZSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3Io
ZXhlYywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgIlRhYmxlIGltcG9ydCIsICJpcyBu
b3QgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuVGFibGUiKSkpOwogCi0gICAgICAgICAgICB1
aW50MzJfdCBleHBlY3RlZEluaXRpYWwgPSBtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0
aW9uLmluaXRpYWwoKTsKKyAgICAgICAgICAgIHVpbnQzMl90IGV4cGVjdGVkSW5pdGlhbCA9IG1v
ZHVsZUluZm9ybWF0aW9uLnRhYmxlc1tpbXBvcnQua2luZEluZGV4XS5pbml0aWFsKCk7CiAgICAg
ICAgICAgICB1aW50MzJfdCBhY3R1YWxJbml0aWFsID0gdGFibGUtPmxlbmd0aCgpOwogICAgICAg
ICAgICAgaWYgKGFjdHVhbEluaXRpYWwgPCBleHBlY3RlZEluaXRpYWwpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZt
LCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJUYWJsZSBpbXBvcnQiLCAicHJvdmlkZWQgYW4g
J2luaXRpYWwnIHRoYXQgaXMgdG9vIHNtYWxsIikpKTsKIAotICAgICAgICAgICAgaWYgKE9wdGlv
bmFsPHVpbnQzMl90PiBleHBlY3RlZE1heGltdW0gPSBtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUlu
Zm9ybWF0aW9uLm1heGltdW0oKSkgeworICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90
PiBleHBlY3RlZE1heGltdW0gPSBtb2R1bGVJbmZvcm1hdGlvbi50YWJsZXNbaW1wb3J0LmtpbmRJ
bmRleF0ubWF4aW11bSgpKSB7CiAgICAgICAgICAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGFj
dHVhbE1heGltdW0gPSB0YWJsZS0+bWF4aW11bSgpOwogICAgICAgICAgICAgICAgIGlmICghYWN0
dWFsTWF4aW11bSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVK
U1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQs
ICJUYWJsZSBpbXBvcnQiLCAiZG9lcyBub3QgaGF2ZSBhICdtYXhpbXVtJyBidXQgdGhlIG1vZHVs
ZSByZXF1aXJlcyB0aGF0IGl0IGRvZXMiKSkpOwpAQCAtMjgwLDE0ICsyNzYsMTQgQEAgdm9pZCBX
ZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpT
T2JqZWN0KiBpbXBvcnRPYmoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihj
cmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShp
bXBvcnQsICJJbXBvcnRlZCBUYWJsZSIsICInbWF4aW11bScgaXMgbGFyZ2VyIHRoYW4gdGhlIG1v
ZHVsZSdzIGV4cGVjdGVkICdtYXhpbXVtJyIpKSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIGF1dG8gZXhwZWN0ZWRUeXBlID0gbW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlv
bi50eXBlKCk7CisgICAgICAgICAgICBhdXRvIGV4cGVjdGVkVHlwZSA9IG1vZHVsZUluZm9ybWF0
aW9uLnRhYmxlc1tpbXBvcnQua2luZEluZGV4XS50eXBlKCk7CiAgICAgICAgICAgICBhdXRvIGFj
dHVhbFR5cGUgPSB0YWJsZS0+dGFibGUoKS0+dHlwZSgpOwogICAgICAgICAgICAgaWYgKGV4cGVj
dGVkVHlwZSAhPSBhY3R1YWxUeXBlKQogICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24o
Y3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2Uo
aW1wb3J0LCAiVGFibGUgaW1wb3J0IiwgInByb3ZpZGVkIGEgJ3R5cGUnIHRoYXQgaXMgd3Jvbmci
KSkpOwogCiAgICAgICAgICAgICAvLyBpaS4gQXBwZW5kIHYgdG8gdGFibGVzLgogICAgICAgICAg
ICAgLy8gaWlpLiBBcHBlbmQgdi5bW1RhYmxlXV0gdG8gaW1wb3J0cy4KLSAgICAgICAgICAgIG1f
aW5zdGFuY2UtPnNldFRhYmxlKHZtLCB0YWJsZSk7CisgICAgICAgICAgICBtX2luc3RhbmNlLT5z
ZXRUYWJsZSh2bSwgaW1wb3J0LmtpbmRJbmRleCwgdGFibGUpOwogICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC0yOTcsMTYgKzI5MywxNiBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjps
aW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9iagogICAgICAg
ICB9CiAgICAgfQogCi0gICAgewotICAgICAgICBpZiAoISFtb2R1bGVJbmZvcm1hdGlvbi50YWJs
ZUluZm9ybWF0aW9uICYmIG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaXNJbXBv
cnQoKSkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtb2R1bGVJbmZvcm1hdGlvbi50
YWJsZUNvdW50KCk7ICsraSkgeworICAgICAgICBpZiAobW9kdWxlSW5mb3JtYXRpb24udGFibGVz
W2ldLmlzSW1wb3J0KCkpIHsKICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBlaXRoZXIgaGF2ZSBh
IFRhYmxlIGltcG9ydCBvciB3ZSBzaG91bGQgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uLgotICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaGFzVGFibGVJbXBvcnQpOworICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQobV9pbnN0YW5jZS0+dGFibGUoaSkpOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKCEhbW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlvbiAmJiAhaGFzVGFibGVJbXBv
cnQpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtb2R1bGVJbmZvcm1hdGlvbi50YWJs
ZUluZm9ybWF0aW9uLmlzSW1wb3J0KCkpOworICAgICAgICBpZiAoIW1faW5zdGFuY2UtPnRhYmxl
KGkpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbW9kdWxlSW5mb3JtYXRpb24udGFi
bGVzW2ldLmlzSW1wb3J0KCkpOwogICAgICAgICAgICAgLy8gV2UgY3JlYXRlIGEgVGFibGUgd2hl
biBpdCdzIGEgVGFibGUgZGVmaW5pdGlvbi4KLSAgICAgICAgICAgIFJlZlB0cjxXYXNtOjpUYWJs
ZT4gd2FzbVRhYmxlID0gV2FzbTo6VGFibGU6OnRyeUNyZWF0ZShtb2R1bGVJbmZvcm1hdGlvbi50
YWJsZUluZm9ybWF0aW9uLmluaXRpYWwoKSwgbW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1h
dGlvbi5tYXhpbXVtKCksIG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24udHlwZSgp
KTsKKyAgICAgICAgICAgIFJlZlB0cjxXYXNtOjpUYWJsZT4gd2FzbVRhYmxlID0gV2FzbTo6VGFi
bGU6OnRyeUNyZWF0ZShtb2R1bGVJbmZvcm1hdGlvbi50YWJsZXNbaV0uaW5pdGlhbCgpLCBtb2R1
bGVJbmZvcm1hdGlvbi50YWJsZXNbaV0ubWF4aW11bSgpLCBtb2R1bGVJbmZvcm1hdGlvbi50YWJs
ZXNbaV0udHlwZSgpKTsKICAgICAgICAgICAgIGlmICghd2FzbVRhYmxlKQogICAgICAgICAgICAg
ICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2
bSwgImNvdWxkbid0IGNyZWF0ZSBUYWJsZSIpKTsKICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlU
YWJsZSogdGFibGUgPSBKU1dlYkFzc2VtYmx5VGFibGU6OmNyZWF0ZShleGVjLCB2bSwgZ2xvYmFs
T2JqZWN0LT53ZWJBc3NlbWJseVRhYmxlU3RydWN0dXJlKCksIHdhc21UYWJsZS5yZWxlYXNlTm9u
TnVsbCgpKTsKQEAgLTMxNCw3ICszMTAsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
OjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9iagogICAg
ICAgICAgICAgLy8gSWYgaXQncyBkZWZpbmVkIHRvIGJlIHRvbyBsYXJnZSwgd2Ugc2hvdWxkIGhh
dmUgdGhyb3duIGEgdmFsaWRhdGlvbiBlcnJvci4KICAgICAgICAgICAgIHNjb3BlLmFzc2VydE5v
RXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBBU1NFUlQodGFibGUpOwotICAgICAgICAgICAgbV9p
bnN0YW5jZS0+c2V0VGFibGUodm0sIHRhYmxlKTsKKyAgICAgICAgICAgIG1faW5zdGFuY2UtPnNl
dFRhYmxlKHZtLCBpLCB0YWJsZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzY5LDEwICszNjUsOCBAQCB2b2lk
IFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwg
SlNPYmplY3QqIGltcG9ydE9iagogICAgICAgICB9CiAgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJu
YWxLaW5kOjpUYWJsZTogewogICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYmUgZ3VhcmFudGVl
ZCBieSBtb2R1bGUgdmVyaWZpY2F0aW9uLgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9p
bnN0YW5jZS0+dGFibGUoKSk7IAotICAgICAgICAgICAgQVNTRVJUKGV4cC5raW5kSW5kZXggPT0g
MCk7Ci0KLSAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBtX2luc3RhbmNlLT50YWJsZSgpOwor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9pbnN0YW5jZS0+dGFibGUoZXhwLmtpbmRJbmRl
eCkpOworICAgICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9IG1faW5zdGFuY2UtPnRhYmxlKGV4cC5r
aW5kSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBX
YXNtOjpFeHRlcm5hbEtpbmQ6Ok1lbW9yeTogewpAQCAtNDU5LDcgKzQ1Myw2IEBAIEpTVmFsdWUg
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBX
YXNtOjpNb2R1bGUmIG1vZHVsZSA9IG1faW5zdGFuY2UtPmluc3RhbmNlKCkubW9kdWxlKCk7CiAg
ICAgV2FzbTo6Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmNv
ZGVCbG9jaygpOwogICAgIGNvbnN0IFdhc206Ok1vZHVsZUluZm9ybWF0aW9uJiBtb2R1bGVJbmZv
cm1hdGlvbiA9IG1vZHVsZS5tb2R1bGVJbmZvcm1hdGlvbigpOwotICAgIEpTV2ViQXNzZW1ibHlU
YWJsZSogdGFibGUgPSBtX2luc3RhbmNlLT50YWJsZSgpOwogCiAgICAgY29uc3QgVmVjdG9yPFdh
c206OlNlZ21lbnQ6OlB0cj4mIGRhdGEgPSBtb2R1bGVJbmZvcm1hdGlvbi5kYXRhOwogICAgIApA
QCAtNDcxLDE2ICs0NjQsMTYgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZh
bHVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgLy8gQWxzbywgaXQgY291bGQgYmUg
dGhhdCBhIHRhYmxlIHdhc24ndCBpbXBvcnRlZCwgb3IgdGhhdCB0aGUgdGFibGUKICAgICAgICAg
ICAgIC8vIGltcG9ydGVkIHdhc24ndCBjb21wYXRpYmxlLiBIb3dldmVyLCB0aG9zZSBzaG91bGQg
ZXJyb3Igb3V0IGJlZm9yZQogICAgICAgICAgICAgLy8gZ2V0dGluZyBoZXJlLgotICAgICAgICAg
ICAgQVNTRVJUKCEhdGFibGUpOworICAgICAgICAgICAgQVNTRVJUKCEhbV9pbnN0YW5jZS0+dGFi
bGUoZWxlbWVudC50YWJsZUluZGV4KSk7CiAKICAgICAgICAgICAgIGlmICghZWxlbWVudC5mdW5j
dGlvbkluZGljZXMuc2l6ZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
ICAgICB1aW50MzJfdCB0YWJsZUluZGV4ID0gZWxlbWVudC5vZmZzZXQuaXNHbG9iYWxJbXBvcnQo
KQorICAgICAgICAgICAgdWludDMyX3QgZWxlbWVudEluZGV4ID0gZWxlbWVudC5vZmZzZXQuaXNH
bG9iYWxJbXBvcnQoKQogICAgICAgICAgICAgICAgID8gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1f
aW5zdGFuY2UtPmluc3RhbmNlKCkubG9hZEkzMkdsb2JhbChlbGVtZW50Lm9mZnNldC5nbG9iYWxJ
bXBvcnRJbmRleCgpKSkKICAgICAgICAgICAgICAgICA6IGVsZW1lbnQub2Zmc2V0LmNvbnN0VmFs
dWUoKTsKIAotICAgICAgICAgICAgZm4oZWxlbWVudCwgdGFibGVJbmRleCk7CisgICAgICAgICAg
ICBmbihlbGVtZW50LCBlbGVtZW50LnRhYmxlSW5kZXgsIGVsZW1lbnRJbmRleCk7CiAKICAgICAg
ICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01MDQsOSAr
NDk3LDkgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoRXhlY1N0
YXRlKiBleGVjKQogICAgIH07CiAKICAgICAvLyBWYWxpZGF0aW9uIG9mIGFsbCBlbGVtZW50IHJh
bmdlcyBjb21lcyBiZWZvcmUgYWxsIFRhYmxlIGFuZCBNZW1vcnkgaW5pdGlhbGl6YXRpb24uCi0g
ICAgZm9yRWFjaEVsZW1lbnQoWyZdIChjb25zdCBXYXNtOjpFbGVtZW50JiBlbGVtZW50LCB1aW50
MzJfdCB0YWJsZUluZGV4KSB7Ci0gICAgICAgIHVpbnQ2NF90IGxhc3RXcml0dGVuSW5kZXggPSBz
dGF0aWNfY2FzdDx1aW50NjRfdD4odGFibGVJbmRleCkgKyBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
ZWxlbWVudC5mdW5jdGlvbkluZGljZXMuc2l6ZSgpKSAtIDE7Ci0gICAgICAgIGlmIChVTkxJS0VM
WShsYXN0V3JpdHRlbkluZGV4ID49IHRhYmxlLT5sZW5ndGgoKSkpCisgICAgZm9yRWFjaEVsZW1l
bnQoWyZdIChjb25zdCBXYXNtOjpFbGVtZW50JiBlbGVtZW50LCB1aW50MzJfdCB0YWJsZUluZGV4
LCB1aW50MzJfdCBlbGVtZW50SW5kZXgpIHsKKyAgICAgICAgdWludDY0X3QgbGFzdFdyaXR0ZW5J
bmRleCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihlbGVtZW50SW5kZXgpICsgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KGVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnNpemUoKSkgLSAxOworICAgICAgICBp
ZiAoVU5MSUtFTFkobGFzdFdyaXR0ZW5JbmRleCA+PSBtX2luc3RhbmNlLT50YWJsZSh0YWJsZUlu
ZGV4KS0+bGVuZ3RoKCkpKQogICAgICAgICAgICAgZXhjZXB0aW9uID0gSlNWYWx1ZSh0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2
bSwgIkVsZW1lbnQgaXMgdHJ5aW5nIHRvIHNldCBhbiBvdXQgb2YgYm91bmRzIHRhYmxlIGluZGV4
Il9zKSkpOwogICAgIH0pOwogCkBAIC01MjUsNyArNTE4LDcgQEAgSlNWYWx1ZSBXZWJBc3NlbWJs
eU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4g
ZXhjZXB0aW9uLnZhbHVlKCk7CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9pbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KHZtKTsKLSAgICBmb3JFYWNoRWxlbWVudChbJl0gKGNv
bnN0IFdhc206OkVsZW1lbnQmIGVsZW1lbnQsIHVpbnQzMl90IHRhYmxlSW5kZXgpIHsKKyAgICBm
b3JFYWNoRWxlbWVudChbJl0gKGNvbnN0IFdhc206OkVsZW1lbnQmIGVsZW1lbnQsIHVpbnQzMl90
IHRhYmxlSW5kZXgsIHVpbnQzMl90IGVsZW1lbnRJbmRleCkgewogICAgICAgICBmb3IgKHVpbnQz
Ml90IGkgPSAwOyBpIDwgZWxlbWVudC5mdW5jdGlvbkluZGljZXMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGVzc2VudGlhbGx5IG1lYW5zIHdlJ3JlIGV4cG9ydGlu
ZyBhbiBpbXBvcnQuCiAgICAgICAgICAgICAvLyBXZSBuZWVkIGEgc3RvcnkgaGVyZS4gV2UgbmVl
ZCB0byBjcmVhdGUgYSBXZWJBc3NlbWJseUZ1bmN0aW9uCkBAIC01NDEsMTQgKzUzNCwxNCBAQCBK
U1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2UgYSBXZWJBc3NlbWJseVdyYXBwZXJGdW5j
dGlvbiBjYW4gbmV2ZXIgd3JhcCBhbm90aGVyIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb25seSB0eXBlIHRoaXMgY291bGQgYmUgaXMgV2Vi
QXNzZW1ibHlGdW5jdGlvbi4KICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQod2Fz
bUZ1bmN0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdGFibGUtPnNldCh0YWJsZUluZGV4LCB3
YXNtRnVuY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICArK3RhYmxlSW5kZXg7CisgICAgICAg
ICAgICAgICAgICAgIG1faW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5zZXQoZWxlbWVudElu
ZGV4LCB3YXNtRnVuY3Rpb24pOworICAgICAgICAgICAgICAgICAgICArK2VsZW1lbnRJbmRleDsK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICAgICAgdGFibGUtPnNldCh0YWJsZUluZGV4LAorICAgICAgICAgICAgICAgIG1faW5z
dGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5zZXQoZWxlbWVudEluZGV4LAogICAgICAgICAgICAg
ICAgICAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
ZnVuY3Rpb25JbXBvcnQsIGZ1bmN0aW9uSW5kZXgsIG1faW5zdGFuY2UuZ2V0KCksIHNpZ25hdHVy
ZUluZGV4KSk7Ci0gICAgICAgICAgICAgICAgKyt0YWJsZUluZGV4OworICAgICAgICAgICAgICAg
ICsrZWxlbWVudEluZGV4OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
fQogCkBAIC01NjIsOCArNTU1LDggQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6
ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlv
biogZnVuY3Rpb24gPSBXZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUoCiAgICAgICAgICAgICAg
ICAgdm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUZ1bmN0aW9uU3Ry
dWN0dXJlKCksIHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCksIFN0cmluZygpLCBtX2luc3RhbmNl
LmdldCgpLCBlbWJlZGRlckVudHJ5cG9pbnRDYWxsZWUsIGVudHJ5cG9pbnRMb2FkTG9jYXRpb24s
IHNpZ25hdHVyZUluZGV4KTsKIAotICAgICAgICAgICAgdGFibGUtPnNldCh0YWJsZUluZGV4LCBm
dW5jdGlvbik7Ci0gICAgICAgICAgICArK3RhYmxlSW5kZXg7CisgICAgICAgICAgICBtX2luc3Rh
bmNlLT50YWJsZSh0YWJsZUluZGV4KS0+c2V0KGVsZW1lbnRJbmRleCwgZnVuY3Rpb24pOworICAg
ICAgICAgICAgKytlbGVtZW50SW5kZXg7CiAgICAgICAgIH0KICAgICB9KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vd2FzbS5qc29uCmluZGV4IDMwYmJjNzQ3MjM3ODM5MjJlZGJiZjYzNDk5MzQ5
MGY0OGI3YjdlMDIuLjgzODMxYTczMzg1YTgwZWZkNDlmNjE4M2RmYmM4ODVkYzViZDkwYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KQEAgLTY2LDEwICs2NiwxMCBAQAogICAg
ICAgICAidGVlX2xvY2FsIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAi
dmFsdWUiOiAgMzQsICJyZXR1cm4iOiBbImFueSJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFueSJd
LCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImxvY2FsX2luZGV4Iiwg
ICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIndyaXRlIGEgbG9jYWwgdmFyaWFibGUgb3IgcGFy
YW1ldGVyIGFuZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUiIH0sCiAgICAgICAgICJnZXRfZ2xvYmFs
IjogICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzNSwgInJl
dHVybiI6IFsiYW55Il0sICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAg
ICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZ2xvYmFsX2luZGV4IiwgICAidHlwZSI6ICJ2YXJ1
aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAicmVhZCBhIGdsb2JhbCB2YXJpYWJsZSIgfSwKICAgICAgICAgInNldF9nbG9i
YWwiOiAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM2LCAi
cmV0dXJuIjogW10sICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhbnkiXSwgICAgICAgICAgICAg
ICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJnbG9iYWxfaW5kZXgiLCAgICJ0eXBlIjogInZh
cnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJ3cml0ZSBhIGdsb2JhbCB2YXJpYWJsZSIgfSwKLSAgICAgICAgInRhYmxl
LmdldCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM3
LCAicmV0dXJuIjogWyJhbnlyZWYiXSwgICAicGFyYW1ldGVyIjogWyJpMzIiXSwgICAgICAgICAg
ICAgICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJnZXQgYSB0YWJsZSB2YWx1ZSIgfSwKLSAgICAgICAgInRhYmxlLnNl
dCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM4LCAi
cmV0dXJuIjogW10sICAgICAgICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiYW55cmVmIl0sICAg
ICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJzZXQgYSB0YWJsZSB2YWx1ZSIgfSwKKyAgICAgICAgInRhYmxlLmdldCI6
ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM3LCAicmV0
dXJuIjogWyJhbnlyZWYiXSwgICAicGFyYW1ldGVyIjogWyJpMzIiXSwgICAgICAgICAgICAgICAg
ICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0YWJsZV9pbmRleCIsICAgICJ0eXBlIjogInZhcnVp
bnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJnZXQgYSB0YWJsZSB2YWx1ZSIgfSwKKyAgICAgICAgInRhYmxlLnNldCI6ICAg
ICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM4LCAicmV0dXJu
IjogW10sICAgICAgICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiYW55cmVmIl0sICAgICAgICAi
aW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0YWJsZV9pbmRleCIsICAgICJ0eXBlIjogInZhcnVpbnQz
MiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJzZXQgYSB0YWJsZSB2YWx1ZSIgfSwKICAgICAgICAgImNhbGwiOiAgICAgICAgICAg
ICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE2LCAicmV0dXJuIjog
WyJjYWxsIl0sICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAiaW1t
ZWRpYXRlIjogW3sibmFtZSI6ICJmdW5jdGlvbl9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9
XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJjYWxsIGEgZnVuY3Rpb24gYnkgaXRzIGluZGV4IiB9LAotICAgICAgICAiY2FsbF9pbmRp
cmVjdCI6ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTcsICJy
ZXR1cm4iOiBbImNhbGwiXSwgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFy
dWludDMyIn0sIHsibmFtZSI6ICJyZXNlcnZlZCIsICJ0eXBlIjogInZhcnVpbnQxIn1dLCAgImRl
c2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBpbmRpcmVjdCB3aXRoIGFuIGV4cGVjdGVkIHNp
Z25hdHVyZSIgfSwKKyAgICAgICAgImNhbGxfaW5kaXJlY3QiOiAgICAgICB7ICJjYXRlZ29yeSI6
ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE3LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAicGFy
YW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6
ICJ0eXBlX2luZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAidGFibGVf
aW5kZXgiLCJ0eXBlIjogInZhcnVpbnQzMiJ9XSwiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0
aW9uIGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAogICAgICAgICAiaTMy
LmxvYWQ4X3MiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAg
NDQsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAg
ICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUi
OiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9
XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCiAgICAgICAgICJpMzIubG9h
ZDhfdSI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NSwg
InJldHVybiI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAg
ICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2
YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAi
ZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKICAgICAgICAgImkzMi5sb2FkMTZf
cyI6ICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ2LCAicmV0
dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAg
ICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVp
bnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNj
cmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFu
Z2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA4ZGVlM2YyOGU5NTQ0N2U4ZTQwNGMwY2U3
MzBmODQ5MzI0ODMyOWU0Li41NWM3YmQyMDUwZmQ1MTVhMWQ5ZGZkMzdjNDliMmMyYzA4NDJkMzBi
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQzIEBACisyMDE5LTA2LTEzICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNo
YXVkQGFwcGxlLmNvbT4KKworICAgICAgICBbV0FTTS1SZWZlcmVuY2VzXSBBZGQgc3VwcG9ydCBm
b3IgbXVsdGlwbGUgdGFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTg3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHdhc20vQnVpbGRlci5qczoKKyAgICAgICAgKiB3YXNtL2pzLWFwaS9jYWxs
LWluZGlyZWN0LmpzOgorICAgICAgICAoY29uc3Qub25lVGFibGUpOgorICAgICAgICAoY29uc3Qu
bXVsdGlUYWJsZSk6CisgICAgICAgIChtdWx0aVRhYmxlKToKKyAgICAgICAgKG11bHRpVGFibGUu
UG9seXBoaWMySW1wb3J0KToKKyAgICAgICAgKG11bHRpVGFibGUuVmlydHVhbEltcG9ydCk6Cisg
ICAgICAgIChjb25zdC53YXNtTW9kdWxlV2hpY2hJbXBvcnRKUyk6IERlbGV0ZWQuCisgICAgICAg
IChjb25zdC5tYWtlVGFibGUpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAg
ICAgKFBvbHlwaGljMkltcG9ydCk6IERlbGV0ZWQuCisgICAgICAgIChWaXJ0dWFsSW1wb3J0KTog
RGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2pzLWFwaS90YWJsZS5qczoKKyAgICAgICAgKG5ldy5X
ZWJBc3NlbWJseS5Nb2R1bGUpOgorICAgICAgICAoYXNzZXJ0LnRocm93cyk6CisgICAgICAgIChh
c3NlcnRCYWRUYWJsZUltcG9ydCk6CisgICAgICAgIChhc3NlcnQudHJ1dGh5KToKKyAgICAgICAg
KGFzc2VydC50aHJvd3MubmV3LldlYkFzc2VtYmx5Lk1vZHVsZS5idWlsZGVyLldlYkFzc2VtYmx5
KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMvYW55cmVmX3RhYmxlLmpzOgor
ICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy9hbnlyZWZfdGFibGVfaW1wb3J0LmpzOgorICAgICAg
ICAobWFrZUltcG9ydCk6CisgICAgICAgIChzdHJpbmdfYXBwZWFyZWRfaGVyZS5mdWxsR0MuYXNz
ZXJ0LmVxLjEuZXhwb3J0cy5nZXRfdGJsLm1ha2VJbXBvcnQpOgorICAgICAgICAoc3RyaW5nX2Fw
cGVhcmVkX2hlcmUuZnVsbEdDLmFzc2VydC5lcS4xLmV4cG9ydHMuZ2V0X3RibCk6CisgICAgICAg
ICogd2FzbS9yZWZlcmVuY2VzL211bHRpdGFibGUuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0
LnRocm93cy4xLmV4cG9ydHMuc2V0X3RibDApOgorICAgICAgICAoYXNzZXJ0LnRocm93cyk6Cisg
ICAgICAgIChhc3NlcnQuZXEpOgorICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy92YWxpZGF0aW9u
LmpzOgorICAgICAgICAoYXNzZXJ0LnRocm93cy5uZXcuV2ViQXNzZW1ibHkuTW9kdWxlLmJpbik6
CisgICAgICAgIChhc3NlcnQudGhyb3dzKToKKyAgICAgICAgKiB3YXNtL3NwZWMtdGVzdHMvaW1w
b3J0cy53YXN0LmpzOgorICAgICAgICAqIHdhc20vd2FzbS5qc29uOgorCiAyMDE5LTA2LTExICBH
dWlsbGF1bWUgRW1vbnQgIDxndWlqZW1vbnRAaWdhbGlhLmNvbT4KIAogICAgICAgICBTa2lwIHN0
cmVzcy9mdGwtZ2V0dHlwZWRhcnJheW9mZnNldC13YXN0ZWZ1bC5qcyBvbiBBcm0vTGludXgKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzIGIvSlNUZXN0cy93YXNtL0J1aWxkZXIu
anMKaW5kZXggN2U3YzFiN2RjMjIzYzg4M2UxMGU2ZjM3M2JjZGQzYzZjMjlkNTExYi4uY2JjNTRk
NDg3N2FmMTdhNmQ2ODk0MWExNjM5NjQxNDhmMjNhMDJhOCAxMDA2NDQKLS0tIGEvSlNUZXN0cy93
YXNtL0J1aWxkZXIuanMKKysrIGIvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMKQEAgLTMwNiw2ICsz
MDYsNyBAQCBjb25zdCBfY2hlY2tJbW1zID0gKG9wLCBpbW1zLCBleHBlY3RlZEltbXMsIHJldCkg
PT4gewogICAgICAgICBjYXNlICJ0YXJnZXRfY291bnQiOiBicmVhazsgLy8gaW1wcm92ZSBjaGVj
a2luZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCiAgICAg
ICAgIGNhc2UgInRhcmdldF90YWJsZSI6IGJyZWFrOyAvLyBpbXByb3ZlIGNoZWNraW5nIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKICAgICAgICAgY2FzZSAi
cmVzZXJ2ZWQiOiBicmVhazsgLy8gaW1wcm92ZSBjaGVja2luZyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAgIGNhc2UgInRhYmxlX2luZGV4Ijog
YnJlYWs7IC8vIGltcHJvdmUgY2hlY2tpbmcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzQyMQogICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYEltcGxl
bWVudGF0aW9uIHByb2JsZW06IHVuaGFuZGxlZCBpbW1lZGlhdGUgIiR7ZXhwZWN0Lm5hbWV9IiBv
biAiJHtvcH0iYCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20v
anMtYXBpL2NhbGwtaW5kaXJlY3QuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL2NhbGwtaW5kaXJl
Y3QuanMKaW5kZXggMDFjZDQyZjliNzlhOTIxYjFiYmFhNWFiNTc2ZmMwZDkxMDQzODMyOC4uMmZh
ZmNjMTkyYjEyMDUzOWM3YWE0NTUxZDQ0M2RhYWU3YmQ4MTk3MiAxMDA2NDQKLS0tIGEvSlNUZXN0
cy93YXNtL2pzLWFwaS9jYWxsLWluZGlyZWN0LmpzCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkv
Y2FsbC1pbmRpcmVjdC5qcwpAQCAtMSw3ICsxLDcgQEAKIGltcG9ydCAqIGFzIGFzc2VydCBmcm9t
ICcuLi9hc3NlcnQuanMnOwogaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CiAK
LWNvbnN0IHdhc21Nb2R1bGVXaGljaEltcG9ydEpTID0gKCkgPT4geworY29uc3Qgb25lVGFibGUg
PSAoKSA9PiB7CiAgICAgY29uc3QgYnVpbGRlciA9IChuZXcgQnVpbGRlcigpKQogICAgICAgICAu
VHlwZSgpLkVuZCgpCiAgICAgICAgIC5JbXBvcnQoKQpAQCAtMzEsNiArMzEsMzkgQEAgY29uc3Qg
d2FzbU1vZHVsZVdoaWNoSW1wb3J0SlMgPSAoKSA9PiB7CiAgICAgcmV0dXJuIG1vZHVsZTsKIH07
CiAKK2NvbnN0IG11bHRpVGFibGUgPSAoKSA9PiB7CisgICAgY29uc3QgYnVpbGRlciA9IChuZXcg
QnVpbGRlcigpKQorICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgIC5JbXBvcnQoKQorICAg
ICAgICAgICAgLkZ1bmN0aW9uKCJpbXAiLCAiZnVuYyIsIHsgcGFyYW1zOiBbImkzMiJdIH0pCisg
ICAgICAgICAgICAuVGFibGUoImltcCIsICJ0YWJsZTAiLCB7IGluaXRpYWw6IDAsIG1heGltdW06
IDAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgICAuVGFibGUoImltcCIsICJ0YWJs
ZSIsIHsgaW5pdGlhbDogMSwgbWF4aW11bTogMSwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAg
ICAgLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5FeHBvcnQoKQor
ICAgICAgICAgICAgLkZ1bmN0aW9uKCJjaGFuZ2VDb3VudGVyIikKKyAgICAgICAgICAgIC5GdW5j
dGlvbigiY2FsbEZ1bmMiKQorICAgICAgICAuRW5kKCkKKyAgICAgICAgLkNvZGUoKQorICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJjaGFuZ2VDb3VudGVyIiwgeyBwYXJhbXM6IFsiaTMyIiwgImkzMiJd
IH0pCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDQyKQorICAgICAgICAgICAgICAgIC5HZXRM
b2NhbCgwKQorICAgICAgICAgICAgICAgIC5JMzJBZGQoKQorICAgICAgICAgICAgICAgIC5HZXRM
b2NhbCgxKQorICAgICAgICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMCwgMSkgLy8gQ2FsbHMgdGFi
bGVbMF0ocGFyYW1bMF0gKyA0MikuCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAgIC5G
dW5jdGlvbigiY2FsbEZ1bmMiLCB7IHBhcmFtczogWyJpMzIiXSB9KQorICAgICAgICAgICAgICAg
IC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAgIC5DYWxsKDApIC8vIENhbGxzIGZ1bmMocGFy
YW1bMF0gKyA0MikKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAuRW5kKCk7CisgICAgY29u
c3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpOworICAgIGNvbnN0IG1vZHVsZSA9
IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKKyAgICByZXR1cm4gbW9kdWxlOworfTsKKwor
Zm9yIChjb25zdCB3YXNtTW9kdWxlV2hpY2hJbXBvcnRKUyBvZiBbb25lVGFibGUsIG11bHRpVGFi
bGVdKSB7CisKIGNvbnN0IG1ha2VUYWJsZSA9ICgpID0+IHsKICAgICByZXR1cm4gbmV3IFdlYkFz
c2VtYmx5LlRhYmxlKHtpbml0aWFsOiAxLCBtYXhpbXVtOiAxLCBlbGVtZW50OiAiYW55ZnVuYyJ9
KTsKIH07CkBAIC00MCw3ICs3Myw3IEBAIGNvbnN0IG1ha2VUYWJsZSA9ICgpID0+IHsKICAgICBj
b25zdCBjb3VudGVyU2V0dGVyID0gdiA9PiBjb3VudGVyID0gdjsKICAgICBjb25zdCB0YWJsZSA9
IG1ha2VUYWJsZSgpOwogICAgIGNvbnN0IG1vZHVsZSA9IHdhc21Nb2R1bGVXaGljaEltcG9ydEpT
KCk7Ci0gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxl
LCB7IGltcDogeyBmdW5jOiBjb3VudGVyU2V0dGVyLCB0YWJsZX0gfSk7CisgICAgY29uc3QgaW5z
dGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDogeyBmdW5jOiBj
b3VudGVyU2V0dGVyLCB0YWJsZSwgdGFibGUwOiBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRp
YWw6IDAsIG1heGltdW06IDAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pIH0gfSk7CiAgICAgdGFibGUu
c2V0KDAsIGluc3RhbmNlLmV4cG9ydHMuY2FsbEZ1bmMpOwogICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgNDA5NjsgKytpKSB7CiAgICAgICAgIC8vIEludm9rZSB0aGlzIGEgYnVuY2ggb2YgdGltZXMg
dG8gbWFrZSBzdXJlIHRoZSBJQyBpbiB0aGUgd2FzbSAtPiBKUyBzdHViIHdvcmtzIGNvcnJlY3Rs
eS4KQEAgLTU3LDExICs5MCwxMSBAQCBjb25zdCBtYWtlVGFibGUgPSAoKSA9PiB7CiAgICAgY29u
c3QgbW9kdWxlID0gd2FzbU1vZHVsZVdoaWNoSW1wb3J0SlMoKTsKIAogICAgIGNvbnN0IHRhYmxl
QSA9IG1ha2VUYWJsZSgpOwotICAgIGNvbnN0IGluc3RhbmNlQSA9IG5ldyBXZWJBc3NlbWJseS5J
bnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJBU2V0dGVyLCB0YWJsZTogdGFi
bGVBfSB9KTsKKyAgICBjb25zdCBpbnN0YW5jZUEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2Uo
bW9kdWxlLCB7IGltcDogeyBmdW5jOiBjb3VudGVyQVNldHRlciwgdGFibGU6IHRhYmxlQSwgdGFi
bGUwOiBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6IDAsIG1heGltdW06IDAsIGVsZW1l
bnQ6ICJhbnlmdW5jIn0pIH0gfSk7CiAgICAgdGFibGVBLnNldCgwLCBpbnN0YW5jZUEuZXhwb3J0
cy5jYWxsRnVuYyk7CiAKICAgICBjb25zdCB0YWJsZUIgPSBtYWtlVGFibGUoKTsKLSAgICBjb25z
dCBpbnN0YW5jZUIgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDogeyBm
dW5jOiBjb3VudGVyQlNldHRlciwgdGFibGU6IHRhYmxlQn0gfSk7CisgICAgY29uc3QgaW5zdGFu
Y2VCID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291
bnRlckJTZXR0ZXIsIHRhYmxlOiB0YWJsZUIsIHRhYmxlMDogbmV3IFdlYkFzc2VtYmx5LlRhYmxl
KHtpbml0aWFsOiAwLCBtYXhpbXVtOiAwLCBlbGVtZW50OiAiYW55ZnVuYyJ9KSB9IH0pOwogICAg
IHRhYmxlQi5zZXQoMCwgaW5zdGFuY2VCLmV4cG9ydHMuY2FsbEZ1bmMpOwogICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMjA0ODsgKytpKSB7CiAgICAgICAgIGluc3RhbmNlQS5leHBvcnRzLmNoYW5n
ZUNvdW50ZXIoaSwgMCk7CkBAIC05Myw3ICsxMjYsNyBAQCBjb25zdCBtYWtlVGFibGUgPSAoKSA9
PiB7CiAgICAgbGV0IGluc3RhbmNlcyA9IFtdOwogICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVt
OyArK2kpIHsKICAgICAgICAgbGV0IHRhYmxlID0gbWFrZVRhYmxlKCk7Ci0gICAgICAgIGluc3Rh
bmNlc1tpXSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6
IGNvdW50ZXJTZXR0ZXJzW2ldLCB0YWJsZX0gfSk7CisgICAgICAgIGluc3RhbmNlc1tpXSA9IG5l
dyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJTZXR0
ZXJzW2ldLCB0YWJsZSwgdGFibGUwOiBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6IDAs
IG1heGltdW06IDAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pIH0gfSk7CiAgICAgICAgIHRhYmxlLnNl
dCgwLCBpbnN0YW5jZXNbaV0uZXhwb3J0cy5jYWxsRnVuYyk7CiAgICAgfQogICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMjA0ODsgKytpKSB7CkBAIC0xMDQsMyArMTM3LDUgQEAgY29uc3QgbWFrZVRh
YmxlID0gKCkgPT4gewogICAgICAgICB9CiAgICAgfQogfSkoKTsKKworfQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy93YXNtL2pzLWFwaS90YWJsZS5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGFibGUu
anMKaW5kZXggYmJjYTg5ZWMzNGY3MTkxMjA4NGY2MzA5YWFjMmQ2NDU1MGE0M2JkMS4uMWI4NDQ0
MzFjZTY1ZjkxYzQzNzUzMjVkNWNhZTUzZGM4YmMyNDNjNyAxMDA2NDQKLS0tIGEvSlNUZXN0cy93
YXNtL2pzLWFwaS90YWJsZS5qcworKysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3RhYmxlLmpzCkBA
IC0xMyw3ICsxMyw3IEBAIGltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOwog
ICAgICAgICAuRW5kKCkKICAgICAgICAgLkNvZGUoKQogICAgICAgICAuRW5kKCk7Ci0gICAgYXNz
ZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1i
bHkoKS5nZXQoKSksIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVs
ZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgMzQ6IENhbm5vdCBoYXZlIG1vcmUgdGhhbiBvbmUgVGFi
bGUgZm9yIG5vdyIpOworICAgIG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3Nl
bWJseSgpLmdldCgpKQogfQogCiB7CkBAIC0zOCw3ICszOCw3IEBAIGltcG9ydCAqIGFzIGFzc2Vy
dCBmcm9tICcuLi9hc3NlcnQuanMnOwogICAgICAgICAuRW5kKCkKICAgICAgICAgLkNvZGUoKQog
ICAgICAgICAuRW5kKCk7Ci0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHku
TW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSksIFdlYkFzc2VtYmx5LkNvbXBpbGVF
cnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgMTc6IFRhYmxl
IGNvdW50IG9mIDIgaXMgaW52YWxpZCwgYXQgbW9zdCAxIGlzIGFsbG93ZWQgZm9yIG5vdyAoZXZh
bHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0
KCkpJykiKTsKKyAgICBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHko
KS5nZXQoKSkKIH0KIAogewpAQCAtNzMsNyArNzMsMjggQEAgaW1wb3J0ICogYXMgYXNzZXJ0IGZy
b20gJy4uL2Fzc2VydC5qcyc7CiAgICAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgwLCAxKQog
ICAgICAgICAgICAgLkVuZCgpCiAgICAgICAgIC5FbmQoKTsKLSAgICBhc3NlcnQudGhyb3dzKCgp
ID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpKSwg
V2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFy
c2UgYXQgYnl0ZSA2OiBjYWxsX2luZGlyZWN0J3MgJ3Jlc2VydmVkJyB2YXJ1aW50MSBtdXN0IGJl
IDB4MCwgaW4gZnVuY3Rpb24gYXQgaW5kZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5
Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCkpJykiKTsKKyAgICBhc3NlcnQudGhy
b3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3NlbWJseSgpLmdl
dCgpKSwgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNu
J3QgcGFyc2UgYXQgYnl0ZSA2OiBjYWxsX2luZGlyZWN0J3MgdGFibGUgaW5kZXggMSBpbnZhbGlk
LCBsaW1pdCBpcyAxLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2Vi
QXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSknKSIpOworfQorCit7
CisgICAgY29uc3QgYnVpbGRlciA9IG5ldyBCdWlsZGVyKCkKKyAgICAgICAgLlR5cGUoKS5FbmQo
KQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAuVGFibGUoKQorICAgICAgICAg
ICAgLlRhYmxlKHtpbml0aWFsOjIwLCBlbGVtZW50OiJhbnlmdW5jIn0pCisgICAgICAgICAgICAu
VGFibGUoe2luaXRpYWw6MjAsIGVsZW1lbnQ6ImFueWZ1bmMifSkKKyAgICAgICAgLkVuZCgpCisg
ICAgICAgIC5FeHBvcnQoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJmb28iKQorICAgICAgICAu
RW5kKCkKKyAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJmb28iLCB7cGFy
YW1zOiBbImkzMiJdfSkKKyAgICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAg
ICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgICAuQ2FsbEluZGlyZWN0KDAsIDEpCisg
ICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgLkVuZCgpOworICAgIG5ldyBXZWJBc3NlbWJseS5N
b2R1bGUoYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpKQogfQogCiB7CkBAIC0xODYsNyArMjA3
LDcgQEAgZnVuY3Rpb24gYXNzZXJ0QmFkVGFibGVJbXBvcnQodGFibGVEZXNjcmlwdGlvbiwgbWVz
c2FnZSkgewogICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQogICAgICAgICAuQ29kZSgpCiAgICAg
ICAgIC5FbmQoKTsKLSAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1
bGUoYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpKSwgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9y
LCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAzOTogQ2Fubm90IGhh
dmUgbW9yZSB0aGFuIG9uZSBUYWJsZSBmb3Igbm93Iik7CisgICAgbmV3IFdlYkFzc2VtYmx5Lk1v
ZHVsZShidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCkpCiB9CiAKIApAQCAtMzIwLDMgKzM0MSwy
NiBAQCBhc3NlcnQudGhyb3dzKCgpID0+IFdlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5ncm93
KHVuZGVmaW5lZCksIFR5cGVFcnJvciwgYGV4cAogICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBv
cnRzLnRhYmxlLmxlbmd0aCwgMjApOwogICAgIGFzc2VydC50cnV0aHkoaW5zdGFuY2UuZXhwb3J0
cy50YWJsZSBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5LlRhYmxlKTsKIH0KKworeworICAgIGNvbnN0
IGJ1aWxkZXIgPSBuZXcgQnVpbGRlcigpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAg
LkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgIC5UYWJsZSh7
aW5pdGlhbDogMCwgbWF4aW11bTogMSwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAgICAg
IC5UYWJsZSh7aW5pdGlhbDogMjAsIG1heGltdW06IDMwLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQor
ICAgICAgICAuRW5kKCkKKyAgICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgICAuVGFibGUoInRh
YmxlMCIsIDApCisgICAgICAgICAgICAuVGFibGUoInRhYmxlIiwgMSkKKyAgICAgICAgICAgIC5U
YWJsZSgidGFibGUyIiwgMSkKKyAgICAgICAgLkVuZCgpCisgICAgICAgIC5Db2RlKCkuRW5kKCk7
CisKKyAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2Vi
QXNzZW1ibHkoKS5nZXQoKSk7CisgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHku
SW5zdGFuY2UobW9kdWxlKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy50YWJsZSwg
aW5zdGFuY2UuZXhwb3J0cy50YWJsZTIpOworICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRz
LnRhYmxlLmxlbmd0aCwgMjApOworICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLnRhYmxl
MC5sZW5ndGgsIDApOworICAgIGFzc2VydC50cnV0aHkoaW5zdGFuY2UuZXhwb3J0cy50YWJsZSBp
bnN0YW5jZW9mIFdlYkFzc2VtYmx5LlRhYmxlKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2Fz
bS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZS5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2Fu
eXJlZl90YWJsZS5qcwppbmRleCA4YTBjMjkzZTU1NjkzYWEyMDFiYTNiYmZlMWQwY2U2NWQ4MmE1
OTFkLi5jNzUxYTc2MTE2Yjg3ZDcyNjJlZDljNDhiM2YyMGFjN2JhNWQ5MTI4IDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9hbnlyZWZfdGFibGUuanMKKysrIGIvSlNUZXN0cy93
YXNtL3JlZmVyZW5jZXMvYW55cmVmX3RhYmxlLmpzCkBAIC0xOCwxMiArMTgsMTIgQEAgY29uc3Qg
JDEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3
IEJ1aWxkZXIoKSkKICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsIiwgeyBwYXJhbXM6IFsiYW55
cmVmIl0sIHJldDogInZvaWQiIH0pCiAgICAgICAgICAgLkkzMkNvbnN0KDApCiAgICAgICAgICAg
LkdldExvY2FsKDApCi0gICAgICAgICAgLlRhYmxlU2V0KCkKKyAgICAgICAgICAuVGFibGVTZXQo
MCkKICAgICAgICAgLkVuZCgpCiAKICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsIiwgeyBwYXJh
bXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCiAgICAgICAgICAgLkkzMkNvbnN0KDApCi0gICAgICAg
ICAgLlRhYmxlR2V0KCkKKyAgICAgICAgICAuVGFibGVHZXQoMCkKICAgICAgICAgLkVuZCgpCiAK
ICAgICAgICAgLkZ1bmN0aW9uKCJ0YmxfaXNfbnVsbCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMy
IiB9KQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvYW55cmVmX3RhYmxlX2lt
cG9ydC5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZV9pbXBvcnQuanMK
aW5kZXggODhjYWI3YzIzZmU3YjQwYWQ2OWVjMjM2ZDRiYjY5ZDIzNTE4YjYzZS4uMTc0MmJiMjA4
YzBhODI0MjQyNzBlZDViOTBmZjBhNmI0MDg3NTMwMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNt
L3JlZmVyZW5jZXMvYW55cmVmX3RhYmxlX2ltcG9ydC5qcworKysgYi9KU1Rlc3RzL3dhc20vcmVm
ZXJlbmNlcy9hbnlyZWZfdGFibGVfaW1wb3J0LmpzCkBAIC0yMiwxMiArMjIsMTIgQEAgaW1wb3J0
IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CiAgICAgICAgICAgICAuRnVuY3Rpb24oInNl
dF90YmwiLCB7IHBhcmFtczogWyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkKICAgICAgICAgICAg
ICAgLkkzMkNvbnN0KDApCiAgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQotICAgICAgICAgICAg
ICAuVGFibGVTZXQoKQorICAgICAgICAgICAgICAuVGFibGVTZXQoMCkKICAgICAgICAgICAgIC5F
bmQoKQogCiAgICAgICAgICAgICAuRnVuY3Rpb24oImdldF90YmwiLCB7IHBhcmFtczogW10sIHJl
dDogImFueXJlZiIgfSkKICAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCi0gICAgICAgICAgICAg
IC5UYWJsZUdldCgpCisgICAgICAgICAgICAgIC5UYWJsZUdldCgwKQogICAgICAgICAgICAgLkVu
ZCgpCiAKICAgICAgICAgICAgIC5GdW5jdGlvbigidGJsX2lzX251bGwiLCB7IHBhcmFtczogW10s
IHJldDogImkzMiIgfSkKQEAgLTg4LDEyICs4OCwxMiBAQCBpbXBvcnQgQnVpbGRlciBmcm9tICcu
Li9CdWlsZGVyLmpzJzsKICAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibCIsIHsgcGFyYW1z
OiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQogICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkK
ICAgICAgICAgICAgICAgLkdldExvY2FsKDApCi0gICAgICAgICAgICAgIC5UYWJsZVNldCgpCisg
ICAgICAgICAgICAgIC5UYWJsZVNldCgwKQogICAgICAgICAgICAgLkVuZCgpCiAKICAgICAgICAg
ICAgIC5GdW5jdGlvbigiZ2V0X3RibCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQog
ICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKLSAgICAgICAgICAgICAgLlRhYmxlR2V0KCkKKyAg
ICAgICAgICAgICAgLlRhYmxlR2V0KDApCiAgICAgICAgICAgICAuRW5kKCkKIAogICAgICAgICAg
ICAgLkZ1bmN0aW9uKCJ0YmxfaXNfbnVsbCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KQpA
QCAtMTI3LDEyICsxMjcsMTIgQEAgaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7
CiAgICAgICAgICAgICAuRnVuY3Rpb24oInNldF90YmwiLCB7IHBhcmFtczogWyJhbnlyZWYiXSwg
cmV0OiAidm9pZCIgfSkKICAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCiAgICAgICAgICAgICAg
IC5HZXRMb2NhbCgwKQotICAgICAgICAgICAgICAuVGFibGVTZXQoKQorICAgICAgICAgICAgICAu
VGFibGVTZXQoMCkKICAgICAgICAgICAgIC5FbmQoKQogCiAgICAgICAgICAgICAuRnVuY3Rpb24o
ImdldF90YmwiLCB7IHBhcmFtczogW10sIHJldDogImFueXJlZiIgfSkKICAgICAgICAgICAgICAg
LkkzMkNvbnN0KDApCi0gICAgICAgICAgICAgIC5UYWJsZUdldCgpCisgICAgICAgICAgICAgIC5U
YWJsZUdldCgwKQogICAgICAgICAgICAgLkVuZCgpCiAKICAgICAgICAgICAgIC5GdW5jdGlvbigi
dGJsX2lzX251bGwiLCB7IHBhcmFtczogW10sIHJldDogImkzMiIgfSkKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvd2FzbS9yZWZlcmVuY2VzL211bHRpdGFibGUuanMgYi9KU1Rlc3RzL3dhc20vcmVmZXJl
bmNlcy9tdWx0aXRhYmxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhMzFmZDZiNWM4ZTMzNzE3ODc1NDAwZDRi
MDFlYTg3ZDUyMTZhOGMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNl
cy9tdWx0aXRhYmxlLmpzCkBAIC0wLDAgKzEsMjg3IEBACitpbXBvcnQgKiBhcyBhc3NlcnQgZnJv
bSAnLi4vYXNzZXJ0LmpzJzsKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwor
Cit7CisgICAgY29uc3QgJDEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2Vt
Ymx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAg
ICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAg
ICAgIC5UYWJsZSh7aW5pdGlhbDogMCwgbWF4aW11bTogMCwgZWxlbWVudDogImFueXJlZiJ9KQor
ICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMjAsIG1heGltdW06IDMwLCBlbGVtZW50
OiAiYW55cmVmIn0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkV4cG9ydCgpCisgICAg
ICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigi
Z2V0X3RibCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibDAiKQorICAgICAgICAg
ICAgICAuRnVuY3Rpb24oInNldF90YmwwIikKKyAgICAgICAgICAgICAgLlRhYmxlKCJ0YmwiLCAx
KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5j
dGlvbigic2V0X3RibCIsIHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQorICAg
ICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAg
ICAgICAgICAgIC5UYWJsZVNldCgxKQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAg
IC5GdW5jdGlvbigiZ2V0X3RibCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQorICAg
ICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLlRhYmxlR2V0KDEpCisgICAg
ICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsMCIsIHsgcGFy
YW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAg
ICAgICAgICAgICAgLlRhYmxlR2V0KDApCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAg
ICAgLkZ1bmN0aW9uKCJzZXRfdGJsMCIsIHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lk
IiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLkdldExvY2Fs
KDApCisgICAgICAgICAgICAgIC5UYWJsZVNldCgwKQorICAgICAgICAgICAgLkVuZCgpCisgICAg
ICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKTsKKworICAgIGZ1bGxHQygpCisKKyAg
ICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfdGJsKCksIG51bGwpCisKKyAgICAkMS5leHBvcnRz
LnNldF90YmwoImhpIikKKyAgICBmdWxsR0MoKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdl
dF90YmwoKSwgImhpIikKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy50YmwuZ2V0KDApLCAiaGki
KQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLnRibC5nZXQoMSksIG51bGwpCisKKyAgICBhc3Nl
cnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuZ2V0X3RibDAoKSwgRXJyb3IsICJPdXQgb2YgYm91
bmRzIHRhYmxlIGFjY2VzcyAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIik7CisgICAgYXNz
ZXJ0LnRocm93cygoKSA9PiAkMS5leHBvcnRzLnNldF90YmwwKG51bGwpLCBFcnJvciwgIk91dCBv
ZiBib3VuZHMgdGFibGUgYWNjZXNzIChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKTsKK30K
KworeworICAgIGNvbnN0IHRibCA9IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDowLCBl
bGVtZW50OiJhbnlyZWYifSk7CisgICAgY29uc3QgJDEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFu
Y2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlw
ZSgpLkVuZCgpCisgICAgICAgICAgLkltcG9ydCgpCisgICAgICAgICAgICAgICAgLlRhYmxlKCJp
bXAiLCAidGJsIiwge2luaXRpYWw6IDAsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAu
RW5kKCkKKyAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAgIC5UYWJsZSgpCisg
ICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAyMCwgbWF4aW11bTogMzAsIGVsZW1lbnQ6
ICJhbnlyZWYifSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRXhwb3J0KCkKKyAgICAg
ICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJn
ZXRfdGJsIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsMCIpCisgICAgICAgICAg
ICAgIC5GdW5jdGlvbigic2V0X3RibDAiKQorICAgICAgICAgICAgICAuVGFibGUoInRibCIsIDEp
CisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0
aW9uKCJzZXRfdGJsIiwgeyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCisgICAg
ICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAg
ICAgICAgICAgLlRhYmxlU2V0KDEpCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAg
LkZ1bmN0aW9uKCJnZXRfdGJsIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCisgICAg
ICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuVGFibGVHZXQoMSkKKyAgICAg
ICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oImdldF90YmwwIiwgeyBwYXJh
bXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAg
ICAgICAgICAgICAuVGFibGVHZXQoMCkKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAg
ICAuRnVuY3Rpb24oInNldF90YmwwIiwgeyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQi
IH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuR2V0TG9jYWwo
MCkKKyAgICAgICAgICAgICAgLlRhYmxlU2V0KDApCisgICAgICAgICAgICAuRW5kKCkKKyAgICAg
ICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSksIHsgaW1wOiB7IHRibCB9fSk7CisKKyAg
ICBmdWxsR0MoKQorCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X3RibCgpLCBudWxsKQor
CisgICAgJDEuZXhwb3J0cy5zZXRfdGJsKCJoaSIpCisgICAgZnVsbEdDKCkKKyAgICBhc3NlcnQu
ZXEoJDEuZXhwb3J0cy5nZXRfdGJsKCksICJoaSIpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMu
dGJsLmdldCgwKSwgImhpIikKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy50YmwuZ2V0KDEpLCBu
dWxsKQorCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBvcnRzLmdldF90YmwwKCksIEVy
cm9yLCAiT3V0IG9mIGJvdW5kcyB0YWJsZSBhY2Nlc3MgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJn
cyknKSIpOworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gJDEuZXhwb3J0cy5zZXRfdGJsMChudWxs
KSwgRXJyb3IsICJPdXQgb2YgYm91bmRzIHRhYmxlIGFjY2VzcyAoZXZhbHVhdGluZyAnZnVuYygu
Li5hcmdzKScpIik7Cit9CisKK3sKKyAgICBjb25zdCB0YmwgPSBuZXcgV2ViQXNzZW1ibHkuVGFi
bGUoe2luaXRpYWw6MSwgZWxlbWVudDoiYW55cmVmIn0pOworICAgIGNvbnN0ICQxID0gbmV3IFdl
YkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkp
CisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgIC5JbXBvcnQoKQorICAgICAgICAg
ICAgICAgIC5UYWJsZSgiaW1wIiwgInRibCIsIHtpbml0aWFsOiAxLCBlbGVtZW50OiAiYW55cmVm
In0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAg
ICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMjAsIG1heGlt
dW06IDMwLCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAg
LkV4cG9ydCgpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibCIpCisgICAgICAgICAg
ICAgIC5GdW5jdGlvbigiZ2V0X3RibCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3Ri
bDAiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oInNldF90YmwwIikKKyAgICAgICAgICAgICAg
LlRhYmxlKCJ0YmwiLCAxKQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAg
ICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibCIsIHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6
ICJ2b2lkIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLkdl
dExvY2FsKDApCisgICAgICAgICAgICAgIC5UYWJsZVNldCgxKQorICAgICAgICAgICAgLkVuZCgp
CisKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAi
YW55cmVmIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLlRh
YmxlR2V0KDEpCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJn
ZXRfdGJsMCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQorICAgICAgICAgICAgICAu
STMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLlRhYmxlR2V0KDApCisgICAgICAgICAgICAuRW5k
KCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsMCIsIHsgcGFyYW1zOiBbImFueXJl
ZiJdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAg
ICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5UYWJsZVNldCgwKQorICAgICAgICAg
ICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpLCB7IGltcDog
eyB0YmwgfX0pOworCisgICAgZnVsbEdDKCkKKworICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdl
dF90YmwoKSwgbnVsbCkKKworICAgICQxLmV4cG9ydHMuc2V0X3RibCgiaGkiKQorICAgIGZ1bGxH
QygpCisgICAgJDEuZXhwb3J0cy5zZXRfdGJsMChudWxsKQorICAgIGFzc2VydC5lcSgkMS5leHBv
cnRzLmdldF90YmwoKSwgImhpIikKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfdGJsMCgp
LCBudWxsKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLnRibC5nZXQoMCksICJoaSIpCisgICAg
YXNzZXJ0LmVxKCQxLmV4cG9ydHMudGJsLmdldCgxKSwgbnVsbCkKKyAgICBhc3NlcnQuZXEodGJs
LmdldCgwKSwgbnVsbCkKK30KKworeworICAgIGNvbnN0ICQxID0gbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAg
LlR5cGUoKS5FbmQoKQorICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgLlRh
YmxlKCkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDMsIG1heGltdW06IDMwLCBl
bGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMiwg
bWF4aW11bTogMzAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgLkVuZCgpCisgICAg
ICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiY2FsbF90YmwwIikKKyAg
ICAgICAgICAgICAgLkZ1bmN0aW9uKCJjYWxsX3RibDEiKQorICAgICAgICAgICAgICAuRnVuY3Rp
b24oInJldDQyIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQxMzM3IikKKyAgICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJyZXQyNTYiKQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5F
bGVtZW50KCkKKyAgICAgICAgICAgICAgICAuRWxlbWVudCh7dGFibGVJbmRleDogMSwgb2Zmc2V0
OiAwLCBmdW5jdGlvbkluZGljZXM6IFsyXX0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAg
LkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJjYWxsX3RibDAiLCB7IHBhcmFtczogWyJp
MzIiXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAg
ICAgICAgLkNhbGxJbmRpcmVjdCgxLDApCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAg
ICAgLkZ1bmN0aW9uKCJjYWxsX3RibDEiLCB7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9
KQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLkNhbGxJbmRpcmVj
dCgxLDEpCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQ0
MiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3Qo
NDIpCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQxMzM3
IiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgx
MzM3KQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0MjU2
IiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgy
NTYpCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5n
ZXQoKSkpOworCisgICAgZnVsbEdDKCkKKworICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmNhbGxf
dGJsMSgwKSwgNDIpCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBvcnRzLmNhbGxfdGJs
MCgwKSwgRXJyb3IsICJjYWxsX2luZGlyZWN0IHRvIGEgbnVsbCB0YWJsZSBlbnRyeSAoZXZhbHVh
dGluZyAnZnVuYyguLi5hcmdzKScpIikKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9y
dHMuY2FsbF90YmwxKDEpLCBFcnJvciwgImNhbGxfaW5kaXJlY3QgdG8gYSBudWxsIHRhYmxlIGVu
dHJ5IChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorfQorCit7CisgICAgY29uc3QgJDEg
PSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1
aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCku
RW5kKCkKKyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlh
bDogMywgbWF4aW11bTogMzAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgICAgICAg
LlRhYmxlKHtpbml0aWFsOiAyLCBtYXhpbXVtOiAzMCwgZWxlbWVudDogImFueWZ1bmMifSkKKyAg
ICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAgICAgLkZ1bmN0
aW9uKCJjYWxsX3RibDAiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oImNhbGxfdGJsMSIpCisg
ICAgICAgICAgICAgIC5GdW5jdGlvbigicmV0NDIiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24o
InJldDEzMzciKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oInJldDI1NiIpCisgICAgICAgICAg
LkVuZCgpCisgICAgICAgICAgLkVsZW1lbnQoKQorICAgICAgICAgICAgICAgIC5FbGVtZW50KHt0
YWJsZUluZGV4OiAxLCBvZmZzZXQ6IDAsIGZ1bmN0aW9uSW5kaWNlczogWzJdfSkKKyAgICAgICAg
ICAgICAgICAuRWxlbWVudCh7dGFibGVJbmRleDogMCwgb2Zmc2V0OiAwLCBmdW5jdGlvbkluZGlj
ZXM6IFszXX0pCisgICAgICAgICAgICAgICAgLkVsZW1lbnQoe3RhYmxlSW5kZXg6IDEsIG9mZnNl
dDogMSwgZnVuY3Rpb25JbmRpY2VzOiBbNF19KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAg
IC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiY2FsbF90YmwwIiwgeyBwYXJhbXM6IFsi
aTMyIl0sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAg
ICAgICAgIC5DYWxsSW5kaXJlY3QoMSwwKQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAg
ICAgIC5GdW5jdGlvbigiY2FsbF90YmwxIiwgeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIg
fSkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5DYWxsSW5kaXJl
Y3QoMSwxKQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0
NDIiLCB7IHBhcmFtczogW10sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0
KDQyKQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0MTMz
NyIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3Qo
MTMzNykKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oInJldDI1
NiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3Qo
MjU2KQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCku
Z2V0KCkpKTsKKworICAgIGZ1bGxHQygpCisKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5jYWxs
X3RibDEoMCksIDQyKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmNhbGxfdGJsMCgwKSwgMTMz
NykKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5jYWxsX3RibDEoMSksIDI1NikKKyAgICBhc3Nl
cnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuY2FsbF90YmwwKDEpLCBFcnJvciwgImNhbGxfaW5k
aXJlY3QgdG8gYSBudWxsIHRhYmxlIGVudHJ5IChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJyki
KQorICAgIGFzc2VydC50aHJvd3MoKCkgPT4gJDEuZXhwb3J0cy5jYWxsX3RibDAoMiksIEVycm9y
LCAiY2FsbF9pbmRpcmVjdCB0byBhIG51bGwgdGFibGUgZW50cnkgKGV2YWx1YXRpbmcgJ2Z1bmMo
Li4uYXJncyknKSIpCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBvcnRzLmNhbGxfdGJs
MSgyKSwgRXJyb3IsICJPdXQgb2YgYm91bmRzIGNhbGxfaW5kaXJlY3QgKGV2YWx1YXRpbmcgJ2Z1
bmMoLi4uYXJncyknKSIpCit9CisgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHku
SW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAg
ICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAu
VGFibGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMywgbWF4aW11bTogMywg
ZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDIs
IG1heGltdW06IDIsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgLkVuZCgpCisgICAg
ICAgICAgLkVsZW1lbnQoKQorICAgICAgICAgICAgICAgIC5FbGVtZW50KHt0YWJsZUluZGV4OiAx
LCBvZmZzZXQ6IDAsIGZ1bmN0aW9uSW5kaWNlczogWzBdfSkKKyAgICAgICAgICAgICAgICAuRWxl
bWVudCh7dGFibGVJbmRleDogMCwgb2Zmc2V0OiAwLCBmdW5jdGlvbkluZGljZXM6IFswXX0pCisg
ICAgICAgICAgICAgICAgLkVsZW1lbnQoe3RhYmxlSW5kZXg6IDEsIG9mZnNldDogMiwgZnVuY3Rp
b25JbmRpY2VzOiBbMF19KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAg
ICAgICAgICAgIC5GdW5jdGlvbigicmV0NDIiLCB7IHBhcmFtczogW10sIHJldDogImkzMiIgfSkK
KyAgICAgICAgICAgICAgLkkzMkNvbnN0KDQyKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAg
ICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKSwgRXJyb3IsICJFbGVtZW50IGlzIHRyeWlu
ZyB0byBzZXQgYW4gb3V0IG9mIGJvdW5kcyB0YWJsZSBpbmRleCAoZXZhbHVhdGluZyAnbmV3IFdl
YkFzc2VtYmx5Lkluc3RhbmNlJykiKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZmVyZW5j
ZXMvdmFsaWRhdGlvbi5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL3ZhbGlkYXRpb24uanMK
aW5kZXggZDM4YzI2NWJmZmY2MTBhZDQ5NDg4NGY5YTc3YTYzNzNjODRlNTJhMy4uNTM4ODI4Y2Nh
OTEzNzdjYzY5ODAzZDMxYTZjMGVmYjA2ZDFjMWZmZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNt
L3JlZmVyZW5jZXMvdmFsaWRhdGlvbi5qcworKysgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy92
YWxpZGF0aW9uLmpzCkBAIC0yNCw2ICsyNCw5IEBAIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1
aWxkZXIuanMnOwogewogICAgIGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKICAgICAg
IC5UeXBlKCkuRW5kKCkKKyAgICAgIC5JbXBvcnQoKQorICAgICAgICAgICAgLlRhYmxlKCJpbXAi
LCAidGJsIiwge2luaXRpYWw6IDIsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAuRW5kKCkK
ICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCiAgICAgICAuRXhwb3J0KCkKICAgICAgICAgICAuRnVu
Y3Rpb24oImoiKQpAQCAtMzIsNyArMzUsNyBAQCBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWls
ZGVyLmpzJzsKICAgICAgICAgLkZ1bmN0aW9uKCJqIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJ2b2lk
IiB9KQogICAgICAgICAgICAgLkkzMkNvbnN0KDApCiAgICAgICAgICAgICAuSTMyQ29uc3QoMCkK
LSAgICAgICAgICAgIC5UYWJsZVNldCgpCisgICAgICAgICAgICAuVGFibGVTZXQoMCkKICAgICAg
ICAgLkVuZCgpCiAgICAgICAuRW5kKCk7CiAKQEAgLTU2LDcgKzU5LDcgQEAgaW1wb3J0IEJ1aWxk
ZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CiAgICAgICAgIC5GdW5jdGlvbigiaiIsIHsgcGFyYW1z
OiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQogICAgICAgICAgICAgLkkzMkNvbnN0KDApCiAg
ICAgICAgICAgICAuR2V0TG9jYWwoMCkKLSAgICAgICAgICAgIC5UYWJsZVNldCgpCisgICAgICAg
ICAgICAuVGFibGVTZXQoMCkKICAgICAgICAgLkVuZCgpCiAgICAgICAuRW5kKCk7CiAKQEAgLTc5
LDcgKzgyLDcgQEAgaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CiAgICAgICAu
Q29kZSgpCiAgICAgICAgIC5GdW5jdGlvbigiaiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVm
IiB9KQogICAgICAgICAgICAgLkkzMkNvbnN0KDApCi0gICAgICAgICAgICAuVGFibGVHZXQoKQor
ICAgICAgICAgICAgLlRhYmxlR2V0KDApCiAgICAgICAgIC5FbmQoKQogICAgICAgLkVuZCgpOwog
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vc3BlYy10ZXN0cy9pbXBvcnRzLndhc3QuanMgYi9K
U1Rlc3RzL3dhc20vc3BlYy10ZXN0cy9pbXBvcnRzLndhc3QuanMKaW5kZXggNDhkMTQwOTY2YTRm
NzU4MzY3MDgwMjk3YTRjMDNjYWE3NDgzMzUzMS4uNDk0ZDgyY2RhM2Q1YmE0ZmRmYmI1Yjk2MGUw
NjJkMmExNDNiNDRkNCAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3NwZWMtdGVzdHMvaW1wb3J0
cy53YXN0LmpzCisrKyBiL0pTVGVzdHMvd2FzbS9zcGVjLXRlc3RzL2ltcG9ydHMud2FzdC5qcwpA
QCAtMTg5LDEzICsxODksMTQgQEAgYXNzZXJ0X3RyYXAoKCkgPT4gY2FsbCgkMTQsICJjYWxsIiwg
WzNdKSk7CiBhc3NlcnRfdHJhcCgoKSA9PiBjYWxsKCQxNCwgImNhbGwiLCBbMTAwXSkpOwogCiAv
LyBpbXBvcnRzLndhc3Q6MjkzCi1hc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFc
eDAwXHgwMFx4MDBceDAyXHg4ZFx4ODBceDgwXHg4MFx4MDBceDAyXHgwMFx4MDBceDAxXHg3MFx4
MDBceDBhXHgwMFx4MDBceDAxXHg3MFx4MDBceDBhIik7CisvLyBUaGVzZSB0ZXN0cyBhc3NlcnQg
dGhhdCB3ZSBjYW4gb25seSBoYXZlIG9uZSB0YWJsZS4gVGhlIHJlZmVyZW5jZXMgc3BlYyBtYWtl
cyB0aGlzIGluY29ycmVjdCwgYW5kIHRoaXMgc2hvdWxkIGJlIGZpeGVkIHdoZW4gaXQgZ2V0cyBt
ZXJnZWQgaW50byB0aGUgbWFpbiBzcGVjLgorLy9hc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDcz
XHg2ZFx4MDFceDAwXHgwMFx4MDBceDAyXHg4ZFx4ODBceDgwXHg4MFx4MDBceDAyXHgwMFx4MDBc
eDAxXHg3MFx4MDBceDBhXHgwMFx4MDBceDAxXHg3MFx4MDBceDBhIik7CiAKIC8vIGltcG9ydHMu
d2FzdDoyOTcKLWFzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgw
MFx4MDJceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwMFx4MDFceDcwXHgwMFx4MGFceDA0
XHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg3MFx4MDBceDBhIik7CisvL2Fzc2VydF9pbnZhbGlk
KCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDJceDg3XHg4MFx4ODBceDgwXHgw
MFx4MDFceDAwXHgwMFx4MDFceDcwXHgwMFx4MGFceDA0XHg4NFx4ODBceDgwXHg4MFx4MDBceDAx
XHg3MFx4MDBceDBhIik7CiAKIC8vIGltcG9ydHMud2FzdDozMDEKLWFzc2VydF9pbnZhbGlkKCJc
eDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDRceDg3XHg4MFx4ODBceDgwXHgwMFx4
MDJceDcwXHgwMFx4MGFceDcwXHgwMFx4MGEiKTsKKy8vYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwNFx4ODdceDgwXHg4MFx4ODBceDAwXHgwMlx4NzBc
eDAwXHgwYVx4NzBceDAwXHgwYSIpOwogCiAvLyBpbXBvcnRzLndhc3Q6MzA2CiBsZXQgJDE1ID0g
aW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMlx4OTdceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDRceDc0XHg2NVx4NzNceDc0XHgwY1x4NzRceDYxXHg2Mlx4NmNceDY1
XHgyZFx4MzFceDMwXHgyZFx4NjlceDZlXHg2Nlx4MDFceDcwXHgwMFx4MGEiKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvd2FzbS93YXNtLmpzb24gYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCmluZGV4
IDMwYmJjNzQ3MjM3ODM5MjJlZGJiZjYzNDk5MzQ5MGY0OGI3YjdlMDIuLjgzODMxYTczMzg1YTgw
ZWZkNDlmNjE4M2RmYmM4ODVkYzViZDkwYzMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS93YXNt
Lmpzb24KKysrIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgpAQCAtNjYsMTAgKzY2LDEwIEBACiAg
ICAgICAgICJ0ZWVfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAg
ICJ2YWx1ZSI6ICAzNCwgInJldHVybiI6IFsiYW55Il0sICAgICAgInBhcmFtZXRlciI6IFsiYW55
Il0sICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAibG9jYWxfaW5kZXgi
LCAgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAid3JpdGUgYSBsb2NhbCB2YXJpYWJsZSBvciBw
YXJhbWV0ZXIgYW5kIHJldHVybiB0aGUgc2FtZSB2YWx1ZSIgfSwKICAgICAgICAgImdldF9nbG9i
YWwiOiAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM1LCAi
cmV0dXJuIjogWyJhbnkiXSwgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAg
ICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJnbG9iYWxfaW5kZXgiLCAgICJ0eXBlIjogInZh
cnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJyZWFkIGEgZ2xvYmFsIHZhcmlhYmxlIiB9LAogICAgICAgICAic2V0X2ds
b2JhbCI6ICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzYs
ICJyZXR1cm4iOiBbXSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFueSJdLCAgICAgICAgICAg
ICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImdsb2JhbF9pbmRleCIsICAgInR5cGUiOiAi
dmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIndyaXRlIGEgZ2xvYmFsIHZhcmlhYmxlIiB9LAotICAgICAgICAidGFi
bGUuZ2V0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAg
MzcsICJyZXR1cm4iOiBbImFueXJlZiJdLCAgICJwYXJhbWV0ZXIiOiBbImkzMiJdLCAgICAgICAg
ICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogImdldCBhIHRhYmxlIHZhbHVlIiB9LAotICAgICAgICAidGFibGUu
c2V0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzgs
ICJyZXR1cm4iOiBbXSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImkzMiIsICJhbnlyZWYiXSwg
ICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogInNldCBhIHRhYmxlIHZhbHVlIiB9LAorICAgICAgICAidGFibGUuZ2V0
IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzcsICJy
ZXR1cm4iOiBbImFueXJlZiJdLCAgICJwYXJhbWV0ZXIiOiBbImkzMiJdLCAgICAgICAgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInRhYmxlX2luZGV4IiwgICAgInR5cGUiOiAidmFy
dWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogImdldCBhIHRhYmxlIHZhbHVlIiB9LAorICAgICAgICAidGFibGUuc2V0Ijog
ICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzgsICJyZXR1
cm4iOiBbXSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImkzMiIsICJhbnlyZWYiXSwgICAgICAg
ICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInRhYmxlX2luZGV4IiwgICAgInR5cGUiOiAidmFydWlu
dDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogInNldCBhIHRhYmxlIHZhbHVlIiB9LAogICAgICAgICAiY2FsbCI6ICAgICAgICAg
ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTYsICJyZXR1cm4i
OiBbImNhbGwiXSwgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICJp
bW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2luZGV4IiwgInR5cGUiOiAidmFydWludDMy
In1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogImNhbGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0sCi0gICAgICAgICJjYWxsX2lu
ZGlyZWN0IjogICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxNywg
InJldHVybiI6IFsiY2FsbCJdLCAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAg
ICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2
YXJ1aW50MzIifSwgeyJuYW1lIjogInJlc2VydmVkIiwgInR5cGUiOiAidmFydWludDEifV0sICAi
ZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQg
c2lnbmF0dXJlIiB9LAorICAgICAgICAiY2FsbF9pbmRpcmVjdCI6ICAgICAgIHsgImNhdGVnb3J5
IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTcsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICJw
YXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1l
IjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJ0YWJs
ZV9pbmRleCIsInR5cGUiOiAidmFydWludDMyIn1dLCJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVu
Y3Rpb24gaW5kaXJlY3Qgd2l0aCBhbiBleHBlY3RlZCBzaWduYXR1cmUiIH0sCiAgICAgICAgICJp
MzIubG9hZDhfcyI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6
ICA0NCwgInJldHVybiI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAg
ICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlw
ZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAidmFydWludDMy
In1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKICAgICAgICAgImkzMi5s
b2FkOF91IjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ1
LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAg
ICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjog
InZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0s
ICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAgICAiaTMyLmxvYWQx
Nl9zIjogICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDYsICJy
ZXR1cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFy
dWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRl
c2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCg==
</data>
<flag name="review"
          id="387851"
          type_id="1"
          status="-"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372175</attachid>
            <date>2019-06-14 21:21:18 -0700</date>
            <delta_ts>2019-06-17 13:15:46 -0700</delta_ts>
            <desc>patch (requires funcref patch)</desc>
            <filename>multitable.patch</filename>
            <type>text/plain</type>
            <size>87172</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZGMzNWY1NTQ0ZGUuLjRhZWM4ZThkZWYyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE5LTA2LTEzICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBbV0FTTS1S
ZWZlcmVuY2VzXSBBZGQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgdGFibGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg3NjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdhc20vQnVpbGRlci5qczoKKyAg
ICAgICAgKiB3YXNtL2pzLWFwaS9jYWxsLWluZGlyZWN0LmpzOgorICAgICAgICAoY29uc3Qub25l
VGFibGUpOgorICAgICAgICAoY29uc3QubXVsdGlUYWJsZSk6CisgICAgICAgIChtdWx0aVRhYmxl
KToKKyAgICAgICAgKG11bHRpVGFibGUuUG9seXBoaWMySW1wb3J0KToKKyAgICAgICAgKG11bHRp
VGFibGUuVmlydHVhbEltcG9ydCk6CisgICAgICAgIChjb25zdC53YXNtTW9kdWxlV2hpY2hJbXBv
cnRKUyk6IERlbGV0ZWQuCisgICAgICAgIChjb25zdC5tYWtlVGFibGUpOiBEZWxldGVkLgorICAg
ICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKFBvbHlwaGljMkltcG9ydCk6IERlbGV0ZWQuCisg
ICAgICAgIChWaXJ0dWFsSW1wb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2pzLWFwaS90
YWJsZS5qczoKKyAgICAgICAgKG5ldy5XZWJBc3NlbWJseS5Nb2R1bGUpOgorICAgICAgICAoYXNz
ZXJ0LnRocm93cyk6CisgICAgICAgIChhc3NlcnRCYWRUYWJsZUltcG9ydCk6CisgICAgICAgIChh
c3NlcnQudHJ1dGh5KToKKyAgICAgICAgKGFzc2VydC50aHJvd3MubmV3LldlYkFzc2VtYmx5Lk1v
ZHVsZS5idWlsZGVyLldlYkFzc2VtYmx5KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL3JlZmVy
ZW5jZXMvYW55cmVmX3RhYmxlLmpzOgorICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy9hbnlyZWZf
dGFibGVfaW1wb3J0LmpzOgorICAgICAgICAobWFrZUltcG9ydCk6CisgICAgICAgIChzdHJpbmdf
YXBwZWFyZWRfaGVyZS5mdWxsR0MuYXNzZXJ0LmVxLjEuZXhwb3J0cy5nZXRfdGJsLm1ha2VJbXBv
cnQpOgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUuZnVsbEdDLmFzc2VydC5lcS4xLmV4
cG9ydHMuZ2V0X3RibCk6CisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL211bHRpdGFibGUuanM6
IEFkZGVkLgorICAgICAgICAoYXNzZXJ0LnRocm93cy4xLmV4cG9ydHMuc2V0X3RibDApOgorICAg
ICAgICAoYXNzZXJ0LnRocm93cyk6CisgICAgICAgIChhc3NlcnQuZXEpOgorICAgICAgICAqIHdh
c20vcmVmZXJlbmNlcy92YWxpZGF0aW9uLmpzOgorICAgICAgICAoYXNzZXJ0LnRocm93cy5uZXcu
V2ViQXNzZW1ibHkuTW9kdWxlLmJpbik6CisgICAgICAgIChhc3NlcnQudGhyb3dzKToKKyAgICAg
ICAgKiB3YXNtL3NwZWMtdGVzdHMvaW1wb3J0cy53YXN0LmpzOgorICAgICAgICAqIHdhc20vd2Fz
bS5qc29uOgorCiAyMDE5LTA2LTEwICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV0FTTS1SZWZlcmVuY2VzXSBBZGQgc3VwcG9ydCBmb3IgRnVu
Y3JlZiBpbiBwYXJhbWV0ZXJzIGFuZCByZXR1cm4gdHlwZXMKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
d2FzbS9CdWlsZGVyLmpzIGIvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMKaW5kZXggNjVmMWY0Nzdh
OTguLjk3NjM3N2Y3YjNkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcworKysg
Yi9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcwpAQCAtMzA2LDYgKzMwNiw3IEBAIGNvbnN0IF9jaGVj
a0ltbXMgPSAob3AsIGltbXMsIGV4cGVjdGVkSW1tcywgcmV0KSA9PiB7CiAgICAgICAgIGNhc2Ug
InRhcmdldF9jb3VudCI6IGJyZWFrOyAvLyBpbXByb3ZlIGNoZWNraW5nIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKICAgICAgICAgY2FzZSAidGFyZ2V0X3Rh
YmxlIjogYnJlYWs7IC8vIGltcHJvdmUgY2hlY2tpbmcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MzQyMQogICAgICAgICBjYXNlICJyZXNlcnZlZCI6IGJyZWFrOyAv
LyBpbXByb3ZlIGNoZWNraW5nIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjM0MjEKKyAgICAgICAgY2FzZSAidGFibGVfaW5kZXgiOiBicmVhazsgLy8gaW1wcm92ZSBj
aGVja2luZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCiAg
ICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50YXRpb24gcHJvYmxlbTog
dW5oYW5kbGVkIGltbWVkaWF0ZSAiJHtleHBlY3QubmFtZX0iIG9uICIke29wfSJgKTsKICAgICAg
ICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvY2FsbC1pbmRpcmVj
dC5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvY2FsbC1pbmRpcmVjdC5qcwppbmRleCAwMWNkNDJm
OWI3OS4uMmZhZmNjMTkyYjEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvY2FsbC1p
bmRpcmVjdC5qcworKysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL2NhbGwtaW5kaXJlY3QuanMKQEAg
LTEsNyArMSw3IEBACiBpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKIGlt
cG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwogCi1jb25zdCB3YXNtTW9kdWxlV2hp
Y2hJbXBvcnRKUyA9ICgpID0+IHsKK2NvbnN0IG9uZVRhYmxlID0gKCkgPT4gewogICAgIGNvbnN0
IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKICAgICAgICAgLlR5cGUoKS5FbmQoKQogICAgICAg
ICAuSW1wb3J0KCkKQEAgLTMxLDYgKzMxLDM5IEBAIGNvbnN0IHdhc21Nb2R1bGVXaGljaEltcG9y
dEpTID0gKCkgPT4gewogICAgIHJldHVybiBtb2R1bGU7CiB9OwogCitjb25zdCBtdWx0aVRhYmxl
ID0gKCkgPT4geworICAgIGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAg
LlR5cGUoKS5FbmQoKQorICAgICAgICAuSW1wb3J0KCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigi
aW1wIiwgImZ1bmMiLCB7IHBhcmFtczogWyJpMzIiXSB9KQorICAgICAgICAgICAgLlRhYmxlKCJp
bXAiLCAidGFibGUwIiwgeyBpbml0aWFsOiAwLCBtYXhpbXVtOiAwLCBlbGVtZW50OiAiYW55ZnVu
YyJ9KQorICAgICAgICAgICAgLlRhYmxlKCJpbXAiLCAidGFibGUiLCB7IGluaXRpYWw6IDEsIG1h
eGltdW06IDEsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgIC5FbmQoKQorICAgICAgICAu
RnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAgIC5GdW5jdGlv
bigiY2hhbmdlQ291bnRlciIpCisgICAgICAgICAgICAuRnVuY3Rpb24oImNhbGxGdW5jIikKKyAg
ICAgICAgLkVuZCgpCisgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiY2hh
bmdlQ291bnRlciIsIHsgcGFyYW1zOiBbImkzMiIsICJpMzIiXSB9KQorICAgICAgICAgICAgICAg
IC5JMzJDb25zdCg0MikKKyAgICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAg
ICAgICAuSTMyQWRkKCkKKyAgICAgICAgICAgICAgICAuR2V0TG9jYWwoMSkKKyAgICAgICAgICAg
ICAgICAuQ2FsbEluZGlyZWN0KDAsIDEpIC8vIENhbGxzIHRhYmxlWzBdKHBhcmFtWzBdICsgNDIp
LgorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImNhbGxGdW5jIiwg
eyBwYXJhbXM6IFsiaTMyIl0gfSkKKyAgICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAg
ICAgICAgICAgICAuQ2FsbCgwKSAvLyBDYWxscyBmdW5jKHBhcmFtWzBdICsgNDIpCisgICAgICAg
ICAgICAuRW5kKCkKKyAgICAgICAgLkVuZCgpOworICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2Vi
QXNzZW1ibHkoKS5nZXQoKTsKKyAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9k
dWxlKGJpbik7CisgICAgcmV0dXJuIG1vZHVsZTsKK307CisKK2ZvciAoY29uc3Qgd2FzbU1vZHVs
ZVdoaWNoSW1wb3J0SlMgb2YgW29uZVRhYmxlLCBtdWx0aVRhYmxlXSkgeworCiBjb25zdCBtYWtl
VGFibGUgPSAoKSA9PiB7CiAgICAgcmV0dXJuIG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlh
bDogMSwgbWF4aW11bTogMSwgZWxlbWVudDogImFueWZ1bmMifSk7CiB9OwpAQCAtNDAsNyArNzMs
NyBAQCBjb25zdCBtYWtlVGFibGUgPSAoKSA9PiB7CiAgICAgY29uc3QgY291bnRlclNldHRlciA9
IHYgPT4gY291bnRlciA9IHY7CiAgICAgY29uc3QgdGFibGUgPSBtYWtlVGFibGUoKTsKICAgICBj
b25zdCBtb2R1bGUgPSB3YXNtTW9kdWxlV2hpY2hJbXBvcnRKUygpOwotICAgIGNvbnN0IGluc3Rh
bmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291
bnRlclNldHRlciwgdGFibGV9IH0pOworICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFdlYkFzc2Vt
Ymx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291bnRlclNldHRlciwgdGFibGUs
IHRhYmxlMDogbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOiAwLCBtYXhpbXVtOiAwLCBl
bGVtZW50OiAiYW55ZnVuYyJ9KSB9IH0pOwogICAgIHRhYmxlLnNldCgwLCBpbnN0YW5jZS5leHBv
cnRzLmNhbGxGdW5jKTsKICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwOTY7ICsraSkgewogICAg
ICAgICAvLyBJbnZva2UgdGhpcyBhIGJ1bmNoIG9mIHRpbWVzIHRvIG1ha2Ugc3VyZSB0aGUgSUMg
aW4gdGhlIHdhc20gLT4gSlMgc3R1YiB3b3JrcyBjb3JyZWN0bHkuCkBAIC01NywxMSArOTAsMTEg
QEAgY29uc3QgbWFrZVRhYmxlID0gKCkgPT4gewogICAgIGNvbnN0IG1vZHVsZSA9IHdhc21Nb2R1
bGVXaGljaEltcG9ydEpTKCk7CiAKICAgICBjb25zdCB0YWJsZUEgPSBtYWtlVGFibGUoKTsKLSAg
ICBjb25zdCBpbnN0YW5jZUEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGlt
cDogeyBmdW5jOiBjb3VudGVyQVNldHRlciwgdGFibGU6IHRhYmxlQX0gfSk7CisgICAgY29uc3Qg
aW5zdGFuY2VBID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVu
YzogY291bnRlckFTZXR0ZXIsIHRhYmxlOiB0YWJsZUEsIHRhYmxlMDogbmV3IFdlYkFzc2VtYmx5
LlRhYmxlKHtpbml0aWFsOiAwLCBtYXhpbXVtOiAwLCBlbGVtZW50OiAiYW55ZnVuYyJ9KSB9IH0p
OwogICAgIHRhYmxlQS5zZXQoMCwgaW5zdGFuY2VBLmV4cG9ydHMuY2FsbEZ1bmMpOwogCiAgICAg
Y29uc3QgdGFibGVCID0gbWFrZVRhYmxlKCk7Ci0gICAgY29uc3QgaW5zdGFuY2VCID0gbmV3IFdl
YkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291bnRlckJTZXR0ZXIs
IHRhYmxlOiB0YWJsZUJ9IH0pOworICAgIGNvbnN0IGluc3RhbmNlQiA9IG5ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJCU2V0dGVyLCB0YWJsZTog
dGFibGVCLCB0YWJsZTA6IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDogMCwgbWF4aW11
bTogMCwgZWxlbWVudDogImFueWZ1bmMifSkgfSB9KTsKICAgICB0YWJsZUIuc2V0KDAsIGluc3Rh
bmNlQi5leHBvcnRzLmNhbGxGdW5jKTsKICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDIwNDg7ICsr
aSkgewogICAgICAgICBpbnN0YW5jZUEuZXhwb3J0cy5jaGFuZ2VDb3VudGVyKGksIDApOwpAQCAt
OTMsNyArMTI2LDcgQEAgY29uc3QgbWFrZVRhYmxlID0gKCkgPT4gewogICAgIGxldCBpbnN0YW5j
ZXMgPSBbXTsKICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bTsgKytpKSB7CiAgICAgICAgIGxl
dCB0YWJsZSA9IG1ha2VUYWJsZSgpOwotICAgICAgICBpbnN0YW5jZXNbaV0gPSBuZXcgV2ViQXNz
ZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDogeyBmdW5jOiBjb3VudGVyU2V0dGVyc1tpXSwg
dGFibGV9IH0pOworICAgICAgICBpbnN0YW5jZXNbaV0gPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFu
Y2UobW9kdWxlLCB7IGltcDogeyBmdW5jOiBjb3VudGVyU2V0dGVyc1tpXSwgdGFibGUsIHRhYmxl
MDogbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOiAwLCBtYXhpbXVtOiAwLCBlbGVtZW50
OiAiYW55ZnVuYyJ9KSB9IH0pOwogICAgICAgICB0YWJsZS5zZXQoMCwgaW5zdGFuY2VzW2ldLmV4
cG9ydHMuY2FsbEZ1bmMpOwogICAgIH0KICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDIwNDg7ICsr
aSkgewpAQCAtMTA0LDMgKzEzNyw1IEBAIGNvbnN0IG1ha2VUYWJsZSA9ICgpID0+IHsKICAgICAg
ICAgfQogICAgIH0KIH0pKCk7CisKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkv
dGFibGUuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3RhYmxlLmpzCmluZGV4IGJiY2E4OWVjMzRm
Li4xYjg0NDQzMWNlNiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL2pzLWFwaS90YWJsZS5qcwor
KysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3RhYmxlLmpzCkBAIC0xMyw3ICsxMyw3IEBAIGltcG9y
dCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOwogICAgICAgICAuRW5kKCkKICAgICAg
ICAgLkNvZGUoKQogICAgICAgICAuRW5kKCk7Ci0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcg
V2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSksIFdlYkFzc2Vt
Ymx5LkNvbXBpbGVFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5
dGUgMzQ6IENhbm5vdCBoYXZlIG1vcmUgdGhhbiBvbmUgVGFibGUgZm9yIG5vdyIpOworICAgIG5l
dyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpKQogfQogCiB7
CkBAIC0zOCw3ICszOCw3IEBAIGltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMn
OwogICAgICAgICAuRW5kKCkKICAgICAgICAgLkNvZGUoKQogICAgICAgICAuRW5kKCk7Ci0gICAg
YXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNz
ZW1ibHkoKS5nZXQoKSksIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgIldlYkFzc2VtYmx5Lk1v
ZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgMTc6IFRhYmxlIGNvdW50IG9mIDIgaXMgaW52YWxp
ZCwgYXQgbW9zdCAxIGlzIGFsbG93ZWQgZm9yIG5vdyAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2Vt
Ymx5Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCkpJykiKTsKKyAgICBuZXcgV2Vi
QXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSkKIH0KIAogewpAQCAt
NzMsNyArNzMsMjggQEAgaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CiAg
ICAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgwLCAxKQogICAgICAgICAgICAgLkVuZCgpCiAg
ICAgICAgIC5FbmQoKTsKLSAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5N
b2R1bGUoYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpKSwgV2ViQXNzZW1ibHkuQ29tcGlsZUVy
cm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSA2OiBjYWxsX2lu
ZGlyZWN0J3MgJ3Jlc2VydmVkJyB2YXJ1aW50MSBtdXN0IGJlIDB4MCwgaW4gZnVuY3Rpb24gYXQg
aW5kZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFz
c2VtYmx5KCkuZ2V0KCkpJykiKTsKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3Nl
bWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpKSwgV2ViQXNzZW1ibHkuQ29t
cGlsZUVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSA2OiBj
YWxsX2luZGlyZWN0J3MgdGFibGUgaW5kZXggMSBpbnZhbGlkLCBsaW1pdCBpcyAxLCBpbiBmdW5j
dGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxk
ZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSknKSIpOworfQorCit7CisgICAgY29uc3QgYnVpbGRlciA9
IG5ldyBCdWlsZGVyKCkKKyAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAuRnVuY3Rpb24o
KS5FbmQoKQorICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOjIw
LCBlbGVtZW50OiJhbnlmdW5jIn0pCisgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6MjAsIGVs
ZW1lbnQ6ImFueWZ1bmMifSkKKyAgICAgICAgLkVuZCgpCisgICAgICAgIC5FeHBvcnQoKQorICAg
ICAgICAgICAgLkZ1bmN0aW9uKCJmb28iKQorICAgICAgICAuRW5kKCkKKyAgICAgICAgLkNvZGUo
KQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJmb28iLCB7cGFyYW1zOiBbImkzMiJdfSkKKyAgICAg
ICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAg
ICAgICAgICAgICAgICAuQ2FsbEluZGlyZWN0KDAsIDEpCisgICAgICAgICAgICAuRW5kKCkKKyAg
ICAgICAgLkVuZCgpOworICAgIG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3Nl
bWJseSgpLmdldCgpKQogfQogCiB7CkBAIC0xODYsNyArMjA3LDcgQEAgZnVuY3Rpb24gYXNzZXJ0
QmFkVGFibGVJbXBvcnQodGFibGVEZXNjcmlwdGlvbiwgbWVzc2FnZSkgewogICAgICAgICAuRnVu
Y3Rpb24oKS5FbmQoKQogICAgICAgICAuQ29kZSgpCiAgICAgICAgIC5FbmQoKTsKLSAgICBhc3Nl
cnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3NlbWJs
eSgpLmdldCgpKSwgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxl
IGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAzOTogQ2Fubm90IGhhdmUgbW9yZSB0aGFuIG9uZSBUYWJs
ZSBmb3Igbm93Iik7CisgICAgbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFzc2Vt
Ymx5KCkuZ2V0KCkpCiB9CiAKIApAQCAtMzIwLDMgKzM0MSwyNiBAQCBhc3NlcnQudGhyb3dzKCgp
ID0+IFdlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5ncm93KHVuZGVmaW5lZCksIFR5cGVFcnJv
ciwgYGV4cAogICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLnRhYmxlLmxlbmd0aCwgMjAp
OwogICAgIGFzc2VydC50cnV0aHkoaW5zdGFuY2UuZXhwb3J0cy50YWJsZSBpbnN0YW5jZW9mIFdl
YkFzc2VtYmx5LlRhYmxlKTsKIH0KKworeworICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQnVpbGRl
cigpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAg
ICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMCwgbWF4aW11bTog
MSwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMjAs
IG1heGltdW06IDMwLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgICAuRW5kKCkKKyAgICAg
ICAgLkV4cG9ydCgpCisgICAgICAgICAgICAuVGFibGUoInRhYmxlMCIsIDApCisgICAgICAgICAg
ICAuVGFibGUoInRhYmxlIiwgMSkKKyAgICAgICAgICAgIC5UYWJsZSgidGFibGUyIiwgMSkKKyAg
ICAgICAgLkVuZCgpCisgICAgICAgIC5Db2RlKCkuRW5kKCk7CisKKyAgICBjb25zdCBtb2R1bGUg
PSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSk7Cisg
ICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKTsKKyAg
ICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy50YWJsZSwgaW5zdGFuY2UuZXhwb3J0cy50YWJs
ZTIpOworICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLnRhYmxlLmxlbmd0aCwgMjApOwor
ICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLnRhYmxlMC5sZW5ndGgsIDApOworICAgIGFz
c2VydC50cnV0aHkoaW5zdGFuY2UuZXhwb3J0cy50YWJsZSBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5
LlRhYmxlKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90
YWJsZS5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZS5qcwppbmRleCA4
YTBjMjkzZTU1Ni4uYzc1MWE3NjExNmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9yZWZlcmVu
Y2VzL2FueXJlZl90YWJsZS5qcworKysgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9hbnlyZWZf
dGFibGUuanMKQEAgLTE4LDEyICsxOCwxMiBAQCBjb25zdCAkMSA9IG5ldyBXZWJBc3NlbWJseS5J
bnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQogICAgICAgICAu
RnVuY3Rpb24oInNldF90YmwiLCB7IHBhcmFtczogWyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkK
ICAgICAgICAgICAuSTMyQ29uc3QoMCkKICAgICAgICAgICAuR2V0TG9jYWwoMCkKLSAgICAgICAg
ICAuVGFibGVTZXQoKQorICAgICAgICAgIC5UYWJsZVNldCgwKQogICAgICAgICAuRW5kKCkKIAog
ICAgICAgICAuRnVuY3Rpb24oImdldF90YmwiLCB7IHBhcmFtczogW10sIHJldDogImFueXJlZiIg
fSkKICAgICAgICAgICAuSTMyQ29uc3QoMCkKLSAgICAgICAgICAuVGFibGVHZXQoKQorICAgICAg
ICAgIC5UYWJsZUdldCgwKQogICAgICAgICAuRW5kKCkKIAogICAgICAgICAuRnVuY3Rpb24oInRi
bF9pc19udWxsIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3dhc20vcmVmZXJlbmNlcy9hbnlyZWZfdGFibGVfaW1wb3J0LmpzIGIvSlNUZXN0cy93YXNt
L3JlZmVyZW5jZXMvYW55cmVmX3RhYmxlX2ltcG9ydC5qcwppbmRleCA4OGNhYjdjMjNmZS4uMTc0
MmJiMjA4YzAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJs
ZV9pbXBvcnQuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvYW55cmVmX3RhYmxlX2lt
cG9ydC5qcwpAQCAtMjIsMTIgKzIyLDEyIEBAIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxk
ZXIuanMnOwogICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsIiwgeyBwYXJhbXM6IFsiYW55
cmVmIl0sIHJldDogInZvaWQiIH0pCiAgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQogICAgICAg
ICAgICAgICAuR2V0TG9jYWwoMCkKLSAgICAgICAgICAgICAgLlRhYmxlU2V0KCkKKyAgICAgICAg
ICAgICAgLlRhYmxlU2V0KDApCiAgICAgICAgICAgICAuRW5kKCkKIAogICAgICAgICAgICAgLkZ1
bmN0aW9uKCJnZXRfdGJsIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCiAgICAgICAg
ICAgICAgIC5JMzJDb25zdCgwKQotICAgICAgICAgICAgICAuVGFibGVHZXQoKQorICAgICAgICAg
ICAgICAuVGFibGVHZXQoMCkKICAgICAgICAgICAgIC5FbmQoKQogCiAgICAgICAgICAgICAuRnVu
Y3Rpb24oInRibF9pc19udWxsIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCkBAIC04OCwx
MiArODgsMTIgQEAgaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CiAgICAgICAg
ICAgICAuRnVuY3Rpb24oInNldF90YmwiLCB7IHBhcmFtczogWyJhbnlyZWYiXSwgcmV0OiAidm9p
ZCIgfSkKICAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCiAgICAgICAgICAgICAgIC5HZXRMb2Nh
bCgwKQotICAgICAgICAgICAgICAuVGFibGVTZXQoKQorICAgICAgICAgICAgICAuVGFibGVTZXQo
MCkKICAgICAgICAgICAgIC5FbmQoKQogCiAgICAgICAgICAgICAuRnVuY3Rpb24oImdldF90Ymwi
LCB7IHBhcmFtczogW10sIHJldDogImFueXJlZiIgfSkKICAgICAgICAgICAgICAgLkkzMkNvbnN0
KDApCi0gICAgICAgICAgICAgIC5UYWJsZUdldCgpCisgICAgICAgICAgICAgIC5UYWJsZUdldCgw
KQogICAgICAgICAgICAgLkVuZCgpCiAKICAgICAgICAgICAgIC5GdW5jdGlvbigidGJsX2lzX251
bGwiLCB7IHBhcmFtczogW10sIHJldDogImkzMiIgfSkKQEAgLTEyNywxMiArMTI3LDEyIEBAIGlt
cG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwogICAgICAgICAgICAgLkZ1bmN0aW9u
KCJzZXRfdGJsIiwgeyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCiAgICAgICAg
ICAgICAgIC5JMzJDb25zdCgwKQogICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKLSAgICAgICAg
ICAgICAgLlRhYmxlU2V0KCkKKyAgICAgICAgICAgICAgLlRhYmxlU2V0KDApCiAgICAgICAgICAg
ICAuRW5kKCkKIAogICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsIiwgeyBwYXJhbXM6IFtd
LCByZXQ6ICJhbnlyZWYiIH0pCiAgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQotICAgICAgICAg
ICAgICAuVGFibGVHZXQoKQorICAgICAgICAgICAgICAuVGFibGVHZXQoMCkKICAgICAgICAgICAg
IC5FbmQoKQogCiAgICAgICAgICAgICAuRnVuY3Rpb24oInRibF9pc19udWxsIiwgeyBwYXJhbXM6
IFtdLCByZXQ6ICJpMzIiIH0pCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9m
dW5jX3JlZi5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2Z1bmNfcmVmLmpzCmluZGV4IDM1
ZTA2ZTQ2NTgzLi4zNmE3OWI2ZjM0MiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3JlZmVyZW5j
ZXMvZnVuY19yZWYuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZnVuY19yZWYuanMK
QEAgLTI1Nyw3ICsyNTcsNyBAQCBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5N
b2R1bGUoKG5ldyBCdWlsZGVyKCkpCiAgICAgLkZ1bmN0aW9uKCJoIiwgeyBwYXJhbXM6IFsiaTMy
Il0sIHJldDogInZvaWQiIH0pCiAgICAgICAuR2V0TG9jYWwoMCkKICAgICAgIC5JMzJDb25zdCgw
KQotICAgICAgLlRhYmxlU2V0KCkKKyAgICAgIC5UYWJsZVNldCgwKQogICAgIC5FbmQoKQogICAu
RW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSksIEVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRv
ZXNuJ3QgdmFsaWRhdGU6IHRhYmxlLnNldCB2YWx1ZSB0byB0eXBlIEkzMiBleHBlY3RlZCBBbnlm
dW5jLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHku
TW9kdWxlJykiKTsKIApAQCAtMjY3LDYgKzI2Nyw3IEBAIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3
IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKICAgICAgIC5UeXBlKCkuRW5kKCkK
ICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCiAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgLlRh
YmxlKHtpbml0aWFsOiAwLCBlbGVtZW50OiAiYW55cmVmIn0pCiAgICAgICAgICAgICAuVGFibGUo
e2luaXRpYWw6IDEsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCiAgICAgICAuRW5kKCkKICAgICAgIC5H
bG9iYWwoKQpAQCAtMjkxLDExICsyOTIsMTEgQEAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2Vi
QXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQogICAgICAgICAuRnVuY3Rpb24oImNhbGxf
Z2xvYiIsIHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIiIH0pCiAgICAgICAgICAgICAuSTMy
Q29uc3QoMCkKICAgICAgICAgICAgIC5HZXRHbG9iYWwoMCkKLSAgICAgICAgICAgIC5UYWJsZVNl
dCgpCisgICAgICAgICAgICAuVGFibGVTZXQoMSkKIAogICAgICAgICAgICAgLkdldExvY2FsKDAp
CiAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKLSAgICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMiww
KQorICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgyLDEpCiAgICAgICAgIC5FbmQoKQogCiAgICAg
ICAgIC5GdW5jdGlvbigicmV0XzIwIiwgeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSkK
QEAgLTMyOCw2ICszMjksNyBAQCBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5N
b2R1bGUoKG5ldyBCdWlsZGVyKCkpCiAgICAgICAuVHlwZSgpLkVuZCgpCiAgICAgICAuRnVuY3Rp
b24oKS5FbmQoKQogICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDog
MCwgZWxlbWVudDogImFueXJlZiJ9KQogICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAxLCBl
bGVtZW50OiAiYW55ZnVuYyJ9KQogICAgICAgLkVuZCgpCiAgICAgICAuRXhwb3J0KCkKQEAgLTMz
OCwxMiArMzQwLDEyIEBAIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVs
ZSgobmV3IEJ1aWxkZXIoKSkKICAgICAgICAgLkZ1bmN0aW9uKCJzZXQiLCB7IHBhcmFtczogWyJh
bnlmdW5jIl0sIHJldDogInZvaWQiIH0pCiAgICAgICAgICAgLkkzMkNvbnN0KDApCiAgICAgICAg
ICAgLkdldExvY2FsKDApCi0gICAgICAgICAgLlRhYmxlU2V0KCkKKyAgICAgICAgICAuVGFibGVT
ZXQoMSkKICAgICAgICAgLkVuZCgpCiAKICAgICAgICAgLkZ1bmN0aW9uKCJnZXQiLCB7IHBhcmFt
czogW10sIHJldDogImFueWZ1bmMiIH0pCiAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKLSAgICAg
ICAgICAgIC5UYWJsZUdldCgpCisgICAgICAgICAgICAuVGFibGVHZXQoMSkKICAgICAgICAgLkVu
ZCgpCiAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSkpOwogCkBAIC00MDUsNyArNDA3
LDcgQEAgZm9yIChsZXQgaW1wb3J0ZWRGdW4gb2YgW2Z1bmN0aW9uKGkpIHsgcmV0dXJuIGk7IH0s
IG1ha2VBbnlmdW5jSWRlbnQoKV0pIHsKICAgICAgICAgICAuR2V0TG9jYWwoMCkKICAgICAgICAg
ICAuSTMyQ29uc3QoMCkKICAgICAgICAgICAuUmVmRnVuYygwKQotICAgICAgICAgIC5UYWJsZVNl
dCgpCisgICAgICAgICAgLlRhYmxlU2V0KDApCiAgICAgICAgICAgLkkzMkNvbnN0KDApCiAgICAg
ICAgICAgLkNhbGxJbmRpcmVjdCgwLCAwKQogICAgICAgICAuRW5kKCkKQEAgLTQxNCw3ICs0MTYs
NyBAQCBmb3IgKGxldCBpbXBvcnRlZEZ1biBvZiBbZnVuY3Rpb24oaSkgeyByZXR1cm4gaTsgfSwg
bWFrZUFueWZ1bmNJZGVudCgpXSkgewogICAgICAgICAgIC5SZWZGdW5jKDEpCiAgICAgICAgICAg
LkkzMkNvbnN0KDApCiAgICAgICAgICAgLlJlZkZ1bmMoMCkKLSAgICAgICAgICAuVGFibGVTZXQo
KQorICAgICAgICAgIC5UYWJsZVNldCgwKQogICAgICAgICAgIC5JMzJDb25zdCgwKQogICAgICAg
ICAgIC5DYWxsSW5kaXJlY3QoMCwgMCkKICAgICAgICAgLkVuZCgpCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3dhc20vcmVmZXJlbmNlcy9tdWx0aXRhYmxlLmpzIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5j
ZXMvbXVsdGl0YWJsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
M2EzMWZkNmI1YzgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9t
dWx0aXRhYmxlLmpzCkBAIC0wLDAgKzEsMjg3IEBACitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAn
Li4vYXNzZXJ0LmpzJzsKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOworCit7
CisgICAgY29uc3QgJDEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5
Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAg
ICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAg
IC5UYWJsZSh7aW5pdGlhbDogMCwgbWF4aW11bTogMCwgZWxlbWVudDogImFueXJlZiJ9KQorICAg
ICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMjAsIG1heGltdW06IDMwLCBlbGVtZW50OiAi
YW55cmVmIn0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkV4cG9ydCgpCisgICAgICAg
ICAgICAgIC5GdW5jdGlvbigic2V0X3RibCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0
X3RibCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibDAiKQorICAgICAgICAgICAg
ICAuRnVuY3Rpb24oInNldF90YmwwIikKKyAgICAgICAgICAgICAgLlRhYmxlKCJ0YmwiLCAxKQor
ICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlv
bigic2V0X3RibCIsIHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAg
ICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAg
ICAgICAgIC5UYWJsZVNldCgxKQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5G
dW5jdGlvbigiZ2V0X3RibCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQorICAgICAg
ICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLlRhYmxlR2V0KDEpCisgICAgICAg
ICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsMCIsIHsgcGFyYW1z
OiBbXSwgcmV0OiAiYW55cmVmIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAg
ICAgICAgICAgLlRhYmxlR2V0KDApCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAg
LkZ1bmN0aW9uKCJzZXRfdGJsMCIsIHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9
KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDAp
CisgICAgICAgICAgICAgIC5UYWJsZVNldCgwKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAg
ICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKTsKKworICAgIGZ1bGxHQygpCisKKyAgICBh
c3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfdGJsKCksIG51bGwpCisKKyAgICAkMS5leHBvcnRzLnNl
dF90YmwoImhpIikKKyAgICBmdWxsR0MoKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF90
YmwoKSwgImhpIikKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy50YmwuZ2V0KDApLCAiaGkiKQor
ICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLnRibC5nZXQoMSksIG51bGwpCisKKyAgICBhc3NlcnQu
dGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuZ2V0X3RibDAoKSwgRXJyb3IsICJPdXQgb2YgYm91bmRz
IHRhYmxlIGFjY2VzcyAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIik7CisgICAgYXNzZXJ0
LnRocm93cygoKSA9PiAkMS5leHBvcnRzLnNldF90YmwwKG51bGwpLCBFcnJvciwgIk91dCBvZiBi
b3VuZHMgdGFibGUgYWNjZXNzIChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKTsKK30KKwor
eworICAgIGNvbnN0IHRibCA9IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDowLCBlbGVt
ZW50OiJhbnlyZWYifSk7CisgICAgY29uc3QgJDEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2Uo
bmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgp
LkVuZCgpCisgICAgICAgICAgLkltcG9ydCgpCisgICAgICAgICAgICAgICAgLlRhYmxlKCJpbXAi
LCAidGJsIiwge2luaXRpYWw6IDAsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAuRW5k
KCkKKyAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAgIC5UYWJsZSgpCisgICAg
ICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAyMCwgbWF4aW11bTogMzAsIGVsZW1lbnQ6ICJh
bnlyZWYifSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRf
dGJsIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsMCIpCisgICAgICAgICAgICAg
IC5GdW5jdGlvbigic2V0X3RibDAiKQorICAgICAgICAgICAgICAuVGFibGUoInRibCIsIDEpCisg
ICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9u
KCJzZXRfdGJsIiwgeyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCisgICAgICAg
ICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAg
ICAgICAgLlRhYmxlU2V0KDEpCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1
bmN0aW9uKCJnZXRfdGJsIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCisgICAgICAg
ICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuVGFibGVHZXQoMSkKKyAgICAgICAg
ICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oImdldF90YmwwIiwgeyBwYXJhbXM6
IFtdLCByZXQ6ICJhbnlyZWYiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAg
ICAgICAgICAuVGFibGVHZXQoMCkKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAu
RnVuY3Rpb24oInNldF90YmwwIiwgeyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0p
CisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkK
KyAgICAgICAgICAgICAgLlRhYmxlU2V0KDApCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAg
ICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSksIHsgaW1wOiB7IHRibCB9fSk7CisKKyAgICBm
dWxsR0MoKQorCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X3RibCgpLCBudWxsKQorCisg
ICAgJDEuZXhwb3J0cy5zZXRfdGJsKCJoaSIpCisgICAgZnVsbEdDKCkKKyAgICBhc3NlcnQuZXEo
JDEuZXhwb3J0cy5nZXRfdGJsKCksICJoaSIpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMudGJs
LmdldCgwKSwgImhpIikKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy50YmwuZ2V0KDEpLCBudWxs
KQorCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBvcnRzLmdldF90YmwwKCksIEVycm9y
LCAiT3V0IG9mIGJvdW5kcyB0YWJsZSBhY2Nlc3MgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncykn
KSIpOworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gJDEuZXhwb3J0cy5zZXRfdGJsMChudWxsKSwg
RXJyb3IsICJPdXQgb2YgYm91bmRzIHRhYmxlIGFjY2VzcyAoZXZhbHVhdGluZyAnZnVuYyguLi5h
cmdzKScpIik7Cit9CisKK3sKKyAgICBjb25zdCB0YmwgPSBuZXcgV2ViQXNzZW1ibHkuVGFibGUo
e2luaXRpYWw6MSwgZWxlbWVudDoiYW55cmVmIn0pOworICAgIGNvbnN0ICQxID0gbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisg
ICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgIC5JbXBvcnQoKQorICAgICAgICAgICAg
ICAgIC5UYWJsZSgiaW1wIiwgInRibCIsIHtpbml0aWFsOiAxLCBlbGVtZW50OiAiYW55cmVmIn0p
CisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAg
ICAuVGFibGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMjAsIG1heGltdW06
IDMwLCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkV4
cG9ydCgpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibCIpCisgICAgICAgICAgICAg
IC5GdW5jdGlvbigiZ2V0X3RibCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibDAi
KQorICAgICAgICAgICAgICAuRnVuY3Rpb24oInNldF90YmwwIikKKyAgICAgICAgICAgICAgLlRh
YmxlKCJ0YmwiLCAxKQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAg
ICAgICAgIC5GdW5jdGlvbigic2V0X3RibCIsIHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2
b2lkIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLkdldExv
Y2FsKDApCisgICAgICAgICAgICAgIC5UYWJsZVNldCgxKQorICAgICAgICAgICAgLkVuZCgpCisK
KyAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55
cmVmIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLlRhYmxl
R2V0KDEpCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRf
dGJsMCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQorICAgICAgICAgICAgICAuSTMy
Q29uc3QoMCkKKyAgICAgICAgICAgICAgLlRhYmxlR2V0KDApCisgICAgICAgICAgICAuRW5kKCkK
KworICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsMCIsIHsgcGFyYW1zOiBbImFueXJlZiJd
LCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAg
ICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5UYWJsZVNldCgwKQorICAgICAgICAgICAg
LkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpLCB7IGltcDogeyB0
YmwgfX0pOworCisgICAgZnVsbEdDKCkKKworICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF90
YmwoKSwgbnVsbCkKKworICAgICQxLmV4cG9ydHMuc2V0X3RibCgiaGkiKQorICAgIGZ1bGxHQygp
CisgICAgJDEuZXhwb3J0cy5zZXRfdGJsMChudWxsKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRz
LmdldF90YmwoKSwgImhpIikKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfdGJsMCgpLCBu
dWxsKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLnRibC5nZXQoMCksICJoaSIpCisgICAgYXNz
ZXJ0LmVxKCQxLmV4cG9ydHMudGJsLmdldCgxKSwgbnVsbCkKKyAgICBhc3NlcnQuZXEodGJsLmdl
dCgwKSwgbnVsbCkKK30KKworeworICAgIGNvbnN0ICQxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3Rh
bmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5
cGUoKS5FbmQoKQorICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgLlRhYmxl
KCkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDMsIG1heGltdW06IDMwLCBlbGVt
ZW50OiAiYW55ZnVuYyJ9KQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMiwgbWF4
aW11bTogMzAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAg
ICAgLkV4cG9ydCgpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiY2FsbF90YmwwIikKKyAgICAg
ICAgICAgICAgLkZ1bmN0aW9uKCJjYWxsX3RibDEiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24o
InJldDQyIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQxMzM3IikKKyAgICAgICAgICAg
ICAgLkZ1bmN0aW9uKCJyZXQyNTYiKQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbGVt
ZW50KCkKKyAgICAgICAgICAgICAgICAuRWxlbWVudCh7dGFibGVJbmRleDogMSwgb2Zmc2V0OiAw
LCBmdW5jdGlvbkluZGljZXM6IFsyXX0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNv
ZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJjYWxsX3RibDAiLCB7IHBhcmFtczogWyJpMzIi
XSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAg
ICAgLkNhbGxJbmRpcmVjdCgxLDApCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAg
LkZ1bmN0aW9uKCJjYWxsX3RibDEiLCB7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9KQor
ICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgx
LDEpCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQ0MiIs
IHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoNDIp
CisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQxMzM3Iiwg
eyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgxMzM3
KQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0MjU2Iiwg
eyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgyNTYp
CisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQo
KSkpOworCisgICAgZnVsbEdDKCkKKworICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmNhbGxfdGJs
MSgwKSwgNDIpCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBvcnRzLmNhbGxfdGJsMCgw
KSwgRXJyb3IsICJjYWxsX2luZGlyZWN0IHRvIGEgbnVsbCB0YWJsZSBlbnRyeSAoZXZhbHVhdGlu
ZyAnZnVuYyguLi5hcmdzKScpIikKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMu
Y2FsbF90YmwxKDEpLCBFcnJvciwgImNhbGxfaW5kaXJlY3QgdG8gYSBudWxsIHRhYmxlIGVudHJ5
IChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorfQorCit7CisgICAgY29uc3QgJDEgPSBu
ZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxk
ZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5k
KCkKKyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDog
MywgbWF4aW11bTogMzAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgICAgICAgLlRh
YmxlKHtpbml0aWFsOiAyLCBtYXhpbXVtOiAzMCwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAg
ICAgICAuRW5kKCkKKyAgICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAgICAgLkZ1bmN0aW9u
KCJjYWxsX3RibDAiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oImNhbGxfdGJsMSIpCisgICAg
ICAgICAgICAgIC5GdW5jdGlvbigicmV0NDIiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oInJl
dDEzMzciKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oInJldDI1NiIpCisgICAgICAgICAgLkVu
ZCgpCisgICAgICAgICAgLkVsZW1lbnQoKQorICAgICAgICAgICAgICAgIC5FbGVtZW50KHt0YWJs
ZUluZGV4OiAxLCBvZmZzZXQ6IDAsIGZ1bmN0aW9uSW5kaWNlczogWzJdfSkKKyAgICAgICAgICAg
ICAgICAuRWxlbWVudCh7dGFibGVJbmRleDogMCwgb2Zmc2V0OiAwLCBmdW5jdGlvbkluZGljZXM6
IFszXX0pCisgICAgICAgICAgICAgICAgLkVsZW1lbnQoe3RhYmxlSW5kZXg6IDEsIG9mZnNldDog
MSwgZnVuY3Rpb25JbmRpY2VzOiBbNF19KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5D
b2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiY2FsbF90YmwwIiwgeyBwYXJhbXM6IFsiaTMy
Il0sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAg
ICAgIC5DYWxsSW5kaXJlY3QoMSwwKQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAg
IC5GdW5jdGlvbigiY2FsbF90YmwxIiwgeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSkK
KyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5DYWxsSW5kaXJlY3Qo
MSwxKQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0NDIi
LCB7IHBhcmFtczogW10sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDQy
KQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0MTMzNyIs
IHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMTMz
NykKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oInJldDI1NiIs
IHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMjU2
KQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0
KCkpKTsKKworICAgIGZ1bGxHQygpCisKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5jYWxsX3Ri
bDEoMCksIDQyKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmNhbGxfdGJsMCgwKSwgMTMzNykK
KyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5jYWxsX3RibDEoMSksIDI1NikKKyAgICBhc3NlcnQu
dGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuY2FsbF90YmwwKDEpLCBFcnJvciwgImNhbGxfaW5kaXJl
Y3QgdG8gYSBudWxsIHRhYmxlIGVudHJ5IChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQor
ICAgIGFzc2VydC50aHJvd3MoKCkgPT4gJDEuZXhwb3J0cy5jYWxsX3RibDAoMiksIEVycm9yLCAi
Y2FsbF9pbmRpcmVjdCB0byBhIG51bGwgdGFibGUgZW50cnkgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4u
YXJncyknKSIpCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBvcnRzLmNhbGxfdGJsMSgy
KSwgRXJyb3IsICJPdXQgb2YgYm91bmRzIGNhbGxfaW5kaXJlY3QgKGV2YWx1YXRpbmcgJ2Z1bmMo
Li4uYXJncyknKSIpCit9CisgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5z
dGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAu
VHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAuVGFi
bGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMywgbWF4aW11bTogMywgZWxl
bWVudDogImFueWZ1bmMifSkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDIsIG1h
eGltdW06IDIsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAg
ICAgLkVsZW1lbnQoKQorICAgICAgICAgICAgICAgIC5FbGVtZW50KHt0YWJsZUluZGV4OiAxLCBv
ZmZzZXQ6IDAsIGZ1bmN0aW9uSW5kaWNlczogWzBdfSkKKyAgICAgICAgICAgICAgICAuRWxlbWVu
dCh7dGFibGVJbmRleDogMCwgb2Zmc2V0OiAwLCBmdW5jdGlvbkluZGljZXM6IFswXX0pCisgICAg
ICAgICAgICAgICAgLkVsZW1lbnQoe3RhYmxlSW5kZXg6IDEsIG9mZnNldDogMiwgZnVuY3Rpb25J
bmRpY2VzOiBbMF19KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAg
ICAgICAgIC5GdW5jdGlvbigicmV0NDIiLCB7IHBhcmFtczogW10sIHJldDogImkzMiIgfSkKKyAg
ICAgICAgICAgICAgLkkzMkNvbnN0KDQyKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAg
LkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKSwgRXJyb3IsICJFbGVtZW50IGlzIHRyeWluZyB0
byBzZXQgYW4gb3V0IG9mIGJvdW5kcyB0YWJsZSBpbmRleCAoZXZhbHVhdGluZyAnbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlJykiKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMv
dmFsaWRhdGlvbi5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL3ZhbGlkYXRpb24uanMKaW5k
ZXggOGY4MTYzNjlhNzQuLjdmN2QxODQyN2I3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vcmVm
ZXJlbmNlcy92YWxpZGF0aW9uLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL3ZhbGlk
YXRpb24uanMKQEAgLTI0LDYgKzI0LDkgQEAgaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRl
ci5qcyc7CiB7CiAgICAgY29uc3QgYnVpbGRlciA9IChuZXcgQnVpbGRlcigpKQogICAgICAgLlR5
cGUoKS5FbmQoKQorICAgICAgLkltcG9ydCgpCisgICAgICAgICAgICAuVGFibGUoImltcCIsICJ0
YmwiLCB7aW5pdGlhbDogMiwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgIC5FbmQoKQogICAg
ICAgLkZ1bmN0aW9uKCkuRW5kKCkKICAgICAgIC5FeHBvcnQoKQogICAgICAgICAgIC5GdW5jdGlv
bigiaiIpCkBAIC0zMiwxNCArMzUsMTQgQEAgaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRl
ci5qcyc7CiAgICAgICAgIC5GdW5jdGlvbigiaiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAidm9pZCIg
fSkKICAgICAgICAgICAgIC5JMzJDb25zdCgwKQogICAgICAgICAgICAgLkkzMkNvbnN0KDApCi0g
ICAgICAgICAgICAuVGFibGVTZXQoKQorICAgICAgICAgICAgLlRhYmxlU2V0KDApCiAgICAgICAg
IC5FbmQoKQogICAgICAgLkVuZCgpOwogCiAgICAgY29uc3QgYmluID0gYnVpbGRlci5XZWJBc3Nl
bWJseSgpOwogICAgIGJpbi50cmltKCk7CiAKLSAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoYmluLmdldCgpKSwgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLCAi
V2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgdmFsaWRhdGU6IHRhYmxlLnNldCB2YWx1ZSB0byB0
eXBlIEkzMiBleHBlY3RlZCBBbnlyZWYsIGluIGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRp
bmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluLmdldCgpKScpIik7CisgICAgYXNzZXJ0LnRo
cm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbi5nZXQoKSksIFdlYkFzc2VtYmx5
LkNvbXBpbGVFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHZhbGlkYXRlOiB0YWJs
ZS5zZXQgdmFsdWUgdG8gdHlwZSBJMzIgZXhwZWN0ZWQgQW55ZnVuYywgaW4gZnVuY3Rpb24gYXQg
aW5kZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4uZ2V0KCkpJyki
KTsKIH0KIAogewpAQCAtNTYsNyArNTksNyBAQCBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWls
ZGVyLmpzJzsKICAgICAgICAgLkZ1bmN0aW9uKCJqIiwgeyBwYXJhbXM6IFsiYW55cmVmIl0sIHJl
dDogInZvaWQiIH0pCiAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKICAgICAgICAgICAgIC5HZXRM
b2NhbCgwKQotICAgICAgICAgICAgLlRhYmxlU2V0KCkKKyAgICAgICAgICAgIC5UYWJsZVNldCgw
KQogICAgICAgICAuRW5kKCkKICAgICAgIC5FbmQoKTsKIApAQCAtNzksNyArODIsNyBAQCBpbXBv
cnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKICAgICAgIC5Db2RlKCkKICAgICAgICAg
LkZ1bmN0aW9uKCJqIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCiAgICAgICAgICAg
ICAuSTMyQ29uc3QoMCkKLSAgICAgICAgICAgIC5UYWJsZUdldCgpCisgICAgICAgICAgICAuVGFi
bGVHZXQoMCkKICAgICAgICAgLkVuZCgpCiAgICAgICAuRW5kKCk7CiAKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvd2FzbS9zcGVjLXRlc3RzL2ltcG9ydHMud2FzdC5qcyBiL0pTVGVzdHMvd2FzbS9zcGVj
LXRlc3RzL2ltcG9ydHMud2FzdC5qcwppbmRleCA0OGQxNDA5NjZhNC4uNDk0ZDgyY2RhM2QgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9zcGVjLXRlc3RzL2ltcG9ydHMud2FzdC5qcworKysgYi9K
U1Rlc3RzL3dhc20vc3BlYy10ZXN0cy9pbXBvcnRzLndhc3QuanMKQEAgLTE4OSwxMyArMTg5LDE0
IEBAIGFzc2VydF90cmFwKCgpID0+IGNhbGwoJDE0LCAiY2FsbCIsIFszXSkpOwogYXNzZXJ0X3Ry
YXAoKCkgPT4gY2FsbCgkMTQsICJjYWxsIiwgWzEwMF0pKTsKIAogLy8gaW1wb3J0cy53YXN0OjI5
MwotYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMlx4
OGRceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAwXHgwMVx4NzBceDAwXHgwYVx4MDBceDAwXHgw
MVx4NzBceDAwXHgwYSIpOworLy8gVGhlc2UgdGVzdHMgYXNzZXJ0IHRoYXQgd2UgY2FuIG9ubHkg
aGF2ZSBvbmUgdGFibGUuIFRoZSByZWZlcmVuY2VzIHNwZWMgbWFrZXMgdGhpcyBpbmNvcnJlY3Qs
IGFuZCB0aGlzIHNob3VsZCBiZSBmaXhlZCB3aGVuIGl0IGdldHMgbWVyZ2VkIGludG8gdGhlIG1h
aW4gc3BlYy4KKy8vYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBc
eDAwXHgwMlx4OGRceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAwXHgwMVx4NzBceDAwXHgwYVx4
MDBceDAwXHgwMVx4NzBceDAwXHgwYSIpOwogCiAvLyBpbXBvcnRzLndhc3Q6Mjk3Ci1hc3NlcnRf
aW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAyXHg4N1x4ODBceDgw
XHg4MFx4MDBceDAxXHgwMFx4MDBceDAxXHg3MFx4MDBceDBhXHgwNFx4ODRceDgwXHg4MFx4ODBc
eDAwXHgwMVx4NzBceDAwXHgwYSIpOworLy9hc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDAyXHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDBceDAx
XHg3MFx4MDBceDBhXHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBceDAwXHgwYSIpOwog
CiAvLyBpbXBvcnRzLndhc3Q6MzAxCi1hc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4
MDFceDAwXHgwMFx4MDBceDA0XHg4N1x4ODBceDgwXHg4MFx4MDBceDAyXHg3MFx4MDBceDBhXHg3
MFx4MDBceDBhIik7CisvL2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBc
eDAwXHgwMFx4MDRceDg3XHg4MFx4ODBceDgwXHgwMFx4MDJceDcwXHgwMFx4MGFceDcwXHgwMFx4
MGEiKTsKIAogLy8gaW1wb3J0cy53YXN0OjMwNgogbGV0ICQxNSA9IGluc3RhbmNlKCJceDAwXHg2
MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDJceDk3XHg4MFx4ODBceDgwXHgwMFx4MDFceDA0
XHg3NFx4NjVceDczXHg3NFx4MGNceDc0XHg2MVx4NjJceDZjXHg2NVx4MmRceDMxXHgzMFx4MmRc
eDY5XHg2ZVx4NjZceDAxXHg3MFx4MDBceDBhIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20v
d2FzbS5qc29uIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgppbmRleCA2NGNhMGI1YjIwOC4uNDUz
MDhmYmJkNTcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KKysrIGIvSlNUZXN0
cy93YXNtL3dhc20uanNvbgpAQCAtNjcsMTAgKzY3LDEwIEBACiAgICAgICAgICJ0ZWVfbG9jYWwi
OiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzNCwgInJl
dHVybiI6IFsiYW55Il0sICAgICAgInBhcmFtZXRlciI6IFsiYW55Il0sICAgICAgICAgICAgICAg
ICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAibG9jYWxfaW5kZXgiLCAgICAidHlwZSI6ICJ2YXJ1
aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAid3JpdGUgYSBsb2NhbCB2YXJpYWJsZSBvciBwYXJhbWV0ZXIgYW5kIHJldHVy
biB0aGUgc2FtZSB2YWx1ZSIgfSwKICAgICAgICAgImdldF9nbG9iYWwiOiAgICAgICAgICB7ICJj
YXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM1LCAicmV0dXJuIjogWyJhbnkiXSwg
ICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjog
W3sibmFtZSI6ICJnbG9iYWxfaW5kZXgiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJyZWFk
IGEgZ2xvYmFsIHZhcmlhYmxlIiB9LAogICAgICAgICAic2V0X2dsb2JhbCI6ICAgICAgICAgIHsg
ImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzYsICJyZXR1cm4iOiBbXSwgICAg
ICAgICAgICJwYXJhbWV0ZXIiOiBbImFueSJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUi
OiBbeyJuYW1lIjogImdsb2JhbF9pbmRleCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIndy
aXRlIGEgZ2xvYmFsIHZhcmlhYmxlIiB9LAotICAgICAgICAidGFibGUuZ2V0IjogICAgICAgICAg
IHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzcsICJyZXR1cm4iOiBbImFu
eXJlZiJdLCAgICJwYXJhbWV0ZXIiOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlh
dGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
ImdldCBhIHRhYmxlIHZhbHVlIiB9LAotICAgICAgICAidGFibGUuc2V0IjogICAgICAgICAgIHsg
ImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzgsICJyZXR1cm4iOiBbXSwgICAg
ICAgICAgICJwYXJhbWV0ZXIiOiBbImkzMiIsICJhbnlyZWYiXSwgICAgICAgICJpbW1lZGlhdGUi
OiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInNl
dCBhIHRhYmxlIHZhbHVlIiB9LAorICAgICAgICAidGFibGUuZ2V0IjogICAgICAgICAgIHsgImNh
dGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzcsICJyZXR1cm4iOiBbImFueXJlZiJd
LCAgICJwYXJhbWV0ZXIiOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBb
eyJuYW1lIjogInRhYmxlX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImdldCBh
IHRhYmxlIHZhbHVlIiB9LAorICAgICAgICAidGFibGUuc2V0IjogICAgICAgICAgIHsgImNhdGVn
b3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzgsICJyZXR1cm4iOiBbXSwgICAgICAgICAg
ICJwYXJhbWV0ZXIiOiBbImkzMiIsICJhbnlyZWYiXSwgICAgICAgICJpbW1lZGlhdGUiOiBbeyJu
YW1lIjogInRhYmxlX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInNldCBhIHRh
YmxlIHZhbHVlIiB9LAogICAgICAgICAiY2FsbCI6ICAgICAgICAgICAgICAgIHsgImNhdGVnb3J5
IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTYsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICJw
YXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1l
IjogImZ1bmN0aW9uX2luZGV4IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5j
dGlvbiBieSBpdHMgaW5kZXgiIH0sCi0gICAgICAgICJjYWxsX2luZGlyZWN0IjogICAgICAgeyAi
Y2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxNywgInJldHVybiI6IFsiY2FsbCJd
LCAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6
IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1l
IjogInJlc2VydmVkIiwgInR5cGUiOiAidmFydWludDEifV0sICAiZGVzY3JpcHRpb24iOiAiY2Fs
bCBhIGZ1bmN0aW9uIGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAorICAg
ICAgICAiY2FsbF9pbmRpcmVjdCI6ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAi
dmFsdWUiOiAgMTcsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwi
XSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAg
ICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJ0YWJsZV9pbmRleCIsInR5cGUiOiAi
dmFydWludDMyIn1dLCJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gaW5kaXJlY3Qgd2l0
aCBhbiBleHBlY3RlZCBzaWduYXR1cmUiIH0sCiAgICAgICAgICJpMzIubG9hZDhfcyI6ICAgICAg
ICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NCwgInJldHVybiI6IFsi
aTMyIl0sICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgImltbWVk
aWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwg
eyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24i
OiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKICAgICAgICAgImkzMi5sb2FkOF91IjogICAgICAgICB7
ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ1LCAicmV0dXJuIjogWyJpMzIi
XSwgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICAiaW1tZWRpYXRl
IjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5h
bWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJs
b2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAgICAiaTMyLmxvYWQxNl9zIjogICAgICAgIHsgImNh
dGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDYsICJyZXR1cm4iOiBbImkzMiJdLCAg
ICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBb
eyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6
ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQg
ZnJvbSBtZW1vcnkiIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1ODNmOTFkYTdiMy4u
MGQ0NDNjZmQxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisy
MDE5LTA2LTEzICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbV0FTTS1SZWZlcmVuY2VzXSBBZGQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgdGFibGVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg3NjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdXBwb3J0
IG11bHRpcGxlIHdhc20gdGFibGVzLiBXZSB0dXJuIHRhYmxlSW5mb3JtYXRpb24gaW50byBhIHRh
YmxlcyBhcnJheSwgYW5kIHVwZGF0ZSBhbGwgb2YgdGhlCisgICAgICAgIGV4aXN0aW5nIHVzZXJz
IHRvIGdpdmUgYSB0YWJsZSBpbmRleC4KKworICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OkFpcklSR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KToK
KyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlU2V0KToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCk6CisgICAgICAg
ICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJH
ZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJh
dG9yOjphZGRUYWJsZUdldCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFk
ZFRhYmxlU2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkQ2FsbElu
ZGlyZWN0KToKKyAgICAgICAgKiB3YXNtL1dhc21FeGNlcHRpb25UeXBlLmg6CisgICAgICAgICog
d2FzbS9XYXNtRm9ybWF0Lmg6CisgICAgICAgIChKU0M6Oldhc206OkVsZW1lbnQ6OkVsZW1lbnQp
OgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldh
c206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAgICAo
SlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VVbnJlYWNoYWJsZUV4cHJl
c3Npb24pOgorICAgICAgICAqIHdhc20vV2FzbUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6SW5zdGFuY2U6Okluc3RhbmNlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpleHRyYU1lbW9yeUFsbG9j
YXRlZCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjp0YWJsZSk6CisgICAg
ICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpzZXRUYWJsZSk6CisgICAgICAgICogd2FzbS9XYXNt
SW5zdGFuY2UuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnVwZGF0ZUNhY2hlZE1l
bW9yeSk6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpvZmZzZXRPZkdsb2JhbHMpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZVB0cik6CisgICAgICAg
IChKU0M6Oldhc206Okluc3RhbmNlOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6Oldh
c206Okluc3RhbmNlOjp0YWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Okluc3Rh
bmNlOjpzZXRUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpv
ZmZzZXRPZlRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21Nb2R1bGVJbmZvcm1h
dGlvbi5oOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbjo6dGFibGVDb3Vu
dCBjb25zdCk6CisgICAgICAgICogd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHA6CisgICAgICAg
IChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlSW1wb3J0KToKKyAgICAgICAgKEpTQzo6
V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VUYWJsZUhlbHBlcik6CisgICAgICAgIChKU0M6Oldh
c206OlNlY3Rpb25QYXJzZXI6OnBhcnNlVGFibGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0
aW9uUGFyc2VyOjpwYXJzZUVsZW1lbnQpOgorICAgICAgICAqIHdhc20vV2FzbVRhYmxlLmg6Cisg
ICAgICAgIChKU0M6Oldhc206OlRhYmxlOjpvd25lciBjb25zdCk6CisgICAgICAgICogd2FzbS9X
YXNtVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpWYWxpZGF0ZTo6YWRkVGFibGVH
ZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpWYWxpZGF0ZTo6YWRkVGFibGVTZXQpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpWYWxpZGF0ZTo6YWRkQ2FsbEluZGlyZWN0KToKKyAgICAgICAgKiB3YXNt
L2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1i
bHlJbnN0YW5jZTo6SlNXZWJBc3NlbWJseUluc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseUluc3RhbmNlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayk6
CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZSk6CisgICAg
ICAgICogd2FzbS93YXNtLmpzb246CisKIDIwMTktMDYtMTAgIEp1c3RpbiBNaWNoYXVkICA8anVz
dGluX21pY2hhdWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBz
dXBwb3J0IGZvciBGdW5jcmVmIGluIHBhcmFtZXRlcnMgYW5kIHJldHVybiB0eXBlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKaW5kZXgg
YWIzMDRhNTVkMzYuLmU0OThiZWNkNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTIzNyw4ICsyMzcsOCBAQCBwdWJsaWM6
CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmVmRnVuYyh1aW50MzJf
dCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKICAgICAvLyBUYWJsZXMKLSAgICBQ
YXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZUdldChFeHByZXNzaW9uVHlw
ZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAgIFBhcnRpYWxSZXN1bHQgV0FS
Tl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlU2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVz
c2lvblR5cGUmIHZhbHVlKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRUYWJsZUdldCh1bnNpZ25lZCwgRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJs
ZVNldCh1bnNpZ25lZCwgRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgdmFs
dWUpOwogCiAgICAgLy8gTG9jYWxzCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gZ2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwpAQCAt
Mjc3LDcgKzI3Nyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbGxzCiAgICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1aW50MzJfdCBjYWxsZWVJbmRleCwgY29uc3Qg
U2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCk7Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbElu
ZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUm
LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsK
ICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRVbnJlYWNoYWJsZSgpOwog
CiAgICAgUGFydGlhbFJlc3VsdCBhZGRTaGlmdChUeXBlLCBCMzo6QWlyOjpPcGNvZGUsIEV4cHJl
c3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSBzaGlmdCwgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCk7CkBAIC02MjYsNiArNjI2LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB1aW50MzJf
dCBtX21heE51bUpTQ2FsbEFyZ3VtZW50cyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX251bUltcG9y
dEZ1bmN0aW9uczsKIAogICAgIEIzOjpQYXRjaHBvaW50U3BlY2lhbCogbV9wYXRjaHBvaW50U3Bl
Y2lhbCB7IG51bGxwdHIgfTsKIH07CkBAIC02ODEsNiArNjgyLDcgQEAgQWlySVJHZW5lcmF0b3I6
OkFpcklSR2VuZXJhdG9yKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBCMzo6UHJvY2Vk
dXJlJiBwcm8KICAgICAsIG1fcHJvYyhwcm9jZWR1cmUpCiAgICAgLCBtX2NvZGUobV9wcm9jLmNv
ZGUoKSkKICAgICAsIG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHModW5saW5rZWRXYXNtVG9XYXNt
Q2FsbHMpCisgICAgLCBtX251bUltcG9ydEZ1bmN0aW9ucyhpbmZvLmltcG9ydEZ1bmN0aW9uQ291
bnQoKSkKIHsKICAgICBtX2N1cnJlbnRCbG9jayA9IG1fY29kZS5hZGRCbG9jaygpOwogICAgIG1f
cm9vdEJsb2NrID0gbV9jdXJyZW50QmxvY2s7CkBAIC05NjgsMTQgKzk3MCwxNCBAQCBhdXRvIEFp
cklSR2VuZXJhdG9yOjphZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KSAtPiBQYXJ0aQogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gQWlySVJHZW5lcmF0
b3I6OmFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVHZXQo
dW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgLy8gRklYTUU6IEVtaXQgdGhpcyBp
bmxpbmUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1MDY+Lgog
ICAgIEFTU0VSVChpbmRleC50bXAoKSk7CiAgICAgQVNTRVJUKGluZGV4LnR5cGUoKSA9PSBUeXBl
OjpJMzIpOwogICAgIHJlc3VsdCA9IHRtcEZvclR5cGUoVHlwZTo6QW55cmVmKTsKIAotICAgIGVt
aXRDQ2FsbCgmZ2V0V2FzbVRhYmxlRWxlbWVudCwgcmVzdWx0LCBpbnN0YW5jZVZhbHVlKCksIGlu
ZGV4KTsKKyAgICBlbWl0Q0NhbGwoJmdldFdhc21UYWJsZUVsZW1lbnQsIHJlc3VsdCwgaW5zdGFu
Y2VWYWx1ZSgpLCBhZGRDb25zdGFudChUeXBlOjpJMzIsIHRhYmxlSW5kZXgpLCBpbmRleCk7CiAg
ICAgZW1pdENoZWNrKFsmXSB7CiAgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwgbnVs
bHB0ciwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgcmVzdWx0LCByZXN1bHQp
OwogICAgIH0sIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmKSB7CkBAIC05ODUsNyArOTg3LDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6
YWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KQogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlU2V0
KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKSAtPiBQYXJ0aWFs
UmVzdWx0CithdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZVNldCh1bnNpZ25lZCB0YWJsZUlu
ZGV4LCBFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4gUGFy
dGlhbFJlc3VsdAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KICAgICBBU1NFUlQoaW5kZXgu
dG1wKCkpOwpAQCAtOTkzLDcgKzk5NSw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRhYmxl
U2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKSAtCiAgICAg
QVNTRVJUKHZhbHVlLnRtcCgpKTsKIAogICAgIGF1dG8gc2hvdWxkVGhyb3cgPSBnMzIoKTsKLSAg
ICBlbWl0Q0NhbGwoJnNldFdhc21UYWJsZUVsZW1lbnQsIHNob3VsZFRocm93LCBpbnN0YW5jZVZh
bHVlKCksIGluZGV4LCB2YWx1ZSk7CisgICAgZW1pdENDYWxsKCZzZXRXYXNtVGFibGVFbGVtZW50
LCBzaG91bGRUaHJvdywgaW5zdGFuY2VWYWx1ZSgpLCBhZGRDb25zdGFudChUeXBlOjpJMzIsIHRh
YmxlSW5kZXgpLCBpbmRleCwgdmFsdWUpOwogCiAgICAgZW1pdENoZWNrKFsmXSB7CiAgICAgICAg
IHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwgbnVsbHB0ciwgQXJnOjpyZXNDb25kKE1hY3JvQXNz
ZW1ibGVyOjpaZXJvKSwgc2hvdWxkVGhyb3csIHNob3VsZFRocm93KTsKQEAgLTE4OTMsMTEgKzE4
OTUsMTIgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbklu
ZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwKICAgICByZXR1cm4geyB9OwogfQogCi1h
dXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1
bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVj
dCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9y
PEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlh
bFJlc3VsdAogewogICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZUluZGV4ID0gYXJncy50YWtlTGFz
dCgpOwogICAgIEFTU0VSVChzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpID09IGFyZ3Muc2l6ZSgp
KTsKLSAgICBBU1NFUlQobV9pbmZvLnRhYmxlSW5mb3JtYXRpb24udHlwZSgpID09IFRhYmxlRWxl
bWVudFR5cGU6OkZ1bmNyZWYpOworICAgIEFTU0VSVChtX2luZm8udGFibGVDb3VudCgpID4gdGFi
bGVJbmRleCk7CisgICAgQVNTRVJUKG1faW5mby50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpID09
IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpOwogCiAgICAgbV9tYWtlc0NhbGxzID0gdHJ1ZTsK
ICAgICAvLyBOb3RlOiBjYWxsIGluZGlyZWN0IGNhbiBjYWxsIGVpdGhlciBXZWJBc3NlbWJseUZ1
bmN0aW9uIG9yIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLiBCZWNhdXNlCkBAIC0xOTEyLDEy
ICsxOTE1LDEyIEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdChjb25zdCBT
aWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3NpCiAgICAgRXhwcmVzc2lvblR5cGUg
aW5zdGFuY2VzQnVmZmVyID0gZzY0KCk7CiAgICAgRXhwcmVzc2lvblR5cGUgY2FsbGFibGVGdW5j
dGlvbkJ1ZmZlckxlbmd0aCA9IGc2NCgpOwogICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
QXJnOjppc1ZhbGlkQWRkckZvcm0oSW5zdGFuY2U6Om9mZnNldE9mVGFibGUoKSwgQjM6OldpZHRo
NjQpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZvcm0oSW5zdGFu
Y2U6Om9mZnNldE9mVGFibGVQdHIobV9udW1JbXBvcnRGdW5jdGlvbnMsIHRhYmxlSW5kZXgpLCBC
Mzo6V2lkdGg2NCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChBcmc6OmlzVmFsaWRBZGRyRm9y
bShGdW5jUmVmVGFibGU6Om9mZnNldE9mRnVuY3Rpb25zKCksIEIzOjpXaWR0aDY0KSk7CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEZ1bmNSZWZUYWJsZTo6b2Zm
c2V0T2ZJbnN0YW5jZXMoKSwgQjM6OldpZHRoNjQpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
QXJnOjppc1ZhbGlkQWRkckZvcm0oRnVuY1JlZlRhYmxlOjpvZmZzZXRPZkxlbmd0aCgpLCBCMzo6
V2lkdGg2NCkpOwogCi0gICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoaW5zdGFuY2VWYWx1
ZSgpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZSgpKSwgY2FsbGFibGVGdW5jdGlvbkJ1ZmZlckxl
bmd0aCk7CisgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoaW5zdGFuY2VWYWx1ZSgpLCBJ
bnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZVB0cihtX251bUltcG9ydEZ1bmN0aW9ucywgdGFibGVJbmRl
eCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKTsKICAgICAgICAgYXBwZW5kKE1vdmUs
IEFyZzo6YWRkcihjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoLCBGdW5jUmVmVGFibGU6Om9m
ZnNldE9mRnVuY3Rpb25zKCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyKTsKICAgICAgICAgYXBw
ZW5kKE1vdmUsIEFyZzo6YWRkcihjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoLCBGdW5jUmVm
VGFibGU6Om9mZnNldE9mSW5zdGFuY2VzKCkpLCBpbnN0YW5jZXNCdWZmZXIpOwogICAgICAgICBh
cHBlbmQoTW92ZTMyLCBBcmc6OmFkZHIoY2FsbGFibGVGdW5jdGlvbkJ1ZmZlckxlbmd0aCwgVGFi
bGU6Om9mZnNldE9mTGVuZ3RoKCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRl
eCA3NzYwOTc0ODQzZS4uMWViMjQ2NTJhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTE5MCw4ICsxOTAsOCBAQCBwdWJsaWM6
CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmVmRnVuYyh1aW50MzJf
dCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKICAgICAvLyBUYWJsZXMKLSAgICBQ
YXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZUdldChFeHByZXNzaW9uVHlw
ZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAgIFBhcnRpYWxSZXN1bHQgV0FS
Tl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlU2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVz
c2lvblR5cGUmIHZhbHVlKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRUYWJsZUdldCh1bnNpZ25lZCwgRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJs
ZVNldCh1bnNpZ25lZCwgRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgdmFs
dWUpOwogCiAgICAgLy8gTG9jYWxzCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gZ2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwpAQCAt
MjMwLDcgKzIzMCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbGxzCiAgICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1aW50MzJfdCBjYWxsZWVJbmRleCwgY29uc3Qg
U2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCk7Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbElu
ZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUm
LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsK
ICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRVbnJlYWNoYWJsZSgpOwog
CiAgICAgdm9pZCBkdW1wKGNvbnN0IFZlY3RvcjxDb250cm9sRW50cnk+JiBjb250cm9sU3RhY2ss
IGNvbnN0IEV4cHJlc3Npb25MaXN0KiBleHByZXNzaW9uU3RhY2spOwpAQCAtMjkyLDYgKzI5Miw3
IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdWludDMyX3QgbV9tYXhOdW1KU0NhbGxBcmd1bWVu
dHMgeyAwIH07CisgICAgdW5zaWduZWQgbV9udW1JbXBvcnRGdW5jdGlvbnM7CiB9OwogCiAvLyBN
ZW1vcnkgYWNjZXNzZXMgaW4gV2ViQXNzZW1ibHkgaGF2ZSB1bnNpZ25lZCAzMi1iaXQgb2Zmc2V0
cywgd2hlcmVhcyB0aGV5IGhhdmUgc2lnbmVkIDMyLWJpdCBvZmZzZXRzIGluIEIzLgpAQCAtMzQz
LDYgKzM0NCw3IEBAIEIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5m
b3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYgcHJvY2VkdXJlCiAgICAgLCBtX3Byb2MocHJvY2Vk
dXJlKQogICAgICwgbV91bmxpbmtlZFdhc21Ub1dhc21DYWxscyh1bmxpbmtlZFdhc21Ub1dhc21D
YWxscykKICAgICAsIG1fY29uc3RhbnRJbnNlcnRpb25WYWx1ZXMobV9wcm9jKQorICAgICwgbV9u
dW1JbXBvcnRGdW5jdGlvbnMoaW5mby5pbXBvcnRGdW5jdGlvbkNvdW50KCkpCiB7CiAgICAgbV9j
dXJyZW50QmxvY2sgPSBtX3Byb2MuYWRkQmxvY2soKTsKIApAQCAtNTY2LDEyICs1NjgsMTIgQEAg
YXV0byBCM0lSR2VuZXJhdG9yOjphZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUmIHZhbHVlLCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KQogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gQjNJUkdl
bmVyYXRvcjo6YWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CithdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxl
R2V0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRo
aXMgaW5saW5lIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2
Pi4KICAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1f
cHJvYywgdG9CM1R5cGUoQW55cmVmKSwgb3JpZ2luKCksCiAgICAgICAgIG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9u
UHRyPHZvaWQqPigmZ2V0V2FzbVRhYmxlRWxlbWVudCwgQjNDQ2FsbFB0clRhZykpLAotICAgICAg
ICBpbnN0YW5jZVZhbHVlKCksIGluZGV4KTsKKyAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFi
bGVJbmRleCksIGluZGV4KTsKIAogICAgIHsKICAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdp
bigpLApAQCAtNTg1LDEyICs1ODcsMTIgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZUdl
dChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0KICAgICBy
ZXR1cm4geyB9OwogfQogCi1hdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlU2V0KEV4cHJlc3Np
b25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKSAtPiBQYXJ0aWFsUmVzdWx0Cith
dXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlU2V0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJl
c3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKSAtPiBQYXJ0aWFsUmVzdWx0
CiB7CiAgICAgLy8gRklYTUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1MDY+LgogICAgIGF1dG8gc2hvdWxkVGhyb3cgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgQjM6OkludDMyLCBvcmln
aW4oKSwKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPiht
X3Byb2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KCZzZXRXYXNtVGFibGVFbGVt
ZW50LCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgIGluc3RhbmNlVmFsdWUoKSwgaW5kZXgsIHZh
bHVlKTsKKyAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFibGVJbmRleCksIGluZGV4LCB2YWx1
ZSk7CiAKICAgICB7CiAgICAgICAgIENoZWNrVmFsdWUqIGNoZWNrID0gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBvcmlnaW4oKSwKQEAgLTEyOTgs
NyArMTMwMCw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlv
bkluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwKICAgICByZXR1cm4geyB9OwogfQog
Ci1hdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmIHNp
Z25hdHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJl
Y3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3Rv
cjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRp
YWxSZXN1bHQKIHsKICAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVJbmRleCA9IGFyZ3MudGFrZUxh
c3QoKTsKICAgICBBU1NFUlQoc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSA9PSBhcmdzLnNpemUo
KSk7CkBAIC0xMzE1LDcgKzEzMTcsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRp
cmVjdChjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3NpbwogICAgIEV4
cHJlc3Npb25UeXBlIG1hc2s7CiAgICAgewogICAgICAgICBFeHByZXNzaW9uVHlwZSB0YWJsZSA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9p
bnRlclR5cGUoKSwgb3JpZ2luKCksCi0gICAgICAgICAgICBpbnN0YW5jZVZhbHVlKCksIHNhZmVD
YXN0PGludDMyX3Q+KEluc3RhbmNlOjpvZmZzZXRPZlRhYmxlKCkpKTsKKyAgICAgICAgICAgIGlu
c3RhbmNlVmFsdWUoKSwgc2FmZUNhc3Q8aW50MzJfdD4oSW5zdGFuY2U6Om9mZnNldE9mVGFibGVQ
dHIobV9udW1JbXBvcnRGdW5jdGlvbnMsIHRhYmxlSW5kZXgpKSk7CiAgICAgICAgIGNhbGxhYmxl
RnVuY3Rpb25CdWZmZXIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPiht
X3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAogICAgICAgICAgICAgdGFibGUs
IHNhZmVDYXN0PGludDMyX3Q+KEZ1bmNSZWZUYWJsZTo6b2Zmc2V0T2ZGdW5jdGlvbnMoKSkpOwog
ICAgICAgICBpbnN0YW5jZXNCdWZmZXIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCmluZGV4IDdjMDM0NDE3YTEzLi40ZGIyOGE0ZTJi
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaApAQCAtMjEzLDEwICsy
MTMsMTIgQEAgc3RydWN0IFNlZ21lbnQgewogfTsKIAogc3RydWN0IEVsZW1lbnQgewotICAgIEVs
ZW1lbnQoSTMySW5pdEV4cHIgb2Zmc2V0KQotICAgICAgICA6IG9mZnNldChvZmZzZXQpCisgICAg
RWxlbWVudCh1aW50MzJfdCB0YWJsZUluZGV4LCBJMzJJbml0RXhwciBvZmZzZXQpCisgICAgICAg
IDogdGFibGVJbmRleCh0YWJsZUluZGV4KQorICAgICAgICAsIG9mZnNldChvZmZzZXQpCiAgICAg
eyB9CiAKKyAgICB1aW50MzJfdCB0YWJsZUluZGV4OwogICAgIEkzMkluaXRFeHByIG9mZnNldDsK
ICAgICBWZWN0b3I8dWludDMyX3Q+IGZ1bmN0aW9uSW5kaWNlczsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCmluZGV4IDU5ZWVlMjYyMmRl
Li43M2ExYTdjZGE3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1
bmN0aW9uUGFyc2VyLmgKQEAgLTI4MywxOSArMjgzLDIzIEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8
Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbigpIC0+IFBhcnRpYWxSZXN1bHQKIAogICAgIGNhc2Ug
VGFibGVHZXQ6IHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2Vi
QXNzZW1ibHlSZWZlcmVuY2VzKCksICJyZWZlcmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOworICAg
ICAgICB1bnNpZ25lZCB0YWJsZUluZGV4OworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFw
YXJzZVZhclVJbnQzMih0YWJsZUluZGV4KSwgImNhbid0IHBhcnNlIHRhYmxlIGluZGV4Iik7CiAg
ICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdCwgaW5kZXg7CiAgICAgICAgIFdBU01fVFJZX1BP
UF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8oaW5kZXgsICJ0YWJsZS5nZXQiKTsKLSAgICAgICAgV0FT
TV9UUllfQUREX1RPX0NPTlRFWFQoYWRkVGFibGVHZXQoaW5kZXgsIHJlc3VsdCkpOworICAgICAg
ICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRUYWJsZUdldCh0YWJsZUluZGV4LCBpbmRleCwg
cmVzdWx0KSk7CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFwcGVuZChyZXN1bHQpOwogICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIGNhc2UgVGFibGVTZXQ6IHsKICAgICAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzKCks
ICJyZWZlcmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAgICB1bnNpZ25lZCB0YWJsZUlu
ZGV4OworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMih0YWJsZUlu
ZGV4KSwgImNhbid0IHBhcnNlIHRhYmxlIGluZGV4Iik7CiAgICAgICAgIEV4cHJlc3Npb25UeXBl
IHZhbCwgaW5kZXg7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8o
dmFsLCAidGFibGUuc2V0Iik7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNL
X0lOVE8oaW5kZXgsICJ0YWJsZS5zZXQiKTsKLSAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRF
WFQoYWRkVGFibGVTZXQoaW5kZXgsIHZhbCkpOworICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09O
VEVYVChhZGRUYWJsZVNldCh0YWJsZUluZGV4LCBpbmRleCwgdmFsKSk7CiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgfQogCkBAIC0zOTYsMTMgKzQwMCwxMyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2Vy
PENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAKICAgICBjYXNl
IENhbGxJbmRpcmVjdDogewogICAgICAgICB1aW50MzJfdCBzaWduYXR1cmVJbmRleDsKLSAgICAg
ICAgdWludDhfdCByZXNlcnZlZDsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighbV9pbmZv
LnRhYmxlSW5mb3JtYXRpb24sICJjYWxsX2luZGlyZWN0IGlzIG9ubHkgdmFsaWQgd2hlbiBhIHRh
YmxlIGlzIGRlZmluZWQgb3IgaW1wb3J0ZWQiKTsKKyAgICAgICAgdWludDhfdCB0YWJsZUluZGV4
OworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFtX2luZm8udGFibGVDb3VudCgpLCAiY2Fs
bF9pbmRpcmVjdCBpcyBvbmx5IHZhbGlkIHdoZW4gYSB0YWJsZSBpcyBkZWZpbmVkIG9yIGltcG9y
dGVkIik7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHNpZ25h
dHVyZUluZGV4KSwgImNhbid0IGdldCBjYWxsX2luZGlyZWN0J3Mgc2lnbmF0dXJlIGluZGV4Iik7
Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDEocmVzZXJ2ZWQpLCAi
Y2FuJ3QgZ2V0IGNhbGxfaW5kaXJlY3QncyByZXNlcnZlZCBieXRlIik7Ci0gICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYocmVzZXJ2ZWQsICJjYWxsX2luZGlyZWN0J3MgJ3Jlc2VydmVkJyB2YXJ1
aW50MSBtdXN0IGJlIDB4MCIpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZh
clVJbnQxKHRhYmxlSW5kZXgpLCAiY2FuJ3QgZ2V0IGNhbGxfaW5kaXJlY3QncyB0YWJsZSBpbmRl
eCIpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRhYmxlSW5kZXggPj0gbV9pbmZvLnRh
YmxlQ291bnQoKSwgImNhbGxfaW5kaXJlY3QncyB0YWJsZSBpbmRleCAiLCB0YWJsZUluZGV4LCAi
IGludmFsaWQsIGxpbWl0IGlzICIsIG1faW5mby50YWJsZUNvdW50KCkpOwogICAgICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKG1faW5mby51c2VkU2lnbmF0dXJlcy5zaXplKCkgPD0gc2lnbmF0dXJl
SW5kZXgsICJjYWxsX2luZGlyZWN0J3Mgc2lnbmF0dXJlIGluZGV4ICIsIHNpZ25hdHVyZUluZGV4
LCAiIGV4Y2VlZHMga25vd24gc2lnbmF0dXJlcyAiLCBtX2luZm8udXNlZFNpZ25hdHVyZXMuc2l6
ZSgpKTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8udGFibGVJbmZvcm1hdGlv
bi50eXBlKCkgIT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgImNhbGxfaW5kaXJlY3QgaXMg
b25seSB2YWxpZCB3aGVuIGEgdGFibGUgaGFzIHR5cGUgYW55ZnVuYyIpOworICAgICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKG1faW5mby50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpICE9IFRhYmxl
RWxlbWVudFR5cGU6OkZ1bmNyZWYsICJjYWxsX2luZGlyZWN0IGlzIG9ubHkgdmFsaWQgd2hlbiBh
IHRhYmxlIGhhcyB0eXBlIGFueWZ1bmMiKTsKIAogICAgICAgICBjb25zdCBTaWduYXR1cmUmIGNh
bGxlZVNpZ25hdHVyZSA9IG1faW5mby51c2VkU2lnbmF0dXJlc1tzaWduYXR1cmVJbmRleF0uZ2V0
KCk7CiAgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gY2FsbGVlU2lnbmF0dXJlLmFyZ3Vt
ZW50Q291bnQoKSArIDE7IC8vIEFkZCB0aGUgY2FsbGVlJ3MgaW5kZXguCkBAIC00MTYsNyArNDIw
LDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKCkgLT4g
UGFydGlhbFJlc3VsdAogICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5zaHJpbmsoZmlyc3RBcmd1
bWVudEluZGV4KTsKIAogICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQgPSBDb250ZXh0Ojpl
bXB0eUV4cHJlc3Npb24oKTsKLSAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkQ2Fs
bEluZGlyZWN0KGNhbGxlZVNpZ25hdHVyZSwgYXJncywgcmVzdWx0KSk7CisgICAgICAgIFdBU01f
VFJZX0FERF9UT19DT05URVhUKGFkZENhbGxJbmRpcmVjdCh0YWJsZUluZGV4LCBjYWxsZWVTaWdu
YXR1cmUsIGFyZ3MsIHJlc3VsdCkpOwogCiAgICAgICAgIGlmIChyZXN1bHQgIT0gQ29udGV4dDo6
ZW1wdHlFeHByZXNzaW9uKCkpCiAgICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5hcHBlbmQo
cmVzdWx0KTsKQEAgLTY4NSw3ICs2ODksMTEgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0
Pjo6cGFyc2VVbnJlYWNoYWJsZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgfQog
CiAgICAgY2FzZSBUYWJsZUdldDoKLSAgICBjYXNlIFRhYmxlU2V0OgorICAgIGNhc2UgVGFibGVT
ZXQ6IHsKKyAgICAgICAgdW5zaWduZWQgdGFibGVJbmRleDsKKyAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighcGFyc2VWYXJVSW50MzIodGFibGVJbmRleCksICJjYW4ndCBwYXJzZSB0YWJsZSBp
bmRleCIpOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICB9CiAgICAgY2FzZSBSZWZJc051bGw6
CiAgICAgY2FzZSBSZWZOdWxsOiB7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlv
bnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90IGVuYWJs
ZWQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5j
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCmluZGV4
IDY0MWJjZmU0NmQ5Li4zNjc3ZWY2ZDE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtSW5zdGFuY2UuY3BwCkBAIC02MSwxOCArNjEsMTkgQEAgSW5zdGFuY2U6Okluc3RhbmNl
KENvbnRleHQqIGNvbnRleHQsIFJlZjxNb2R1bGU+JiYgbW9kdWxlLCBFbnRyeUZyYW1lKiogcG9p
bnRlclQKICAgICAgICAgaWYgKGlzU3VidHlwZShtX21vZHVsZS5nZXQoKS5tb2R1bGVJbmZvcm1h
dGlvbigpLmdsb2JhbHNbaV0udHlwZSwgQW55cmVmKSkKICAgICAgICAgICAgIG1fZ2xvYmFsc1Rv
TWFyay5zZXQoaSk7CiAgICAgfQorICAgIG1lbXNldChiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMp
ICsgb2Zmc2V0T2ZUYWJsZVB0cihtX251bUltcG9ydEZ1bmN0aW9ucywgMCksIDAsIG1fbW9kdWxl
LT5tb2R1bGVJbmZvcm1hdGlvbigpLnRhYmxlQ291bnQoKSAqIHNpemVvZihUYWJsZSopKTsKIH0K
IAogUmVmPEluc3RhbmNlPiBJbnN0YW5jZTo6Y3JlYXRlKENvbnRleHQqIGNvbnRleHQsIFJlZjxN
b2R1bGU+JiYgbW9kdWxlLCBFbnRyeUZyYW1lKiogcG9pbnRlclRvVG9wRW50cnlGcmFtZSwgdm9p
ZCoqIHBvaW50ZXJUb0FjdHVhbFN0YWNrTGltaXQsIFN0b3JlVG9wQ2FsbEZyYW1lQ2FsbGJhY2sm
JiBzdG9yZVRvcENhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVs
bCwgZmFzdE1hbGxvYyhhbGxvY2F0aW9uU2l6ZShtb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCku
aW1wb3J0RnVuY3Rpb25Db3VudCgpKSkpIEluc3RhbmNlKGNvbnRleHQsIFdURk1vdmUobW9kdWxl
KSwgcG9pbnRlclRvVG9wRW50cnlGcmFtZSwgcG9pbnRlclRvQWN0dWFsU3RhY2tMaW1pdCwgV1RG
TW92ZShzdG9yZVRvcENhbGxGcmFtZSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90
TnVsbCwgZmFzdE1hbGxvYyhhbGxvY2F0aW9uU2l6ZShtb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9u
KCkuaW1wb3J0RnVuY3Rpb25Db3VudCgpLCBtb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkudGFi
bGVDb3VudCgpKSkpIEluc3RhbmNlKGNvbnRleHQsIFdURk1vdmUobW9kdWxlKSwgcG9pbnRlclRv
VG9wRW50cnlGcmFtZSwgcG9pbnRlclRvQWN0dWFsU3RhY2tMaW1pdCwgV1RGTW92ZShzdG9yZVRv
cENhbGxGcmFtZSkpKTsKIH0KIAogSW5zdGFuY2U6On5JbnN0YW5jZSgpIHsgfQogCiBzaXplX3Qg
SW5zdGFuY2U6OmV4dHJhTWVtb3J5QWxsb2NhdGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZ2xv
YmFsTWVtb3J5Qnl0ZVNpemUobV9tb2R1bGUuZ2V0KCkpICsgYWxsb2NhdGlvblNpemUobV9udW1J
bXBvcnRGdW5jdGlvbnMpOworICAgIHJldHVybiBnbG9iYWxNZW1vcnlCeXRlU2l6ZShtX21vZHVs
ZS5nZXQoKSkgKyBhbGxvY2F0aW9uU2l6ZShtX251bUltcG9ydEZ1bmN0aW9ucywgbV9tb2R1bGUt
Pm1vZHVsZUluZm9ybWF0aW9uKCkudGFibGVDb3VudCgpKTsKIH0KIAogdm9pZCBJbnN0YW5jZTo6
c2V0R2xvYmFsKHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCkBAIC05NSw0MiArOTYsNTggQEAg
dm9pZCBJbnN0YW5jZTo6c2V0RnVuY3Rpb25XcmFwcGVyKHVuc2lnbmVkIGksIEpTVmFsdWUgdmFs
dWUpCiAgICAgQVNTRVJUKGdldEZ1bmN0aW9uV3JhcHBlcihpKSA9PSB2YWx1ZSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIGdldFdhc21UYWJsZUVsZW1lbnQoSW5zdGFuY2UqIGluc3RhbmNlLCBpbnQz
Ml90IHNpZ25lZEluZGV4KQorVGFibGUqIEluc3RhbmNlOjp0YWJsZSh1bnNpZ25lZCBpKQogewor
ICAgIFJFTEVBU0VfQVNTRVJUKGkgPCBtX21vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS50YWJs
ZUNvdW50KCkpOworICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFRhYmxlKio+KGJpdHdpc2VfY2Fz
dDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZlRhYmxlUHRyKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCBp
KSk7Cit9CisKK3ZvaWQgSW5zdGFuY2U6OnNldFRhYmxlKHVuc2lnbmVkIGksIFJlZjxUYWJsZT4m
JiB0YWJsZSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChpIDwgbV9tb2R1bGUtPm1vZHVsZUluZm9y
bWF0aW9uKCkudGFibGVDb3VudCgpKTsKKyAgICBpZiAoYXV0byogdCA9IHRoaXMtPnRhYmxlKGkp
KQorICAgICAgICB0LT5kZXJlZigpOworICAgICpiaXR3aXNlX2Nhc3Q8VGFibGUqKj4oYml0d2lz
ZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mVGFibGVQdHIobV9udW1JbXBvcnRGdW5jdGlv
bnMsIGkpKSA9ICZ0YWJsZS5sZWFrUmVmKCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGdldFdhc21U
YWJsZUVsZW1lbnQoSW5zdGFuY2UqIGluc3RhbmNlLCB1bnNpZ25lZCB0YWJsZUluZGV4LCBpbnQz
Ml90IHNpZ25lZEluZGV4KQoreworICAgIEFTU0VSVCh0YWJsZUluZGV4IDwgaW5zdGFuY2UtPm1v
ZHVsZSgpLm1vZHVsZUluZm9ybWF0aW9uKCkudGFibGVDb3VudCgpKTsKICAgICBpZiAoc2lnbmVk
SW5kZXggPCAwKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHVpbnQzMl90IGluZGV4ID0gc2ln
bmVkSW5kZXg7Ci0gICAgaWYgKGluZGV4ID49IGluc3RhbmNlLT50YWJsZSgpLT5sZW5ndGgoKSkK
KyAgICBpZiAoaW5kZXggPj0gaW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5sZW5ndGgoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGluc3RhbmNl
LT50YWJsZSgpLT5nZXQoaW5kZXgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGluc3Rh
bmNlLT50YWJsZSh0YWJsZUluZGV4KS0+Z2V0KGluZGV4KSk7CiB9CiAKLWJvb2wgc2V0V2FzbVRh
YmxlRWxlbWVudChJbnN0YW5jZSogaW5zdGFuY2UsIGludDMyX3Qgc2lnbmVkSW5kZXgsIEVuY29k
ZWRKU1ZhbHVlIGVuY1ZhbHVlKQorYm9vbCBzZXRXYXNtVGFibGVFbGVtZW50KEluc3RhbmNlKiBp
bnN0YW5jZSwgdW5zaWduZWQgdGFibGVJbmRleCwgaW50MzJfdCBzaWduZWRJbmRleCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jVmFsdWUpCiB7CisgICAgQVNTRVJUKHRhYmxlSW5kZXggPCBpbnN0YW5jZS0+
bW9kdWxlKCkubW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50KCkpOwogICAgIGlmIChzaWdu
ZWRJbmRleCA8IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHVpbnQzMl90IGluZGV4
ID0gc2lnbmVkSW5kZXg7Ci0gICAgaWYgKGluZGV4ID49IGluc3RhbmNlLT50YWJsZSgpLT5sZW5n
dGgoKSkKKyAgICBpZiAoaW5kZXggPj0gaW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5sZW5n
dGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNWYWx1ZSk7Ci0gICAgaWYgKGluc3RhbmNlLT50YWJsZSgpLT50eXBlKCkg
PT0gV2FzbTo6VGFibGVFbGVtZW50VHlwZTo6QW55cmVmKQotICAgICAgICBpbnN0YW5jZS0+dGFi
bGUoKS0+c2V0KGluZGV4LCB2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoaW5zdGFuY2UtPnRhYmxlKCkt
PnR5cGUoKSA9PSBXYXNtOjpUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmKSB7CisgICAgaWYgKGlu
c3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+dHlwZSgpID09IFdhc206OlRhYmxlRWxlbWVudFR5
cGU6OkFueXJlZikKKyAgICAgICAgaW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5zZXQoaW5k
ZXgsIHZhbHVlKTsKKyAgICBlbHNlIGlmIChpbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPnR5
cGUoKSA9PSBXYXNtOjpUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmKSB7CiAgICAgICAgIFdlYkFz
c2VtYmx5RnVuY3Rpb24qIHdhc21GdW5jdGlvbjsKICAgICAgICAgV2ViQXNzZW1ibHlXcmFwcGVy
RnVuY3Rpb24qIHdhc21XcmFwcGVyRnVuY3Rpb247CiAKICAgICAgICAgaWYgKGlzV2ViQXNzZW1i
bHlIb3N0RnVuY3Rpb24oKmluc3RhbmNlLT5vd25lcjxKU09iamVjdD4oKS0+dm0oKSwgdmFsdWUs
IHdhc21GdW5jdGlvbiwgd2FzbVdyYXBwZXJGdW5jdGlvbikpIHsKICAgICAgICAgICAgIEFTU0VS
VCghIXdhc21GdW5jdGlvbiB8fCAhIXdhc21XcmFwcGVyRnVuY3Rpb24pOwogICAgICAgICAgICAg
aWYgKHdhc21GdW5jdGlvbikKLSAgICAgICAgICAgICAgICBpbnN0YW5jZS0+dGFibGUoKS0+YXNG
dW5jcmVmVGFibGUoKS0+c2V0RnVuY3Rpb24oaW5kZXgsIGpzQ2FzdDxKU09iamVjdCo+KHZhbHVl
KSwgd2FzbUZ1bmN0aW9uLT5pbXBvcnRhYmxlRnVuY3Rpb24oKSwgJndhc21GdW5jdGlvbi0+aW5z
dGFuY2UoKS0+aW5zdGFuY2UoKSk7CisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPnRhYmxlKHRh
YmxlSW5kZXgpLT5hc0Z1bmNyZWZUYWJsZSgpLT5zZXRGdW5jdGlvbihpbmRleCwganNDYXN0PEpT
T2JqZWN0Kj4odmFsdWUpLCB3YXNtRnVuY3Rpb24tPmltcG9ydGFibGVGdW5jdGlvbigpLCAmd2Fz
bUZ1bmN0aW9uLT5pbnN0YW5jZSgpLT5pbnN0YW5jZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBpbnN0YW5jZS0+dGFibGUoKS0+YXNGdW5jcmVmVGFibGUoKS0+c2V0RnVu
Y3Rpb24oaW5kZXgsIGpzQ2FzdDxKU09iamVjdCo+KHZhbHVlKSwgd2FzbVdyYXBwZXJGdW5jdGlv
bi0+aW1wb3J0YWJsZUZ1bmN0aW9uKCksICZ3YXNtV3JhcHBlckZ1bmN0aW9uLT5pbnN0YW5jZSgp
LT5pbnN0YW5jZSgpKTsKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRl
eCktPmFzRnVuY3JlZlRhYmxlKCktPnNldEZ1bmN0aW9uKGluZGV4LCBqc0Nhc3Q8SlNPYmplY3Qq
Pih2YWx1ZSksIHdhc21XcmFwcGVyRnVuY3Rpb24tPmltcG9ydGFibGVGdW5jdGlvbigpLCAmd2Fz
bVdyYXBwZXJGdW5jdGlvbi0+aW5zdGFuY2UoKS0+aW5zdGFuY2UoKSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAodmFsdWUuaXNOdWxsKCkpCi0gICAgICAgICAgICBpbnN0YW5jZS0+dGFibGUoKS0+Y2xl
YXIoaW5kZXgpOworICAgICAgICAgICAgaW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5jbGVh
cihpbmRleCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaApp
bmRleCAyODJmMTYzOWVhNy4uYWExODQ0NDFmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21JbnN0YW5jZS5oCkBAIC00MSw4ICs0MSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgV2FzbSB7CiBzdHJ1Y3QgQ29udGV4dDsKIGNsYXNzIEluc3RhbmNlOwogCi1FbmNvZGVk
SlNWYWx1ZSBnZXRXYXNtVGFibGVFbGVtZW50KEluc3RhbmNlKiwgaW50MzJfdCk7Ci1ib29sIHNl
dFdhc21UYWJsZUVsZW1lbnQoSW5zdGFuY2UqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSBlbmNW
YWx1ZSk7CitFbmNvZGVkSlNWYWx1ZSBnZXRXYXNtVGFibGVFbGVtZW50KEluc3RhbmNlKiwgdW5z
aWduZWQsIGludDMyX3QpOworYm9vbCBzZXRXYXNtVGFibGVFbGVtZW50KEluc3RhbmNlKiwgdW5z
aWduZWQsIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlIGVuY1ZhbHVlKTsKIEVuY29kZWRKU1ZhbHVl
IGRvV2FzbVJlZkZ1bmMoSW5zdGFuY2UqLCB1aW50MzJfdCk7CiAKIGNsYXNzIEluc3RhbmNlIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwgcHVibGljIENhbk1ha2VXZWFr
UHRyPEluc3RhbmNlPiB7CkBAIC02OSw3ICs2OSw4IEBAIHB1YmxpYzoKICAgICBNb2R1bGUmIG1v
ZHVsZSgpIHsgcmV0dXJuIG1fbW9kdWxlLmdldCgpOyB9CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2soKSB7IHJldHVybiBtX2NvZGVCbG9jay5nZXQoKTsgfQogICAgIE1lbW9yeSogbWVtb3J5KCkg
eyByZXR1cm4gbV9tZW1vcnkuZ2V0KCk7IH0KLSAgICBUYWJsZSogdGFibGUoKSB7IHJldHVybiBt
X3RhYmxlLmdldCgpOyB9CisgICAgVGFibGUqIHRhYmxlKHVuc2lnbmVkKTsKKyAgICB2b2lkIHNl
dFRhYmxlKHVuc2lnbmVkLCBSZWY8VGFibGU+JiYpOwogCiAgICAgdm9pZCogY2FjaGVkTWVtb3J5
KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRNZW1vcnkuZ2V0TWF5QmVOdWxsKGNhY2hlZE1lbW9y
eVNpemUoKSk7IH0KICAgICBzaXplX3QgY2FjaGVkTWVtb3J5U2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FjaGVkTWVtb3J5U2l6ZTsgfQpAQCAtODcsNyArODgsNiBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBtX2NhY2hlZE1lbW9yeVNpemUgPSBtZW1vcnkoKS0+c2l6ZSgpOwogICAgICAgICB9CiAg
ICAgfQotICAgIHZvaWQgc2V0VGFibGUoUmVmPFRhYmxlPiYmIHRhYmxlKSB7IG1fdGFibGUgPSBX
VEZNb3ZlKHRhYmxlKTsgfQogCiAgICAgaW50MzJfdCBsb2FkSTMyR2xvYmFsKHVuc2lnbmVkIGkp
IGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFscy5nZXQoKVtpXS5wcmltaXRpdmU7IH0KICAgICBpbnQ2
NF90IGxvYWRJNjRHbG9iYWwodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxzLmdl
dCgpW2ldLnByaW1pdGl2ZTsgfQpAQCAtMTAxLDcgKzEwMSw2IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNZW1vcnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
SW5zdGFuY2UsIG1fbWVtb3J5KTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZHbG9i
YWxzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX2dsb2JhbHMpOyB9Ci0g
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlRhYmxlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEluc3RhbmNlLCBtX3RhYmxlKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZD
YWNoZWRNZW1vcnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fY2FjaGVk
TWVtb3J5KTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXpl
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX2NhY2hlZE1lbW9yeVNpemUp
OyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlBvaW50ZXJUb1RvcEVudHJ5RnJhbWUo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fcG9pbnRlclRvVG9wRW50cnlG
cmFtZSk7IH0KQEAgLTE0MCw2ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHNpemVfdCBv
ZmZzZXRPZkltcG9ydEZ1bmN0aW9uKHNpemVfdCBpbXBvcnRGdW5jdGlvbk51bSkgeyByZXR1cm4g
b2Zmc2V0T2ZUYWlsKCkgKyBpbXBvcnRGdW5jdGlvbk51bSAqIHNpemVvZihJbXBvcnRGdW5jdGlv
bkluZm8pICsgT0JKRUNUX09GRlNFVE9GKEltcG9ydEZ1bmN0aW9uSW5mbywgaW1wb3J0RnVuY3Rp
b24pOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCogaW1wb3J0RnVuY3Rpb24odW5zaWdu
ZWQgaW1wb3J0RnVuY3Rpb25OdW0pIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KCZpbXBv
cnRGdW5jdGlvbkluZm8oaW1wb3J0RnVuY3Rpb25OdW0pLT5pbXBvcnRGdW5jdGlvbik7IH0KIAor
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEltcG9ydEZ1bmN0aW9uSW5mbykgPT0gV1RGOjpyb3Vu
ZFVwVG9NdWx0aXBsZU9mPHNpemVvZih1aW50NjRfdCk+KHNpemVvZihJbXBvcnRGdW5jdGlvbklu
Zm8pKSwgIldlIHJlbHkgb24gdGhpcyBmb3IgdGhlIGFsaWdubWVudCB0byBiZSBjb3JyZWN0Iik7
CisgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZlRhYmxlUHRyKHVuc2lnbmVkIG51bUltcG9ydEZ1
bmN0aW9ucywgdW5zaWduZWQgaSkgeyByZXR1cm4gb2Zmc2V0T2ZUYWlsKCkgKyBzaXplb2YoSW1w
b3J0RnVuY3Rpb25JbmZvKSAqIG51bUltcG9ydEZ1bmN0aW9ucyArIHNpemVvZihUYWJsZSopICog
aTsgfQorCiAgICAgdm9pZCBzdG9yZVRvcENhbGxGcmFtZSh2b2lkKiBjYWxsRnJhbWUpCiAgICAg
ewogICAgICAgICBtX3N0b3JlVG9wQ2FsbEZyYW1lKGNhbGxGcmFtZSk7CkBAIC0xNDgsOSArMTUw
LDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbnN0YW5jZShDb250ZXh0KiwgUmVmPE1vZHVs
ZT4mJiwgRW50cnlGcmFtZSoqLCB2b2lkKiosIFN0b3JlVG9wQ2FsbEZyYW1lQ2FsbGJhY2smJik7
CiAgICAgCi0gICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4g
bnVtSW1wb3J0RnVuY3Rpb25zKQorICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hl
Y2tlZDxzaXplX3Q+IG51bUltcG9ydEZ1bmN0aW9ucywgQ2hlY2tlZDxzaXplX3Q+IG51bVRhYmxl
cykKICAgICB7Ci0gICAgICAgIHJldHVybiAob2Zmc2V0T2ZUYWlsKCkgKyBzaXplb2YoSW1wb3J0
RnVuY3Rpb25JbmZvKSAqIG51bUltcG9ydEZ1bmN0aW9ucykudW5zYWZlR2V0KCk7CisgICAgICAg
IHJldHVybiAob2Zmc2V0T2ZUYWlsKCkgKyBzaXplb2YoSW1wb3J0RnVuY3Rpb25JbmZvKSAqIG51
bUltcG9ydEZ1bmN0aW9ucyArIHNpemVvZihUYWJsZSopICogbnVtVGFibGVzKS51bnNhZmVHZXQo
KTsKICAgICB9CiAgICAgdm9pZCogbV9vd25lciB7IG51bGxwdHIgfTsgLy8gSW4gYSBKUyBlbWJl
ZGRpbmcsIHRoaXMgaXMgYSBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqLgogICAgIENvbnRleHQqIG1f
Y29udGV4dCB7IG51bGxwdHIgfTsKQEAgLTE1OSw3ICsxNjEsNiBAQCBwcml2YXRlOgogICAgIFJl
ZjxNb2R1bGU+IG1fbW9kdWxlOwogICAgIFJlZlB0cjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwog
ICAgIFJlZlB0cjxNZW1vcnk+IG1fbWVtb3J5OwotICAgIFJlZlB0cjxUYWJsZT4gbV90YWJsZTsK
IAogICAgIHVuaW9uIEdsb2JhbFZhbHVlIHsKICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+
IGFueXJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1
bGVJbmZvcm1hdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUlu
Zm9ybWF0aW9uLmgKaW5kZXggODhmNjZjYjYzOTEuLjI2OGY4OGJiMTBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaApAQCAtNjUs
NyArNjUsNyBAQCBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8TW9kdWxlSW5mb3JtYXRpb24+IHsKICAgICAvLyBDdXJyZW50bHksIG91ciB3YXNt
IGltcGxlbWVudGF0aW9uIGFsbG93cyBvbmx5IG9uZSBtZW1vcnkgYW5kIHRhYmxlLgogICAgIC8v
IElmIHdlIG5lZWQgdG8gcmVtb3ZlIHRoaXMgbGltaXRhdGlvbiwgd2Ugd291bGQgaGF2ZSBNZW1v
cnlJbmZvcm1hdGlvbiBhbmQgVGFibGVJbmZvcm1hdGlvbiBpbiB0aGUgVmVjdG9ycy4KICAgICB1
aW50MzJfdCBtZW1vcnlDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1lbW9yeSA/IDEgOiAwOyB9Ci0g
ICAgdWludDMyX3QgdGFibGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHRhYmxlSW5mb3JtYXRpb24g
PyAxIDogMDsgfQorICAgIHVpbnQzMl90IHRhYmxlQ291bnQoKSBjb25zdCB7IHJldHVybiB0YWJs
ZXMuc2l6ZSgpOyB9CiAKICAgICBjb25zdCBCaXRWZWN0b3ImIHJlZmVyZW5jZWRGdW5jdGlvbnMo
KSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZWRGdW5jdGlvbnM7IH0KICAgICB2b2lkIGFkZFJl
ZmVyZW5jZWRGdW5jdGlvbih1bnNpZ25lZCBpbmRleCkgY29uc3QgeyBtX3JlZmVyZW5jZWRGdW5j
dGlvbnMuc2V0KGluZGV4KTsgfQpAQCAtODMsNyArODMsNyBAQCBzdHJ1Y3QgTW9kdWxlSW5mb3Jt
YXRpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TW9kdWxlSW5mb3JtYXRpb24+IHsK
ICAgICBPcHRpb25hbDx1aW50MzJfdD4gc3RhcnRGdW5jdGlvbkluZGV4U3BhY2U7CiAgICAgVmVj
dG9yPFNlZ21lbnQ6OlB0cj4gZGF0YTsKICAgICBWZWN0b3I8RWxlbWVudD4gZWxlbWVudHM7Ci0g
ICAgVGFibGVJbmZvcm1hdGlvbiB0YWJsZUluZm9ybWF0aW9uOworICAgIFZlY3RvcjxUYWJsZUlu
Zm9ybWF0aW9uPiB0YWJsZXM7CiAgICAgVmVjdG9yPEdsb2JhbD4gZ2xvYmFsczsKICAgICB1bnNp
Z25lZCBmaXJzdEludGVybmFsR2xvYmFsIHsgMCB9OwogICAgIFZlY3RvcjxDdXN0b21TZWN0aW9u
PiBjdXN0b21TZWN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TZWN0aW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
ZWN0aW9uUGFyc2VyLmNwcAppbmRleCAyNTRlODI2YTgwMy4uNDVjYjNkNWIxNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKQEAgLTEx
OSw2ICsxMTksNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW1wb3J0KCkgLT4gUGFydGlh
bFJlc3VsdAogICAgICAgICB9CiAgICAgICAgIGNhc2UgRXh0ZXJuYWxLaW5kOjpUYWJsZTogewog
ICAgICAgICAgICAgYm9vbCBpc0ltcG9ydCA9IHRydWU7CisgICAgICAgICAgICBraW5kSW5kZXgg
PSBtX2luZm8tPnRhYmxlcy5zaXplKCk7CiAgICAgICAgICAgICBQYXJ0aWFsUmVzdWx0IHJlc3Vs
dCA9IHBhcnNlVGFibGVIZWxwZXIoaXNJbXBvcnQpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KCFyZXN1bHQpKQogICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZNb3Zl
KHJlc3VsdC5lcnJvcigpKSk7CkBAIC0xOTMsOCArMTk0LDYgQEAgYXV0byBTZWN0aW9uUGFyc2Vy
OjpwYXJzZVJlc2l6YWJsZUxpbWl0cyh1aW50MzJfdCYgaW5pdGlhbCwgT3B0aW9uYWw8dWludDMy
X3Q+JgogCiBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlVGFibGVIZWxwZXIoYm9vbCBpc0ltcG9y
dCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYobV9pbmZvLT50
YWJsZUNvdW50KCkgPiAwLCAiQ2Fubm90IGhhdmUgbW9yZSB0aGFuIG9uZSBUYWJsZSBmb3Igbm93
Iik7Ci0KICAgICBpbnQ4X3QgdHlwZTsKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZUlu
dDcodHlwZSksICJjYW4ndCBwYXJzZSBUYWJsZSB0eXBlIik7CiAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRih0eXBlICE9IFdhc206OkFueWZ1bmMgJiYgdHlwZSAhPSBXYXNtOjpBbnlyZWYsICJUYWJs
ZSB0eXBlIHNob3VsZCBiZSBhbnlmdW5jIG9yIGFueXJlZiwgZ290ICIsIHR5cGUpOwpAQCAtMjA5
LDcgKzIwOCw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VUYWJsZUhlbHBlcihib29sIGlz
SW1wb3J0KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgQVNTRVJUKCFtYXhpbXVtIHx8ICptYXhpbXVt
ID49IGluaXRpYWwpOwogCiAgICAgVGFibGVFbGVtZW50VHlwZSB0YWJsZVR5cGUgPSB0eXBlID09
IFdhc206OkFueWZ1bmMgPyBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmIDogVGFibGVFbGVtZW50
VHlwZTo6QW55cmVmOwotICAgIG1faW5mby0+dGFibGVJbmZvcm1hdGlvbiA9IFRhYmxlSW5mb3Jt
YXRpb24oaW5pdGlhbCwgbWF4aW11bSwgaXNJbXBvcnQsIHRhYmxlVHlwZSk7CisgICAgbV9pbmZv
LT50YWJsZXMuYXBwZW5kKFRhYmxlSW5mb3JtYXRpb24oaW5pdGlhbCwgbWF4aW11bSwgaXNJbXBv
cnQsIHRhYmxlVHlwZSkpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTIxOCwxNSArMjE3LDEz
IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VUYWJsZSgpIC0+IFBhcnRpYWxSZXN1bHQKIHsK
ICAgICB1aW50MzJfdCBjb3VudDsKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJ
bnQzMihjb3VudCksICJjYW4ndCBnZXQgVGFibGUncyBjb3VudCIpOwotICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoY291bnQgPiAxLCAiVGFibGUgY291bnQgb2YgIiwgY291bnQsICIgaXMgaW52YWxp
ZCwgYXQgbW9zdCAxIGlzIGFsbG93ZWQgZm9yIG5vdyIpOwotCi0gICAgaWYgKCFjb3VudCkKLSAg
ICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGJvb2wgaXNJbXBvcnQgPSBmYWxzZTsKLSAgICBQYXJ0
aWFsUmVzdWx0IHJlc3VsdCA9IHBhcnNlVGFibGVIZWxwZXIoaXNJbXBvcnQpOwotICAgIGlmIChV
TkxJS0VMWSghcmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUo
cmVzdWx0LmVycm9yKCkpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkgeworICAgICAgICBib29sIGlzSW1wb3J0ID0gZmFsc2U7CisgICAgICAgIFBhcnRpYWxSZXN1
bHQgcmVzdWx0ID0gcGFyc2VUYWJsZUhlbHBlcihpc0ltcG9ydCk7CisgICAgICAgIGlmIChVTkxJ
S0VMWSghcmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZNb3Zl
KHJlc3VsdC5lcnJvcigpKSk7CisgICAgfQogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTM4NSw5
ICszODIsOSBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxS
ZXN1bHQKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoaW5kZXhD
b3VudCksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIGluZGV4IGNvdW50IGZvciBFbGVt
ZW50IHNlY3Rpb24iKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihpbmRleENvdW50ID09
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwgIkVsZW1lbnQgc2VjdGlvbidz
ICIsIGVsZW1lbnROdW0sICJ0aCBpbmRleCBjb3VudCBpcyB0b28gYmlnICIsIGluZGV4Q291bnQp
OwogCi0gICAgICAgIEFTU0VSVCghIW1faW5mby0+dGFibGVJbmZvcm1hdGlvbik7CisgICAgICAg
IEFTU0VSVCghIW1faW5mby0+dGFibGVzW3RhYmxlSW5kZXhdKTsKIAotICAgICAgICBFbGVtZW50
IGVsZW1lbnQobWFrZUkzMkluaXRFeHByKGluaXRPcGNvZGUsIGluaXRFeHByQml0cykpOworICAg
ICAgICBFbGVtZW50IGVsZW1lbnQodGFibGVJbmRleCwgbWFrZUkzMkluaXRFeHByKGluaXRPcGNv
ZGUsIGluaXRFeHByQml0cykpOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFlbGVtZW50
LmZ1bmN0aW9uSW5kaWNlcy50cnlSZXNlcnZlQ2FwYWNpdHkoaW5kZXhDb3VudCksICJjYW4ndCBh
bGxvY2F0ZSBtZW1vcnkgZm9yICIsIGluZGV4Q291bnQsICIgRWxlbWVudCBpbmRpY2VzIik7CiAK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgaW5kZXhDb3VudDsgKytp
bmRleCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaAppbmRleCA0ZDU3ZDQx
NTJjZi4uNTM5MmM4MzlhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21UYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5o
CkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdWludDMyX3QgYWxsb2NhdGVk
TGVuZ3RoKHVpbnQzMl90IGxlbmd0aCk7CiAgICAgdWludDMyX3QgbWFzaygpIGNvbnN0IHsgcmV0
dXJuIG1fbWFzazsgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCogb3duZXIoKSBjb25z
dCB7IHJldHVybiByZWludGVycHJldF9jYXN0PFQqPihtX293bmVyKTsgfQogICAgIHZvaWQgc2V0
T3duZXIoSlNPYmplY3QqIG93bmVyKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX293bmVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCmluZGV4IDdmMWFj
NjFlZThhLi5kMDIwZDI5MDJjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
VmFsaWRhdGUuY3BwCkBAIC0xMDYsOCArMTA2LDggQEAgcHVibGljOgogICAgIFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gYWRkUmVmRnVuYyh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCk7CiAKICAgICAvLyBUYWJsZXMKLSAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCk7Ci0gICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZVNldChFeHByZXNzaW9u
VHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSk7CisgICAgUmVzdWx0IFdBUk5fVU5V
U0VEX1JFVFVSTiBhZGRUYWJsZUdldCh1bnNpZ25lZCwgRXhwcmVzc2lvblR5cGUmIGluZGV4LCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFk
ZFRhYmxlU2V0KHVuc2lnbmVkLCBFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBl
JiB2YWx1ZSk7CiAKICAgICAvLyBMb2NhbHMKICAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAgLTE0
OCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxscwogICAgIFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkQ2FsbCh1bnNpZ25lZCBjYWxsZWVJbmRleCwgY29uc3QgU2lnbmF0dXJl
JiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCk7Ci0gICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QoY29u
c3QgU2lnbmF0dXJlJiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVz
c2lvblR5cGUmIHJlc3VsdCk7CisgICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxs
SW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgY29uc3QgVmVj
dG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgZGlkS2lsbChFeHByZXNzaW9uVHlwZSkgeyB9CiAKQEAgLTE3
OCwyMSArMTc4LDIzIEBAIGF1dG8gVmFsaWRhdGU6OmFkZEFyZ3VtZW50cyhjb25zdCBTaWduYXR1
cmUmIHNpZ25hdHVyZSkgLT4gUmVzdWx0CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBWYWxp
ZGF0ZTo6YWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KSAtPiBSZXN1bHQKK2F1dG8gVmFsaWRhdGU6OmFkZFRhYmxlR2V0KHVuc2lnbmVkIHRh
YmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkg
LT4gUmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0gbV9tb2R1bGUudGFibGVJbmZvcm1hdGlvbi53YXNt
VHlwZSgpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYodGFibGVJbmRleCA+PSBtX21vZHVs
ZS50YWJsZUNvdW50KCksICJ0YWJsZSBpbmRleCAiLCB0YWJsZUluZGV4LCAiIGlzIGludmFsaWQs
IGxpbWl0IGlzICIsIG1fbW9kdWxlLnRhYmxlQ291bnQoKSk7CisgICAgcmVzdWx0ID0gbV9tb2R1
bGUudGFibGVzW3RhYmxlSW5kZXhdLndhc21UeXBlKCk7CiAgICAgV0FTTV9WQUxJREFUT1JfRkFJ
TF9JRihUeXBlOjpJMzIgIT0gaW5kZXgsICJ0YWJsZS5nZXQgaW5kZXggdG8gdHlwZSAiLCBpbmRl
eCwgIiBleHBlY3RlZCAiLCBUeXBlOjpJMzIpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0
byBWYWxpZGF0ZTo6YWRkVGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9u
VHlwZSYgdmFsdWUpIC0+IFJlc3VsdAorYXV0byBWYWxpZGF0ZTo6YWRkVGFibGVTZXQodW5zaWdu
ZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgdmFs
dWUpIC0+IFJlc3VsdAogewotICAgIGF1dG8gdHlwZSA9IG1fbW9kdWxlLnRhYmxlSW5mb3JtYXRp
b24ud2FzbVR5cGUoKTsKKyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKHRhYmxlSW5kZXggPj0g
bV9tb2R1bGUudGFibGVDb3VudCgpLCAidGFibGUgaW5kZXggIiwgdGFibGVJbmRleCwgIiBpcyBp
bnZhbGlkLCBsaW1pdCBpcyAiLCBtX21vZHVsZS50YWJsZUNvdW50KCkpOworICAgIGF1dG8gdHlw
ZSA9IG1fbW9kdWxlLnRhYmxlc1t0YWJsZUluZGV4XS53YXNtVHlwZSgpOwogICAgIFdBU01fVkFM
SURBVE9SX0ZBSUxfSUYoVHlwZTo6STMyICE9IGluZGV4LCAidGFibGUuc2V0IGluZGV4IHRvIHR5
cGUgIiwgaW5kZXgsICIgZXhwZWN0ZWQgIiwgVHlwZTo6STMyKTsKICAgICBXQVNNX1ZBTElEQVRP
Ul9GQUlMX0lGKCFpc1N1YnR5cGUodmFsdWUsIHR5cGUpLCAidGFibGUuc2V0IHZhbHVlIHRvIHR5
cGUgIiwgdmFsdWUsICIgZXhwZWN0ZWQgIiwgdHlwZSk7Ci0gICAgV0FTTV9WQUxJREFUT1JfRkFJ
TF9JRihtX21vZHVsZS50YWJsZUluZm9ybWF0aW9uLnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRUeXBl
OjpBbnlyZWYKLSAgICAgICAgJiYgbV9tb2R1bGUudGFibGVJbmZvcm1hdGlvbi50eXBlKCkgIT0g
VGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgInRhYmxlLnNldCBleHBlY3RzIHRoZSB0YWJsZSB0
byBoYXZlIHR5cGUgYW55cmVmIG9yIGFueWZ1bmMiKTsKKyAgICBXQVNNX1ZBTElEQVRPUl9GQUlM
X0lGKG1fbW9kdWxlLnRhYmxlc1t0YWJsZUluZGV4XS50eXBlKCkgIT0gVGFibGVFbGVtZW50VHlw
ZTo6QW55cmVmCisgICAgICAgICYmIG1fbW9kdWxlLnRhYmxlc1t0YWJsZUluZGV4XS50eXBlKCkg
IT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgInRhYmxlLnNldCBleHBlY3RzIHRoZSB0YWJs
ZSB0byBoYXZlIHR5cGUgYW55cmVmIG9yIGFueWZ1bmMiKTsKIAogICAgIHJldHVybiB7IH07CiB9
CkBAIC0zNzksOSArMzgxLDEwIEBAIGF1dG8gVmFsaWRhdGU6OmFkZENhbGwodW5zaWduZWQsIGNv
bnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8RXhwcmVzCiAgICAgcmV0dXJu
IHsgfTsKIH0KIAotYXV0byBWYWxpZGF0ZTo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNpZ25hdHVy
ZSYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNz
aW9uVHlwZSYgcmVzdWx0KSAtPiBSZXN1bHQKK2F1dG8gVmFsaWRhdGU6OmFkZENhbGxJbmRpcmVj
dCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgY29uc3Qg
VmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4g
UmVzdWx0CiB7Ci0gICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihtX21vZHVsZS50YWJsZUluZm9y
bWF0aW9uLnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCAiVGFibGUgbXVzdCBo
YXZlIHR5cGUgQW55ZnVuYyB0byBjYWxsIik7CisgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRih0
YWJsZUluZGV4ID49IG1fbW9kdWxlLnRhYmxlQ291bnQoKSwgInRhYmxlIGluZGV4ICIsIHRhYmxl
SW5kZXgsICIgaXMgaW52YWxpZCwgbGltaXQgaXMgIiwgbV9tb2R1bGUudGFibGVDb3VudCgpKTsK
KyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKG1fbW9kdWxlLnRhYmxlc1t0YWJsZUluZGV4XS50
eXBlKCkgIT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgIlRhYmxlIG11c3QgaGF2ZSB0eXBl
IEFueWZ1bmMgdG8gY2FsbCIpOwogICAgIGNvbnN0IGF1dG8gYXJndW1lbnRDb3VudCA9IHNpZ25h
dHVyZS5hcmd1bWVudENvdW50KCk7CiAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihhcmd1bWVu
dENvdW50ICE9IGFyZ3Muc2l6ZSgpIC0gMSwgImFyaXR5IG1pc21hdGNoIGluIGNhbGxfaW5kaXJl
Y3QsIGdvdCAiLCBhcmdzLnNpemUoKSAtIDEsICIgYXJndW1lbnRzLCBleHBlY3RlZCAiLCBhcmd1
bWVudENvdW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKaW5kZXggMjBiNjBmYzcxMTUuLmUzZDliNmJlZjEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
SW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlJbnN0YW5jZS5jcHAKQEAgLTUzLDYgKzUzLDcgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNl
OjpKU1dlYkFzc2VtYmx5SW5zdGFuY2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVm
PFcKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKICAgICAsIG1faW5zdGFuY2UoV1RGTW92ZShp
bnN0YW5jZSkpCiAgICAgLCBtX3ZtKCZ2bSkKKyAgICAsIG1fdGFibGVzKG1faW5zdGFuY2UtPm1v
ZHVsZSgpLm1vZHVsZUluZm9ybWF0aW9uKCkudGFibGVDb3VudCgpKQogewogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB0aGlzLT5pbnN0YW5jZSgpLm51bUltcG9ydEZ1bmN0aW9ucygpOyAr
K2kpCiAgICAgICAgIG5ldyAodGhpcy0+aW5zdGFuY2UoKS5pbXBvcnRGdW5jdGlvbjxXcml0ZUJh
cnJpZXI8SlNPYmplY3Q+PihpKSkgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PigpOwpAQCAtODUsNyAr
ODYsOCBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fY29kZUJsb2NrKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVs
ZU5hbWVzcGFjZU9iamVjdCk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tZW1v
cnkpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdGFibGUpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5pbnN0YW5jZSgpLm1vZHVsZSgpLm1vZHVs
ZUluZm9ybWF0aW9uKCkudGFibGVDb3VudCgpOyArK2kpCisgICAgICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fdGFibGVzW2ldKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX2NhbGxlZSk7CiAgICAgdmlzaXRvci5yZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQodGhpc09i
amVjdC0+bV9pbnN0YW5jZS0+ZXh0cmFNZW1vcnlBbGxvY2F0ZWQoKSk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPmluc3RhbmNlKCkubnVtSW1wb3J0RnVuY3Rpb25z
KCk7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUluc3RhbmNlLmgKaW5kZXggMjE3ODRhOTM5ZDguLmUxNjMxZmNiYjE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2Uu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFu
Y2UuaApAQCAtNzEsMTEgKzcxLDEzIEBAIHB1YmxpYzoKICAgICB9CiAgICAgV2FzbTo6TWVtb3J5
TW9kZSBtZW1vcnlNb2RlKCkgeyByZXR1cm4gbWVtb3J5KCktPm1lbW9yeSgpLm1vZGUoKTsgfQog
Ci0gICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSgpIHsgcmV0dXJuIG1fdGFibGUuZ2V0KCk7
IH0KLSAgICB2b2lkIHNldFRhYmxlKFZNJiB2bSwgSlNXZWJBc3NlbWJseVRhYmxlKiB2YWx1ZSkg
ewotICAgICAgICBBU1NFUlQoIXRhYmxlKCkpOwotICAgICAgICBtX3RhYmxlLnNldCh2bSwgdGhp
cywgdmFsdWUpOwotICAgICAgICBpbnN0YW5jZSgpLnNldFRhYmxlKG1ha2VSZWYoKnRhYmxlKCkt
PnRhYmxlKCkpKTsKKyAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlKHVuc2lnbmVkIGkpIHsg
cmV0dXJuIG1fdGFibGVzW2ldLmdldCgpOyB9CisgICAgdm9pZCBzZXRUYWJsZShWTSYgdm0sIHVp
bnQzMl90IGluZGV4LCBKU1dlYkFzc2VtYmx5VGFibGUqIHZhbHVlKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGluZGV4IDwgbV90YWJsZXMuc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKCF0YWJsZShp
bmRleCkpOworICAgICAgICBtX3RhYmxlc1tpbmRleF0uc2V0KHZtLCB0aGlzLCB2YWx1ZSk7Cisg
ICAgICAgIGluc3RhbmNlKCkuc2V0VGFibGUoaW5kZXgsIG1ha2VSZWYoKnRhYmxlKGluZGV4KS0+
dGFibGUoKSkpOwogICAgIH0KIAogICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbW9kdWxlLmdldCgpOyB9CkBAIC05OCw3ICsxMDAsNyBAQCBwcml2YXRl
OgogICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsK
ICAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+IG1fbW9kdWxlTmFtZXNw
YWNlT2JqZWN0OwogICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5TWVtb3J5PiBtX21lbW9y
eTsKLSAgICBXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseVRhYmxlPiBtX3RhYmxlOworICAgIFZl
Y3RvcjxXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseVRhYmxlPj4gbV90YWJsZXM7CiAgICAgV3Jp
dGVCYXJyaWVyPFdlYkFzc2VtYmx5VG9KU0NhbGxlZT4gbV9jYWxsZWU7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29y
ZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJl
Y29yZC5jcHAKaW5kZXggMTJiMWNlZjJkZjQuLjA1MmQwODU4OTY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQu
Y3BwCkBAIC0xMTMsOCArMTEzLDYgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGlu
ayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRPYmoKICAgICAgICAg
cmV0dXJuIG1ha2VTdHJpbmcoYmVmb3JlLCAiICIsIFN0cmluZzo6ZnJvbVVURjgoaW1wb3J0Lm1v
ZHVsZSksICI6IiwgU3RyaW5nOjpmcm9tVVRGOChpbXBvcnQuZmllbGQpLCAiICIsIGFmdGVyKTsK
ICAgICB9OwogCi0gICAgYm9vbCBoYXNUYWJsZUltcG9ydCA9IGZhbHNlOwotCiAgICAgZm9yIChj
b25zdCBhdXRvJiBpbXBvcnQgOiBtb2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRzKSB7CiAgICAgICAg
IC8vIFZhbGlkYXRpb24gYW5kIGxpbmtpbmcgb3RoZXIgdGhhbiBXYXNtOjpFeHRlcm5hbEtpbmQ6
OkZ1bmN0aW9uIGlzIGFscmVhZHkgZG9uZSBpbiBKU1dlYkFzc2VtYmx5SW5zdGFuY2UuCiAgICAg
ICAgIC8vIEV2ZW50dWFsbHkgd2Ugd2lsbCBtb3ZlIGFsbCB0aGUgbGlua2luZyBjb2RlIGluIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZSBoZXJlIGFuZCByZW1vdmUgdGhpcyBzd2l0Y2ggc3RhdGVtZW50
LgpAQCAtMjY0LDIwICsyNjIsMTggQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGlu
ayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRPYmoKICAgICAgICAg
fQogCiAgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxLaW5kOjpUYWJsZTogewotICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIWhhc1RhYmxlSW1wb3J0KTsgLy8gVGhpcyBzaG91bGQgYmUgZ3Vh
cmFudGVlZCBieSBhIHZhbGlkYXRpb24gZmFpbHVyZS4KICAgICAgICAgICAgIC8vIDcuIE90aGVy
d2lzZSAoaSBpcyBhIHRhYmxlIGltcG9ydCk6Ci0gICAgICAgICAgICBoYXNUYWJsZUltcG9ydCA9
IHRydWU7CiAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0ganNEeW5hbWlj
Q2FzdDxKU1dlYkFzc2VtYmx5VGFibGUqPih2bSwgdmFsdWUpOwogICAgICAgICAgICAgLy8gaS4g
SWYgdiBpcyBub3QgYSBXZWJBc3NlbWJseS5UYWJsZSBvYmplY3QsIHRocm93IGEgV2ViQXNzZW1i
bHkuTGlua0Vycm9yLgogICAgICAgICAgICAgaWYgKCF0YWJsZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIGlt
cG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgIlRhYmxlIGltcG9ydCIsICJpcyBub3QgYW4gaW5zdGFu
Y2Ugb2YgV2ViQXNzZW1ibHkuVGFibGUiKSkpOwogCi0gICAgICAgICAgICB1aW50MzJfdCBleHBl
Y3RlZEluaXRpYWwgPSBtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0aW9uLmluaXRpYWwo
KTsKKyAgICAgICAgICAgIHVpbnQzMl90IGV4cGVjdGVkSW5pdGlhbCA9IG1vZHVsZUluZm9ybWF0
aW9uLnRhYmxlc1tpbXBvcnQua2luZEluZGV4XS5pbml0aWFsKCk7CiAgICAgICAgICAgICB1aW50
MzJfdCBhY3R1YWxJbml0aWFsID0gdGFibGUtPmxlbmd0aCgpOwogICAgICAgICAgICAgaWYgKGFj
dHVhbEluaXRpYWwgPCBleHBlY3RlZEluaXRpYWwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGV4
Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBpbXBvcnRGYWls
TWVzc2FnZShpbXBvcnQsICJUYWJsZSBpbXBvcnQiLCAicHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRo
YXQgaXMgdG9vIHNtYWxsIikpKTsKIAotICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90
PiBleHBlY3RlZE1heGltdW0gPSBtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0aW9uLm1h
eGltdW0oKSkgeworICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBleHBlY3RlZE1h
eGltdW0gPSBtb2R1bGVJbmZvcm1hdGlvbi50YWJsZXNbaW1wb3J0LmtpbmRJbmRleF0ubWF4aW11
bSgpKSB7CiAgICAgICAgICAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGFjdHVhbE1heGltdW0g
PSB0YWJsZS0+bWF4aW11bSgpOwogICAgICAgICAgICAgICAgIGlmICghYWN0dWFsTWF4aW11bSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5
TGlua0Vycm9yKGV4ZWMsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJUYWJsZSBpbXBv
cnQiLCAiZG9lcyBub3QgaGF2ZSBhICdtYXhpbXVtJyBidXQgdGhlIG1vZHVsZSByZXF1aXJlcyB0
aGF0IGl0IGRvZXMiKSkpOwpAQCAtMjg1LDE0ICsyODEsMTQgQEAgdm9pZCBXZWJBc3NlbWJseU1v
ZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBv
cnRPYmoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFz
c2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJJbXBv
cnRlZCBUYWJsZSIsICInbWF4aW11bScgaXMgbGFyZ2VyIHRoYW4gdGhlIG1vZHVsZSdzIGV4cGVj
dGVkICdtYXhpbXVtJyIpKSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gZXhw
ZWN0ZWRUeXBlID0gbW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlvbi50eXBlKCk7Cisg
ICAgICAgICAgICBhdXRvIGV4cGVjdGVkVHlwZSA9IG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlc1tp
bXBvcnQua2luZEluZGV4XS50eXBlKCk7CiAgICAgICAgICAgICBhdXRvIGFjdHVhbFR5cGUgPSB0
YWJsZS0+dGFibGUoKS0+dHlwZSgpOwogICAgICAgICAgICAgaWYgKGV4cGVjdGVkVHlwZSAhPSBh
Y3R1YWxUeXBlKQogICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJB
c3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiVGFi
bGUgaW1wb3J0IiwgInByb3ZpZGVkIGEgJ3R5cGUnIHRoYXQgaXMgd3JvbmciKSkpOwogCiAgICAg
ICAgICAgICAvLyBpaS4gQXBwZW5kIHYgdG8gdGFibGVzLgogICAgICAgICAgICAgLy8gaWlpLiBB
cHBlbmQgdi5bW1RhYmxlXV0gdG8gaW1wb3J0cy4KLSAgICAgICAgICAgIG1faW5zdGFuY2UtPnNl
dFRhYmxlKHZtLCB0YWJsZSk7CisgICAgICAgICAgICBtX2luc3RhbmNlLT5zZXRUYWJsZSh2bSwg
aW1wb3J0LmtpbmRJbmRleCwgdGFibGUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zMDIs
MTYgKzI5OCwxNiBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9iagogICAgICAgICB9CiAgICAgfQog
Ci0gICAgewotICAgICAgICBpZiAoISFtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0aW9u
ICYmIG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaXNJbXBvcnQoKSkgeworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUNvdW50KCk7
ICsraSkgeworICAgICAgICBpZiAobW9kdWxlSW5mb3JtYXRpb24udGFibGVzW2ldLmlzSW1wb3J0
KCkpIHsKICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBlaXRoZXIgaGF2ZSBhIFRhYmxlIGltcG9y
dCBvciB3ZSBzaG91bGQgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uLgotICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoaGFzVGFibGVJbXBvcnQpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bV9pbnN0YW5jZS0+dGFibGUoaSkpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCEhbW9kdWxl
SW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlvbiAmJiAhaGFzVGFibGVJbXBvcnQpIHsKLSAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0aW9u
LmlzSW1wb3J0KCkpOworICAgICAgICBpZiAoIW1faW5zdGFuY2UtPnRhYmxlKGkpKSB7CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghbW9kdWxlSW5mb3JtYXRpb24udGFibGVzW2ldLmlzSW1w
b3J0KCkpOwogICAgICAgICAgICAgLy8gV2UgY3JlYXRlIGEgVGFibGUgd2hlbiBpdCdzIGEgVGFi
bGUgZGVmaW5pdGlvbi4KLSAgICAgICAgICAgIFJlZlB0cjxXYXNtOjpUYWJsZT4gd2FzbVRhYmxl
ID0gV2FzbTo6VGFibGU6OnRyeUNyZWF0ZShtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0
aW9uLmluaXRpYWwoKSwgbW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlvbi5tYXhpbXVt
KCksIG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24udHlwZSgpKTsKKyAgICAgICAg
ICAgIFJlZlB0cjxXYXNtOjpUYWJsZT4gd2FzbVRhYmxlID0gV2FzbTo6VGFibGU6OnRyeUNyZWF0
ZShtb2R1bGVJbmZvcm1hdGlvbi50YWJsZXNbaV0uaW5pdGlhbCgpLCBtb2R1bGVJbmZvcm1hdGlv
bi50YWJsZXNbaV0ubWF4aW11bSgpLCBtb2R1bGVJbmZvcm1hdGlvbi50YWJsZXNbaV0udHlwZSgp
KTsKICAgICAgICAgICAgIGlmICghd2FzbVRhYmxlKQogICAgICAgICAgICAgICAgIHJldHVybiBl
eGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgImNvdWxkbid0
IGNyZWF0ZSBUYWJsZSIpKTsKICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUg
PSBKU1dlYkFzc2VtYmx5VGFibGU6OmNyZWF0ZShleGVjLCB2bSwgZ2xvYmFsT2JqZWN0LT53ZWJB
c3NlbWJseVRhYmxlU3RydWN0dXJlKCksIHdhc21UYWJsZS5yZWxlYXNlTm9uTnVsbCgpKTsKQEAg
LTMxOSw3ICszMTUsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9iagogICAgICAgICAgICAgLy8g
SWYgaXQncyBkZWZpbmVkIHRvIGJlIHRvbyBsYXJnZSwgd2Ugc2hvdWxkIGhhdmUgdGhyb3duIGEg
dmFsaWRhdGlvbiBlcnJvci4KICAgICAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7
CiAgICAgICAgICAgICBBU1NFUlQodGFibGUpOwotICAgICAgICAgICAgbV9pbnN0YW5jZS0+c2V0
VGFibGUodm0sIHRhYmxlKTsKKyAgICAgICAgICAgIG1faW5zdGFuY2UtPnNldFRhYmxlKHZtLCBp
LCB0YWJsZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwogICAgICAgICB9CiAgICAgfQpAQCAtMzk3LDEwICszOTMsOCBAQCB2b2lkIFdlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGlt
cG9ydE9iagogICAgICAgICB9CiAgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxLaW5kOjpUYWJs
ZTogewogICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYmUgZ3VhcmFudGVlZCBieSBtb2R1bGUg
dmVyaWZpY2F0aW9uLgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9pbnN0YW5jZS0+dGFi
bGUoKSk7IAotICAgICAgICAgICAgQVNTRVJUKGV4cC5raW5kSW5kZXggPT0gMCk7Ci0KLSAgICAg
ICAgICAgIGV4cG9ydGVkVmFsdWUgPSBtX2luc3RhbmNlLT50YWJsZSgpOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQobV9pbnN0YW5jZS0+dGFibGUoZXhwLmtpbmRJbmRleCkpOworICAgICAg
ICAgICAgZXhwb3J0ZWRWYWx1ZSA9IG1faW5zdGFuY2UtPnRhYmxlKGV4cC5raW5kSW5kZXgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5h
bEtpbmQ6Ok1lbW9yeTogewpAQCAtNDg2LDcgKzQ4MCw2IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBXYXNtOjpNb2R1bGUm
IG1vZHVsZSA9IG1faW5zdGFuY2UtPmluc3RhbmNlKCkubW9kdWxlKCk7CiAgICAgV2FzbTo6Q29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmNvZGVCbG9jaygpOwog
ICAgIGNvbnN0IFdhc206Ok1vZHVsZUluZm9ybWF0aW9uJiBtb2R1bGVJbmZvcm1hdGlvbiA9IG1v
ZHVsZS5tb2R1bGVJbmZvcm1hdGlvbigpOwotICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUg
PSBtX2luc3RhbmNlLT50YWJsZSgpOwogCiAgICAgY29uc3QgVmVjdG9yPFdhc206OlNlZ21lbnQ6
OlB0cj4mIGRhdGEgPSBtb2R1bGVJbmZvcm1hdGlvbi5kYXRhOwogICAgIApAQCAtNDk4LDE2ICs0
OTEsMTYgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICAgICAgLy8gQWxzbywgaXQgY291bGQgYmUgdGhhdCBhIHRhYmxl
IHdhc24ndCBpbXBvcnRlZCwgb3IgdGhhdCB0aGUgdGFibGUKICAgICAgICAgICAgIC8vIGltcG9y
dGVkIHdhc24ndCBjb21wYXRpYmxlLiBIb3dldmVyLCB0aG9zZSBzaG91bGQgZXJyb3Igb3V0IGJl
Zm9yZQogICAgICAgICAgICAgLy8gZ2V0dGluZyBoZXJlLgotICAgICAgICAgICAgQVNTRVJUKCEh
dGFibGUpOworICAgICAgICAgICAgQVNTRVJUKCEhbV9pbnN0YW5jZS0+dGFibGUoZWxlbWVudC50
YWJsZUluZGV4KSk7CiAKICAgICAgICAgICAgIGlmICghZWxlbWVudC5mdW5jdGlvbkluZGljZXMu
c2l6ZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICB1aW50MzJf
dCB0YWJsZUluZGV4ID0gZWxlbWVudC5vZmZzZXQuaXNHbG9iYWxJbXBvcnQoKQorICAgICAgICAg
ICAgdWludDMyX3QgZWxlbWVudEluZGV4ID0gZWxlbWVudC5vZmZzZXQuaXNHbG9iYWxJbXBvcnQo
KQogICAgICAgICAgICAgICAgID8gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1faW5zdGFuY2UtPmlu
c3RhbmNlKCkubG9hZEkzMkdsb2JhbChlbGVtZW50Lm9mZnNldC5nbG9iYWxJbXBvcnRJbmRleCgp
KSkKICAgICAgICAgICAgICAgICA6IGVsZW1lbnQub2Zmc2V0LmNvbnN0VmFsdWUoKTsKIAotICAg
ICAgICAgICAgZm4oZWxlbWVudCwgdGFibGVJbmRleCk7CisgICAgICAgICAgICBmbihlbGVtZW50
LCBlbGVtZW50LnRhYmxlSW5kZXgsIGVsZW1lbnRJbmRleCk7CiAKICAgICAgICAgICAgIGlmIChl
eGNlcHRpb24pCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01MzEsOSArNTI0LDkgQEAgSlNW
YWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQog
ICAgIH07CiAKICAgICAvLyBWYWxpZGF0aW9uIG9mIGFsbCBlbGVtZW50IHJhbmdlcyBjb21lcyBi
ZWZvcmUgYWxsIFRhYmxlIGFuZCBNZW1vcnkgaW5pdGlhbGl6YXRpb24uCi0gICAgZm9yRWFjaEVs
ZW1lbnQoWyZdIChjb25zdCBXYXNtOjpFbGVtZW50JiBlbGVtZW50LCB1aW50MzJfdCB0YWJsZUlu
ZGV4KSB7Ci0gICAgICAgIHVpbnQ2NF90IGxhc3RXcml0dGVuSW5kZXggPSBzdGF0aWNfY2FzdDx1
aW50NjRfdD4odGFibGVJbmRleCkgKyBzdGF0aWNfY2FzdDx1aW50NjRfdD4oZWxlbWVudC5mdW5j
dGlvbkluZGljZXMuc2l6ZSgpKSAtIDE7Ci0gICAgICAgIGlmIChVTkxJS0VMWShsYXN0V3JpdHRl
bkluZGV4ID49IHRhYmxlLT5sZW5ndGgoKSkpCisgICAgZm9yRWFjaEVsZW1lbnQoWyZdIChjb25z
dCBXYXNtOjpFbGVtZW50JiBlbGVtZW50LCB1aW50MzJfdCB0YWJsZUluZGV4LCB1aW50MzJfdCBl
bGVtZW50SW5kZXgpIHsKKyAgICAgICAgdWludDY0X3QgbGFzdFdyaXR0ZW5JbmRleCA9IHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihlbGVtZW50SW5kZXgpICsgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVs
ZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnNpemUoKSkgLSAxOworICAgICAgICBpZiAoVU5MSUtFTFko
bGFzdFdyaXR0ZW5JbmRleCA+PSBtX2luc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+bGVuZ3Ro
KCkpKQogICAgICAgICAgICAgZXhjZXB0aW9uID0gSlNWYWx1ZSh0aHJvd0V4Y2VwdGlvbihleGVj
LCBzY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgIkVsZW1lbnQg
aXMgdHJ5aW5nIHRvIHNldCBhbiBvdXQgb2YgYm91bmRzIHRhYmxlIGluZGV4Il9zKSkpOwogICAg
IH0pOwogCkBAIC01NTIsNyArNTQ1LDcgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZDo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gZXhjZXB0aW9uLnZh
bHVlKCk7CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9pbnN0YW5jZS0+
Z2xvYmFsT2JqZWN0KHZtKTsKLSAgICBmb3JFYWNoRWxlbWVudChbJl0gKGNvbnN0IFdhc206OkVs
ZW1lbnQmIGVsZW1lbnQsIHVpbnQzMl90IHRhYmxlSW5kZXgpIHsKKyAgICBmb3JFYWNoRWxlbWVu
dChbJl0gKGNvbnN0IFdhc206OkVsZW1lbnQmIGVsZW1lbnQsIHVpbnQzMl90IHRhYmxlSW5kZXgs
IHVpbnQzMl90IGVsZW1lbnRJbmRleCkgewogICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBp
IDwgZWxlbWVudC5mdW5jdGlvbkluZGljZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIGVzc2VudGlhbGx5IG1lYW5zIHdlJ3JlIGV4cG9ydGluZyBhbiBpbXBvcnQu
CiAgICAgICAgICAgICAvLyBXZSBuZWVkIGEgc3RvcnkgaGVyZS4gV2UgbmVlZCB0byBjcmVhdGUg
YSBXZWJBc3NlbWJseUZ1bmN0aW9uCkBAIC01NjgsMTQgKzU2MSwxNCBAQCBKU1ZhbHVlIFdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAg
ICAgICAgICAgIC8vIEJlY2F1c2UgYSBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiBjYW4gbmV2
ZXIgd3JhcCBhbm90aGVyIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAvLyB0aGUgb25seSB0eXBlIHRoaXMgY291bGQgYmUgaXMgV2ViQXNzZW1ibHlGdW5j
dGlvbi4KICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQod2FzbUZ1bmN0aW9uKTsK
LSAgICAgICAgICAgICAgICAgICAgdGFibGUtPnNldCh0YWJsZUluZGV4LCB3YXNtRnVuY3Rpb24p
OwotICAgICAgICAgICAgICAgICAgICArK3RhYmxlSW5kZXg7CisgICAgICAgICAgICAgICAgICAg
IG1faW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5zZXQoZWxlbWVudEluZGV4LCB3YXNtRnVu
Y3Rpb24pOworICAgICAgICAgICAgICAgICAgICArK2VsZW1lbnRJbmRleDsKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
dGFibGUtPnNldCh0YWJsZUluZGV4LAorICAgICAgICAgICAgICAgIG1faW5zdGFuY2UtPnRhYmxl
KHRhYmxlSW5kZXgpLT5zZXQoZWxlbWVudEluZGV4LAogICAgICAgICAgICAgICAgICAgICBXZWJB
c3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC0+d2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgZnVuY3Rpb25JbXBv
cnQsIGZ1bmN0aW9uSW5kZXgsIG1faW5zdGFuY2UuZ2V0KCksIHNpZ25hdHVyZUluZGV4KSk7Ci0g
ICAgICAgICAgICAgICAgKyt0YWJsZUluZGV4OworICAgICAgICAgICAgICAgICsrZWxlbWVudElu
ZGV4OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCkBAIC01ODks
OCArNTgyLDggQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoRXhl
Y1N0YXRlKiBleGVjKQogICAgICAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogZnVuY3Rpb24g
PSBXZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUoCiAgICAgICAgICAgICAgICAgdm0sIGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUZ1bmN0aW9uU3RydWN0dXJlKCksIHNp
Z25hdHVyZS5hcmd1bWVudENvdW50KCksIFN0cmluZygpLCBtX2luc3RhbmNlLmdldCgpLCBlbWJl
ZGRlckVudHJ5cG9pbnRDYWxsZWUsIGVudHJ5cG9pbnRMb2FkTG9jYXRpb24sIHNpZ25hdHVyZUlu
ZGV4KTsKIAotICAgICAgICAgICAgdGFibGUtPnNldCh0YWJsZUluZGV4LCBmdW5jdGlvbik7Ci0g
ICAgICAgICAgICArK3RhYmxlSW5kZXg7CisgICAgICAgICAgICBtX2luc3RhbmNlLT50YWJsZSh0
YWJsZUluZGV4KS0+c2V0KGVsZW1lbnRJbmRleCwgZnVuY3Rpb24pOworICAgICAgICAgICAgKytl
bGVtZW50SW5kZXg7CiAgICAgICAgIH0KICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
d2FzbS5qc29uCmluZGV4IDc1Mjg1ZDZmYjcwLi45NmU4YTFkMjA3NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL3dhc20uanNvbgpAQCAtNjcsMTAgKzY3LDEwIEBACiAgICAgICAgICJ0ZWVfbG9j
YWwiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzNCwg
InJldHVybiI6IFsiYW55Il0sICAgICAgInBhcmFtZXRlciI6IFsiYW55Il0sICAgICAgICAgICAg
ICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAibG9jYWxfaW5kZXgiLCAgICAidHlwZSI6ICJ2
YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAid3JpdGUgYSBsb2NhbCB2YXJpYWJsZSBvciBwYXJhbWV0ZXIgYW5kIHJl
dHVybiB0aGUgc2FtZSB2YWx1ZSIgfSwKICAgICAgICAgImdldF9nbG9iYWwiOiAgICAgICAgICB7
ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM1LCAicmV0dXJuIjogWyJhbnki
XSwgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRl
IjogW3sibmFtZSI6ICJnbG9iYWxfaW5kZXgiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJy
ZWFkIGEgZ2xvYmFsIHZhcmlhYmxlIiB9LAogICAgICAgICAic2V0X2dsb2JhbCI6ICAgICAgICAg
IHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzYsICJyZXR1cm4iOiBbXSwg
ICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFueSJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlh
dGUiOiBbeyJuYW1lIjogImdsb2JhbF9pbmRleCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IndyaXRlIGEgZ2xvYmFsIHZhcmlhYmxlIiB9LAotICAgICAgICAidGFibGUuZ2V0IjogICAgICAg
ICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzcsICJyZXR1cm4iOiBb
ImFueXJlZiJdLCAgICJwYXJhbWV0ZXIiOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogImdldCBhIHRhYmxlIHZhbHVlIiB9LAotICAgICAgICAidGFibGUuc2V0IjogICAgICAgICAg
IHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzgsICJyZXR1cm4iOiBbXSwg
ICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImkzMiIsICJhbnlyZWYiXSwgICAgICAgICJpbW1lZGlh
dGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
InNldCBhIHRhYmxlIHZhbHVlIiB9LAorICAgICAgICAidGFibGUuZ2V0IjogICAgICAgICAgIHsg
ImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzcsICJyZXR1cm4iOiBbImFueXJl
ZiJdLCAgICJwYXJhbWV0ZXIiOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUi
OiBbeyJuYW1lIjogInRhYmxlX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImdl
dCBhIHRhYmxlIHZhbHVlIiB9LAorICAgICAgICAidGFibGUuc2V0IjogICAgICAgICAgIHsgImNh
dGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzgsICJyZXR1cm4iOiBbXSwgICAgICAg
ICAgICJwYXJhbWV0ZXIiOiBbImkzMiIsICJhbnlyZWYiXSwgICAgICAgICJpbW1lZGlhdGUiOiBb
eyJuYW1lIjogInRhYmxlX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInNldCBh
IHRhYmxlIHZhbHVlIiB9LAogICAgICAgICAiY2FsbCI6ICAgICAgICAgICAgICAgIHsgImNhdGVn
b3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTYsICJyZXR1cm4iOiBbImNhbGwiXSwgICAg
ICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJu
YW1lIjogImZ1bmN0aW9uX2luZGV4IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImNhbGwgYSBm
dW5jdGlvbiBieSBpdHMgaW5kZXgiIH0sCi0gICAgICAgICJjYWxsX2luZGlyZWN0IjogICAgICAg
eyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxNywgInJldHVybiI6IFsiY2Fs
bCJdLCAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgImltbWVkaWF0
ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJu
YW1lIjogInJlc2VydmVkIiwgInR5cGUiOiAidmFydWludDEifV0sICAiZGVzY3JpcHRpb24iOiAi
Y2FsbCBhIGZ1bmN0aW9uIGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAor
ICAgICAgICAiY2FsbF9pbmRpcmVjdCI6ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAg
ICAidmFsdWUiOiAgMTcsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICJwYXJhbWV0ZXIiOiBbImNh
bGwiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgi
LCAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJ0YWJsZV9pbmRleCIsInR5cGUi
OiAidmFydWludDMyIn1dLCJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gaW5kaXJlY3Qg
d2l0aCBhbiBleHBlY3RlZCBzaWduYXR1cmUiIH0sCiAgICAgICAgICJpMzIubG9hZDhfcyI6ICAg
ICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NCwgInJldHVybiI6
IFsiaTMyIl0sICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgImlt
bWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIi
fSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRp
b24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKICAgICAgICAgImkzMi5sb2FkOF91IjogICAgICAg
ICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ1LCAicmV0dXJuIjogWyJp
MzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7
Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6
ICJsb2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAgICAiaTMyLmxvYWQxNl9zIjogICAgICAgIHsg
ImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDYsICJyZXR1cm4iOiBbImkzMiJd
LCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUi
OiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFt
ZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxv
YWQgZnJvbSBtZW1vcnkiIH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372266</attachid>
            <date>2019-06-17 13:15:48 -0700</date>
            <delta_ts>2019-06-17 19:00:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198760-20190617131547.patch</filename>
            <type>text/plain</type>
            <size>90251</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NTAzN2E2NmU2MTkxZWEyYmViMmRjZTYyZWI3ODFhMjFmNzA5NzE1Li5mNzM5OGZmMDQ4ZmJhODAw
M2VmODQ5MmQzZDVhZjlhZGQzODhlMWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAxOS0wNi0xMyAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gQWRkIHN1cHBvcnQgZm9yIG11
bHRpcGxlIHRhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk4NzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU3VwcG9ydCBtdWx0aXBsZSB3YXNtIHRhYmxlcy4gV2UgdHVybiB0YWJsZUluZm9ybWF0
aW9uIGludG8gYSB0YWJsZXMgYXJyYXksIGFuZCB1cGRhdGUgYWxsIG9mIHRoZQorICAgICAgICBl
eGlzdGluZyB1c2VycyB0byBnaXZlIGEgdGFibGUgaW5kZXguCisKKyAgICAgICAgKiB3YXNtL1dh
c21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9y
OjpBaXJJUkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjph
ZGRUYWJsZUdldCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRUYWJs
ZVNldCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJl
Y3QpOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QjNJUkdlbmVyYXRvcjo6YWRkVGFibGVHZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lS
R2VuZXJhdG9yOjphZGRUYWJsZVNldCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0
b3I6OmFkZENhbGxJbmRpcmVjdCk6CisgICAgICAgICogd2FzbS9XYXNtRXhjZXB0aW9uVHlwZS5o
OgorICAgICAgICAqIHdhc20vV2FzbUZvcm1hdC5oOgorICAgICAgICAoSlNDOjpXYXNtOjpFbGVt
ZW50OjpFbGVtZW50KToKKyAgICAgICAgKiB3YXNtL1dhc21GdW5jdGlvblBhcnNlci5oOgorICAg
ICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9u
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlVW5y
ZWFjaGFibGVFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21JbnN0YW5jZS5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpJbnN0YW5jZSk6CisgICAgICAgIChKU0M6Oldh
c206Okluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6ZXh0
cmFNZW1vcnlBbGxvY2F0ZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6
dGFibGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6c2V0VGFibGUpOgorICAgICAg
ICAqIHdhc20vV2FzbUluc3RhbmNlLmg6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjp1
cGRhdGVDYWNoZWRNZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0
T2ZHbG9iYWxzKToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mVGFibGVQ
dHIpOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6YWxsb2NhdGlvblNpemUpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6dGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpXYXNtOjpJbnN0YW5jZTo6c2V0VGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNt
OjpJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNt
TW9kdWxlSW5mb3JtYXRpb24uaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlSW5mb3JtYXRp
b246OnRhYmxlQ291bnQgY29uc3QpOgorICAgICAgICAqIHdhc20vV2FzbVNlY3Rpb25QYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUltcG9ydCk6Cisg
ICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlVGFibGVIZWxwZXIpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZVRhYmxlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KToKKyAgICAgICAgKiB3YXNtL1dh
c21UYWJsZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpUYWJsZTo6b3duZXIgY29uc3QpOgorICAg
ICAgICAqIHdhc20vV2FzbVZhbGlkYXRlLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsaWRh
dGU6OmFkZFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsaWRhdGU6OmFkZFRhYmxl
U2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsaWRhdGU6OmFkZENhbGxJbmRpcmVjdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlND
OjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZSk6CisgICAgICAg
IChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICog
d2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQ6OmxpbmspOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZh
bHVhdGUpOgorICAgICAgICAqIHdhc20vd2FzbS5qc29uOgorCiAyMDE5LTA2LTE3ICBUYWRldSBa
YWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgogCiAgICAgICAgIENvbmN1cnJlbnQgR0Mgc2hv
dWxkIGNoZWNrIHRoZSBjb25uIGJlZm9yZSBzdGFydGluZyBhIG5ldyBjb2xsZWN0aW9uIGN5Y2xl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNw
cAppbmRleCBhYjMwNGE1NWQzNmIzNTg0MjJiMWEwN2QyYTQ0YjAwMGRmNTIyZGU3Li5lNDk4YmVj
ZDc4OWFiNDQyMjc0MzYzZjAxNDg3NmM5NWRhZGU5Y2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTIzNyw4ICsyMzcsOCBA
QCBwdWJsaWM6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmVmRnVu
Yyh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKICAgICAvLyBUYWJs
ZXMKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZUdldChFeHBy
ZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAgIFBhcnRpYWxS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlU2V0KEV4cHJlc3Npb25UeXBlJiBpbmRl
eCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGRUYWJsZUdldCh1bnNpZ25lZCwgRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBhZGRUYWJsZVNldCh1bnNpZ25lZCwgRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9u
VHlwZSYgdmFsdWUpOwogCiAgICAgLy8gTG9jYWxzCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gZ2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1
bHQpOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbGxzCiAgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1aW50MzJfdCBjYWxsZWVJbmRl
eCwgY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVz
c2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
YWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4m
IGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBT
aWduYXR1cmUmLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRVbnJlYWNo
YWJsZSgpOwogCiAgICAgUGFydGlhbFJlc3VsdCBhZGRTaGlmdChUeXBlLCBCMzo6QWlyOjpPcGNv
ZGUsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSBzaGlmdCwgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCk7CkBAIC02MjYsNiArNjI2LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAg
ICB1aW50MzJfdCBtX21heE51bUpTQ2FsbEFyZ3VtZW50cyB7IDAgfTsKKyAgICB1bnNpZ25lZCBt
X251bUltcG9ydEZ1bmN0aW9uczsKIAogICAgIEIzOjpQYXRjaHBvaW50U3BlY2lhbCogbV9wYXRj
aHBvaW50U3BlY2lhbCB7IG51bGxwdHIgfTsKIH07CkBAIC02ODEsNiArNjgyLDcgQEAgQWlySVJH
ZW5lcmF0b3I6OkFpcklSR2VuZXJhdG9yKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBC
Mzo6UHJvY2VkdXJlJiBwcm8KICAgICAsIG1fcHJvYyhwcm9jZWR1cmUpCiAgICAgLCBtX2NvZGUo
bV9wcm9jLmNvZGUoKSkKICAgICAsIG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHModW5saW5rZWRX
YXNtVG9XYXNtQ2FsbHMpCisgICAgLCBtX251bUltcG9ydEZ1bmN0aW9ucyhpbmZvLmltcG9ydEZ1
bmN0aW9uQ291bnQoKSkKIHsKICAgICBtX2N1cnJlbnRCbG9jayA9IG1fY29kZS5hZGRCbG9jaygp
OwogICAgIG1fcm9vdEJsb2NrID0gbV9jdXJyZW50QmxvY2s7CkBAIC05NjgsMTQgKzk3MCwxNCBA
QCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4LCBFeHByZXNz
aW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aQogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gQWly
SVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRk
VGFibGVHZXQodW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgLy8gRklYTUU6IEVt
aXQgdGhpcyBpbmxpbmUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTg1MDY+LgogICAgIEFTU0VSVChpbmRleC50bXAoKSk7CiAgICAgQVNTRVJUKGluZGV4LnR5cGUo
KSA9PSBUeXBlOjpJMzIpOwogICAgIHJlc3VsdCA9IHRtcEZvclR5cGUoVHlwZTo6QW55cmVmKTsK
IAotICAgIGVtaXRDQ2FsbCgmZ2V0V2FzbVRhYmxlRWxlbWVudCwgcmVzdWx0LCBpbnN0YW5jZVZh
bHVlKCksIGluZGV4KTsKKyAgICBlbWl0Q0NhbGwoJmdldFdhc21UYWJsZUVsZW1lbnQsIHJlc3Vs
dCwgaW5zdGFuY2VWYWx1ZSgpLCBhZGRDb25zdGFudChUeXBlOjpJMzIsIHRhYmxlSW5kZXgpLCBp
bmRleCk7CiAgICAgZW1pdENoZWNrKFsmXSB7CiAgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaFRl
c3QzMiwgbnVsbHB0ciwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgcmVzdWx0
LCByZXN1bHQpOwogICAgIH0sIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CkBAIC05ODUsNyArOTg3LDcgQEAgYXV0byBBaXJJUkdl
bmVyYXRvcjo6YWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KQogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gQWlySVJHZW5lcmF0b3I6OmFk
ZFRhYmxlU2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKSAt
PiBQYXJ0aWFsUmVzdWx0CithdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZVNldCh1bnNpZ25l
ZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1
ZSkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KICAgICBBU1NF
UlQoaW5kZXgudG1wKCkpOwpAQCAtOTkzLDcgKzk5NSw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6
OmFkZFRhYmxlU2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHZhbHVl
KSAtCiAgICAgQVNTRVJUKHZhbHVlLnRtcCgpKTsKIAogICAgIGF1dG8gc2hvdWxkVGhyb3cgPSBn
MzIoKTsKLSAgICBlbWl0Q0NhbGwoJnNldFdhc21UYWJsZUVsZW1lbnQsIHNob3VsZFRocm93LCBp
bnN0YW5jZVZhbHVlKCksIGluZGV4LCB2YWx1ZSk7CisgICAgZW1pdENDYWxsKCZzZXRXYXNtVGFi
bGVFbGVtZW50LCBzaG91bGRUaHJvdywgaW5zdGFuY2VWYWx1ZSgpLCBhZGRDb25zdGFudChUeXBl
OjpJMzIsIHRhYmxlSW5kZXgpLCBpbmRleCwgdmFsdWUpOwogCiAgICAgZW1pdENoZWNrKFsmXSB7
CiAgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwgbnVsbHB0ciwgQXJnOjpyZXNDb25k
KE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgc2hvdWxkVGhyb3csIHNob3VsZFRocm93KTsKQEAgLTE4
OTMsMTEgKzE4OTUsMTIgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBm
dW5jdGlvbkluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwKICAgICByZXR1cm4geyB9
OwogfQogCi1hdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0
dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENh
bGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVy
ZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkg
LT4gUGFydGlhbFJlc3VsdAogewogICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZUluZGV4ID0gYXJn
cy50YWtlTGFzdCgpOwogICAgIEFTU0VSVChzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpID09IGFy
Z3Muc2l6ZSgpKTsKLSAgICBBU1NFUlQobV9pbmZvLnRhYmxlSW5mb3JtYXRpb24udHlwZSgpID09
IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpOworICAgIEFTU0VSVChtX2luZm8udGFibGVDb3Vu
dCgpID4gdGFibGVJbmRleCk7CisgICAgQVNTRVJUKG1faW5mby50YWJsZXNbdGFibGVJbmRleF0u
dHlwZSgpID09IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpOwogCiAgICAgbV9tYWtlc0NhbGxz
ID0gdHJ1ZTsKICAgICAvLyBOb3RlOiBjYWxsIGluZGlyZWN0IGNhbiBjYWxsIGVpdGhlciBXZWJB
c3NlbWJseUZ1bmN0aW9uIG9yIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLiBCZWNhdXNlCkBA
IC0xOTEyLDEyICsxOTE1LDEyIEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVj
dChjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3NpCiAgICAgRXhwcmVz
c2lvblR5cGUgaW5zdGFuY2VzQnVmZmVyID0gZzY0KCk7CiAgICAgRXhwcmVzc2lvblR5cGUgY2Fs
bGFibGVGdW5jdGlvbkJ1ZmZlckxlbmd0aCA9IGc2NCgpOwogICAgIHsKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZvcm0oSW5zdGFuY2U6Om9mZnNldE9mVGFibGUoKSwg
QjM6OldpZHRoNjQpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZv
cm0oSW5zdGFuY2U6Om9mZnNldE9mVGFibGVQdHIobV9udW1JbXBvcnRGdW5jdGlvbnMsIHRhYmxl
SW5kZXgpLCBCMzo6V2lkdGg2NCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChBcmc6OmlzVmFs
aWRBZGRyRm9ybShGdW5jUmVmVGFibGU6Om9mZnNldE9mRnVuY3Rpb25zKCksIEIzOjpXaWR0aDY0
KSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEZ1bmNSZWZU
YWJsZTo6b2Zmc2V0T2ZJbnN0YW5jZXMoKSwgQjM6OldpZHRoNjQpKTsKICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZvcm0oRnVuY1JlZlRhYmxlOjpvZmZzZXRPZkxlbmd0
aCgpLCBCMzo6V2lkdGg2NCkpOwogCi0gICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoaW5z
dGFuY2VWYWx1ZSgpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZSgpKSwgY2FsbGFibGVGdW5jdGlv
bkJ1ZmZlckxlbmd0aCk7CisgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoaW5zdGFuY2VW
YWx1ZSgpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZVB0cihtX251bUltcG9ydEZ1bmN0aW9ucywg
dGFibGVJbmRleCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKTsKICAgICAgICAgYXBw
ZW5kKE1vdmUsIEFyZzo6YWRkcihjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoLCBGdW5jUmVm
VGFibGU6Om9mZnNldE9mRnVuY3Rpb25zKCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyKTsKICAg
ICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3Ro
LCBGdW5jUmVmVGFibGU6Om9mZnNldE9mSW5zdGFuY2VzKCkpLCBpbnN0YW5jZXNCdWZmZXIpOwog
ICAgICAgICBhcHBlbmQoTW92ZTMyLCBBcmc6OmFkZHIoY2FsbGFibGVGdW5jdGlvbkJ1ZmZlckxl
bmd0aCwgVGFibGU6Om9mZnNldE9mTGVuZ3RoKCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVu
Z3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcAppbmRleCA3NzYwOTc0ODQzZWNjZTJmMWU5YjE3MDU5MjVlOTg0YWFjY2JhMjkzLi4xZWIy
NDY1MmFlNGVkNmIzMjkwNzE5ZjdlZDUzMzY5MmQ1MTFkMmY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0xOTAsOCArMTkwLDgg
QEAgcHVibGljOgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJlZkZ1
bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCiAgICAgLy8gVGFi
bGVzCi0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQoRXhw
cmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKLSAgICBQYXJ0aWFs
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5k
ZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkVGFibGVHZXQodW5zaWduZWQsIEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkVGFibGVTZXQodW5zaWduZWQsIEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lv
blR5cGUmIHZhbHVlKTsKIAogICAgIC8vIExvY2FscwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0KTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxscwogICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2FsbGVlSW5k
ZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpOwotICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+
JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3Qg
U2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVW5yZWFj
aGFibGUoKTsKIAogICAgIHZvaWQgZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbEVudHJ5PiYgY29u
dHJvbFN0YWNrLCBjb25zdCBFeHByZXNzaW9uTGlzdCogZXhwcmVzc2lvblN0YWNrKTsKQEAgLTI5
Miw2ICsyOTIsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHVpbnQzMl90IG1fbWF4TnVtSlND
YWxsQXJndW1lbnRzIHsgMCB9OworICAgIHVuc2lnbmVkIG1fbnVtSW1wb3J0RnVuY3Rpb25zOwog
fTsKIAogLy8gTWVtb3J5IGFjY2Vzc2VzIGluIFdlYkFzc2VtYmx5IGhhdmUgdW5zaWduZWQgMzIt
Yml0IG9mZnNldHMsIHdoZXJlYXMgdGhleSBoYXZlIHNpZ25lZCAzMi1iaXQgb2Zmc2V0cyBpbiBC
My4KQEAgLTM0Myw2ICszNDQsNyBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKGNvbnN0
IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHByb2NlZHVyZQogICAgICwgbV9w
cm9jKHByb2NlZHVyZSkKICAgICAsIG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHModW5saW5rZWRX
YXNtVG9XYXNtQ2FsbHMpCiAgICAgLCBtX2NvbnN0YW50SW5zZXJ0aW9uVmFsdWVzKG1fcHJvYykK
KyAgICAsIG1fbnVtSW1wb3J0RnVuY3Rpb25zKGluZm8uaW1wb3J0RnVuY3Rpb25Db3VudCgpKQog
ewogICAgIG1fY3VycmVudEJsb2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7CiAKQEAgLTU2NiwxMiAr
NTY4LDEyIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkUmVmSXNOdWxsKEV4cHJlc3Npb25UeXBl
JiB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKICAgICByZXR1cm4geyB9OwogfQogCi1h
dXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBCM0lSR2VuZXJhdG9y
OjphZGRUYWJsZUdldCh1bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSYgaW5kZXgs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBGSVhN
RTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5ODUwNj4uCiAgICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2Fs
bFZhbHVlPihtX3Byb2MsIHRvQjNUeXBlKEFueXJlZiksIG9yaWdpbigpLAogICAgICAgICBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRh
Z0NGdW5jdGlvblB0cjx2b2lkKj4oJmdldFdhc21UYWJsZUVsZW1lbnQsIEIzQ0NhbGxQdHJUYWcp
KSwKLSAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBpbmRleCk7CisgICAgICAgIGluc3RhbmNlVmFs
dWUoKSwgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3Jp
Z2luKCksIHRhYmxlSW5kZXgpLCBpbmRleCk7CiAKICAgICB7CiAgICAgICAgIENoZWNrVmFsdWUq
IGNoZWNrID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENo
ZWNrLCBvcmlnaW4oKSwKQEAgLTU4NSwxMiArNTg3LDEyIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6
YWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KSAtCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZVNl
dChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4gUGFydGlh
bFJlc3VsdAorYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZVNldCh1bnNpZ25lZCB0YWJsZUlu
ZGV4LCBFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4gUGFy
dGlhbFJlc3VsdAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KICAgICBhdXRvIHNob3VsZFRo
cm93ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEIzOjpJ
bnQzMiwgb3JpZ2luKCksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPigmc2V0V2Fz
bVRhYmxlRWxlbWVudCwgQjNDQ2FsbFB0clRhZykpLAotICAgICAgICBpbnN0YW5jZVZhbHVlKCks
IGluZGV4LCB2YWx1ZSk7CisgICAgICAgIGluc3RhbmNlVmFsdWUoKSwgbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhYmxlSW5kZXgpLCBp
bmRleCwgdmFsdWUpOwogCiAgICAgewogICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCks
CkBAIC0xMjk4LDcgKzEzMDAsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGwodWludDMy
X3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsCiAgICAgcmV0dXJu
IHsgfTsKIH0KIAotYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2ln
bmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQjNJUkdlbmVyYXRvcjo6YWRk
Q2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0
dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlSW5kZXggPSBh
cmdzLnRha2VMYXN0KCk7CiAgICAgQVNTRVJUKHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgPT0g
YXJncy5zaXplKCkpOwpAQCAtMTMxNSw3ICsxMzE3LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjph
ZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNz
aW8KICAgICBFeHByZXNzaW9uVHlwZSBtYXNrOwogICAgIHsKICAgICAgICAgRXhwcmVzc2lvblR5
cGUgdGFibGUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2Ms
IExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAotICAgICAgICAgICAgaW5zdGFuY2VWYWx1
ZSgpLCBzYWZlQ2FzdDxpbnQzMl90PihJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZSgpKSk7CisgICAg
ICAgICAgICBpbnN0YW5jZVZhbHVlKCksIHNhZmVDYXN0PGludDMyX3Q+KEluc3RhbmNlOjpvZmZz
ZXRPZlRhYmxlUHRyKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCB0YWJsZUluZGV4KSkpOwogICAgICAg
ICBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwKICAgICAgICAg
ICAgIHRhYmxlLCBzYWZlQ2FzdDxpbnQzMl90PihGdW5jUmVmVGFibGU6Om9mZnNldE9mRnVuY3Rp
b25zKCkpKTsKICAgICAgICAgaW5zdGFuY2VzQnVmZmVyID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAppbmRleCA3YzAzNDQxN2ExM2Yy
NjFiODQ3NWM4ZWRjNDI3NGZhODA1MThiOWViLi40ZGIyOGE0ZTJiNmU5ZDU1MjI4MTY4OGZhOWZh
ZGRmODkzZTVmYjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Rm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCkBA
IC0yMTMsMTAgKzIxMywxMiBAQCBzdHJ1Y3QgU2VnbWVudCB7CiB9OwogCiBzdHJ1Y3QgRWxlbWVu
dCB7Ci0gICAgRWxlbWVudChJMzJJbml0RXhwciBvZmZzZXQpCi0gICAgICAgIDogb2Zmc2V0KG9m
ZnNldCkKKyAgICBFbGVtZW50KHVpbnQzMl90IHRhYmxlSW5kZXgsIEkzMkluaXRFeHByIG9mZnNl
dCkKKyAgICAgICAgOiB0YWJsZUluZGV4KHRhYmxlSW5kZXgpCisgICAgICAgICwgb2Zmc2V0KG9m
ZnNldCkKICAgICB7IH0KIAorICAgIHVpbnQzMl90IHRhYmxlSW5kZXg7CiAgICAgSTMySW5pdEV4
cHIgb2Zmc2V0OwogICAgIFZlY3Rvcjx1aW50MzJfdD4gZnVuY3Rpb25JbmRpY2VzOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXgg
NTllZWUyNjIyZGUyNjg1OTMyYzUxYzQyZmJlOGMxOTkzZjg0ZTk1Zi4uNzNhMWE3Y2RhNzA4NjY2
NmFhOTYyODI5YzNhNzFmMzFhOWY0NTAwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTI4MywxOSArMjgzLDIzIEBAIGF1dG8gRnVu
Y3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbigpIC0+IFBhcnRpYWxSZXN1bHQK
IAogICAgIGNhc2UgVGFibGVHZXQ6IHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzKCksICJyZWZlcmVuY2VzIGFyZSBub3QgZW5h
YmxlZCIpOworICAgICAgICB1bnNpZ25lZCB0YWJsZUluZGV4OworICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMih0YWJsZUluZGV4KSwgImNhbid0IHBhcnNlIHRhYmxl
IGluZGV4Iik7CiAgICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdCwgaW5kZXg7CiAgICAgICAg
IFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8oaW5kZXgsICJ0YWJsZS5nZXQiKTsK
LSAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkVGFibGVHZXQoaW5kZXgsIHJlc3Vs
dCkpOworICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRUYWJsZUdldCh0YWJsZUlu
ZGV4LCBpbmRleCwgcmVzdWx0KSk7CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFwcGVuZChy
ZXN1bHQpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIGNhc2UgVGFibGVTZXQ6
IHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlS
ZWZlcmVuY2VzKCksICJyZWZlcmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAgICB1bnNp
Z25lZCB0YWJsZUluZGV4OworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJ
bnQzMih0YWJsZUluZGV4KSwgImNhbid0IHBhcnNlIHRhYmxlIGluZGV4Iik7CiAgICAgICAgIEV4
cHJlc3Npb25UeXBlIHZhbCwgaW5kZXg7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9O
X1NUQUNLX0lOVE8odmFsLCAidGFibGUuc2V0Iik7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBS
RVNTSU9OX1NUQUNLX0lOVE8oaW5kZXgsICJ0YWJsZS5zZXQiKTsKLSAgICAgICAgV0FTTV9UUllf
QUREX1RPX0NPTlRFWFQoYWRkVGFibGVTZXQoaW5kZXgsIHZhbCkpOworICAgICAgICBXQVNNX1RS
WV9BRERfVE9fQ09OVEVYVChhZGRUYWJsZVNldCh0YWJsZUluZGV4LCBpbmRleCwgdmFsKSk7CiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0zOTYsMTMgKzQwMCwxMyBAQCBhdXRvIEZ1
bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0
CiAKICAgICBjYXNlIENhbGxJbmRpcmVjdDogewogICAgICAgICB1aW50MzJfdCBzaWduYXR1cmVJ
bmRleDsKLSAgICAgICAgdWludDhfdCByZXNlcnZlZDsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRighbV9pbmZvLnRhYmxlSW5mb3JtYXRpb24sICJjYWxsX2luZGlyZWN0IGlzIG9ubHkgdmFs
aWQgd2hlbiBhIHRhYmxlIGlzIGRlZmluZWQgb3IgaW1wb3J0ZWQiKTsKKyAgICAgICAgdWludDhf
dCB0YWJsZUluZGV4OworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFtX2luZm8udGFibGVD
b3VudCgpLCAiY2FsbF9pbmRpcmVjdCBpcyBvbmx5IHZhbGlkIHdoZW4gYSB0YWJsZSBpcyBkZWZp
bmVkIG9yIGltcG9ydGVkIik7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFy
VUludDMyKHNpZ25hdHVyZUluZGV4KSwgImNhbid0IGdldCBjYWxsX2luZGlyZWN0J3Mgc2lnbmF0
dXJlIGluZGV4Iik7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDEo
cmVzZXJ2ZWQpLCAiY2FuJ3QgZ2V0IGNhbGxfaW5kaXJlY3QncyByZXNlcnZlZCBieXRlIik7Ci0g
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYocmVzZXJ2ZWQsICJjYWxsX2luZGlyZWN0J3MgJ3Jl
c2VydmVkJyB2YXJ1aW50MSBtdXN0IGJlIDB4MCIpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFwYXJzZVZhclVJbnQxKHRhYmxlSW5kZXgpLCAiY2FuJ3QgZ2V0IGNhbGxfaW5kaXJlY3Qn
cyB0YWJsZSBpbmRleCIpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRhYmxlSW5kZXgg
Pj0gbV9pbmZvLnRhYmxlQ291bnQoKSwgImNhbGxfaW5kaXJlY3QncyB0YWJsZSBpbmRleCAiLCB0
YWJsZUluZGV4LCAiIGludmFsaWQsIGxpbWl0IGlzICIsIG1faW5mby50YWJsZUNvdW50KCkpOwog
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1faW5mby51c2VkU2lnbmF0dXJlcy5zaXplKCkg
PD0gc2lnbmF0dXJlSW5kZXgsICJjYWxsX2luZGlyZWN0J3Mgc2lnbmF0dXJlIGluZGV4ICIsIHNp
Z25hdHVyZUluZGV4LCAiIGV4Y2VlZHMga25vd24gc2lnbmF0dXJlcyAiLCBtX2luZm8udXNlZFNp
Z25hdHVyZXMuc2l6ZSgpKTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8udGFi
bGVJbmZvcm1hdGlvbi50eXBlKCkgIT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgImNhbGxf
aW5kaXJlY3QgaXMgb25seSB2YWxpZCB3aGVuIGEgdGFibGUgaGFzIHR5cGUgYW55ZnVuYyIpOwor
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1faW5mby50YWJsZXNbdGFibGVJbmRleF0udHlw
ZSgpICE9IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYsICJjYWxsX2luZGlyZWN0IGlzIG9ubHkg
dmFsaWQgd2hlbiBhIHRhYmxlIGhhcyB0eXBlIGFueWZ1bmMiKTsKIAogICAgICAgICBjb25zdCBT
aWduYXR1cmUmIGNhbGxlZVNpZ25hdHVyZSA9IG1faW5mby51c2VkU2lnbmF0dXJlc1tzaWduYXR1
cmVJbmRleF0uZ2V0KCk7CiAgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gY2FsbGVlU2ln
bmF0dXJlLmFyZ3VtZW50Q291bnQoKSArIDE7IC8vIEFkZCB0aGUgY2FsbGVlJ3MgaW5kZXguCkBA
IC00MTYsNyArNDIwLDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHBy
ZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5zaHJp
bmsoZmlyc3RBcmd1bWVudEluZGV4KTsKIAogICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQg
PSBDb250ZXh0OjplbXB0eUV4cHJlc3Npb24oKTsKLSAgICAgICAgV0FTTV9UUllfQUREX1RPX0NP
TlRFWFQoYWRkQ2FsbEluZGlyZWN0KGNhbGxlZVNpZ25hdHVyZSwgYXJncywgcmVzdWx0KSk7Cisg
ICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZENhbGxJbmRpcmVjdCh0YWJsZUluZGV4
LCBjYWxsZWVTaWduYXR1cmUsIGFyZ3MsIHJlc3VsdCkpOwogCiAgICAgICAgIGlmIChyZXN1bHQg
IT0gQ29udGV4dDo6ZW1wdHlFeHByZXNzaW9uKCkpCiAgICAgICAgICAgICBtX2V4cHJlc3Npb25T
dGFjay5hcHBlbmQocmVzdWx0KTsKQEAgLTY4NSw3ICs2ODksMTEgQEAgYXV0byBGdW5jdGlvblBh
cnNlcjxDb250ZXh0Pjo6cGFyc2VVbnJlYWNoYWJsZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVz
dWx0CiAgICAgfQogCiAgICAgY2FzZSBUYWJsZUdldDoKLSAgICBjYXNlIFRhYmxlU2V0OgorICAg
IGNhc2UgVGFibGVTZXQ6IHsKKyAgICAgICAgdW5zaWduZWQgdGFibGVJbmRleDsKKyAgICAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIodGFibGVJbmRleCksICJjYW4ndCBw
YXJzZSB0YWJsZSBpbmRleCIpOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICB9CiAgICAgY2Fz
ZSBSZWZJc051bGw6CiAgICAgY2FzZSBSZWZOdWxsOiB7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBh
cmUgbm90IGVuYWJsZWQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21JbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFu
Y2UuY3BwCmluZGV4IDUyYmYwZjJiMzMxMGQ4YmFkYjAyZDQzOTk1MDAxZDQzZjFiZjJjODAuLmFl
ODdhZTYzMWQzZGEzYTViMjhmYjE5ZTcyYjdjZGZkMzMwZTBiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcApAQCAtNjEsMTggKzYxLDE5IEBAIEluc3Rh
bmNlOjpJbnN0YW5jZShDb250ZXh0KiBjb250ZXh0LCBSZWY8TW9kdWxlPiYmIG1vZHVsZSwgRW50
cnlGcmFtZSoqIHBvaW50ZXJUCiAgICAgICAgIGlmIChpc1N1YnR5cGUobV9tb2R1bGUuZ2V0KCku
bW9kdWxlSW5mb3JtYXRpb24oKS5nbG9iYWxzW2ldLnR5cGUsIEFueXJlZikpCiAgICAgICAgICAg
ICBtX2dsb2JhbHNUb01hcmsuc2V0KGkpOwogICAgIH0KKyAgICBtZW1zZXQoYml0d2lzZV9jYXN0
PGNoYXIqPih0aGlzKSArIG9mZnNldE9mVGFibGVQdHIobV9udW1JbXBvcnRGdW5jdGlvbnMsIDAp
LCAwLCBtX21vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50KCkgKiBzaXplb2Yo
VGFibGUqKSk7CiB9CiAKIFJlZjxJbnN0YW5jZT4gSW5zdGFuY2U6OmNyZWF0ZShDb250ZXh0KiBj
b250ZXh0LCBSZWY8TW9kdWxlPiYmIG1vZHVsZSwgRW50cnlGcmFtZSoqIHBvaW50ZXJUb1RvcEVu
dHJ5RnJhbWUsIHZvaWQqKiBwb2ludGVyVG9BY3R1YWxTdGFja0xpbWl0LCBTdG9yZVRvcENhbGxG
cmFtZUNhbGxiYWNrJiYgc3RvcmVUb3BDYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2MoYWxsb2NhdGlvblNpemUobW9kdWxlLT5tb2R1bGVJ
bmZvcm1hdGlvbigpLmltcG9ydEZ1bmN0aW9uQ291bnQoKSkpKSBJbnN0YW5jZShjb250ZXh0LCBX
VEZNb3ZlKG1vZHVsZSksIHBvaW50ZXJUb1RvcEVudHJ5RnJhbWUsIHBvaW50ZXJUb0FjdHVhbFN0
YWNrTGltaXQsIFdURk1vdmUoc3RvcmVUb3BDYWxsRnJhbWUpKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2MoYWxsb2NhdGlvblNpemUobW9kdWxlLT5tb2R1
bGVJbmZvcm1hdGlvbigpLmltcG9ydEZ1bmN0aW9uQ291bnQoKSwgbW9kdWxlLT5tb2R1bGVJbmZv
cm1hdGlvbigpLnRhYmxlQ291bnQoKSkpKSBJbnN0YW5jZShjb250ZXh0LCBXVEZNb3ZlKG1vZHVs
ZSksIHBvaW50ZXJUb1RvcEVudHJ5RnJhbWUsIHBvaW50ZXJUb0FjdHVhbFN0YWNrTGltaXQsIFdU
Rk1vdmUoc3RvcmVUb3BDYWxsRnJhbWUpKSk7CiB9CiAKIEluc3RhbmNlOjp+SW5zdGFuY2UoKSB7
IH0KIAogc2l6ZV90IEluc3RhbmNlOjpleHRyYU1lbW9yeUFsbG9jYXRlZCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGdsb2JhbE1lbW9yeUJ5dGVTaXplKG1fbW9kdWxlLmdldCgpKSArIGFsbG9jYXRp
b25TaXplKG1fbnVtSW1wb3J0RnVuY3Rpb25zKTsKKyAgICByZXR1cm4gZ2xvYmFsTWVtb3J5Qnl0
ZVNpemUobV9tb2R1bGUuZ2V0KCkpICsgYWxsb2NhdGlvblNpemUobV9udW1JbXBvcnRGdW5jdGlv
bnMsIG1fbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLnRhYmxlQ291bnQoKSk7CiB9CiAKIHZv
aWQgSW5zdGFuY2U6OnNldEdsb2JhbCh1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQpAQCAtOTks
NDIgKzEwMCw1OCBAQCB2b2lkIEluc3RhbmNlOjpzZXRGdW5jdGlvbldyYXBwZXIodW5zaWduZWQg
aSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBBU1NFUlQoZ2V0RnVuY3Rpb25XcmFwcGVyKGkpID09IHZh
bHVlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgZ2V0V2FzbVRhYmxlRWxlbWVudChJbnN0YW5jZSog
aW5zdGFuY2UsIGludDMyX3Qgc2lnbmVkSW5kZXgpCitUYWJsZSogSW5zdGFuY2U6OnRhYmxlKHVu
c2lnbmVkIGkpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQoaSA8IG1fbW9kdWxlLT5tb2R1bGVJbmZv
cm1hdGlvbigpLnRhYmxlQ291bnQoKSk7CisgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8VGFibGUq
Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mVGFibGVQdHIobV9udW1JbXBv
cnRGdW5jdGlvbnMsIGkpKTsKK30KKwordm9pZCBJbnN0YW5jZTo6c2V0VGFibGUodW5zaWduZWQg
aSwgUmVmPFRhYmxlPiYmIHRhYmxlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGkgPCBtX21vZHVs
ZS0+bW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50KCkpOworICAgIGlmIChhdXRvKiB0ID0g
dGhpcy0+dGFibGUoaSkpCisgICAgICAgIHQtPmRlcmVmKCk7CisgICAgKmJpdHdpc2VfY2FzdDxU
YWJsZSoqPihiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZUYWJsZVB0cihtX251
bUltcG9ydEZ1bmN0aW9ucywgaSkpID0gJnRhYmxlLmxlYWtSZWYoKTsKK30KKworRW5jb2RlZEpT
VmFsdWUgZ2V0V2FzbVRhYmxlRWxlbWVudChJbnN0YW5jZSogaW5zdGFuY2UsIHVuc2lnbmVkIHRh
YmxlSW5kZXgsIGludDMyX3Qgc2lnbmVkSW5kZXgpCit7CisgICAgQVNTRVJUKHRhYmxlSW5kZXgg
PCBpbnN0YW5jZS0+bW9kdWxlKCkubW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50KCkpOwog
ICAgIGlmIChzaWduZWRJbmRleCA8IDApCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgdWludDMy
X3QgaW5kZXggPSBzaWduZWRJbmRleDsKLSAgICBpZiAoaW5kZXggPj0gaW5zdGFuY2UtPnRhYmxl
KCktPmxlbmd0aCgpKQorICAgIGlmIChpbmRleCA+PSBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRl
eCktPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoaW5zdGFuY2UtPnRhYmxlKCktPmdldChpbmRleCkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoaW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5nZXQoaW5kZXgpKTsKIH0KIAot
Ym9vbCBzZXRXYXNtVGFibGVFbGVtZW50KEluc3RhbmNlKiBpbnN0YW5jZSwgaW50MzJfdCBzaWdu
ZWRJbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jVmFsdWUpCitib29sIHNldFdhc21UYWJsZUVsZW1l
bnQoSW5zdGFuY2UqIGluc3RhbmNlLCB1bnNpZ25lZCB0YWJsZUluZGV4LCBpbnQzMl90IHNpZ25l
ZEluZGV4LCBFbmNvZGVkSlNWYWx1ZSBlbmNWYWx1ZSkKIHsKKyAgICBBU1NFUlQodGFibGVJbmRl
eCA8IGluc3RhbmNlLT5tb2R1bGUoKS5tb2R1bGVJbmZvcm1hdGlvbigpLnRhYmxlQ291bnQoKSk7
CiAgICAgaWYgKHNpZ25lZEluZGV4IDwgMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
dWludDMyX3QgaW5kZXggPSBzaWduZWRJbmRleDsKLSAgICBpZiAoaW5kZXggPj0gaW5zdGFuY2Ut
PnRhYmxlKCktPmxlbmd0aCgpKQorICAgIGlmIChpbmRleCA+PSBpbnN0YW5jZS0+dGFibGUodGFi
bGVJbmRleCktPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY1ZhbHVlKTsKLSAgICBpZiAoaW5zdGFuY2UtPnRh
YmxlKCktPnR5cGUoKSA9PSBXYXNtOjpUYWJsZUVsZW1lbnRUeXBlOjpBbnlyZWYpCi0gICAgICAg
IGluc3RhbmNlLT50YWJsZSgpLT5zZXQoaW5kZXgsIHZhbHVlKTsKLSAgICBlbHNlIGlmIChpbnN0
YW5jZS0+dGFibGUoKS0+dHlwZSgpID09IFdhc206OlRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYp
IHsKKyAgICBpZiAoaW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT50eXBlKCkgPT0gV2FzbTo6
VGFibGVFbGVtZW50VHlwZTo6QW55cmVmKQorICAgICAgICBpbnN0YW5jZS0+dGFibGUodGFibGVJ
bmRleCktPnNldChpbmRleCwgdmFsdWUpOworICAgIGVsc2UgaWYgKGluc3RhbmNlLT50YWJsZSh0
YWJsZUluZGV4KS0+dHlwZSgpID09IFdhc206OlRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpIHsK
ICAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogd2FzbUZ1bmN0aW9uOwogICAgICAgICBXZWJB
c3NlbWJseVdyYXBwZXJGdW5jdGlvbiogd2FzbVdyYXBwZXJGdW5jdGlvbjsKIAogICAgICAgICBp
ZiAoaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbigqaW5zdGFuY2UtPm93bmVyPEpTT2JqZWN0Pigp
LT52bSgpLCB2YWx1ZSwgd2FzbUZ1bmN0aW9uLCB3YXNtV3JhcHBlckZ1bmN0aW9uKSkgewogICAg
ICAgICAgICAgQVNTRVJUKCEhd2FzbUZ1bmN0aW9uIHx8ICEhd2FzbVdyYXBwZXJGdW5jdGlvbik7
CiAgICAgICAgICAgICBpZiAod2FzbUZ1bmN0aW9uKQotICAgICAgICAgICAgICAgIGluc3RhbmNl
LT50YWJsZSgpLT5hc0Z1bmNyZWZUYWJsZSgpLT5zZXRGdW5jdGlvbihpbmRleCwganNDYXN0PEpT
T2JqZWN0Kj4odmFsdWUpLCB3YXNtRnVuY3Rpb24tPmltcG9ydGFibGVGdW5jdGlvbigpLCAmd2Fz
bUZ1bmN0aW9uLT5pbnN0YW5jZSgpLT5pbnN0YW5jZSgpKTsKKyAgICAgICAgICAgICAgICBpbnN0
YW5jZS0+dGFibGUodGFibGVJbmRleCktPmFzRnVuY3JlZlRhYmxlKCktPnNldEZ1bmN0aW9uKGlu
ZGV4LCBqc0Nhc3Q8SlNPYmplY3QqPih2YWx1ZSksIHdhc21GdW5jdGlvbi0+aW1wb3J0YWJsZUZ1
bmN0aW9uKCksICZ3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCktPmluc3RhbmNlKCkpOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGluc3RhbmNlLT50YWJsZSgpLT5hc0Z1bmNyZWZU
YWJsZSgpLT5zZXRGdW5jdGlvbihpbmRleCwganNDYXN0PEpTT2JqZWN0Kj4odmFsdWUpLCB3YXNt
V3JhcHBlckZ1bmN0aW9uLT5pbXBvcnRhYmxlRnVuY3Rpb24oKSwgJndhc21XcmFwcGVyRnVuY3Rp
b24tPmluc3RhbmNlKCktPmluc3RhbmNlKCkpOworICAgICAgICAgICAgICAgIGluc3RhbmNlLT50
YWJsZSh0YWJsZUluZGV4KS0+YXNGdW5jcmVmVGFibGUoKS0+c2V0RnVuY3Rpb24oaW5kZXgsIGpz
Q2FzdDxKU09iamVjdCo+KHZhbHVlKSwgd2FzbVdyYXBwZXJGdW5jdGlvbi0+aW1wb3J0YWJsZUZ1
bmN0aW9uKCksICZ3YXNtV3JhcHBlckZ1bmN0aW9uLT5pbnN0YW5jZSgpLT5pbnN0YW5jZSgpKTsK
ICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAgIGluc3RhbmNl
LT50YWJsZSgpLT5jbGVhcihpbmRleCk7CisgICAgICAgICAgICBpbnN0YW5jZS0+dGFibGUodGFi
bGVJbmRleCktPmNsZWFyKGluZGV4KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21JbnN0YW5jZS5oCmluZGV4IDdhMjNlNTYyODI0ZjgxZTM1ODYwZWU3YWIwZDk4NThhZjNiM2Iy
NzkuLjRkZDEyNzFhNDZiYTQxNzA3YzhkYTQzZWI4YzM3NDZlOTA0YmU5ZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCkBAIC00MSw4ICs0MSw4IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiBzdHJ1Y3QgQ29udGV4dDsKIGNsYXNzIEluc3Rh
bmNlOwogCi1FbmNvZGVkSlNWYWx1ZSBnZXRXYXNtVGFibGVFbGVtZW50KEluc3RhbmNlKiwgaW50
MzJfdCk7Ci1ib29sIHNldFdhc21UYWJsZUVsZW1lbnQoSW5zdGFuY2UqLCBpbnQzMl90LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNWYWx1ZSk7CitFbmNvZGVkSlNWYWx1ZSBnZXRXYXNtVGFibGVFbGVtZW50
KEluc3RhbmNlKiwgdW5zaWduZWQsIGludDMyX3QpOworYm9vbCBzZXRXYXNtVGFibGVFbGVtZW50
KEluc3RhbmNlKiwgdW5zaWduZWQsIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlIGVuY1ZhbHVlKTsK
IEVuY29kZWRKU1ZhbHVlIGRvV2FzbVJlZkZ1bmMoSW5zdGFuY2UqLCB1aW50MzJfdCk7CiAKIGNs
YXNzIEluc3RhbmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPEluc3RhbmNlPiB7CkBAIC03MCw3ICs3MCw4IEBAIHB1YmxpYzoK
ICAgICBNb2R1bGUmIG1vZHVsZSgpIHsgcmV0dXJuIG1fbW9kdWxlLmdldCgpOyB9CiAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2soKSB7IHJldHVybiBtX2NvZGVCbG9jay5nZXQoKTsgfQogICAgIE1l
bW9yeSogbWVtb3J5KCkgeyByZXR1cm4gbV9tZW1vcnkuZ2V0KCk7IH0KLSAgICBUYWJsZSogdGFi
bGUoKSB7IHJldHVybiBtX3RhYmxlLmdldCgpOyB9CisgICAgVGFibGUqIHRhYmxlKHVuc2lnbmVk
KTsKKyAgICB2b2lkIHNldFRhYmxlKHVuc2lnbmVkLCBSZWY8VGFibGU+JiYpOwogCiAgICAgdm9p
ZCogY2FjaGVkTWVtb3J5KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRNZW1vcnkuZ2V0TWF5QmVO
dWxsKGNhY2hlZE1lbW9yeVNpemUoKSk7IH0KICAgICBzaXplX3QgY2FjaGVkTWVtb3J5U2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkTWVtb3J5U2l6ZTsgfQpAQCAtODgsNyArODksNiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBtX2NhY2hlZE1lbW9yeVNpemUgPSBtZW1vcnkoKS0+c2l6ZSgp
OwogICAgICAgICB9CiAgICAgfQotICAgIHZvaWQgc2V0VGFibGUoUmVmPFRhYmxlPiYmIHRhYmxl
KSB7IG1fdGFibGUgPSBXVEZNb3ZlKHRhYmxlKTsgfQogCiAgICAgaW50MzJfdCBsb2FkSTMyR2xv
YmFsKHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFscy5nZXQoKVtpXS5wcmltaXRp
dmU7IH0KICAgICBpbnQ2NF90IGxvYWRJNjRHbG9iYWwodW5zaWduZWQgaSkgY29uc3QgeyByZXR1
cm4gbV9nbG9iYWxzLmdldCgpW2ldLnByaW1pdGl2ZTsgfQpAQCAtMTAzLDcgKzEwMyw2IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNZW1vcnkoKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fbWVtb3J5KTsgfQogICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZHbG9iYWxzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBt
X2dsb2JhbHMpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlRhYmxlKCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX3RhYmxlKTsgfQogICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZDYWNoZWRNZW1vcnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5z
dGFuY2UsIG1fY2FjaGVkTWVtb3J5KTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZD
YWNoZWRNZW1vcnlTaXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX2Nh
Y2hlZE1lbW9yeVNpemUpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlBvaW50ZXJU
b1RvcEVudHJ5RnJhbWUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fcG9p
bnRlclRvVG9wRW50cnlGcmFtZSk7IH0KQEAgLTE0Miw2ICsxNDEsOSBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIHNpemVfdCBvZmZzZXRPZkltcG9ydEZ1bmN0aW9uKHNpemVfdCBpbXBvcnRGdW5jdGlv
bk51bSkgeyByZXR1cm4gb2Zmc2V0T2ZUYWlsKCkgKyBpbXBvcnRGdW5jdGlvbk51bSAqIHNpemVv
ZihJbXBvcnRGdW5jdGlvbkluZm8pICsgT0JKRUNUX09GRlNFVE9GKEltcG9ydEZ1bmN0aW9uSW5m
bywgaW1wb3J0RnVuY3Rpb24pOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCogaW1wb3J0
RnVuY3Rpb24odW5zaWduZWQgaW1wb3J0RnVuY3Rpb25OdW0pIHsgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8VCo+KCZpbXBvcnRGdW5jdGlvbkluZm8oaW1wb3J0RnVuY3Rpb25OdW0pLT5pbXBvcnRG
dW5jdGlvbik7IH0KIAorICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEltcG9ydEZ1bmN0aW9uSW5m
bykgPT0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZih1aW50NjRfdCk+KHNpemVvZihJ
bXBvcnRGdW5jdGlvbkluZm8pKSwgIldlIHJlbHkgb24gdGhpcyBmb3IgdGhlIGFsaWdubWVudCB0
byBiZSBjb3JyZWN0Iik7CisgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZlRhYmxlUHRyKHVuc2ln
bmVkIG51bUltcG9ydEZ1bmN0aW9ucywgdW5zaWduZWQgaSkgeyByZXR1cm4gb2Zmc2V0T2ZUYWls
KCkgKyBzaXplb2YoSW1wb3J0RnVuY3Rpb25JbmZvKSAqIG51bUltcG9ydEZ1bmN0aW9ucyArIHNp
emVvZihUYWJsZSopICogaTsgfQorCiAgICAgdm9pZCBzdG9yZVRvcENhbGxGcmFtZSh2b2lkKiBj
YWxsRnJhbWUpCiAgICAgewogICAgICAgICBtX3N0b3JlVG9wQ2FsbEZyYW1lKGNhbGxGcmFtZSk7
CkBAIC0xNTAsOSArMTUyLDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbnN0YW5jZShDb250
ZXh0KiwgUmVmPE1vZHVsZT4mJiwgRW50cnlGcmFtZSoqLCB2b2lkKiosIFN0b3JlVG9wQ2FsbEZy
YW1lQ2FsbGJhY2smJik7CiAgICAgCi0gICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShD
aGVja2VkPHNpemVfdD4gbnVtSW1wb3J0RnVuY3Rpb25zKQorICAgIHN0YXRpYyBzaXplX3QgYWxs
b2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IG51bUltcG9ydEZ1bmN0aW9ucywgQ2hlY2tlZDxz
aXplX3Q+IG51bVRhYmxlcykKICAgICB7Ci0gICAgICAgIHJldHVybiAob2Zmc2V0T2ZUYWlsKCkg
KyBzaXplb2YoSW1wb3J0RnVuY3Rpb25JbmZvKSAqIG51bUltcG9ydEZ1bmN0aW9ucykudW5zYWZl
R2V0KCk7CisgICAgICAgIHJldHVybiAob2Zmc2V0T2ZUYWlsKCkgKyBzaXplb2YoSW1wb3J0RnVu
Y3Rpb25JbmZvKSAqIG51bUltcG9ydEZ1bmN0aW9ucyArIHNpemVvZihUYWJsZSopICogbnVtVGFi
bGVzKS51bnNhZmVHZXQoKTsKICAgICB9CiAgICAgdm9pZCogbV9vd25lciB7IG51bGxwdHIgfTsg
Ly8gSW4gYSBKUyBlbWJlZGRpbmcsIHRoaXMgaXMgYSBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqLgog
ICAgIENvbnRleHQqIG1fY29udGV4dCB7IG51bGxwdHIgfTsKQEAgLTE2MSw3ICsxNjMsNiBAQCBw
cml2YXRlOgogICAgIFJlZjxNb2R1bGU+IG1fbW9kdWxlOwogICAgIFJlZlB0cjxDb2RlQmxvY2s+
IG1fY29kZUJsb2NrOwogICAgIFJlZlB0cjxNZW1vcnk+IG1fbWVtb3J5OwotICAgIFJlZlB0cjxU
YWJsZT4gbV90YWJsZTsKIAogICAgIHVuaW9uIEdsb2JhbFZhbHVlIHsKICAgICAgICAgV3JpdGVC
YXJyaWVyPFVua25vd24+IGFueXJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgKaW5kZXggODhmNjZjYjYzOTE1OWMzNjlkOWRkZTYw
YTFmY2U2ZGE1ZDE3MTI4OS4uMjY4Zjg4YmIxMGJmNzQ4NWZhNjUxNjU1MjRlNzA0YjY1OTk4NzI1
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9y
bWF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9y
bWF0aW9uLmgKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IE1vZHVsZUluZm9ybWF0aW9uIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1vZHVsZUluZm9ybWF0aW9uPiB7CiAgICAgLy8gQ3Vy
cmVudGx5LCBvdXIgd2FzbSBpbXBsZW1lbnRhdGlvbiBhbGxvd3Mgb25seSBvbmUgbWVtb3J5IGFu
ZCB0YWJsZS4KICAgICAvLyBJZiB3ZSBuZWVkIHRvIHJlbW92ZSB0aGlzIGxpbWl0YXRpb24sIHdl
IHdvdWxkIGhhdmUgTWVtb3J5SW5mb3JtYXRpb24gYW5kIFRhYmxlSW5mb3JtYXRpb24gaW4gdGhl
IFZlY3RvcnMuCiAgICAgdWludDMyX3QgbWVtb3J5Q291bnQoKSBjb25zdCB7IHJldHVybiBtZW1v
cnkgPyAxIDogMDsgfQotICAgIHVpbnQzMl90IHRhYmxlQ291bnQoKSBjb25zdCB7IHJldHVybiB0
YWJsZUluZm9ybWF0aW9uID8gMSA6IDA7IH0KKyAgICB1aW50MzJfdCB0YWJsZUNvdW50KCkgY29u
c3QgeyByZXR1cm4gdGFibGVzLnNpemUoKTsgfQogCiAgICAgY29uc3QgQml0VmVjdG9yJiByZWZl
cmVuY2VkRnVuY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2VkRnVuY3Rpb25zOyB9
CiAgICAgdm9pZCBhZGRSZWZlcmVuY2VkRnVuY3Rpb24odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsg
bV9yZWZlcmVuY2VkRnVuY3Rpb25zLnNldChpbmRleCk7IH0KQEAgLTgzLDcgKzgzLDcgQEAgc3Ry
dWN0IE1vZHVsZUluZm9ybWF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1vZHVs
ZUluZm9ybWF0aW9uPiB7CiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IHN0YXJ0RnVuY3Rpb25JbmRl
eFNwYWNlOwogICAgIFZlY3RvcjxTZWdtZW50OjpQdHI+IGRhdGE7CiAgICAgVmVjdG9yPEVsZW1l
bnQ+IGVsZW1lbnRzOwotICAgIFRhYmxlSW5mb3JtYXRpb24gdGFibGVJbmZvcm1hdGlvbjsKKyAg
ICBWZWN0b3I8VGFibGVJbmZvcm1hdGlvbj4gdGFibGVzOwogICAgIFZlY3RvcjxHbG9iYWw+IGds
b2JhbHM7CiAgICAgdW5zaWduZWQgZmlyc3RJbnRlcm5hbEdsb2JhbCB7IDAgfTsKICAgICBWZWN0
b3I8Q3VzdG9tU2VjdGlvbj4gY3VzdG9tU2VjdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKaW5kZXggMjU0ZTgyNmE4MDMwOTQ0MGNk
MjU3ZjNkNzQ2YjcwMjE5Y2Q0MzQzNi4uNDFhN2JjOGJmNGU0Y2RmZTFmNDA3OWE3MWRlNDA3YWVh
ODg3YjQyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rp
b25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9u
UGFyc2VyLmNwcApAQCAtMTE5LDYgKzExOSw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJ
bXBvcnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBFeHRlcm5h
bEtpbmQ6OlRhYmxlOiB7CiAgICAgICAgICAgICBib29sIGlzSW1wb3J0ID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGtpbmRJbmRleCA9IG1faW5mby0+dGFibGVzLnNpemUoKTsKICAgICAgICAgICAgIFBh
cnRpYWxSZXN1bHQgcmVzdWx0ID0gcGFyc2VUYWJsZUhlbHBlcihpc0ltcG9ydCk7CiAgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKFdURk1vdmUocmVzdWx0LmVycm9yKCkpKTsKQEAgLTE5Myw4ICsxOTQsNiBAQCBh
dXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlUmVzaXphYmxlTGltaXRzKHVpbnQzMl90JiBpbml0aWFs
LCBPcHRpb25hbDx1aW50MzJfdD4mCiAKIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VUYWJsZUhl
bHBlcihib29sIGlzSW1wb3J0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgV0FTTV9QQVJTRVJf
RkFJTF9JRihtX2luZm8tPnRhYmxlQ291bnQoKSA+IDAsICJDYW5ub3QgaGF2ZSBtb3JlIHRoYW4g
b25lIFRhYmxlIGZvciBub3ciKTsKLQogICAgIGludDhfdCB0eXBlOwogICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIXBhcnNlSW50Nyh0eXBlKSwgImNhbid0IHBhcnNlIFRhYmxlIHR5cGUiKTsKICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKHR5cGUgIT0gV2FzbTo6QW55ZnVuYyAmJiB0eXBlICE9IFdh
c206OkFueXJlZiwgIlRhYmxlIHR5cGUgc2hvdWxkIGJlIGFueWZ1bmMgb3IgYW55cmVmLCBnb3Qg
IiwgdHlwZSk7CkBAIC0yMDksNyArMjA4LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZVRh
YmxlSGVscGVyKGJvb2wgaXNJbXBvcnQpIC0+IFBhcnRpYWxSZXN1bHQKICAgICBBU1NFUlQoIW1h
eGltdW0gfHwgKm1heGltdW0gPj0gaW5pdGlhbCk7CiAKICAgICBUYWJsZUVsZW1lbnRUeXBlIHRh
YmxlVHlwZSA9IHR5cGUgPT0gV2FzbTo6QW55ZnVuYyA/IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNy
ZWYgOiBUYWJsZUVsZW1lbnRUeXBlOjpBbnlyZWY7Ci0gICAgbV9pbmZvLT50YWJsZUluZm9ybWF0
aW9uID0gVGFibGVJbmZvcm1hdGlvbihpbml0aWFsLCBtYXhpbXVtLCBpc0ltcG9ydCwgdGFibGVU
eXBlKTsKKyAgICBtX2luZm8tPnRhYmxlcy5hcHBlbmQoVGFibGVJbmZvcm1hdGlvbihpbml0aWFs
LCBtYXhpbXVtLCBpc0ltcG9ydCwgdGFibGVUeXBlKSk7CiAKICAgICByZXR1cm4geyB9OwogfQpA
QCAtMjE4LDE1ICsyMTcsMTMgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZVRhYmxlKCkgLT4g
UGFydGlhbFJlc3VsdAogewogICAgIHVpbnQzMl90IGNvdW50OwogICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoIXBhcnNlVmFyVUludDMyKGNvdW50KSwgImNhbid0IGdldCBUYWJsZSdzIGNvdW50Iik7
Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9JRihjb3VudCA+IDEsICJUYWJsZSBjb3VudCBvZiAiLCBj
b3VudCwgIiBpcyBpbnZhbGlkLCBhdCBtb3N0IDEgaXMgYWxsb3dlZCBmb3Igbm93Iik7Ci0KLSAg
ICBpZiAoIWNvdW50KQotICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYm9vbCBpc0ltcG9ydCA9
IGZhbHNlOwotICAgIFBhcnRpYWxSZXN1bHQgcmVzdWx0ID0gcGFyc2VUYWJsZUhlbHBlcihpc0lt
cG9ydCk7Ci0gICAgaWYgKFVOTElLRUxZKCFyZXN1bHQpKQotICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoV1RGTW92ZShyZXN1bHQuZXJyb3IoKSkpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIGJvb2wgaXNJbXBvcnQgPSBmYWxzZTsKKyAg
ICAgICAgUGFydGlhbFJlc3VsdCByZXN1bHQgPSBwYXJzZVRhYmxlSGVscGVyKGlzSW1wb3J0KTsK
KyAgICAgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKFdURk1vdmUocmVzdWx0LmVycm9yKCkpKTsKKyAgICB9CiAKICAgICByZXR1cm4g
eyB9OwogfQpAQCAtMzc5LDE1ICszNzYsMTYgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUVs
ZW1lbnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
cGFyc2VWYXJVSW50MzIodGFibGVJbmRleCksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRo
IEVsZW1lbnQgdGFibGUgaW5kZXgiKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0YWJs
ZUluZGV4ID49IG1faW5mby0+dGFibGVDb3VudCgpLCAiRWxlbWVudCBzZWN0aW9uIGZvciBUYWJs
ZSAiLCB0YWJsZUluZGV4LCAiIGV4Y2VlZHMgYXZhaWxhYmxlIFRhYmxlICIsIG1faW5mby0+dGFi
bGVDb3VudCgpKTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8tPnRhYmxlc1t0
YWJsZUluZGV4XS50eXBlKCkgIT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgIlRhYmxlICIs
IHRhYmxlSW5kZXgsICIgbXVzdCBoYXZlIHR5cGUgJ2FueWZ1bmMnIHRvIGhhdmUgYW4gZWxlbWVu
dCBzZWN0aW9uIik7CiAgICAgICAgIFR5cGUgaW5pdEV4cHJUeXBlOwogICAgICAgICBXQVNNX0ZB
SUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSW5pdEV4cHIoaW5pdE9wY29kZSwgaW5pdEV4cHJCaXRz
LCBpbml0RXhwclR5cGUpKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihpbml0RXhwclR5
cGUgIT0gSTMyLCAiRWxlbWVudCBpbml0X2V4cHIgbXVzdCBwcm9kdWNlIGFuIGkzMiIpOwogICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihpbmRleENvdW50KSwgImNh
bid0IGdldCAiLCBlbGVtZW50TnVtLCAidGggaW5kZXggY291bnQgZm9yIEVsZW1lbnQgc2VjdGlv
biIpOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGluZGV4Q291bnQgPT0gc3RkOjpudW1l
cmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLCAiRWxlbWVudCBzZWN0aW9uJ3MgIiwgZWxlbWVu
dE51bSwgInRoIGluZGV4IGNvdW50IGlzIHRvbyBiaWcgIiwgaW5kZXhDb3VudCk7CiAKLSAgICAg
ICAgQVNTRVJUKCEhbV9pbmZvLT50YWJsZUluZm9ybWF0aW9uKTsKKyAgICAgICAgQVNTRVJUKCEh
bV9pbmZvLT50YWJsZXNbdGFibGVJbmRleF0pOwogCi0gICAgICAgIEVsZW1lbnQgZWxlbWVudCht
YWtlSTMySW5pdEV4cHIoaW5pdE9wY29kZSwgaW5pdEV4cHJCaXRzKSk7CisgICAgICAgIEVsZW1l
bnQgZWxlbWVudCh0YWJsZUluZGV4LCBtYWtlSTMySW5pdEV4cHIoaW5pdE9wY29kZSwgaW5pdEV4
cHJCaXRzKSk7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWVsZW1lbnQuZnVuY3Rpb25J
bmRpY2VzLnRyeVJlc2VydmVDYXBhY2l0eShpbmRleENvdW50KSwgImNhbid0IGFsbG9jYXRlIG1l
bW9yeSBmb3IgIiwgaW5kZXhDb3VudCwgIiBFbGVtZW50IGluZGljZXMiKTsKIAogICAgICAgICBm
b3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBpbmRleENvdW50OyArK2luZGV4KSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oCmluZGV4IGIxZTJiNWRmNGRmMWM2NDVj
ZjliMzMwMmVhNTg3YTA3ZmVlYzhkNmMuLmQ2YWFjNWI1NTgyZGE0MjBjZDQxNjM0ZTBlNTMyYmM1
MjU0OGE5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJs
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oCkBAIC01Nyw2
ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdWludDMyX3QgYWxsb2NhdGVkTGVuZ3RoKHVp
bnQzMl90IGxlbmd0aCk7CiAgICAgdWludDMyX3QgbWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fbWFz
azsgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCogb3duZXIoKSBjb25zdCB7IHJldHVy
biByZWludGVycHJldF9jYXN0PFQqPihtX293bmVyKTsgfQogICAgIHZvaWQgc2V0T3duZXIoSlNP
YmplY3QqIG93bmVyKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX293bmVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCmluZGV4IDdmMWFjNjFlZThhMjRj
ZDFlOTE4YjhiZGVhY2NiOGRiZTQzNDhlOTguLmQwMjBkMjkwMmM4NmY5N2U5YzY0ZDBhNzViOWY4
OWRiYzY0YjkyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21W
YWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRl
LmNwcApAQCAtMTA2LDggKzEwNiw4IEBAIHB1YmxpYzoKICAgICBSZXN1bHQgV0FSTl9VTlVTRURf
UkVUVVJOIGFkZFJlZkZ1bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQp
OwogCiAgICAgLy8gVGFibGVzCi0gICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJs
ZUdldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAg
IFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGlu
ZGV4LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUpOworICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkVGFibGVHZXQodW5zaWduZWQsIEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCk7CisgICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZVNl
dCh1bnNpZ25lZCwgRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUp
OwogCiAgICAgLy8gTG9jYWxzCiAgICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRMb2Nh
bCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CkBAIC0xNDgsNyArMTQ4
LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbHMKICAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZENhbGwodW5zaWduZWQgY2FsbGVlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIGNvbnN0
IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwot
ICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNpZ25h
dHVyZSYsIGNvbnN0IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpOworICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbEluZGlyZWN0
KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIGNvbnN0IFZlY3RvcjxFeHBy
ZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIGRpZEtpbGwoRXhwcmVzc2lvblR5cGUpIHsgfQogCkBAIC0xNzgsMjEgKzE3
OCwyMyBAQCBhdXRvIFZhbGlkYXRlOjphZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUpIC0+IFJlc3VsdAogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gVmFsaWRhdGU6OmFk
ZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkg
LT4gUmVzdWx0CithdXRvIFZhbGlkYXRlOjphZGRUYWJsZUdldCh1bnNpZ25lZCB0YWJsZUluZGV4
LCBFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFJlc3Vs
dAogewotICAgIHJlc3VsdCA9IG1fbW9kdWxlLnRhYmxlSW5mb3JtYXRpb24ud2FzbVR5cGUoKTsK
KyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKHRhYmxlSW5kZXggPj0gbV9tb2R1bGUudGFibGVD
b3VudCgpLCAidGFibGUgaW5kZXggIiwgdGFibGVJbmRleCwgIiBpcyBpbnZhbGlkLCBsaW1pdCBp
cyAiLCBtX21vZHVsZS50YWJsZUNvdW50KCkpOworICAgIHJlc3VsdCA9IG1fbW9kdWxlLnRhYmxl
c1t0YWJsZUluZGV4XS53YXNtVHlwZSgpOwogICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoVHlw
ZTo6STMyICE9IGluZGV4LCAidGFibGUuZ2V0IGluZGV4IHRvIHR5cGUgIiwgaW5kZXgsICIgZXhw
ZWN0ZWQgIiwgVHlwZTo6STMyKTsKIAogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gVmFsaWRh
dGU6OmFkZFRhYmxlU2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHZh
bHVlKSAtPiBSZXN1bHQKK2F1dG8gVmFsaWRhdGU6OmFkZFRhYmxlU2V0KHVuc2lnbmVkIHRhYmxl
SW5kZXgsIEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKSAtPiBS
ZXN1bHQKIHsKLSAgICBhdXRvIHR5cGUgPSBtX21vZHVsZS50YWJsZUluZm9ybWF0aW9uLndhc21U
eXBlKCk7CisgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRih0YWJsZUluZGV4ID49IG1fbW9kdWxl
LnRhYmxlQ291bnQoKSwgInRhYmxlIGluZGV4ICIsIHRhYmxlSW5kZXgsICIgaXMgaW52YWxpZCwg
bGltaXQgaXMgIiwgbV9tb2R1bGUudGFibGVDb3VudCgpKTsKKyAgICBhdXRvIHR5cGUgPSBtX21v
ZHVsZS50YWJsZXNbdGFibGVJbmRleF0ud2FzbVR5cGUoKTsKICAgICBXQVNNX1ZBTElEQVRPUl9G
QUlMX0lGKFR5cGU6OkkzMiAhPSBpbmRleCwgInRhYmxlLnNldCBpbmRleCB0byB0eXBlICIsIGlu
ZGV4LCAiIGV4cGVjdGVkICIsIFR5cGU6OkkzMik7CiAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9J
RighaXNTdWJ0eXBlKHZhbHVlLCB0eXBlKSwgInRhYmxlLnNldCB2YWx1ZSB0byB0eXBlICIsIHZh
bHVlLCAiIGV4cGVjdGVkICIsIHR5cGUpOwotICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYobV9t
b2R1bGUudGFibGVJbmZvcm1hdGlvbi50eXBlKCkgIT0gVGFibGVFbGVtZW50VHlwZTo6QW55cmVm
Ci0gICAgICAgICYmIG1fbW9kdWxlLnRhYmxlSW5mb3JtYXRpb24udHlwZSgpICE9IFRhYmxlRWxl
bWVudFR5cGU6OkZ1bmNyZWYsICJ0YWJsZS5zZXQgZXhwZWN0cyB0aGUgdGFibGUgdG8gaGF2ZSB0
eXBlIGFueXJlZiBvciBhbnlmdW5jIik7CisgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihtX21v
ZHVsZS50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpICE9IFRhYmxlRWxlbWVudFR5cGU6OkFueXJl
ZgorICAgICAgICAmJiBtX21vZHVsZS50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpICE9IFRhYmxl
RWxlbWVudFR5cGU6OkZ1bmNyZWYsICJ0YWJsZS5zZXQgZXhwZWN0cyB0aGUgdGFibGUgdG8gaGF2
ZSB0eXBlIGFueXJlZiBvciBhbnlmdW5jIik7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtMzc5
LDkgKzM4MSwxMCBAQCBhdXRvIFZhbGlkYXRlOjphZGRDYWxsKHVuc2lnbmVkLCBjb25zdCBTaWdu
YXR1cmUmIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPEV4cHJlcwogICAgIHJldHVybiB7IH07CiB9
CiAKLWF1dG8gVmFsaWRhdGU6OmFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmIHNpZ25h
dHVyZSwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCkgLT4gUmVzdWx0CithdXRvIFZhbGlkYXRlOjphZGRDYWxsSW5kaXJlY3QodW5zaWdu
ZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIGNvbnN0IFZlY3RvcjxF
eHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFJlc3VsdAog
ewotICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYobV9tb2R1bGUudGFibGVJbmZvcm1hdGlvbi50
eXBlKCkgIT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgIlRhYmxlIG11c3QgaGF2ZSB0eXBl
IEFueWZ1bmMgdG8gY2FsbCIpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYodGFibGVJbmRl
eCA+PSBtX21vZHVsZS50YWJsZUNvdW50KCksICJ0YWJsZSBpbmRleCAiLCB0YWJsZUluZGV4LCAi
IGlzIGludmFsaWQsIGxpbWl0IGlzICIsIG1fbW9kdWxlLnRhYmxlQ291bnQoKSk7CisgICAgV0FT
TV9WQUxJREFUT1JfRkFJTF9JRihtX21vZHVsZS50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpICE9
IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYsICJUYWJsZSBtdXN0IGhhdmUgdHlwZSBBbnlmdW5j
IHRvIGNhbGwiKTsKICAgICBjb25zdCBhdXRvIGFyZ3VtZW50Q291bnQgPSBzaWduYXR1cmUuYXJn
dW1lbnRDb3VudCgpOwogICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoYXJndW1lbnRDb3VudCAh
PSBhcmdzLnNpemUoKSAtIDEsICJhcml0eSBtaXNtYXRjaCBpbiBjYWxsX2luZGlyZWN0LCBnb3Qg
IiwgYXJncy5zaXplKCkgLSAxLCAiIGFyZ3VtZW50cywgZXhwZWN0ZWQgIiwgYXJndW1lbnRDb3Vu
dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4IDMyMzQyN2ZkOGEwYWYyNGNlMjkzNjRmZTQwNGIxNjcw
YTY4M2I1OTcuLjk5YWZhMWFjNjc0M2U5MjhmYjU1OWM5ODI3YWU0ODIyYWZjYjNlMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5j
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUlu
c3RhbmNlLmNwcApAQCAtNTMsNiArNTMsNyBAQCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OkpTV2Vi
QXNzZW1ibHlJbnN0YW5jZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8VwogICAg
IDogQmFzZSh2bSwgc3RydWN0dXJlKQogICAgICwgbV9pbnN0YW5jZShXVEZNb3ZlKGluc3RhbmNl
KSkKICAgICAsIG1fdm0oJnZtKQorICAgICwgbV90YWJsZXMobV9pbnN0YW5jZS0+bW9kdWxlKCku
bW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50KCkpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHRoaXMtPmluc3RhbmNlKCkubnVtSW1wb3J0RnVuY3Rpb25zKCk7ICsraSkKICAg
ICAgICAgbmV3ICh0aGlzLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPFdyaXRlQmFycmllcjxK
U09iamVjdD4+KGkpKSBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+KCk7CkBAIC04NSw3ICs4Niw4IEBA
IHZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9j
b2RlQmxvY2spOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNw
YWNlT2JqZWN0KTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21lbW9yeSk7Ci0g
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV90YWJsZSk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPmluc3RhbmNlKCkubW9kdWxlKCkubW9kdWxlSW5mb3Jt
YXRpb24oKS50YWJsZUNvdW50KCk7ICsraSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV90YWJsZXNbaV0pOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2Fs
bGVlKTsKICAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0aGlzT2JqZWN0LT5t
X2luc3RhbmNlLT5leHRyYU1lbW9yeUFsbG9jYXRlZCgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgdGhpc09iamVjdC0+aW5zdGFuY2UoKS5udW1JbXBvcnRGdW5jdGlvbnMoKTsgKytp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
SW5zdGFuY2UuaAppbmRleCAyMTc4NGE5MzlkOGViNDdlOGY1MjQ2ZTI2NjNlZjM2NzcwNDkyOGU1
Li5lMTYzMWZjYmIxODMzZTAxOGVmN2M0ZDYxNzgwOTE4MjRkNGU2MTI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaApA
QCAtNzEsMTEgKzcxLDEzIEBAIHB1YmxpYzoKICAgICB9CiAgICAgV2FzbTo6TWVtb3J5TW9kZSBt
ZW1vcnlNb2RlKCkgeyByZXR1cm4gbWVtb3J5KCktPm1lbW9yeSgpLm1vZGUoKTsgfQogCi0gICAg
SlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSgpIHsgcmV0dXJuIG1fdGFibGUuZ2V0KCk7IH0KLSAg
ICB2b2lkIHNldFRhYmxlKFZNJiB2bSwgSlNXZWJBc3NlbWJseVRhYmxlKiB2YWx1ZSkgewotICAg
ICAgICBBU1NFUlQoIXRhYmxlKCkpOwotICAgICAgICBtX3RhYmxlLnNldCh2bSwgdGhpcywgdmFs
dWUpOwotICAgICAgICBpbnN0YW5jZSgpLnNldFRhYmxlKG1ha2VSZWYoKnRhYmxlKCktPnRhYmxl
KCkpKTsKKyAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlKHVuc2lnbmVkIGkpIHsgcmV0dXJu
IG1fdGFibGVzW2ldLmdldCgpOyB9CisgICAgdm9pZCBzZXRUYWJsZShWTSYgdm0sIHVpbnQzMl90
IGluZGV4LCBKU1dlYkFzc2VtYmx5VGFibGUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGluZGV4IDwgbV90YWJsZXMuc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKCF0YWJsZShpbmRleCkp
OworICAgICAgICBtX3RhYmxlc1tpbmRleF0uc2V0KHZtLCB0aGlzLCB2YWx1ZSk7CisgICAgICAg
IGluc3RhbmNlKCkuc2V0VGFibGUoaW5kZXgsIG1ha2VSZWYoKnRhYmxlKGluZGV4KS0+dGFibGUo
KSkpOwogICAgIH0KIAogICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kdWxlLmdldCgpOyB9CkBAIC05OCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAg
IFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKICAgICBX
cml0ZUJhcnJpZXI8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+IG1fbW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0OwogICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5TWVtb3J5PiBtX21lbW9yeTsKLSAg
ICBXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseVRhYmxlPiBtX3RhYmxlOworICAgIFZlY3RvcjxX
cml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseVRhYmxlPj4gbV90YWJsZXM7CiAgICAgV3JpdGVCYXJy
aWVyPFdlYkFzc2VtYmx5VG9KU0NhbGxlZT4gbV9jYWxsZWU7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5j
cHAKaW5kZXggMTJiMWNlZjJkZjQ2ODc5YTJjN2YxYjM3MWY0YzU5Mzk5YmVjNjYxMy4uMDUyZDA4
NTg5Njg5NWI5ZDk0MmI0ODkwYmViMzU2MDlhYjczNWY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcApA
QCAtMTEzLDggKzExMyw2IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBKU09iamVjdCogaW1wb3J0T2JqCiAgICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKGJlZm9yZSwgIiAiLCBTdHJpbmc6OmZyb21VVEY4KGltcG9ydC5tb2R1bGUp
LCAiOiIsIFN0cmluZzo6ZnJvbVVURjgoaW1wb3J0LmZpZWxkKSwgIiAiLCBhZnRlcik7CiAgICAg
fTsKIAotICAgIGJvb2wgaGFzVGFibGVJbXBvcnQgPSBmYWxzZTsKLQogICAgIGZvciAoY29uc3Qg
YXV0byYgaW1wb3J0IDogbW9kdWxlSW5mb3JtYXRpb24uaW1wb3J0cykgewogICAgICAgICAvLyBW
YWxpZGF0aW9uIGFuZCBsaW5raW5nIG90aGVyIHRoYW4gV2FzbTo6RXh0ZXJuYWxLaW5kOjpGdW5j
dGlvbiBpcyBhbHJlYWR5IGRvbmUgaW4gSlNXZWJBc3NlbWJseUluc3RhbmNlLgogICAgICAgICAv
LyBFdmVudHVhbGx5IHdlIHdpbGwgbW92ZSBhbGwgdGhlIGxpbmtpbmcgY29kZSBpbiBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UgaGVyZSBhbmQgcmVtb3ZlIHRoaXMgc3dpdGNoIHN0YXRlbWVudC4KQEAg
LTI2NCwyMCArMjYyLDE4IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBKU09iamVjdCogaW1wb3J0T2JqCiAgICAgICAgIH0KIAog
ICAgICAgICBjYXNlIFdhc206OkV4dGVybmFsS2luZDo6VGFibGU6IHsKLSAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFoYXNUYWJsZUltcG9ydCk7IC8vIFRoaXMgc2hvdWxkIGJlIGd1YXJhbnRl
ZWQgYnkgYSB2YWxpZGF0aW9uIGZhaWx1cmUuCiAgICAgICAgICAgICAvLyA3LiBPdGhlcndpc2Ug
KGkgaXMgYSB0YWJsZSBpbXBvcnQpOgotICAgICAgICAgICAgaGFzVGFibGVJbXBvcnQgPSB0cnVl
OwogICAgICAgICAgICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IGpzRHluYW1pY0Nhc3Q8
SlNXZWJBc3NlbWJseVRhYmxlKj4odm0sIHZhbHVlKTsKICAgICAgICAgICAgIC8vIGkuIElmIHYg
aXMgbm90IGEgV2ViQXNzZW1ibHkuVGFibGUgb2JqZWN0LCB0aHJvdyBhIFdlYkFzc2VtYmx5Lkxp
bmtFcnJvci4KICAgICAgICAgICAgIGlmICghdGFibGUpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBpbXBvcnRG
YWlsTWVzc2FnZShpbXBvcnQsICJUYWJsZSBpbXBvcnQiLCAiaXMgbm90IGFuIGluc3RhbmNlIG9m
IFdlYkFzc2VtYmx5LlRhYmxlIikpKTsKIAotICAgICAgICAgICAgdWludDMyX3QgZXhwZWN0ZWRJ
bml0aWFsID0gbW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlvbi5pbml0aWFsKCk7Cisg
ICAgICAgICAgICB1aW50MzJfdCBleHBlY3RlZEluaXRpYWwgPSBtb2R1bGVJbmZvcm1hdGlvbi50
YWJsZXNbaW1wb3J0LmtpbmRJbmRleF0uaW5pdGlhbCgpOwogICAgICAgICAgICAgdWludDMyX3Qg
YWN0dWFsSW5pdGlhbCA9IHRhYmxlLT5sZW5ndGgoKTsKICAgICAgICAgICAgIGlmIChhY3R1YWxJ
bml0aWFsIDwgZXhwZWN0ZWRJbml0aWFsKQogICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRp
b24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgaW1wb3J0RmFpbE1lc3Nh
Z2UoaW1wb3J0LCAiVGFibGUgaW1wb3J0IiwgInByb3ZpZGVkIGFuICdpbml0aWFsJyB0aGF0IGlz
IHRvbyBzbWFsbCIpKSk7CiAKLSAgICAgICAgICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gZXhw
ZWN0ZWRNYXhpbXVtID0gbW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlvbi5tYXhpbXVt
KCkpIHsKKyAgICAgICAgICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gZXhwZWN0ZWRNYXhpbXVt
ID0gbW9kdWxlSW5mb3JtYXRpb24udGFibGVzW2ltcG9ydC5raW5kSW5kZXhdLm1heGltdW0oKSkg
ewogICAgICAgICAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBhY3R1YWxNYXhpbXVtID0gdGFi
bGUtPm1heGltdW0oKTsKICAgICAgICAgICAgICAgICBpZiAoIWFjdHVhbE1heGltdW0pCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtF
cnJvcihleGVjLCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiVGFibGUgaW1wb3J0Iiwg
ImRvZXMgbm90IGhhdmUgYSAnbWF4aW11bScgYnV0IHRoZSBtb2R1bGUgcmVxdWlyZXMgdGhhdCBp
dCBkb2VzIikpKTsKQEAgLTI4NSwxNCArMjgxLDE0IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBKU09iamVjdCogaW1wb3J0T2Jq
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJs
eUxpbmtFcnJvcihleGVjLCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiSW1wb3J0ZWQg
VGFibGUiLCAiJ21heGltdW0nIGlzIGxhcmdlciB0aGFuIHRoZSBtb2R1bGUncyBleHBlY3RlZCAn
bWF4aW11bSciKSkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGV4cGVjdGVk
VHlwZSA9IG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24udHlwZSgpOworICAgICAg
ICAgICAgYXV0byBleHBlY3RlZFR5cGUgPSBtb2R1bGVJbmZvcm1hdGlvbi50YWJsZXNbaW1wb3J0
LmtpbmRJbmRleF0udHlwZSgpOwogICAgICAgICAgICAgYXV0byBhY3R1YWxUeXBlID0gdGFibGUt
PnRhYmxlKCktPnR5cGUoKTsKICAgICAgICAgICAgIGlmIChleHBlY3RlZFR5cGUgIT0gYWN0dWFs
VHlwZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1i
bHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgIlRhYmxlIGlt
cG9ydCIsICJwcm92aWRlZCBhICd0eXBlJyB0aGF0IGlzIHdyb25nIikpKTsKIAogICAgICAgICAg
ICAgLy8gaWkuIEFwcGVuZCB2IHRvIHRhYmxlcy4KICAgICAgICAgICAgIC8vIGlpaS4gQXBwZW5k
IHYuW1tUYWJsZV1dIHRvIGltcG9ydHMuCi0gICAgICAgICAgICBtX2luc3RhbmNlLT5zZXRUYWJs
ZSh2bSwgdGFibGUpOworICAgICAgICAgICAgbV9pbnN0YW5jZS0+c2V0VGFibGUodm0sIGltcG9y
dC5raW5kSW5kZXgsIHRhYmxlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzAyLDE2ICsy
OTgsMTYgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRPYmoKICAgICAgICAgfQogICAgIH0KIAotICAg
IHsKLSAgICAgICAgaWYgKCEhbW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlvbiAmJiBt
b2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0aW9uLmlzSW1wb3J0KCkpIHsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbW9kdWxlSW5mb3JtYXRpb24udGFibGVDb3VudCgpOyArK2kp
IHsKKyAgICAgICAgaWYgKG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlc1tpXS5pc0ltcG9ydCgpKSB7
CiAgICAgICAgICAgICAvLyBXZSBzaG91bGQgZWl0aGVyIGhhdmUgYSBUYWJsZSBpbXBvcnQgb3Ig
d2Ugc2hvdWxkIGhhdmUgdGhyb3duIGFuIGV4Y2VwdGlvbi4KLSAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGhhc1RhYmxlSW1wb3J0KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faW5z
dGFuY2UtPnRhYmxlKGkpKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghIW1vZHVsZUluZm9y
bWF0aW9uLnRhYmxlSW5mb3JtYXRpb24gJiYgIWhhc1RhYmxlSW1wb3J0KSB7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghbW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlvbi5pc0lt
cG9ydCgpKTsKKyAgICAgICAgaWYgKCFtX2luc3RhbmNlLT50YWJsZShpKSkgeworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIW1vZHVsZUluZm9ybWF0aW9uLnRhYmxlc1tpXS5pc0ltcG9ydCgp
KTsKICAgICAgICAgICAgIC8vIFdlIGNyZWF0ZSBhIFRhYmxlIHdoZW4gaXQncyBhIFRhYmxlIGRl
ZmluaXRpb24uCi0gICAgICAgICAgICBSZWZQdHI8V2FzbTo6VGFibGU+IHdhc21UYWJsZSA9IFdh
c206OlRhYmxlOjp0cnlDcmVhdGUobW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlvbi5p
bml0aWFsKCksIG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24ubWF4aW11bSgpLCBt
b2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0aW9uLnR5cGUoKSk7CisgICAgICAgICAgICBS
ZWZQdHI8V2FzbTo6VGFibGU+IHdhc21UYWJsZSA9IFdhc206OlRhYmxlOjp0cnlDcmVhdGUobW9k
dWxlSW5mb3JtYXRpb24udGFibGVzW2ldLmluaXRpYWwoKSwgbW9kdWxlSW5mb3JtYXRpb24udGFi
bGVzW2ldLm1heGltdW0oKSwgbW9kdWxlSW5mb3JtYXRpb24udGFibGVzW2ldLnR5cGUoKSk7CiAg
ICAgICAgICAgICBpZiAoIXdhc21UYWJsZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0
aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sICJjb3VsZG4ndCBjcmVh
dGUgVGFibGUiKSk7CiAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gSlNX
ZWJBc3NlbWJseVRhYmxlOjpjcmVhdGUoZXhlYywgdm0sIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1i
bHlUYWJsZVN0cnVjdHVyZSgpLCB3YXNtVGFibGUucmVsZWFzZU5vbk51bGwoKSk7CkBAIC0zMTks
NyArMzE1LDcgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRPYmoKICAgICAgICAgICAgIC8vIElmIGl0
J3MgZGVmaW5lZCB0byBiZSB0b28gbGFyZ2UsIHdlIHNob3VsZCBoYXZlIHRocm93biBhIHZhbGlk
YXRpb24gZXJyb3IuCiAgICAgICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogICAg
ICAgICAgICAgQVNTRVJUKHRhYmxlKTsKLSAgICAgICAgICAgIG1faW5zdGFuY2UtPnNldFRhYmxl
KHZtLCB0YWJsZSk7CisgICAgICAgICAgICBtX2luc3RhbmNlLT5zZXRUYWJsZSh2bSwgaSwgdGFi
bGUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTM5NywxMCArMzkzLDggQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVs
ZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRP
YmoKICAgICAgICAgfQogICAgICAgICBjYXNlIFdhc206OkV4dGVybmFsS2luZDo6VGFibGU6IHsK
ICAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIGJlIGd1YXJhbnRlZWQgYnkgbW9kdWxlIHZlcmlm
aWNhdGlvbi4KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faW5zdGFuY2UtPnRhYmxlKCkp
OyAKLSAgICAgICAgICAgIEFTU0VSVChleHAua2luZEluZGV4ID09IDApOwotCi0gICAgICAgICAg
ICBleHBvcnRlZFZhbHVlID0gbV9pbnN0YW5jZS0+dGFibGUoKTsKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1faW5zdGFuY2UtPnRhYmxlKGV4cC5raW5kSW5kZXgpKTsKKyAgICAgICAgICAg
IGV4cG9ydGVkVmFsdWUgPSBtX2luc3RhbmNlLT50YWJsZShleHAua2luZEluZGV4KTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxLaW5k
OjpNZW1vcnk6IHsKQEAgLTQ4Niw3ICs0ODAsNiBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgV2FzbTo6TW9kdWxlJiBtb2R1
bGUgPSBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLm1vZHVsZSgpOwogICAgIFdhc206OkNvZGVCbG9j
ayogY29kZUJsb2NrID0gbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5jb2RlQmxvY2soKTsKICAgICBj
b25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYgbW9kdWxlSW5mb3JtYXRpb24gPSBtb2R1bGUu
bW9kdWxlSW5mb3JtYXRpb24oKTsKLSAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gbV9p
bnN0YW5jZS0+dGFibGUoKTsKIAogICAgIGNvbnN0IFZlY3RvcjxXYXNtOjpTZWdtZW50OjpQdHI+
JiBkYXRhID0gbW9kdWxlSW5mb3JtYXRpb24uZGF0YTsKICAgICAKQEAgLTQ5OCwxNiArNDkxLDE2
IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgICAgIC8vIEFsc28sIGl0IGNvdWxkIGJlIHRoYXQgYSB0YWJsZSB3YXNu
J3QgaW1wb3J0ZWQsIG9yIHRoYXQgdGhlIHRhYmxlCiAgICAgICAgICAgICAvLyBpbXBvcnRlZCB3
YXNuJ3QgY29tcGF0aWJsZS4gSG93ZXZlciwgdGhvc2Ugc2hvdWxkIGVycm9yIG91dCBiZWZvcmUK
ICAgICAgICAgICAgIC8vIGdldHRpbmcgaGVyZS4KLSAgICAgICAgICAgIEFTU0VSVCghIXRhYmxl
KTsKKyAgICAgICAgICAgIEFTU0VSVCghIW1faW5zdGFuY2UtPnRhYmxlKGVsZW1lbnQudGFibGVJ
bmRleCkpOwogCiAgICAgICAgICAgICBpZiAoIWVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnNpemUo
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgdWludDMyX3QgdGFi
bGVJbmRleCA9IGVsZW1lbnQub2Zmc2V0LmlzR2xvYmFsSW1wb3J0KCkKKyAgICAgICAgICAgIHVp
bnQzMl90IGVsZW1lbnRJbmRleCA9IGVsZW1lbnQub2Zmc2V0LmlzR2xvYmFsSW1wb3J0KCkKICAg
ICAgICAgICAgICAgICA/IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2luc3RhbmNlLT5pbnN0YW5j
ZSgpLmxvYWRJMzJHbG9iYWwoZWxlbWVudC5vZmZzZXQuZ2xvYmFsSW1wb3J0SW5kZXgoKSkpCiAg
ICAgICAgICAgICAgICAgOiBlbGVtZW50Lm9mZnNldC5jb25zdFZhbHVlKCk7CiAKLSAgICAgICAg
ICAgIGZuKGVsZW1lbnQsIHRhYmxlSW5kZXgpOworICAgICAgICAgICAgZm4oZWxlbWVudCwgZWxl
bWVudC50YWJsZUluZGV4LCBlbGVtZW50SW5kZXgpOwogCiAgICAgICAgICAgICBpZiAoZXhjZXB0
aW9uKQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTMxLDkgKzUyNCw5IEBAIEpTVmFsdWUg
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9
OwogCiAgICAgLy8gVmFsaWRhdGlvbiBvZiBhbGwgZWxlbWVudCByYW5nZXMgY29tZXMgYmVmb3Jl
IGFsbCBUYWJsZSBhbmQgTWVtb3J5IGluaXRpYWxpemF0aW9uLgotICAgIGZvckVhY2hFbGVtZW50
KFsmXSAoY29uc3QgV2FzbTo6RWxlbWVudCYgZWxlbWVudCwgdWludDMyX3QgdGFibGVJbmRleCkg
ewotICAgICAgICB1aW50NjRfdCBsYXN0V3JpdHRlbkluZGV4ID0gc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHRhYmxlSW5kZXgpICsgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVsZW1lbnQuZnVuY3Rpb25J
bmRpY2VzLnNpemUoKSkgLSAxOwotICAgICAgICBpZiAoVU5MSUtFTFkobGFzdFdyaXR0ZW5JbmRl
eCA+PSB0YWJsZS0+bGVuZ3RoKCkpKQorICAgIGZvckVhY2hFbGVtZW50KFsmXSAoY29uc3QgV2Fz
bTo6RWxlbWVudCYgZWxlbWVudCwgdWludDMyX3QgdGFibGVJbmRleCwgdWludDMyX3QgZWxlbWVu
dEluZGV4KSB7CisgICAgICAgIHVpbnQ2NF90IGxhc3RXcml0dGVuSW5kZXggPSBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oZWxlbWVudEluZGV4KSArIHN0YXRpY19jYXN0PHVpbnQ2NF90PihlbGVtZW50
LmZ1bmN0aW9uSW5kaWNlcy5zaXplKCkpIC0gMTsKKyAgICAgICAgaWYgKFVOTElLRUxZKGxhc3RX
cml0dGVuSW5kZXggPj0gbV9pbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPmxlbmd0aCgpKSkK
ICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IEpTVmFsdWUodGhyb3dFeGNlcHRpb24oZXhlYywgc2Nv
cGUsIGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sICJFbGVtZW50IGlzIHRy
eWluZyB0byBzZXQgYW4gb3V0IG9mIGJvdW5kcyB0YWJsZSBpbmRleCJfcykpKTsKICAgICB9KTsK
IApAQCAtNTUyLDcgKzU0NSw3IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2
YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbi52YWx1ZSgp
OwogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faW5zdGFuY2UtPmdsb2Jh
bE9iamVjdCh2bSk7Ci0gICAgZm9yRWFjaEVsZW1lbnQoWyZdIChjb25zdCBXYXNtOjpFbGVtZW50
JiBlbGVtZW50LCB1aW50MzJfdCB0YWJsZUluZGV4KSB7CisgICAgZm9yRWFjaEVsZW1lbnQoWyZd
IChjb25zdCBXYXNtOjpFbGVtZW50JiBlbGVtZW50LCB1aW50MzJfdCB0YWJsZUluZGV4LCB1aW50
MzJfdCBlbGVtZW50SW5kZXgpIHsKICAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGVs
ZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAvLyBGSVhN
RTogVGhpcyBlc3NlbnRpYWxseSBtZWFucyB3ZSdyZSBleHBvcnRpbmcgYW4gaW1wb3J0LgogICAg
ICAgICAgICAgLy8gV2UgbmVlZCBhIHN0b3J5IGhlcmUuIFdlIG5lZWQgdG8gY3JlYXRlIGEgV2Vi
QXNzZW1ibHlGdW5jdGlvbgpAQCAtNTY4LDE0ICs1NjEsMTQgQEAgSlNWYWx1ZSBXZWJBc3NlbWJs
eU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICAg
ICAgICAvLyBCZWNhdXNlIGEgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24gY2FuIG5ldmVyIHdy
YXAgYW5vdGhlciBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgLy8gdGhlIG9ubHkgdHlwZSB0aGlzIGNvdWxkIGJlIGlzIFdlYkFzc2VtYmx5RnVuY3Rpb24u
CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHdhc21GdW5jdGlvbik7Ci0gICAg
ICAgICAgICAgICAgICAgIHRhYmxlLT5zZXQodGFibGVJbmRleCwgd2FzbUZ1bmN0aW9uKTsKLSAg
ICAgICAgICAgICAgICAgICAgKyt0YWJsZUluZGV4OworICAgICAgICAgICAgICAgICAgICBtX2lu
c3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+c2V0KGVsZW1lbnRJbmRleCwgd2FzbUZ1bmN0aW9u
KTsKKyAgICAgICAgICAgICAgICAgICAgKytlbGVtZW50SW5kZXg7CiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHRhYmxl
LT5zZXQodGFibGVJbmRleCwKKyAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT50YWJsZSh0YWJs
ZUluZGV4KS0+c2V0KGVsZW1lbnRJbmRleCwKICAgICAgICAgICAgICAgICAgICAgV2ViQXNzZW1i
bHlXcmFwcGVyRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qt
PndlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uU3RydWN0dXJlKCksIGZ1bmN0aW9uSW1wb3J0LCBm
dW5jdGlvbkluZGV4LCBtX2luc3RhbmNlLmdldCgpLCBzaWduYXR1cmVJbmRleCkpOwotICAgICAg
ICAgICAgICAgICsrdGFibGVJbmRleDsKKyAgICAgICAgICAgICAgICArK2VsZW1lbnRJbmRleDsK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIApAQCAtNTg5LDggKzU4
Miw4IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gV2Vi
QXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKAogICAgICAgICAgICAgICAgIHZtLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlGdW5jdGlvblN0cnVjdHVyZSgpLCBzaWduYXR1
cmUuYXJndW1lbnRDb3VudCgpLCBTdHJpbmcoKSwgbV9pbnN0YW5jZS5nZXQoKSwgZW1iZWRkZXJF
bnRyeXBvaW50Q2FsbGVlLCBlbnRyeXBvaW50TG9hZExvY2F0aW9uLCBzaWduYXR1cmVJbmRleCk7
CiAKLSAgICAgICAgICAgIHRhYmxlLT5zZXQodGFibGVJbmRleCwgZnVuY3Rpb24pOwotICAgICAg
ICAgICAgKyt0YWJsZUluZGV4OworICAgICAgICAgICAgbV9pbnN0YW5jZS0+dGFibGUodGFibGVJ
bmRleCktPnNldChlbGVtZW50SW5kZXgsIGZ1bmN0aW9uKTsKKyAgICAgICAgICAgICsrZWxlbWVu
dEluZGV4OwogICAgICAgICB9CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL3dhc20uanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20u
anNvbgppbmRleCA3NTI4NWQ2ZmI3MDA5MDFjYTUyNzVlYTNmZDc1YmIxOGQzMGU0MTNiLi45NmU4
YTFkMjA3NzI5OTAwZDM5NTE4YjEwOTY1ZTZjNTc2ZDBmODI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vd2FzbS5qc29uCkBAIC02NywxMCArNjcsMTAgQEAKICAgICAgICAgInRlZV9sb2NhbCI6
ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM0LCAicmV0
dXJuIjogWyJhbnkiXSwgICAgICAicGFyYW1ldGVyIjogWyJhbnkiXSwgICAgICAgICAgICAgICAg
ICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJsb2NhbF9pbmRleCIsICAgICJ0eXBlIjogInZhcnVp
bnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJ3cml0ZSBhIGxvY2FsIHZhcmlhYmxlIG9yIHBhcmFtZXRlciBhbmQgcmV0dXJu
IHRoZSBzYW1lIHZhbHVlIiB9LAogICAgICAgICAiZ2V0X2dsb2JhbCI6ICAgICAgICAgIHsgImNh
dGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzUsICJyZXR1cm4iOiBbImFueSJdLCAg
ICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBb
eyJuYW1lIjogImdsb2JhbF9pbmRleCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInJlYWQg
YSBnbG9iYWwgdmFyaWFibGUiIH0sCiAgICAgICAgICJzZXRfZ2xvYmFsIjogICAgICAgICAgeyAi
Y2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzNiwgInJldHVybiI6IFtdLCAgICAg
ICAgICAgInBhcmFtZXRlciI6IFsiYW55Il0sICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6
IFt7Im5hbWUiOiAiZ2xvYmFsX2luZGV4IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAid3Jp
dGUgYSBnbG9iYWwgdmFyaWFibGUiIH0sCi0gICAgICAgICJ0YWJsZS5nZXQiOiAgICAgICAgICAg
eyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzNywgInJldHVybiI6IFsiYW55
cmVmIl0sICAgInBhcmFtZXRlciI6IFsiaTMyIl0sICAgICAgICAgICAgICAgICAgImltbWVkaWF0
ZSI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
Z2V0IGEgdGFibGUgdmFsdWUiIH0sCi0gICAgICAgICJ0YWJsZS5zZXQiOiAgICAgICAgICAgeyAi
Y2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzOCwgInJldHVybiI6IFtdLCAgICAg
ICAgICAgInBhcmFtZXRlciI6IFsiaTMyIiwgImFueXJlZiJdLCAgICAgICAgImltbWVkaWF0ZSI6
IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAic2V0
IGEgdGFibGUgdmFsdWUiIH0sCisgICAgICAgICJ0YWJsZS5nZXQiOiAgICAgICAgICAgeyAiY2F0
ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzNywgInJldHVybiI6IFsiYW55cmVmIl0s
ICAgInBhcmFtZXRlciI6IFsiaTMyIl0sICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7
Im5hbWUiOiAidGFibGVfaW5kZXgiLCAgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiZ2V0IGEg
dGFibGUgdmFsdWUiIH0sCisgICAgICAgICJ0YWJsZS5zZXQiOiAgICAgICAgICAgeyAiY2F0ZWdv
cnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzOCwgInJldHVybiI6IFtdLCAgICAgICAgICAg
InBhcmFtZXRlciI6IFsiaTMyIiwgImFueXJlZiJdLCAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5h
bWUiOiAidGFibGVfaW5kZXgiLCAgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAic2V0IGEgdGFi
bGUgdmFsdWUiIH0sCiAgICAgICAgICJjYWxsIjogICAgICAgICAgICAgICAgeyAiY2F0ZWdvcnki
OiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxNiwgInJldHVybiI6IFsiY2FsbCJdLCAgICAgInBh
cmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUi
OiAiZnVuY3Rpb25faW5kZXgiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0
aW9uIGJ5IGl0cyBpbmRleCIgfSwKLSAgICAgICAgImNhbGxfaW5kaXJlY3QiOiAgICAgICB7ICJj
YXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE3LCAicmV0dXJuIjogWyJjYWxsIl0s
ICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjog
W3sibmFtZSI6ICJ0eXBlX2luZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUi
OiAicmVzZXJ2ZWQiLCAidHlwZSI6ICJ2YXJ1aW50MSJ9XSwgICJkZXNjcmlwdGlvbiI6ICJjYWxs
IGEgZnVuY3Rpb24gaW5kaXJlY3Qgd2l0aCBhbiBleHBlY3RlZCBzaWduYXR1cmUiIH0sCisgICAg
ICAgICJjYWxsX2luZGlyZWN0IjogICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2
YWx1ZSI6ICAxNywgInJldHVybiI6IFsiY2FsbCJdLCAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJd
LCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAg
ICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogInRhYmxlX2luZGV4IiwidHlwZSI6ICJ2
YXJ1aW50MzIifV0sImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBpbmRpcmVjdCB3aXRo
IGFuIGV4cGVjdGVkIHNpZ25hdHVyZSIgfSwKICAgICAgICAgImkzMi5sb2FkOF9zIjogICAgICAg
ICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ0LCAicmV0dXJuIjogWyJp
MzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7
Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6
ICJsb2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAgICAiaTMyLmxvYWQ4X3UiOiAgICAgICAgIHsg
ImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDUsICJyZXR1cm4iOiBbImkzMiJd
LCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUi
OiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFt
ZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxv
YWQgZnJvbSBtZW1vcnkiIH0sCiAgICAgICAgICJpMzIubG9hZDE2X3MiOiAgICAgICAgeyAiY2F0
ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NiwgInJldHVybiI6IFsiaTMyIl0sICAg
ICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7
Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjog
Im9mZnNldCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBm
cm9tIG1lbW9yeSIgfSwKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggNWE5ZjE4MmJjMjU2ZmRiYTZlNTE1YzliYWUyN2E4OWZjZjY2ZDY1NC4u
YTQwODcyZGU5MWIxZjNiNzI5YzYwZDdiMDcyNmMyMzM1MjAyY2FlOCAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAor
MjAxOS0wNi0xMyAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisK
KyAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gQWRkIHN1cHBvcnQgZm9yIG11bHRpcGxlIHRhYmxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NzYw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3YXNt
L0J1aWxkZXIuanM6CisgICAgICAgICogd2FzbS9qcy1hcGkvY2FsbC1pbmRpcmVjdC5qczoKKyAg
ICAgICAgKGNvbnN0Lm9uZVRhYmxlKToKKyAgICAgICAgKGNvbnN0Lm11bHRpVGFibGUpOgorICAg
ICAgICAobXVsdGlUYWJsZSk6CisgICAgICAgIChtdWx0aVRhYmxlLlBvbHlwaGljMkltcG9ydCk6
CisgICAgICAgIChtdWx0aVRhYmxlLlZpcnR1YWxJbXBvcnQpOgorICAgICAgICAoY29uc3Qud2Fz
bU1vZHVsZVdoaWNoSW1wb3J0SlMpOiBEZWxldGVkLgorICAgICAgICAoY29uc3QubWFrZVRhYmxl
KTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChQb2x5cGhpYzJJbXBv
cnQpOiBEZWxldGVkLgorICAgICAgICAoVmlydHVhbEltcG9ydCk6IERlbGV0ZWQuCisgICAgICAg
ICogd2FzbS9qcy1hcGkvdGFibGUuanM6CisgICAgICAgIChuZXcuV2ViQXNzZW1ibHkuTW9kdWxl
KToKKyAgICAgICAgKGFzc2VydC50aHJvd3MpOgorICAgICAgICAoYXNzZXJ0QmFkVGFibGVJbXBv
cnQpOgorICAgICAgICAoYXNzZXJ0LnRydXRoeSk6CisgICAgICAgIChhc3NlcnQudGhyb3dzLm5l
dy5XZWJBc3NlbWJseS5Nb2R1bGUuYnVpbGRlci5XZWJBc3NlbWJseSk6IERlbGV0ZWQuCisgICAg
ICAgICogd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZS5qczoKKyAgICAgICAgKiB3YXNtL3Jl
ZmVyZW5jZXMvYW55cmVmX3RhYmxlX2ltcG9ydC5qczoKKyAgICAgICAgKG1ha2VJbXBvcnQpOgor
ICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUuZnVsbEdDLmFzc2VydC5lcS4xLmV4cG9ydHMu
Z2V0X3RibC5tYWtlSW1wb3J0KToKKyAgICAgICAgKHN0cmluZ19hcHBlYXJlZF9oZXJlLmZ1bGxH
Qy5hc3NlcnQuZXEuMS5leHBvcnRzLmdldF90YmwpOgorICAgICAgICAqIHdhc20vcmVmZXJlbmNl
cy9tdWx0aXRhYmxlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydC50aHJvd3MuMS5leHBvcnRz
LnNldF90YmwwKToKKyAgICAgICAgKGFzc2VydC50aHJvd3MpOgorICAgICAgICAoYXNzZXJ0LmVx
KToKKyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMvdmFsaWRhdGlvbi5qczoKKyAgICAgICAgKGFz
c2VydC50aHJvd3MubmV3LldlYkFzc2VtYmx5Lk1vZHVsZS5iaW4pOgorICAgICAgICAoYXNzZXJ0
LnRocm93cyk6CisgICAgICAgICogd2FzbS9zcGVjLXRlc3RzL2ltcG9ydHMud2FzdC5qczoKKyAg
ICAgICAgKiB3YXNtL3dhc20uanNvbjoKKwogMjAxOS0wNi0xNyAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEludHJvZHVjZSBEaXNwb3NhYmxlQ2Fs
bFNpdGVJbmRleCB0byBlbmZvcmNlIHR5cGUtc2FmZXR5CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dh
c20vQnVpbGRlci5qcyBiL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCmluZGV4IDY1ZjFmNDc3YTk4
Yjg2MjBmY2NkMmFhOGY4YzExMDllMGFmNjc4NjYuLjk3NjM3N2Y3YjNkOTEzZDRiOGRiMWY4YTc1
OTZlNzNkMjc5MWNiNDcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCisrKyBi
L0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCkBAIC0zMDYsNiArMzA2LDcgQEAgY29uc3QgX2NoZWNr
SW1tcyA9IChvcCwgaW1tcywgZXhwZWN0ZWRJbW1zLCByZXQpID0+IHsKICAgICAgICAgY2FzZSAi
dGFyZ2V0X2NvdW50IjogYnJlYWs7IC8vIGltcHJvdmUgY2hlY2tpbmcgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQogICAgICAgICBjYXNlICJ0YXJnZXRfdGFi
bGUiOiBicmVhazsgLy8gaW1wcm92ZSBjaGVja2luZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCiAgICAgICAgIGNhc2UgInJlc2VydmVkIjogYnJlYWs7IC8v
IGltcHJvdmUgY2hlY2tpbmcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MzQyMQorICAgICAgICBjYXNlICJ0YWJsZV9pbmRleCI6IGJyZWFrOyAvLyBpbXByb3ZlIGNo
ZWNraW5nIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKICAg
ICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKGBJbXBsZW1lbnRhdGlvbiBwcm9ibGVtOiB1
bmhhbmRsZWQgaW1tZWRpYXRlICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOwogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9jYWxsLWluZGlyZWN0
LmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9jYWxsLWluZGlyZWN0LmpzCmluZGV4IDAxY2Q0MmY5
Yjc5YTkyMWIxYmJhYTVhYjU3NmZjMGQ5MTA0MzgzMjguLjJmYWZjYzE5MmIxMjA1MzljN2FhNDU1
MWQ0NDNkYWFlN2JkODE5NzIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvY2FsbC1p
bmRpcmVjdC5qcworKysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL2NhbGwtaW5kaXJlY3QuanMKQEAg
LTEsNyArMSw3IEBACiBpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKIGlt
cG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwogCi1jb25zdCB3YXNtTW9kdWxlV2hp
Y2hJbXBvcnRKUyA9ICgpID0+IHsKK2NvbnN0IG9uZVRhYmxlID0gKCkgPT4gewogICAgIGNvbnN0
IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKICAgICAgICAgLlR5cGUoKS5FbmQoKQogICAgICAg
ICAuSW1wb3J0KCkKQEAgLTMxLDYgKzMxLDM5IEBAIGNvbnN0IHdhc21Nb2R1bGVXaGljaEltcG9y
dEpTID0gKCkgPT4gewogICAgIHJldHVybiBtb2R1bGU7CiB9OwogCitjb25zdCBtdWx0aVRhYmxl
ID0gKCkgPT4geworICAgIGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAg
LlR5cGUoKS5FbmQoKQorICAgICAgICAuSW1wb3J0KCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigi
aW1wIiwgImZ1bmMiLCB7IHBhcmFtczogWyJpMzIiXSB9KQorICAgICAgICAgICAgLlRhYmxlKCJp
bXAiLCAidGFibGUwIiwgeyBpbml0aWFsOiAwLCBtYXhpbXVtOiAwLCBlbGVtZW50OiAiYW55ZnVu
YyJ9KQorICAgICAgICAgICAgLlRhYmxlKCJpbXAiLCAidGFibGUiLCB7IGluaXRpYWw6IDEsIG1h
eGltdW06IDEsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgIC5FbmQoKQorICAgICAgICAu
RnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAgIC5GdW5jdGlv
bigiY2hhbmdlQ291bnRlciIpCisgICAgICAgICAgICAuRnVuY3Rpb24oImNhbGxGdW5jIikKKyAg
ICAgICAgLkVuZCgpCisgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiY2hh
bmdlQ291bnRlciIsIHsgcGFyYW1zOiBbImkzMiIsICJpMzIiXSB9KQorICAgICAgICAgICAgICAg
IC5JMzJDb25zdCg0MikKKyAgICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAg
ICAgICAuSTMyQWRkKCkKKyAgICAgICAgICAgICAgICAuR2V0TG9jYWwoMSkKKyAgICAgICAgICAg
ICAgICAuQ2FsbEluZGlyZWN0KDAsIDEpIC8vIENhbGxzIHRhYmxlWzBdKHBhcmFtWzBdICsgNDIp
LgorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImNhbGxGdW5jIiwg
eyBwYXJhbXM6IFsiaTMyIl0gfSkKKyAgICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAg
ICAgICAgICAgICAuQ2FsbCgwKSAvLyBDYWxscyBmdW5jKHBhcmFtWzBdICsgNDIpCisgICAgICAg
ICAgICAuRW5kKCkKKyAgICAgICAgLkVuZCgpOworICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2Vi
QXNzZW1ibHkoKS5nZXQoKTsKKyAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9k
dWxlKGJpbik7CisgICAgcmV0dXJuIG1vZHVsZTsKK307CisKK2ZvciAoY29uc3Qgd2FzbU1vZHVs
ZVdoaWNoSW1wb3J0SlMgb2YgW29uZVRhYmxlLCBtdWx0aVRhYmxlXSkgeworCiBjb25zdCBtYWtl
VGFibGUgPSAoKSA9PiB7CiAgICAgcmV0dXJuIG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlh
bDogMSwgbWF4aW11bTogMSwgZWxlbWVudDogImFueWZ1bmMifSk7CiB9OwpAQCAtNDAsNyArNzMs
NyBAQCBjb25zdCBtYWtlVGFibGUgPSAoKSA9PiB7CiAgICAgY29uc3QgY291bnRlclNldHRlciA9
IHYgPT4gY291bnRlciA9IHY7CiAgICAgY29uc3QgdGFibGUgPSBtYWtlVGFibGUoKTsKICAgICBj
b25zdCBtb2R1bGUgPSB3YXNtTW9kdWxlV2hpY2hJbXBvcnRKUygpOwotICAgIGNvbnN0IGluc3Rh
bmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291
bnRlclNldHRlciwgdGFibGV9IH0pOworICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFdlYkFzc2Vt
Ymx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291bnRlclNldHRlciwgdGFibGUs
IHRhYmxlMDogbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOiAwLCBtYXhpbXVtOiAwLCBl
bGVtZW50OiAiYW55ZnVuYyJ9KSB9IH0pOwogICAgIHRhYmxlLnNldCgwLCBpbnN0YW5jZS5leHBv
cnRzLmNhbGxGdW5jKTsKICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwOTY7ICsraSkgewogICAg
ICAgICAvLyBJbnZva2UgdGhpcyBhIGJ1bmNoIG9mIHRpbWVzIHRvIG1ha2Ugc3VyZSB0aGUgSUMg
aW4gdGhlIHdhc20gLT4gSlMgc3R1YiB3b3JrcyBjb3JyZWN0bHkuCkBAIC01NywxMSArOTAsMTEg
QEAgY29uc3QgbWFrZVRhYmxlID0gKCkgPT4gewogICAgIGNvbnN0IG1vZHVsZSA9IHdhc21Nb2R1
bGVXaGljaEltcG9ydEpTKCk7CiAKICAgICBjb25zdCB0YWJsZUEgPSBtYWtlVGFibGUoKTsKLSAg
ICBjb25zdCBpbnN0YW5jZUEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGlt
cDogeyBmdW5jOiBjb3VudGVyQVNldHRlciwgdGFibGU6IHRhYmxlQX0gfSk7CisgICAgY29uc3Qg
aW5zdGFuY2VBID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVu
YzogY291bnRlckFTZXR0ZXIsIHRhYmxlOiB0YWJsZUEsIHRhYmxlMDogbmV3IFdlYkFzc2VtYmx5
LlRhYmxlKHtpbml0aWFsOiAwLCBtYXhpbXVtOiAwLCBlbGVtZW50OiAiYW55ZnVuYyJ9KSB9IH0p
OwogICAgIHRhYmxlQS5zZXQoMCwgaW5zdGFuY2VBLmV4cG9ydHMuY2FsbEZ1bmMpOwogCiAgICAg
Y29uc3QgdGFibGVCID0gbWFrZVRhYmxlKCk7Ci0gICAgY29uc3QgaW5zdGFuY2VCID0gbmV3IFdl
YkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291bnRlckJTZXR0ZXIs
IHRhYmxlOiB0YWJsZUJ9IH0pOworICAgIGNvbnN0IGluc3RhbmNlQiA9IG5ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJCU2V0dGVyLCB0YWJsZTog
dGFibGVCLCB0YWJsZTA6IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDogMCwgbWF4aW11
bTogMCwgZWxlbWVudDogImFueWZ1bmMifSkgfSB9KTsKICAgICB0YWJsZUIuc2V0KDAsIGluc3Rh
bmNlQi5leHBvcnRzLmNhbGxGdW5jKTsKICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDIwNDg7ICsr
aSkgewogICAgICAgICBpbnN0YW5jZUEuZXhwb3J0cy5jaGFuZ2VDb3VudGVyKGksIDApOwpAQCAt
OTMsNyArMTI2LDcgQEAgY29uc3QgbWFrZVRhYmxlID0gKCkgPT4gewogICAgIGxldCBpbnN0YW5j
ZXMgPSBbXTsKICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bTsgKytpKSB7CiAgICAgICAgIGxl
dCB0YWJsZSA9IG1ha2VUYWJsZSgpOwotICAgICAgICBpbnN0YW5jZXNbaV0gPSBuZXcgV2ViQXNz
ZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDogeyBmdW5jOiBjb3VudGVyU2V0dGVyc1tpXSwg
dGFibGV9IH0pOworICAgICAgICBpbnN0YW5jZXNbaV0gPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFu
Y2UobW9kdWxlLCB7IGltcDogeyBmdW5jOiBjb3VudGVyU2V0dGVyc1tpXSwgdGFibGUsIHRhYmxl
MDogbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOiAwLCBtYXhpbXVtOiAwLCBlbGVtZW50
OiAiYW55ZnVuYyJ9KSB9IH0pOwogICAgICAgICB0YWJsZS5zZXQoMCwgaW5zdGFuY2VzW2ldLmV4
cG9ydHMuY2FsbEZ1bmMpOwogICAgIH0KICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDIwNDg7ICsr
aSkgewpAQCAtMTA0LDMgKzEzNyw1IEBAIGNvbnN0IG1ha2VUYWJsZSA9ICgpID0+IHsKICAgICAg
ICAgfQogICAgIH0KIH0pKCk7CisKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkv
dGFibGUuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3RhYmxlLmpzCmluZGV4IGJiY2E4OWVjMzRm
NzE5MTIwODRmNjMwOWFhYzJkNjQ1NTBhNDNiZDEuLjFiODQ0NDMxY2U2NWY5MWM0Mzc1MzI1ZDVj
YWU1M2RjOGJjMjQzYzcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGFibGUuanMK
KysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90YWJsZS5qcwpAQCAtMTMsNyArMTMsNyBAQCBpbXBv
cnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKICAgICAgICAgLkVuZCgpCiAgICAg
ICAgIC5Db2RlKCkKICAgICAgICAgLkVuZCgpOwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3
IFdlYkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCkpLCBXZWJBc3Nl
bWJseS5Db21waWxlRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBi
eXRlIDM0OiBDYW5ub3QgaGF2ZSBtb3JlIHRoYW4gb25lIFRhYmxlIGZvciBub3ciKTsKKyAgICBu
ZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSkKIH0KIAog
ewpAQCAtMzgsNyArMzgsNyBAQCBpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0Lmpz
JzsKICAgICAgICAgLkVuZCgpCiAgICAgICAgIC5Db2RlKCkKICAgICAgICAgLkVuZCgpOwotICAg
IGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFz
c2VtYmx5KCkuZ2V0KCkpLCBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsICJXZWJBc3NlbWJseS5N
b2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDE3OiBUYWJsZSBjb3VudCBvZiAyIGlzIGludmFs
aWQsIGF0IG1vc3QgMSBpcyBhbGxvd2VkIGZvciBub3cgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3Nl
bWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpKScpIik7CisgICAgbmV3IFdl
YkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCkpCiB9CiAKIHsKQEAg
LTczLDcgKzczLDI4IEBAIGltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOwog
ICAgICAgICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMCwgMSkKICAgICAgICAgICAgIC5FbmQoKQog
ICAgICAgICAuRW5kKCk7Ci0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHku
TW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSksIFdlYkFzc2VtYmx5LkNvbXBpbGVF
cnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgNjogY2FsbF9p
bmRpcmVjdCdzICdyZXNlcnZlZCcgdmFydWludDEgbXVzdCBiZSAweDAsIGluIGZ1bmN0aW9uIGF0
IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJB
c3NlbWJseSgpLmdldCgpKScpIik7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNz
ZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSksIFdlYkFzc2VtYmx5LkNv
bXBpbGVFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgNjog
Y2FsbF9pbmRpcmVjdCdzIHRhYmxlIGluZGV4IDEgaW52YWxpZCwgbGltaXQgaXMgMSwgaW4gZnVu
Y3Rpb24gYXQgaW5kZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWls
ZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCkpJykiKTsKK30KKworeworICAgIGNvbnN0IGJ1aWxkZXIg
PSBuZXcgQnVpbGRlcigpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9u
KCkuRW5kKCkKKyAgICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDoy
MCwgZWxlbWVudDoiYW55ZnVuYyJ9KQorICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOjIwLCBl
bGVtZW50OiJhbnlmdW5jIn0pCisgICAgICAgIC5FbmQoKQorICAgICAgICAuRXhwb3J0KCkKKyAg
ICAgICAgICAgIC5GdW5jdGlvbigiZm9vIikKKyAgICAgICAgLkVuZCgpCisgICAgICAgIC5Db2Rl
KCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZm9vIiwge3BhcmFtczogWyJpMzIiXX0pCisgICAg
ICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgICAgLkdldExvY2FsKDApCisg
ICAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgwLCAxKQorICAgICAgICAgICAgLkVuZCgpCisg
ICAgICAgIC5FbmQoKTsKKyAgICBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNz
ZW1ibHkoKS5nZXQoKSkKIH0KIAogewpAQCAtMTg2LDcgKzIwNyw3IEBAIGZ1bmN0aW9uIGFzc2Vy
dEJhZFRhYmxlSW1wb3J0KHRhYmxlRGVzY3JpcHRpb24sIG1lc3NhZ2UpIHsKICAgICAgICAgLkZ1
bmN0aW9uKCkuRW5kKCkKICAgICAgICAgLkNvZGUoKQogICAgICAgICAuRW5kKCk7Ci0gICAgYXNz
ZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1i
bHkoKS5nZXQoKSksIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVs
ZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgMzk6IENhbm5vdCBoYXZlIG1vcmUgdGhhbiBvbmUgVGFi
bGUgZm9yIG5vdyIpOworICAgIG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3Nl
bWJseSgpLmdldCgpKQogfQogCiAKQEAgLTMyMCwzICszNDEsMjYgQEAgYXNzZXJ0LnRocm93cygo
KSA9PiBXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ3Jvdyh1bmRlZmluZWQpLCBUeXBlRXJy
b3IsIGBleHAKICAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy50YWJsZS5sZW5ndGgsIDIw
KTsKICAgICBhc3NlcnQudHJ1dGh5KGluc3RhbmNlLmV4cG9ydHMudGFibGUgaW5zdGFuY2VvZiBX
ZWJBc3NlbWJseS5UYWJsZSk7CiB9CisKK3sKKyAgICBjb25zdCBidWlsZGVyID0gbmV3IEJ1aWxk
ZXIoKQorICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisg
ICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDAsIG1heGltdW06
IDEsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDIw
LCBtYXhpbXVtOiAzMCwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAgLkVuZCgpCisgICAg
ICAgIC5FeHBvcnQoKQorICAgICAgICAgICAgLlRhYmxlKCJ0YWJsZTAiLCAwKQorICAgICAgICAg
ICAgLlRhYmxlKCJ0YWJsZSIsIDEpCisgICAgICAgICAgICAuVGFibGUoInRhYmxlMiIsIDEpCisg
ICAgICAgIC5FbmQoKQorICAgICAgICAuQ29kZSgpLkVuZCgpOworCisgICAgY29uc3QgbW9kdWxl
ID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCkpOwor
ICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSk7Cisg
ICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMudGFibGUsIGluc3RhbmNlLmV4cG9ydHMudGFi
bGUyKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy50YWJsZS5sZW5ndGgsIDIwKTsK
KyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy50YWJsZTAubGVuZ3RoLCAwKTsKKyAgICBh
c3NlcnQudHJ1dGh5KGluc3RhbmNlLmV4cG9ydHMudGFibGUgaW5zdGFuY2VvZiBXZWJBc3NlbWJs
eS5UYWJsZSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9hbnlyZWZf
dGFibGUuanMgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9hbnlyZWZfdGFibGUuanMKaW5kZXgg
OGEwYzI5M2U1NTY5M2FhMjAxYmEzYmJmZTFkMGNlNjVkODJhNTkxZC4uYzc1MWE3NjExNmI4N2Q3
MjYyZWQ5YzQ4YjNmMjBhYzdiYTVkOTEyOCAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3JlZmVy
ZW5jZXMvYW55cmVmX3RhYmxlLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2FueXJl
Zl90YWJsZS5qcwpAQCAtMTgsMTIgKzE4LDEyIEBAIGNvbnN0ICQxID0gbmV3IFdlYkFzc2VtYmx5
Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCiAgICAgICAg
IC5GdW5jdGlvbigic2V0X3RibCIsIHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9
KQogICAgICAgICAgIC5JMzJDb25zdCgwKQogICAgICAgICAgIC5HZXRMb2NhbCgwKQotICAgICAg
ICAgIC5UYWJsZVNldCgpCisgICAgICAgICAgLlRhYmxlU2V0KDApCiAgICAgICAgIC5FbmQoKQog
CiAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVm
IiB9KQogICAgICAgICAgIC5JMzJDb25zdCgwKQotICAgICAgICAgIC5UYWJsZUdldCgpCisgICAg
ICAgICAgLlRhYmxlR2V0KDApCiAgICAgICAgIC5FbmQoKQogCiAgICAgICAgIC5GdW5jdGlvbigi
dGJsX2lzX251bGwiLCB7IHBhcmFtczogW10sIHJldDogImkzMiIgfSkKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZV9pbXBvcnQuanMgYi9KU1Rlc3RzL3dh
c20vcmVmZXJlbmNlcy9hbnlyZWZfdGFibGVfaW1wb3J0LmpzCmluZGV4IDg4Y2FiN2MyM2ZlN2I0
MGFkNjllYzIzNmQ0YmI2OWQyMzUxOGI2M2UuLjE3NDJiYjIwOGMwYTgyNDI0MjcwZWQ1YjkwZmYw
YTZiNDA4NzUzMDEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90
YWJsZV9pbXBvcnQuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvYW55cmVmX3RhYmxl
X2ltcG9ydC5qcwpAQCAtMjIsMTIgKzIyLDEyIEBAIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1
aWxkZXIuanMnOwogICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsIiwgeyBwYXJhbXM6IFsi
YW55cmVmIl0sIHJldDogInZvaWQiIH0pCiAgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQogICAg
ICAgICAgICAgICAuR2V0TG9jYWwoMCkKLSAgICAgICAgICAgICAgLlRhYmxlU2V0KCkKKyAgICAg
ICAgICAgICAgLlRhYmxlU2V0KDApCiAgICAgICAgICAgICAuRW5kKCkKIAogICAgICAgICAgICAg
LkZ1bmN0aW9uKCJnZXRfdGJsIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCiAgICAg
ICAgICAgICAgIC5JMzJDb25zdCgwKQotICAgICAgICAgICAgICAuVGFibGVHZXQoKQorICAgICAg
ICAgICAgICAuVGFibGVHZXQoMCkKICAgICAgICAgICAgIC5FbmQoKQogCiAgICAgICAgICAgICAu
RnVuY3Rpb24oInRibF9pc19udWxsIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCkBAIC04
OCwxMiArODgsMTIgQEAgaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CiAgICAg
ICAgICAgICAuRnVuY3Rpb24oInNldF90YmwiLCB7IHBhcmFtczogWyJhbnlyZWYiXSwgcmV0OiAi
dm9pZCIgfSkKICAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCiAgICAgICAgICAgICAgIC5HZXRM
b2NhbCgwKQotICAgICAgICAgICAgICAuVGFibGVTZXQoKQorICAgICAgICAgICAgICAuVGFibGVT
ZXQoMCkKICAgICAgICAgICAgIC5FbmQoKQogCiAgICAgICAgICAgICAuRnVuY3Rpb24oImdldF90
YmwiLCB7IHBhcmFtczogW10sIHJldDogImFueXJlZiIgfSkKICAgICAgICAgICAgICAgLkkzMkNv
bnN0KDApCi0gICAgICAgICAgICAgIC5UYWJsZUdldCgpCisgICAgICAgICAgICAgIC5UYWJsZUdl
dCgwKQogICAgICAgICAgICAgLkVuZCgpCiAKICAgICAgICAgICAgIC5GdW5jdGlvbigidGJsX2lz
X251bGwiLCB7IHBhcmFtczogW10sIHJldDogImkzMiIgfSkKQEAgLTEyNywxMiArMTI3LDEyIEBA
IGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwogICAgICAgICAgICAgLkZ1bmN0
aW9uKCJzZXRfdGJsIiwgeyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCiAgICAg
ICAgICAgICAgIC5JMzJDb25zdCgwKQogICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKLSAgICAg
ICAgICAgICAgLlRhYmxlU2V0KCkKKyAgICAgICAgICAgICAgLlRhYmxlU2V0KDApCiAgICAgICAg
ICAgICAuRW5kKCkKIAogICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsIiwgeyBwYXJhbXM6
IFtdLCByZXQ6ICJhbnlyZWYiIH0pCiAgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQotICAgICAg
ICAgICAgICAuVGFibGVHZXQoKQorICAgICAgICAgICAgICAuVGFibGVHZXQoMCkKICAgICAgICAg
ICAgIC5FbmQoKQogCiAgICAgICAgICAgICAuRnVuY3Rpb24oInRibF9pc19udWxsIiwgeyBwYXJh
bXM6IFtdLCByZXQ6ICJpMzIiIH0pCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNl
cy9mdW5jX3JlZi5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2Z1bmNfcmVmLmpzCmluZGV4
IDM1ZTA2ZTQ2NTgzODcyODNjNTgzMzViOWI2NmY3Nzg1M2Y5YmIxMDIuLjM2YTc5YjZmMzQyMjMy
NjdkZTRlZTRkNDJiNzY3MTU2NTlhNDk2OGIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9yZWZl
cmVuY2VzL2Z1bmNfcmVmLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2Z1bmNfcmVm
LmpzCkBAIC0yNTcsNyArMjU3LDcgQEAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1i
bHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQogICAgIC5GdW5jdGlvbigiaCIsIHsgcGFyYW1zOiBb
ImkzMiJdLCByZXQ6ICJ2b2lkIiB9KQogICAgICAgLkdldExvY2FsKDApCiAgICAgICAuSTMyQ29u
c3QoMCkKLSAgICAgIC5UYWJsZVNldCgpCisgICAgICAuVGFibGVTZXQoMCkKICAgICAuRW5kKCkK
ICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpLCBFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVs
ZSBkb2Vzbid0IHZhbGlkYXRlOiB0YWJsZS5zZXQgdmFsdWUgdG8gdHlwZSBJMzIgZXhwZWN0ZWQg
QW55ZnVuYywgaW4gZnVuY3Rpb24gYXQgaW5kZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2Vt
Ymx5Lk1vZHVsZScpIik7CiAKQEAgLTI2Nyw2ICsyNjcsNyBAQCBhc3NlcnQudGhyb3dzKCgpID0+
IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCiAgICAgICAuVHlwZSgpLkVu
ZCgpCiAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQogICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAg
IC5UYWJsZSh7aW5pdGlhbDogMCwgZWxlbWVudDogImFueXJlZiJ9KQogICAgICAgICAgICAgLlRh
YmxlKHtpbml0aWFsOiAxLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQogICAgICAgLkVuZCgpCiAgICAg
ICAuR2xvYmFsKCkKQEAgLTI5MSwxMSArMjkyLDExIEBAIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3
IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKICAgICAgICAgLkZ1bmN0aW9uKCJj
YWxsX2dsb2IiLCB7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9KQogICAgICAgICAgICAg
LkkzMkNvbnN0KDApCiAgICAgICAgICAgICAuR2V0R2xvYmFsKDApCi0gICAgICAgICAgICAuVGFi
bGVTZXQoKQorICAgICAgICAgICAgLlRhYmxlU2V0KDEpCiAKICAgICAgICAgICAgIC5HZXRMb2Nh
bCgwKQogICAgICAgICAgICAgLkkzMkNvbnN0KDApCi0gICAgICAgICAgICAuQ2FsbEluZGlyZWN0
KDIsMCkKKyAgICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMiwxKQogICAgICAgICAuRW5kKCkKIAog
ICAgICAgICAuRnVuY3Rpb24oInJldF8yMCIsIHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIi
IH0pCkBAIC0zMjgsNiArMzI5LDcgQEAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1i
bHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQogICAgICAgLlR5cGUoKS5FbmQoKQogICAgICAgLkZ1
bmN0aW9uKCkuRW5kKCkKICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAuVGFibGUoe2luaXRp
YWw6IDAsIGVsZW1lbnQ6ICJhbnlyZWYifSkKICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDog
MSwgZWxlbWVudDogImFueWZ1bmMifSkKICAgICAgIC5FbmQoKQogICAgICAgLkV4cG9ydCgpCkBA
IC0zMzgsMTIgKzM0MCwxMiBAQCBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5N
b2R1bGUoKG5ldyBCdWlsZGVyKCkpCiAgICAgICAgIC5GdW5jdGlvbigic2V0IiwgeyBwYXJhbXM6
IFsiYW55ZnVuYyJdLCByZXQ6ICJ2b2lkIiB9KQogICAgICAgICAgIC5JMzJDb25zdCgwKQogICAg
ICAgICAgIC5HZXRMb2NhbCgwKQotICAgICAgICAgIC5UYWJsZVNldCgpCisgICAgICAgICAgLlRh
YmxlU2V0KDEpCiAgICAgICAgIC5FbmQoKQogCiAgICAgICAgIC5GdW5jdGlvbigiZ2V0IiwgeyBw
YXJhbXM6IFtdLCByZXQ6ICJhbnlmdW5jIiB9KQogICAgICAgICAgICAgLkkzMkNvbnN0KDApCi0g
ICAgICAgICAgICAuVGFibGVHZXQoKQorICAgICAgICAgICAgLlRhYmxlR2V0KDEpCiAgICAgICAg
IC5FbmQoKQogICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKTsKIApAQCAtNDA1LDcg
KzQwNyw3IEBAIGZvciAobGV0IGltcG9ydGVkRnVuIG9mIFtmdW5jdGlvbihpKSB7IHJldHVybiBp
OyB9LCBtYWtlQW55ZnVuY0lkZW50KCldKSB7CiAgICAgICAgICAgLkdldExvY2FsKDApCiAgICAg
ICAgICAgLkkzMkNvbnN0KDApCiAgICAgICAgICAgLlJlZkZ1bmMoMCkKLSAgICAgICAgICAuVGFi
bGVTZXQoKQorICAgICAgICAgIC5UYWJsZVNldCgwKQogICAgICAgICAgIC5JMzJDb25zdCgwKQog
ICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMCwgMCkKICAgICAgICAgLkVuZCgpCkBAIC00MTQsNyAr
NDE2LDcgQEAgZm9yIChsZXQgaW1wb3J0ZWRGdW4gb2YgW2Z1bmN0aW9uKGkpIHsgcmV0dXJuIGk7
IH0sIG1ha2VBbnlmdW5jSWRlbnQoKV0pIHsKICAgICAgICAgICAuUmVmRnVuYygxKQogICAgICAg
ICAgIC5JMzJDb25zdCgwKQogICAgICAgICAgIC5SZWZGdW5jKDApCi0gICAgICAgICAgLlRhYmxl
U2V0KCkKKyAgICAgICAgICAuVGFibGVTZXQoMCkKICAgICAgICAgICAuSTMyQ29uc3QoMCkKICAg
ICAgICAgICAuQ2FsbEluZGlyZWN0KDAsIDApCiAgICAgICAgIC5FbmQoKQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvbXVsdGl0YWJsZS5qcyBiL0pTVGVzdHMvd2FzbS9yZWZl
cmVuY2VzL211bHRpdGFibGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGExNzNiYmU0Njk3YjM0ODQ3M2I2M2Jj
ZTVmMmQwYjA0YzgyNzQ2OQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVu
Y2VzL211bHRpdGFibGUuanMKQEAgLTAsMCArMSwzMDUgQEAKK2ltcG9ydCAqIGFzIGFzc2VydCBm
cm9tICcuLi9hc3NlcnQuanMnOworaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7
CisKK3sKKyAgICBjb25zdCAkMSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNz
ZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAg
ICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAg
ICAgICAgLlRhYmxlKHtpbml0aWFsOiAwLCBtYXhpbXVtOiAwLCBlbGVtZW50OiAiYW55cmVmIn0p
CisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAyMCwgbWF4aW11bTogMzAsIGVsZW1l
bnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRXhwb3J0KCkKKyAg
ICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9u
KCJnZXRfdGJsIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsMCIpCisgICAgICAg
ICAgICAgIC5GdW5jdGlvbigic2V0X3RibDAiKQorICAgICAgICAgICAgICAuVGFibGUoInRibCIs
IDEpCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1
bmN0aW9uKCJzZXRfdGJsIiwgeyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCisg
ICAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAg
ICAgICAgICAgICAgLlRhYmxlU2V0KDEpCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAg
ICAgLkZ1bmN0aW9uKCJnZXRfdGJsIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCisg
ICAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuVGFibGVHZXQoMSkKKyAg
ICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oImdldF90YmwwIiwgeyBw
YXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQor
ICAgICAgICAgICAgICAuVGFibGVHZXQoMCkKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAg
ICAgICAuRnVuY3Rpb24oInNldF90YmwwIiwgeyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZv
aWQiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuR2V0TG9j
YWwoMCkKKyAgICAgICAgICAgICAgLlRhYmxlU2V0KDApCisgICAgICAgICAgICAuRW5kKCkKKyAg
ICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSkpOworCisgICAgZnVsbEdDKCkKKwor
ICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF90YmwoKSwgbnVsbCkKKworICAgICQxLmV4cG9y
dHMuc2V0X3RibCgiaGkiKQorICAgIGZ1bGxHQygpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMu
Z2V0X3RibCgpLCAiaGkiKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLnRibC5nZXQoMCksICJo
aSIpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMudGJsLmdldCgxKSwgbnVsbCkKKworICAgIGFz
c2VydC50aHJvd3MoKCkgPT4gJDEuZXhwb3J0cy5nZXRfdGJsMCgpLCBFcnJvciwgIk91dCBvZiBi
b3VuZHMgdGFibGUgYWNjZXNzIChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKTsKKyAgICBh
c3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuc2V0X3RibDAobnVsbCksIEVycm9yLCAiT3V0
IG9mIGJvdW5kcyB0YWJsZSBhY2Nlc3MgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpOwor
fQorCit7CisgICAgY29uc3QgdGJsID0gbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOjAs
IGVsZW1lbnQ6ImFueXJlZiJ9KTsKKyAgICBjb25zdCAkMSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0
YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAgICAgICAgIC5U
eXBlKCkuRW5kKCkKKyAgICAgICAgICAuSW1wb3J0KCkKKyAgICAgICAgICAgICAgICAuVGFibGUo
ImltcCIsICJ0YmwiLCB7aW5pdGlhbDogMCwgZWxlbWVudDogImFueXJlZiJ9KQorICAgICAgICAg
IC5FbmQoKQorICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgLlRhYmxlKCkK
KyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDIwLCBtYXhpbXVtOiAzMCwgZWxlbWVu
dDogImFueXJlZiJ9KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FeHBvcnQoKQorICAg
ICAgICAgICAgICAuRnVuY3Rpb24oInNldF90YmwiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24o
ImdldF90YmwiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oImdldF90YmwwIikKKyAgICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsMCIpCisgICAgICAgICAgICAgIC5UYWJsZSgidGJsIiwg
MSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVu
Y3Rpb24oInNldF90YmwiLCB7IHBhcmFtczogWyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkKKyAg
ICAgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAg
ICAgICAgICAgICAuVGFibGVTZXQoMSkKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAg
ICAuRnVuY3Rpb24oImdldF90YmwiLCB7IHBhcmFtczogW10sIHJldDogImFueXJlZiIgfSkKKyAg
ICAgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgIC5UYWJsZUdldCgxKQorICAg
ICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibDAiLCB7IHBh
cmFtczogW10sIHJldDogImFueXJlZiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCisg
ICAgICAgICAgICAgIC5UYWJsZUdldCgwKQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAg
ICAgIC5GdW5jdGlvbigic2V0X3RibDAiLCB7IHBhcmFtczogWyJhbnlyZWYiXSwgcmV0OiAidm9p
ZCIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgIC5HZXRMb2Nh
bCgwKQorICAgICAgICAgICAgICAuVGFibGVTZXQoMCkKKyAgICAgICAgICAgIC5FbmQoKQorICAg
ICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSwgeyBpbXA6IHsgdGJsIH19KTsKKwor
ICAgIGZ1bGxHQygpCisKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfdGJsKCksIG51bGwp
CisKKyAgICAkMS5leHBvcnRzLnNldF90YmwoImhpIikKKyAgICBmdWxsR0MoKQorICAgIGFzc2Vy
dC5lcSgkMS5leHBvcnRzLmdldF90YmwoKSwgImhpIikKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0
cy50YmwuZ2V0KDApLCAiaGkiKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLnRibC5nZXQoMSks
IG51bGwpCisKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuZ2V0X3RibDAoKSwg
RXJyb3IsICJPdXQgb2YgYm91bmRzIHRhYmxlIGFjY2VzcyAoZXZhbHVhdGluZyAnZnVuYyguLi5h
cmdzKScpIik7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBvcnRzLnNldF90YmwwKG51
bGwpLCBFcnJvciwgIk91dCBvZiBib3VuZHMgdGFibGUgYWNjZXNzIChldmFsdWF0aW5nICdmdW5j
KC4uLmFyZ3MpJykiKTsKK30KKworeworICAgIGNvbnN0IHRibCA9IG5ldyBXZWJBc3NlbWJseS5U
YWJsZSh7aW5pdGlhbDoxLCBlbGVtZW50OiJhbnlyZWYifSk7CisgICAgY29uc3QgJDEgPSBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIo
KSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkltcG9ydCgpCisgICAgICAg
ICAgICAgICAgLlRhYmxlKCJpbXAiLCAidGJsIiwge2luaXRpYWw6IDEsIGVsZW1lbnQ6ICJhbnly
ZWYifSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAg
ICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAyMCwgbWF4
aW11bTogMzAsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAg
ICAuRXhwb3J0KCkKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsIikKKyAgICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRf
dGJsMCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibDAiKQorICAgICAgICAgICAg
ICAuVGFibGUoInRibCIsIDEpCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQor
ICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsIiwgeyBwYXJhbXM6IFsiYW55cmVmIl0sIHJl
dDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAu
R2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLlRhYmxlU2V0KDEpCisgICAgICAgICAgICAuRW5k
KCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsIiwgeyBwYXJhbXM6IFtdLCByZXQ6
ICJhbnlyZWYiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAu
VGFibGVHZXQoMSkKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24o
ImdldF90YmwwIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCisgICAgICAgICAgICAg
IC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuVGFibGVHZXQoMCkKKyAgICAgICAgICAgIC5F
bmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oInNldF90YmwwIiwgeyBwYXJhbXM6IFsiYW55
cmVmIl0sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAg
ICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLlRhYmxlU2V0KDApCisgICAgICAg
ICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSksIHsgaW1w
OiB7IHRibCB9fSk7CisKKyAgICBmdWxsR0MoKQorCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMu
Z2V0X3RibCgpLCBudWxsKQorCisgICAgJDEuZXhwb3J0cy5zZXRfdGJsKCJoaSIpCisgICAgZnVs
bEdDKCkKKyAgICAkMS5leHBvcnRzLnNldF90YmwwKG51bGwpCisgICAgYXNzZXJ0LmVxKCQxLmV4
cG9ydHMuZ2V0X3RibCgpLCAiaGkiKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF90Ymww
KCksIG51bGwpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMudGJsLmdldCgwKSwgImhpIikKKyAg
ICBhc3NlcnQuZXEoJDEuZXhwb3J0cy50YmwuZ2V0KDEpLCBudWxsKQorICAgIGFzc2VydC5lcSh0
YmwuZ2V0KDApLCBudWxsKQorfQorCit7CisgICAgY29uc3QgJDEgPSBuZXcgV2ViQXNzZW1ibHku
SW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAg
ICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAu
VGFibGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMywgbWF4aW11bTogMzAs
IGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAy
LCBtYXhpbXVtOiAzMCwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAgICAuRW5kKCkKKyAg
ICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJjYWxsX3RibDAiKQor
ICAgICAgICAgICAgICAuRnVuY3Rpb24oImNhbGxfdGJsMSIpCisgICAgICAgICAgICAgIC5GdW5j
dGlvbigicmV0NDIiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oInJldDEzMzciKQorICAgICAg
ICAgICAgICAuRnVuY3Rpb24oInJldDI1NiIpCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAg
LkVsZW1lbnQoKQorICAgICAgICAgICAgICAgIC5FbGVtZW50KHt0YWJsZUluZGV4OiAxLCBvZmZz
ZXQ6IDAsIGZ1bmN0aW9uSW5kaWNlczogWzJdfSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAg
ICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImNhbGxfdGJsMCIsIHsgcGFyYW1zOiBb
ImkzMiJdLCByZXQ6ICJpMzIiIH0pCisgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAg
ICAgICAgICAuQ2FsbEluZGlyZWN0KDEsMCkKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAg
ICAgICAuRnVuY3Rpb24oImNhbGxfdGJsMSIsIHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIi
IH0pCisgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAuQ2FsbEluZGly
ZWN0KDEsMSkKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oInJl
dDQyIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25z
dCg0MikKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oInJldDEz
MzciLCB7IHBhcmFtczogW10sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0
KDEzMzcpCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQy
NTYiLCB7IHBhcmFtczogW10sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0
KDI1NikKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgp
LmdldCgpKSk7CisKKyAgICBmdWxsR0MoKQorCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuY2Fs
bF90YmwxKDApLCA0MikKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuY2FsbF90
YmwwKDApLCBFcnJvciwgImNhbGxfaW5kaXJlY3QgdG8gYSBudWxsIHRhYmxlIGVudHJ5IChldmFs
dWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorICAgIGFzc2VydC50aHJvd3MoKCkgPT4gJDEuZXhw
b3J0cy5jYWxsX3RibDEoMSksIEVycm9yLCAiY2FsbF9pbmRpcmVjdCB0byBhIG51bGwgdGFibGUg
ZW50cnkgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCit9CisKK3sKKyAgICBjb25zdCAk
MSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcg
QnVpbGRlcigpKQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rpb24o
KS5FbmQoKQorICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0
aWFsOiAzLCBtYXhpbXVtOiAzMCwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAgICAgICAg
ICAuVGFibGUoe2luaXRpYWw6IDIsIG1heGltdW06IDMwLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQor
ICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FeHBvcnQoKQorICAgICAgICAgICAgICAuRnVu
Y3Rpb24oImNhbGxfdGJsMCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiY2FsbF90YmwxIikK
KyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQ0MiIpCisgICAgICAgICAgICAgIC5GdW5jdGlv
bigicmV0MTMzNyIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigicmV0MjU2IikKKyAgICAgICAg
ICAuRW5kKCkKKyAgICAgICAgICAuRWxlbWVudCgpCisgICAgICAgICAgICAgICAgLkVsZW1lbnQo
e3RhYmxlSW5kZXg6IDEsIG9mZnNldDogMCwgZnVuY3Rpb25JbmRpY2VzOiBbMl19KQorICAgICAg
ICAgICAgICAgIC5FbGVtZW50KHt0YWJsZUluZGV4OiAwLCBvZmZzZXQ6IDAsIGZ1bmN0aW9uSW5k
aWNlczogWzNdfSkKKyAgICAgICAgICAgICAgICAuRWxlbWVudCh7dGFibGVJbmRleDogMSwgb2Zm
c2V0OiAxLCBmdW5jdGlvbkluZGljZXM6IFs0XX0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAg
ICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJjYWxsX3RibDAiLCB7IHBhcmFtczog
WyJpMzIiXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAg
ICAgICAgICAgLkNhbGxJbmRpcmVjdCgxLDApCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJjYWxsX3RibDEiLCB7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMy
IiB9KQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLkNhbGxJbmRp
cmVjdCgxLDEpCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJy
ZXQ0MiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgICAgICAuSTMyQ29u
c3QoNDIpCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQx
MzM3IiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25z
dCgxMzM3KQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0
MjU2IiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25z
dCgyNTYpCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHko
KS5nZXQoKSkpOworCisgICAgZnVsbEdDKCkKKworICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmNh
bGxfdGJsMSgwKSwgNDIpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuY2FsbF90YmwwKDApLCAx
MzM3KQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmNhbGxfdGJsMSgxKSwgMjU2KQorICAgIGFz
c2VydC50aHJvd3MoKCkgPT4gJDEuZXhwb3J0cy5jYWxsX3RibDAoMSksIEVycm9yLCAiY2FsbF9p
bmRpcmVjdCB0byBhIG51bGwgdGFibGUgZW50cnkgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncykn
KSIpCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBvcnRzLmNhbGxfdGJsMCgyKSwgRXJy
b3IsICJjYWxsX2luZGlyZWN0IHRvIGEgbnVsbCB0YWJsZSBlbnRyeSAoZXZhbHVhdGluZyAnZnVu
YyguLi5hcmdzKScpIikKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuY2FsbF90
YmwxKDIpLCBFcnJvciwgIk91dCBvZiBib3VuZHMgY2FsbF9pbmRpcmVjdCAoZXZhbHVhdGluZyAn
ZnVuYyguLi5hcmdzKScpIikKK30KKyBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAgICAg
ICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAg
IC5UYWJsZSgpCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAzLCBtYXhpbXVtOiAz
LCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDog
MiwgbWF4aW11bTogMiwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAgICAuRW5kKCkKKyAg
ICAgICAgICAuRWxlbWVudCgpCisgICAgICAgICAgICAgICAgLkVsZW1lbnQoe3RhYmxlSW5kZXg6
IDEsIG9mZnNldDogMCwgZnVuY3Rpb25JbmRpY2VzOiBbMF19KQorICAgICAgICAgICAgICAgIC5F
bGVtZW50KHt0YWJsZUluZGV4OiAwLCBvZmZzZXQ6IDAsIGZ1bmN0aW9uSW5kaWNlczogWzBdfSkK
KyAgICAgICAgICAgICAgICAuRWxlbWVudCh7dGFibGVJbmRleDogMSwgb2Zmc2V0OiAyLCBmdW5j
dGlvbkluZGljZXM6IFswXX0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQor
ICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQ0MiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9
KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoNDIpCisgICAgICAgICAgICAuRW5kKCkKKyAgICAg
ICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSkpLCBFcnJvciwgIkVsZW1lbnQgaXMgdHJ5
aW5nIHRvIHNldCBhbiBvdXQgb2YgYm91bmRzIHRhYmxlIGluZGV4IChldmFsdWF0aW5nICduZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UnKSIpCisKK2Fzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisg
ICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAg
ICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDMsIG1heGlt
dW06IDMsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRp
YWw6IDIsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgLkVuZCgp
CisgICAgICAgICAgLkVsZW1lbnQoKQorICAgICAgICAgICAgICAgIC5FbGVtZW50KHt0YWJsZUlu
ZGV4OiAxLCBvZmZzZXQ6IDAsIGZ1bmN0aW9uSW5kaWNlczogWzBdfSkKKyAgICAgICAgICAgICAg
ICAuRWxlbWVudCh7dGFibGVJbmRleDogMCwgb2Zmc2V0OiAwLCBmdW5jdGlvbkluZGljZXM6IFsw
XX0pCisgICAgICAgICAgICAgICAgLkVsZW1lbnQoe3RhYmxlSW5kZXg6IDEsIG9mZnNldDogMiwg
ZnVuY3Rpb25JbmRpY2VzOiBbMF19KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2Rl
KCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0NDIiLCB7IHBhcmFtczogW10sIHJldDogImkz
MiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDQyKQorICAgICAgICAgICAgLkVuZCgpCisg
ICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKSwgRXJyb3IsICJXZWJBc3NlbWJs
eS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDQwOiBUYWJsZSAwIG11c3QgaGF2ZSB0eXBl
ICdhbnlmdW5jJyB0byBoYXZlIGFuIGVsZW1lbnQgc2VjdGlvbiAoZXZhbHVhdGluZyAnbmV3IFdl
YkFzc2VtYmx5Lk1vZHVsZScpIikKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2Vz
L3ZhbGlkYXRpb24uanMgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy92YWxpZGF0aW9uLmpzCmlu
ZGV4IDhmODE2MzY5YTc0ZTg5ZTQ5ZTY5MDlkZjQ0NTU1MGZkMGY2NmMyMTYuLjdmN2QxODQyN2I3
NWQzNzA1MmFkNjQ4NDVlMzcxNWMxY2FlZGVlM2QgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9y
ZWZlcmVuY2VzL3ZhbGlkYXRpb24uanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvdmFs
aWRhdGlvbi5qcwpAQCAtMjQsNiArMjQsOSBAQCBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWls
ZGVyLmpzJzsKIHsKICAgICBjb25zdCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCiAgICAgICAu
VHlwZSgpLkVuZCgpCisgICAgICAuSW1wb3J0KCkKKyAgICAgICAgICAgIC5UYWJsZSgiaW1wIiwg
InRibCIsIHtpbml0aWFsOiAyLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgLkVuZCgpCiAg
ICAgICAuRnVuY3Rpb24oKS5FbmQoKQogICAgICAgLkV4cG9ydCgpCiAgICAgICAgICAgLkZ1bmN0
aW9uKCJqIikKQEAgLTMyLDE0ICszNSwxNCBAQCBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWls
ZGVyLmpzJzsKICAgICAgICAgLkZ1bmN0aW9uKCJqIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJ2b2lk
IiB9KQogICAgICAgICAgICAgLkkzMkNvbnN0KDApCiAgICAgICAgICAgICAuSTMyQ29uc3QoMCkK
LSAgICAgICAgICAgIC5UYWJsZVNldCgpCisgICAgICAgICAgICAuVGFibGVTZXQoMCkKICAgICAg
ICAgLkVuZCgpCiAgICAgICAuRW5kKCk7CiAKICAgICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFz
c2VtYmx5KCk7CiAgICAgYmluLnRyaW0oKTsKIAotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3
IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4uZ2V0KCkpLCBXZWJBc3NlbWJseS5Db21waWxlRXJyb3Is
ICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCB2YWxpZGF0ZTogdGFibGUuc2V0IHZhbHVlIHRv
IHR5cGUgSTMyIGV4cGVjdGVkIEFueXJlZiwgaW4gZnVuY3Rpb24gYXQgaW5kZXggMCAoZXZhbHVh
dGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4uZ2V0KCkpJykiKTsKKyAgICBhc3NlcnQu
dGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluLmdldCgpKSwgV2ViQXNzZW1i
bHkuQ29tcGlsZUVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgdmFsaWRhdGU6IHRh
YmxlLnNldCB2YWx1ZSB0byB0eXBlIEkzMiBleHBlY3RlZCBBbnlmdW5jLCBpbiBmdW5jdGlvbiBh
dCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbi5nZXQoKSkn
KSIpOwogfQogCiB7CkBAIC01Niw3ICs1OSw3IEBAIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1
aWxkZXIuanMnOwogICAgICAgICAuRnVuY3Rpb24oImoiLCB7IHBhcmFtczogWyJhbnlyZWYiXSwg
cmV0OiAidm9pZCIgfSkKICAgICAgICAgICAgIC5JMzJDb25zdCgwKQogICAgICAgICAgICAgLkdl
dExvY2FsKDApCi0gICAgICAgICAgICAuVGFibGVTZXQoKQorICAgICAgICAgICAgLlRhYmxlU2V0
KDApCiAgICAgICAgIC5FbmQoKQogICAgICAgLkVuZCgpOwogCkBAIC03OSw3ICs4Miw3IEBAIGlt
cG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwogICAgICAgLkNvZGUoKQogICAgICAg
ICAuRnVuY3Rpb24oImoiLCB7IHBhcmFtczogW10sIHJldDogImFueXJlZiIgfSkKICAgICAgICAg
ICAgIC5JMzJDb25zdCgwKQotICAgICAgICAgICAgLlRhYmxlR2V0KCkKKyAgICAgICAgICAgIC5U
YWJsZUdldCgwKQogICAgICAgICAuRW5kKCkKICAgICAgIC5FbmQoKTsKIApkaWZmIC0tZ2l0IGEv
SlNUZXN0cy93YXNtL3NwZWMtdGVzdHMvaW1wb3J0cy53YXN0LmpzIGIvSlNUZXN0cy93YXNtL3Nw
ZWMtdGVzdHMvaW1wb3J0cy53YXN0LmpzCmluZGV4IDQ4ZDE0MDk2NmE0Zjc1ODM2NzA4MDI5N2E0
YzAzY2FhNzQ4MzM1MzEuLjQ5NGQ4MmNkYTNkNWJhNGZkZmJiNWI5NjBlMDYyZDJhMTQzYjQ0ZDQg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9zcGVjLXRlc3RzL2ltcG9ydHMud2FzdC5qcworKysg
Yi9KU1Rlc3RzL3dhc20vc3BlYy10ZXN0cy9pbXBvcnRzLndhc3QuanMKQEAgLTE4OSwxMyArMTg5
LDE0IEBAIGFzc2VydF90cmFwKCgpID0+IGNhbGwoJDE0LCAiY2FsbCIsIFszXSkpOwogYXNzZXJ0
X3RyYXAoKCkgPT4gY2FsbCgkMTQsICJjYWxsIiwgWzEwMF0pKTsKIAogLy8gaW1wb3J0cy53YXN0
OjI5MwotYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgw
Mlx4OGRceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAwXHgwMVx4NzBceDAwXHgwYVx4MDBceDAw
XHgwMVx4NzBceDAwXHgwYSIpOworLy8gVGhlc2UgdGVzdHMgYXNzZXJ0IHRoYXQgd2UgY2FuIG9u
bHkgaGF2ZSBvbmUgdGFibGUuIFRoZSByZWZlcmVuY2VzIHNwZWMgbWFrZXMgdGhpcyBpbmNvcnJl
Y3QsIGFuZCB0aGlzIHNob3VsZCBiZSBmaXhlZCB3aGVuIGl0IGdldHMgbWVyZ2VkIGludG8gdGhl
IG1haW4gc3BlYy4KKy8vYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4
MDBceDAwXHgwMlx4OGRceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAwXHgwMVx4NzBceDAwXHgw
YVx4MDBceDAwXHgwMVx4NzBceDAwXHgwYSIpOwogCiAvLyBpbXBvcnRzLndhc3Q6Mjk3Ci1hc3Nl
cnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAyXHg4N1x4ODBc
eDgwXHg4MFx4MDBceDAxXHgwMFx4MDBceDAxXHg3MFx4MDBceDBhXHgwNFx4ODRceDgwXHg4MFx4
ODBceDAwXHgwMVx4NzBceDAwXHgwYSIpOworLy9hc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDcz
XHg2ZFx4MDFceDAwXHgwMFx4MDBceDAyXHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDBc
eDAxXHg3MFx4MDBceDBhXHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBceDAwXHgwYSIp
OwogCiAvLyBpbXBvcnRzLndhc3Q6MzAxCi1hc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDA0XHg4N1x4ODBceDgwXHg4MFx4MDBceDAyXHg3MFx4MDBceDBh
XHg3MFx4MDBceDBhIik7CisvL2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4
MDBceDAwXHgwMFx4MDRceDg3XHg4MFx4ODBceDgwXHgwMFx4MDJceDcwXHgwMFx4MGFceDcwXHgw
MFx4MGEiKTsKIAogLy8gaW1wb3J0cy53YXN0OjMwNgogbGV0ICQxNSA9IGluc3RhbmNlKCJceDAw
XHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDJceDk3XHg4MFx4ODBceDgwXHgwMFx4MDFc
eDA0XHg3NFx4NjVceDczXHg3NFx4MGNceDc0XHg2MVx4NjJceDZjXHg2NVx4MmRceDMxXHgzMFx4
MmRceDY5XHg2ZVx4NjZceDAxXHg3MFx4MDBceDBhIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dh
c20vd2FzbS5qc29uIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgppbmRleCA2NGNhMGI1YjIwOGQ5
MWIyYmY3ODY1NTc1NzEyNDczZDViNzI1MGEzLi40NTMwOGZiYmQ1NzUzMmY1ZWJhMTM5NTZjYWFj
ZDA1NTkzNGFjYmFmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCisrKyBiL0pT
VGVzdHMvd2FzbS93YXNtLmpzb24KQEAgLTY3LDEwICs2NywxMCBAQAogICAgICAgICAidGVlX2xv
Y2FsIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzQs
ICJyZXR1cm4iOiBbImFueSJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFueSJdLCAgICAgICAgICAg
ICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImxvY2FsX2luZGV4IiwgICAgInR5cGUiOiAi
dmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIndyaXRlIGEgbG9jYWwgdmFyaWFibGUgb3IgcGFyYW1ldGVyIGFuZCBy
ZXR1cm4gdGhlIHNhbWUgdmFsdWUiIH0sCiAgICAgICAgICJnZXRfZ2xvYmFsIjogICAgICAgICAg
eyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzNSwgInJldHVybiI6IFsiYW55
Il0sICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0
ZSI6IFt7Im5hbWUiOiAiZ2xvYmFsX2luZGV4IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
cmVhZCBhIGdsb2JhbCB2YXJpYWJsZSIgfSwKICAgICAgICAgInNldF9nbG9iYWwiOiAgICAgICAg
ICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM2LCAicmV0dXJuIjogW10s
ICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhbnkiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJnbG9iYWxfaW5kZXgiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJ3cml0ZSBhIGdsb2JhbCB2YXJpYWJsZSIgfSwKLSAgICAgICAgInRhYmxlLmdldCI6ICAgICAg
ICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM3LCAicmV0dXJuIjog
WyJhbnlyZWYiXSwgICAicGFyYW1ldGVyIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAiaW1t
ZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJnZXQgYSB0YWJsZSB2YWx1ZSIgfSwKLSAgICAgICAgInRhYmxlLnNldCI6ICAgICAgICAg
ICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM4LCAicmV0dXJuIjogW10s
ICAgICAgICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiYW55cmVmIl0sICAgICAgICAiaW1tZWRp
YXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJzZXQgYSB0YWJsZSB2YWx1ZSIgfSwKKyAgICAgICAgInRhYmxlLmdldCI6ICAgICAgICAgICB7
ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM3LCAicmV0dXJuIjogWyJhbnly
ZWYiXSwgICAicGFyYW1ldGVyIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRl
IjogW3sibmFtZSI6ICJ0YWJsZV9pbmRleCIsICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJn
ZXQgYSB0YWJsZSB2YWx1ZSIgfSwKKyAgICAgICAgInRhYmxlLnNldCI6ICAgICAgICAgICB7ICJj
YXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM4LCAicmV0dXJuIjogW10sICAgICAg
ICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiYW55cmVmIl0sICAgICAgICAiaW1tZWRpYXRlIjog
W3sibmFtZSI6ICJ0YWJsZV9pbmRleCIsICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJzZXQg
YSB0YWJsZSB2YWx1ZSIgfSwKICAgICAgICAgImNhbGwiOiAgICAgICAgICAgICAgICB7ICJjYXRl
Z29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE2LCAicmV0dXJuIjogWyJjYWxsIl0sICAg
ICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3si
bmFtZSI6ICJmdW5jdGlvbl9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJjYWxsIGEg
ZnVuY3Rpb24gYnkgaXRzIGluZGV4IiB9LAotICAgICAgICAiY2FsbF9pbmRpcmVjdCI6ICAgICAg
IHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTcsICJyZXR1cm4iOiBbImNh
bGwiXSwgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlh
dGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsi
bmFtZSI6ICJyZXNlcnZlZCIsICJ0eXBlIjogInZhcnVpbnQxIn1dLCAgImRlc2NyaXB0aW9uIjog
ImNhbGwgYSBmdW5jdGlvbiBpbmRpcmVjdCB3aXRoIGFuIGV4cGVjdGVkIHNpZ25hdHVyZSIgfSwK
KyAgICAgICAgImNhbGxfaW5kaXJlY3QiOiAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAg
ICAgInZhbHVlIjogIDE3LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAicGFyYW1ldGVyIjogWyJj
YWxsIl0sICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBlX2luZGV4
IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAidGFibGVfaW5kZXgiLCJ0eXBl
IjogInZhcnVpbnQzMiJ9XSwiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIGluZGlyZWN0
IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAogICAgICAgICAiaTMyLmxvYWQ4X3MiOiAg
ICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDQsICJyZXR1cm4i
OiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICJp
bW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMy
In0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0
aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCiAgICAgICAgICJpMzIubG9hZDhfdSI6ICAgICAg
ICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NSwgInJldHVybiI6IFsi
aTMyIl0sICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgImltbWVk
aWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwg
eyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24i
OiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKICAgICAgICAgImkzMi5sb2FkMTZfcyI6ICAgICAgICB7
ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ2LCAicmV0dXJuIjogWyJpMzIi
XSwgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICAiaW1tZWRpYXRl
IjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5h
bWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJs
b2FkIGZyb20gbWVtb3J5IiB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372313</attachid>
            <date>2019-06-17 19:00:22 -0700</date>
            <delta_ts>2019-06-18 10:29:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198760-20190617190022.patch</filename>
            <type>text/plain</type>
            <size>101717</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZDBlOGJmYWJmOGRmOTZhOWM0ZWI5ZTQyZmMzYWYxMGQyNDE1MTA5Li45MjgzOTQzZDAxYWU5Njhh
ZWM3M2MxYTJlMGQwNmJiMTQ1NGZiMmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTkgQEAKKzIwMTktMDYtMTcgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBzdXBwb3J0IGZvciBt
dWx0aXBsZSB0YWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5ODc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAg
ICAgIFN1cHBvcnQgbXVsdGlwbGUgd2FzbSB0YWJsZXMuIFdlIHR1cm4gdGFibGVJbmZvcm1hdGlv
biBpbnRvIGEgdGFibGVzIGFycmF5LCBhbmQgdXBkYXRlIGFsbCBvZiB0aGUKKyAgICAgICAgZXhp
c3RpbmcgdXNlcnMgdG8gZ2l2ZSBhIHRhYmxlIGluZGV4LgorCisgICAgICAgICogd2FzbS9XYXNt
QWlySVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6
QWlySVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRk
VGFibGVHZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVT
ZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0
KToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206
OkIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdl
bmVyYXRvcjo6YWRkVGFibGVTZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9y
OjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAqIHdhc20vV2FzbUV4Y2VwdGlvblR5cGUuaDoK
KyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RWxlbWVu
dDo6RWxlbWVudCk6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZVVucmVh
Y2hhYmxlRXhwcmVzc2lvbik6CisgICAgICAgICogd2FzbS9XYXNtSW5zdGFuY2UuY3BwOgorICAg
ICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6SW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpXYXNt
OjpJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OmV4dHJh
TWVtb3J5QWxsb2NhdGVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnRh
YmxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnNldFRhYmxlKToKKyAgICAgICAg
KiB3YXNtL1dhc21JbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6dXBk
YXRlQ2FjaGVkTWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9m
R2xvYmFscyk6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpvZmZzZXRPZlRhYmxlUHRy
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OmFsbG9jYXRpb25TaXplKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
V2FzbTo6SW5zdGFuY2U6OnNldFRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6
SW5zdGFuY2U6Om9mZnNldE9mVGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbU1v
ZHVsZUluZm9ybWF0aW9uLmg6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZUluZm9ybWF0aW9u
Ojp0YWJsZUNvdW50IGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJbXBvcnQpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZVRhYmxlSGVscGVyKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VUYWJsZSk6CisgICAgICAgIChKU0M6
Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCk6CisgICAgICAgICogd2FzbS9XYXNt
VGFibGUuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6VGFibGU6Om93bmVyIGNvbnN0KToKKyAgICAg
ICAgKiB3YXNtL1dhc21WYWxpZGF0ZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRl
OjphZGRUYWJsZUdldCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRUYWJsZVNl
dCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRDYWxsSW5kaXJlY3QpOgorICAg
ICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdh
c20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3Nl
bWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkOjpsaW5rKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1
YXRlKToKKyAgICAgICAgKiB3YXNtL3dhc20uanNvbjoKKworICAgICAgICAqIHdhc20vV2FzbUFp
cklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OkFp
cklSR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFRh
YmxlR2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlU2V0
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCk6
CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OkIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpC
M0lSR2VuZXJhdG9yOjphZGRUYWJsZUdldCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5l
cmF0b3I6OmFkZFRhYmxlU2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6
YWRkQ2FsbEluZGlyZWN0KToKKyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6RWxlbWVudDo6RWxlbWVudCk6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rp
b25QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46
OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENv
bnRleHQ+OjpwYXJzZVVucmVhY2hhYmxlRXhwcmVzc2lvbik6CisgICAgICAgICogd2FzbS9XYXNt
SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6SW5zdGFuY2UpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6SW5zdGFuY2U6OmV4dHJhTWVtb3J5QWxsb2NhdGVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
V2FzbTo6SW5zdGFuY2U6OnRhYmxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnNl
dFRhYmxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6Z2V0V2FzbVRhYmxlRWxlbWVudCk6CisgICAg
ICAgIChKU0M6Oldhc206OnNldFdhc21UYWJsZUVsZW1lbnQpOgorICAgICAgICAqIHdhc20vV2Fz
bUluc3RhbmNlLmg6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjp1cGRhdGVDYWNoZWRN
ZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZHbG9iYWxzKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mVGFibGVQdHIpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpX
YXNtOjpJbnN0YW5jZTo6dGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0
YW5jZTo6c2V0VGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6
b2Zmc2V0T2ZUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtTGltaXRzLmg6Cisg
ICAgICAgICogd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6TW9kdWxlSW5mb3JtYXRpb246OnRhYmxlQ291bnQgY29uc3QpOgorICAgICAgICAqIHdhc20v
V2FzbVNlY3Rpb25QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2Vy
OjpwYXJzZUltcG9ydCk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNl
VGFibGVIZWxwZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZVRh
YmxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KToK
KyAgICAgICAgKiB3YXNtL1dhc21UYWJsZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpUYWJsZTo6
b3duZXIgY29uc3QpOgorICAgICAgICAqIHdhc20vV2FzbVZhbGlkYXRlLmNwcDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6VmFsaWRhdGU6OmFkZFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6
VmFsaWRhdGU6OmFkZFRhYmxlU2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsaWRhdGU6OmFk
ZENhbGxJbmRpcmVjdCk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2Uu
Y3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OkpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaDoKKyAgICAg
ICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmspOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJs
eU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUpOgorICAgICAgICAqIHdhc20vd2FzbS5qc29uOgorCiAy
MDE5LTA2LTE3ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBWYWxpZGF0ZSB0aGF0IHRhYmxlIGVsZW1lbnQgdHlwZSBpcyBmdW5jcmVmIGlmIHVz
aW5nIGFuIGVsZW1lbnQgc2VjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21BaXJJUkdlbmVyYXRvci5jcHAKaW5kZXggYWIzMDRhNTVkMzZiMzU4NDIyYjFhMDdkMmE0
NGIwMDBkZjUyMmRlNy4uMzc0MTc3NTBhZDYxNDQ1OWViOTFjYzhiYjUzZWRhZTc3ZjA5MWU3OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwCkBAIC0yMzcsOCArMjM3LDggQEAgcHVibGljOgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIGFkZFJlZkZ1bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpOwogCiAgICAgLy8gVGFibGVzCi0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gYWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZVNl
dChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSk7CisgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQodW5zaWduZWQsIEV4cHJl
c3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVTZXQodW5zaWduZWQsIEV4cHJlc3Npb25U
eXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKTsKIAogICAgIC8vIExvY2FscwogICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBDYWxscwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENh
bGwodWludDMyX3QgY2FsbGVlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNz
aW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmLCBW
ZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QodW5zaWdu
ZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYg
YXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkVW5yZWFjaGFibGUoKTsKIAogICAgIFBhcnRpYWxSZXN1bHQgYWRkU2hp
ZnQoVHlwZSwgQjM6OkFpcjo6T3Bjb2RlLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSwgRXhwcmVzc2lv
blR5cGUgc2hpZnQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwpAQCAtNjI2LDYgKzYyNiw3IEBA
IHByaXZhdGU6CiAgICAgfQogCiAgICAgdWludDMyX3QgbV9tYXhOdW1KU0NhbGxBcmd1bWVudHMg
eyAwIH07CisgICAgdW5zaWduZWQgbV9udW1JbXBvcnRGdW5jdGlvbnM7CiAKICAgICBCMzo6UGF0
Y2hwb2ludFNwZWNpYWwqIG1fcGF0Y2hwb2ludFNwZWNpYWwgeyBudWxscHRyIH07CiB9OwpAQCAt
NjgxLDYgKzY4Miw3IEBAIEFpcklSR2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcihjb25zdCBNb2R1
bGVJbmZvcm1hdGlvbiYgaW5mbywgQjM6OlByb2NlZHVyZSYgcHJvCiAgICAgLCBtX3Byb2MocHJv
Y2VkdXJlKQogICAgICwgbV9jb2RlKG1fcHJvYy5jb2RlKCkpCiAgICAgLCBtX3VubGlua2VkV2Fz
bVRvV2FzbUNhbGxzKHVubGlua2VkV2FzbVRvV2FzbUNhbGxzKQorICAgICwgbV9udW1JbXBvcnRG
dW5jdGlvbnMoaW5mby5pbXBvcnRGdW5jdGlvbkNvdW50KCkpCiB7CiAgICAgbV9jdXJyZW50Qmxv
Y2sgPSBtX2NvZGUuYWRkQmxvY2soKTsKICAgICBtX3Jvb3RCbG9jayA9IG1fY3VycmVudEJsb2Nr
OwpAQCAtOTY4LDE0ICs5NzAsMTQgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyh1
aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGkKICAgICByZXR1
cm4geyB9OwogfQogCi1hdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZUdldChFeHByZXNzaW9u
VHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1
dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJl
c3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3Vs
dAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KICAgICBBU1NFUlQoaW5kZXgudG1wKCkpOwog
ICAgIEFTU0VSVChpbmRleC50eXBlKCkgPT0gVHlwZTo6STMyKTsKICAgICByZXN1bHQgPSB0bXBG
b3JUeXBlKFR5cGU6OkFueXJlZik7CiAKLSAgICBlbWl0Q0NhbGwoJmdldFdhc21UYWJsZUVsZW1l
bnQsIHJlc3VsdCwgaW5zdGFuY2VWYWx1ZSgpLCBpbmRleCk7CisgICAgZW1pdENDYWxsKCZnZXRX
YXNtVGFibGVFbGVtZW50LCByZXN1bHQsIGluc3RhbmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlw
ZTo6STMyLCB0YWJsZUluZGV4KSwgaW5kZXgpOwogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAg
ICByZXR1cm4gSW5zdChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fz
c2VtYmxlcjo6WmVybyksIHJlc3VsdCwgcmVzdWx0KTsKICAgICB9LCBbPV0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewpAQCAtOTg1LDcg
Kzk4Nyw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBl
JiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKICAgICByZXR1cm4geyB9OwogfQogCi1h
dXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4
cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBBaXJJUkdlbmVyYXRv
cjo6YWRkVGFibGVTZXQodW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUmIGluZGV4
LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBGSVhN
RTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5ODUwNj4uCiAgICAgQVNTRVJUKGluZGV4LnRtcCgpKTsKQEAgLTk5Myw3ICs5OTUsNyBA
QCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5kZXgs
IEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLQogICAgIEFTU0VSVCh2YWx1ZS50bXAoKSk7CiAKICAg
ICBhdXRvIHNob3VsZFRocm93ID0gZzMyKCk7Ci0gICAgZW1pdENDYWxsKCZzZXRXYXNtVGFibGVF
bGVtZW50LCBzaG91bGRUaHJvdywgaW5zdGFuY2VWYWx1ZSgpLCBpbmRleCwgdmFsdWUpOworICAg
IGVtaXRDQ2FsbCgmc2V0V2FzbVRhYmxlRWxlbWVudCwgc2hvdWxkVGhyb3csIGluc3RhbmNlVmFs
dWUoKSwgYWRkQ29uc3RhbnQoVHlwZTo6STMyLCB0YWJsZUluZGV4KSwgaW5kZXgsIHZhbHVlKTsK
IAogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICByZXR1cm4gSW5zdChCcmFuY2hUZXN0MzIs
IG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIHNob3VsZFRocm93
LCBzaG91bGRUaHJvdyk7CkBAIC0xODkzLDExICsxODk1LDEyIEBAIGF1dG8gQWlySVJHZW5lcmF0
b3I6OmFkZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUsCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2Fs
bEluZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5
cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CithdXRv
IEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29u
c3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBFeHByZXNzaW9u
VHlwZSBjYWxsZWVJbmRleCA9IGFyZ3MudGFrZUxhc3QoKTsKICAgICBBU1NFUlQoc2lnbmF0dXJl
LmFyZ3VtZW50Q291bnQoKSA9PSBhcmdzLnNpemUoKSk7Ci0gICAgQVNTRVJUKG1faW5mby50YWJs
ZUluZm9ybWF0aW9uLnR5cGUoKSA9PSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmKTsKKyAgICBB
U1NFUlQobV9pbmZvLnRhYmxlQ291bnQoKSA+IHRhYmxlSW5kZXgpOworICAgIEFTU0VSVChtX2lu
Zm8udGFibGVzW3RhYmxlSW5kZXhdLnR5cGUoKSA9PSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVm
KTsKIAogICAgIG1fbWFrZXNDYWxscyA9IHRydWU7CiAgICAgLy8gTm90ZTogY2FsbCBpbmRpcmVj
dCBjYW4gY2FsbCBlaXRoZXIgV2ViQXNzZW1ibHlGdW5jdGlvbiBvciBXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbi4gQmVjYXVzZQpAQCAtMTkxMiwxMiArMTkxNSwxNCBAQCBhdXRvIEFpcklSR2Vu
ZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3Rv
cjxFeHByZXNzaQogICAgIEV4cHJlc3Npb25UeXBlIGluc3RhbmNlc0J1ZmZlciA9IGc2NCgpOwog
ICAgIEV4cHJlc3Npb25UeXBlIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGggPSBnNjQoKTsK
ICAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEluc3Rh
bmNlOjpvZmZzZXRPZlRhYmxlKCksIEIzOjpXaWR0aDY0KSk7CisgICAgICAgIHN0YXRpY19hc3Nl
cnQobWF4VGFibGVzID09IDEwMDAwMDAsICJ3ZSByZWx5IG9uIHRoaXMgdG8gaGF2ZSBhIHByb3Bl
ciBmb3JtIGZvciB0aGUgaW1tZWRpYXRlIGFyZ3VtZW50IGJlbG93Iik7CisgICAgICAgIHN0YXRp
Y19hc3NlcnQobWF4SW1wb3J0cyA9PSAxMDAwMDAsICJ3ZSByZWx5IG9uIHRoaXMgdG8gaGF2ZSBh
IHByb3BlciBmb3JtIGZvciB0aGUgaW1tZWRpYXRlIGFyZ3VtZW50IGJlbG93Iik7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEluc3RhbmNlOjpvZmZzZXRPZlRh
YmxlUHRyKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCB0YWJsZUluZGV4KSwgQjM6OldpZHRoNjQpKTsK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZvcm0oRnVuY1JlZlRhYmxl
OjpvZmZzZXRPZkZ1bmN0aW9ucygpLCBCMzo6V2lkdGg2NCkpOwogICAgICAgICBSRUxFQVNFX0FT
U0VSVChBcmc6OmlzVmFsaWRBZGRyRm9ybShGdW5jUmVmVGFibGU6Om9mZnNldE9mSW5zdGFuY2Vz
KCksIEIzOjpXaWR0aDY0KSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFk
ZHJGb3JtKEZ1bmNSZWZUYWJsZTo6b2Zmc2V0T2ZMZW5ndGgoKSwgQjM6OldpZHRoNjQpKTsKIAot
ICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjphZGRyKGluc3RhbmNlVmFsdWUoKSwgSW5zdGFuY2U6
Om9mZnNldE9mVGFibGUoKSksIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGgpOworICAgICAg
ICBhcHBlbmQoTW92ZSwgQXJnOjphZGRyKGluc3RhbmNlVmFsdWUoKSwgSW5zdGFuY2U6Om9mZnNl
dE9mVGFibGVQdHIobV9udW1JbXBvcnRGdW5jdGlvbnMsIHRhYmxlSW5kZXgpKSwgY2FsbGFibGVG
dW5jdGlvbkJ1ZmZlckxlbmd0aCk7CiAgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoY2Fs
bGFibGVGdW5jdGlvbkJ1ZmZlckxlbmd0aCwgRnVuY1JlZlRhYmxlOjpvZmZzZXRPZkZ1bmN0aW9u
cygpKSwgY2FsbGFibGVGdW5jdGlvbkJ1ZmZlcik7CiAgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6
OmFkZHIoY2FsbGFibGVGdW5jdGlvbkJ1ZmZlckxlbmd0aCwgRnVuY1JlZlRhYmxlOjpvZmZzZXRP
Zkluc3RhbmNlcygpKSwgaW5zdGFuY2VzQnVmZmVyKTsKICAgICAgICAgYXBwZW5kKE1vdmUzMiwg
QXJnOjphZGRyKGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGgsIFRhYmxlOjpvZmZzZXRPZkxl
bmd0aCgpKSwgY2FsbGFibGVGdW5jdGlvbkJ1ZmZlckxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggNzc2MDk3NDg0M2Vj
Y2UyZjFlOWIxNzA1OTI1ZTk4NGFhY2NiYTI5My4uMWViMjQ2NTJhZTRlZDZiMzI5MDcxOWY3ZWQ1
MzM2OTJkNTExZDJmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcApAQCAtMTkwLDggKzE5MCw4IEBAIHB1YmxpYzoKICAgICBQYXJ0aWFs
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4LCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0KTsKIAogICAgIC8vIFRhYmxlcwotICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkVGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgdmFs
dWUpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlR2V0KHVu
c2lnbmVkLCBFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwor
ICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlU2V0KHVuc2lnbmVk
LCBFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSk7CiAKICAgICAv
LyBMb2NhbHMKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRMb2NhbCh1
aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CkBAIC0yMzAsNyArMjMwLDcg
QEAgcHVibGljOgogCiAgICAgLy8gQ2FsbHMKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGRDYWxsKHVpbnQzMl90IGNhbGxlZUluZGV4LCBjb25zdCBTaWduYXR1cmUmLCBW
ZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKLSAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QoY29uc3Qg
U2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbElu
ZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHBy
ZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogICAgIFBhcnRpYWxS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFVucmVhY2hhYmxlKCk7CiAKICAgICB2b2lkIGR1
bXAoY29uc3QgVmVjdG9yPENvbnRyb2xFbnRyeT4mIGNvbnRyb2xTdGFjaywgY29uc3QgRXhwcmVz
c2lvbkxpc3QqIGV4cHJlc3Npb25TdGFjayk7CkBAIC0yOTIsNiArMjkyLDcgQEAgcHJpdmF0ZToK
ICAgICB9CiAKICAgICB1aW50MzJfdCBtX21heE51bUpTQ2FsbEFyZ3VtZW50cyB7IDAgfTsKKyAg
ICB1bnNpZ25lZCBtX251bUltcG9ydEZ1bmN0aW9uczsKIH07CiAKIC8vIE1lbW9yeSBhY2Nlc3Nl
cyBpbiBXZWJBc3NlbWJseSBoYXZlIHVuc2lnbmVkIDMyLWJpdCBvZmZzZXRzLCB3aGVyZWFzIHRo
ZXkgaGF2ZSBzaWduZWQgMzItYml0IG9mZnNldHMgaW4gQjMuCkBAIC0zNDMsNiArMzQ0LDcgQEAg
QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5m
bywgUHJvY2VkdXJlJiBwcm9jZWR1cmUKICAgICAsIG1fcHJvYyhwcm9jZWR1cmUpCiAgICAgLCBt
X3VubGlua2VkV2FzbVRvV2FzbUNhbGxzKHVubGlua2VkV2FzbVRvV2FzbUNhbGxzKQogICAgICwg
bV9jb25zdGFudEluc2VydGlvblZhbHVlcyhtX3Byb2MpCisgICAgLCBtX251bUltcG9ydEZ1bmN0
aW9ucyhpbmZvLmltcG9ydEZ1bmN0aW9uQ291bnQoKSkKIHsKICAgICBtX2N1cnJlbnRCbG9jayA9
IG1fcHJvYy5hZGRCbG9jaygpOwogCkBAIC01NjYsMTIgKzU2OCwxMiBAQCBhdXRvIEIzSVJHZW5l
cmF0b3I6OmFkZFJlZklzTnVsbChFeHByZXNzaW9uVHlwZSYgdmFsdWUsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBCM0lSR2VuZXJhdG9yOjphZGRU
YWJsZUdldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+
IFBhcnRpYWxSZXN1bHQKK2F1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGFibGVHZXQodW5zaWduZWQg
dGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgLy8gRklYTUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1MDY+LgogICAgIHJlc3Vs
dCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCB0b0IzVHlw
ZShBbnlyZWYpLCBvcmlnaW4oKSwKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KCZn
ZXRXYXNtVGFibGVFbGVtZW50LCBCM0NDYWxsUHRyVGFnKSksCi0gICAgICAgIGluc3RhbmNlVmFs
dWUoKSwgaW5kZXgpOworICAgICAgICBpbnN0YW5jZVZhbHVlKCksIG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWJsZUluZGV4KSwgaW5k
ZXgpOwogCiAgICAgewogICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCksCkBAIC01ODUs
MTIgKzU4NywxMiBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KEV4cHJlc3Npb25U
eXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLQogICAgIHJldHVybiB7IH07CiB9
CiAKLWF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4
LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQjNJUkdlbmVy
YXRvcjo6YWRkVGFibGVTZXQodW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUmIGlu
ZGV4LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBG
SVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5ODUwNj4uCiAgICAgYXV0byBzaG91bGRUaHJvdyA9IG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBCMzo6SW50MzIsIG9yaWdpbigpLAogICAgICAg
ICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2lu
KCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oJnNldFdhc21UYWJsZUVsZW1lbnQsIEIzQ0NhbGxQ
dHJUYWcpKSwKLSAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBpbmRleCwgdmFsdWUpOworICAgICAg
ICBpbnN0YW5jZVZhbHVlKCksIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
PihtX3Byb2MsIG9yaWdpbigpLCB0YWJsZUluZGV4KSwgaW5kZXgsIHZhbHVlKTsKIAogICAgIHsK
ICAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENo
ZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigpLApAQCAtMTI5OCw3ICsxMzAwLDcgQEAg
YXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0
IFNpZ25hdHVyZSYgc2lnbmF0dXJlLAogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gQjNJUkdl
bmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0
b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0
aWFsUmVzdWx0CithdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0
YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Npb25U
eXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewog
ICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZUluZGV4ID0gYXJncy50YWtlTGFzdCgpOwogICAgIEFT
U0VSVChzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpID09IGFyZ3Muc2l6ZSgpKTsKQEAgLTEzMTUs
NyArMTMxNyw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNp
Z25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvCiAgICAgRXhwcmVzc2lvblR5cGUg
bWFzazsKICAgICB7CiAgICAgICAgIEV4cHJlc3Npb25UeXBlIHRhYmxlID0gbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBv
cmlnaW4oKSwKLSAgICAgICAgICAgIGluc3RhbmNlVmFsdWUoKSwgc2FmZUNhc3Q8aW50MzJfdD4o
SW5zdGFuY2U6Om9mZnNldE9mVGFibGUoKSkpOworICAgICAgICAgICAgaW5zdGFuY2VWYWx1ZSgp
LCBzYWZlQ2FzdDxpbnQzMl90PihJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZVB0cihtX251bUltcG9y
dEZ1bmN0aW9ucywgdGFibGVJbmRleCkpKTsKICAgICAgICAgY2FsbGFibGVGdW5jdGlvbkJ1ZmZl
ciA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwg
cG9pbnRlclR5cGUoKSwgb3JpZ2luKCksCiAgICAgICAgICAgICB0YWJsZSwgc2FmZUNhc3Q8aW50
MzJfdD4oRnVuY1JlZlRhYmxlOjpvZmZzZXRPZkZ1bmN0aW9ucygpKSk7CiAgICAgICAgIGluc3Rh
bmNlc0J1ZmZlciA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJv
YywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRm9ybWF0LmgKaW5kZXggN2MwMzQ0MTdhMTNmMjYxYjg0NzVjOGVkYzQyNzRmYTgwNTE4
YjllYi4uNGRiMjhhNGUyYjZlOWQ1NTIyODE2ODhmYTlmYWRkZjg5M2U1ZmI5YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaApAQCAtMjEzLDEwICsyMTMsMTIgQEAgc3Ry
dWN0IFNlZ21lbnQgewogfTsKIAogc3RydWN0IEVsZW1lbnQgewotICAgIEVsZW1lbnQoSTMySW5p
dEV4cHIgb2Zmc2V0KQotICAgICAgICA6IG9mZnNldChvZmZzZXQpCisgICAgRWxlbWVudCh1aW50
MzJfdCB0YWJsZUluZGV4LCBJMzJJbml0RXhwciBvZmZzZXQpCisgICAgICAgIDogdGFibGVJbmRl
eCh0YWJsZUluZGV4KQorICAgICAgICAsIG9mZnNldChvZmZzZXQpCiAgICAgeyB9CiAKKyAgICB1
aW50MzJfdCB0YWJsZUluZGV4OwogICAgIEkzMkluaXRFeHByIG9mZnNldDsKICAgICBWZWN0b3I8
dWludDMyX3Q+IGZ1bmN0aW9uSW5kaWNlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCmluZGV4IDU5ZWVlMjYyMmRlMjY4NTkzMmM1MWM0
MmZiZThjMTk5M2Y4NGU5NWYuLjcyNTA1NDI4YTllZTQ1NjA1OTdlZTcxY2Q2ZTNiNGVmYjk1MDIw
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBh
cnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNl
ci5oCkBAIC0yODMsMTkgKzI4MywyMyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+Ojpw
YXJzZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAKICAgICBjYXNlIFRhYmxlR2V0OiB7
CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVm
ZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKKyAgICAgICAgdW5zaWdu
ZWQgdGFibGVJbmRleDsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50
MzIodGFibGVJbmRleCksICJjYW4ndCBwYXJzZSB0YWJsZSBpbmRleCIpOwogICAgICAgICBFeHBy
ZXNzaW9uVHlwZSByZXN1bHQsIGluZGV4OwogICAgICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lP
Tl9TVEFDS19JTlRPKGluZGV4LCAidGFibGUuZ2V0Iik7Ci0gICAgICAgIFdBU01fVFJZX0FERF9U
T19DT05URVhUKGFkZFRhYmxlR2V0KGluZGV4LCByZXN1bHQpKTsKKyAgICAgICAgV0FTTV9UUllf
QUREX1RPX0NPTlRFWFQoYWRkVGFibGVHZXQodGFibGVJbmRleCwgaW5kZXgsIHJlc3VsdCkpOwog
ICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICB9CiAKICAgICBjYXNlIFRhYmxlU2V0OiB7CiAgICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpLCAicmVmZXJlbmNl
cyBhcmUgbm90IGVuYWJsZWQiKTsKKyAgICAgICAgdW5zaWduZWQgdGFibGVJbmRleDsKKyAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIodGFibGVJbmRleCksICJjYW4n
dCBwYXJzZSB0YWJsZSBpbmRleCIpOwogICAgICAgICBFeHByZXNzaW9uVHlwZSB2YWwsIGluZGV4
OwogICAgICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKHZhbCwgInRhYmxl
LnNldCIpOwogICAgICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKGluZGV4
LCAidGFibGUuc2V0Iik7Ci0gICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFRhYmxl
U2V0KGluZGV4LCB2YWwpKTsKKyAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkVGFi
bGVTZXQodGFibGVJbmRleCwgaW5kZXgsIHZhbCkpOwogICAgICAgICByZXR1cm4geyB9OwogICAg
IH0KIApAQCAtMzk2LDEzICs0MDAsMTMgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6
cGFyc2VFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogCiAgICAgY2FzZSBDYWxsSW5kaXJl
Y3Q6IHsKICAgICAgICAgdWludDMyX3Qgc2lnbmF0dXJlSW5kZXg7Ci0gICAgICAgIHVpbnQ4X3Qg
cmVzZXJ2ZWQ7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIW1faW5mby50YWJsZUluZm9y
bWF0aW9uLCAiY2FsbF9pbmRpcmVjdCBpcyBvbmx5IHZhbGlkIHdoZW4gYSB0YWJsZSBpcyBkZWZp
bmVkIG9yIGltcG9ydGVkIik7CisgICAgICAgIHVpbnQzMl90IHRhYmxlSW5kZXg7CisgICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoIW1faW5mby50YWJsZUNvdW50KCksICJjYWxsX2luZGlyZWN0
IGlzIG9ubHkgdmFsaWQgd2hlbiBhIHRhYmxlIGlzIGRlZmluZWQgb3IgaW1wb3J0ZWQiKTsKICAg
ICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoc2lnbmF0dXJlSW5kZXgp
LCAiY2FuJ3QgZ2V0IGNhbGxfaW5kaXJlY3QncyBzaWduYXR1cmUgaW5kZXgiKTsKLSAgICAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MShyZXNlcnZlZCksICJjYW4ndCBnZXQg
Y2FsbF9pbmRpcmVjdCdzIHJlc2VydmVkIGJ5dGUiKTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRihyZXNlcnZlZCwgImNhbGxfaW5kaXJlY3QncyAncmVzZXJ2ZWQnIHZhcnVpbnQxIG11c3Qg
YmUgMHgwIik7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHRh
YmxlSW5kZXgpLCAiY2FuJ3QgZ2V0IGNhbGxfaW5kaXJlY3QncyB0YWJsZSBpbmRleCIpOworICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRhYmxlSW5kZXggPj0gbV9pbmZvLnRhYmxlQ291bnQo
KSwgImNhbGxfaW5kaXJlY3QncyB0YWJsZSBpbmRleCAiLCB0YWJsZUluZGV4LCAiIGludmFsaWQs
IGxpbWl0IGlzICIsIG1faW5mby50YWJsZUNvdW50KCkpOwogICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKG1faW5mby51c2VkU2lnbmF0dXJlcy5zaXplKCkgPD0gc2lnbmF0dXJlSW5kZXgsICJj
YWxsX2luZGlyZWN0J3Mgc2lnbmF0dXJlIGluZGV4ICIsIHNpZ25hdHVyZUluZGV4LCAiIGV4Y2Vl
ZHMga25vd24gc2lnbmF0dXJlcyAiLCBtX2luZm8udXNlZFNpZ25hdHVyZXMuc2l6ZSgpKTsKLSAg
ICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8udGFibGVJbmZvcm1hdGlvbi50eXBlKCkg
IT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgImNhbGxfaW5kaXJlY3QgaXMgb25seSB2YWxp
ZCB3aGVuIGEgdGFibGUgaGFzIHR5cGUgYW55ZnVuYyIpOworICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKG1faW5mby50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpICE9IFRhYmxlRWxlbWVudFR5
cGU6OkZ1bmNyZWYsICJjYWxsX2luZGlyZWN0IGlzIG9ubHkgdmFsaWQgd2hlbiBhIHRhYmxlIGhh
cyB0eXBlIGFueWZ1bmMiKTsKIAogICAgICAgICBjb25zdCBTaWduYXR1cmUmIGNhbGxlZVNpZ25h
dHVyZSA9IG1faW5mby51c2VkU2lnbmF0dXJlc1tzaWduYXR1cmVJbmRleF0uZ2V0KCk7CiAgICAg
ICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50Q291bnQo
KSArIDE7IC8vIEFkZCB0aGUgY2FsbGVlJ3MgaW5kZXguCkBAIC00MTYsNyArNDIwLDcgQEAgYXV0
byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJl
c3VsdAogICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5zaHJpbmsoZmlyc3RBcmd1bWVudEluZGV4
KTsKIAogICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQgPSBDb250ZXh0OjplbXB0eUV4cHJl
c3Npb24oKTsKLSAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkQ2FsbEluZGlyZWN0
KGNhbGxlZVNpZ25hdHVyZSwgYXJncywgcmVzdWx0KSk7CisgICAgICAgIFdBU01fVFJZX0FERF9U
T19DT05URVhUKGFkZENhbGxJbmRpcmVjdCh0YWJsZUluZGV4LCBjYWxsZWVTaWduYXR1cmUsIGFy
Z3MsIHJlc3VsdCkpOwogCiAgICAgICAgIGlmIChyZXN1bHQgIT0gQ29udGV4dDo6ZW1wdHlFeHBy
ZXNzaW9uKCkpCiAgICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5hcHBlbmQocmVzdWx0KTsK
QEAgLTYzMSw5ICs2MzUsOSBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZVVu
cmVhY2hhYmxlRXhwcmVzc2lvbigpIC0+IFBhcnRpYWxSZXN1bHQKIAogICAgIGNhc2UgQ2FsbElu
ZGlyZWN0OiB7CiAgICAgICAgIHVpbnQzMl90IHVudXNlZDsKLSAgICAgICAgdWludDhfdCB1bnVz
ZWQyOworICAgICAgICB1aW50MzJfdCB1bnVzZWQyOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFwYXJzZVZhclVJbnQzMih1bnVzZWQpLCAiY2FuJ3QgZ2V0IGNhbGxfaW5kaXJlY3QncyBz
aWduYXR1cmUgaW5kZXggaW4gdW5yZWFjaGFibGUgY29udGV4dCIpOwotICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQxKHVudXNlZDIpLCAiY2FuJ3QgZ2V0IGNhbGxfaW5k
aXJlY3QncyByZXNlcnZlZCBieXRlIGluIHVucmVhY2hhYmxlIGNvbnRleHQiKTsKKyAgICAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIodW51c2VkMiksICJjYW4ndCBnZXQg
Y2FsbF9pbmRpcmVjdCdzIHJlc2VydmVkIGJ5dGUgaW4gdW5yZWFjaGFibGUgY29udGV4dCIpOwog
ICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtNjg1LDcgKzY4OSwxMSBAQCBhdXRvIEZ1
bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZVVucmVhY2hhYmxlRXhwcmVzc2lvbigpIC0+IFBh
cnRpYWxSZXN1bHQKICAgICB9CiAKICAgICBjYXNlIFRhYmxlR2V0OgotICAgIGNhc2UgVGFibGVT
ZXQ6CisgICAgY2FzZSBUYWJsZVNldDogeworICAgICAgICB1bnNpZ25lZCB0YWJsZUluZGV4Owor
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMih0YWJsZUluZGV4KSwg
ImNhbid0IHBhcnNlIHRhYmxlIGluZGV4Iik7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIH0K
ICAgICBjYXNlIFJlZklzTnVsbDoKICAgICBjYXNlIFJlZk51bGw6IHsKICAgICAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzKCksICJyZWZl
cmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21JbnN0YW5jZS5jcHAKaW5kZXggNTJiZjBmMmIzMzEwZDhiYWRiMDJkNDM5OTUwMDFkNDNmMWJm
MmM4MC4uZDVkM2FhYjE0ZWNmMjVlZjQxNzc0ODkzNzkwMzIxNGIzMzA1NmUzNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCkBAIC02MSwxOCArNjEsMTkg
QEAgSW5zdGFuY2U6Okluc3RhbmNlKENvbnRleHQqIGNvbnRleHQsIFJlZjxNb2R1bGU+JiYgbW9k
dWxlLCBFbnRyeUZyYW1lKiogcG9pbnRlclQKICAgICAgICAgaWYgKGlzU3VidHlwZShtX21vZHVs
ZS5nZXQoKS5tb2R1bGVJbmZvcm1hdGlvbigpLmdsb2JhbHNbaV0udHlwZSwgQW55cmVmKSkKICAg
ICAgICAgICAgIG1fZ2xvYmFsc1RvTWFyay5zZXQoaSk7CiAgICAgfQorICAgIG1lbXNldChiaXR3
aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZUYWJsZVB0cihtX251bUltcG9ydEZ1bmN0
aW9ucywgMCksIDAsIG1fbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLnRhYmxlQ291bnQoKSAq
IHNpemVvZihUYWJsZSopKTsKIH0KIAogUmVmPEluc3RhbmNlPiBJbnN0YW5jZTo6Y3JlYXRlKENv
bnRleHQqIGNvbnRleHQsIFJlZjxNb2R1bGU+JiYgbW9kdWxlLCBFbnRyeUZyYW1lKiogcG9pbnRl
clRvVG9wRW50cnlGcmFtZSwgdm9pZCoqIHBvaW50ZXJUb0FjdHVhbFN0YWNrTGltaXQsIFN0b3Jl
VG9wQ2FsbEZyYW1lQ2FsbGJhY2smJiBzdG9yZVRvcENhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhhbGxvY2F0aW9uU2l6ZShtb2R1bGUt
Pm1vZHVsZUluZm9ybWF0aW9uKCkuaW1wb3J0RnVuY3Rpb25Db3VudCgpKSkpIEluc3RhbmNlKGNv
bnRleHQsIFdURk1vdmUobW9kdWxlKSwgcG9pbnRlclRvVG9wRW50cnlGcmFtZSwgcG9pbnRlclRv
QWN0dWFsU3RhY2tMaW1pdCwgV1RGTW92ZShzdG9yZVRvcENhbGxGcmFtZSkpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhhbGxvY2F0aW9uU2l6ZShtb2R1
bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuaW1wb3J0RnVuY3Rpb25Db3VudCgpLCBtb2R1bGUtPm1v
ZHVsZUluZm9ybWF0aW9uKCkudGFibGVDb3VudCgpKSkpIEluc3RhbmNlKGNvbnRleHQsIFdURk1v
dmUobW9kdWxlKSwgcG9pbnRlclRvVG9wRW50cnlGcmFtZSwgcG9pbnRlclRvQWN0dWFsU3RhY2tM
aW1pdCwgV1RGTW92ZShzdG9yZVRvcENhbGxGcmFtZSkpKTsKIH0KIAogSW5zdGFuY2U6On5JbnN0
YW5jZSgpIHsgfQogCiBzaXplX3QgSW5zdGFuY2U6OmV4dHJhTWVtb3J5QWxsb2NhdGVkKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gZ2xvYmFsTWVtb3J5Qnl0ZVNpemUobV9tb2R1bGUuZ2V0KCkpICsg
YWxsb2NhdGlvblNpemUobV9udW1JbXBvcnRGdW5jdGlvbnMpOworICAgIHJldHVybiBnbG9iYWxN
ZW1vcnlCeXRlU2l6ZShtX21vZHVsZS5nZXQoKSkgKyBhbGxvY2F0aW9uU2l6ZShtX251bUltcG9y
dEZ1bmN0aW9ucywgbV9tb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkudGFibGVDb3VudCgpKTsK
IH0KIAogdm9pZCBJbnN0YW5jZTo6c2V0R2xvYmFsKHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUp
CkBAIC05OSw0MiArMTAwLDU4IEBAIHZvaWQgSW5zdGFuY2U6OnNldEZ1bmN0aW9uV3JhcHBlcih1
bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgIEFTU0VSVChnZXRGdW5jdGlvbldyYXBwZXIo
aSkgPT0gdmFsdWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBnZXRXYXNtVGFibGVFbGVtZW50KElu
c3RhbmNlKiBpbnN0YW5jZSwgaW50MzJfdCBzaWduZWRJbmRleCkKK1RhYmxlKiBJbnN0YW5jZTo6
dGFibGUodW5zaWduZWQgaSkKIHsKKyAgICBSRUxFQVNFX0FTU0VSVChpIDwgbV9tb2R1bGUtPm1v
ZHVsZUluZm9ybWF0aW9uKCkudGFibGVDb3VudCgpKTsKKyAgICByZXR1cm4gKmJpdHdpc2VfY2Fz
dDxUYWJsZSoqPihiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZUYWJsZVB0ciht
X251bUltcG9ydEZ1bmN0aW9ucywgaSkpOworfQorCit2b2lkIEluc3RhbmNlOjpzZXRUYWJsZSh1
bnNpZ25lZCBpLCBSZWY8VGFibGU+JiYgdGFibGUpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoaSA8
IG1fbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLnRhYmxlQ291bnQoKSk7CisgICAgaWYgKGF1
dG8qIHRhYmxlID0gdGhpcy0+dGFibGUoaSkpCisgICAgICAgIHRhYmxlLT5kZXJlZigpOworICAg
ICpiaXR3aXNlX2Nhc3Q8VGFibGUqKj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNl
dE9mVGFibGVQdHIobV9udW1JbXBvcnRGdW5jdGlvbnMsIGkpKSA9ICZ0YWJsZS5sZWFrUmVmKCk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIGdldFdhc21UYWJsZUVsZW1lbnQoSW5zdGFuY2UqIGluc3Rh
bmNlLCB1bnNpZ25lZCB0YWJsZUluZGV4LCBpbnQzMl90IHNpZ25lZEluZGV4KQoreworICAgIEFT
U0VSVCh0YWJsZUluZGV4IDwgaW5zdGFuY2UtPm1vZHVsZSgpLm1vZHVsZUluZm9ybWF0aW9uKCku
dGFibGVDb3VudCgpKTsKICAgICBpZiAoc2lnbmVkSW5kZXggPCAwKQogICAgICAgICByZXR1cm4g
MDsKIAogICAgIHVpbnQzMl90IGluZGV4ID0gc2lnbmVkSW5kZXg7Ci0gICAgaWYgKGluZGV4ID49
IGluc3RhbmNlLT50YWJsZSgpLT5sZW5ndGgoKSkKKyAgICBpZiAoaW5kZXggPj0gaW5zdGFuY2Ut
PnRhYmxlKHRhYmxlSW5kZXgpLT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGluc3RhbmNlLT50YWJsZSgpLT5nZXQoaW5kZXgpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGluc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+Z2V0
KGluZGV4KSk7CiB9CiAKLWJvb2wgc2V0V2FzbVRhYmxlRWxlbWVudChJbnN0YW5jZSogaW5zdGFu
Y2UsIGludDMyX3Qgc2lnbmVkSW5kZXgsIEVuY29kZWRKU1ZhbHVlIGVuY1ZhbHVlKQorYm9vbCBz
ZXRXYXNtVGFibGVFbGVtZW50KEluc3RhbmNlKiBpbnN0YW5jZSwgdW5zaWduZWQgdGFibGVJbmRl
eCwgaW50MzJfdCBzaWduZWRJbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jVmFsdWUpCiB7CisgICAg
QVNTRVJUKHRhYmxlSW5kZXggPCBpbnN0YW5jZS0+bW9kdWxlKCkubW9kdWxlSW5mb3JtYXRpb24o
KS50YWJsZUNvdW50KCkpOwogICAgIGlmIChzaWduZWRJbmRleCA8IDApCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIHVpbnQzMl90IGluZGV4ID0gc2lnbmVkSW5kZXg7Ci0gICAgaWYgKGlu
ZGV4ID49IGluc3RhbmNlLT50YWJsZSgpLT5sZW5ndGgoKSkKKyAgICBpZiAoaW5kZXggPj0gaW5z
dGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNWYWx1ZSk7Ci0gICAg
aWYgKGluc3RhbmNlLT50YWJsZSgpLT50eXBlKCkgPT0gV2FzbTo6VGFibGVFbGVtZW50VHlwZTo6
QW55cmVmKQotICAgICAgICBpbnN0YW5jZS0+dGFibGUoKS0+c2V0KGluZGV4LCB2YWx1ZSk7Ci0g
ICAgZWxzZSBpZiAoaW5zdGFuY2UtPnRhYmxlKCktPnR5cGUoKSA9PSBXYXNtOjpUYWJsZUVsZW1l
bnRUeXBlOjpGdW5jcmVmKSB7CisgICAgaWYgKGluc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+
dHlwZSgpID09IFdhc206OlRhYmxlRWxlbWVudFR5cGU6OkFueXJlZikKKyAgICAgICAgaW5zdGFu
Y2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5zZXQoaW5kZXgsIHZhbHVlKTsKKyAgICBlbHNlIGlmIChp
bnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPnR5cGUoKSA9PSBXYXNtOjpUYWJsZUVsZW1lbnRU
eXBlOjpGdW5jcmVmKSB7CiAgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5jdGlv
bjsKICAgICAgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIHdhc21XcmFwcGVyRnVuY3Rp
b247CiAKICAgICAgICAgaWYgKGlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24oKmluc3RhbmNlLT5v
d25lcjxKU09iamVjdD4oKS0+dm0oKSwgdmFsdWUsIHdhc21GdW5jdGlvbiwgd2FzbVdyYXBwZXJG
dW5jdGlvbikpIHsKICAgICAgICAgICAgIEFTU0VSVCghIXdhc21GdW5jdGlvbiB8fCAhIXdhc21X
cmFwcGVyRnVuY3Rpb24pOwogICAgICAgICAgICAgaWYgKHdhc21GdW5jdGlvbikKLSAgICAgICAg
ICAgICAgICBpbnN0YW5jZS0+dGFibGUoKS0+YXNGdW5jcmVmVGFibGUoKS0+c2V0RnVuY3Rpb24o
aW5kZXgsIGpzQ2FzdDxKU09iamVjdCo+KHZhbHVlKSwgd2FzbUZ1bmN0aW9uLT5pbXBvcnRhYmxl
RnVuY3Rpb24oKSwgJndhc21GdW5jdGlvbi0+aW5zdGFuY2UoKS0+aW5zdGFuY2UoKSk7CisgICAg
ICAgICAgICAgICAgaW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5hc0Z1bmNyZWZUYWJsZSgp
LT5zZXRGdW5jdGlvbihpbmRleCwganNDYXN0PEpTT2JqZWN0Kj4odmFsdWUpLCB3YXNtRnVuY3Rp
b24tPmltcG9ydGFibGVGdW5jdGlvbigpLCAmd2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpLT5pbnN0
YW5jZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBpbnN0YW5jZS0+dGFi
bGUoKS0+YXNGdW5jcmVmVGFibGUoKS0+c2V0RnVuY3Rpb24oaW5kZXgsIGpzQ2FzdDxKU09iamVj
dCo+KHZhbHVlKSwgd2FzbVdyYXBwZXJGdW5jdGlvbi0+aW1wb3J0YWJsZUZ1bmN0aW9uKCksICZ3
YXNtV3JhcHBlckZ1bmN0aW9uLT5pbnN0YW5jZSgpLT5pbnN0YW5jZSgpKTsKKyAgICAgICAgICAg
ICAgICBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPmFzRnVuY3JlZlRhYmxlKCktPnNldEZ1
bmN0aW9uKGluZGV4LCBqc0Nhc3Q8SlNPYmplY3QqPih2YWx1ZSksIHdhc21XcmFwcGVyRnVuY3Rp
b24tPmltcG9ydGFibGVGdW5jdGlvbigpLCAmd2FzbVdyYXBwZXJGdW5jdGlvbi0+aW5zdGFuY2Uo
KS0+aW5zdGFuY2UoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUuaXNOdWxsKCkpCi0gICAg
ICAgICAgICBpbnN0YW5jZS0+dGFibGUoKS0+Y2xlYXIoaW5kZXgpOworICAgICAgICAgICAgaW5z
dGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5jbGVhcihpbmRleCk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaAppbmRleCA3YTIzZTU2MjgyNGY4MWUzNTg2MGVl
N2FiMGQ5ODU4YWYzYjNiMjc5Li40ZGQxMjcxYTQ2YmE0MTcwN2M4ZGE0M2ViOGMzNzQ2ZTkwNGJl
OWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2Uu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaApAQCAtNDEs
OCArNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogc3RydWN0IENvbnRl
eHQ7CiBjbGFzcyBJbnN0YW5jZTsKIAotRW5jb2RlZEpTVmFsdWUgZ2V0V2FzbVRhYmxlRWxlbWVu
dChJbnN0YW5jZSosIGludDMyX3QpOwotYm9vbCBzZXRXYXNtVGFibGVFbGVtZW50KEluc3RhbmNl
KiwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUgZW5jVmFsdWUpOworRW5jb2RlZEpTVmFsdWUgZ2V0
V2FzbVRhYmxlRWxlbWVudChJbnN0YW5jZSosIHVuc2lnbmVkLCBpbnQzMl90KTsKK2Jvb2wgc2V0
V2FzbVRhYmxlRWxlbWVudChJbnN0YW5jZSosIHVuc2lnbmVkLCBpbnQzMl90LCBFbmNvZGVkSlNW
YWx1ZSBlbmNWYWx1ZSk7CiBFbmNvZGVkSlNWYWx1ZSBkb1dhc21SZWZGdW5jKEluc3RhbmNlKiwg
dWludDMyX3QpOwogCiBjbGFzcyBJbnN0YW5jZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxJbnN0YW5jZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbnN0YW5jZT4gewpAQCAtNzAsNyAr
NzAsOCBAQCBwdWJsaWM6CiAgICAgTW9kdWxlJiBtb2R1bGUoKSB7IHJldHVybiBtX21vZHVsZS5n
ZXQoKTsgfQogICAgIENvZGVCbG9jayogY29kZUJsb2NrKCkgeyByZXR1cm4gbV9jb2RlQmxvY2su
Z2V0KCk7IH0KICAgICBNZW1vcnkqIG1lbW9yeSgpIHsgcmV0dXJuIG1fbWVtb3J5LmdldCgpOyB9
Ci0gICAgVGFibGUqIHRhYmxlKCkgeyByZXR1cm4gbV90YWJsZS5nZXQoKTsgfQorICAgIFRhYmxl
KiB0YWJsZSh1bnNpZ25lZCk7CisgICAgdm9pZCBzZXRUYWJsZSh1bnNpZ25lZCwgUmVmPFRhYmxl
PiYmKTsKIAogICAgIHZvaWQqIGNhY2hlZE1lbW9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVk
TWVtb3J5LmdldE1heUJlTnVsbChjYWNoZWRNZW1vcnlTaXplKCkpOyB9CiAgICAgc2l6ZV90IGNh
Y2hlZE1lbW9yeVNpemUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZE1lbW9yeVNpemU7IH0KQEAg
LTg4LDcgKzg5LDYgQEAgcHVibGljOgogICAgICAgICAgICAgbV9jYWNoZWRNZW1vcnlTaXplID0g
bWVtb3J5KCktPnNpemUoKTsKICAgICAgICAgfQogICAgIH0KLSAgICB2b2lkIHNldFRhYmxlKFJl
ZjxUYWJsZT4mJiB0YWJsZSkgeyBtX3RhYmxlID0gV1RGTW92ZSh0YWJsZSk7IH0KIAogICAgIGlu
dDMyX3QgbG9hZEkzMkdsb2JhbCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbHMu
Z2V0KClbaV0ucHJpbWl0aXZlOyB9CiAgICAgaW50NjRfdCBsb2FkSTY0R2xvYmFsKHVuc2lnbmVk
IGkpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFscy5nZXQoKVtpXS5wcmltaXRpdmU7IH0KQEAgLTEw
Myw3ICsxMDMsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTWVt
b3J5KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX21lbW9yeSk7IH0KICAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mR2xvYmFscygpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihJbnN0YW5jZSwgbV9nbG9iYWxzKTsgfQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0
T2ZUYWJsZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV90YWJsZSk7IH0K
ICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FjaGVkTWVtb3J5KCkgeyByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX2NhY2hlZE1lbW9yeSk7IH0KICAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihJbnN0YW5jZSwgbV9jYWNoZWRNZW1vcnlTaXplKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qg
b2Zmc2V0T2ZQb2ludGVyVG9Ub3BFbnRyeUZyYW1lKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEluc3RhbmNlLCBtX3BvaW50ZXJUb1RvcEVudHJ5RnJhbWUpOyB9CkBAIC0xNDIsNiArMTQxLDkg
QEAgcHVibGljOgogICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbXBvcnRGdW5jdGlvbihzaXpl
X3QgaW1wb3J0RnVuY3Rpb25OdW0pIHsgcmV0dXJuIG9mZnNldE9mVGFpbCgpICsgaW1wb3J0RnVu
Y3Rpb25OdW0gKiBzaXplb2YoSW1wb3J0RnVuY3Rpb25JbmZvKSArIE9CSkVDVF9PRkZTRVRPRihJ
bXBvcnRGdW5jdGlvbkluZm8sIGltcG9ydEZ1bmN0aW9uKTsgfQogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IFQqIGltcG9ydEZ1bmN0aW9uKHVuc2lnbmVkIGltcG9ydEZ1bmN0aW9uTnVtKSB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PFQqPigmaW1wb3J0RnVuY3Rpb25JbmZvKGltcG9ydEZ1bmN0
aW9uTnVtKS0+aW1wb3J0RnVuY3Rpb24pOyB9CiAKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihJ
bXBvcnRGdW5jdGlvbkluZm8pID09IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YodWlu
dDY0X3QpPihzaXplb2YoSW1wb3J0RnVuY3Rpb25JbmZvKSksICJXZSByZWx5IG9uIHRoaXMgZm9y
IHRoZSBhbGlnbm1lbnQgdG8gYmUgY29ycmVjdCIpOworICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0
T2ZUYWJsZVB0cih1bnNpZ25lZCBudW1JbXBvcnRGdW5jdGlvbnMsIHVuc2lnbmVkIGkpIHsgcmV0
dXJuIG9mZnNldE9mVGFpbCgpICsgc2l6ZW9mKEltcG9ydEZ1bmN0aW9uSW5mbykgKiBudW1JbXBv
cnRGdW5jdGlvbnMgKyBzaXplb2YoVGFibGUqKSAqIGk7IH0KKwogICAgIHZvaWQgc3RvcmVUb3BD
YWxsRnJhbWUodm9pZCogY2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgbV9zdG9yZVRvcENhbGxG
cmFtZShjYWxsRnJhbWUpOwpAQCAtMTUwLDkgKzE1Miw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgSW5zdGFuY2UoQ29udGV4dCosIFJlZjxNb2R1bGU+JiYsIEVudHJ5RnJhbWUqKiwgdm9pZCoq
LCBTdG9yZVRvcENhbGxGcmFtZUNhbGxiYWNrJiYpOwogICAgIAotICAgIHN0YXRpYyBzaXplX3Qg
YWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IG51bUltcG9ydEZ1bmN0aW9ucykKKyAgICBz
dGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBudW1JbXBvcnRGdW5j
dGlvbnMsIENoZWNrZWQ8c2l6ZV90PiBudW1UYWJsZXMpCiAgICAgewotICAgICAgICByZXR1cm4g
KG9mZnNldE9mVGFpbCgpICsgc2l6ZW9mKEltcG9ydEZ1bmN0aW9uSW5mbykgKiBudW1JbXBvcnRG
dW5jdGlvbnMpLnVuc2FmZUdldCgpOworICAgICAgICByZXR1cm4gKG9mZnNldE9mVGFpbCgpICsg
c2l6ZW9mKEltcG9ydEZ1bmN0aW9uSW5mbykgKiBudW1JbXBvcnRGdW5jdGlvbnMgKyBzaXplb2Yo
VGFibGUqKSAqIG51bVRhYmxlcykudW5zYWZlR2V0KCk7CiAgICAgfQogICAgIHZvaWQqIG1fb3du
ZXIgeyBudWxscHRyIH07IC8vIEluIGEgSlMgZW1iZWRkaW5nLCB0aGlzIGlzIGEgSlNXZWJBc3Nl
bWJseUluc3RhbmNlKi4KICAgICBDb250ZXh0KiBtX2NvbnRleHQgeyBudWxscHRyIH07CkBAIC0x
NjEsNyArMTYzLDYgQEAgcHJpdmF0ZToKICAgICBSZWY8TW9kdWxlPiBtX21vZHVsZTsKICAgICBS
ZWZQdHI8Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKICAgICBSZWZQdHI8TWVtb3J5PiBtX21lbW9y
eTsKLSAgICBSZWZQdHI8VGFibGU+IG1fdGFibGU7CiAKICAgICB1bmlvbiBHbG9iYWxWYWx1ZSB7
CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBhbnlyZWY7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTGltaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtTGltaXRzLmgKaW5kZXggYzZmNmNkY2JiY2RjZDc4NWUzNWY2NDJjN2U4ODBk
ODg5ZmRiMzhhYS4uY2Y4YjQ0NjAzNjgxMTIzZWNjMjVjZmMzNzI0OThiNWY1YjU4Yzk4NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxpbWl0cy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MaW1pdHMuaApAQCAtNTEsNiArNTEsNyBAQCBj
b25zdGV4cHIgc2l6ZV90IG1heEZ1bmN0aW9uTG9jYWxzID0gNTAwMDA7CiBjb25zdGV4cHIgc2l6
ZV90IG1heEZ1bmN0aW9uUGFyYW1zID0gMTAwMDsKIAogY29uc3RleHByIHNpemVfdCBtYXhUYWJs
ZUVudHJpZXMgPSAxMDAwMDAwMDsKK2NvbnN0ZXhwciB1bnNpZ25lZCBtYXhUYWJsZXMgPSAxMDAw
MDAwOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oCmluZGV4IDg4ZjY2Y2I2Mzkx
NTljMzY5ZDlkZGU2MGExZmNlNmRhNWQxNzEyODkuLjI2OGY4OGJiMTBiZjc0ODVmYTY1MTY1NTI0
ZTcwNGI2NTk5ODcyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Nb2R1bGVJbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Nb2R1bGVJbmZvcm1hdGlvbi5oCkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBNb2R1bGVJbmZv
cm1hdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGVJbmZvcm1hdGlvbj4g
ewogICAgIC8vIEN1cnJlbnRseSwgb3VyIHdhc20gaW1wbGVtZW50YXRpb24gYWxsb3dzIG9ubHkg
b25lIG1lbW9yeSBhbmQgdGFibGUuCiAgICAgLy8gSWYgd2UgbmVlZCB0byByZW1vdmUgdGhpcyBs
aW1pdGF0aW9uLCB3ZSB3b3VsZCBoYXZlIE1lbW9yeUluZm9ybWF0aW9uIGFuZCBUYWJsZUluZm9y
bWF0aW9uIGluIHRoZSBWZWN0b3JzLgogICAgIHVpbnQzMl90IG1lbW9yeUNvdW50KCkgY29uc3Qg
eyByZXR1cm4gbWVtb3J5ID8gMSA6IDA7IH0KLSAgICB1aW50MzJfdCB0YWJsZUNvdW50KCkgY29u
c3QgeyByZXR1cm4gdGFibGVJbmZvcm1hdGlvbiA/IDEgOiAwOyB9CisgICAgdWludDMyX3QgdGFi
bGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHRhYmxlcy5zaXplKCk7IH0KIAogICAgIGNvbnN0IEJp
dFZlY3RvciYgcmVmZXJlbmNlZEZ1bmN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNl
ZEZ1bmN0aW9uczsgfQogICAgIHZvaWQgYWRkUmVmZXJlbmNlZEZ1bmN0aW9uKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdCB7IG1fcmVmZXJlbmNlZEZ1bmN0aW9ucy5zZXQoaW5kZXgpOyB9CkBAIC04Myw3
ICs4Myw3IEBAIHN0cnVjdCBNb2R1bGVJbmZvcm1hdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxNb2R1bGVJbmZvcm1hdGlvbj4gewogICAgIE9wdGlvbmFsPHVpbnQzMl90PiBzdGFy
dEZ1bmN0aW9uSW5kZXhTcGFjZTsKICAgICBWZWN0b3I8U2VnbWVudDo6UHRyPiBkYXRhOwogICAg
IFZlY3RvcjxFbGVtZW50PiBlbGVtZW50czsKLSAgICBUYWJsZUluZm9ybWF0aW9uIHRhYmxlSW5m
b3JtYXRpb247CisgICAgVmVjdG9yPFRhYmxlSW5mb3JtYXRpb24+IHRhYmxlczsKICAgICBWZWN0
b3I8R2xvYmFsPiBnbG9iYWxzOwogICAgIHVuc2lnbmVkIGZpcnN0SW50ZXJuYWxHbG9iYWwgeyAw
IH07CiAgICAgVmVjdG9yPEN1c3RvbVNlY3Rpb24+IGN1c3RvbVNlY3Rpb25zOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCmluZGV4IGM4MDMx
NGRmZGEwMDNmZWIyYjVmMDdjYTlmYTk5Y2Q4ODgzZGVhNzAuLmVmNTEyMTY3NTJhMTI2NWUxMDI0
ZDM3ZTkyODllYzQ4YmFmZmRlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtU2VjdGlvblBhcnNlci5jcHAKQEAgLTExOSw2ICsxMTksNyBAQCBhdXRvIFNlY3Rpb25Q
YXJzZXI6OnBhcnNlSW1wb3J0KCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICB9CiAgICAgICAg
IGNhc2UgRXh0ZXJuYWxLaW5kOjpUYWJsZTogewogICAgICAgICAgICAgYm9vbCBpc0ltcG9ydCA9
IHRydWU7CisgICAgICAgICAgICBraW5kSW5kZXggPSBtX2luZm8tPnRhYmxlcy5zaXplKCk7CiAg
ICAgICAgICAgICBQYXJ0aWFsUmVzdWx0IHJlc3VsdCA9IHBhcnNlVGFibGVIZWxwZXIoaXNJbXBv
cnQpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQpKQogICAgICAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZNb3ZlKHJlc3VsdC5lcnJvcigpKSk7CkBAIC0xOTMs
NyArMTk0LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZVJlc2l6YWJsZUxpbWl0cyh1aW50
MzJfdCYgaW5pdGlhbCwgT3B0aW9uYWw8dWludDMyX3Q+JgogCiBhdXRvIFNlY3Rpb25QYXJzZXI6
OnBhcnNlVGFibGVIZWxwZXIoYm9vbCBpc0ltcG9ydCkgLT4gUGFydGlhbFJlc3VsdAogewotICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYobV9pbmZvLT50YWJsZUNvdW50KCkgPiAwLCAiQ2Fubm90IGhh
dmUgbW9yZSB0aGFuIG9uZSBUYWJsZSBmb3Igbm93Iik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9J
RihtX2luZm8tPnRhYmxlQ291bnQoKSA+PSBtYXhUYWJsZXMsICJUYWJsZSBjb3VudCBvZiAiLCBt
X2luZm8tPnRhYmxlQ291bnQoKSwgIiBpcyB0b28gYmlnLCBtYXhpbXVtICIsIG1heFRhYmxlcyk7
CiAKICAgICBpbnQ4X3QgdHlwZTsKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZUludDco
dHlwZSksICJjYW4ndCBwYXJzZSBUYWJsZSB0eXBlIik7CkBAIC0yMDksNyArMjEwLDcgQEAgYXV0
byBTZWN0aW9uUGFyc2VyOjpwYXJzZVRhYmxlSGVscGVyKGJvb2wgaXNJbXBvcnQpIC0+IFBhcnRp
YWxSZXN1bHQKICAgICBBU1NFUlQoIW1heGltdW0gfHwgKm1heGltdW0gPj0gaW5pdGlhbCk7CiAK
ICAgICBUYWJsZUVsZW1lbnRUeXBlIHRhYmxlVHlwZSA9IHR5cGUgPT0gV2FzbTo6QW55ZnVuYyA/
IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYgOiBUYWJsZUVsZW1lbnRUeXBlOjpBbnlyZWY7Ci0g
ICAgbV9pbmZvLT50YWJsZUluZm9ybWF0aW9uID0gVGFibGVJbmZvcm1hdGlvbihpbml0aWFsLCBt
YXhpbXVtLCBpc0ltcG9ydCwgdGFibGVUeXBlKTsKKyAgICBtX2luZm8tPnRhYmxlcy5hcHBlbmQo
VGFibGVJbmZvcm1hdGlvbihpbml0aWFsLCBtYXhpbXVtLCBpc0ltcG9ydCwgdGFibGVUeXBlKSk7
CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtMjE4LDE1ICsyMTksMTMgQEAgYXV0byBTZWN0aW9u
UGFyc2VyOjpwYXJzZVRhYmxlKCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIHVpbnQzMl90IGNv
dW50OwogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGNvdW50KSwgImNh
bid0IGdldCBUYWJsZSdzIGNvdW50Iik7Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9JRihjb3VudCA+
IDEsICJUYWJsZSBjb3VudCBvZiAiLCBjb3VudCwgIiBpcyBpbnZhbGlkLCBhdCBtb3N0IDEgaXMg
YWxsb3dlZCBmb3Igbm93Iik7CiAKLSAgICBpZiAoIWNvdW50KQotICAgICAgICByZXR1cm4geyB9
OwotCi0gICAgYm9vbCBpc0ltcG9ydCA9IGZhbHNlOwotICAgIFBhcnRpYWxSZXN1bHQgcmVzdWx0
ID0gcGFyc2VUYWJsZUhlbHBlcihpc0ltcG9ydCk7Ci0gICAgaWYgKFVOTElLRUxZKCFyZXN1bHQp
KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShyZXN1bHQuZXJyb3IoKSkp
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIGJv
b2wgaXNJbXBvcnQgPSBmYWxzZTsKKyAgICAgICAgUGFydGlhbFJlc3VsdCByZXN1bHQgPSBwYXJz
ZVRhYmxlSGVscGVyKGlzSW1wb3J0KTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQpKQor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUocmVzdWx0LmVycm9yKCkp
KTsKKyAgICB9CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtMzc5LDE2ICszNzgsMTYgQEAgYXV0
byBTZWN0aW9uUGFyc2VyOjpwYXJzZUVsZW1lbnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAKICAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIodGFibGVJbmRleCksICJjYW4n
dCBnZXQgIiwgZWxlbWVudE51bSwgInRoIEVsZW1lbnQgdGFibGUgaW5kZXgiKTsKICAgICAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRih0YWJsZUluZGV4ID49IG1faW5mby0+dGFibGVDb3VudCgpLCAi
RWxlbWVudCBzZWN0aW9uIGZvciBUYWJsZSAiLCB0YWJsZUluZGV4LCAiIGV4Y2VlZHMgYXZhaWxh
YmxlIFRhYmxlICIsIG1faW5mby0+dGFibGVDb3VudCgpKTsKLSAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRihtX2luZm8tPnRhYmxlSW5mb3JtYXRpb24udHlwZSgpICE9IFRhYmxlRWxlbWVudFR5
cGU6OkZ1bmNyZWYsICJUYWJsZSAiLCB0YWJsZUluZGV4LCAiIG11c3QgaGF2ZSB0eXBlICdhbnlm
dW5jJyB0byBoYXZlIGFuIGVsZW1lbnQgc2VjdGlvbiIpOworICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKG1faW5mby0+dGFibGVzW3RhYmxlSW5kZXhdLnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRU
eXBlOjpGdW5jcmVmLCAiVGFibGUgIiwgdGFibGVJbmRleCwgIiBtdXN0IGhhdmUgdHlwZSAnYW55
ZnVuYycgdG8gaGF2ZSBhbiBlbGVtZW50IHNlY3Rpb24iKTsKICAgICAgICAgVHlwZSBpbml0RXhw
clR5cGU7CiAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJbml0RXhwcihp
bml0T3Bjb2RlLCBpbml0RXhwckJpdHMsIGluaXRFeHByVHlwZSkpOwogICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKGluaXRFeHByVHlwZSAhPSBJMzIsICJFbGVtZW50IGluaXRfZXhwciBtdXN0
IHByb2R1Y2UgYW4gaTMyIik7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFy
VUludDMyKGluZGV4Q291bnQpLCAiY2FuJ3QgZ2V0ICIsIGVsZW1lbnROdW0sICJ0aCBpbmRleCBj
b3VudCBmb3IgRWxlbWVudCBzZWN0aW9uIik7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
aW5kZXhDb3VudCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksICJFbGVt
ZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGggaW5kZXggY291bnQgaXMgdG9vIGJpZyAi
LCBpbmRleENvdW50KTsKIAotICAgICAgICBBU1NFUlQoISFtX2luZm8tPnRhYmxlSW5mb3JtYXRp
b24pOworICAgICAgICBBU1NFUlQoISFtX2luZm8tPnRhYmxlc1t0YWJsZUluZGV4XSk7CiAKLSAg
ICAgICAgRWxlbWVudCBlbGVtZW50KG1ha2VJMzJJbml0RXhwcihpbml0T3Bjb2RlLCBpbml0RXhw
ckJpdHMpKTsKKyAgICAgICAgRWxlbWVudCBlbGVtZW50KHRhYmxlSW5kZXgsIG1ha2VJMzJJbml0
RXhwcihpbml0T3Bjb2RlLCBpbml0RXhwckJpdHMpKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRighZWxlbWVudC5mdW5jdGlvbkluZGljZXMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGluZGV4Q291
bnQpLCAiY2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciAiLCBpbmRleENvdW50LCAiIEVsZW1lbnQg
aW5kaWNlcyIpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGlu
ZGV4Q291bnQ7ICsraW5kZXgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21UYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmgK
aW5kZXggYjFlMmI1ZGY0ZGYxYzY0NWNmOWIzMzAyZWE1ODdhMDdmZWVjOGQ2Yy4uZDZhYWM1YjU1
ODJkYTQyMGNkNDE2MzRlMGU1MzJiYzUyNTQ4YTkzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVRhYmxlLmgKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB1aW50
MzJfdCBhbGxvY2F0ZWRMZW5ndGgodWludDMyX3QgbGVuZ3RoKTsKICAgICB1aW50MzJfdCBtYXNr
KCkgY29uc3QgeyByZXR1cm4gbV9tYXNrOyB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBU
KiBvd25lcigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KG1fb3duZXIpOyB9
CiAgICAgdm9pZCBzZXRPd25lcihKU09iamVjdCogb3duZXIpCiAgICAgewogICAgICAgICBBU1NF
UlQoIW1fb3duZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5j
cHAKaW5kZXggN2YxYWM2MWVlOGEyNGNkMWU5MThiOGJkZWFjY2I4ZGJlNDM0OGU5OC4uYmQyMWQ4
MGVmMWE1M2YzNzliMTVjNzA4ODIxZThjNjc2NWRiZGZhNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCkBAIC0xMDYsOCArMTA2LDggQEAgcHVibGljOgog
ICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmVmRnVuYyh1aW50MzJfdCBpbmRleCwg
RXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKICAgICAvLyBUYWJsZXMKLSAgICBSZXN1bHQgV0FS
Tl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVz
c2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJs
ZVNldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSk7CisgICAg
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZUdldCh1bnNpZ25lZCwgRXhwcmVzc2lv
blR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIGFkZFRhYmxlU2V0KHVuc2lnbmVkLCBFeHByZXNzaW9uVHlwZSYgaW5kZXgs
IEV4cHJlc3Npb25UeXBlJiB2YWx1ZSk7CiAKICAgICAvLyBMb2NhbHMKICAgICBSZXN1bHQgV0FS
Tl9VTlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxscwogICAg
IFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1bnNpZ25lZCBjYWxsZWVJbmRleCwg
Y29uc3QgU2lnbmF0dXJlJiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRD
YWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlJiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBl
PiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0
dXJlJiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCk7CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZGlkS2lsbChFeHByZXNzaW9uVHlw
ZSkgeyB9CiAKQEAgLTE3OCwyMSArMTc4LDIyIEBAIGF1dG8gVmFsaWRhdGU6OmFkZEFyZ3VtZW50
cyhjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSkgLT4gUmVzdWx0CiAgICAgcmV0dXJuIHsgfTsK
IH0KIAotYXV0byBWYWxpZGF0ZTo6YWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBSZXN1bHQKK2F1dG8gVmFsaWRhdGU6OmFkZFRhYmxl
R2V0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCkgLT4gUmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0gbV9tb2R1bGUudGFibGVJ
bmZvcm1hdGlvbi53YXNtVHlwZSgpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYodGFibGVJ
bmRleCA+PSBtX21vZHVsZS50YWJsZUNvdW50KCksICJ0YWJsZSBpbmRleCAiLCB0YWJsZUluZGV4
LCAiIGlzIGludmFsaWQsIGxpbWl0IGlzICIsIG1fbW9kdWxlLnRhYmxlQ291bnQoKSk7CisgICAg
cmVzdWx0ID0gbV9tb2R1bGUudGFibGVzW3RhYmxlSW5kZXhdLndhc21UeXBlKCk7CiAgICAgV0FT
TV9WQUxJREFUT1JfRkFJTF9JRihUeXBlOjpJMzIgIT0gaW5kZXgsICJ0YWJsZS5nZXQgaW5kZXgg
dG8gdHlwZSAiLCBpbmRleCwgIiBleHBlY3RlZCAiLCBUeXBlOjpJMzIpOwogCiAgICAgcmV0dXJu
IHsgfTsKIH0KIAotYXV0byBWYWxpZGF0ZTo6YWRkVGFibGVTZXQoRXhwcmVzc2lvblR5cGUmIGlu
ZGV4LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUpIC0+IFJlc3VsdAorYXV0byBWYWxpZGF0ZTo6YWRk
VGFibGVTZXQodW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHBy
ZXNzaW9uVHlwZSYgdmFsdWUpIC0+IFJlc3VsdAogewotICAgIGF1dG8gdHlwZSA9IG1fbW9kdWxl
LnRhYmxlSW5mb3JtYXRpb24ud2FzbVR5cGUoKTsKKyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lG
KHRhYmxlSW5kZXggPj0gbV9tb2R1bGUudGFibGVDb3VudCgpLCAidGFibGUgaW5kZXggIiwgdGFi
bGVJbmRleCwgIiBpcyBpbnZhbGlkLCBsaW1pdCBpcyAiLCBtX21vZHVsZS50YWJsZUNvdW50KCkp
OworICAgIGF1dG8gdHlwZSA9IG1fbW9kdWxlLnRhYmxlc1t0YWJsZUluZGV4XS53YXNtVHlwZSgp
OwogICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoVHlwZTo6STMyICE9IGluZGV4LCAidGFibGUu
c2V0IGluZGV4IHRvIHR5cGUgIiwgaW5kZXgsICIgZXhwZWN0ZWQgIiwgVHlwZTo6STMyKTsKICAg
ICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFpc1N1YnR5cGUodmFsdWUsIHR5cGUpLCAidGFibGUu
c2V0IHZhbHVlIHRvIHR5cGUgIiwgdmFsdWUsICIgZXhwZWN0ZWQgIiwgdHlwZSk7Ci0gICAgV0FT
TV9WQUxJREFUT1JfRkFJTF9JRihtX21vZHVsZS50YWJsZUluZm9ybWF0aW9uLnR5cGUoKSAhPSBU
YWJsZUVsZW1lbnRUeXBlOjpBbnlyZWYKLSAgICAgICAgJiYgbV9tb2R1bGUudGFibGVJbmZvcm1h
dGlvbi50eXBlKCkgIT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgInRhYmxlLnNldCBleHBl
Y3RzIHRoZSB0YWJsZSB0byBoYXZlIHR5cGUgYW55cmVmIG9yIGFueWZ1bmMiKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChtX21vZHVsZS50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpID09IFRhYmxlRWxl
bWVudFR5cGU6OkFueXJlZiB8fCBtX21vZHVsZS50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpID09
IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTM3
OSw5ICszODAsMTAgQEAgYXV0byBWYWxpZGF0ZTo6YWRkQ2FsbCh1bnNpZ25lZCwgY29uc3QgU2ln
bmF0dXJlJiBzaWduYXR1cmUsIGNvbnN0IFZlY3RvcjxFeHByZXMKICAgICByZXR1cm4geyB9Owog
fQogCi1hdXRvIFZhbGlkYXRlOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUsIGNvbnN0IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpIC0+IFJlc3VsdAorYXV0byBWYWxpZGF0ZTo6YWRkQ2FsbEluZGlyZWN0KHVuc2ln
bmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8
RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBSZXN1bHQK
IHsKLSAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKG1fbW9kdWxlLnRhYmxlSW5mb3JtYXRpb24u
dHlwZSgpICE9IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYsICJUYWJsZSBtdXN0IGhhdmUgdHlw
ZSBBbnlmdW5jIHRvIGNhbGwiKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh0YWJsZUluZGV4IDwgbV9t
b2R1bGUudGFibGVDb3VudCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX21vZHVsZS50YWJsZXNb
dGFibGVJbmRleF0udHlwZSgpID09IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpOwogICAgIGNv
bnN0IGF1dG8gYXJndW1lbnRDb3VudCA9IHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCk7CiAgICAg
V0FTTV9WQUxJREFUT1JfRkFJTF9JRihhcmd1bWVudENvdW50ICE9IGFyZ3Muc2l6ZSgpIC0gMSwg
ImFyaXR5IG1pc21hdGNoIGluIGNhbGxfaW5kaXJlY3QsIGdvdCAiLCBhcmdzLnNpemUoKSAtIDEs
ICIgYXJndW1lbnRzLCBleHBlY3RlZCAiLCBhcmd1bWVudENvdW50KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAK
aW5kZXggMzIzNDI3ZmQ4YTBhZjI0Y2UyOTM2NGZlNDA0YjE2NzBhNjgzYjU5Ny4uOTlhZmExYWM2
NzQzZTkyOGZiNTU5Yzk4MjdhZTQ4MjJhZmNiM2UzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCkBAIC01Myw2
ICs1Myw3IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6SlNXZWJBc3NlbWJseUluc3RhbmNlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZjxXCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1
cmUpCiAgICAgLCBtX2luc3RhbmNlKFdURk1vdmUoaW5zdGFuY2UpKQogICAgICwgbV92bSgmdm0p
CisgICAgLCBtX3RhYmxlcyhtX2luc3RhbmNlLT5tb2R1bGUoKS5tb2R1bGVJbmZvcm1hdGlvbigp
LnRhYmxlQ291bnQoKSkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGhpcy0+aW5z
dGFuY2UoKS5udW1JbXBvcnRGdW5jdGlvbnMoKTsgKytpKQogICAgICAgICBuZXcgKHRoaXMtPmlu
c3RhbmNlKCkuaW1wb3J0RnVuY3Rpb248V3JpdGVCYXJyaWVyPEpTT2JqZWN0Pj4oaSkpIFdyaXRl
QmFycmllcjxKU09iamVjdD4oKTsKQEAgLTg1LDcgKzg2LDggQEAgdm9pZCBKU1dlYkFzc2VtYmx5
SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NvZGVCbG9jayk7CiAgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3QpOwogICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbWVtb3J5KTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX3RhYmxlKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGhpc09i
amVjdC0+aW5zdGFuY2UoKS5tb2R1bGUoKS5tb2R1bGVJbmZvcm1hdGlvbigpLnRhYmxlQ291bnQo
KTsgKytpKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3RhYmxlc1tpXSk7
CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jYWxsZWUpOwogICAgIHZpc2l0b3Iu
cmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRoaXNPYmplY3QtPm1faW5zdGFuY2UtPmV4dHJhTWVt
b3J5QWxsb2NhdGVkKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzT2JqZWN0
LT5pbnN0YW5jZSgpLm51bUltcG9ydEZ1bmN0aW9ucygpOyArK2kpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCmluZGV4IDIx
Nzg0YTkzOWQ4ZWI0N2U4ZjUyNDZlMjY2M2VmMzY3NzA0OTI4ZTUuLmUxNjMxZmNiYjE4MzNlMDE4
ZWY3YzRkNjE3ODA5MTgyNGQ0ZTYxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCkBAIC03MSwxMSArNzEsMTMgQEAg
cHVibGljOgogICAgIH0KICAgICBXYXNtOjpNZW1vcnlNb2RlIG1lbW9yeU1vZGUoKSB7IHJldHVy
biBtZW1vcnkoKS0+bWVtb3J5KCkubW9kZSgpOyB9CiAKLSAgICBKU1dlYkFzc2VtYmx5VGFibGUq
IHRhYmxlKCkgeyByZXR1cm4gbV90YWJsZS5nZXQoKTsgfQotICAgIHZvaWQgc2V0VGFibGUoVk0m
IHZtLCBKU1dlYkFzc2VtYmx5VGFibGUqIHZhbHVlKSB7Ci0gICAgICAgIEFTU0VSVCghdGFibGUo
KSk7Ci0gICAgICAgIG1fdGFibGUuc2V0KHZtLCB0aGlzLCB2YWx1ZSk7Ci0gICAgICAgIGluc3Rh
bmNlKCkuc2V0VGFibGUobWFrZVJlZigqdGFibGUoKS0+dGFibGUoKSkpOworICAgIEpTV2ViQXNz
ZW1ibHlUYWJsZSogdGFibGUodW5zaWduZWQgaSkgeyByZXR1cm4gbV90YWJsZXNbaV0uZ2V0KCk7
IH0KKyAgICB2b2lkIHNldFRhYmxlKFZNJiB2bSwgdWludDMyX3QgaW5kZXgsIEpTV2ViQXNzZW1i
bHlUYWJsZSogdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBtX3RhYmxlcy5z
aXplKCkpOworICAgICAgICBBU1NFUlQoIXRhYmxlKGluZGV4KSk7CisgICAgICAgIG1fdGFibGVz
W2luZGV4XS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKKyAgICAgICAgaW5zdGFuY2UoKS5zZXRUYWJs
ZShpbmRleCwgbWFrZVJlZigqdGFibGUoaW5kZXgpLT50YWJsZSgpKSk7CiAgICAgfQogCiAgICAg
SlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGUuZ2V0
KCk7IH0KQEAgLTk4LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPEpTV2Vi
QXNzZW1ibHlDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwogICAgIFdyaXRlQmFycmllcjxKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdD4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3Q7CiAgICAgV3JpdGVCYXJy
aWVyPEpTV2ViQXNzZW1ibHlNZW1vcnk+IG1fbWVtb3J5OwotICAgIFdyaXRlQmFycmllcjxKU1dl
YkFzc2VtYmx5VGFibGU+IG1fdGFibGU7CisgICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU1dlYkFz
c2VtYmx5VGFibGU+PiBtX3RhYmxlczsKICAgICBXcml0ZUJhcnJpZXI8V2ViQXNzZW1ibHlUb0pT
Q2FsbGVlPiBtX2NhbGxlZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRleCAxMmIxY2VmMmRm
NDY4NzlhMmM3ZjFiMzcxZjRjNTkzOTliZWM2NjEzLi4wNTJkMDg1ODk2ODk1YjlkOTQyYjQ4OTBi
ZWIzNTYwOWFiNzM1ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBAIC0xMTMsOCArMTEzLDYgQEAg
dm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUsIEpTT2JqZWN0KiBpbXBvcnRPYmoKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoYmVmb3Jl
LCAiICIsIFN0cmluZzo6ZnJvbVVURjgoaW1wb3J0Lm1vZHVsZSksICI6IiwgU3RyaW5nOjpmcm9t
VVRGOChpbXBvcnQuZmllbGQpLCAiICIsIGFmdGVyKTsKICAgICB9OwogCi0gICAgYm9vbCBoYXNU
YWJsZUltcG9ydCA9IGZhbHNlOwotCiAgICAgZm9yIChjb25zdCBhdXRvJiBpbXBvcnQgOiBtb2R1
bGVJbmZvcm1hdGlvbi5pbXBvcnRzKSB7CiAgICAgICAgIC8vIFZhbGlkYXRpb24gYW5kIGxpbmtp
bmcgb3RoZXIgdGhhbiBXYXNtOjpFeHRlcm5hbEtpbmQ6OkZ1bmN0aW9uIGlzIGFscmVhZHkgZG9u
ZSBpbiBKU1dlYkFzc2VtYmx5SW5zdGFuY2UuCiAgICAgICAgIC8vIEV2ZW50dWFsbHkgd2Ugd2ls
bCBtb3ZlIGFsbCB0aGUgbGlua2luZyBjb2RlIGluIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSBoZXJl
IGFuZCByZW1vdmUgdGhpcyBzd2l0Y2ggc3RhdGVtZW50LgpAQCAtMjY0LDIwICsyNjIsMTggQEAg
dm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUsIEpTT2JqZWN0KiBpbXBvcnRPYmoKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgV2FzbTo6
RXh0ZXJuYWxLaW5kOjpUYWJsZTogewotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWhhc1Rh
YmxlSW1wb3J0KTsgLy8gVGhpcyBzaG91bGQgYmUgZ3VhcmFudGVlZCBieSBhIHZhbGlkYXRpb24g
ZmFpbHVyZS4KICAgICAgICAgICAgIC8vIDcuIE90aGVyd2lzZSAoaSBpcyBhIHRhYmxlIGltcG9y
dCk6Ci0gICAgICAgICAgICBoYXNUYWJsZUltcG9ydCA9IHRydWU7CiAgICAgICAgICAgICBKU1dl
YkFzc2VtYmx5VGFibGUqIHRhYmxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5VGFibGUq
Pih2bSwgdmFsdWUpOwogICAgICAgICAgICAgLy8gaS4gSWYgdiBpcyBub3QgYSBXZWJBc3NlbWJs
eS5UYWJsZSBvYmplY3QsIHRocm93IGEgV2ViQXNzZW1ibHkuTGlua0Vycm9yLgogICAgICAgICAg
ICAgaWYgKCF0YWJsZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpT
V2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwg
IlRhYmxlIGltcG9ydCIsICJpcyBub3QgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuVGFibGUi
KSkpOwogCi0gICAgICAgICAgICB1aW50MzJfdCBleHBlY3RlZEluaXRpYWwgPSBtb2R1bGVJbmZv
cm1hdGlvbi50YWJsZUluZm9ybWF0aW9uLmluaXRpYWwoKTsKKyAgICAgICAgICAgIHVpbnQzMl90
IGV4cGVjdGVkSW5pdGlhbCA9IG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlc1tpbXBvcnQua2luZElu
ZGV4XS5pbml0aWFsKCk7CiAgICAgICAgICAgICB1aW50MzJfdCBhY3R1YWxJbml0aWFsID0gdGFi
bGUtPmxlbmd0aCgpOwogICAgICAgICAgICAgaWYgKGFjdHVhbEluaXRpYWwgPCBleHBlY3RlZElu
aXRpYWwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2Vt
Ymx5TGlua0Vycm9yKGV4ZWMsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJUYWJsZSBp
bXBvcnQiLCAicHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgdG9vIHNtYWxsIikpKTsKIAot
ICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBleHBlY3RlZE1heGltdW0gPSBtb2R1
bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0aW9uLm1heGltdW0oKSkgeworICAgICAgICAgICAg
aWYgKE9wdGlvbmFsPHVpbnQzMl90PiBleHBlY3RlZE1heGltdW0gPSBtb2R1bGVJbmZvcm1hdGlv
bi50YWJsZXNbaW1wb3J0LmtpbmRJbmRleF0ubWF4aW11bSgpKSB7CiAgICAgICAgICAgICAgICAg
T3B0aW9uYWw8dWludDMyX3Q+IGFjdHVhbE1heGltdW0gPSB0YWJsZS0+bWF4aW11bSgpOwogICAg
ICAgICAgICAgICAgIGlmICghYWN0dWFsTWF4aW11bSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBpbXBv
cnRGYWlsTWVzc2FnZShpbXBvcnQsICJUYWJsZSBpbXBvcnQiLCAiZG9lcyBub3QgaGF2ZSBhICdt
YXhpbXVtJyBidXQgdGhlIG1vZHVsZSByZXF1aXJlcyB0aGF0IGl0IGRvZXMiKSkpOwpAQCAtMjg1
LDE0ICsyODEsMTQgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRPYmoKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZt
LCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJJbXBvcnRlZCBUYWJsZSIsICInbWF4aW11bScg
aXMgbGFyZ2VyIHRoYW4gdGhlIG1vZHVsZSdzIGV4cGVjdGVkICdtYXhpbXVtJyIpKSk7CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gZXhwZWN0ZWRUeXBlID0gbW9kdWxlSW5mb3Jt
YXRpb24udGFibGVJbmZvcm1hdGlvbi50eXBlKCk7CisgICAgICAgICAgICBhdXRvIGV4cGVjdGVk
VHlwZSA9IG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlc1tpbXBvcnQua2luZEluZGV4XS50eXBlKCk7
CiAgICAgICAgICAgICBhdXRvIGFjdHVhbFR5cGUgPSB0YWJsZS0+dGFibGUoKS0+dHlwZSgpOwog
ICAgICAgICAgICAgaWYgKGV4cGVjdGVkVHlwZSAhPSBhY3R1YWxUeXBlKQogICAgICAgICAgICAg
ICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2
bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiVGFibGUgaW1wb3J0IiwgInByb3ZpZGVkIGEg
J3R5cGUnIHRoYXQgaXMgd3JvbmciKSkpOwogCiAgICAgICAgICAgICAvLyBpaS4gQXBwZW5kIHYg
dG8gdGFibGVzLgogICAgICAgICAgICAgLy8gaWlpLiBBcHBlbmQgdi5bW1RhYmxlXV0gdG8gaW1w
b3J0cy4KLSAgICAgICAgICAgIG1faW5zdGFuY2UtPnNldFRhYmxlKHZtLCB0YWJsZSk7CisgICAg
ICAgICAgICBtX2luc3RhbmNlLT5zZXRUYWJsZSh2bSwgaW1wb3J0LmtpbmRJbmRleCwgdGFibGUp
OwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zMDIsMTYgKzI5OCwxNiBAQCB2b2lkIFdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgSlNPYmpl
Y3QqIGltcG9ydE9iagogICAgICAgICB9CiAgICAgfQogCi0gICAgewotICAgICAgICBpZiAoISFt
b2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0aW9uICYmIG1vZHVsZUluZm9ybWF0aW9uLnRh
YmxlSW5mb3JtYXRpb24uaXNJbXBvcnQoKSkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUNvdW50KCk7ICsraSkgeworICAgICAgICBpZiAobW9k
dWxlSW5mb3JtYXRpb24udGFibGVzW2ldLmlzSW1wb3J0KCkpIHsKICAgICAgICAgICAgIC8vIFdl
IHNob3VsZCBlaXRoZXIgaGF2ZSBhIFRhYmxlIGltcG9ydCBvciB3ZSBzaG91bGQgaGF2ZSB0aHJv
d24gYW4gZXhjZXB0aW9uLgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaGFzVGFibGVJbXBv
cnQpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9pbnN0YW5jZS0+dGFibGUoaSkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKCEhbW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1h
dGlvbiAmJiAhaGFzVGFibGVJbXBvcnQpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFt
b2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0aW9uLmlzSW1wb3J0KCkpOworICAgICAgICBp
ZiAoIW1faW5zdGFuY2UtPnRhYmxlKGkpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bW9kdWxlSW5mb3JtYXRpb24udGFibGVzW2ldLmlzSW1wb3J0KCkpOwogICAgICAgICAgICAgLy8g
V2UgY3JlYXRlIGEgVGFibGUgd2hlbiBpdCdzIGEgVGFibGUgZGVmaW5pdGlvbi4KLSAgICAgICAg
ICAgIFJlZlB0cjxXYXNtOjpUYWJsZT4gd2FzbVRhYmxlID0gV2FzbTo6VGFibGU6OnRyeUNyZWF0
ZShtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0aW9uLmluaXRpYWwoKSwgbW9kdWxlSW5m
b3JtYXRpb24udGFibGVJbmZvcm1hdGlvbi5tYXhpbXVtKCksIG1vZHVsZUluZm9ybWF0aW9uLnRh
YmxlSW5mb3JtYXRpb24udHlwZSgpKTsKKyAgICAgICAgICAgIFJlZlB0cjxXYXNtOjpUYWJsZT4g
d2FzbVRhYmxlID0gV2FzbTo6VGFibGU6OnRyeUNyZWF0ZShtb2R1bGVJbmZvcm1hdGlvbi50YWJs
ZXNbaV0uaW5pdGlhbCgpLCBtb2R1bGVJbmZvcm1hdGlvbi50YWJsZXNbaV0ubWF4aW11bSgpLCBt
b2R1bGVJbmZvcm1hdGlvbi50YWJsZXNbaV0udHlwZSgpKTsKICAgICAgICAgICAgIGlmICghd2Fz
bVRhYmxlKQogICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3Nl
bWJseUxpbmtFcnJvcihleGVjLCB2bSwgImNvdWxkbid0IGNyZWF0ZSBUYWJsZSIpKTsKICAgICAg
ICAgICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBKU1dlYkFzc2VtYmx5VGFibGU6OmNy
ZWF0ZShleGVjLCB2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseVRhYmxlU3RydWN0dXJlKCks
IHdhc21UYWJsZS5yZWxlYXNlTm9uTnVsbCgpKTsKQEAgLTMxOSw3ICszMTUsNyBAQCB2b2lkIFdl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgSlNP
YmplY3QqIGltcG9ydE9iagogICAgICAgICAgICAgLy8gSWYgaXQncyBkZWZpbmVkIHRvIGJlIHRv
byBsYXJnZSwgd2Ugc2hvdWxkIGhhdmUgdGhyb3duIGEgdmFsaWRhdGlvbiBlcnJvci4KICAgICAg
ICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBBU1NFUlQodGFi
bGUpOwotICAgICAgICAgICAgbV9pbnN0YW5jZS0+c2V0VGFibGUodm0sIHRhYmxlKTsKKyAgICAg
ICAgICAgIG1faW5zdGFuY2UtPnNldFRhYmxlKHZtLCBpLCB0YWJsZSk7CiAgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgICAgICB9CiAgICAgfQpAQCAt
Mzk3LDEwICszOTMsOCBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9iagogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxLaW5kOjpUYWJsZTogewogICAgICAgICAgICAgLy8gVGhp
cyBzaG91bGQgYmUgZ3VhcmFudGVlZCBieSBtb2R1bGUgdmVyaWZpY2F0aW9uLgotICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobV9pbnN0YW5jZS0+dGFibGUoKSk7IAotICAgICAgICAgICAgQVNT
RVJUKGV4cC5raW5kSW5kZXggPT0gMCk7Ci0KLSAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBt
X2luc3RhbmNlLT50YWJsZSgpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9pbnN0YW5j
ZS0+dGFibGUoZXhwLmtpbmRJbmRleCkpOworICAgICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9IG1f
aW5zdGFuY2UtPnRhYmxlKGV4cC5raW5kSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6Ok1lbW9yeTogewpAQCAtNDg2
LDcgKzQ4MCw2IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEV4
ZWNTdGF0ZSogZXhlYykKICAgICBXYXNtOjpNb2R1bGUmIG1vZHVsZSA9IG1faW5zdGFuY2UtPmlu
c3RhbmNlKCkubW9kdWxlKCk7CiAgICAgV2FzbTo6Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2lu
c3RhbmNlLT5pbnN0YW5jZSgpLmNvZGVCbG9jaygpOwogICAgIGNvbnN0IFdhc206Ok1vZHVsZUlu
Zm9ybWF0aW9uJiBtb2R1bGVJbmZvcm1hdGlvbiA9IG1vZHVsZS5tb2R1bGVJbmZvcm1hdGlvbigp
OwotICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBtX2luc3RhbmNlLT50YWJsZSgpOwog
CiAgICAgY29uc3QgVmVjdG9yPFdhc206OlNlZ21lbnQ6OlB0cj4mIGRhdGEgPSBtb2R1bGVJbmZv
cm1hdGlvbi5kYXRhOwogICAgIApAQCAtNDk4LDE2ICs0OTEsMTYgQEAgSlNWYWx1ZSBXZWJBc3Nl
bWJseU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAg
Ly8gQWxzbywgaXQgY291bGQgYmUgdGhhdCBhIHRhYmxlIHdhc24ndCBpbXBvcnRlZCwgb3IgdGhh
dCB0aGUgdGFibGUKICAgICAgICAgICAgIC8vIGltcG9ydGVkIHdhc24ndCBjb21wYXRpYmxlLiBI
b3dldmVyLCB0aG9zZSBzaG91bGQgZXJyb3Igb3V0IGJlZm9yZQogICAgICAgICAgICAgLy8gZ2V0
dGluZyBoZXJlLgotICAgICAgICAgICAgQVNTRVJUKCEhdGFibGUpOworICAgICAgICAgICAgQVNT
RVJUKCEhbV9pbnN0YW5jZS0+dGFibGUoZWxlbWVudC50YWJsZUluZGV4KSk7CiAKICAgICAgICAg
ICAgIGlmICghZWxlbWVudC5mdW5jdGlvbkluZGljZXMuc2l6ZSgpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgICAgICB1aW50MzJfdCB0YWJsZUluZGV4ID0gZWxlbWVudC5v
ZmZzZXQuaXNHbG9iYWxJbXBvcnQoKQorICAgICAgICAgICAgdWludDMyX3QgZWxlbWVudEluZGV4
ID0gZWxlbWVudC5vZmZzZXQuaXNHbG9iYWxJbXBvcnQoKQogICAgICAgICAgICAgICAgID8gc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KG1faW5zdGFuY2UtPmluc3RhbmNlKCkubG9hZEkzMkdsb2JhbChl
bGVtZW50Lm9mZnNldC5nbG9iYWxJbXBvcnRJbmRleCgpKSkKICAgICAgICAgICAgICAgICA6IGVs
ZW1lbnQub2Zmc2V0LmNvbnN0VmFsdWUoKTsKIAotICAgICAgICAgICAgZm4oZWxlbWVudCwgdGFi
bGVJbmRleCk7CisgICAgICAgICAgICBmbihlbGVtZW50LCBlbGVtZW50LnRhYmxlSW5kZXgsIGVs
ZW1lbnRJbmRleCk7CiAKICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CkBAIC01MzEsOSArNTI0LDkgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJl
Y29yZDo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgIH07CiAKICAgICAvLyBWYWxpZGF0
aW9uIG9mIGFsbCBlbGVtZW50IHJhbmdlcyBjb21lcyBiZWZvcmUgYWxsIFRhYmxlIGFuZCBNZW1v
cnkgaW5pdGlhbGl6YXRpb24uCi0gICAgZm9yRWFjaEVsZW1lbnQoWyZdIChjb25zdCBXYXNtOjpF
bGVtZW50JiBlbGVtZW50LCB1aW50MzJfdCB0YWJsZUluZGV4KSB7Ci0gICAgICAgIHVpbnQ2NF90
IGxhc3RXcml0dGVuSW5kZXggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4odGFibGVJbmRleCkgKyBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oZWxlbWVudC5mdW5jdGlvbkluZGljZXMuc2l6ZSgpKSAtIDE7
Ci0gICAgICAgIGlmIChVTkxJS0VMWShsYXN0V3JpdHRlbkluZGV4ID49IHRhYmxlLT5sZW5ndGgo
KSkpCisgICAgZm9yRWFjaEVsZW1lbnQoWyZdIChjb25zdCBXYXNtOjpFbGVtZW50JiBlbGVtZW50
LCB1aW50MzJfdCB0YWJsZUluZGV4LCB1aW50MzJfdCBlbGVtZW50SW5kZXgpIHsKKyAgICAgICAg
dWludDY0X3QgbGFzdFdyaXR0ZW5JbmRleCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihlbGVtZW50
SW5kZXgpICsgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnNp
emUoKSkgLSAxOworICAgICAgICBpZiAoVU5MSUtFTFkobGFzdFdyaXR0ZW5JbmRleCA+PSBtX2lu
c3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+bGVuZ3RoKCkpKQogICAgICAgICAgICAgZXhjZXB0
aW9uID0gSlNWYWx1ZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlSlNXZWJBc3Nl
bWJseUxpbmtFcnJvcihleGVjLCB2bSwgIkVsZW1lbnQgaXMgdHJ5aW5nIHRvIHNldCBhbiBvdXQg
b2YgYm91bmRzIHRhYmxlIGluZGV4Il9zKSkpOwogICAgIH0pOwogCkBAIC01NTIsNyArNTQ1LDcg
QEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICByZXR1cm4gZXhjZXB0aW9uLnZhbHVlKCk7CiAKICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9pbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KHZtKTsKLSAgICBm
b3JFYWNoRWxlbWVudChbJl0gKGNvbnN0IFdhc206OkVsZW1lbnQmIGVsZW1lbnQsIHVpbnQzMl90
IHRhYmxlSW5kZXgpIHsKKyAgICBmb3JFYWNoRWxlbWVudChbJl0gKGNvbnN0IFdhc206OkVsZW1l
bnQmIGVsZW1lbnQsIHVpbnQzMl90IHRhYmxlSW5kZXgsIHVpbnQzMl90IGVsZW1lbnRJbmRleCkg
ewogICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgZWxlbWVudC5mdW5jdGlvbkluZGlj
ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGVzc2VudGlhbGx5
IG1lYW5zIHdlJ3JlIGV4cG9ydGluZyBhbiBpbXBvcnQuCiAgICAgICAgICAgICAvLyBXZSBuZWVk
IGEgc3RvcnkgaGVyZS4gV2UgbmVlZCB0byBjcmVhdGUgYSBXZWJBc3NlbWJseUZ1bmN0aW9uCkBA
IC01NjgsMTQgKzU2MSwxNCBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFs
dWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2UgYSBX
ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiBjYW4gbmV2ZXIgd3JhcCBhbm90aGVyIFdlYkFzc2Vt
Ymx5V3JhcHBlckZ1bmN0aW9uLAogICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb25seSB0eXBl
IHRoaXMgY291bGQgYmUgaXMgV2ViQXNzZW1ibHlGdW5jdGlvbi4KICAgICAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQod2FzbUZ1bmN0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdGFi
bGUtPnNldCh0YWJsZUluZGV4LCB3YXNtRnVuY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICAr
K3RhYmxlSW5kZXg7CisgICAgICAgICAgICAgICAgICAgIG1faW5zdGFuY2UtPnRhYmxlKHRhYmxl
SW5kZXgpLT5zZXQoZWxlbWVudEluZGV4LCB3YXNtRnVuY3Rpb24pOworICAgICAgICAgICAgICAg
ICAgICArK2VsZW1lbnRJbmRleDsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgdGFibGUtPnNldCh0YWJsZUluZGV4LAor
ICAgICAgICAgICAgICAgIG1faW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5zZXQoZWxlbWVu
dEluZGV4LAogICAgICAgICAgICAgICAgICAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlXcmFwcGVy
RnVuY3Rpb25TdHJ1Y3R1cmUoKSwgZnVuY3Rpb25JbXBvcnQsIGZ1bmN0aW9uSW5kZXgsIG1faW5z
dGFuY2UuZ2V0KCksIHNpZ25hdHVyZUluZGV4KSk7Ci0gICAgICAgICAgICAgICAgKyt0YWJsZUlu
ZGV4OworICAgICAgICAgICAgICAgICsrZWxlbWVudEluZGV4OwogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgfQogCkBAIC01ODksOCArNTgyLDggQEAgSlNWYWx1ZSBXZWJB
c3NlbWJseU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAg
ICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogZnVuY3Rpb24gPSBXZWJBc3NlbWJseUZ1bmN0aW9uOjpj
cmVhdGUoCiAgICAgICAgICAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53
ZWJBc3NlbWJseUZ1bmN0aW9uU3RydWN0dXJlKCksIHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCks
IFN0cmluZygpLCBtX2luc3RhbmNlLmdldCgpLCBlbWJlZGRlckVudHJ5cG9pbnRDYWxsZWUsIGVu
dHJ5cG9pbnRMb2FkTG9jYXRpb24sIHNpZ25hdHVyZUluZGV4KTsKIAotICAgICAgICAgICAgdGFi
bGUtPnNldCh0YWJsZUluZGV4LCBmdW5jdGlvbik7Ci0gICAgICAgICAgICArK3RhYmxlSW5kZXg7
CisgICAgICAgICAgICBtX2luc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+c2V0KGVsZW1lbnRJ
bmRleCwgZnVuY3Rpb24pOworICAgICAgICAgICAgKytlbGVtZW50SW5kZXg7CiAgICAgICAgIH0K
ICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5q
c29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCmluZGV4IDc1Mjg1ZDZm
YjcwMDkwMWNhNTI3NWVhM2ZkNzViYjE4ZDMwZTQxM2IuLjk2ZThhMWQyMDc3Mjk5MDBkMzk1MThi
MTA5NjVlNmM1NzZkMGY4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L3dhc20uanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KQEAg
LTY3LDEwICs2NywxMCBAQAogICAgICAgICAidGVlX2xvY2FsIjogICAgICAgICAgIHsgImNhdGVn
b3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzQsICJyZXR1cm4iOiBbImFueSJdLCAgICAg
ICJwYXJhbWV0ZXIiOiBbImFueSJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJu
YW1lIjogImxvY2FsX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIndyaXRlIGEg
bG9jYWwgdmFyaWFibGUgb3IgcGFyYW1ldGVyIGFuZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUiIH0s
CiAgICAgICAgICJnZXRfZ2xvYmFsIjogICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIs
ICAgICJ2YWx1ZSI6ICAzNSwgInJldHVybiI6IFsiYW55Il0sICAgICAgInBhcmFtZXRlciI6IFtd
LCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZ2xvYmFsX2lu
ZGV4IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAicmVhZCBhIGdsb2JhbCB2YXJpYWJsZSIg
fSwKICAgICAgICAgInNldF9nbG9iYWwiOiAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFs
IiwgICAgInZhbHVlIjogIDM2LCAicmV0dXJuIjogW10sICAgICAgICAgICAicGFyYW1ldGVyIjog
WyJhbnkiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJnbG9iYWxf
aW5kZXgiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3cml0ZSBhIGdsb2JhbCB2YXJpYWJs
ZSIgfSwKLSAgICAgICAgInRhYmxlLmdldCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVj
aWFsIiwgICAgInZhbHVlIjogIDM3LCAicmV0dXJuIjogWyJhbnlyZWYiXSwgICAicGFyYW1ldGVy
IjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJnZXQgYSB0YWJsZSB2YWx1ZSIg
fSwKLSAgICAgICAgInRhYmxlLnNldCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFs
IiwgICAgInZhbHVlIjogIDM4LCAicmV0dXJuIjogW10sICAgICAgICAgICAicGFyYW1ldGVyIjog
WyJpMzIiLCAiYW55cmVmIl0sICAgICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJzZXQgYSB0YWJsZSB2YWx1ZSIgfSwK
KyAgICAgICAgInRhYmxlLmdldCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwg
ICAgInZhbHVlIjogIDM3LCAicmV0dXJuIjogWyJhbnlyZWYiXSwgICAicGFyYW1ldGVyIjogWyJp
MzIiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0YWJsZV9pbmRl
eCIsICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJnZXQgYSB0YWJsZSB2YWx1ZSIgfSwKKyAg
ICAgICAgInRhYmxlLnNldCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAg
InZhbHVlIjogIDM4LCAicmV0dXJuIjogW10sICAgICAgICAgICAicGFyYW1ldGVyIjogWyJpMzIi
LCAiYW55cmVmIl0sICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0YWJsZV9pbmRleCIs
ICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJzZXQgYSB0YWJsZSB2YWx1ZSIgfSwKICAgICAg
ICAgImNhbGwiOiAgICAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZh
bHVlIjogIDE2LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0s
ICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmdW5jdGlvbl9pbmRleCIs
ICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gYnkgaXRzIGluZGV4IiB9
LAotICAgICAgICAiY2FsbF9pbmRpcmVjdCI6ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAg
ICAgICAidmFsdWUiOiAgMTcsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICJwYXJhbWV0ZXIiOiBb
ImNhbGwiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5k
ZXgiLCAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJyZXNlcnZlZCIsICJ0eXBl
IjogInZhcnVpbnQxIn1dLCAgImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBpbmRpcmVj
dCB3aXRoIGFuIGV4cGVjdGVkIHNpZ25hdHVyZSIgfSwKKyAgICAgICAgImNhbGxfaW5kaXJlY3Qi
OiAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE3LCAicmV0dXJu
IjogWyJjYWxsIl0sICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAi
aW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBlX2luZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQz
MiJ9LCB7Im5hbWUiOiAidGFibGVfaW5kZXgiLCJ0eXBlIjogInZhcnVpbnQzMiJ9XSwiZGVzY3Jp
cHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0
dXJlIiB9LAogICAgICAgICAiaTMyLmxvYWQ4X3MiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1l
bW9yeSIsICAgICAidmFsdWUiOiAgNDQsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0
ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZs
YWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAg
ICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnki
IH0sCiAgICAgICAgICJpMzIubG9hZDhfdSI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5
IiwgICAgICJ2YWx1ZSI6ICA0NSwgInJldHVybiI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRlciI6
IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3Mi
LCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5
cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwK
ICAgICAgICAgImkzMi5sb2FkMTZfcyI6ICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAg
ICAgInZhbHVlIjogIDQ2LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJh
ZGRyIl0sICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAg
ICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6
ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LApkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA4MmIy
NzIxZmRiYTkyNTE4OTdlNmU5Y2IxMzA1NzcxNWQ3NDYzMTk1Li4xNmRiODlkMjYzNjczMDNlNjli
YjZmYjA4NDM4ZjYwM2QxYTVmM2M2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDE5LTA2LTE3ICBKdXN0aW4g
TWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBbV0FTTS1SZWZl
cmVuY2VzXSBBZGQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgdGFibGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg3NjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICAqIHdhc20vQnVpbGRlci5qczoKKyAgICAgICAg
KiB3YXNtL2pzLWFwaS9jYWxsLWluZGlyZWN0LmpzOgorICAgICAgICAoY29uc3Qub25lVGFibGUp
OgorICAgICAgICAoY29uc3QubXVsdGlUYWJsZSk6CisgICAgICAgIChtdWx0aVRhYmxlKToKKyAg
ICAgICAgKG11bHRpVGFibGUuUG9seXBoaWMySW1wb3J0KToKKyAgICAgICAgKG11bHRpVGFibGUu
VmlydHVhbEltcG9ydCk6CisgICAgICAgIChjb25zdC53YXNtTW9kdWxlV2hpY2hJbXBvcnRKUyk6
IERlbGV0ZWQuCisgICAgICAgIChjb25zdC5tYWtlVGFibGUpOiBEZWxldGVkLgorICAgICAgICAo
KTogRGVsZXRlZC4KKyAgICAgICAgKFBvbHlwaGljMkltcG9ydCk6IERlbGV0ZWQuCisgICAgICAg
IChWaXJ0dWFsSW1wb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2pzLWFwaS90YWJsZS5q
czoKKyAgICAgICAgKG5ldy5XZWJBc3NlbWJseS5Nb2R1bGUpOgorICAgICAgICAoYXNzZXJ0LnRo
cm93cyk6CisgICAgICAgIChhc3NlcnRCYWRUYWJsZUltcG9ydCk6CisgICAgICAgIChhc3NlcnQu
dHJ1dGh5KToKKyAgICAgICAgKGFzc2VydC50aHJvd3MubmV3LldlYkFzc2VtYmx5Lk1vZHVsZS5i
dWlsZGVyLldlYkFzc2VtYmx5KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMv
YW55cmVmX3RhYmxlLmpzOgorICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy9hbnlyZWZfdGFibGVf
aW1wb3J0LmpzOgorICAgICAgICAobWFrZUltcG9ydCk6CisgICAgICAgIChzdHJpbmdfYXBwZWFy
ZWRfaGVyZS5mdWxsR0MuYXNzZXJ0LmVxLjEuZXhwb3J0cy5nZXRfdGJsLm1ha2VJbXBvcnQpOgor
ICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUuZnVsbEdDLmFzc2VydC5lcS4xLmV4cG9ydHMu
Z2V0X3RibCk6CisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL211bHRpdGFibGUuanM6IEFkZGVk
LgorICAgICAgICAoYXNzZXJ0LnRocm93cy4xLmV4cG9ydHMuc2V0X3RibDApOgorICAgICAgICAo
YXNzZXJ0LnRocm93cyk6CisgICAgICAgIChhc3NlcnQuZXEpOgorICAgICAgICAqIHdhc20vcmVm
ZXJlbmNlcy92YWxpZGF0aW9uLmpzOgorICAgICAgICAoYXNzZXJ0LnRocm93cy5uZXcuV2ViQXNz
ZW1ibHkuTW9kdWxlLmJpbik6CisgICAgICAgIChhc3NlcnQudGhyb3dzKToKKyAgICAgICAgKiB3
YXNtL3NwZWMtdGVzdHMvaW1wb3J0cy53YXN0LmpzOgorICAgICAgICAqIHdhc20vd2FzbS5qc29u
OgorCisgICAgICAgICogd2FzbS9CdWlsZGVyLmpzOgorICAgICAgICAqIHdhc20vanMtYXBpL2Nh
bGwtaW5kaXJlY3QuanM6CisgICAgICAgIChjb25zdC5vbmVUYWJsZSk6CisgICAgICAgIChjb25z
dC5tdWx0aVRhYmxlKToKKyAgICAgICAgKG11bHRpVGFibGUpOgorICAgICAgICAobXVsdGlUYWJs
ZS5Qb2x5cGhpYzJJbXBvcnQpOgorICAgICAgICAobXVsdGlUYWJsZS5WaXJ0dWFsSW1wb3J0KToK
KyAgICAgICAgKGNvbnN0Lndhc21Nb2R1bGVXaGljaEltcG9ydEpTKTogRGVsZXRlZC4KKyAgICAg
ICAgKGNvbnN0Lm1ha2VUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgICgpOiBEZWxldGVkLgorICAg
ICAgICAoUG9seXBoaWMySW1wb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKFZpcnR1YWxJbXBvcnQp
OiBEZWxldGVkLgorICAgICAgICAqIHdhc20vanMtYXBpL3RhYmxlLmpzOgorICAgICAgICAobmV3
LldlYkFzc2VtYmx5Lk1vZHVsZSk6CisgICAgICAgIChhc3NlcnQudGhyb3dzKToKKyAgICAgICAg
KGFzc2VydEJhZFRhYmxlSW1wb3J0KToKKyAgICAgICAgKGFzc2VydC50cnV0aHkpOgorICAgICAg
ICAoYXNzZXJ0LnRocm93cy5uZXcuV2ViQXNzZW1ibHkuTW9kdWxlLmJ1aWxkZXIuV2ViQXNzZW1i
bHkpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy9hbnlyZWZfdGFibGUuanM6
CisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZV9pbXBvcnQuanM6CisgICAg
ICAgIChtYWtlSW1wb3J0KToKKyAgICAgICAgKHN0cmluZ19hcHBlYXJlZF9oZXJlLmZ1bGxHQy5h
c3NlcnQuZXEuMS5leHBvcnRzLmdldF90YmwubWFrZUltcG9ydCk6CisgICAgICAgIChzdHJpbmdf
YXBwZWFyZWRfaGVyZS5mdWxsR0MuYXNzZXJ0LmVxLjEuZXhwb3J0cy5nZXRfdGJsKToKKyAgICAg
ICAgKiB3YXNtL3JlZmVyZW5jZXMvZnVuY19yZWYuanM6CisgICAgICAgIChHZXRMb2NhbC4wLkkz
MkNvbnN0LjAuVGFibGVTZXQuRW5kLkVuZC5XZWJBc3NlbWJseS5mdW4pOiBEZWxldGVkLgorICAg
ICAgICAoR2V0TG9jYWwuMC5JMzJDb25zdC4wLlRhYmxlU2V0LkVuZC5FbmQuV2ViQXNzZW1ibHku
YXNzZXJ0LnRocm93cyk6IERlbGV0ZWQuCisgICAgICAgIChHZXRMb2NhbC4wLkkzMkNvbnN0LjAu
VGFibGVTZXQuRW5kLkVuZC5XZWJBc3NlbWJseSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9y
ZWZlcmVuY2VzL211bHRpdGFibGUuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0LnRocm93cy4x
LmV4cG9ydHMuc2V0X3RibDApOgorICAgICAgICAoYXNzZXJ0LnRocm93cyk6CisgICAgICAgIChh
c3NlcnQuZXEpOgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUudGFibGVJbnNhbml0eSk6
CisgICAgICAgIChJMzJDb25zdC4wLkdldExvY2FsLjAuVGFibGVTZXQuMS5FbmQuRW5kLldlYkFz
c2VtYmx5Lik6CisgICAgICAgIChJMzJDb25zdC4wLkdldExvY2FsLjAuVGFibGVTZXQuMS5FbmQu
RW5kLldlYkFzc2VtYmx5KToKKyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMvdmFsaWRhdGlvbi5q
czoKKyAgICAgICAgKGFzc2VydC50aHJvd3MubmV3LldlYkFzc2VtYmx5Lk1vZHVsZS5iaW4pOgor
ICAgICAgICAoYXNzZXJ0LnRocm93cyk6CisgICAgICAgICogd2FzbS9zcGVjLXRlc3RzL2ltcG9y
dHMud2FzdC5qczoKKyAgICAgICAgKiB3YXNtL3dhc20uanNvbjoKKwogMjAxOS0wNi0xNyAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CiAKICAgICAgICAgVmFsaWRh
dGUgdGhhdCB0YWJsZSBlbGVtZW50IHR5cGUgaXMgZnVuY3JlZiBpZiB1c2luZyBhbiBlbGVtZW50
IHNlY3Rpb24KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzIGIvSlNUZXN0cy93
YXNtL0J1aWxkZXIuanMKaW5kZXggNjVmMWY0NzdhOThiODYyMGZjY2QyYWE4ZjhjMTEwOWUwYWY2
Nzg2Ni4uOTc2Mzc3ZjdiM2Q5MTNkNGI4ZGIxZjhhNzU5NmU3M2QyNzkxY2I0NyAxMDA2NDQKLS0t
IGEvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMKKysrIGIvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMK
QEAgLTMwNiw2ICszMDYsNyBAQCBjb25zdCBfY2hlY2tJbW1zID0gKG9wLCBpbW1zLCBleHBlY3Rl
ZEltbXMsIHJldCkgPT4gewogICAgICAgICBjYXNlICJ0YXJnZXRfY291bnQiOiBicmVhazsgLy8g
aW1wcm92ZSBjaGVja2luZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYzNDIxCiAgICAgICAgIGNhc2UgInRhcmdldF90YWJsZSI6IGJyZWFrOyAvLyBpbXByb3ZlIGNo
ZWNraW5nIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKICAg
ICAgICAgY2FzZSAicmVzZXJ2ZWQiOiBicmVhazsgLy8gaW1wcm92ZSBjaGVja2luZyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisgICAgICAgIGNhc2UgInRh
YmxlX2luZGV4IjogYnJlYWs7IC8vIGltcHJvdmUgY2hlY2tpbmcgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQogICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcg
RXJyb3IoYEltcGxlbWVudGF0aW9uIHByb2JsZW06IHVuaGFuZGxlZCBpbW1lZGlhdGUgIiR7ZXhw
ZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3dhc20vanMtYXBpL2NhbGwtaW5kaXJlY3QuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBp
L2NhbGwtaW5kaXJlY3QuanMKaW5kZXggMDFjZDQyZjliNzlhOTIxYjFiYmFhNWFiNTc2ZmMwZDkx
MDQzODMyOC4uMmZhZmNjMTkyYjEyMDUzOWM3YWE0NTUxZDQ0M2RhYWU3YmQ4MTk3MiAxMDA2NDQK
LS0tIGEvSlNUZXN0cy93YXNtL2pzLWFwaS9jYWxsLWluZGlyZWN0LmpzCisrKyBiL0pTVGVzdHMv
d2FzbS9qcy1hcGkvY2FsbC1pbmRpcmVjdC5qcwpAQCAtMSw3ICsxLDcgQEAKIGltcG9ydCAqIGFz
IGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOwogaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVp
bGRlci5qcyc7CiAKLWNvbnN0IHdhc21Nb2R1bGVXaGljaEltcG9ydEpTID0gKCkgPT4geworY29u
c3Qgb25lVGFibGUgPSAoKSA9PiB7CiAgICAgY29uc3QgYnVpbGRlciA9IChuZXcgQnVpbGRlcigp
KQogICAgICAgICAuVHlwZSgpLkVuZCgpCiAgICAgICAgIC5JbXBvcnQoKQpAQCAtMzEsNiArMzEs
MzkgQEAgY29uc3Qgd2FzbU1vZHVsZVdoaWNoSW1wb3J0SlMgPSAoKSA9PiB7CiAgICAgcmV0dXJu
IG1vZHVsZTsKIH07CiAKK2NvbnN0IG11bHRpVGFibGUgPSAoKSA9PiB7CisgICAgY29uc3QgYnVp
bGRlciA9IChuZXcgQnVpbGRlcigpKQorICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgIC5J
bXBvcnQoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJpbXAiLCAiZnVuYyIsIHsgcGFyYW1zOiBb
ImkzMiJdIH0pCisgICAgICAgICAgICAuVGFibGUoImltcCIsICJ0YWJsZTAiLCB7IGluaXRpYWw6
IDAsIG1heGltdW06IDAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgICAuVGFibGUo
ImltcCIsICJ0YWJsZSIsIHsgaW5pdGlhbDogMSwgbWF4aW11bTogMSwgZWxlbWVudDogImFueWZ1
bmMifSkKKyAgICAgICAgLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAg
IC5FeHBvcnQoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJjaGFuZ2VDb3VudGVyIikKKyAgICAg
ICAgICAgIC5GdW5jdGlvbigiY2FsbEZ1bmMiKQorICAgICAgICAuRW5kKCkKKyAgICAgICAgLkNv
ZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJjaGFuZ2VDb3VudGVyIiwgeyBwYXJhbXM6IFsi
aTMyIiwgImkzMiJdIH0pCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDQyKQorICAgICAgICAg
ICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAgIC5JMzJBZGQoKQorICAgICAgICAg
ICAgICAgIC5HZXRMb2NhbCgxKQorICAgICAgICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMCwgMSkg
Ly8gQ2FsbHMgdGFibGVbMF0ocGFyYW1bMF0gKyA0MikuCisgICAgICAgICAgICAuRW5kKCkKKyAg
ICAgICAgICAgIC5GdW5jdGlvbigiY2FsbEZ1bmMiLCB7IHBhcmFtczogWyJpMzIiXSB9KQorICAg
ICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAgIC5DYWxsKDApIC8vIENh
bGxzIGZ1bmMocGFyYW1bMF0gKyA0MikKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAuRW5k
KCk7CisgICAgY29uc3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpOworICAgIGNv
bnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKKyAgICByZXR1cm4gbW9k
dWxlOworfTsKKworZm9yIChjb25zdCB3YXNtTW9kdWxlV2hpY2hJbXBvcnRKUyBvZiBbb25lVGFi
bGUsIG11bHRpVGFibGVdKSB7CisKIGNvbnN0IG1ha2VUYWJsZSA9ICgpID0+IHsKICAgICByZXR1
cm4gbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOiAxLCBtYXhpbXVtOiAxLCBlbGVtZW50
OiAiYW55ZnVuYyJ9KTsKIH07CkBAIC00MCw3ICs3Myw3IEBAIGNvbnN0IG1ha2VUYWJsZSA9ICgp
ID0+IHsKICAgICBjb25zdCBjb3VudGVyU2V0dGVyID0gdiA9PiBjb3VudGVyID0gdjsKICAgICBj
b25zdCB0YWJsZSA9IG1ha2VUYWJsZSgpOwogICAgIGNvbnN0IG1vZHVsZSA9IHdhc21Nb2R1bGVX
aGljaEltcG9ydEpTKCk7Ci0gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5z
dGFuY2UobW9kdWxlLCB7IGltcDogeyBmdW5jOiBjb3VudGVyU2V0dGVyLCB0YWJsZX0gfSk7Cisg
ICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGlt
cDogeyBmdW5jOiBjb3VudGVyU2V0dGVyLCB0YWJsZSwgdGFibGUwOiBuZXcgV2ViQXNzZW1ibHku
VGFibGUoe2luaXRpYWw6IDAsIG1heGltdW06IDAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pIH0gfSk7
CiAgICAgdGFibGUuc2V0KDAsIGluc3RhbmNlLmV4cG9ydHMuY2FsbEZ1bmMpOwogICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgNDA5NjsgKytpKSB7CiAgICAgICAgIC8vIEludm9rZSB0aGlzIGEgYnVu
Y2ggb2YgdGltZXMgdG8gbWFrZSBzdXJlIHRoZSBJQyBpbiB0aGUgd2FzbSAtPiBKUyBzdHViIHdv
cmtzIGNvcnJlY3RseS4KQEAgLTU3LDExICs5MCwxMSBAQCBjb25zdCBtYWtlVGFibGUgPSAoKSA9
PiB7CiAgICAgY29uc3QgbW9kdWxlID0gd2FzbU1vZHVsZVdoaWNoSW1wb3J0SlMoKTsKIAogICAg
IGNvbnN0IHRhYmxlQSA9IG1ha2VUYWJsZSgpOwotICAgIGNvbnN0IGluc3RhbmNlQSA9IG5ldyBX
ZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJBU2V0dGVy
LCB0YWJsZTogdGFibGVBfSB9KTsKKyAgICBjb25zdCBpbnN0YW5jZUEgPSBuZXcgV2ViQXNzZW1i
bHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDogeyBmdW5jOiBjb3VudGVyQVNldHRlciwgdGFibGU6
IHRhYmxlQSwgdGFibGUwOiBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6IDAsIG1heGlt
dW06IDAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pIH0gfSk7CiAgICAgdGFibGVBLnNldCgwLCBpbnN0
YW5jZUEuZXhwb3J0cy5jYWxsRnVuYyk7CiAKICAgICBjb25zdCB0YWJsZUIgPSBtYWtlVGFibGUo
KTsKLSAgICBjb25zdCBpbnN0YW5jZUIgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxl
LCB7IGltcDogeyBmdW5jOiBjb3VudGVyQlNldHRlciwgdGFibGU6IHRhYmxlQn0gfSk7CisgICAg
Y29uc3QgaW5zdGFuY2VCID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6
IHsgZnVuYzogY291bnRlckJTZXR0ZXIsIHRhYmxlOiB0YWJsZUIsIHRhYmxlMDogbmV3IFdlYkFz
c2VtYmx5LlRhYmxlKHtpbml0aWFsOiAwLCBtYXhpbXVtOiAwLCBlbGVtZW50OiAiYW55ZnVuYyJ9
KSB9IH0pOwogICAgIHRhYmxlQi5zZXQoMCwgaW5zdGFuY2VCLmV4cG9ydHMuY2FsbEZ1bmMpOwog
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjA0ODsgKytpKSB7CiAgICAgICAgIGluc3RhbmNlQS5l
eHBvcnRzLmNoYW5nZUNvdW50ZXIoaSwgMCk7CkBAIC05Myw3ICsxMjYsNyBAQCBjb25zdCBtYWtl
VGFibGUgPSAoKSA9PiB7CiAgICAgbGV0IGluc3RhbmNlcyA9IFtdOwogICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgbnVtOyArK2kpIHsKICAgICAgICAgbGV0IHRhYmxlID0gbWFrZVRhYmxlKCk7Ci0g
ICAgICAgIGluc3RhbmNlc1tpXSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsg
aW1wOiB7IGZ1bmM6IGNvdW50ZXJTZXR0ZXJzW2ldLCB0YWJsZX0gfSk7CisgICAgICAgIGluc3Rh
bmNlc1tpXSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6
IGNvdW50ZXJTZXR0ZXJzW2ldLCB0YWJsZSwgdGFibGUwOiBuZXcgV2ViQXNzZW1ibHkuVGFibGUo
e2luaXRpYWw6IDAsIG1heGltdW06IDAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pIH0gfSk7CiAgICAg
ICAgIHRhYmxlLnNldCgwLCBpbnN0YW5jZXNbaV0uZXhwb3J0cy5jYWxsRnVuYyk7CiAgICAgfQog
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjA0ODsgKytpKSB7CkBAIC0xMDQsMyArMTM3LDUgQEAg
Y29uc3QgbWFrZVRhYmxlID0gKCkgPT4gewogICAgICAgICB9CiAgICAgfQogfSkoKTsKKworfQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS90YWJsZS5qcyBiL0pTVGVzdHMvd2FzbS9q
cy1hcGkvdGFibGUuanMKaW5kZXggYmJjYTg5ZWMzNGY3MTkxMjA4NGY2MzA5YWFjMmQ2NDU1MGE0
M2JkMS4uMWI4NDQ0MzFjZTY1ZjkxYzQzNzUzMjVkNWNhZTUzZGM4YmMyNDNjNyAxMDA2NDQKLS0t
IGEvSlNUZXN0cy93YXNtL2pzLWFwaS90YWJsZS5qcworKysgYi9KU1Rlc3RzL3dhc20vanMtYXBp
L3RhYmxlLmpzCkBAIC0xMyw3ICsxMyw3IEBAIGltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9h
c3NlcnQuanMnOwogICAgICAgICAuRW5kKCkKICAgICAgICAgLkNvZGUoKQogICAgICAgICAuRW5k
KCk7Ci0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxk
ZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSksIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgIldlYkFz
c2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgMzQ6IENhbm5vdCBoYXZlIG1vcmUg
dGhhbiBvbmUgVGFibGUgZm9yIG5vdyIpOworICAgIG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVp
bGRlci5XZWJBc3NlbWJseSgpLmdldCgpKQogfQogCiB7CkBAIC0zOCw3ICszOCw3IEBAIGltcG9y
dCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOwogICAgICAgICAuRW5kKCkKICAgICAg
ICAgLkNvZGUoKQogICAgICAgICAuRW5kKCk7Ci0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcg
V2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSksIFdlYkFzc2Vt
Ymx5LkNvbXBpbGVFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5
dGUgMTc6IFRhYmxlIGNvdW50IG9mIDIgaXMgaW52YWxpZCwgYXQgbW9zdCAxIGlzIGFsbG93ZWQg
Zm9yIG5vdyAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFz
c2VtYmx5KCkuZ2V0KCkpJykiKTsKKyAgICBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIu
V2ViQXNzZW1ibHkoKS5nZXQoKSkKIH0KIAogewpAQCAtNzMsNyArNzMsMjggQEAgaW1wb3J0ICog
YXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CiAgICAgICAgICAgICAgICAgLkNhbGxJbmRp
cmVjdCgwLCAxKQogICAgICAgICAgICAgLkVuZCgpCiAgICAgICAgIC5FbmQoKTsKLSAgICBhc3Nl
cnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3NlbWJs
eSgpLmdldCgpKSwgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxl
IGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSA2OiBjYWxsX2luZGlyZWN0J3MgJ3Jlc2VydmVkJyB2YXJ1
aW50MSBtdXN0IGJlIDB4MCwgaW4gZnVuY3Rpb24gYXQgaW5kZXggMCAoZXZhbHVhdGluZyAnbmV3
IFdlYkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCkpJykiKTsKKyAg
ICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJB
c3NlbWJseSgpLmdldCgpKSwgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLCAiV2ViQXNzZW1ibHku
TW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSA2OiBjYWxsX2luZGlyZWN0J3MgdGFibGUgaW5k
ZXggMSBpbnZhbGlkLCBsaW1pdCBpcyAxLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0
aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSkn
KSIpOworfQorCit7CisgICAgY29uc3QgYnVpbGRlciA9IG5ldyBCdWlsZGVyKCkKKyAgICAgICAg
LlR5cGUoKS5FbmQoKQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAuVGFibGUo
KQorICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOjIwLCBlbGVtZW50OiJhbnlmdW5jIn0pCisg
ICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6MjAsIGVsZW1lbnQ6ImFueWZ1bmMifSkKKyAgICAg
ICAgLkVuZCgpCisgICAgICAgIC5FeHBvcnQoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJmb28i
KQorICAgICAgICAuRW5kKCkKKyAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9u
KCJmb28iLCB7cGFyYW1zOiBbImkzMiJdfSkKKyAgICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkK
KyAgICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgICAuQ2FsbEluZGly
ZWN0KDAsIDEpCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgLkVuZCgpOworICAgIG5ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpKQogfQogCiB7CkBA
IC0xODYsNyArMjA3LDcgQEAgZnVuY3Rpb24gYXNzZXJ0QmFkVGFibGVJbXBvcnQodGFibGVEZXNj
cmlwdGlvbiwgbWVzc2FnZSkgewogICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQogICAgICAgICAu
Q29kZSgpCiAgICAgICAgIC5FbmQoKTsKLSAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJB
c3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpKSwgV2ViQXNzZW1ibHku
Q29tcGlsZUVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAz
OTogQ2Fubm90IGhhdmUgbW9yZSB0aGFuIG9uZSBUYWJsZSBmb3Igbm93Iik7CisgICAgbmV3IFdl
YkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCkpCiB9CiAKIApAQCAt
MzIwLDMgKzM0MSwyNiBAQCBhc3NlcnQudGhyb3dzKCgpID0+IFdlYkFzc2VtYmx5LlRhYmxlLnBy
b3RvdHlwZS5ncm93KHVuZGVmaW5lZCksIFR5cGVFcnJvciwgYGV4cAogICAgIGFzc2VydC5lcShp
bnN0YW5jZS5leHBvcnRzLnRhYmxlLmxlbmd0aCwgMjApOwogICAgIGFzc2VydC50cnV0aHkoaW5z
dGFuY2UuZXhwb3J0cy50YWJsZSBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5LlRhYmxlKTsKIH0KKwor
eworICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQnVpbGRlcigpCisgICAgICAgIC5UeXBlKCkuRW5k
KCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlRhYmxlKCkKKyAgICAgICAg
ICAgIC5UYWJsZSh7aW5pdGlhbDogMCwgbWF4aW11bTogMSwgZWxlbWVudDogImFueWZ1bmMifSkK
KyAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMjAsIG1heGltdW06IDMwLCBlbGVtZW50OiAi
YW55ZnVuYyJ9KQorICAgICAgICAuRW5kKCkKKyAgICAgICAgLkV4cG9ydCgpCisgICAgICAgICAg
ICAuVGFibGUoInRhYmxlMCIsIDApCisgICAgICAgICAgICAuVGFibGUoInRhYmxlIiwgMSkKKyAg
ICAgICAgICAgIC5UYWJsZSgidGFibGUyIiwgMSkKKyAgICAgICAgLkVuZCgpCisgICAgICAgIC5D
b2RlKCkuRW5kKCk7CisKKyAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxl
KGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSk7CisgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhw
b3J0cy50YWJsZSwgaW5zdGFuY2UuZXhwb3J0cy50YWJsZTIpOworICAgIGFzc2VydC5lcShpbnN0
YW5jZS5leHBvcnRzLnRhYmxlLmxlbmd0aCwgMjApOworICAgIGFzc2VydC5lcShpbnN0YW5jZS5l
eHBvcnRzLnRhYmxlMC5sZW5ndGgsIDApOworICAgIGFzc2VydC50cnV0aHkoaW5zdGFuY2UuZXhw
b3J0cy50YWJsZSBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5LlRhYmxlKTsKK30KZGlmZiAtLWdpdCBh
L0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZS5qcyBiL0pTVGVzdHMvd2FzbS9y
ZWZlcmVuY2VzL2FueXJlZl90YWJsZS5qcwppbmRleCBiMmJjYWVjYmViZGZkMzY4M2IzMTc4ZDQy
ZTU4NTA2MGJiOTliZTIwLi5iYzk1ZjY3ZGExNmZlNjUyYzk2YzY2OTI2NWM2NjQ0ODg2ZWU4Njc0
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9hbnlyZWZfdGFibGUuanMKKysr
IGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvYW55cmVmX3RhYmxlLmpzCkBAIC0xOCwxMiArMTgs
MTIgQEAgY29uc3QgJDEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5
Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsIiwgeyBw
YXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCiAgICAgICAgICAgLkkzMkNvbnN0KDAp
CiAgICAgICAgICAgLkdldExvY2FsKDApCi0gICAgICAgICAgLlRhYmxlU2V0KCkKKyAgICAgICAg
ICAuVGFibGVTZXQoMCkKICAgICAgICAgLkVuZCgpCiAKICAgICAgICAgLkZ1bmN0aW9uKCJnZXRf
dGJsIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCiAgICAgICAgICAgLkkzMkNvbnN0
KDApCi0gICAgICAgICAgLlRhYmxlR2V0KCkKKyAgICAgICAgICAuVGFibGVHZXQoMCkKICAgICAg
ICAgLkVuZCgpCiAKICAgICAgICAgLkZ1bmN0aW9uKCJ0YmxfaXNfbnVsbCIsIHsgcGFyYW1zOiBb
XSwgcmV0OiAiaTMyIiB9KQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvYW55
cmVmX3RhYmxlX2ltcG9ydC5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJs
ZV9pbXBvcnQuanMKaW5kZXggODhjYWI3YzIzZmU3YjQwYWQ2OWVjMjM2ZDRiYjY5ZDIzNTE4YjYz
ZS4uMTc0MmJiMjA4YzBhODI0MjQyNzBlZDViOTBmZjBhNmI0MDg3NTMwMSAxMDA2NDQKLS0tIGEv
SlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvYW55cmVmX3RhYmxlX2ltcG9ydC5qcworKysgYi9KU1Rl
c3RzL3dhc20vcmVmZXJlbmNlcy9hbnlyZWZfdGFibGVfaW1wb3J0LmpzCkBAIC0yMiwxMiArMjIs
MTIgQEAgaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CiAgICAgICAgICAgICAu
RnVuY3Rpb24oInNldF90YmwiLCB7IHBhcmFtczogWyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkK
ICAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCiAgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQot
ICAgICAgICAgICAgICAuVGFibGVTZXQoKQorICAgICAgICAgICAgICAuVGFibGVTZXQoMCkKICAg
ICAgICAgICAgIC5FbmQoKQogCiAgICAgICAgICAgICAuRnVuY3Rpb24oImdldF90YmwiLCB7IHBh
cmFtczogW10sIHJldDogImFueXJlZiIgfSkKICAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCi0g
ICAgICAgICAgICAgIC5UYWJsZUdldCgpCisgICAgICAgICAgICAgIC5UYWJsZUdldCgwKQogICAg
ICAgICAgICAgLkVuZCgpCiAKICAgICAgICAgICAgIC5GdW5jdGlvbigidGJsX2lzX251bGwiLCB7
IHBhcmFtczogW10sIHJldDogImkzMiIgfSkKQEAgLTg4LDEyICs4OCwxMiBAQCBpbXBvcnQgQnVp
bGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKICAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3Ri
bCIsIHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQogICAgICAgICAgICAgICAu
STMyQ29uc3QoMCkKICAgICAgICAgICAgICAgLkdldExvY2FsKDApCi0gICAgICAgICAgICAgIC5U
YWJsZVNldCgpCisgICAgICAgICAgICAgIC5UYWJsZVNldCgwKQogICAgICAgICAgICAgLkVuZCgp
CiAKICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAi
YW55cmVmIiB9KQogICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKLSAgICAgICAgICAgICAgLlRh
YmxlR2V0KCkKKyAgICAgICAgICAgICAgLlRhYmxlR2V0KDApCiAgICAgICAgICAgICAuRW5kKCkK
IAogICAgICAgICAgICAgLkZ1bmN0aW9uKCJ0YmxfaXNfbnVsbCIsIHsgcGFyYW1zOiBbXSwgcmV0
OiAiaTMyIiB9KQpAQCAtMTI3LDEyICsxMjcsMTIgQEAgaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4v
QnVpbGRlci5qcyc7CiAgICAgICAgICAgICAuRnVuY3Rpb24oInNldF90YmwiLCB7IHBhcmFtczog
WyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkKICAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCiAg
ICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQotICAgICAgICAgICAgICAuVGFibGVTZXQoKQorICAg
ICAgICAgICAgICAuVGFibGVTZXQoMCkKICAgICAgICAgICAgIC5FbmQoKQogCiAgICAgICAgICAg
ICAuRnVuY3Rpb24oImdldF90YmwiLCB7IHBhcmFtczogW10sIHJldDogImFueXJlZiIgfSkKICAg
ICAgICAgICAgICAgLkkzMkNvbnN0KDApCi0gICAgICAgICAgICAgIC5UYWJsZUdldCgpCisgICAg
ICAgICAgICAgIC5UYWJsZUdldCgwKQogICAgICAgICAgICAgLkVuZCgpCiAKICAgICAgICAgICAg
IC5GdW5jdGlvbigidGJsX2lzX251bGwiLCB7IHBhcmFtczogW10sIHJldDogImkzMiIgfSkKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2Z1bmNfcmVmLmpzIGIvSlNUZXN0cy93
YXNtL3JlZmVyZW5jZXMvZnVuY19yZWYuanMKaW5kZXggMzVlMDZlNDY1ODM4NzI4M2M1ODMzNWI5
YjY2Zjc3ODUzZjliYjEwMi4uMzZhNzliNmYzNDIyMzI2N2RlNGVlNGQ0MmI3NjcxNTY1OWE0OTY4
YiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZnVuY19yZWYuanMKKysrIGIv
SlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZnVuY19yZWYuanMKQEAgLTI1Nyw3ICsyNTcsNyBAQCBh
c3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkp
CiAgICAgLkZ1bmN0aW9uKCJoIiwgeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogInZvaWQiIH0pCiAg
ICAgICAuR2V0TG9jYWwoMCkKICAgICAgIC5JMzJDb25zdCgwKQotICAgICAgLlRhYmxlU2V0KCkK
KyAgICAgIC5UYWJsZVNldCgwKQogICAgIC5FbmQoKQogICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5n
ZXQoKSksIEVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgdmFsaWRhdGU6IHRhYmxl
LnNldCB2YWx1ZSB0byB0eXBlIEkzMiBleHBlY3RlZCBBbnlmdW5jLCBpbiBmdW5jdGlvbiBhdCBp
bmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlJykiKTsKIApAQCAtMjY3
LDYgKzI2Nyw3IEBAIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgo
bmV3IEJ1aWxkZXIoKSkKICAgICAgIC5UeXBlKCkuRW5kKCkKICAgICAgIC5GdW5jdGlvbigpLkVu
ZCgpCiAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAwLCBlbGVt
ZW50OiAiYW55cmVmIn0pCiAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDEsIGVsZW1lbnQ6
ICJhbnlmdW5jIn0pCiAgICAgICAuRW5kKCkKICAgICAgIC5HbG9iYWwoKQpAQCAtMjkxLDExICsy
OTIsMTEgQEAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcg
QnVpbGRlcigpKQogICAgICAgICAuRnVuY3Rpb24oImNhbGxfZ2xvYiIsIHsgcGFyYW1zOiBbImkz
MiJdLCByZXQ6ICJpMzIiIH0pCiAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKICAgICAgICAgICAg
IC5HZXRHbG9iYWwoMCkKLSAgICAgICAgICAgIC5UYWJsZVNldCgpCisgICAgICAgICAgICAuVGFi
bGVTZXQoMSkKIAogICAgICAgICAgICAgLkdldExvY2FsKDApCiAgICAgICAgICAgICAuSTMyQ29u
c3QoMCkKLSAgICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMiwwKQorICAgICAgICAgICAgLkNhbGxJ
bmRpcmVjdCgyLDEpCiAgICAgICAgIC5FbmQoKQogCiAgICAgICAgIC5GdW5jdGlvbigicmV0XzIw
IiwgeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSkKQEAgLTMyOCw2ICszMjksNyBAQCBh
c3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkp
CiAgICAgICAuVHlwZSgpLkVuZCgpCiAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQogICAgICAgLlRh
YmxlKCkKKyAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMCwgZWxlbWVudDogImFueXJlZiJ9
KQogICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAxLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQog
ICAgICAgLkVuZCgpCiAgICAgICAuRXhwb3J0KCkKQEAgLTMzOCwxMiArMzQwLDEyIEBAIGFzc2Vy
dC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKICAg
ICAgICAgLkZ1bmN0aW9uKCJzZXQiLCB7IHBhcmFtczogWyJhbnlmdW5jIl0sIHJldDogInZvaWQi
IH0pCiAgICAgICAgICAgLkkzMkNvbnN0KDApCiAgICAgICAgICAgLkdldExvY2FsKDApCi0gICAg
ICAgICAgLlRhYmxlU2V0KCkKKyAgICAgICAgICAuVGFibGVTZXQoMSkKICAgICAgICAgLkVuZCgp
CiAKICAgICAgICAgLkZ1bmN0aW9uKCJnZXQiLCB7IHBhcmFtczogW10sIHJldDogImFueWZ1bmMi
IH0pCiAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKLSAgICAgICAgICAgIC5UYWJsZUdldCgpCisg
ICAgICAgICAgICAuVGFibGVHZXQoMSkKICAgICAgICAgLkVuZCgpCiAgICAgICAuRW5kKCkuV2Vi
QXNzZW1ibHkoKS5nZXQoKSkpOwogCkBAIC00MDUsNyArNDA3LDcgQEAgZm9yIChsZXQgaW1wb3J0
ZWRGdW4gb2YgW2Z1bmN0aW9uKGkpIHsgcmV0dXJuIGk7IH0sIG1ha2VBbnlmdW5jSWRlbnQoKV0p
IHsKICAgICAgICAgICAuR2V0TG9jYWwoMCkKICAgICAgICAgICAuSTMyQ29uc3QoMCkKICAgICAg
ICAgICAuUmVmRnVuYygwKQotICAgICAgICAgIC5UYWJsZVNldCgpCisgICAgICAgICAgLlRhYmxl
U2V0KDApCiAgICAgICAgICAgLkkzMkNvbnN0KDApCiAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgw
LCAwKQogICAgICAgICAuRW5kKCkKQEAgLTQxNCw3ICs0MTYsNyBAQCBmb3IgKGxldCBpbXBvcnRl
ZEZ1biBvZiBbZnVuY3Rpb24oaSkgeyByZXR1cm4gaTsgfSwgbWFrZUFueWZ1bmNJZGVudCgpXSkg
ewogICAgICAgICAgIC5SZWZGdW5jKDEpCiAgICAgICAgICAgLkkzMkNvbnN0KDApCiAgICAgICAg
ICAgLlJlZkZ1bmMoMCkKLSAgICAgICAgICAuVGFibGVTZXQoKQorICAgICAgICAgIC5UYWJsZVNl
dCgwKQogICAgICAgICAgIC5JMzJDb25zdCgwKQogICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMCwg
MCkKICAgICAgICAgLkVuZCgpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9t
dWx0aXRhYmxlLmpzIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvbXVsdGl0YWJsZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wOWUzMDdhODg4YTk2Y2MyZGJjMWE3ODZhNmZjODQ2ODIzMTA2ZTNmCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvbXVsdGl0YWJsZS5qcwpAQCAtMCww
ICsxLDQ1MCBAQAoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CitpbXBv
cnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKKworeworICAgIGNvbnN0ICQxID0gbmV3
IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVy
KCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgp
CisgICAgICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDAs
IG1heGltdW06IDAsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAgICAgICAuVGFibGUo
e2luaXRpYWw6IDIwLCBtYXhpbXVtOiAzMCwgZWxlbWVudDogImFueXJlZiJ9KQorICAgICAgICAg
IC5FbmQoKQorICAgICAgICAgIC5FeHBvcnQoKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oInNl
dF90YmwiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oImdldF90YmwiKQorICAgICAgICAgICAg
ICAuRnVuY3Rpb24oImdldF90YmwwIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJs
MCIpCisgICAgICAgICAgICAgIC5UYWJsZSgidGJsIiwgMSkKKyAgICAgICAgICAuRW5kKCkKKyAg
ICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oInNldF90YmwiLCB7IHBhcmFt
czogWyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDAp
CisgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAuVGFibGVTZXQoMSkK
KyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oImdldF90YmwiLCB7
IHBhcmFtczogW10sIHJldDogImFueXJlZiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDAp
CisgICAgICAgICAgICAgIC5UYWJsZUdldCgxKQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAg
ICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibDAiLCB7IHBhcmFtczogW10sIHJldDogImFueXJlZiIg
fSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgIC5UYWJsZUdldCgw
KQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibDAi
LCB7IHBhcmFtczogWyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAgICAgLkkz
MkNvbnN0KDApCisgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAuVGFi
bGVTZXQoMCkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJs
eSgpLmdldCgpKSk7CisKKyAgICBmdWxsR0MoKQorCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMu
Z2V0X3RibCgpLCBudWxsKQorCisgICAgJDEuZXhwb3J0cy5zZXRfdGJsKCJoaSIpCisgICAgZnVs
bEdDKCkKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfdGJsKCksICJoaSIpCisgICAgYXNz
ZXJ0LmVxKCQxLmV4cG9ydHMudGJsLmdldCgwKSwgImhpIikKKyAgICBhc3NlcnQuZXEoJDEuZXhw
b3J0cy50YmwuZ2V0KDEpLCBudWxsKQorCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBv
cnRzLmdldF90YmwwKCksIEVycm9yLCAiT3V0IG9mIGJvdW5kcyB0YWJsZSBhY2Nlc3MgKGV2YWx1
YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpOworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gJDEuZXhw
b3J0cy5zZXRfdGJsMChudWxsKSwgRXJyb3IsICJPdXQgb2YgYm91bmRzIHRhYmxlIGFjY2VzcyAo
ZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIik7Cit9CisKK3sKKyAgICBjb25zdCB0YmwgPSBu
ZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6MCwgZWxlbWVudDoiYW55cmVmIn0pOworICAg
IGNvbnN0ICQxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1
bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgIC5J
bXBvcnQoKQorICAgICAgICAgICAgICAgIC5UYWJsZSgiaW1wIiwgInRibCIsIHtpbml0aWFsOiAw
LCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkZ1bmN0
aW9uKCkuRW5kKCkKKyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7
aW5pdGlhbDogMjAsIG1heGltdW06IDMwLCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAgICAgICAg
LkVuZCgpCisgICAgICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigic2V0
X3RibCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIpCisgICAgICAgICAgICAg
IC5GdW5jdGlvbigiZ2V0X3RibDAiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oInNldF90Ymww
IikKKyAgICAgICAgICAgICAgLlRhYmxlKCJ0YmwiLCAxKQorICAgICAgICAgIC5FbmQoKQorICAg
ICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibCIsIHsgcGFyYW1z
OiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkK
KyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5UYWJsZVNldCgxKQor
ICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIsIHsg
cGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkK
KyAgICAgICAgICAgICAgLlRhYmxlR2V0KDEpCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsMCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9
KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLlRhYmxlR2V0KDAp
CisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsMCIs
IHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgICAuSTMy
Q29uc3QoMCkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5UYWJs
ZVNldCgwKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5
KCkuZ2V0KCkpLCB7IGltcDogeyB0YmwgfX0pOworCisgICAgZnVsbEdDKCkKKworICAgIGFzc2Vy
dC5lcSgkMS5leHBvcnRzLmdldF90YmwoKSwgbnVsbCkKKworICAgICQxLmV4cG9ydHMuc2V0X3Ri
bCgiaGkiKQorICAgIGZ1bGxHQygpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X3RibCgp
LCAiaGkiKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLnRibC5nZXQoMCksICJoaSIpCisgICAg
YXNzZXJ0LmVxKCQxLmV4cG9ydHMudGJsLmdldCgxKSwgbnVsbCkKKworICAgIGFzc2VydC50aHJv
d3MoKCkgPT4gJDEuZXhwb3J0cy5nZXRfdGJsMCgpLCBFcnJvciwgIk91dCBvZiBib3VuZHMgdGFi
bGUgYWNjZXNzIChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKTsKKyAgICBhc3NlcnQudGhy
b3dzKCgpID0+ICQxLmV4cG9ydHMuc2V0X3RibDAobnVsbCksIEVycm9yLCAiT3V0IG9mIGJvdW5k
cyB0YWJsZSBhY2Nlc3MgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpOworfQorCit7Cisg
ICAgY29uc3QgdGJsID0gbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOjEsIGVsZW1lbnQ6
ImFueXJlZiJ9KTsKKyAgICBjb25zdCAkMSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcg
V2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAgICAgICAgIC5UeXBlKCkuRW5k
KCkKKyAgICAgICAgICAuSW1wb3J0KCkKKyAgICAgICAgICAgICAgICAuVGFibGUoImltcCIsICJ0
YmwiLCB7aW5pdGlhbDogMSwgZWxlbWVudDogImFueXJlZiJ9KQorICAgICAgICAgIC5FbmQoKQor
ICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgLlRhYmxlKCkKKyAgICAgICAg
ICAgICAgICAuVGFibGUoe2luaXRpYWw6IDIwLCBtYXhpbXVtOiAzMCwgZWxlbWVudDogImFueXJl
ZiJ9KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FeHBvcnQoKQorICAgICAgICAgICAg
ICAuRnVuY3Rpb24oInNldF90YmwiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oImdldF90Ymwi
KQorICAgICAgICAgICAgICAuRnVuY3Rpb24oImdldF90YmwwIikKKyAgICAgICAgICAgICAgLkZ1
bmN0aW9uKCJzZXRfdGJsMCIpCisgICAgICAgICAgICAgIC5UYWJsZSgidGJsIiwgMSkKKyAgICAg
ICAgICAuRW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oInNl
dF90YmwiLCB7IHBhcmFtczogWyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAg
ICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAg
ICAuVGFibGVTZXQoMSkKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rp
b24oImdldF90YmwiLCB7IHBhcmFtczogW10sIHJldDogImFueXJlZiIgfSkKKyAgICAgICAgICAg
ICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgIC5UYWJsZUdldCgxKQorICAgICAgICAgICAg
LkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibDAiLCB7IHBhcmFtczogW10s
IHJldDogImFueXJlZiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAg
ICAgIC5UYWJsZUdldCgwKQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5j
dGlvbigic2V0X3RibDAiLCB7IHBhcmFtczogWyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkKKyAg
ICAgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAg
ICAgICAgICAgICAuVGFibGVTZXQoMCkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5F
bmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSwgeyBpbXA6IHsgdGJsIH19KTsKKworICAgIGZ1bGxH
QygpCisKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfdGJsKCksIG51bGwpCisKKyAgICAk
MS5leHBvcnRzLnNldF90YmwoImhpIikKKyAgICBmdWxsR0MoKQorICAgICQxLmV4cG9ydHMuc2V0
X3RibDAobnVsbCkKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfdGJsKCksICJoaSIpCisg
ICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X3RibDAoKSwgbnVsbCkKKyAgICBhc3NlcnQuZXEo
JDEuZXhwb3J0cy50YmwuZ2V0KDApLCAiaGkiKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLnRi
bC5nZXQoMSksIG51bGwpCisgICAgYXNzZXJ0LmVxKHRibC5nZXQoMCksIG51bGwpCit9CisKK3sK
KyAgICBjb25zdCAkMSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHku
TW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAg
ICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAgICAg
LlRhYmxlKHtpbml0aWFsOiAzLCBtYXhpbXVtOiAzMCwgZWxlbWVudDogImFueWZ1bmMifSkKKyAg
ICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDIsIG1heGltdW06IDMwLCBlbGVtZW50OiAi
YW55ZnVuYyJ9KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FeHBvcnQoKQorICAgICAg
ICAgICAgICAuRnVuY3Rpb24oImNhbGxfdGJsMCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigi
Y2FsbF90YmwxIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQ0MiIpCisgICAgICAgICAg
ICAgIC5GdW5jdGlvbigicmV0MTMzNyIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigicmV0MjU2
IikKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRWxlbWVudCgpCisgICAgICAgICAgICAg
ICAgLkVsZW1lbnQoe3RhYmxlSW5kZXg6IDEsIG9mZnNldDogMCwgZnVuY3Rpb25JbmRpY2VzOiBb
Ml19KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5G
dW5jdGlvbigiY2FsbF90YmwwIiwgeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSkKKyAg
ICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMSww
KQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigiY2FsbF90Ymwx
IiwgeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAgICAgLkdldExv
Y2FsKDApCisgICAgICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMSwxKQorICAgICAgICAgICAgLkVu
ZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0NDIiLCB7IHBhcmFtczogW10sIHJldDog
ImkzMiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDQyKQorICAgICAgICAgICAgLkVuZCgp
CisKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0MTMzNyIsIHsgcGFyYW1zOiBbXSwgcmV0OiAi
aTMyIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMTMzNykKKyAgICAgICAgICAgIC5FbmQo
KQorCisgICAgICAgICAgICAuRnVuY3Rpb24oInJldDI1NiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAi
aTMyIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMjU2KQorICAgICAgICAgICAgLkVuZCgp
CisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKTsKKworICAgIGZ1bGxHQygp
CisKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5jYWxsX3RibDEoMCksIDQyKQorICAgIGFzc2Vy
dC50aHJvd3MoKCkgPT4gJDEuZXhwb3J0cy5jYWxsX3RibDAoMCksIEVycm9yLCAiY2FsbF9pbmRp
cmVjdCB0byBhIG51bGwgdGFibGUgZW50cnkgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIp
CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBvcnRzLmNhbGxfdGJsMSgxKSwgRXJyb3Is
ICJjYWxsX2luZGlyZWN0IHRvIGEgbnVsbCB0YWJsZSBlbnRyeSAoZXZhbHVhdGluZyAnZnVuYygu
Li5hcmdzKScpIikKK30KKworeworICAgIGNvbnN0ICQxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3Rh
bmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5
cGUoKS5FbmQoKQorICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgLlRhYmxl
KCkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDMsIG1heGltdW06IDMwLCBlbGVt
ZW50OiAiYW55ZnVuYyJ9KQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMiwgbWF4
aW11bTogMzAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAg
ICAgLkV4cG9ydCgpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiY2FsbF90YmwwIikKKyAgICAg
ICAgICAgICAgLkZ1bmN0aW9uKCJjYWxsX3RibDEiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24o
InJldDQyIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQxMzM3IikKKyAgICAgICAgICAg
ICAgLkZ1bmN0aW9uKCJyZXQyNTYiKQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbGVt
ZW50KCkKKyAgICAgICAgICAgICAgICAuRWxlbWVudCh7dGFibGVJbmRleDogMSwgb2Zmc2V0OiAw
LCBmdW5jdGlvbkluZGljZXM6IFsyXX0pCisgICAgICAgICAgICAgICAgLkVsZW1lbnQoe3RhYmxl
SW5kZXg6IDAsIG9mZnNldDogMCwgZnVuY3Rpb25JbmRpY2VzOiBbM119KQorICAgICAgICAgICAg
ICAgIC5FbGVtZW50KHt0YWJsZUluZGV4OiAxLCBvZmZzZXQ6IDEsIGZ1bmN0aW9uSW5kaWNlczog
WzRdfSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAu
RnVuY3Rpb24oImNhbGxfdGJsMCIsIHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIiIH0pCisg
ICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAuQ2FsbEluZGlyZWN0KDEs
MCkKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oImNhbGxfdGJs
MSIsIHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIiIH0pCisgICAgICAgICAgICAgIC5HZXRM
b2NhbCgwKQorICAgICAgICAgICAgICAuQ2FsbEluZGlyZWN0KDEsMSkKKyAgICAgICAgICAgIC5F
bmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oInJldDQyIiwgeyBwYXJhbXM6IFtdLCByZXQ6
ICJpMzIiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCg0MikKKyAgICAgICAgICAgIC5FbmQo
KQorCisgICAgICAgICAgICAuRnVuY3Rpb24oInJldDEzMzciLCB7IHBhcmFtczogW10sIHJldDog
ImkzMiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDEzMzcpCisgICAgICAgICAgICAuRW5k
KCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQyNTYiLCB7IHBhcmFtczogW10sIHJldDog
ImkzMiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDI1NikKKyAgICAgICAgICAgIC5FbmQo
KQorICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSk7CisKKyAgICBmdWxsR0Mo
KQorCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuY2FsbF90YmwxKDApLCA0MikKKyAgICBhc3Nl
cnQuZXEoJDEuZXhwb3J0cy5jYWxsX3RibDAoMCksIDEzMzcpCisgICAgYXNzZXJ0LmVxKCQxLmV4
cG9ydHMuY2FsbF90YmwxKDEpLCAyNTYpCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBv
cnRzLmNhbGxfdGJsMCgxKSwgRXJyb3IsICJjYWxsX2luZGlyZWN0IHRvIGEgbnVsbCB0YWJsZSBl
bnRyeSAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikKKyAgICBhc3NlcnQudGhyb3dzKCgp
ID0+ICQxLmV4cG9ydHMuY2FsbF90YmwwKDIpLCBFcnJvciwgImNhbGxfaW5kaXJlY3QgdG8gYSBu
dWxsIHRhYmxlIGVudHJ5IChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorICAgIGFzc2Vy
dC50aHJvd3MoKCkgPT4gJDEuZXhwb3J0cy5jYWxsX3RibDEoMiksIEVycm9yLCAiT3V0IG9mIGJv
dW5kcyBjYWxsX2luZGlyZWN0IChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorfQorIGFz
c2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJs
eS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAg
ICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgICAg
ICAuVGFibGUoe2luaXRpYWw6IDMsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisg
ICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAyLCBtYXhpbXVtOiAyLCBlbGVtZW50OiAi
YW55ZnVuYyJ9KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbGVtZW50KCkKKyAgICAg
ICAgICAgICAgICAuRWxlbWVudCh7dGFibGVJbmRleDogMSwgb2Zmc2V0OiAwLCBmdW5jdGlvbklu
ZGljZXM6IFswXX0pCisgICAgICAgICAgICAgICAgLkVsZW1lbnQoe3RhYmxlSW5kZXg6IDAsIG9m
ZnNldDogMCwgZnVuY3Rpb25JbmRpY2VzOiBbMF19KQorICAgICAgICAgICAgICAgIC5FbGVtZW50
KHt0YWJsZUluZGV4OiAxLCBvZmZzZXQ6IDIsIGZ1bmN0aW9uSW5kaWNlczogWzBdfSkKKyAgICAg
ICAgICAuRW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oInJl
dDQyIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25z
dCg0MikKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgp
LmdldCgpKSksIEVycm9yLCAiRWxlbWVudCBpcyB0cnlpbmcgdG8gc2V0IGFuIG91dCBvZiBib3Vu
ZHMgdGFibGUgaW5kZXggKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZScpIikK
KworYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFz
c2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisg
ICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAg
ICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMywgbWF4aW11bTogMywgZWxlbWVudDogImFueXJlZiJ9
KQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMiwgbWF4aW11bTogMywgZWxlbWVu
dDogImFueWZ1bmMifSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRWxlbWVudCgpCisg
ICAgICAgICAgICAgICAgLkVsZW1lbnQoe3RhYmxlSW5kZXg6IDEsIG9mZnNldDogMCwgZnVuY3Rp
b25JbmRpY2VzOiBbMF19KQorICAgICAgICAgICAgICAgIC5FbGVtZW50KHt0YWJsZUluZGV4OiAw
LCBvZmZzZXQ6IDAsIGZ1bmN0aW9uSW5kaWNlczogWzBdfSkKKyAgICAgICAgICAgICAgICAuRWxl
bWVudCh7dGFibGVJbmRleDogMSwgb2Zmc2V0OiAyLCBmdW5jdGlvbkluZGljZXM6IFswXX0pCisg
ICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9u
KCJyZXQ0MiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgICAgICAuSTMy
Q29uc3QoNDIpCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1i
bHkoKS5nZXQoKSkpLCBFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0
IGJ5dGUgNDA6IFRhYmxlIDAgbXVzdCBoYXZlIHR5cGUgJ2FueWZ1bmMnIHRvIGhhdmUgYW4gZWxl
bWVudCBzZWN0aW9uIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlJykiKQorCith
c3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1i
bHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAg
ICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAg
ICAgLlRhYmxlKHtpbml0aWFsOiAzLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55cmVmIn0pCisg
ICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAyLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAi
YW55ZnVuYyJ9KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAg
ICAgIC5GdW5jdGlvbigiZnVuIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCisgICAg
ICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuVGFibGVHZXQoMikKKyAgICAg
ICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSksIEVy
cm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgdmFsaWRhdGU6IHRhYmxlIGluZGV4IDIg
aXMgaW52YWxpZCwgbGltaXQgaXMgMiwgaW4gZnVuY3Rpb24gYXQgaW5kZXggMCAoZXZhbHVhdGlu
ZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScpIikKKworYXNzZXJ0LnRocm93cygoKSA9PiBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIo
KSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkK
KyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMywg
bWF4aW11bTogMywgZWxlbWVudDogImFueXJlZiJ9KQorICAgICAgICAgICAgICAgIC5UYWJsZSh7
aW5pdGlhbDogMiwgbWF4aW11bTogMywgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAgICAu
RW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZ1biIsIHsg
cGFyYW1zOiBbXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCisg
ICAgICAgICAgICAgIC5SZWZOdWxsKCkKKyAgICAgICAgICAgICAgLlRhYmxlU2V0KDIpCisgICAg
ICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSkpLCBF
cnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHZhbGlkYXRlOiB0YWJsZSBpbmRleCAy
IGlzIGludmFsaWQsIGxpbWl0IGlzIDIsIGluIGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRp
bmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUnKSIpCisKK2Fzc2VydC50aHJvd3MoKCkgPT4gbmV3
IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVy
KCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgp
CisgICAgICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDMs
IG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAgICAgICAuVGFibGUo
e2luaXRpYWw6IDIsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAg
LkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJmdW4iLCB7
IHBhcmFtczogW10sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5DYWxsSW5kaXJlY3Qo
MCwgMikKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgp
LmdldCgpKSksIEVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0
ZSA0OiBjYWxsX2luZGlyZWN0J3MgdGFibGUgaW5kZXggMiBpbnZhbGlkLCBsaW1pdCBpcyAyLCBp
biBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxl
JykiKQorCithc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcg
V2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAgICAgICAgIC5UeXBlKCkuRW5k
KCkKKyAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAgIC5UYWJsZSgpCisgICAg
ICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAzLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55
cmVmIn0pCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAyLCBtYXhpbXVtOiAzLCBl
bGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkK
KyAgICAgICAgICAgIC5GdW5jdGlvbigiZnVuIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJ2b2lkIiB9
KQorICAgICAgICAgICAgICAuQ2FsbEluZGlyZWN0KDAsMCkKKyAgICAgICAgICAgIC5FbmQoKQor
ICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSksIEVycm9yLCAiV2ViQXNzZW1i
bHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSA0OiBjYWxsX2luZGlyZWN0IGlzIG9ubHkg
dmFsaWQgd2hlbiBhIHRhYmxlIGhhcyB0eXBlIGFueWZ1bmMsIGluIGZ1bmN0aW9uIGF0IGluZGV4
IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUnKSIpCisKK2Fzc2VydC50aHJv
d3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUo
KG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgIC5GdW5j
dGlvbigpLkVuZCgpCisgICAgICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgICAgICAuVGFibGUo
e2luaXRpYWw6IDMsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAg
ICAgICAuVGFibGUoe2luaXRpYWw6IDIsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlmdW5jIn0p
CisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0
aW9uKCJmdW4iLCB7IHBhcmFtczogW10sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5S
ZWZOdWxsKCkKKyAgICAgICAgICAgICAgLlRhYmxlR2V0KDApCisgICAgICAgICAgICAuRW5kKCkK
KyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSkpLCBFcnJvciwgIldlYkFzc2Vt
Ymx5Lk1vZHVsZSBkb2Vzbid0IHZhbGlkYXRlOiB0YWJsZS5nZXQgaW5kZXggdG8gdHlwZSBBbnlm
dW5jIGV4cGVjdGVkIEkzMiwgaW4gZnVuY3Rpb24gYXQgaW5kZXggMCAoZXZhbHVhdGluZyAnbmV3
IFdlYkFzc2VtYmx5Lk1vZHVsZScpIikKKworCithc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJB
c3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQor
ICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAg
ICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAzLCBtYXhp
bXVtOiAzLCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0
aWFsOiAyLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgICAgIC5FbmQo
KQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZnVuIiwgeyBwYXJh
bXM6IFtdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgICAuUmVmTnVsbCgpCisgICAgICAg
ICAgICAgIC5SZWZOdWxsKCkKKyAgICAgICAgICAgICAgLlRhYmxlU2V0KDApCisgICAgICAgICAg
ICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSkpLCBFcnJvciwg
IldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHZhbGlkYXRlOiB0YWJsZS5zZXQgaW5kZXggdG8g
dHlwZSBBbnlmdW5jIGV4cGVjdGVkIEkzMiwgaW4gZnVuY3Rpb24gYXQgaW5kZXggMCAoZXZhbHVh
dGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScpIikKKworYXNzZXJ0LnRocm93cygoKSA9PiBu
ZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxk
ZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5k
KCkKKyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDog
MywgbWF4aW11bTogMywgZWxlbWVudDogImFueXJlZiJ9KQorICAgICAgICAgICAgICAgIC5UYWJs
ZSh7aW5pdGlhbDogMiwgbWF4aW11bTogMywgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAg
ICAuRW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZ1biIs
IHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgICAuSTMy
Q29uc3QoMCkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5UYWJs
ZVNldCgxKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5
KCkuZ2V0KCkpKSwgRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCB2YWxpZGF0ZTog
dGFibGUuc2V0IHZhbHVlIHRvIHR5cGUgQW55cmVmIGV4cGVjdGVkIEFueWZ1bmMsIGluIGZ1bmN0
aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUnKSIpCisK
K2Z1bmN0aW9uIHRhYmxlSW5zYW5pdHkobnVtLCBiKSB7CisgICAgYiA9IGIuSW1wb3J0KCkKKyAg
ICBmb3IgKGxldCBpPTA7IGk8MTAwMDAwLTE7ICsraSkKKyAgICAgICAgYiA9IGIuRnVuY3Rpb24o
ImltcCIsICJyZWYiLCB7IHBhcmFtczogW10sIHJldDogInZvaWQiIH0pCisgICAgYiA9IGIuRW5k
KCkuRnVuY3Rpb24oKS5FbmQoKS5UYWJsZSgpCisgICAgZm9yIChsZXQgaT0wOyBpPG51bTsgKytp
KQorICAgICAgICBiID0gYi5UYWJsZSh7aW5pdGlhbDogMCwgbWF4aW11bTogMywgZWxlbWVudDog
ImFueXJlZiJ9KQorICAgIHJldHVybiBiCit9CisKK2Fzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdl
YkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUodGFibGVJbnNhbml0eSgx
MDAwMDAwLCAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpKQorICAgICAg
ICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMywgbWF4aW11bTogMywgZWxlbWVudDogImFueXJl
ZiJ9KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5G
dW5jdGlvbigiZnVuIiwgeyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCisgICAg
ICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAg
ICAgICAgICAgLlRhYmxlU2V0KDEpCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5k
KCkuV2ViQXNzZW1ibHkoKS5nZXQoKSkpLCBFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vz
bid0IHBhcnNlIGF0IGJ5dGUgNTAwMDAyNzogVGFibGUgY291bnQgb2YgMTAwMDAwMCBpcyB0b28g
YmlnLCBtYXhpbXVtIDEwMDAwMDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUn
KSIpCit7CisgICAgY29uc3QgJDEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFz
c2VtYmx5Lk1vZHVsZSh0YWJsZUluc2FuaXR5KDEwMDAwMDAtMSwgKG5ldyBCdWlsZGVyKCkpCisg
ICAgICAgICAgLlR5cGUoKS5FbmQoKSkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6
IDMsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAuRW5kKCkKKyAg
ICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAgICAgICAuRnVuY3Rpb24oInNldF90YmwiKQor
ICAgICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIpCisgICAgICAgICAgLkVuZCgpCisg
ICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsIiwgeyBwYXJh
bXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgw
KQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLlRhYmxlU2V0KDEw
MDAwMDAtMSkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRf
dGJsIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCisgICAgICAgICAgICAgIC5JMzJD
b25zdCgwKQorICAgICAgICAgICAgICAuVGFibGVHZXQoMTAwMDAwMC0xKQorICAgICAgICAgICAg
LkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpLCB7IGltcDogeyBy
ZWY6IGZ1bmN0aW9uICgpIHt9IH0gfSkKKyAgICAkMS5leHBvcnRzLnNldF90YmwoImhpIikKKyAg
ICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfdGJsKCksICJoaSIpCit9CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3dhc20vcmVmZXJlbmNlcy92YWxpZGF0aW9uLmpzIGIvSlNUZXN0cy93YXNtL3JlZmVy
ZW5jZXMvdmFsaWRhdGlvbi5qcwppbmRleCA4ZjgxNjM2OWE3NGU4OWU0OWU2OTA5ZGY0NDU1NTBm
ZDBmNjZjMjE2Li43ZjdkMTg0MjdiNzVkMzcwNTJhZDY0ODQ1ZTM3MTVjMWNhZWRlZTNkIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy92YWxpZGF0aW9uLmpzCisrKyBiL0pTVGVz
dHMvd2FzbS9yZWZlcmVuY2VzL3ZhbGlkYXRpb24uanMKQEAgLTI0LDYgKzI0LDkgQEAgaW1wb3J0
IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CiB7CiAgICAgY29uc3QgYnVpbGRlciA9IChu
ZXcgQnVpbGRlcigpKQogICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgLkltcG9ydCgpCisgICAg
ICAgICAgICAuVGFibGUoImltcCIsICJ0YmwiLCB7aW5pdGlhbDogMiwgZWxlbWVudDogImFueWZ1
bmMifSkKKyAgICAgIC5FbmQoKQogICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKICAgICAgIC5FeHBv
cnQoKQogICAgICAgICAgIC5GdW5jdGlvbigiaiIpCkBAIC0zMiwxNCArMzUsMTQgQEAgaW1wb3J0
IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CiAgICAgICAgIC5GdW5jdGlvbigiaiIsIHsg
cGFyYW1zOiBbXSwgcmV0OiAidm9pZCIgfSkKICAgICAgICAgICAgIC5JMzJDb25zdCgwKQogICAg
ICAgICAgICAgLkkzMkNvbnN0KDApCi0gICAgICAgICAgICAuVGFibGVTZXQoKQorICAgICAgICAg
ICAgLlRhYmxlU2V0KDApCiAgICAgICAgIC5FbmQoKQogICAgICAgLkVuZCgpOwogCiAgICAgY29u
c3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgpOwogICAgIGJpbi50cmltKCk7CiAKLSAgICBh
c3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluLmdldCgpKSwgV2Vi
QXNzZW1ibHkuQ29tcGlsZUVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgdmFsaWRh
dGU6IHRhYmxlLnNldCB2YWx1ZSB0byB0eXBlIEkzMiBleHBlY3RlZCBBbnlyZWYsIGluIGZ1bmN0
aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluLmdl
dCgpKScpIik7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxl
KGJpbi5nZXQoKSksIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVs
ZSBkb2Vzbid0IHZhbGlkYXRlOiB0YWJsZS5zZXQgdmFsdWUgdG8gdHlwZSBJMzIgZXhwZWN0ZWQg
QW55ZnVuYywgaW4gZnVuY3Rpb24gYXQgaW5kZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2Vt
Ymx5Lk1vZHVsZShiaW4uZ2V0KCkpJykiKTsKIH0KIAogewpAQCAtNTYsNyArNTksNyBAQCBpbXBv
cnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKICAgICAgICAgLkZ1bmN0aW9uKCJqIiwg
eyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCiAgICAgICAgICAgICAuSTMyQ29u
c3QoMCkKICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQotICAgICAgICAgICAgLlRhYmxlU2V0KCkK
KyAgICAgICAgICAgIC5UYWJsZVNldCgwKQogICAgICAgICAuRW5kKCkKICAgICAgIC5FbmQoKTsK
IApAQCAtNzksNyArODIsNyBAQCBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsK
ICAgICAgIC5Db2RlKCkKICAgICAgICAgLkZ1bmN0aW9uKCJqIiwgeyBwYXJhbXM6IFtdLCByZXQ6
ICJhbnlyZWYiIH0pCiAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKLSAgICAgICAgICAgIC5UYWJs
ZUdldCgpCisgICAgICAgICAgICAuVGFibGVHZXQoMCkKICAgICAgICAgLkVuZCgpCiAgICAgICAu
RW5kKCk7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9zcGVjLXRlc3RzL2ltcG9ydHMud2Fz
dC5qcyBiL0pTVGVzdHMvd2FzbS9zcGVjLXRlc3RzL2ltcG9ydHMud2FzdC5qcwppbmRleCA0OGQx
NDA5NjZhNGY3NTgzNjcwODAyOTdhNGMwM2NhYTc0ODMzNTMxLi42YjNmYWFmYWQ5NmY3ZWJlZjQy
OThkNDI5YWJkOTFiMGJmYTg2NjhiIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vc3BlYy10ZXN0
cy9pbXBvcnRzLndhc3QuanMKKysrIGIvSlNUZXN0cy93YXNtL3NwZWMtdGVzdHMvaW1wb3J0cy53
YXN0LmpzCkBAIC0xODgsMTUgKzE4OCw2IEBAIGFzc2VydF90cmFwKCgpID0+IGNhbGwoJDE0LCAi
Y2FsbCIsIFszXSkpOwogLy8gaW1wb3J0cy53YXN0OjI5MAogYXNzZXJ0X3RyYXAoKCkgPT4gY2Fs
bCgkMTQsICJjYWxsIiwgWzEwMF0pKTsKIAotLy8gaW1wb3J0cy53YXN0OjI5MwotYXNzZXJ0X2lu
dmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMlx4OGRceDgwXHg4MFx4
ODBceDAwXHgwMlx4MDBceDAwXHgwMVx4NzBceDAwXHgwYVx4MDBceDAwXHgwMVx4NzBceDAwXHgw
YSIpOwotCi0vLyBpbXBvcnRzLndhc3Q6Mjk3Ci1hc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDcz
XHg2ZFx4MDFceDAwXHgwMFx4MDBceDAyXHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDBc
eDAxXHg3MFx4MDBceDBhXHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBceDAwXHgwYSIp
OwotCi0vLyBpbXBvcnRzLndhc3Q6MzAxCi1hc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDA0XHg4N1x4ODBceDgwXHg4MFx4MDBceDAyXHg3MFx4MDBceDBh
XHg3MFx4MDBceDBhIik7Ci0KIC8vIGltcG9ydHMud2FzdDozMDYKIGxldCAkMTUgPSBpbnN0YW5j
ZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAyXHg5N1x4ODBceDgwXHg4MFx4
MDBceDAxXHgwNFx4NzRceDY1XHg3M1x4NzRceDBjXHg3NFx4NjFceDYyXHg2Y1x4NjVceDJkXHgz
MVx4MzBceDJkXHg2OVx4NmVceDY2XHgwMVx4NzBceDAwXHgwYSIpOwogCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3dhc20vd2FzbS5qc29uIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgppbmRleCA2NGNh
MGI1YjIwOGQ5MWIyYmY3ODY1NTc1NzEyNDczZDViNzI1MGEzLi40NTMwOGZiYmQ1NzUzMmY1ZWJh
MTM5NTZjYWFjZDA1NTkzNGFjYmFmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29u
CisrKyBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KQEAgLTY3LDEwICs2NywxMCBAQAogICAgICAg
ICAidGVlX2xvY2FsIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFs
dWUiOiAgMzQsICJyZXR1cm4iOiBbImFueSJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFueSJdLCAg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImxvY2FsX2luZGV4IiwgICAg
InR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIndyaXRlIGEgbG9jYWwgdmFyaWFibGUgb3IgcGFyYW1l
dGVyIGFuZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUiIH0sCiAgICAgICAgICJnZXRfZ2xvYmFsIjog
ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzNSwgInJldHVy
biI6IFsiYW55Il0sICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAg
ImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZ2xvYmFsX2luZGV4IiwgICAidHlwZSI6ICJ2YXJ1aW50
MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAicmVhZCBhIGdsb2JhbCB2YXJpYWJsZSIgfSwKICAgICAgICAgInNldF9nbG9iYWwi
OiAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM2LCAicmV0
dXJuIjogW10sICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhbnkiXSwgICAgICAgICAgICAgICAg
ICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJnbG9iYWxfaW5kZXgiLCAgICJ0eXBlIjogInZhcnVp
bnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJ3cml0ZSBhIGdsb2JhbCB2YXJpYWJsZSIgfSwKLSAgICAgICAgInRhYmxlLmdl
dCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM3LCAi
cmV0dXJuIjogWyJhbnlyZWYiXSwgICAicGFyYW1ldGVyIjogWyJpMzIiXSwgICAgICAgICAgICAg
ICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJnZXQgYSB0YWJsZSB2YWx1ZSIgfSwKLSAgICAgICAgInRhYmxlLnNldCI6
ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM4LCAicmV0
dXJuIjogW10sICAgICAgICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiYW55cmVmIl0sICAgICAg
ICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJzZXQgYSB0YWJsZSB2YWx1ZSIgfSwKKyAgICAgICAgInRhYmxlLmdldCI6ICAg
ICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM3LCAicmV0dXJu
IjogWyJhbnlyZWYiXSwgICAicGFyYW1ldGVyIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAi
aW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0YWJsZV9pbmRleCIsICAgICJ0eXBlIjogInZhcnVpbnQz
MiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJnZXQgYSB0YWJsZSB2YWx1ZSIgfSwKKyAgICAgICAgInRhYmxlLnNldCI6ICAgICAg
ICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM4LCAicmV0dXJuIjog
W10sICAgICAgICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiYW55cmVmIl0sICAgICAgICAiaW1t
ZWRpYXRlIjogW3sibmFtZSI6ICJ0YWJsZV9pbmRleCIsICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9
XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJzZXQgYSB0YWJsZSB2YWx1ZSIgfSwKICAgICAgICAgImNhbGwiOiAgICAgICAgICAgICAg
ICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE2LCAicmV0dXJuIjogWyJj
YWxsIl0sICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJmdW5jdGlvbl9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJjYWxsIGEgZnVuY3Rpb24gYnkgaXRzIGluZGV4IiB9LAotICAgICAgICAiY2FsbF9pbmRpcmVj
dCI6ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTcsICJyZXR1
cm4iOiBbImNhbGwiXSwgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFydWlu
dDMyIn0sIHsibmFtZSI6ICJyZXNlcnZlZCIsICJ0eXBlIjogInZhcnVpbnQxIn1dLCAgImRlc2Ny
aXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBpbmRpcmVjdCB3aXRoIGFuIGV4cGVjdGVkIHNpZ25h
dHVyZSIgfSwKKyAgICAgICAgImNhbGxfaW5kaXJlY3QiOiAgICAgICB7ICJjYXRlZ29yeSI6ICJj
YWxsIiwgICAgICAgInZhbHVlIjogIDE3LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAicGFyYW1l
dGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0
eXBlX2luZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAidGFibGVfaW5k
ZXgiLCJ0eXBlIjogInZhcnVpbnQzMiJ9XSwiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9u
IGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAogICAgICAgICAiaTMyLmxv
YWQ4X3MiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDQs
ICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAg
ICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAi
dmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwg
ImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCiAgICAgICAgICJpMzIubG9hZDhf
dSI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NSwgInJl
dHVybiI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAg
ICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1
aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVz
Y3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKICAgICAgICAgImkzMi5sb2FkMTZfcyI6
ICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ2LCAicmV0dXJu
IjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICAi
aW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQz
MiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlw
dGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372347</attachid>
            <date>2019-06-18 10:29:50 -0700</date>
            <delta_ts>2019-06-18 13:51:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198760-20190618102950.patch</filename>
            <type>text/plain</type>
            <size>102166</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZDBlOGJmYWJmOGRmOTZhOWM0ZWI5ZTQyZmMzYWYxMGQyNDE1MTA5Li45MjgzOTQzZDAxYWU5Njhh
ZWM3M2MxYTJlMGQwNmJiMTQ1NGZiMmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTkgQEAKKzIwMTktMDYtMTcgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBzdXBwb3J0IGZvciBt
dWx0aXBsZSB0YWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5ODc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAg
ICAgIFN1cHBvcnQgbXVsdGlwbGUgd2FzbSB0YWJsZXMuIFdlIHR1cm4gdGFibGVJbmZvcm1hdGlv
biBpbnRvIGEgdGFibGVzIGFycmF5LCBhbmQgdXBkYXRlIGFsbCBvZiB0aGUKKyAgICAgICAgZXhp
c3RpbmcgdXNlcnMgdG8gZ2l2ZSBhIHRhYmxlIGluZGV4LgorCisgICAgICAgICogd2FzbS9XYXNt
QWlySVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6
QWlySVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRk
VGFibGVHZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVT
ZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0
KToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206
OkIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdl
bmVyYXRvcjo6YWRkVGFibGVTZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9y
OjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAqIHdhc20vV2FzbUV4Y2VwdGlvblR5cGUuaDoK
KyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RWxlbWVu
dDo6RWxlbWVudCk6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZVVucmVh
Y2hhYmxlRXhwcmVzc2lvbik6CisgICAgICAgICogd2FzbS9XYXNtSW5zdGFuY2UuY3BwOgorICAg
ICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6SW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpXYXNt
OjpJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OmV4dHJh
TWVtb3J5QWxsb2NhdGVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnRh
YmxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnNldFRhYmxlKToKKyAgICAgICAg
KiB3YXNtL1dhc21JbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6dXBk
YXRlQ2FjaGVkTWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9m
R2xvYmFscyk6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpvZmZzZXRPZlRhYmxlUHRy
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OmFsbG9jYXRpb25TaXplKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
V2FzbTo6SW5zdGFuY2U6OnNldFRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6
SW5zdGFuY2U6Om9mZnNldE9mVGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbU1v
ZHVsZUluZm9ybWF0aW9uLmg6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZUluZm9ybWF0aW9u
Ojp0YWJsZUNvdW50IGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJbXBvcnQpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZVRhYmxlSGVscGVyKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VUYWJsZSk6CisgICAgICAgIChKU0M6
Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCk6CisgICAgICAgICogd2FzbS9XYXNt
VGFibGUuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6VGFibGU6Om93bmVyIGNvbnN0KToKKyAgICAg
ICAgKiB3YXNtL1dhc21WYWxpZGF0ZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRl
OjphZGRUYWJsZUdldCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRUYWJsZVNl
dCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRDYWxsSW5kaXJlY3QpOgorICAg
ICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdh
c20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3Nl
bWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkOjpsaW5rKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1
YXRlKToKKyAgICAgICAgKiB3YXNtL3dhc20uanNvbjoKKworICAgICAgICAqIHdhc20vV2FzbUFp
cklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OkFp
cklSR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFRh
YmxlR2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlU2V0
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCk6
CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OkIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpC
M0lSR2VuZXJhdG9yOjphZGRUYWJsZUdldCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5l
cmF0b3I6OmFkZFRhYmxlU2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6
YWRkQ2FsbEluZGlyZWN0KToKKyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6RWxlbWVudDo6RWxlbWVudCk6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rp
b25QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46
OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENv
bnRleHQ+OjpwYXJzZVVucmVhY2hhYmxlRXhwcmVzc2lvbik6CisgICAgICAgICogd2FzbS9XYXNt
SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6SW5zdGFuY2UpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6SW5zdGFuY2U6OmV4dHJhTWVtb3J5QWxsb2NhdGVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
V2FzbTo6SW5zdGFuY2U6OnRhYmxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnNl
dFRhYmxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6Z2V0V2FzbVRhYmxlRWxlbWVudCk6CisgICAg
ICAgIChKU0M6Oldhc206OnNldFdhc21UYWJsZUVsZW1lbnQpOgorICAgICAgICAqIHdhc20vV2Fz
bUluc3RhbmNlLmg6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjp1cGRhdGVDYWNoZWRN
ZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZHbG9iYWxzKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mVGFibGVQdHIpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpX
YXNtOjpJbnN0YW5jZTo6dGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0
YW5jZTo6c2V0VGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6
b2Zmc2V0T2ZUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtTGltaXRzLmg6Cisg
ICAgICAgICogd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6TW9kdWxlSW5mb3JtYXRpb246OnRhYmxlQ291bnQgY29uc3QpOgorICAgICAgICAqIHdhc20v
V2FzbVNlY3Rpb25QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2Vy
OjpwYXJzZUltcG9ydCk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNl
VGFibGVIZWxwZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZVRh
YmxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KToK
KyAgICAgICAgKiB3YXNtL1dhc21UYWJsZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpUYWJsZTo6
b3duZXIgY29uc3QpOgorICAgICAgICAqIHdhc20vV2FzbVZhbGlkYXRlLmNwcDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6VmFsaWRhdGU6OmFkZFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6
VmFsaWRhdGU6OmFkZFRhYmxlU2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsaWRhdGU6OmFk
ZENhbGxJbmRpcmVjdCk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2Uu
Y3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OkpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaDoKKyAgICAg
ICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmspOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJs
eU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUpOgorICAgICAgICAqIHdhc20vd2FzbS5qc29uOgorCiAy
MDE5LTA2LTE3ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBWYWxpZGF0ZSB0aGF0IHRhYmxlIGVsZW1lbnQgdHlwZSBpcyBmdW5jcmVmIGlmIHVz
aW5nIGFuIGVsZW1lbnQgc2VjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21BaXJJUkdlbmVyYXRvci5jcHAKaW5kZXggYWIzMDRhNTVkMzZiMzU4NDIyYjFhMDdkMmE0
NGIwMDBkZjUyMmRlNy4uNTlmMTMzNTg2Y2ExNzhhNDJhZTEyNDIzNTI1Zjg3ZTc3MTFlZjgyNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwCkBAIC0yMzcsOCArMjM3LDggQEAgcHVibGljOgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIGFkZFJlZkZ1bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpOwogCiAgICAgLy8gVGFibGVzCi0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gYWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZVNl
dChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSk7CisgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQodW5zaWduZWQsIEV4cHJl
c3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVTZXQodW5zaWduZWQsIEV4cHJlc3Npb25U
eXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKTsKIAogICAgIC8vIExvY2FscwogICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBDYWxscwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENh
bGwodWludDMyX3QgY2FsbGVlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNz
aW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmLCBW
ZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QodW5zaWdu
ZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYg
YXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkVW5yZWFjaGFibGUoKTsKIAogICAgIFBhcnRpYWxSZXN1bHQgYWRkU2hp
ZnQoVHlwZSwgQjM6OkFpcjo6T3Bjb2RlLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSwgRXhwcmVzc2lv
blR5cGUgc2hpZnQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwpAQCAtNjI2LDYgKzYyNiw3IEBA
IHByaXZhdGU6CiAgICAgfQogCiAgICAgdWludDMyX3QgbV9tYXhOdW1KU0NhbGxBcmd1bWVudHMg
eyAwIH07CisgICAgdW5zaWduZWQgbV9udW1JbXBvcnRGdW5jdGlvbnM7CiAKICAgICBCMzo6UGF0
Y2hwb2ludFNwZWNpYWwqIG1fcGF0Y2hwb2ludFNwZWNpYWwgeyBudWxscHRyIH07CiB9OwpAQCAt
NjgxLDYgKzY4Miw3IEBAIEFpcklSR2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcihjb25zdCBNb2R1
bGVJbmZvcm1hdGlvbiYgaW5mbywgQjM6OlByb2NlZHVyZSYgcHJvCiAgICAgLCBtX3Byb2MocHJv
Y2VkdXJlKQogICAgICwgbV9jb2RlKG1fcHJvYy5jb2RlKCkpCiAgICAgLCBtX3VubGlua2VkV2Fz
bVRvV2FzbUNhbGxzKHVubGlua2VkV2FzbVRvV2FzbUNhbGxzKQorICAgICwgbV9udW1JbXBvcnRG
dW5jdGlvbnMoaW5mby5pbXBvcnRGdW5jdGlvbkNvdW50KCkpCiB7CiAgICAgbV9jdXJyZW50Qmxv
Y2sgPSBtX2NvZGUuYWRkQmxvY2soKTsKICAgICBtX3Jvb3RCbG9jayA9IG1fY3VycmVudEJsb2Nr
OwpAQCAtOTY4LDE0ICs5NzAsMTQgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyh1
aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGkKICAgICByZXR1
cm4geyB9OwogfQogCi1hdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZUdldChFeHByZXNzaW9u
VHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1
dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJl
c3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3Vs
dAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KICAgICBBU1NFUlQoaW5kZXgudG1wKCkpOwog
ICAgIEFTU0VSVChpbmRleC50eXBlKCkgPT0gVHlwZTo6STMyKTsKICAgICByZXN1bHQgPSB0bXBG
b3JUeXBlKFR5cGU6OkFueXJlZik7CiAKLSAgICBlbWl0Q0NhbGwoJmdldFdhc21UYWJsZUVsZW1l
bnQsIHJlc3VsdCwgaW5zdGFuY2VWYWx1ZSgpLCBpbmRleCk7CisgICAgZW1pdENDYWxsKCZnZXRX
YXNtVGFibGVFbGVtZW50LCByZXN1bHQsIGluc3RhbmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlw
ZTo6STMyLCB0YWJsZUluZGV4KSwgaW5kZXgpOwogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAg
ICByZXR1cm4gSW5zdChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fz
c2VtYmxlcjo6WmVybyksIHJlc3VsdCwgcmVzdWx0KTsKICAgICB9LCBbPV0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewpAQCAtOTg1LDcg
Kzk4Nyw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBl
JiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKICAgICByZXR1cm4geyB9OwogfQogCi1h
dXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4
cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBBaXJJUkdlbmVyYXRv
cjo6YWRkVGFibGVTZXQodW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUmIGluZGV4
LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBGSVhN
RTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5ODUwNj4uCiAgICAgQVNTRVJUKGluZGV4LnRtcCgpKTsKQEAgLTk5Myw3ICs5OTUsNyBA
QCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5kZXgs
IEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLQogICAgIEFTU0VSVCh2YWx1ZS50bXAoKSk7CiAKICAg
ICBhdXRvIHNob3VsZFRocm93ID0gZzMyKCk7Ci0gICAgZW1pdENDYWxsKCZzZXRXYXNtVGFibGVF
bGVtZW50LCBzaG91bGRUaHJvdywgaW5zdGFuY2VWYWx1ZSgpLCBpbmRleCwgdmFsdWUpOworICAg
IGVtaXRDQ2FsbCgmc2V0V2FzbVRhYmxlRWxlbWVudCwgc2hvdWxkVGhyb3csIGluc3RhbmNlVmFs
dWUoKSwgYWRkQ29uc3RhbnQoVHlwZTo6STMyLCB0YWJsZUluZGV4KSwgaW5kZXgsIHZhbHVlKTsK
IAogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICByZXR1cm4gSW5zdChCcmFuY2hUZXN0MzIs
IG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIHNob3VsZFRocm93
LCBzaG91bGRUaHJvdyk7CkBAIC0xODkzLDExICsxODk1LDEyIEBAIGF1dG8gQWlySVJHZW5lcmF0
b3I6OmFkZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUsCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2Fs
bEluZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5
cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CithdXRv
IEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29u
c3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBFeHByZXNzaW9u
VHlwZSBjYWxsZWVJbmRleCA9IGFyZ3MudGFrZUxhc3QoKTsKICAgICBBU1NFUlQoc2lnbmF0dXJl
LmFyZ3VtZW50Q291bnQoKSA9PSBhcmdzLnNpemUoKSk7Ci0gICAgQVNTRVJUKG1faW5mby50YWJs
ZUluZm9ybWF0aW9uLnR5cGUoKSA9PSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmKTsKKyAgICBB
U1NFUlQobV9pbmZvLnRhYmxlQ291bnQoKSA+IHRhYmxlSW5kZXgpOworICAgIEFTU0VSVChtX2lu
Zm8udGFibGVzW3RhYmxlSW5kZXhdLnR5cGUoKSA9PSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVm
KTsKIAogICAgIG1fbWFrZXNDYWxscyA9IHRydWU7CiAgICAgLy8gTm90ZTogY2FsbCBpbmRpcmVj
dCBjYW4gY2FsbCBlaXRoZXIgV2ViQXNzZW1ibHlGdW5jdGlvbiBvciBXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbi4gQmVjYXVzZQpAQCAtMTkxMiwxMiArMTkxNSwxMyBAQCBhdXRvIEFpcklSR2Vu
ZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3Rv
cjxFeHByZXNzaQogICAgIEV4cHJlc3Npb25UeXBlIGluc3RhbmNlc0J1ZmZlciA9IGc2NCgpOwog
ICAgIEV4cHJlc3Npb25UeXBlIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGggPSBnNjQoKTsK
ICAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEluc3Rh
bmNlOjpvZmZzZXRPZlRhYmxlKCksIEIzOjpXaWR0aDY0KSk7CisgICAgICAgIHN0YXRpY19hc3Nl
cnQoSW5zdGFuY2U6Om9mZnNldE9mVGFibGVQdHIobWF4SW1wb3J0cywgbWF4VGFibGVzKSwgIndl
IHJlbHkgb24gdGhpcyB0byBoYXZlIGEgcHJvcGVyIGZvcm0gZm9yIHRoZSBpbW1lZGlhdGUgYXJn
dW1lbnQgYmVsb3ciKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZv
cm0oSW5zdGFuY2U6Om9mZnNldE9mVGFibGVQdHIobV9udW1JbXBvcnRGdW5jdGlvbnMsIHRhYmxl
SW5kZXgpLCBCMzo6V2lkdGg2NCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChBcmc6OmlzVmFs
aWRBZGRyRm9ybShGdW5jUmVmVGFibGU6Om9mZnNldE9mRnVuY3Rpb25zKCksIEIzOjpXaWR0aDY0
KSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEZ1bmNSZWZU
YWJsZTo6b2Zmc2V0T2ZJbnN0YW5jZXMoKSwgQjM6OldpZHRoNjQpKTsKICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZvcm0oRnVuY1JlZlRhYmxlOjpvZmZzZXRPZkxlbmd0
aCgpLCBCMzo6V2lkdGg2NCkpOwogCi0gICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoaW5z
dGFuY2VWYWx1ZSgpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZSgpKSwgY2FsbGFibGVGdW5jdGlv
bkJ1ZmZlckxlbmd0aCk7CisgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoaW5zdGFuY2VW
YWx1ZSgpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZVB0cihtX251bUltcG9ydEZ1bmN0aW9ucywg
dGFibGVJbmRleCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKTsKICAgICAgICAgYXBw
ZW5kKE1vdmUsIEFyZzo6YWRkcihjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoLCBGdW5jUmVm
VGFibGU6Om9mZnNldE9mRnVuY3Rpb25zKCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyKTsKICAg
ICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3Ro
LCBGdW5jUmVmVGFibGU6Om9mZnNldE9mSW5zdGFuY2VzKCkpLCBpbnN0YW5jZXNCdWZmZXIpOwog
ICAgICAgICBhcHBlbmQoTW92ZTMyLCBBcmc6OmFkZHIoY2FsbGFibGVGdW5jdGlvbkJ1ZmZlckxl
bmd0aCwgVGFibGU6Om9mZnNldE9mTGVuZ3RoKCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVu
Z3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcAppbmRleCA3NzYwOTc0ODQzZWNjZTJmMWU5YjE3MDU5MjVlOTg0YWFjY2JhMjkzLi4xZWIy
NDY1MmFlNGVkNmIzMjkwNzE5ZjdlZDUzMzY5MmQ1MTFkMmY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0xOTAsOCArMTkwLDgg
QEAgcHVibGljOgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJlZkZ1
bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCiAgICAgLy8gVGFi
bGVzCi0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQoRXhw
cmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKLSAgICBQYXJ0aWFs
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5k
ZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkVGFibGVHZXQodW5zaWduZWQsIEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkVGFibGVTZXQodW5zaWduZWQsIEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lv
blR5cGUmIHZhbHVlKTsKIAogICAgIC8vIExvY2FscwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0KTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxscwogICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2FsbGVlSW5k
ZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpOwotICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+
JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3Qg
U2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVW5yZWFj
aGFibGUoKTsKIAogICAgIHZvaWQgZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbEVudHJ5PiYgY29u
dHJvbFN0YWNrLCBjb25zdCBFeHByZXNzaW9uTGlzdCogZXhwcmVzc2lvblN0YWNrKTsKQEAgLTI5
Miw2ICsyOTIsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHVpbnQzMl90IG1fbWF4TnVtSlND
YWxsQXJndW1lbnRzIHsgMCB9OworICAgIHVuc2lnbmVkIG1fbnVtSW1wb3J0RnVuY3Rpb25zOwog
fTsKIAogLy8gTWVtb3J5IGFjY2Vzc2VzIGluIFdlYkFzc2VtYmx5IGhhdmUgdW5zaWduZWQgMzIt
Yml0IG9mZnNldHMsIHdoZXJlYXMgdGhleSBoYXZlIHNpZ25lZCAzMi1iaXQgb2Zmc2V0cyBpbiBC
My4KQEAgLTM0Myw2ICszNDQsNyBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKGNvbnN0
IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHByb2NlZHVyZQogICAgICwgbV9w
cm9jKHByb2NlZHVyZSkKICAgICAsIG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHModW5saW5rZWRX
YXNtVG9XYXNtQ2FsbHMpCiAgICAgLCBtX2NvbnN0YW50SW5zZXJ0aW9uVmFsdWVzKG1fcHJvYykK
KyAgICAsIG1fbnVtSW1wb3J0RnVuY3Rpb25zKGluZm8uaW1wb3J0RnVuY3Rpb25Db3VudCgpKQog
ewogICAgIG1fY3VycmVudEJsb2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7CiAKQEAgLTU2NiwxMiAr
NTY4LDEyIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkUmVmSXNOdWxsKEV4cHJlc3Npb25UeXBl
JiB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKICAgICByZXR1cm4geyB9OwogfQogCi1h
dXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBCM0lSR2VuZXJhdG9y
OjphZGRUYWJsZUdldCh1bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSYgaW5kZXgs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBGSVhN
RTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5ODUwNj4uCiAgICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2Fs
bFZhbHVlPihtX3Byb2MsIHRvQjNUeXBlKEFueXJlZiksIG9yaWdpbigpLAogICAgICAgICBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRh
Z0NGdW5jdGlvblB0cjx2b2lkKj4oJmdldFdhc21UYWJsZUVsZW1lbnQsIEIzQ0NhbGxQdHJUYWcp
KSwKLSAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBpbmRleCk7CisgICAgICAgIGluc3RhbmNlVmFs
dWUoKSwgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3Jp
Z2luKCksIHRhYmxlSW5kZXgpLCBpbmRleCk7CiAKICAgICB7CiAgICAgICAgIENoZWNrVmFsdWUq
IGNoZWNrID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENo
ZWNrLCBvcmlnaW4oKSwKQEAgLTU4NSwxMiArNTg3LDEyIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6
YWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KSAtCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZVNl
dChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4gUGFydGlh
bFJlc3VsdAorYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZVNldCh1bnNpZ25lZCB0YWJsZUlu
ZGV4LCBFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4gUGFy
dGlhbFJlc3VsdAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KICAgICBhdXRvIHNob3VsZFRo
cm93ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEIzOjpJ
bnQzMiwgb3JpZ2luKCksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPigmc2V0V2Fz
bVRhYmxlRWxlbWVudCwgQjNDQ2FsbFB0clRhZykpLAotICAgICAgICBpbnN0YW5jZVZhbHVlKCks
IGluZGV4LCB2YWx1ZSk7CisgICAgICAgIGluc3RhbmNlVmFsdWUoKSwgbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhYmxlSW5kZXgpLCBp
bmRleCwgdmFsdWUpOwogCiAgICAgewogICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCks
CkBAIC0xMjk4LDcgKzEzMDAsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGwodWludDMy
X3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsCiAgICAgcmV0dXJu
IHsgfTsKIH0KIAotYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2ln
bmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQjNJUkdlbmVyYXRvcjo6YWRk
Q2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0
dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlSW5kZXggPSBh
cmdzLnRha2VMYXN0KCk7CiAgICAgQVNTRVJUKHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgPT0g
YXJncy5zaXplKCkpOwpAQCAtMTMxNSw3ICsxMzE3LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjph
ZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNz
aW8KICAgICBFeHByZXNzaW9uVHlwZSBtYXNrOwogICAgIHsKICAgICAgICAgRXhwcmVzc2lvblR5
cGUgdGFibGUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2Ms
IExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAotICAgICAgICAgICAgaW5zdGFuY2VWYWx1
ZSgpLCBzYWZlQ2FzdDxpbnQzMl90PihJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZSgpKSk7CisgICAg
ICAgICAgICBpbnN0YW5jZVZhbHVlKCksIHNhZmVDYXN0PGludDMyX3Q+KEluc3RhbmNlOjpvZmZz
ZXRPZlRhYmxlUHRyKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCB0YWJsZUluZGV4KSkpOwogICAgICAg
ICBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwKICAgICAgICAg
ICAgIHRhYmxlLCBzYWZlQ2FzdDxpbnQzMl90PihGdW5jUmVmVGFibGU6Om9mZnNldE9mRnVuY3Rp
b25zKCkpKTsKICAgICAgICAgaW5zdGFuY2VzQnVmZmVyID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAppbmRleCA3YzAzNDQxN2ExM2Yy
NjFiODQ3NWM4ZWRjNDI3NGZhODA1MThiOWViLi40ZGIyOGE0ZTJiNmU5ZDU1MjI4MTY4OGZhOWZh
ZGRmODkzZTVmYjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Rm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCkBA
IC0yMTMsMTAgKzIxMywxMiBAQCBzdHJ1Y3QgU2VnbWVudCB7CiB9OwogCiBzdHJ1Y3QgRWxlbWVu
dCB7Ci0gICAgRWxlbWVudChJMzJJbml0RXhwciBvZmZzZXQpCi0gICAgICAgIDogb2Zmc2V0KG9m
ZnNldCkKKyAgICBFbGVtZW50KHVpbnQzMl90IHRhYmxlSW5kZXgsIEkzMkluaXRFeHByIG9mZnNl
dCkKKyAgICAgICAgOiB0YWJsZUluZGV4KHRhYmxlSW5kZXgpCisgICAgICAgICwgb2Zmc2V0KG9m
ZnNldCkKICAgICB7IH0KIAorICAgIHVpbnQzMl90IHRhYmxlSW5kZXg7CiAgICAgSTMySW5pdEV4
cHIgb2Zmc2V0OwogICAgIFZlY3Rvcjx1aW50MzJfdD4gZnVuY3Rpb25JbmRpY2VzOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXgg
NTllZWUyNjIyZGUyNjg1OTMyYzUxYzQyZmJlOGMxOTkzZjg0ZTk1Zi4uNzI1MDU0MjhhOWVlNDU2
MDU5N2VlNzFjZDZlM2I0ZWZiOTUwMjAxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTI4MywxOSArMjgzLDIzIEBAIGF1dG8gRnVu
Y3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbigpIC0+IFBhcnRpYWxSZXN1bHQK
IAogICAgIGNhc2UgVGFibGVHZXQ6IHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzKCksICJyZWZlcmVuY2VzIGFyZSBub3QgZW5h
YmxlZCIpOworICAgICAgICB1bnNpZ25lZCB0YWJsZUluZGV4OworICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMih0YWJsZUluZGV4KSwgImNhbid0IHBhcnNlIHRhYmxl
IGluZGV4Iik7CiAgICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdCwgaW5kZXg7CiAgICAgICAg
IFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8oaW5kZXgsICJ0YWJsZS5nZXQiKTsK
LSAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkVGFibGVHZXQoaW5kZXgsIHJlc3Vs
dCkpOworICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRUYWJsZUdldCh0YWJsZUlu
ZGV4LCBpbmRleCwgcmVzdWx0KSk7CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFwcGVuZChy
ZXN1bHQpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIGNhc2UgVGFibGVTZXQ6
IHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlS
ZWZlcmVuY2VzKCksICJyZWZlcmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAgICB1bnNp
Z25lZCB0YWJsZUluZGV4OworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJ
bnQzMih0YWJsZUluZGV4KSwgImNhbid0IHBhcnNlIHRhYmxlIGluZGV4Iik7CiAgICAgICAgIEV4
cHJlc3Npb25UeXBlIHZhbCwgaW5kZXg7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9O
X1NUQUNLX0lOVE8odmFsLCAidGFibGUuc2V0Iik7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBS
RVNTSU9OX1NUQUNLX0lOVE8oaW5kZXgsICJ0YWJsZS5zZXQiKTsKLSAgICAgICAgV0FTTV9UUllf
QUREX1RPX0NPTlRFWFQoYWRkVGFibGVTZXQoaW5kZXgsIHZhbCkpOworICAgICAgICBXQVNNX1RS
WV9BRERfVE9fQ09OVEVYVChhZGRUYWJsZVNldCh0YWJsZUluZGV4LCBpbmRleCwgdmFsKSk7CiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0zOTYsMTMgKzQwMCwxMyBAQCBhdXRvIEZ1
bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0
CiAKICAgICBjYXNlIENhbGxJbmRpcmVjdDogewogICAgICAgICB1aW50MzJfdCBzaWduYXR1cmVJ
bmRleDsKLSAgICAgICAgdWludDhfdCByZXNlcnZlZDsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRighbV9pbmZvLnRhYmxlSW5mb3JtYXRpb24sICJjYWxsX2luZGlyZWN0IGlzIG9ubHkgdmFs
aWQgd2hlbiBhIHRhYmxlIGlzIGRlZmluZWQgb3IgaW1wb3J0ZWQiKTsKKyAgICAgICAgdWludDMy
X3QgdGFibGVJbmRleDsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighbV9pbmZvLnRhYmxl
Q291bnQoKSwgImNhbGxfaW5kaXJlY3QgaXMgb25seSB2YWxpZCB3aGVuIGEgdGFibGUgaXMgZGVm
aW5lZCBvciBpbXBvcnRlZCIpOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZh
clVJbnQzMihzaWduYXR1cmVJbmRleCksICJjYW4ndCBnZXQgY2FsbF9pbmRpcmVjdCdzIHNpZ25h
dHVyZSBpbmRleCIpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQx
KHJlc2VydmVkKSwgImNhbid0IGdldCBjYWxsX2luZGlyZWN0J3MgcmVzZXJ2ZWQgYnl0ZSIpOwot
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHJlc2VydmVkLCAiY2FsbF9pbmRpcmVjdCdzICdy
ZXNlcnZlZCcgdmFydWludDEgbXVzdCBiZSAweDAiKTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRighcGFyc2VWYXJVSW50MzIodGFibGVJbmRleCksICJjYW4ndCBnZXQgY2FsbF9pbmRpcmVj
dCdzIHRhYmxlIGluZGV4Iik7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodGFibGVJbmRl
eCA+PSBtX2luZm8udGFibGVDb3VudCgpLCAiY2FsbF9pbmRpcmVjdCdzIHRhYmxlIGluZGV4ICIs
IHRhYmxlSW5kZXgsICIgaW52YWxpZCwgbGltaXQgaXMgIiwgbV9pbmZvLnRhYmxlQ291bnQoKSk7
CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYobV9pbmZvLnVzZWRTaWduYXR1cmVzLnNpemUo
KSA8PSBzaWduYXR1cmVJbmRleCwgImNhbGxfaW5kaXJlY3QncyBzaWduYXR1cmUgaW5kZXggIiwg
c2lnbmF0dXJlSW5kZXgsICIgZXhjZWVkcyBrbm93biBzaWduYXR1cmVzICIsIG1faW5mby51c2Vk
U2lnbmF0dXJlcy5zaXplKCkpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1faW5mby50
YWJsZUluZm9ybWF0aW9uLnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCAiY2Fs
bF9pbmRpcmVjdCBpcyBvbmx5IHZhbGlkIHdoZW4gYSB0YWJsZSBoYXMgdHlwZSBhbnlmdW5jIik7
CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYobV9pbmZvLnRhYmxlc1t0YWJsZUluZGV4XS50
eXBlKCkgIT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgImNhbGxfaW5kaXJlY3QgaXMgb25s
eSB2YWxpZCB3aGVuIGEgdGFibGUgaGFzIHR5cGUgYW55ZnVuYyIpOwogCiAgICAgICAgIGNvbnN0
IFNpZ25hdHVyZSYgY2FsbGVlU2lnbmF0dXJlID0gbV9pbmZvLnVzZWRTaWduYXR1cmVzW3NpZ25h
dHVyZUluZGV4XS5nZXQoKTsKICAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBjYWxsZWVT
aWduYXR1cmUuYXJndW1lbnRDb3VudCgpICsgMTsgLy8gQWRkIHRoZSBjYWxsZWUncyBpbmRleC4K
QEAgLTQxNiw3ICs0MjAsNyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4
cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLnNo
cmluayhmaXJzdEFyZ3VtZW50SW5kZXgpOwogCiAgICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3Vs
dCA9IENvbnRleHQ6OmVtcHR5RXhwcmVzc2lvbigpOwotICAgICAgICBXQVNNX1RSWV9BRERfVE9f
Q09OVEVYVChhZGRDYWxsSW5kaXJlY3QoY2FsbGVlU2lnbmF0dXJlLCBhcmdzLCByZXN1bHQpKTsK
KyAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkQ2FsbEluZGlyZWN0KHRhYmxlSW5k
ZXgsIGNhbGxlZVNpZ25hdHVyZSwgYXJncywgcmVzdWx0KSk7CiAKICAgICAgICAgaWYgKHJlc3Vs
dCAhPSBDb250ZXh0OjplbXB0eUV4cHJlc3Npb24oKSkKICAgICAgICAgICAgIG1fZXhwcmVzc2lv
blN0YWNrLmFwcGVuZChyZXN1bHQpOwpAQCAtNjMxLDkgKzYzNSw5IEBAIGF1dG8gRnVuY3Rpb25Q
YXJzZXI8Q29udGV4dD46OnBhcnNlVW5yZWFjaGFibGVFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJl
c3VsdAogCiAgICAgY2FzZSBDYWxsSW5kaXJlY3Q6IHsKICAgICAgICAgdWludDMyX3QgdW51c2Vk
OwotICAgICAgICB1aW50OF90IHVudXNlZDI7CisgICAgICAgIHVpbnQzMl90IHVudXNlZDI7CiAg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHVudXNlZCksICJjYW4n
dCBnZXQgY2FsbF9pbmRpcmVjdCdzIHNpZ25hdHVyZSBpbmRleCBpbiB1bnJlYWNoYWJsZSBjb250
ZXh0Iik7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDEodW51c2Vk
MiksICJjYW4ndCBnZXQgY2FsbF9pbmRpcmVjdCdzIHJlc2VydmVkIGJ5dGUgaW4gdW5yZWFjaGFi
bGUgY29udGV4dCIpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQz
Mih1bnVzZWQyKSwgImNhbid0IGdldCBjYWxsX2luZGlyZWN0J3MgcmVzZXJ2ZWQgYnl0ZSBpbiB1
bnJlYWNoYWJsZSBjb250ZXh0Iik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC02
ODUsNyArNjg5LDExIEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlVW5yZWFj
aGFibGVFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogICAgIH0KIAogICAgIGNhc2UgVGFi
bGVHZXQ6Ci0gICAgY2FzZSBUYWJsZVNldDoKKyAgICBjYXNlIFRhYmxlU2V0OiB7CisgICAgICAg
IHVuc2lnbmVkIHRhYmxlSW5kZXg7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNl
VmFyVUludDMyKHRhYmxlSW5kZXgpLCAiY2FuJ3QgcGFyc2UgdGFibGUgaW5kZXgiKTsKKyAgICAg
ICAgRkFMTFRIUk9VR0g7CisgICAgfQogICAgIGNhc2UgUmVmSXNOdWxsOgogICAgIGNhc2UgUmVm
TnVsbDogewogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3Nl
bWJseVJlZmVyZW5jZXMoKSwgInJlZmVyZW5jZXMgYXJlIG5vdCBlbmFibGVkIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcAppbmRleCA1MmJmMGYyYjMzMTBk
OGJhZGIwMmQ0Mzk5NTAwMWQ0M2YxYmYyYzgwLi5kNWQzYWFiMTRlY2YyNWVmNDE3NzQ4OTM3OTAz
MjE0YjMzMDU2ZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
SW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5j
ZS5jcHAKQEAgLTYxLDE4ICs2MSwxOSBAQCBJbnN0YW5jZTo6SW5zdGFuY2UoQ29udGV4dCogY29u
dGV4dCwgUmVmPE1vZHVsZT4mJiBtb2R1bGUsIEVudHJ5RnJhbWUqKiBwb2ludGVyVAogICAgICAg
ICBpZiAoaXNTdWJ0eXBlKG1fbW9kdWxlLmdldCgpLm1vZHVsZUluZm9ybWF0aW9uKCkuZ2xvYmFs
c1tpXS50eXBlLCBBbnlyZWYpKQogICAgICAgICAgICAgbV9nbG9iYWxzVG9NYXJrLnNldChpKTsK
ICAgICB9CisgICAgbWVtc2V0KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZlRh
YmxlUHRyKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCAwKSwgMCwgbV9tb2R1bGUtPm1vZHVsZUluZm9y
bWF0aW9uKCkudGFibGVDb3VudCgpICogc2l6ZW9mKFRhYmxlKikpOwogfQogCiBSZWY8SW5zdGFu
Y2U+IEluc3RhbmNlOjpjcmVhdGUoQ29udGV4dCogY29udGV4dCwgUmVmPE1vZHVsZT4mJiBtb2R1
bGUsIEVudHJ5RnJhbWUqKiBwb2ludGVyVG9Ub3BFbnRyeUZyYW1lLCB2b2lkKiogcG9pbnRlclRv
QWN0dWFsU3RhY2tMaW1pdCwgU3RvcmVUb3BDYWxsRnJhbWVDYWxsYmFjayYmIHN0b3JlVG9wQ2Fs
bEZyYW1lKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBmYXN0TWFsbG9j
KGFsbG9jYXRpb25TaXplKG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5pbXBvcnRGdW5jdGlv
bkNvdW50KCkpKSkgSW5zdGFuY2UoY29udGV4dCwgV1RGTW92ZShtb2R1bGUpLCBwb2ludGVyVG9U
b3BFbnRyeUZyYW1lLCBwb2ludGVyVG9BY3R1YWxTdGFja0xpbWl0LCBXVEZNb3ZlKHN0b3JlVG9w
Q2FsbEZyYW1lKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBmYXN0TWFs
bG9jKGFsbG9jYXRpb25TaXplKG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5pbXBvcnRGdW5j
dGlvbkNvdW50KCksIG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50KCkpKSkg
SW5zdGFuY2UoY29udGV4dCwgV1RGTW92ZShtb2R1bGUpLCBwb2ludGVyVG9Ub3BFbnRyeUZyYW1l
LCBwb2ludGVyVG9BY3R1YWxTdGFja0xpbWl0LCBXVEZNb3ZlKHN0b3JlVG9wQ2FsbEZyYW1lKSkp
OwogfQogCiBJbnN0YW5jZTo6fkluc3RhbmNlKCkgeyB9CiAKIHNpemVfdCBJbnN0YW5jZTo6ZXh0
cmFNZW1vcnlBbGxvY2F0ZWQoKSBjb25zdAogewotICAgIHJldHVybiBnbG9iYWxNZW1vcnlCeXRl
U2l6ZShtX21vZHVsZS5nZXQoKSkgKyBhbGxvY2F0aW9uU2l6ZShtX251bUltcG9ydEZ1bmN0aW9u
cyk7CisgICAgcmV0dXJuIGdsb2JhbE1lbW9yeUJ5dGVTaXplKG1fbW9kdWxlLmdldCgpKSArIGFs
bG9jYXRpb25TaXplKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCBtX21vZHVsZS0+bW9kdWxlSW5mb3Jt
YXRpb24oKS50YWJsZUNvdW50KCkpOwogfQogCiB2b2lkIEluc3RhbmNlOjpzZXRHbG9iYWwodW5z
aWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTk5LDQyICsxMDAsNTggQEAgdm9pZCBJbnN0YW5j
ZTo6c2V0RnVuY3Rpb25XcmFwcGVyKHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiAgICAgQVNT
RVJUKGdldEZ1bmN0aW9uV3JhcHBlcihpKSA9PSB2YWx1ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IGdldFdhc21UYWJsZUVsZW1lbnQoSW5zdGFuY2UqIGluc3RhbmNlLCBpbnQzMl90IHNpZ25lZElu
ZGV4KQorVGFibGUqIEluc3RhbmNlOjp0YWJsZSh1bnNpZ25lZCBpKQogeworICAgIFJFTEVBU0Vf
QVNTRVJUKGkgPCBtX21vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50KCkpOwor
ICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFRhYmxlKio+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhp
cykgKyBvZmZzZXRPZlRhYmxlUHRyKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCBpKSk7Cit9CisKK3Zv
aWQgSW5zdGFuY2U6OnNldFRhYmxlKHVuc2lnbmVkIGksIFJlZjxUYWJsZT4mJiB0YWJsZSkKK3sK
KyAgICBSRUxFQVNFX0FTU0VSVChpIDwgbV9tb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkudGFi
bGVDb3VudCgpKTsKKyAgICBpZiAoYXV0byogdGFibGUgPSB0aGlzLT50YWJsZShpKSkKKyAgICAg
ICAgdGFibGUtPmRlcmVmKCk7CisgICAgKmJpdHdpc2VfY2FzdDxUYWJsZSoqPihiaXR3aXNlX2Nh
c3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZUYWJsZVB0cihtX251bUltcG9ydEZ1bmN0aW9ucywg
aSkpID0gJnRhYmxlLmxlYWtSZWYoKTsKK30KKworRW5jb2RlZEpTVmFsdWUgZ2V0V2FzbVRhYmxl
RWxlbWVudChJbnN0YW5jZSogaW5zdGFuY2UsIHVuc2lnbmVkIHRhYmxlSW5kZXgsIGludDMyX3Qg
c2lnbmVkSW5kZXgpCit7CisgICAgQVNTRVJUKHRhYmxlSW5kZXggPCBpbnN0YW5jZS0+bW9kdWxl
KCkubW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50KCkpOwogICAgIGlmIChzaWduZWRJbmRl
eCA8IDApCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgdWludDMyX3QgaW5kZXggPSBzaWduZWRJ
bmRleDsKLSAgICBpZiAoaW5kZXggPj0gaW5zdGFuY2UtPnRhYmxlKCktPmxlbmd0aCgpKQorICAg
IGlmIChpbmRleCA+PSBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPmxlbmd0aCgpKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaW5zdGFuY2UtPnRh
YmxlKCktPmdldChpbmRleCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaW5zdGFuY2Ut
PnRhYmxlKHRhYmxlSW5kZXgpLT5nZXQoaW5kZXgpKTsKIH0KIAotYm9vbCBzZXRXYXNtVGFibGVF
bGVtZW50KEluc3RhbmNlKiBpbnN0YW5jZSwgaW50MzJfdCBzaWduZWRJbmRleCwgRW5jb2RlZEpT
VmFsdWUgZW5jVmFsdWUpCitib29sIHNldFdhc21UYWJsZUVsZW1lbnQoSW5zdGFuY2UqIGluc3Rh
bmNlLCB1bnNpZ25lZCB0YWJsZUluZGV4LCBpbnQzMl90IHNpZ25lZEluZGV4LCBFbmNvZGVkSlNW
YWx1ZSBlbmNWYWx1ZSkKIHsKKyAgICBBU1NFUlQodGFibGVJbmRleCA8IGluc3RhbmNlLT5tb2R1
bGUoKS5tb2R1bGVJbmZvcm1hdGlvbigpLnRhYmxlQ291bnQoKSk7CiAgICAgaWYgKHNpZ25lZElu
ZGV4IDwgMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdWludDMyX3QgaW5kZXggPSBz
aWduZWRJbmRleDsKLSAgICBpZiAoaW5kZXggPj0gaW5zdGFuY2UtPnRhYmxlKCktPmxlbmd0aCgp
KQorICAgIGlmIChpbmRleCA+PSBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPmxlbmd0aCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY1ZhbHVlKTsKLSAgICBpZiAoaW5zdGFuY2UtPnRhYmxlKCktPnR5cGUoKSA9PSBX
YXNtOjpUYWJsZUVsZW1lbnRUeXBlOjpBbnlyZWYpCi0gICAgICAgIGluc3RhbmNlLT50YWJsZSgp
LT5zZXQoaW5kZXgsIHZhbHVlKTsKLSAgICBlbHNlIGlmIChpbnN0YW5jZS0+dGFibGUoKS0+dHlw
ZSgpID09IFdhc206OlRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpIHsKKyAgICBpZiAoaW5zdGFu
Y2UtPnRhYmxlKHRhYmxlSW5kZXgpLT50eXBlKCkgPT0gV2FzbTo6VGFibGVFbGVtZW50VHlwZTo6
QW55cmVmKQorICAgICAgICBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPnNldChpbmRleCwg
dmFsdWUpOworICAgIGVsc2UgaWYgKGluc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+dHlwZSgp
ID09IFdhc206OlRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpIHsKICAgICAgICAgV2ViQXNzZW1i
bHlGdW5jdGlvbiogd2FzbUZ1bmN0aW9uOwogICAgICAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5j
dGlvbiogd2FzbVdyYXBwZXJGdW5jdGlvbjsKIAogICAgICAgICBpZiAoaXNXZWJBc3NlbWJseUhv
c3RGdW5jdGlvbigqaW5zdGFuY2UtPm93bmVyPEpTT2JqZWN0PigpLT52bSgpLCB2YWx1ZSwgd2Fz
bUZ1bmN0aW9uLCB3YXNtV3JhcHBlckZ1bmN0aW9uKSkgewogICAgICAgICAgICAgQVNTRVJUKCEh
d2FzbUZ1bmN0aW9uIHx8ICEhd2FzbVdyYXBwZXJGdW5jdGlvbik7CiAgICAgICAgICAgICBpZiAo
d2FzbUZ1bmN0aW9uKQotICAgICAgICAgICAgICAgIGluc3RhbmNlLT50YWJsZSgpLT5hc0Z1bmNy
ZWZUYWJsZSgpLT5zZXRGdW5jdGlvbihpbmRleCwganNDYXN0PEpTT2JqZWN0Kj4odmFsdWUpLCB3
YXNtRnVuY3Rpb24tPmltcG9ydGFibGVGdW5jdGlvbigpLCAmd2FzbUZ1bmN0aW9uLT5pbnN0YW5j
ZSgpLT5pbnN0YW5jZSgpKTsKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+dGFibGUodGFibGVJ
bmRleCktPmFzRnVuY3JlZlRhYmxlKCktPnNldEZ1bmN0aW9uKGluZGV4LCBqc0Nhc3Q8SlNPYmpl
Y3QqPih2YWx1ZSksIHdhc21GdW5jdGlvbi0+aW1wb3J0YWJsZUZ1bmN0aW9uKCksICZ3YXNtRnVu
Y3Rpb24tPmluc3RhbmNlKCktPmluc3RhbmNlKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIGluc3RhbmNlLT50YWJsZSgpLT5hc0Z1bmNyZWZUYWJsZSgpLT5zZXRGdW5jdGlv
bihpbmRleCwganNDYXN0PEpTT2JqZWN0Kj4odmFsdWUpLCB3YXNtV3JhcHBlckZ1bmN0aW9uLT5p
bXBvcnRhYmxlRnVuY3Rpb24oKSwgJndhc21XcmFwcGVyRnVuY3Rpb24tPmluc3RhbmNlKCktPmlu
c3RhbmNlKCkpOworICAgICAgICAgICAgICAgIGluc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+
YXNGdW5jcmVmVGFibGUoKS0+c2V0RnVuY3Rpb24oaW5kZXgsIGpzQ2FzdDxKU09iamVjdCo+KHZh
bHVlKSwgd2FzbVdyYXBwZXJGdW5jdGlvbi0+aW1wb3J0YWJsZUZ1bmN0aW9uKCksICZ3YXNtV3Jh
cHBlckZ1bmN0aW9uLT5pbnN0YW5jZSgpLT5pbnN0YW5jZSgpKTsKICAgICAgICAgfSBlbHNlIGlm
ICh2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAgIGluc3RhbmNlLT50YWJsZSgpLT5jbGVhcihp
bmRleCk7CisgICAgICAgICAgICBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPmNsZWFyKGlu
ZGV4KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5z
dGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCmluZGV4
IDdhMjNlNTYyODI0ZjgxZTM1ODYwZWU3YWIwZDk4NThhZjNiM2IyNzkuLjAxMmNkNDU3M2FhODRm
OTY0NzBjYjA3MTk4YzdhNzBiYjBmM2E3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21JbnN0YW5jZS5oCkBAIC00MSw4ICs0MSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgV2FzbSB7CiBzdHJ1Y3QgQ29udGV4dDsKIGNsYXNzIEluc3RhbmNlOwogCi1FbmNvZGVkSlNW
YWx1ZSBnZXRXYXNtVGFibGVFbGVtZW50KEluc3RhbmNlKiwgaW50MzJfdCk7Ci1ib29sIHNldFdh
c21UYWJsZUVsZW1lbnQoSW5zdGFuY2UqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSBlbmNWYWx1
ZSk7CitFbmNvZGVkSlNWYWx1ZSBnZXRXYXNtVGFibGVFbGVtZW50KEluc3RhbmNlKiwgdW5zaWdu
ZWQsIGludDMyX3QpOworYm9vbCBzZXRXYXNtVGFibGVFbGVtZW50KEluc3RhbmNlKiwgdW5zaWdu
ZWQsIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlIGVuY1ZhbHVlKTsKIEVuY29kZWRKU1ZhbHVlIGRv
V2FzbVJlZkZ1bmMoSW5zdGFuY2UqLCB1aW50MzJfdCk7CiAKIGNsYXNzIEluc3RhbmNlIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRy
PEluc3RhbmNlPiB7CkBAIC03MCw3ICs3MCw4IEBAIHB1YmxpYzoKICAgICBNb2R1bGUmIG1vZHVs
ZSgpIHsgcmV0dXJuIG1fbW9kdWxlLmdldCgpOyB9CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2so
KSB7IHJldHVybiBtX2NvZGVCbG9jay5nZXQoKTsgfQogICAgIE1lbW9yeSogbWVtb3J5KCkgeyBy
ZXR1cm4gbV9tZW1vcnkuZ2V0KCk7IH0KLSAgICBUYWJsZSogdGFibGUoKSB7IHJldHVybiBtX3Rh
YmxlLmdldCgpOyB9CisgICAgVGFibGUqIHRhYmxlKHVuc2lnbmVkKTsKKyAgICB2b2lkIHNldFRh
YmxlKHVuc2lnbmVkLCBSZWY8VGFibGU+JiYpOwogCiAgICAgdm9pZCogY2FjaGVkTWVtb3J5KCkg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZWRNZW1vcnkuZ2V0TWF5QmVOdWxsKGNhY2hlZE1lbW9yeVNp
emUoKSk7IH0KICAgICBzaXplX3QgY2FjaGVkTWVtb3J5U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FjaGVkTWVtb3J5U2l6ZTsgfQpAQCAtODgsNyArODksNiBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBtX2NhY2hlZE1lbW9yeVNpemUgPSBtZW1vcnkoKS0+c2l6ZSgpOwogICAgICAgICB9CiAgICAg
fQotICAgIHZvaWQgc2V0VGFibGUoUmVmPFRhYmxlPiYmIHRhYmxlKSB7IG1fdGFibGUgPSBXVEZN
b3ZlKHRhYmxlKTsgfQogCiAgICAgaW50MzJfdCBsb2FkSTMyR2xvYmFsKHVuc2lnbmVkIGkpIGNv
bnN0IHsgcmV0dXJuIG1fZ2xvYmFscy5nZXQoKVtpXS5wcmltaXRpdmU7IH0KICAgICBpbnQ2NF90
IGxvYWRJNjRHbG9iYWwodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxzLmdldCgp
W2ldLnByaW1pdGl2ZTsgfQpAQCAtMTAzLDcgKzEwMyw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNZW1vcnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5z
dGFuY2UsIG1fbWVtb3J5KTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZHbG9iYWxz
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX2dsb2JhbHMpOyB9Ci0gICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlRhYmxlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEluc3RhbmNlLCBtX3RhYmxlKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWNo
ZWRNZW1vcnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fY2FjaGVkTWVt
b3J5KTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX2NhY2hlZE1lbW9yeVNpemUpOyB9
CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlBvaW50ZXJUb1RvcEVudHJ5RnJhbWUoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fcG9pbnRlclRvVG9wRW50cnlGcmFt
ZSk7IH0KQEAgLTEyMiw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gVGFpbCBh
Y2Nlc3NvcnMuCi0gICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZlRhaWwoKSB7IHJldHVybiBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHVpbnQ2NF90KT4oc2l6ZW9mKEluc3RhbmNlKSk7
IH0KKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBvZmZzZXRPZlRhaWwoKSB7IHJldHVybiBX
VEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHVpbnQ2NF90KT4oc2l6ZW9mKEluc3RhbmNl
KSk7IH0KICAgICBzdHJ1Y3QgSW1wb3J0RnVuY3Rpb25JbmZvIHsKICAgICAgICAgLy8gVGFyZ2V0
IGluc3RhbmNlIGFuZCBlbnRyeXBvaW50IGFyZSBvbmx5IHNldCBmb3Igd2FzbS0+d2FzbSBjYWxs
cywgYW5kIGFyZSBvdGhlcndpc2UgbnVsbHB0ci4gVGhlIGVtYmVkZGVyLXNwZWNpZmljIGxvZ2lj
IG9jY3VycyB0aHJvdWdoIGltcG9ydCBmdW5jdGlvbi4KICAgICAgICAgSW5zdGFuY2UqIHRhcmdl
dEluc3RhbmNlIHsgbnVsbHB0ciB9OwpAQCAtMTQyLDYgKzE0MSw5IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgc2l6ZV90IG9mZnNldE9mSW1wb3J0RnVuY3Rpb24oc2l6ZV90IGltcG9ydEZ1bmN0aW9u
TnVtKSB7IHJldHVybiBvZmZzZXRPZlRhaWwoKSArIGltcG9ydEZ1bmN0aW9uTnVtICogc2l6ZW9m
KEltcG9ydEZ1bmN0aW9uSW5mbykgKyBPQkpFQ1RfT0ZGU0VUT0YoSW1wb3J0RnVuY3Rpb25JbmZv
LCBpbXBvcnRGdW5jdGlvbik7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUKiBpbXBvcnRG
dW5jdGlvbih1bnNpZ25lZCBpbXBvcnRGdW5jdGlvbk51bSkgeyByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxUKj4oJmltcG9ydEZ1bmN0aW9uSW5mbyhpbXBvcnRGdW5jdGlvbk51bSktPmltcG9ydEZ1
bmN0aW9uKTsgfQogCisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoSW1wb3J0RnVuY3Rpb25JbmZv
KSA9PSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHVpbnQ2NF90KT4oc2l6ZW9mKElt
cG9ydEZ1bmN0aW9uSW5mbykpLCAiV2UgcmVseSBvbiB0aGlzIGZvciB0aGUgYWxpZ25tZW50IHRv
IGJlIGNvcnJlY3QiKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBvZmZzZXRPZlRhYmxl
UHRyKHVuc2lnbmVkIG51bUltcG9ydEZ1bmN0aW9ucywgdW5zaWduZWQgaSkgeyByZXR1cm4gb2Zm
c2V0T2ZUYWlsKCkgKyBzaXplb2YoSW1wb3J0RnVuY3Rpb25JbmZvKSAqIG51bUltcG9ydEZ1bmN0
aW9ucyArIHNpemVvZihUYWJsZSopICogaTsgfQorCiAgICAgdm9pZCBzdG9yZVRvcENhbGxGcmFt
ZSh2b2lkKiBjYWxsRnJhbWUpCiAgICAgewogICAgICAgICBtX3N0b3JlVG9wQ2FsbEZyYW1lKGNh
bGxGcmFtZSk7CkBAIC0xNTAsOSArMTUyLDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbnN0
YW5jZShDb250ZXh0KiwgUmVmPE1vZHVsZT4mJiwgRW50cnlGcmFtZSoqLCB2b2lkKiosIFN0b3Jl
VG9wQ2FsbEZyYW1lQ2FsbGJhY2smJik7CiAgICAgCi0gICAgc3RhdGljIHNpemVfdCBhbGxvY2F0
aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gbnVtSW1wb3J0RnVuY3Rpb25zKQorICAgIHN0YXRpYyBz
aXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IG51bUltcG9ydEZ1bmN0aW9ucywg
Q2hlY2tlZDxzaXplX3Q+IG51bVRhYmxlcykKICAgICB7Ci0gICAgICAgIHJldHVybiAob2Zmc2V0
T2ZUYWlsKCkgKyBzaXplb2YoSW1wb3J0RnVuY3Rpb25JbmZvKSAqIG51bUltcG9ydEZ1bmN0aW9u
cykudW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiAob2Zmc2V0T2ZUYWlsKCkgKyBzaXplb2Yo
SW1wb3J0RnVuY3Rpb25JbmZvKSAqIG51bUltcG9ydEZ1bmN0aW9ucyArIHNpemVvZihUYWJsZSop
ICogbnVtVGFibGVzKS51bnNhZmVHZXQoKTsKICAgICB9CiAgICAgdm9pZCogbV9vd25lciB7IG51
bGxwdHIgfTsgLy8gSW4gYSBKUyBlbWJlZGRpbmcsIHRoaXMgaXMgYSBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqLgogICAgIENvbnRleHQqIG1fY29udGV4dCB7IG51bGxwdHIgfTsKQEAgLTE2MSw3ICsx
NjMsNiBAQCBwcml2YXRlOgogICAgIFJlZjxNb2R1bGU+IG1fbW9kdWxlOwogICAgIFJlZlB0cjxD
b2RlQmxvY2s+IG1fY29kZUJsb2NrOwogICAgIFJlZlB0cjxNZW1vcnk+IG1fbWVtb3J5OwotICAg
IFJlZlB0cjxUYWJsZT4gbV90YWJsZTsKIAogICAgIHVuaW9uIEdsb2JhbFZhbHVlIHsKICAgICAg
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+IGFueXJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21MaW1pdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21MaW1pdHMuaAppbmRleCBjNmY2Y2RjYmJjZGNkNzg1ZTM1ZjY0MmM3ZTg4MGQ4ODlmZGIz
OGFhLi5jZjhiNDQ2MDM2ODExMjNlY2MyNWNmYzM3MjQ5OGI1ZjViNThjOTg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTGltaXRzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUxpbWl0cy5oCkBAIC01MSw2ICs1MSw3IEBAIGNvbnN0ZXhw
ciBzaXplX3QgbWF4RnVuY3Rpb25Mb2NhbHMgPSA1MDAwMDsKIGNvbnN0ZXhwciBzaXplX3QgbWF4
RnVuY3Rpb25QYXJhbXMgPSAxMDAwOwogCiBjb25zdGV4cHIgc2l6ZV90IG1heFRhYmxlRW50cmll
cyA9IDEwMDAwMDAwOworY29uc3RleHByIHVuc2lnbmVkIG1heFRhYmxlcyA9IDEwMDAwMDA7CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgKaW5kZXggODhmNjZjYjYzOTE1OWMzNjlk
OWRkZTYwYTFmY2U2ZGE1ZDE3MTI4OS4uMjY4Zjg4YmIxMGJmNzQ4NWZhNjUxNjU1MjRlNzA0YjY1
OTk4NzI1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVs
ZUluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVs
ZUluZm9ybWF0aW9uLmgKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IE1vZHVsZUluZm9ybWF0aW9u
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1vZHVsZUluZm9ybWF0aW9uPiB7CiAgICAg
Ly8gQ3VycmVudGx5LCBvdXIgd2FzbSBpbXBsZW1lbnRhdGlvbiBhbGxvd3Mgb25seSBvbmUgbWVt
b3J5IGFuZCB0YWJsZS4KICAgICAvLyBJZiB3ZSBuZWVkIHRvIHJlbW92ZSB0aGlzIGxpbWl0YXRp
b24sIHdlIHdvdWxkIGhhdmUgTWVtb3J5SW5mb3JtYXRpb24gYW5kIFRhYmxlSW5mb3JtYXRpb24g
aW4gdGhlIFZlY3RvcnMuCiAgICAgdWludDMyX3QgbWVtb3J5Q291bnQoKSBjb25zdCB7IHJldHVy
biBtZW1vcnkgPyAxIDogMDsgfQotICAgIHVpbnQzMl90IHRhYmxlQ291bnQoKSBjb25zdCB7IHJl
dHVybiB0YWJsZUluZm9ybWF0aW9uID8gMSA6IDA7IH0KKyAgICB1aW50MzJfdCB0YWJsZUNvdW50
KCkgY29uc3QgeyByZXR1cm4gdGFibGVzLnNpemUoKTsgfQogCiAgICAgY29uc3QgQml0VmVjdG9y
JiByZWZlcmVuY2VkRnVuY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2VkRnVuY3Rp
b25zOyB9CiAgICAgdm9pZCBhZGRSZWZlcmVuY2VkRnVuY3Rpb24odW5zaWduZWQgaW5kZXgpIGNv
bnN0IHsgbV9yZWZlcmVuY2VkRnVuY3Rpb25zLnNldChpbmRleCk7IH0KQEAgLTgzLDcgKzgzLDcg
QEAgc3RydWN0IE1vZHVsZUluZm9ybWF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PE1vZHVsZUluZm9ybWF0aW9uPiB7CiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IHN0YXJ0RnVuY3Rp
b25JbmRleFNwYWNlOwogICAgIFZlY3RvcjxTZWdtZW50OjpQdHI+IGRhdGE7CiAgICAgVmVjdG9y
PEVsZW1lbnQ+IGVsZW1lbnRzOwotICAgIFRhYmxlSW5mb3JtYXRpb24gdGFibGVJbmZvcm1hdGlv
bjsKKyAgICBWZWN0b3I8VGFibGVJbmZvcm1hdGlvbj4gdGFibGVzOwogICAgIFZlY3RvcjxHbG9i
YWw+IGdsb2JhbHM7CiAgICAgdW5zaWduZWQgZmlyc3RJbnRlcm5hbEdsb2JhbCB7IDAgfTsKICAg
ICBWZWN0b3I8Q3VzdG9tU2VjdGlvbj4gY3VzdG9tU2VjdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKaW5kZXggYzgwMzE0ZGZkYTAw
M2ZlYjJiNWYwN2NhOWZhOTljZDg4ODNkZWE3MC4uZWY1MTIxNjc1MmExMjY1ZTEwMjRkMzdlOTI4
OWVjNDhiYWZmZGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVNlY3Rpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
ZWN0aW9uUGFyc2VyLmNwcApAQCAtMTE5LDYgKzExOSw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6
cGFyc2VJbXBvcnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBF
eHRlcm5hbEtpbmQ6OlRhYmxlOiB7CiAgICAgICAgICAgICBib29sIGlzSW1wb3J0ID0gdHJ1ZTsK
KyAgICAgICAgICAgIGtpbmRJbmRleCA9IG1faW5mby0+dGFibGVzLnNpemUoKTsKICAgICAgICAg
ICAgIFBhcnRpYWxSZXN1bHQgcmVzdWx0ID0gcGFyc2VUYWJsZUhlbHBlcihpc0ltcG9ydCk7CiAg
ICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKFdURk1vdmUocmVzdWx0LmVycm9yKCkpKTsKQEAgLTE5Myw3ICsxOTQs
NyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlUmVzaXphYmxlTGltaXRzKHVpbnQzMl90JiBp
bml0aWFsLCBPcHRpb25hbDx1aW50MzJfdD4mCiAKIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VU
YWJsZUhlbHBlcihib29sIGlzSW1wb3J0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRihtX2luZm8tPnRhYmxlQ291bnQoKSA+IDAsICJDYW5ub3QgaGF2ZSBtb3Jl
IHRoYW4gb25lIFRhYmxlIGZvciBub3ciKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1faW5m
by0+dGFibGVDb3VudCgpID49IG1heFRhYmxlcywgIlRhYmxlIGNvdW50IG9mICIsIG1faW5mby0+
dGFibGVDb3VudCgpLCAiIGlzIHRvbyBiaWcsIG1heGltdW0gIiwgbWF4VGFibGVzKTsKIAogICAg
IGludDhfdCB0eXBlOwogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlSW50Nyh0eXBlKSwg
ImNhbid0IHBhcnNlIFRhYmxlIHR5cGUiKTsKQEAgLTIwOSw3ICsyMTAsNyBAQCBhdXRvIFNlY3Rp
b25QYXJzZXI6OnBhcnNlVGFibGVIZWxwZXIoYm9vbCBpc0ltcG9ydCkgLT4gUGFydGlhbFJlc3Vs
dAogICAgIEFTU0VSVCghbWF4aW11bSB8fCAqbWF4aW11bSA+PSBpbml0aWFsKTsKIAogICAgIFRh
YmxlRWxlbWVudFR5cGUgdGFibGVUeXBlID0gdHlwZSA9PSBXYXNtOjpBbnlmdW5jID8gVGFibGVF
bGVtZW50VHlwZTo6RnVuY3JlZiA6IFRhYmxlRWxlbWVudFR5cGU6OkFueXJlZjsKLSAgICBtX2lu
Zm8tPnRhYmxlSW5mb3JtYXRpb24gPSBUYWJsZUluZm9ybWF0aW9uKGluaXRpYWwsIG1heGltdW0s
IGlzSW1wb3J0LCB0YWJsZVR5cGUpOworICAgIG1faW5mby0+dGFibGVzLmFwcGVuZChUYWJsZUlu
Zm9ybWF0aW9uKGluaXRpYWwsIG1heGltdW0sIGlzSW1wb3J0LCB0YWJsZVR5cGUpKTsKIAogICAg
IHJldHVybiB7IH07CiB9CkBAIC0yMTgsMTUgKzIxOSwxMyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6
OnBhcnNlVGFibGUoKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgdWludDMyX3QgY291bnQ7CiAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoY291bnQpLCAiY2FuJ3QgZ2V0
IFRhYmxlJ3MgY291bnQiKTsKLSAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGNvdW50ID4gMSwgIlRh
YmxlIGNvdW50IG9mICIsIGNvdW50LCAiIGlzIGludmFsaWQsIGF0IG1vc3QgMSBpcyBhbGxvd2Vk
IGZvciBub3ciKTsKIAotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAg
ICBib29sIGlzSW1wb3J0ID0gZmFsc2U7Ci0gICAgUGFydGlhbFJlc3VsdCByZXN1bHQgPSBwYXJz
ZVRhYmxlSGVscGVyKGlzSW1wb3J0KTsKLSAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkpCi0gICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZNb3ZlKHJlc3VsdC5lcnJvcigpKSk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgYm9vbCBpc0lt
cG9ydCA9IGZhbHNlOworICAgICAgICBQYXJ0aWFsUmVzdWx0IHJlc3VsdCA9IHBhcnNlVGFibGVI
ZWxwZXIoaXNJbXBvcnQpOworICAgICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkpCisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShyZXN1bHQuZXJyb3IoKSkpOworICAg
IH0KIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0zNzksMTYgKzM3OCwxNiBAQCBhdXRvIFNlY3Rp
b25QYXJzZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxSZXN1bHQKIAogICAgICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMih0YWJsZUluZGV4KSwgImNhbid0IGdldCAi
LCBlbGVtZW50TnVtLCAidGggRWxlbWVudCB0YWJsZSBpbmRleCIpOwogICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKHRhYmxlSW5kZXggPj0gbV9pbmZvLT50YWJsZUNvdW50KCksICJFbGVtZW50
IHNlY3Rpb24gZm9yIFRhYmxlICIsIHRhYmxlSW5kZXgsICIgZXhjZWVkcyBhdmFpbGFibGUgVGFi
bGUgIiwgbV9pbmZvLT50YWJsZUNvdW50KCkpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KG1faW5mby0+dGFibGVJbmZvcm1hdGlvbi50eXBlKCkgIT0gVGFibGVFbGVtZW50VHlwZTo6RnVu
Y3JlZiwgIlRhYmxlICIsIHRhYmxlSW5kZXgsICIgbXVzdCBoYXZlIHR5cGUgJ2FueWZ1bmMnIHRv
IGhhdmUgYW4gZWxlbWVudCBzZWN0aW9uIik7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
bV9pbmZvLT50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpICE9IFRhYmxlRWxlbWVudFR5cGU6OkZ1
bmNyZWYsICJUYWJsZSAiLCB0YWJsZUluZGV4LCAiIG11c3QgaGF2ZSB0eXBlICdhbnlmdW5jJyB0
byBoYXZlIGFuIGVsZW1lbnQgc2VjdGlvbiIpOwogICAgICAgICBUeXBlIGluaXRFeHByVHlwZTsK
ICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUluaXRFeHByKGluaXRPcGNv
ZGUsIGluaXRFeHByQml0cywgaW5pdEV4cHJUeXBlKSk7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoaW5pdEV4cHJUeXBlICE9IEkzMiwgIkVsZW1lbnQgaW5pdF9leHByIG11c3QgcHJvZHVj
ZSBhbiBpMzIiKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIo
aW5kZXhDb3VudCksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIGluZGV4IGNvdW50IGZv
ciBFbGVtZW50IHNlY3Rpb24iKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihpbmRleENv
dW50ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwgIkVsZW1lbnQgc2Vj
dGlvbidzICIsIGVsZW1lbnROdW0sICJ0aCBpbmRleCBjb3VudCBpcyB0b28gYmlnICIsIGluZGV4
Q291bnQpOwogCi0gICAgICAgIEFTU0VSVCghIW1faW5mby0+dGFibGVJbmZvcm1hdGlvbik7Cisg
ICAgICAgIEFTU0VSVCghIW1faW5mby0+dGFibGVzW3RhYmxlSW5kZXhdKTsKIAotICAgICAgICBF
bGVtZW50IGVsZW1lbnQobWFrZUkzMkluaXRFeHByKGluaXRPcGNvZGUsIGluaXRFeHByQml0cykp
OworICAgICAgICBFbGVtZW50IGVsZW1lbnQodGFibGVJbmRleCwgbWFrZUkzMkluaXRFeHByKGlu
aXRPcGNvZGUsIGluaXRFeHByQml0cykpOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFl
bGVtZW50LmZ1bmN0aW9uSW5kaWNlcy50cnlSZXNlcnZlQ2FwYWNpdHkoaW5kZXhDb3VudCksICJj
YW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yICIsIGluZGV4Q291bnQsICIgRWxlbWVudCBpbmRpY2Vz
Iik7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgaW5kZXhDb3Vu
dDsgKytpbmRleCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaAppbmRleCBi
MWUyYjVkZjRkZjFjNjQ1Y2Y5YjMzMDJlYTU4N2EwN2ZlZWM4ZDZjLi5kNmFhYzViNTU4MmRhNDIw
Y2Q0MTYzNGUwZTUzMmJjNTI1NDhhOTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
VGFibGUuaApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHVpbnQzMl90IGFs
bG9jYXRlZExlbmd0aCh1aW50MzJfdCBsZW5ndGgpOwogICAgIHVpbnQzMl90IG1hc2soKSBjb25z
dCB7IHJldHVybiBtX21hc2s7IH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQqIG93bmVy
KCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4obV9vd25lcik7IH0KICAgICB2
b2lkIHNldE93bmVyKEpTT2JqZWN0KiBvd25lcikKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9v
d25lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRh
dGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcAppbmRl
eCA3ZjFhYzYxZWU4YTI0Y2QxZTkxOGI4YmRlYWNjYjhkYmU0MzQ4ZTk4Li5iZDIxZDgwZWYxYTUz
ZjM3OWIxNWM3MDg4MjFlOGM2NzY1ZGJkZmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21WYWxpZGF0ZS5jcHAKQEAgLTEwNiw4ICsxMDYsOCBAQCBwdWJsaWM6CiAgICAgUmVz
dWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4LCBFeHByZXNz
aW9uVHlwZSYgcmVzdWx0KTsKIAogICAgIC8vIFRhYmxlcwotICAgIFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KTsKLSAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlU2V0KEV4
cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKTsKKyAgICBSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlR2V0KHVuc2lnbmVkLCBFeHByZXNzaW9uVHlwZSYg
aW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gYWRkVGFibGVTZXQodW5zaWduZWQsIEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVz
c2lvblR5cGUmIHZhbHVlKTsKIAogICAgIC8vIExvY2FscwogICAgIFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gZ2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQp
OwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbGxzCiAgICAgUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsKHVuc2lnbmVkIGNhbGxlZUluZGV4LCBjb25zdCBT
aWduYXR1cmUmLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KTsKLSAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRp
cmVjdChjb25zdCBTaWduYXR1cmUmLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdz
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmLCBj
b25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KTsKIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkaWRLaWxsKEV4cHJlc3Npb25UeXBlKSB7IH0K
IApAQCAtMTc4LDIxICsxNzgsMjIgQEAgYXV0byBWYWxpZGF0ZTo6YWRkQXJndW1lbnRzKGNvbnN0
IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBSZXN1bHQKICAgICByZXR1cm4geyB9OwogfQogCi1h
dXRvIFZhbGlkYXRlOjphZGRUYWJsZUdldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpIC0+IFJlc3VsdAorYXV0byBWYWxpZGF0ZTo6YWRkVGFibGVHZXQodW5z
aWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KSAtPiBSZXN1bHQKIHsKLSAgICByZXN1bHQgPSBtX21vZHVsZS50YWJsZUluZm9ybWF0
aW9uLndhc21UeXBlKCk7CisgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRih0YWJsZUluZGV4ID49
IG1fbW9kdWxlLnRhYmxlQ291bnQoKSwgInRhYmxlIGluZGV4ICIsIHRhYmxlSW5kZXgsICIgaXMg
aW52YWxpZCwgbGltaXQgaXMgIiwgbV9tb2R1bGUudGFibGVDb3VudCgpKTsKKyAgICByZXN1bHQg
PSBtX21vZHVsZS50YWJsZXNbdGFibGVJbmRleF0ud2FzbVR5cGUoKTsKICAgICBXQVNNX1ZBTElE
QVRPUl9GQUlMX0lGKFR5cGU6OkkzMiAhPSBpbmRleCwgInRhYmxlLmdldCBpbmRleCB0byB0eXBl
ICIsIGluZGV4LCAiIGV4cGVjdGVkICIsIFR5cGU6OkkzMik7CiAKICAgICByZXR1cm4geyB9Owog
fQogCi1hdXRvIFZhbGlkYXRlOjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4
cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4gUmVzdWx0CithdXRvIFZhbGlkYXRlOjphZGRUYWJsZVNl
dCh1bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25U
eXBlJiB2YWx1ZSkgLT4gUmVzdWx0CiB7Ci0gICAgYXV0byB0eXBlID0gbV9tb2R1bGUudGFibGVJ
bmZvcm1hdGlvbi53YXNtVHlwZSgpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYodGFibGVJ
bmRleCA+PSBtX21vZHVsZS50YWJsZUNvdW50KCksICJ0YWJsZSBpbmRleCAiLCB0YWJsZUluZGV4
LCAiIGlzIGludmFsaWQsIGxpbWl0IGlzICIsIG1fbW9kdWxlLnRhYmxlQ291bnQoKSk7CisgICAg
YXV0byB0eXBlID0gbV9tb2R1bGUudGFibGVzW3RhYmxlSW5kZXhdLndhc21UeXBlKCk7CiAgICAg
V0FTTV9WQUxJREFUT1JfRkFJTF9JRihUeXBlOjpJMzIgIT0gaW5kZXgsICJ0YWJsZS5zZXQgaW5k
ZXggdG8gdHlwZSAiLCBpbmRleCwgIiBleHBlY3RlZCAiLCBUeXBlOjpJMzIpOwogICAgIFdBU01f
VkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZSh2YWx1ZSwgdHlwZSksICJ0YWJsZS5zZXQgdmFs
dWUgdG8gdHlwZSAiLCB2YWx1ZSwgIiBleHBlY3RlZCAiLCB0eXBlKTsKLSAgICBXQVNNX1ZBTElE
QVRPUl9GQUlMX0lGKG1fbW9kdWxlLnRhYmxlSW5mb3JtYXRpb24udHlwZSgpICE9IFRhYmxlRWxl
bWVudFR5cGU6OkFueXJlZgotICAgICAgICAmJiBtX21vZHVsZS50YWJsZUluZm9ybWF0aW9uLnR5
cGUoKSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCAidGFibGUuc2V0IGV4cGVjdHMgdGhl
IHRhYmxlIHRvIGhhdmUgdHlwZSBhbnlyZWYgb3IgYW55ZnVuYyIpOworICAgIFJFTEVBU0VfQVNT
RVJUKG1fbW9kdWxlLnRhYmxlc1t0YWJsZUluZGV4XS50eXBlKCkgPT0gVGFibGVFbGVtZW50VHlw
ZTo6QW55cmVmIHx8IG1fbW9kdWxlLnRhYmxlc1t0YWJsZUluZGV4XS50eXBlKCkgPT0gVGFibGVF
bGVtZW50VHlwZTo6RnVuY3JlZik7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtMzc5LDkgKzM4
MCwxMCBAQCBhdXRvIFZhbGlkYXRlOjphZGRDYWxsKHVuc2lnbmVkLCBjb25zdCBTaWduYXR1cmUm
IHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPEV4cHJlcwogICAgIHJldHVybiB7IH07CiB9CiAKLWF1
dG8gVmFsaWRhdGU6OmFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwg
Y29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCkgLT4gUmVzdWx0CithdXRvIFZhbGlkYXRlOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFi
bGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIGNvbnN0IFZlY3RvcjxFeHByZXNz
aW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFJlc3VsdAogewotICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYobV9tb2R1bGUudGFibGVJbmZvcm1hdGlvbi50eXBlKCkg
IT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgIlRhYmxlIG11c3QgaGF2ZSB0eXBlIEFueWZ1
bmMgdG8gY2FsbCIpOworICAgIFJFTEVBU0VfQVNTRVJUKHRhYmxlSW5kZXggPCBtX21vZHVsZS50
YWJsZUNvdW50KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fbW9kdWxlLnRhYmxlc1t0YWJsZUlu
ZGV4XS50eXBlKCkgPT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZik7CiAgICAgY29uc3QgYXV0
byBhcmd1bWVudENvdW50ID0gc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKTsKICAgICBXQVNNX1ZB
TElEQVRPUl9GQUlMX0lGKGFyZ3VtZW50Q291bnQgIT0gYXJncy5zaXplKCkgLSAxLCAiYXJpdHkg
bWlzbWF0Y2ggaW4gY2FsbF9pbmRpcmVjdCwgZ290ICIsIGFyZ3Muc2l6ZSgpIC0gMSwgIiBhcmd1
bWVudHMsIGV4cGVjdGVkICIsIGFyZ3VtZW50Q291bnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAppbmRleCAz
MjM0MjdmZDhhMGFmMjRjZTI5MzY0ZmU0MDRiMTY3MGE2ODNiNTk3Li45OWFmYTFhYzY3NDNlOTI4
ZmI1NTljOTgyN2FlNDgyMmFmY2IzZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKQEAgLTUzLDYgKzUzLDcg
QEAgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2UoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmPFcKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKICAg
ICAsIG1faW5zdGFuY2UoV1RGTW92ZShpbnN0YW5jZSkpCiAgICAgLCBtX3ZtKCZ2bSkKKyAgICAs
IG1fdGFibGVzKG1faW5zdGFuY2UtPm1vZHVsZSgpLm1vZHVsZUluZm9ybWF0aW9uKCkudGFibGVD
b3VudCgpKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzLT5pbnN0YW5jZSgp
Lm51bUltcG9ydEZ1bmN0aW9ucygpOyArK2kpCiAgICAgICAgIG5ldyAodGhpcy0+aW5zdGFuY2Uo
KS5pbXBvcnRGdW5jdGlvbjxXcml0ZUJhcnJpZXI8SlNPYmplY3Q+PihpKSkgV3JpdGVCYXJyaWVy
PEpTT2JqZWN0PigpOwpAQCAtODUsNyArODYsOCBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAg
IHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY29kZUJsb2NrKTsKICAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdCk7CiAgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9tZW1vcnkpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fdGFibGUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5p
bnN0YW5jZSgpLm1vZHVsZSgpLm1vZHVsZUluZm9ybWF0aW9uKCkudGFibGVDb3VudCgpOyArK2kp
CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdGFibGVzW2ldKTsKICAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NhbGxlZSk7CiAgICAgdmlzaXRvci5yZXBvcnRF
eHRyYU1lbW9yeVZpc2l0ZWQodGhpc09iamVjdC0+bV9pbnN0YW5jZS0+ZXh0cmFNZW1vcnlBbGxv
Y2F0ZWQoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPmluc3Rh
bmNlKCkubnVtSW1wb3J0RnVuY3Rpb25zKCk7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKaW5kZXggMjE3ODRhOTM5
ZDhlYjQ3ZThmNTI0NmUyNjYzZWYzNjc3MDQ5MjhlNS4uZTE2MzFmY2JiMTgzM2UwMThlZjdjNGQ2
MTc4MDkxODI0ZDRlNjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKQEAgLTcxLDExICs3MSwxMyBAQCBwdWJsaWM6
CiAgICAgfQogICAgIFdhc206Ok1lbW9yeU1vZGUgbWVtb3J5TW9kZSgpIHsgcmV0dXJuIG1lbW9y
eSgpLT5tZW1vcnkoKS5tb2RlKCk7IH0KIAotICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUo
KSB7IHJldHVybiBtX3RhYmxlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRUYWJsZShWTSYgdm0sIEpT
V2ViQXNzZW1ibHlUYWJsZSogdmFsdWUpIHsKLSAgICAgICAgQVNTRVJUKCF0YWJsZSgpKTsKLSAg
ICAgICAgbV90YWJsZS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKLSAgICAgICAgaW5zdGFuY2UoKS5z
ZXRUYWJsZShtYWtlUmVmKCp0YWJsZSgpLT50YWJsZSgpKSk7CisgICAgSlNXZWJBc3NlbWJseVRh
YmxlKiB0YWJsZSh1bnNpZ25lZCBpKSB7IHJldHVybiBtX3RhYmxlc1tpXS5nZXQoKTsgfQorICAg
IHZvaWQgc2V0VGFibGUoVk0mIHZtLCB1aW50MzJfdCBpbmRleCwgSlNXZWJBc3NlbWJseVRhYmxl
KiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG1fdGFibGVzLnNpemUoKSk7
CisgICAgICAgIEFTU0VSVCghdGFibGUoaW5kZXgpKTsKKyAgICAgICAgbV90YWJsZXNbaW5kZXhd
LnNldCh2bSwgdGhpcywgdmFsdWUpOworICAgICAgICBpbnN0YW5jZSgpLnNldFRhYmxlKGluZGV4
LCBtYWtlUmVmKCp0YWJsZShpbmRleCktPnRhYmxlKCkpKTsKICAgICB9CiAKICAgICBKU1dlYkFz
c2VtYmx5TW9kdWxlKiBtb2R1bGUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZS5nZXQoKTsgfQpA
QCAtOTgsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJs
eUNvZGVCbG9jaz4gbV9jb2RlQmxvY2s7CiAgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0PiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdDsKICAgICBXcml0ZUJhcnJpZXI8SlNX
ZWJBc3NlbWJseU1lbW9yeT4gbV9tZW1vcnk7Ci0gICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1i
bHlUYWJsZT4gbV90YWJsZTsKKyAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlU
YWJsZT4+IG1fdGFibGVzOwogICAgIFdyaXRlQmFycmllcjxXZWJBc3NlbWJseVRvSlNDYWxsZWU+
IG1fY2FsbGVlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDEyYjFjZWYyZGY0Njg3OWEy
YzdmMWIzNzFmNGM1OTM5OWJlYzY2MTMuLjA1MmQwODU4OTY4OTViOWQ5NDJiNDg5MGJlYjM1NjA5
YWI3MzVmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTExMyw4ICsxMTMsNiBAQCB2b2lkIFdl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgSlNP
YmplY3QqIGltcG9ydE9iagogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhiZWZvcmUsICIgIiwg
U3RyaW5nOjpmcm9tVVRGOChpbXBvcnQubW9kdWxlKSwgIjoiLCBTdHJpbmc6OmZyb21VVEY4KGlt
cG9ydC5maWVsZCksICIgIiwgYWZ0ZXIpOwogICAgIH07CiAKLSAgICBib29sIGhhc1RhYmxlSW1w
b3J0ID0gZmFsc2U7Ci0KICAgICBmb3IgKGNvbnN0IGF1dG8mIGltcG9ydCA6IG1vZHVsZUluZm9y
bWF0aW9uLmltcG9ydHMpIHsKICAgICAgICAgLy8gVmFsaWRhdGlvbiBhbmQgbGlua2luZyBvdGhl
ciB0aGFuIFdhc206OkV4dGVybmFsS2luZDo6RnVuY3Rpb24gaXMgYWxyZWFkeSBkb25lIGluIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZS4KICAgICAgICAgLy8gRXZlbnR1YWxseSB3ZSB3aWxsIG1vdmUg
YWxsIHRoZSBsaW5raW5nIGNvZGUgaW4gSlNXZWJBc3NlbWJseUluc3RhbmNlIGhlcmUgYW5kIHJl
bW92ZSB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQuCkBAIC0yNjQsMjAgKzI2MiwxOCBAQCB2b2lkIFdl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgSlNP
YmplY3QqIGltcG9ydE9iagogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5h
bEtpbmQ6OlRhYmxlOiB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghaGFzVGFibGVJbXBv
cnQpOyAvLyBUaGlzIHNob3VsZCBiZSBndWFyYW50ZWVkIGJ5IGEgdmFsaWRhdGlvbiBmYWlsdXJl
LgogICAgICAgICAgICAgLy8gNy4gT3RoZXJ3aXNlIChpIGlzIGEgdGFibGUgaW1wb3J0KToKLSAg
ICAgICAgICAgIGhhc1RhYmxlSW1wb3J0ID0gdHJ1ZTsKICAgICAgICAgICAgIEpTV2ViQXNzZW1i
bHlUYWJsZSogdGFibGUgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlUYWJsZSo+KHZtLCB2
YWx1ZSk7CiAgICAgICAgICAgICAvLyBpLiBJZiB2IGlzIG5vdCBhIFdlYkFzc2VtYmx5LlRhYmxl
IG9iamVjdCwgdGhyb3cgYSBXZWJBc3NlbWJseS5MaW5rRXJyb3IuCiAgICAgICAgICAgICBpZiAo
IXRhYmxlKQogICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3Nl
bWJseUxpbmtFcnJvcihleGVjLCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiVGFibGUg
aW1wb3J0IiwgImlzIG5vdCBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5UYWJsZSIpKSk7CiAK
LSAgICAgICAgICAgIHVpbnQzMl90IGV4cGVjdGVkSW5pdGlhbCA9IG1vZHVsZUluZm9ybWF0aW9u
LnRhYmxlSW5mb3JtYXRpb24uaW5pdGlhbCgpOworICAgICAgICAgICAgdWludDMyX3QgZXhwZWN0
ZWRJbml0aWFsID0gbW9kdWxlSW5mb3JtYXRpb24udGFibGVzW2ltcG9ydC5raW5kSW5kZXhdLmlu
aXRpYWwoKTsKICAgICAgICAgICAgIHVpbnQzMl90IGFjdHVhbEluaXRpYWwgPSB0YWJsZS0+bGVu
Z3RoKCk7CiAgICAgICAgICAgICBpZiAoYWN0dWFsSW5pdGlhbCA8IGV4cGVjdGVkSW5pdGlhbCkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5r
RXJyb3IoZXhlYywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgIlRhYmxlIGltcG9ydCIs
ICJwcm92aWRlZCBhbiAnaW5pdGlhbCcgdGhhdCBpcyB0b28gc21hbGwiKSkpOwogCi0gICAgICAg
ICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGV4cGVjdGVkTWF4aW11bSA9IG1vZHVsZUluZm9y
bWF0aW9uLnRhYmxlSW5mb3JtYXRpb24ubWF4aW11bSgpKSB7CisgICAgICAgICAgICBpZiAoT3B0
aW9uYWw8dWludDMyX3Q+IGV4cGVjdGVkTWF4aW11bSA9IG1vZHVsZUluZm9ybWF0aW9uLnRhYmxl
c1tpbXBvcnQua2luZEluZGV4XS5tYXhpbXVtKCkpIHsKICAgICAgICAgICAgICAgICBPcHRpb25h
bDx1aW50MzJfdD4gYWN0dWFsTWF4aW11bSA9IHRhYmxlLT5tYXhpbXVtKCk7CiAgICAgICAgICAg
ICAgICAgaWYgKCFhY3R1YWxNYXhpbXVtKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhj
ZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9ydEZhaWxN
ZXNzYWdlKGltcG9ydCwgIlRhYmxlIGltcG9ydCIsICJkb2VzIG5vdCBoYXZlIGEgJ21heGltdW0n
IGJ1dCB0aGUgbW9kdWxlIHJlcXVpcmVzIHRoYXQgaXQgZG9lcyIpKSk7CkBAIC0yODUsMTQgKzI4
MSwxNCBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9iagogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9y
dEZhaWxNZXNzYWdlKGltcG9ydCwgIkltcG9ydGVkIFRhYmxlIiwgIidtYXhpbXVtJyBpcyBsYXJn
ZXIgdGhhbiB0aGUgbW9kdWxlJ3MgZXhwZWN0ZWQgJ21heGltdW0nIikpKTsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgYXV0byBleHBlY3RlZFR5cGUgPSBtb2R1bGVJbmZvcm1hdGlvbi50
YWJsZUluZm9ybWF0aW9uLnR5cGUoKTsKKyAgICAgICAgICAgIGF1dG8gZXhwZWN0ZWRUeXBlID0g
bW9kdWxlSW5mb3JtYXRpb24udGFibGVzW2ltcG9ydC5raW5kSW5kZXhdLnR5cGUoKTsKICAgICAg
ICAgICAgIGF1dG8gYWN0dWFsVHlwZSA9IHRhYmxlLT50YWJsZSgpLT50eXBlKCk7CiAgICAgICAg
ICAgICBpZiAoZXhwZWN0ZWRUeXBlICE9IGFjdHVhbFR5cGUpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBpbXBv
cnRGYWlsTWVzc2FnZShpbXBvcnQsICJUYWJsZSBpbXBvcnQiLCAicHJvdmlkZWQgYSAndHlwZScg
dGhhdCBpcyB3cm9uZyIpKSk7CiAKICAgICAgICAgICAgIC8vIGlpLiBBcHBlbmQgdiB0byB0YWJs
ZXMuCiAgICAgICAgICAgICAvLyBpaWkuIEFwcGVuZCB2LltbVGFibGVdXSB0byBpbXBvcnRzLgot
ICAgICAgICAgICAgbV9pbnN0YW5jZS0+c2V0VGFibGUodm0sIHRhYmxlKTsKKyAgICAgICAgICAg
IG1faW5zdGFuY2UtPnNldFRhYmxlKHZtLCBpbXBvcnQua2luZEluZGV4LCB0YWJsZSk7CiAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTMwMiwxNiArMjk4LDE2IEBAIHZvaWQgV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBKU09iamVjdCogaW1w
b3J0T2JqCiAgICAgICAgIH0KICAgICB9CiAKLSAgICB7Ci0gICAgICAgIGlmICghIW1vZHVsZUlu
Zm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24gJiYgbW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZv
cm1hdGlvbi5pc0ltcG9ydCgpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1vZHVs
ZUluZm9ybWF0aW9uLnRhYmxlQ291bnQoKTsgKytpKSB7CisgICAgICAgIGlmIChtb2R1bGVJbmZv
cm1hdGlvbi50YWJsZXNbaV0uaXNJbXBvcnQoKSkgewogICAgICAgICAgICAgLy8gV2Ugc2hvdWxk
IGVpdGhlciBoYXZlIGEgVGFibGUgaW1wb3J0IG9yIHdlIHNob3VsZCBoYXZlIHRocm93biBhbiBl
eGNlcHRpb24uCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChoYXNUYWJsZUltcG9ydCk7Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2luc3RhbmNlLT50YWJsZShpKSk7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoISFtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0aW9uICYm
ICFoYXNUYWJsZUltcG9ydCkgewotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1vZHVsZUlu
Zm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaXNJbXBvcnQoKSk7CisgICAgICAgIGlmICghbV9p
bnN0YW5jZS0+dGFibGUoaSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtb2R1bGVJ
bmZvcm1hdGlvbi50YWJsZXNbaV0uaXNJbXBvcnQoKSk7CiAgICAgICAgICAgICAvLyBXZSBjcmVh
dGUgYSBUYWJsZSB3aGVuIGl0J3MgYSBUYWJsZSBkZWZpbml0aW9uLgotICAgICAgICAgICAgUmVm
UHRyPFdhc206OlRhYmxlPiB3YXNtVGFibGUgPSBXYXNtOjpUYWJsZTo6dHJ5Q3JlYXRlKG1vZHVs
ZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaW5pdGlhbCgpLCBtb2R1bGVJbmZvcm1hdGlv
bi50YWJsZUluZm9ybWF0aW9uLm1heGltdW0oKSwgbW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZv
cm1hdGlvbi50eXBlKCkpOworICAgICAgICAgICAgUmVmUHRyPFdhc206OlRhYmxlPiB3YXNtVGFi
bGUgPSBXYXNtOjpUYWJsZTo6dHJ5Q3JlYXRlKG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlc1tpXS5p
bml0aWFsKCksIG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlc1tpXS5tYXhpbXVtKCksIG1vZHVsZUlu
Zm9ybWF0aW9uLnRhYmxlc1tpXS50eXBlKCkpOwogICAgICAgICAgICAgaWYgKCF3YXNtVGFibGUp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlu
a0Vycm9yKGV4ZWMsIHZtLCAiY291bGRuJ3QgY3JlYXRlIFRhYmxlIikpOwogICAgICAgICAgICAg
SlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IEpTV2ViQXNzZW1ibHlUYWJsZTo6Y3JlYXRlKGV4
ZWMsIHZtLCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5VGFibGVTdHJ1Y3R1cmUoKSwgd2FzbVRh
YmxlLnJlbGVhc2VOb25OdWxsKCkpOwpAQCAtMzE5LDcgKzMxNSw3IEBAIHZvaWQgV2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBKU09iamVjdCog
aW1wb3J0T2JqCiAgICAgICAgICAgICAvLyBJZiBpdCdzIGRlZmluZWQgdG8gYmUgdG9vIGxhcmdl
LCB3ZSBzaG91bGQgaGF2ZSB0aHJvd24gYSB2YWxpZGF0aW9uIGVycm9yLgogICAgICAgICAgICAg
c2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICAgICAgICAgIEFTU0VSVCh0YWJsZSk7Ci0g
ICAgICAgICAgICBtX2luc3RhbmNlLT5zZXRUYWJsZSh2bSwgdGFibGUpOworICAgICAgICAgICAg
bV9pbnN0YW5jZS0+c2V0VGFibGUodm0sIGksIHRhYmxlKTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zOTcsMTAg
KzM5Myw4IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlLCBKU09iamVjdCogaW1wb3J0T2JqCiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OlRhYmxlOiB7CiAgICAgICAgICAgICAvLyBUaGlzIHNob3Vs
ZCBiZSBndWFyYW50ZWVkIGJ5IG1vZHVsZSB2ZXJpZmljYXRpb24uCi0gICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChtX2luc3RhbmNlLT50YWJsZSgpKTsgCi0gICAgICAgICAgICBBU1NFUlQoZXhw
LmtpbmRJbmRleCA9PSAwKTsKLQotICAgICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9IG1faW5zdGFu
Y2UtPnRhYmxlKCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2luc3RhbmNlLT50YWJs
ZShleHAua2luZEluZGV4KSk7CisgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gbV9pbnN0YW5j
ZS0+dGFibGUoZXhwLmtpbmRJbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIFdhc206OkV4dGVybmFsS2luZDo6TWVtb3J5OiB7CkBAIC00ODYsNyArNDgw
LDYgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoRXhlY1N0YXRl
KiBleGVjKQogICAgIFdhc206Ok1vZHVsZSYgbW9kdWxlID0gbV9pbnN0YW5jZS0+aW5zdGFuY2Uo
KS5tb2R1bGUoKTsKICAgICBXYXNtOjpDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1faW5zdGFuY2Ut
Pmluc3RhbmNlKCkuY29kZUJsb2NrKCk7CiAgICAgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRp
b24mIG1vZHVsZUluZm9ybWF0aW9uID0gbW9kdWxlLm1vZHVsZUluZm9ybWF0aW9uKCk7Ci0gICAg
SlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IG1faW5zdGFuY2UtPnRhYmxlKCk7CiAKICAgICBj
b25zdCBWZWN0b3I8V2FzbTo6U2VnbWVudDo6UHRyPiYgZGF0YSA9IG1vZHVsZUluZm9ybWF0aW9u
LmRhdGE7CiAgICAgCkBAIC00OTgsMTYgKzQ5MSwxNiBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAvLyBBbHNv
LCBpdCBjb3VsZCBiZSB0aGF0IGEgdGFibGUgd2Fzbid0IGltcG9ydGVkLCBvciB0aGF0IHRoZSB0
YWJsZQogICAgICAgICAgICAgLy8gaW1wb3J0ZWQgd2Fzbid0IGNvbXBhdGlibGUuIEhvd2V2ZXIs
IHRob3NlIHNob3VsZCBlcnJvciBvdXQgYmVmb3JlCiAgICAgICAgICAgICAvLyBnZXR0aW5nIGhl
cmUuCi0gICAgICAgICAgICBBU1NFUlQoISF0YWJsZSk7CisgICAgICAgICAgICBBU1NFUlQoISFt
X2luc3RhbmNlLT50YWJsZShlbGVtZW50LnRhYmxlSW5kZXgpKTsKIAogICAgICAgICAgICAgaWYg
KCFlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy5zaXplKCkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgICAgIHVpbnQzMl90IHRhYmxlSW5kZXggPSBlbGVtZW50Lm9mZnNldC5p
c0dsb2JhbEltcG9ydCgpCisgICAgICAgICAgICB1aW50MzJfdCBlbGVtZW50SW5kZXggPSBlbGVt
ZW50Lm9mZnNldC5pc0dsb2JhbEltcG9ydCgpCiAgICAgICAgICAgICAgICAgPyBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4obV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5sb2FkSTMyR2xvYmFsKGVsZW1lbnQu
b2Zmc2V0Lmdsb2JhbEltcG9ydEluZGV4KCkpKQogICAgICAgICAgICAgICAgIDogZWxlbWVudC5v
ZmZzZXQuY29uc3RWYWx1ZSgpOwogCi0gICAgICAgICAgICBmbihlbGVtZW50LCB0YWJsZUluZGV4
KTsKKyAgICAgICAgICAgIGZuKGVsZW1lbnQsIGVsZW1lbnQudGFibGVJbmRleCwgZWxlbWVudElu
ZGV4KTsKIAogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICBicmVh
azsKQEAgLTUzMSw5ICs1MjQsOSBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpl
dmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfTsKIAogICAgIC8vIFZhbGlkYXRpb24gb2Yg
YWxsIGVsZW1lbnQgcmFuZ2VzIGNvbWVzIGJlZm9yZSBhbGwgVGFibGUgYW5kIE1lbW9yeSBpbml0
aWFsaXphdGlvbi4KLSAgICBmb3JFYWNoRWxlbWVudChbJl0gKGNvbnN0IFdhc206OkVsZW1lbnQm
IGVsZW1lbnQsIHVpbnQzMl90IHRhYmxlSW5kZXgpIHsKLSAgICAgICAgdWludDY0X3QgbGFzdFdy
aXR0ZW5JbmRleCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0YWJsZUluZGV4KSArIHN0YXRpY19j
YXN0PHVpbnQ2NF90PihlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy5zaXplKCkpIC0gMTsKLSAgICAg
ICAgaWYgKFVOTElLRUxZKGxhc3RXcml0dGVuSW5kZXggPj0gdGFibGUtPmxlbmd0aCgpKSkKKyAg
ICBmb3JFYWNoRWxlbWVudChbJl0gKGNvbnN0IFdhc206OkVsZW1lbnQmIGVsZW1lbnQsIHVpbnQz
Ml90IHRhYmxlSW5kZXgsIHVpbnQzMl90IGVsZW1lbnRJbmRleCkgeworICAgICAgICB1aW50NjRf
dCBsYXN0V3JpdHRlbkluZGV4ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVsZW1lbnRJbmRleCkg
KyBzdGF0aWNfY2FzdDx1aW50NjRfdD4oZWxlbWVudC5mdW5jdGlvbkluZGljZXMuc2l6ZSgpKSAt
IDE7CisgICAgICAgIGlmIChVTkxJS0VMWShsYXN0V3JpdHRlbkluZGV4ID49IG1faW5zdGFuY2Ut
PnRhYmxlKHRhYmxlSW5kZXgpLT5sZW5ndGgoKSkpCiAgICAgICAgICAgICBleGNlcHRpb24gPSBK
U1ZhbHVlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5TGlu
a0Vycm9yKGV4ZWMsIHZtLCAiRWxlbWVudCBpcyB0cnlpbmcgdG8gc2V0IGFuIG91dCBvZiBib3Vu
ZHMgdGFibGUgaW5kZXgiX3MpKSk7CiAgICAgfSk7CiAKQEAgLTU1Miw3ICs1NDUsNyBAQCBKU1Zh
bHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgIHJldHVybiBleGNlcHRpb24udmFsdWUoKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2luc3RhbmNlLT5nbG9iYWxPYmplY3Qodm0pOwotICAgIGZvckVhY2hF
bGVtZW50KFsmXSAoY29uc3QgV2FzbTo6RWxlbWVudCYgZWxlbWVudCwgdWludDMyX3QgdGFibGVJ
bmRleCkgeworICAgIGZvckVhY2hFbGVtZW50KFsmXSAoY29uc3QgV2FzbTo6RWxlbWVudCYgZWxl
bWVudCwgdWludDMyX3QgdGFibGVJbmRleCwgdWludDMyX3QgZWxlbWVudEluZGV4KSB7CiAgICAg
ICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy5zaXpl
KCk7ICsraSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZXNzZW50aWFsbHkgbWVhbnMg
d2UncmUgZXhwb3J0aW5nIGFuIGltcG9ydC4KICAgICAgICAgICAgIC8vIFdlIG5lZWQgYSBzdG9y
eSBoZXJlLiBXZSBuZWVkIHRvIGNyZWF0ZSBhIFdlYkFzc2VtYmx5RnVuY3Rpb24KQEAgLTU2OCwx
NCArNTYxLDE0IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgICAgICAgLy8gQmVjYXVzZSBhIFdlYkFzc2Vt
Ymx5V3JhcHBlckZ1bmN0aW9uIGNhbiBuZXZlciB3cmFwIGFub3RoZXIgV2ViQXNzZW1ibHlXcmFw
cGVyRnVuY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvbmx5IHR5cGUgdGhpcyBj
b3VsZCBiZSBpcyBXZWJBc3NlbWJseUZ1bmN0aW9uLgogICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVCh3YXNtRnVuY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICB0YWJsZS0+c2V0
KHRhYmxlSW5kZXgsIHdhc21GdW5jdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgICsrdGFibGVJ
bmRleDsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCkt
PnNldChlbGVtZW50SW5kZXgsIHdhc21GdW5jdGlvbik7CisgICAgICAgICAgICAgICAgICAgICsr
ZWxlbWVudEluZGV4OwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICB0YWJsZS0+c2V0KHRhYmxlSW5kZXgsCisgICAgICAg
ICAgICAgICAgbV9pbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPnNldChlbGVtZW50SW5kZXgs
CiAgICAgICAgICAgICAgICAgICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlv
blN0cnVjdHVyZSgpLCBmdW5jdGlvbkltcG9ydCwgZnVuY3Rpb25JbmRleCwgbV9pbnN0YW5jZS5n
ZXQoKSwgc2lnbmF0dXJlSW5kZXgpKTsKLSAgICAgICAgICAgICAgICArK3RhYmxlSW5kZXg7Cisg
ICAgICAgICAgICAgICAgKytlbGVtZW50SW5kZXg7CiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICB9CiAKQEAgLTU4OSw4ICs1ODIsOCBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBXZWJB
c3NlbWJseUZ1bmN0aW9uKiBmdW5jdGlvbiA9IFdlYkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZSgK
ICAgICAgICAgICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2Vt
Ymx5RnVuY3Rpb25TdHJ1Y3R1cmUoKSwgc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSwgU3RyaW5n
KCksIG1faW5zdGFuY2UuZ2V0KCksIGVtYmVkZGVyRW50cnlwb2ludENhbGxlZSwgZW50cnlwb2lu
dExvYWRMb2NhdGlvbiwgc2lnbmF0dXJlSW5kZXgpOwogCi0gICAgICAgICAgICB0YWJsZS0+c2V0
KHRhYmxlSW5kZXgsIGZ1bmN0aW9uKTsKLSAgICAgICAgICAgICsrdGFibGVJbmRleDsKKyAgICAg
ICAgICAgIG1faW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5zZXQoZWxlbWVudEluZGV4LCBm
dW5jdGlvbik7CisgICAgICAgICAgICArK2VsZW1lbnRJbmRleDsKICAgICAgICAgfQogICAgIH0p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KaW5kZXggNzUyODVkNmZiNzAwOTAx
Y2E1Mjc1ZWEzZmQ3NWJiMThkMzBlNDEzYi4uOTZlOGExZDIwNzcyOTkwMGQzOTUxOGIxMDk2NWU2
YzU3NmQwZjgyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5q
c29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgpAQCAtNjcsMTAg
KzY3LDEwIEBACiAgICAgICAgICJ0ZWVfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAi
c3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzNCwgInJldHVybiI6IFsiYW55Il0sICAgICAgInBhcmFt
ZXRlciI6IFsiYW55Il0sICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAi
bG9jYWxfaW5kZXgiLCAgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAid3JpdGUgYSBsb2NhbCB2
YXJpYWJsZSBvciBwYXJhbWV0ZXIgYW5kIHJldHVybiB0aGUgc2FtZSB2YWx1ZSIgfSwKICAgICAg
ICAgImdldF9nbG9iYWwiOiAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZh
bHVlIjogIDM1LCAicmV0dXJuIjogWyJhbnkiXSwgICAgICAicGFyYW1ldGVyIjogW10sICAgICAg
ICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJnbG9iYWxfaW5kZXgiLCAg
ICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJyZWFkIGEgZ2xvYmFsIHZhcmlhYmxlIiB9LAogICAg
ICAgICAic2V0X2dsb2JhbCI6ICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAi
dmFsdWUiOiAgMzYsICJyZXR1cm4iOiBbXSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFueSJd
LCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImdsb2JhbF9pbmRleCIs
ICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIndyaXRlIGEgZ2xvYmFsIHZhcmlhYmxlIiB9LAot
ICAgICAgICAidGFibGUuZ2V0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAg
ICAidmFsdWUiOiAgMzcsICJyZXR1cm4iOiBbImFueXJlZiJdLCAgICJwYXJhbWV0ZXIiOiBbImkz
MiJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImdldCBhIHRhYmxlIHZhbHVlIiB9LAotICAg
ICAgICAidGFibGUuc2V0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAi
dmFsdWUiOiAgMzgsICJyZXR1cm4iOiBbXSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImkzMiIs
ICJhbnlyZWYiXSwgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInNldCBhIHRhYmxlIHZhbHVlIiB9LAorICAgICAg
ICAidGFibGUuZ2V0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFs
dWUiOiAgMzcsICJyZXR1cm4iOiBbImFueXJlZiJdLCAgICJwYXJhbWV0ZXIiOiBbImkzMiJdLCAg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInRhYmxlX2luZGV4IiwgICAg
InR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogImdldCBhIHRhYmxlIHZhbHVlIiB9LAorICAgICAgICAi
dGFibGUuc2V0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUi
OiAgMzgsICJyZXR1cm4iOiBbXSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImkzMiIsICJhbnly
ZWYiXSwgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInRhYmxlX2luZGV4IiwgICAgInR5
cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogInNldCBhIHRhYmxlIHZhbHVlIiB9LAogICAgICAgICAiY2Fs
bCI6ICAgICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAg
MTYsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAg
ICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2luZGV4IiwgInR5cGUi
OiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0sCi0gICAg
ICAgICJjYWxsX2luZGlyZWN0IjogICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2
YWx1ZSI6ICAxNywgInJldHVybiI6IFsiY2FsbCJdLCAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJd
LCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAg
ICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogInJlc2VydmVkIiwgInR5cGUiOiAidmFy
dWludDEifV0sICAiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIGluZGlyZWN0IHdpdGgg
YW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAorICAgICAgICAiY2FsbF9pbmRpcmVjdCI6ICAgICAg
IHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTcsICJyZXR1cm4iOiBbImNh
bGwiXSwgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlh
dGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsi
bmFtZSI6ICJ0YWJsZV9pbmRleCIsInR5cGUiOiAidmFydWludDMyIn1dLCJkZXNjcmlwdGlvbiI6
ICJjYWxsIGEgZnVuY3Rpb24gaW5kaXJlY3Qgd2l0aCBhbiBleHBlY3RlZCBzaWduYXR1cmUiIH0s
CiAgICAgICAgICJpMzIubG9hZDhfcyI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5Iiwg
ICAgICJ2YWx1ZSI6ICA0NCwgInJldHVybiI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRlciI6IFsi
YWRkciJdLCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAg
ICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUi
OiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKICAg
ICAgICAgImkzMi5sb2FkOF91IjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAg
InZhbHVlIjogIDQ1LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJhZGRy
Il0sICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAg
ICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2
YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAg
ICAiaTMyLmxvYWQxNl9zIjogICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFs
dWUiOiAgNDYsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAg
InR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVp
bnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgyYjI3MjFmZGJh
OTI1MTg5N2U2ZTljYjEzMDU3NzE1ZDc0NjMxOTUuLjE2ZGI4OWQyNjM2NzMwM2U2OWJiNmZiMDg0
MzhmNjAzZDFhNWYzYzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMTktMDYtMTcgIEp1c3RpbiBNaWNoYXVk
ICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNd
IEFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSB0YWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IFNh
YW0gQmFyYXRpLgorCisgICAgICAgICogd2FzbS9CdWlsZGVyLmpzOgorICAgICAgICAqIHdhc20v
anMtYXBpL2NhbGwtaW5kaXJlY3QuanM6CisgICAgICAgIChjb25zdC5vbmVUYWJsZSk6CisgICAg
ICAgIChjb25zdC5tdWx0aVRhYmxlKToKKyAgICAgICAgKG11bHRpVGFibGUpOgorICAgICAgICAo
bXVsdGlUYWJsZS5Qb2x5cGhpYzJJbXBvcnQpOgorICAgICAgICAobXVsdGlUYWJsZS5WaXJ0dWFs
SW1wb3J0KToKKyAgICAgICAgKGNvbnN0Lndhc21Nb2R1bGVXaGljaEltcG9ydEpTKTogRGVsZXRl
ZC4KKyAgICAgICAgKGNvbnN0Lm1ha2VUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgICgpOiBEZWxl
dGVkLgorICAgICAgICAoUG9seXBoaWMySW1wb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKFZpcnR1
YWxJbXBvcnQpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vanMtYXBpL3RhYmxlLmpzOgorICAg
ICAgICAobmV3LldlYkFzc2VtYmx5Lk1vZHVsZSk6CisgICAgICAgIChhc3NlcnQudGhyb3dzKToK
KyAgICAgICAgKGFzc2VydEJhZFRhYmxlSW1wb3J0KToKKyAgICAgICAgKGFzc2VydC50cnV0aHkp
OgorICAgICAgICAoYXNzZXJ0LnRocm93cy5uZXcuV2ViQXNzZW1ibHkuTW9kdWxlLmJ1aWxkZXIu
V2ViQXNzZW1ibHkpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy9hbnlyZWZf
dGFibGUuanM6CisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZV9pbXBvcnQu
anM6CisgICAgICAgIChtYWtlSW1wb3J0KToKKyAgICAgICAgKHN0cmluZ19hcHBlYXJlZF9oZXJl
LmZ1bGxHQy5hc3NlcnQuZXEuMS5leHBvcnRzLmdldF90YmwubWFrZUltcG9ydCk6CisgICAgICAg
IChzdHJpbmdfYXBwZWFyZWRfaGVyZS5mdWxsR0MuYXNzZXJ0LmVxLjEuZXhwb3J0cy5nZXRfdGJs
KToKKyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMvbXVsdGl0YWJsZS5qczogQWRkZWQuCisgICAg
ICAgIChhc3NlcnQudGhyb3dzLjEuZXhwb3J0cy5zZXRfdGJsMCk6CisgICAgICAgIChhc3NlcnQu
dGhyb3dzKToKKyAgICAgICAgKGFzc2VydC5lcSk6CisgICAgICAgICogd2FzbS9yZWZlcmVuY2Vz
L3ZhbGlkYXRpb24uanM6CisgICAgICAgIChhc3NlcnQudGhyb3dzLm5ldy5XZWJBc3NlbWJseS5N
b2R1bGUuYmluKToKKyAgICAgICAgKGFzc2VydC50aHJvd3MpOgorICAgICAgICAqIHdhc20vc3Bl
Yy10ZXN0cy9pbXBvcnRzLndhc3QuanM6CisgICAgICAgICogd2FzbS93YXNtLmpzb246CisKKyAg
ICAgICAgKiB3YXNtL0J1aWxkZXIuanM6CisgICAgICAgICogd2FzbS9qcy1hcGkvY2FsbC1pbmRp
cmVjdC5qczoKKyAgICAgICAgKGNvbnN0Lm9uZVRhYmxlKToKKyAgICAgICAgKGNvbnN0Lm11bHRp
VGFibGUpOgorICAgICAgICAobXVsdGlUYWJsZSk6CisgICAgICAgIChtdWx0aVRhYmxlLlBvbHlw
aGljMkltcG9ydCk6CisgICAgICAgIChtdWx0aVRhYmxlLlZpcnR1YWxJbXBvcnQpOgorICAgICAg
ICAoY29uc3Qud2FzbU1vZHVsZVdoaWNoSW1wb3J0SlMpOiBEZWxldGVkLgorICAgICAgICAoY29u
c3QubWFrZVRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChQ
b2x5cGhpYzJJbXBvcnQpOiBEZWxldGVkLgorICAgICAgICAoVmlydHVhbEltcG9ydCk6IERlbGV0
ZWQuCisgICAgICAgICogd2FzbS9qcy1hcGkvdGFibGUuanM6CisgICAgICAgIChuZXcuV2ViQXNz
ZW1ibHkuTW9kdWxlKToKKyAgICAgICAgKGFzc2VydC50aHJvd3MpOgorICAgICAgICAoYXNzZXJ0
QmFkVGFibGVJbXBvcnQpOgorICAgICAgICAoYXNzZXJ0LnRydXRoeSk6CisgICAgICAgIChhc3Nl
cnQudGhyb3dzLm5ldy5XZWJBc3NlbWJseS5Nb2R1bGUuYnVpbGRlci5XZWJBc3NlbWJseSk6IERl
bGV0ZWQuCisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZS5qczoKKyAgICAg
ICAgKiB3YXNtL3JlZmVyZW5jZXMvYW55cmVmX3RhYmxlX2ltcG9ydC5qczoKKyAgICAgICAgKG1h
a2VJbXBvcnQpOgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUuZnVsbEdDLmFzc2VydC5l
cS4xLmV4cG9ydHMuZ2V0X3RibC5tYWtlSW1wb3J0KToKKyAgICAgICAgKHN0cmluZ19hcHBlYXJl
ZF9oZXJlLmZ1bGxHQy5hc3NlcnQuZXEuMS5leHBvcnRzLmdldF90YmwpOgorICAgICAgICAqIHdh
c20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qczoKKyAgICAgICAgKEdldExvY2FsLjAuSTMyQ29uc3Qu
MC5UYWJsZVNldC5FbmQuRW5kLldlYkFzc2VtYmx5LmZ1bik6IERlbGV0ZWQuCisgICAgICAgIChH
ZXRMb2NhbC4wLkkzMkNvbnN0LjAuVGFibGVTZXQuRW5kLkVuZC5XZWJBc3NlbWJseS5hc3NlcnQu
dGhyb3dzKTogRGVsZXRlZC4KKyAgICAgICAgKEdldExvY2FsLjAuSTMyQ29uc3QuMC5UYWJsZVNl
dC5FbmQuRW5kLldlYkFzc2VtYmx5KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL3JlZmVyZW5j
ZXMvbXVsdGl0YWJsZS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQudGhyb3dzLjEuZXhwb3J0
cy5zZXRfdGJsMCk6CisgICAgICAgIChhc3NlcnQudGhyb3dzKToKKyAgICAgICAgKGFzc2VydC5l
cSk6CisgICAgICAgIChzdHJpbmdfYXBwZWFyZWRfaGVyZS50YWJsZUluc2FuaXR5KToKKyAgICAg
ICAgKEkzMkNvbnN0LjAuR2V0TG9jYWwuMC5UYWJsZVNldC4xLkVuZC5FbmQuV2ViQXNzZW1ibHku
KToKKyAgICAgICAgKEkzMkNvbnN0LjAuR2V0TG9jYWwuMC5UYWJsZVNldC4xLkVuZC5FbmQuV2Vi
QXNzZW1ibHkpOgorICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy92YWxpZGF0aW9uLmpzOgorICAg
ICAgICAoYXNzZXJ0LnRocm93cy5uZXcuV2ViQXNzZW1ibHkuTW9kdWxlLmJpbik6CisgICAgICAg
IChhc3NlcnQudGhyb3dzKToKKyAgICAgICAgKiB3YXNtL3NwZWMtdGVzdHMvaW1wb3J0cy53YXN0
LmpzOgorICAgICAgICAqIHdhc20vd2FzbS5qc29uOgorCiAyMDE5LTA2LTE3ICBKdXN0aW4gTWlj
aGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAgICBWYWxpZGF0ZSB0aGF0
IHRhYmxlIGVsZW1lbnQgdHlwZSBpcyBmdW5jcmVmIGlmIHVzaW5nIGFuIGVsZW1lbnQgc2VjdGlv
bgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMgYi9KU1Rlc3RzL3dhc20vQnVp
bGRlci5qcwppbmRleCA2NWYxZjQ3N2E5OGI4NjIwZmNjZDJhYThmOGMxMTA5ZTBhZjY3ODY2Li45
NzYzNzdmN2IzZDkxM2Q0YjhkYjFmOGE3NTk2ZTczZDI3OTFjYjQ3IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3dhc20vQnVpbGRlci5qcworKysgYi9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcwpAQCAtMzA2
LDYgKzMwNiw3IEBAIGNvbnN0IF9jaGVja0ltbXMgPSAob3AsIGltbXMsIGV4cGVjdGVkSW1tcywg
cmV0KSA9PiB7CiAgICAgICAgIGNhc2UgInRhcmdldF9jb3VudCI6IGJyZWFrOyAvLyBpbXByb3Zl
IGNoZWNraW5nIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEK
ICAgICAgICAgY2FzZSAidGFyZ2V0X3RhYmxlIjogYnJlYWs7IC8vIGltcHJvdmUgY2hlY2tpbmcg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQogICAgICAgICBj
YXNlICJyZXNlcnZlZCI6IGJyZWFrOyAvLyBpbXByb3ZlIGNoZWNraW5nIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKKyAgICAgICAgY2FzZSAidGFibGVfaW5k
ZXgiOiBicmVhazsgLy8gaW1wcm92ZSBjaGVja2luZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCiAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihg
SW1wbGVtZW50YXRpb24gcHJvYmxlbTogdW5oYW5kbGVkIGltbWVkaWF0ZSAiJHtleHBlY3QubmFt
ZX0iIG9uICIke29wfSJgKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
d2FzbS9qcy1hcGkvY2FsbC1pbmRpcmVjdC5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvY2FsbC1p
bmRpcmVjdC5qcwppbmRleCAwMWNkNDJmOWI3OWE5MjFiMWJiYWE1YWI1NzZmYzBkOTEwNDM4MzI4
Li4yZmFmY2MxOTJiMTIwNTM5YzdhYTQ1NTFkNDQzZGFhZTdiZDgxOTcyIDEwMDY0NAotLS0gYS9K
U1Rlc3RzL3dhc20vanMtYXBpL2NhbGwtaW5kaXJlY3QuanMKKysrIGIvSlNUZXN0cy93YXNtL2pz
LWFwaS9jYWxsLWluZGlyZWN0LmpzCkBAIC0xLDcgKzEsNyBAQAogaW1wb3J0ICogYXMgYXNzZXJ0
IGZyb20gJy4uL2Fzc2VydC5qcyc7CiBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpz
JzsKIAotY29uc3Qgd2FzbU1vZHVsZVdoaWNoSW1wb3J0SlMgPSAoKSA9PiB7Citjb25zdCBvbmVU
YWJsZSA9ICgpID0+IHsKICAgICBjb25zdCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCiAgICAg
ICAgIC5UeXBlKCkuRW5kKCkKICAgICAgICAgLkltcG9ydCgpCkBAIC0zMSw2ICszMSwzOSBAQCBj
b25zdCB3YXNtTW9kdWxlV2hpY2hJbXBvcnRKUyA9ICgpID0+IHsKICAgICByZXR1cm4gbW9kdWxl
OwogfTsKIAorY29uc3QgbXVsdGlUYWJsZSA9ICgpID0+IHsKKyAgICBjb25zdCBidWlsZGVyID0g
KG5ldyBCdWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkltcG9ydCgp
CisgICAgICAgICAgICAuRnVuY3Rpb24oImltcCIsICJmdW5jIiwgeyBwYXJhbXM6IFsiaTMyIl0g
fSkKKyAgICAgICAgICAgIC5UYWJsZSgiaW1wIiwgInRhYmxlMCIsIHsgaW5pdGlhbDogMCwgbWF4
aW11bTogMCwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAgICAgIC5UYWJsZSgiaW1wIiwg
InRhYmxlIiwgeyBpbml0aWFsOiAxLCBtYXhpbXVtOiAxLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQor
ICAgICAgICAuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLkV4cG9y
dCgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImNoYW5nZUNvdW50ZXIiKQorICAgICAgICAgICAg
LkZ1bmN0aW9uKCJjYWxsRnVuYyIpCisgICAgICAgIC5FbmQoKQorICAgICAgICAuQ29kZSgpCisg
ICAgICAgICAgICAuRnVuY3Rpb24oImNoYW5nZUNvdW50ZXIiLCB7IHBhcmFtczogWyJpMzIiLCAi
aTMyIl0gfSkKKyAgICAgICAgICAgICAgICAuSTMyQ29uc3QoNDIpCisgICAgICAgICAgICAgICAg
LkdldExvY2FsKDApCisgICAgICAgICAgICAgICAgLkkzMkFkZCgpCisgICAgICAgICAgICAgICAg
LkdldExvY2FsKDEpCisgICAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgwLCAxKSAvLyBDYWxs
cyB0YWJsZVswXShwYXJhbVswXSArIDQyKS4KKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAg
ICAgLkZ1bmN0aW9uKCJjYWxsRnVuYyIsIHsgcGFyYW1zOiBbImkzMiJdIH0pCisgICAgICAgICAg
ICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgICAgLkNhbGwoMCkgLy8gQ2FsbHMgZnVu
YyhwYXJhbVswXSArIDQyKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgIC5FbmQoKTsKKyAg
ICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCk7CisgICAgY29uc3QgbW9k
dWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pOworICAgIHJldHVybiBtb2R1bGU7Cit9
OworCitmb3IgKGNvbnN0IHdhc21Nb2R1bGVXaGljaEltcG9ydEpTIG9mIFtvbmVUYWJsZSwgbXVs
dGlUYWJsZV0pIHsKKwogY29uc3QgbWFrZVRhYmxlID0gKCkgPT4gewogICAgIHJldHVybiBuZXcg
V2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6IDEsIG1heGltdW06IDEsIGVsZW1lbnQ6ICJhbnlm
dW5jIn0pOwogfTsKQEAgLTQwLDcgKzczLDcgQEAgY29uc3QgbWFrZVRhYmxlID0gKCkgPT4gewog
ICAgIGNvbnN0IGNvdW50ZXJTZXR0ZXIgPSB2ID0+IGNvdW50ZXIgPSB2OwogICAgIGNvbnN0IHRh
YmxlID0gbWFrZVRhYmxlKCk7CiAgICAgY29uc3QgbW9kdWxlID0gd2FzbU1vZHVsZVdoaWNoSW1w
b3J0SlMoKTsKLSAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSht
b2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJTZXR0ZXIsIHRhYmxlfSB9KTsKKyAgICBjb25z
dCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1
bmM6IGNvdW50ZXJTZXR0ZXIsIHRhYmxlLCB0YWJsZTA6IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7
aW5pdGlhbDogMCwgbWF4aW11bTogMCwgZWxlbWVudDogImFueWZ1bmMifSkgfSB9KTsKICAgICB0
YWJsZS5zZXQoMCwgaW5zdGFuY2UuZXhwb3J0cy5jYWxsRnVuYyk7CiAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCA0MDk2OyArK2kpIHsKICAgICAgICAgLy8gSW52b2tlIHRoaXMgYSBidW5jaCBvZiB0
aW1lcyB0byBtYWtlIHN1cmUgdGhlIElDIGluIHRoZSB3YXNtIC0+IEpTIHN0dWIgd29ya3MgY29y
cmVjdGx5LgpAQCAtNTcsMTEgKzkwLDExIEBAIGNvbnN0IG1ha2VUYWJsZSA9ICgpID0+IHsKICAg
ICBjb25zdCBtb2R1bGUgPSB3YXNtTW9kdWxlV2hpY2hJbXBvcnRKUygpOwogCiAgICAgY29uc3Qg
dGFibGVBID0gbWFrZVRhYmxlKCk7Ci0gICAgY29uc3QgaW5zdGFuY2VBID0gbmV3IFdlYkFzc2Vt
Ymx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291bnRlckFTZXR0ZXIsIHRhYmxl
OiB0YWJsZUF9IH0pOworICAgIGNvbnN0IGluc3RhbmNlQSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0
YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJBU2V0dGVyLCB0YWJsZTogdGFibGVB
LCB0YWJsZTA6IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDogMCwgbWF4aW11bTogMCwg
ZWxlbWVudDogImFueWZ1bmMifSkgfSB9KTsKICAgICB0YWJsZUEuc2V0KDAsIGluc3RhbmNlQS5l
eHBvcnRzLmNhbGxGdW5jKTsKIAogICAgIGNvbnN0IHRhYmxlQiA9IG1ha2VUYWJsZSgpOwotICAg
IGNvbnN0IGluc3RhbmNlQiA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1w
OiB7IGZ1bmM6IGNvdW50ZXJCU2V0dGVyLCB0YWJsZTogdGFibGVCfSB9KTsKKyAgICBjb25zdCBp
bnN0YW5jZUIgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDogeyBmdW5j
OiBjb3VudGVyQlNldHRlciwgdGFibGU6IHRhYmxlQiwgdGFibGUwOiBuZXcgV2ViQXNzZW1ibHku
VGFibGUoe2luaXRpYWw6IDAsIG1heGltdW06IDAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pIH0gfSk7
CiAgICAgdGFibGVCLnNldCgwLCBpbnN0YW5jZUIuZXhwb3J0cy5jYWxsRnVuYyk7CiAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAyMDQ4OyArK2kpIHsKICAgICAgICAgaW5zdGFuY2VBLmV4cG9ydHMu
Y2hhbmdlQ291bnRlcihpLCAwKTsKQEAgLTkzLDcgKzEyNiw3IEBAIGNvbnN0IG1ha2VUYWJsZSA9
ICgpID0+IHsKICAgICBsZXQgaW5zdGFuY2VzID0gW107CiAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBudW07ICsraSkgewogICAgICAgICBsZXQgdGFibGUgPSBtYWtlVGFibGUoKTsKLSAgICAgICAg
aW5zdGFuY2VzW2ldID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsg
ZnVuYzogY291bnRlclNldHRlcnNbaV0sIHRhYmxlfSB9KTsKKyAgICAgICAgaW5zdGFuY2VzW2ld
ID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291bnRl
clNldHRlcnNbaV0sIHRhYmxlLCB0YWJsZTA6IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlh
bDogMCwgbWF4aW11bTogMCwgZWxlbWVudDogImFueWZ1bmMifSkgfSB9KTsKICAgICAgICAgdGFi
bGUuc2V0KDAsIGluc3RhbmNlc1tpXS5leHBvcnRzLmNhbGxGdW5jKTsKICAgICB9CiAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAyMDQ4OyArK2kpIHsKQEAgLTEwNCwzICsxMzcsNSBAQCBjb25zdCBt
YWtlVGFibGUgPSAoKSA9PiB7CiAgICAgICAgIH0KICAgICB9CiB9KSgpOworCit9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL3RhYmxlLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90
YWJsZS5qcwppbmRleCBiYmNhODllYzM0ZjcxOTEyMDg0ZjYzMDlhYWMyZDY0NTUwYTQzYmQxLi4x
Yjg0NDQzMWNlNjVmOTFjNDM3NTMyNWQ1Y2FlNTNkYzhiYzI0M2M3IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3dhc20vanMtYXBpL3RhYmxlLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGFibGUu
anMKQEAgLTEzLDcgKzEzLDcgQEAgaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5q
cyc7CiAgICAgICAgIC5FbmQoKQogICAgICAgICAuQ29kZSgpCiAgICAgICAgIC5FbmQoKTsKLSAg
ICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJB
c3NlbWJseSgpLmdldCgpKSwgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLCAiV2ViQXNzZW1ibHku
TW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAzNDogQ2Fubm90IGhhdmUgbW9yZSB0aGFuIG9u
ZSBUYWJsZSBmb3Igbm93Iik7CisgICAgbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldl
YkFzc2VtYmx5KCkuZ2V0KCkpCiB9CiAKIHsKQEAgLTM4LDcgKzM4LDcgQEAgaW1wb3J0ICogYXMg
YXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CiAgICAgICAgIC5FbmQoKQogICAgICAgICAuQ29k
ZSgpCiAgICAgICAgIC5FbmQoKTsKLSAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3Nl
bWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpKSwgV2ViQXNzZW1ibHkuQ29t
cGlsZUVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAxNzog
VGFibGUgY291bnQgb2YgMiBpcyBpbnZhbGlkLCBhdCBtb3N0IDEgaXMgYWxsb3dlZCBmb3Igbm93
IChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHko
KS5nZXQoKSknKSIpOworICAgIG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3Nl
bWJseSgpLmdldCgpKQogfQogCiB7CkBAIC03Myw3ICs3MywyOCBAQCBpbXBvcnQgKiBhcyBhc3Nl
cnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKICAgICAgICAgICAgICAgICAuQ2FsbEluZGlyZWN0KDAs
IDEpCiAgICAgICAgICAgICAuRW5kKCkKICAgICAgICAgLkVuZCgpOwotICAgIGFzc2VydC50aHJv
d3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0
KCkpLCBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24n
dCBwYXJzZSBhdCBieXRlIDY6IGNhbGxfaW5kaXJlY3QncyAncmVzZXJ2ZWQnIHZhcnVpbnQxIG11
c3QgYmUgMHgwLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNz
ZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSknKSIpOworICAgIGFzc2Vy
dC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5
KCkuZ2V0KCkpLCBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUg
ZG9lc24ndCBwYXJzZSBhdCBieXRlIDY6IGNhbGxfaW5kaXJlY3QncyB0YWJsZSBpbmRleCAxIGlu
dmFsaWQsIGxpbWl0IGlzIDEsIGluIGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25l
dyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpKScpIik7Cit9
CisKK3sKKyAgICBjb25zdCBidWlsZGVyID0gbmV3IEJ1aWxkZXIoKQorICAgICAgICAuVHlwZSgp
LkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5UYWJsZSgpCisgICAg
ICAgICAgICAuVGFibGUoe2luaXRpYWw6MjAsIGVsZW1lbnQ6ImFueWZ1bmMifSkKKyAgICAgICAg
ICAgIC5UYWJsZSh7aW5pdGlhbDoyMCwgZWxlbWVudDoiYW55ZnVuYyJ9KQorICAgICAgICAuRW5k
KCkKKyAgICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZvbyIpCisgICAg
ICAgIC5FbmQoKQorICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZvbyIs
IHtwYXJhbXM6IFsiaTMyIl19KQorICAgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAg
ICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMCwg
MSkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAuRW5kKCk7CisgICAgbmV3IFdlYkFzc2Vt
Ymx5Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCkpCiB9CiAKIHsKQEAgLTE4Niw3
ICsyMDcsNyBAQCBmdW5jdGlvbiBhc3NlcnRCYWRUYWJsZUltcG9ydCh0YWJsZURlc2NyaXB0aW9u
LCBtZXNzYWdlKSB7CiAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCiAgICAgICAgIC5Db2RlKCkK
ICAgICAgICAgLkVuZCgpOwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5
Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCkpLCBXZWJBc3NlbWJseS5Db21waWxl
RXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDM5OiBDYW5u
b3QgaGF2ZSBtb3JlIHRoYW4gb25lIFRhYmxlIGZvciBub3ciKTsKKyAgICBuZXcgV2ViQXNzZW1i
bHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSkKIH0KIAogCkBAIC0zMjAsMyAr
MzQxLDI2IEBAIGFzc2VydC50aHJvd3MoKCkgPT4gV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBl
Lmdyb3codW5kZWZpbmVkKSwgVHlwZUVycm9yLCBgZXhwCiAgICAgYXNzZXJ0LmVxKGluc3RhbmNl
LmV4cG9ydHMudGFibGUubGVuZ3RoLCAyMCk7CiAgICAgYXNzZXJ0LnRydXRoeShpbnN0YW5jZS5l
eHBvcnRzLnRhYmxlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuVGFibGUpOwogfQorCit7CisgICAg
Y29uc3QgYnVpbGRlciA9IG5ldyBCdWlsZGVyKCkKKyAgICAgICAgLlR5cGUoKS5FbmQoKQorICAg
ICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgLlRh
YmxlKHtpbml0aWFsOiAwLCBtYXhpbXVtOiAxLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAg
ICAgICAgLlRhYmxlKHtpbml0aWFsOiAyMCwgbWF4aW11bTogMzAsIGVsZW1lbnQ6ICJhbnlmdW5j
In0pCisgICAgICAgIC5FbmQoKQorICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAgIC5UYWJs
ZSgidGFibGUwIiwgMCkKKyAgICAgICAgICAgIC5UYWJsZSgidGFibGUiLCAxKQorICAgICAgICAg
ICAgLlRhYmxlKCJ0YWJsZTIiLCAxKQorICAgICAgICAuRW5kKCkKKyAgICAgICAgLkNvZGUoKS5F
bmQoKTsKKworICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRl
ci5XZWJBc3NlbWJseSgpLmdldCgpKTsKKyAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJBc3Nl
bWJseS5JbnN0YW5jZShtb2R1bGUpOworICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLnRh
YmxlLCBpbnN0YW5jZS5leHBvcnRzLnRhYmxlMik7CisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4
cG9ydHMudGFibGUubGVuZ3RoLCAyMCk7CisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMu
dGFibGUwLmxlbmd0aCwgMCk7CisgICAgYXNzZXJ0LnRydXRoeShpbnN0YW5jZS5leHBvcnRzLnRh
YmxlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuVGFibGUpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy93YXNtL3JlZmVyZW5jZXMvYW55cmVmX3RhYmxlLmpzIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5j
ZXMvYW55cmVmX3RhYmxlLmpzCmluZGV4IGIyYmNhZWNiZWJkZmQzNjgzYjMxNzhkNDJlNTg1MDYw
YmI5OWJlMjAuLmJjOTVmNjdkYTE2ZmU2NTJjOTZjNjY5MjY1YzY2NDQ4ODZlZTg2NzQgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZS5qcworKysgYi9KU1Rl
c3RzL3dhc20vcmVmZXJlbmNlcy9hbnlyZWZfdGFibGUuanMKQEAgLTE4LDEyICsxOCwxMiBAQCBj
b25zdCAkMSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxl
KChuZXcgQnVpbGRlcigpKQogICAgICAgICAuRnVuY3Rpb24oInNldF90YmwiLCB7IHBhcmFtczog
WyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkKICAgICAgICAgICAuSTMyQ29uc3QoMCkKICAgICAg
ICAgICAuR2V0TG9jYWwoMCkKLSAgICAgICAgICAuVGFibGVTZXQoKQorICAgICAgICAgIC5UYWJs
ZVNldCgwKQogICAgICAgICAuRW5kKCkKIAogICAgICAgICAuRnVuY3Rpb24oImdldF90YmwiLCB7
IHBhcmFtczogW10sIHJldDogImFueXJlZiIgfSkKICAgICAgICAgICAuSTMyQ29uc3QoMCkKLSAg
ICAgICAgICAuVGFibGVHZXQoKQorICAgICAgICAgIC5UYWJsZUdldCgwKQogICAgICAgICAuRW5k
KCkKIAogICAgICAgICAuRnVuY3Rpb24oInRibF9pc19udWxsIiwgeyBwYXJhbXM6IFtdLCByZXQ6
ICJpMzIiIH0pCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9hbnlyZWZfdGFi
bGVfaW1wb3J0LmpzIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvYW55cmVmX3RhYmxlX2ltcG9y
dC5qcwppbmRleCA4OGNhYjdjMjNmZTdiNDBhZDY5ZWMyMzZkNGJiNjlkMjM1MThiNjNlLi4xNzQy
YmIyMDhjMGE4MjQyNDI3MGVkNWI5MGZmMGE2YjQwODc1MzAxIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L3dhc20vcmVmZXJlbmNlcy9hbnlyZWZfdGFibGVfaW1wb3J0LmpzCisrKyBiL0pTVGVzdHMvd2Fz
bS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZV9pbXBvcnQuanMKQEAgLTIyLDEyICsyMiwxMiBAQCBp
bXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKICAgICAgICAgICAgIC5GdW5jdGlv
bigic2V0X3RibCIsIHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQogICAgICAg
ICAgICAgICAuSTMyQ29uc3QoMCkKICAgICAgICAgICAgICAgLkdldExvY2FsKDApCi0gICAgICAg
ICAgICAgIC5UYWJsZVNldCgpCisgICAgICAgICAgICAgIC5UYWJsZVNldCgwKQogICAgICAgICAg
ICAgLkVuZCgpCiAKICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIsIHsgcGFyYW1zOiBb
XSwgcmV0OiAiYW55cmVmIiB9KQogICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKLSAgICAgICAg
ICAgICAgLlRhYmxlR2V0KCkKKyAgICAgICAgICAgICAgLlRhYmxlR2V0KDApCiAgICAgICAgICAg
ICAuRW5kKCkKIAogICAgICAgICAgICAgLkZ1bmN0aW9uKCJ0YmxfaXNfbnVsbCIsIHsgcGFyYW1z
OiBbXSwgcmV0OiAiaTMyIiB9KQpAQCAtODgsMTIgKzg4LDEyIEBAIGltcG9ydCBCdWlsZGVyIGZy
b20gJy4uL0J1aWxkZXIuanMnOwogICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsIiwgeyBw
YXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCiAgICAgICAgICAgICAgIC5JMzJDb25z
dCgwKQogICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKLSAgICAgICAgICAgICAgLlRhYmxlU2V0
KCkKKyAgICAgICAgICAgICAgLlRhYmxlU2V0KDApCiAgICAgICAgICAgICAuRW5kKCkKIAogICAg
ICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYi
IH0pCiAgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQotICAgICAgICAgICAgICAuVGFibGVHZXQo
KQorICAgICAgICAgICAgICAuVGFibGVHZXQoMCkKICAgICAgICAgICAgIC5FbmQoKQogCiAgICAg
ICAgICAgICAuRnVuY3Rpb24oInRibF9pc19udWxsIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIi
IH0pCkBAIC0xMjcsMTIgKzEyNywxMiBAQCBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVy
LmpzJzsKICAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibCIsIHsgcGFyYW1zOiBbImFueXJl
ZiJdLCByZXQ6ICJ2b2lkIiB9KQogICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKICAgICAgICAg
ICAgICAgLkdldExvY2FsKDApCi0gICAgICAgICAgICAgIC5UYWJsZVNldCgpCisgICAgICAgICAg
ICAgIC5UYWJsZVNldCgwKQogICAgICAgICAgICAgLkVuZCgpCiAKICAgICAgICAgICAgIC5GdW5j
dGlvbigiZ2V0X3RibCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQogICAgICAgICAg
ICAgICAuSTMyQ29uc3QoMCkKLSAgICAgICAgICAgICAgLlRhYmxlR2V0KCkKKyAgICAgICAgICAg
ICAgLlRhYmxlR2V0KDApCiAgICAgICAgICAgICAuRW5kKCkKIAogICAgICAgICAgICAgLkZ1bmN0
aW9uKCJ0YmxfaXNfbnVsbCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZnVuY19yZWYuanMgYi9KU1Rlc3RzL3dhc20vcmVm
ZXJlbmNlcy9mdW5jX3JlZi5qcwppbmRleCAzNWUwNmU0NjU4Mzg3MjgzYzU4MzM1YjliNjZmNzc4
NTNmOWJiMTAyLi4zNmE3OWI2ZjM0MjIzMjY3ZGU0ZWU0ZDQyYjc2NzE1NjU5YTQ5NjhiIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qcworKysgYi9KU1Rlc3Rz
L3dhc20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qcwpAQCAtMjU3LDcgKzI1Nyw3IEBAIGFzc2VydC50
aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKICAgICAu
RnVuY3Rpb24oImgiLCB7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAidm9pZCIgfSkKICAgICAgIC5H
ZXRMb2NhbCgwKQogICAgICAgLkkzMkNvbnN0KDApCi0gICAgICAuVGFibGVTZXQoKQorICAgICAg
LlRhYmxlU2V0KDApCiAgICAgLkVuZCgpCiAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSwg
RXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCB2YWxpZGF0ZTogdGFibGUuc2V0IHZh
bHVlIHRvIHR5cGUgSTMyIGV4cGVjdGVkIEFueWZ1bmMsIGluIGZ1bmN0aW9uIGF0IGluZGV4IDAg
KGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUnKSIpOwogCkBAIC0yNjcsNiArMjY3
LDcgQEAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVp
bGRlcigpKQogICAgICAgLlR5cGUoKS5FbmQoKQogICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKICAg
ICAgIC5UYWJsZSgpCisgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDAsIGVsZW1lbnQ6ICJh
bnlyZWYifSkKICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMSwgZWxlbWVudDogImFueWZ1
bmMifSkKICAgICAgIC5FbmQoKQogICAgICAgLkdsb2JhbCgpCkBAIC0yOTEsMTEgKzI5MiwxMSBA
QCBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVy
KCkpCiAgICAgICAgIC5GdW5jdGlvbigiY2FsbF9nbG9iIiwgeyBwYXJhbXM6IFsiaTMyIl0sIHJl
dDogImkzMiIgfSkKICAgICAgICAgICAgIC5JMzJDb25zdCgwKQogICAgICAgICAgICAgLkdldEds
b2JhbCgwKQotICAgICAgICAgICAgLlRhYmxlU2V0KCkKKyAgICAgICAgICAgIC5UYWJsZVNldCgx
KQogCiAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKICAgICAgICAgICAgIC5JMzJDb25zdCgwKQot
ICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgyLDApCisgICAgICAgICAgICAuQ2FsbEluZGlyZWN0
KDIsMSkKICAgICAgICAgLkVuZCgpCiAKICAgICAgICAgLkZ1bmN0aW9uKCJyZXRfMjAiLCB7IHBh
cmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9KQpAQCAtMzI4LDYgKzMyOSw3IEBAIGFzc2VydC50
aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKICAgICAg
IC5UeXBlKCkuRW5kKCkKICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCiAgICAgICAuVGFibGUoKQor
ICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAwLCBlbGVtZW50OiAiYW55cmVmIn0pCiAgICAg
ICAgICAgICAuVGFibGUoe2luaXRpYWw6IDEsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCiAgICAgICAu
RW5kKCkKICAgICAgIC5FeHBvcnQoKQpAQCAtMzM4LDEyICszNDAsMTIgQEAgYXNzZXJ0LnRocm93
cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQogICAgICAgICAu
RnVuY3Rpb24oInNldCIsIHsgcGFyYW1zOiBbImFueWZ1bmMiXSwgcmV0OiAidm9pZCIgfSkKICAg
ICAgICAgICAuSTMyQ29uc3QoMCkKICAgICAgICAgICAuR2V0TG9jYWwoMCkKLSAgICAgICAgICAu
VGFibGVTZXQoKQorICAgICAgICAgIC5UYWJsZVNldCgxKQogICAgICAgICAuRW5kKCkKIAogICAg
ICAgICAuRnVuY3Rpb24oImdldCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55ZnVuYyIgfSkKICAg
ICAgICAgICAgIC5JMzJDb25zdCgwKQotICAgICAgICAgICAgLlRhYmxlR2V0KCkKKyAgICAgICAg
ICAgIC5UYWJsZUdldCgxKQogICAgICAgICAuRW5kKCkKICAgICAgIC5FbmQoKS5XZWJBc3NlbWJs
eSgpLmdldCgpKSk7CiAKQEAgLTQwNSw3ICs0MDcsNyBAQCBmb3IgKGxldCBpbXBvcnRlZEZ1biBv
ZiBbZnVuY3Rpb24oaSkgeyByZXR1cm4gaTsgfSwgbWFrZUFueWZ1bmNJZGVudCgpXSkgewogICAg
ICAgICAgIC5HZXRMb2NhbCgwKQogICAgICAgICAgIC5JMzJDb25zdCgwKQogICAgICAgICAgIC5S
ZWZGdW5jKDApCi0gICAgICAgICAgLlRhYmxlU2V0KCkKKyAgICAgICAgICAuVGFibGVTZXQoMCkK
ICAgICAgICAgICAuSTMyQ29uc3QoMCkKICAgICAgICAgICAuQ2FsbEluZGlyZWN0KDAsIDApCiAg
ICAgICAgIC5FbmQoKQpAQCAtNDE0LDcgKzQxNiw3IEBAIGZvciAobGV0IGltcG9ydGVkRnVuIG9m
IFtmdW5jdGlvbihpKSB7IHJldHVybiBpOyB9LCBtYWtlQW55ZnVuY0lkZW50KCldKSB7CiAgICAg
ICAgICAgLlJlZkZ1bmMoMSkKICAgICAgICAgICAuSTMyQ29uc3QoMCkKICAgICAgICAgICAuUmVm
RnVuYygwKQotICAgICAgICAgIC5UYWJsZVNldCgpCisgICAgICAgICAgLlRhYmxlU2V0KDApCiAg
ICAgICAgICAgLkkzMkNvbnN0KDApCiAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgwLCAwKQogICAg
ICAgICAuRW5kKCkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL211bHRpdGFi
bGUuanMgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9tdWx0aXRhYmxlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA5ZTMwN2E4ODhhOTZjYzJkYmMxYTc4NmE2ZmM4NDY4MjMxMDZlM2YKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9tdWx0aXRhYmxlLmpzCkBAIC0wLDAgKzEsNDUw
IEBACitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKK2ltcG9ydCBCdWls
ZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOworCit7CisgICAgY29uc3QgJDEgPSBuZXcgV2ViQXNz
ZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAg
ICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAg
ICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMCwgbWF4aW11
bTogMCwgZWxlbWVudDogImFueXJlZiJ9KQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlh
bDogMjAsIG1heGltdW06IDMwLCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAgICAgICAgLkVuZCgp
CisgICAgICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibCIp
CisgICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIpCisgICAgICAgICAgICAgIC5GdW5j
dGlvbigiZ2V0X3RibDAiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oInNldF90YmwwIikKKyAg
ICAgICAgICAgICAgLlRhYmxlKCJ0YmwiLCAxKQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAg
IC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibCIsIHsgcGFyYW1zOiBbImFu
eXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAg
ICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5UYWJsZVNldCgxKQorICAgICAg
ICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIsIHsgcGFyYW1z
OiBbXSwgcmV0OiAiYW55cmVmIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAg
ICAgICAgICAgLlRhYmxlR2V0KDEpCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAg
LkZ1bmN0aW9uKCJnZXRfdGJsMCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQorICAg
ICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLlRhYmxlR2V0KDApCisgICAg
ICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsMCIsIHsgcGFy
YW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3Qo
MCkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5UYWJsZVNldCgw
KQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0
KCkpKTsKKworICAgIGZ1bGxHQygpCisKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfdGJs
KCksIG51bGwpCisKKyAgICAkMS5leHBvcnRzLnNldF90YmwoImhpIikKKyAgICBmdWxsR0MoKQor
ICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF90YmwoKSwgImhpIikKKyAgICBhc3NlcnQuZXEo
JDEuZXhwb3J0cy50YmwuZ2V0KDApLCAiaGkiKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLnRi
bC5nZXQoMSksIG51bGwpCisKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuZ2V0
X3RibDAoKSwgRXJyb3IsICJPdXQgb2YgYm91bmRzIHRhYmxlIGFjY2VzcyAoZXZhbHVhdGluZyAn
ZnVuYyguLi5hcmdzKScpIik7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBvcnRzLnNl
dF90YmwwKG51bGwpLCBFcnJvciwgIk91dCBvZiBib3VuZHMgdGFibGUgYWNjZXNzIChldmFsdWF0
aW5nICdmdW5jKC4uLmFyZ3MpJykiKTsKK30KKworeworICAgIGNvbnN0IHRibCA9IG5ldyBXZWJB
c3NlbWJseS5UYWJsZSh7aW5pdGlhbDowLCBlbGVtZW50OiJhbnlyZWYifSk7CisgICAgY29uc3Qg
JDEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3
IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkltcG9ydCgp
CisgICAgICAgICAgICAgICAgLlRhYmxlKCJpbXAiLCAidGJsIiwge2luaXRpYWw6IDAsIGVsZW1l
bnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rpb24oKS5F
bmQoKQorICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFs
OiAyMCwgbWF4aW11bTogMzAsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAuRW5kKCkK
KyAgICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsIikK
KyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsIikKKyAgICAgICAgICAgICAgLkZ1bmN0
aW9uKCJnZXRfdGJsMCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibDAiKQorICAg
ICAgICAgICAgICAuVGFibGUoInRibCIsIDEpCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAg
LkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsIiwgeyBwYXJhbXM6IFsiYW55
cmVmIl0sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAg
ICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLlRhYmxlU2V0KDEpCisgICAgICAg
ICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsIiwgeyBwYXJhbXM6
IFtdLCByZXQ6ICJhbnlyZWYiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAg
ICAgICAgICAuVGFibGVHZXQoMSkKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAu
RnVuY3Rpb24oImdldF90YmwwIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCisgICAg
ICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuVGFibGVHZXQoMCkKKyAgICAg
ICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oInNldF90YmwwIiwgeyBwYXJh
bXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgw
KQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLlRhYmxlU2V0KDAp
CisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQo
KSksIHsgaW1wOiB7IHRibCB9fSk7CisKKyAgICBmdWxsR0MoKQorCisgICAgYXNzZXJ0LmVxKCQx
LmV4cG9ydHMuZ2V0X3RibCgpLCBudWxsKQorCisgICAgJDEuZXhwb3J0cy5zZXRfdGJsKCJoaSIp
CisgICAgZnVsbEdDKCkKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfdGJsKCksICJoaSIp
CisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMudGJsLmdldCgwKSwgImhpIikKKyAgICBhc3NlcnQu
ZXEoJDEuZXhwb3J0cy50YmwuZ2V0KDEpLCBudWxsKQorCisgICAgYXNzZXJ0LnRocm93cygoKSA9
PiAkMS5leHBvcnRzLmdldF90YmwwKCksIEVycm9yLCAiT3V0IG9mIGJvdW5kcyB0YWJsZSBhY2Nl
c3MgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpOworICAgIGFzc2VydC50aHJvd3MoKCkg
PT4gJDEuZXhwb3J0cy5zZXRfdGJsMChudWxsKSwgRXJyb3IsICJPdXQgb2YgYm91bmRzIHRhYmxl
IGFjY2VzcyAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIik7Cit9CisKK3sKKyAgICBjb25z
dCB0YmwgPSBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6MSwgZWxlbWVudDoiYW55cmVm
In0pOworICAgIGNvbnN0ICQxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3Nl
bWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAg
ICAgICAgIC5JbXBvcnQoKQorICAgICAgICAgICAgICAgIC5UYWJsZSgiaW1wIiwgInRibCIsIHtp
bml0aWFsOiAxLCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAg
ICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAg
IC5UYWJsZSh7aW5pdGlhbDogMjAsIG1heGltdW06IDMwLCBlbGVtZW50OiAiYW55cmVmIn0pCisg
ICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgICAgIC5GdW5j
dGlvbigic2V0X3RibCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIpCisgICAg
ICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibDAiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24o
InNldF90YmwwIikKKyAgICAgICAgICAgICAgLlRhYmxlKCJ0YmwiLCAxKQorICAgICAgICAgIC5F
bmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibCIs
IHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgICAuSTMy
Q29uc3QoMCkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5UYWJs
ZVNldCgxKQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0
X3RibCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQorICAgICAgICAgICAgICAuSTMy
Q29uc3QoMCkKKyAgICAgICAgICAgICAgLlRhYmxlR2V0KDEpCisgICAgICAgICAgICAuRW5kKCkK
KworICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsMCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAi
YW55cmVmIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLlRh
YmxlR2V0KDApCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJz
ZXRfdGJsMCIsIHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAg
ICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAg
ICAgIC5UYWJsZVNldCgwKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpLldl
YkFzc2VtYmx5KCkuZ2V0KCkpLCB7IGltcDogeyB0YmwgfX0pOworCisgICAgZnVsbEdDKCkKKwor
ICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF90YmwoKSwgbnVsbCkKKworICAgICQxLmV4cG9y
dHMuc2V0X3RibCgiaGkiKQorICAgIGZ1bGxHQygpCisgICAgJDEuZXhwb3J0cy5zZXRfdGJsMChu
dWxsKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF90YmwoKSwgImhpIikKKyAgICBhc3Nl
cnQuZXEoJDEuZXhwb3J0cy5nZXRfdGJsMCgpLCBudWxsKQorICAgIGFzc2VydC5lcSgkMS5leHBv
cnRzLnRibC5nZXQoMCksICJoaSIpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMudGJsLmdldCgx
KSwgbnVsbCkKKyAgICBhc3NlcnQuZXEodGJsLmdldCgwKSwgbnVsbCkKK30KKworeworICAgIGNv
bnN0ICQxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUo
KG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgIC5GdW5j
dGlvbigpLkVuZCgpCisgICAgICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgICAgICAuVGFibGUo
e2luaXRpYWw6IDMsIG1heGltdW06IDMwLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgICAg
ICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMiwgbWF4aW11bTogMzAsIGVsZW1lbnQ6ICJhbnlmdW5j
In0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgICAg
IC5GdW5jdGlvbigiY2FsbF90YmwwIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJjYWxsX3Ri
bDEiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oInJldDQyIikKKyAgICAgICAgICAgICAgLkZ1
bmN0aW9uKCJyZXQxMzM3IikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQyNTYiKQorICAg
ICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbGVtZW50KCkKKyAgICAgICAgICAgICAgICAuRWxl
bWVudCh7dGFibGVJbmRleDogMSwgb2Zmc2V0OiAwLCBmdW5jdGlvbkluZGljZXM6IFsyXX0pCisg
ICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9u
KCJjYWxsX3RibDAiLCB7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAg
ICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgxLDApCisgICAg
ICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJjYWxsX3RibDEiLCB7IHBh
cmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkK
KyAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgxLDEpCisgICAgICAgICAgICAuRW5kKCkKKwor
ICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQ0MiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9
KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoNDIpCisgICAgICAgICAgICAuRW5kKCkKKworICAg
ICAgICAgICAgLkZ1bmN0aW9uKCJyZXQxMzM3IiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0p
CisgICAgICAgICAgICAgIC5JMzJDb25zdCgxMzM3KQorICAgICAgICAgICAgLkVuZCgpCisKKyAg
ICAgICAgICAgIC5GdW5jdGlvbigicmV0MjU2IiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0p
CisgICAgICAgICAgICAgIC5JMzJDb25zdCgyNTYpCisgICAgICAgICAgICAuRW5kKCkKKyAgICAg
ICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSkpOworCisgICAgZnVsbEdDKCkKKworICAg
IGFzc2VydC5lcSgkMS5leHBvcnRzLmNhbGxfdGJsMSgwKSwgNDIpCisgICAgYXNzZXJ0LnRocm93
cygoKSA9PiAkMS5leHBvcnRzLmNhbGxfdGJsMCgwKSwgRXJyb3IsICJjYWxsX2luZGlyZWN0IHRv
IGEgbnVsbCB0YWJsZSBlbnRyeSAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikKKyAgICBh
c3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuY2FsbF90YmwxKDEpLCBFcnJvciwgImNhbGxf
aW5kaXJlY3QgdG8gYSBudWxsIHRhYmxlIGVudHJ5IChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3Mp
JykiKQorfQorCit7CisgICAgY29uc3QgJDEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3
IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVu
ZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAuVGFibGUoKQorICAg
ICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMywgbWF4aW11bTogMzAsIGVsZW1lbnQ6ICJh
bnlmdW5jIn0pCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAyLCBtYXhpbXVtOiAz
MCwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRXhw
b3J0KCkKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJjYWxsX3RibDAiKQorICAgICAgICAgICAg
ICAuRnVuY3Rpb24oImNhbGxfdGJsMSIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigicmV0NDIi
KQorICAgICAgICAgICAgICAuRnVuY3Rpb24oInJldDEzMzciKQorICAgICAgICAgICAgICAuRnVu
Y3Rpb24oInJldDI1NiIpCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVsZW1lbnQoKQor
ICAgICAgICAgICAgICAgIC5FbGVtZW50KHt0YWJsZUluZGV4OiAxLCBvZmZzZXQ6IDAsIGZ1bmN0
aW9uSW5kaWNlczogWzJdfSkKKyAgICAgICAgICAgICAgICAuRWxlbWVudCh7dGFibGVJbmRleDog
MCwgb2Zmc2V0OiAwLCBmdW5jdGlvbkluZGljZXM6IFszXX0pCisgICAgICAgICAgICAgICAgLkVs
ZW1lbnQoe3RhYmxlSW5kZXg6IDEsIG9mZnNldDogMSwgZnVuY3Rpb25JbmRpY2VzOiBbNF19KQor
ICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlv
bigiY2FsbF90YmwwIiwgeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSkKKyAgICAgICAg
ICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMSwwKQorICAg
ICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigiY2FsbF90YmwxIiwgeyBw
YXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDAp
CisgICAgICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMSwxKQorICAgICAgICAgICAgLkVuZCgpCisK
KyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0NDIiLCB7IHBhcmFtczogW10sIHJldDogImkzMiIg
fSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDQyKQorICAgICAgICAgICAgLkVuZCgpCisKKyAg
ICAgICAgICAgIC5GdW5jdGlvbigicmV0MTMzNyIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9
KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMTMzNykKKyAgICAgICAgICAgIC5FbmQoKQorCisg
ICAgICAgICAgICAuRnVuY3Rpb24oInJldDI1NiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9
KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMjU2KQorICAgICAgICAgICAgLkVuZCgpCisgICAg
ICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKTsKKworICAgIGZ1bGxHQygpCisKKyAg
ICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5jYWxsX3RibDEoMCksIDQyKQorICAgIGFzc2VydC5lcSgk
MS5leHBvcnRzLmNhbGxfdGJsMCgwKSwgMTMzNykKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5j
YWxsX3RibDEoMSksIDI1NikKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuY2Fs
bF90YmwwKDEpLCBFcnJvciwgImNhbGxfaW5kaXJlY3QgdG8gYSBudWxsIHRhYmxlIGVudHJ5IChl
dmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorICAgIGFzc2VydC50aHJvd3MoKCkgPT4gJDEu
ZXhwb3J0cy5jYWxsX3RibDAoMiksIEVycm9yLCAiY2FsbF9pbmRpcmVjdCB0byBhIG51bGwgdGFi
bGUgZW50cnkgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisgICAgYXNzZXJ0LnRocm93
cygoKSA9PiAkMS5leHBvcnRzLmNhbGxfdGJsMSgyKSwgRXJyb3IsICJPdXQgb2YgYm91bmRzIGNh
bGxfaW5kaXJlY3QgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCit9CisgYXNzZXJ0LnRo
cm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVs
ZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1
bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAgIC5UYWJs
ZSh7aW5pdGlhbDogMywgbWF4aW11bTogMywgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAg
ICAgICAgICAuVGFibGUoe2luaXRpYWw6IDIsIG1heGltdW06IDIsIGVsZW1lbnQ6ICJhbnlmdW5j
In0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVsZW1lbnQoKQorICAgICAgICAgICAg
ICAgIC5FbGVtZW50KHt0YWJsZUluZGV4OiAxLCBvZmZzZXQ6IDAsIGZ1bmN0aW9uSW5kaWNlczog
WzBdfSkKKyAgICAgICAgICAgICAgICAuRWxlbWVudCh7dGFibGVJbmRleDogMCwgb2Zmc2V0OiAw
LCBmdW5jdGlvbkluZGljZXM6IFswXX0pCisgICAgICAgICAgICAgICAgLkVsZW1lbnQoe3RhYmxl
SW5kZXg6IDEsIG9mZnNldDogMiwgZnVuY3Rpb25JbmRpY2VzOiBbMF19KQorICAgICAgICAgIC5F
bmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0NDIiLCB7
IHBhcmFtczogW10sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDQyKQor
ICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkp
KSwgRXJyb3IsICJFbGVtZW50IGlzIHRyeWluZyB0byBzZXQgYW4gb3V0IG9mIGJvdW5kcyB0YWJs
ZSBpbmRleCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlJykiKQorCithc3Nl
cnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHku
TW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAg
ICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAgICAg
LlRhYmxlKHtpbml0aWFsOiAzLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAg
ICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAyLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55
ZnVuYyJ9KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbGVtZW50KCkKKyAgICAgICAg
ICAgICAgICAuRWxlbWVudCh7dGFibGVJbmRleDogMSwgb2Zmc2V0OiAwLCBmdW5jdGlvbkluZGlj
ZXM6IFswXX0pCisgICAgICAgICAgICAgICAgLkVsZW1lbnQoe3RhYmxlSW5kZXg6IDAsIG9mZnNl
dDogMCwgZnVuY3Rpb25JbmRpY2VzOiBbMF19KQorICAgICAgICAgICAgICAgIC5FbGVtZW50KHt0
YWJsZUluZGV4OiAxLCBvZmZzZXQ6IDIsIGZ1bmN0aW9uSW5kaWNlczogWzBdfSkKKyAgICAgICAg
ICAuRW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oInJldDQy
IiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCg0
MikKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdl
dCgpKSksIEVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSA0
MDogVGFibGUgMCBtdXN0IGhhdmUgdHlwZSAnYW55ZnVuYycgdG8gaGF2ZSBhbiBlbGVtZW50IHNl
Y3Rpb24gKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUnKSIpCisKK2Fzc2VydC50
aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1
bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgIC5G
dW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgICAgICAuVGFi
bGUoe2luaXRpYWw6IDMsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAg
ICAgICAgICAuVGFibGUoe2luaXRpYWw6IDIsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlmdW5j
In0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1
bmN0aW9uKCJmdW4iLCB7IHBhcmFtczogW10sIHJldDogImFueXJlZiIgfSkKKyAgICAgICAgICAg
ICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgIC5UYWJsZUdldCgyKQorICAgICAgICAgICAg
LkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKSwgRXJyb3IsICJX
ZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCB2YWxpZGF0ZTogdGFibGUgaW5kZXggMiBpcyBpbnZh
bGlkLCBsaW1pdCBpcyAyLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcg
V2ViQXNzZW1ibHkuTW9kdWxlJykiKQorCithc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3Nl
bWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAg
ICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAg
ICAgIC5UYWJsZSgpCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAzLCBtYXhpbXVt
OiAzLCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFs
OiAyLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgICAgIC5FbmQoKQor
ICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZnVuIiwgeyBwYXJhbXM6
IFtdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAg
ICAgICAgLlJlZk51bGwoKQorICAgICAgICAgICAgICAuVGFibGVTZXQoMikKKyAgICAgICAgICAg
IC5FbmQoKQorICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSksIEVycm9yLCAi
V2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgdmFsaWRhdGU6IHRhYmxlIGluZGV4IDIgaXMgaW52
YWxpZCwgbGltaXQgaXMgMiwgaW4gZnVuY3Rpb24gYXQgaW5kZXggMCAoZXZhbHVhdGluZyAnbmV3
IFdlYkFzc2VtYmx5Lk1vZHVsZScpIikKKworYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNz
ZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAg
ICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAg
ICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMywgbWF4aW11
bTogMywgZWxlbWVudDogImFueXJlZiJ9KQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlh
bDogMiwgbWF4aW11bTogMywgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAgICAuRW5kKCkK
KyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZ1biIsIHsgcGFyYW1z
OiBbXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgwLCAyKQor
ICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkp
KSwgRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDQ6IGNh
bGxfaW5kaXJlY3QncyB0YWJsZSBpbmRleCAyIGludmFsaWQsIGxpbWl0IGlzIDIsIGluIGZ1bmN0
aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUnKSIpCisK
K2Fzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3Nl
bWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAg
ICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAg
ICAgICAuVGFibGUoe2luaXRpYWw6IDMsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlyZWYifSkK
KyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDIsIG1heGltdW06IDMsIGVsZW1lbnQ6
ICJhbnlmdW5jIn0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJmdW4iLCB7IHBhcmFtczogW10sIHJldDogInZvaWQiIH0pCisgICAg
ICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMCwwKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAg
ICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKSwgRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1
bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDQ6IGNhbGxfaW5kaXJlY3QgaXMgb25seSB2YWxpZCB3
aGVuIGEgdGFibGUgaGFzIHR5cGUgYW55ZnVuYywgaW4gZnVuY3Rpb24gYXQgaW5kZXggMCAoZXZh
bHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScpIikKKworYXNzZXJ0LnRocm93cygoKSA9
PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1
aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCku
RW5kKCkKKyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlh
bDogMywgbWF4aW11bTogMywgZWxlbWVudDogImFueXJlZiJ9KQorICAgICAgICAgICAgICAgIC5U
YWJsZSh7aW5pdGlhbDogMiwgbWF4aW11bTogMywgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAg
ICAgICAuRW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZ1
biIsIHsgcGFyYW1zOiBbXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAgICAgLlJlZk51bGwo
KQorICAgICAgICAgICAgICAuVGFibGVHZXQoMCkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAg
ICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSksIEVycm9yLCAiV2ViQXNzZW1ibHkuTW9k
dWxlIGRvZXNuJ3QgdmFsaWRhdGU6IHRhYmxlLmdldCBpbmRleCB0byB0eXBlIEFueWZ1bmMgZXhw
ZWN0ZWQgSTMyLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNz
ZW1ibHkuTW9kdWxlJykiKQorCisKK2Fzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5
Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAg
ICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAg
LlRhYmxlKCkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDMsIG1heGltdW06IDMs
IGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDIs
IG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgLkVuZCgpCisgICAg
ICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJmdW4iLCB7IHBhcmFtczogW10s
IHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5SZWZOdWxsKCkKKyAgICAgICAgICAgICAg
LlJlZk51bGwoKQorICAgICAgICAgICAgICAuVGFibGVTZXQoMCkKKyAgICAgICAgICAgIC5FbmQo
KQorICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSksIEVycm9yLCAiV2ViQXNz
ZW1ibHkuTW9kdWxlIGRvZXNuJ3QgdmFsaWRhdGU6IHRhYmxlLnNldCBpbmRleCB0byB0eXBlIEFu
eWZ1bmMgZXhwZWN0ZWQgSTMyLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICdu
ZXcgV2ViQXNzZW1ibHkuTW9kdWxlJykiKQorCithc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJB
c3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQor
ICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAg
ICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAzLCBtYXhp
bXVtOiAzLCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0
aWFsOiAyLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgICAgIC5FbmQo
KQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZnVuIiwgeyBwYXJh
bXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgw
KQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLlRhYmxlU2V0KDEp
CisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQo
KSkpLCBFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHZhbGlkYXRlOiB0YWJsZS5z
ZXQgdmFsdWUgdG8gdHlwZSBBbnlyZWYgZXhwZWN0ZWQgQW55ZnVuYywgaW4gZnVuY3Rpb24gYXQg
aW5kZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScpIikKKworZnVuY3Rp
b24gdGFibGVJbnNhbml0eShudW0sIGIpIHsKKyAgICBiID0gYi5JbXBvcnQoKQorICAgIGZvciAo
bGV0IGk9MDsgaTwxMDAwMDAtMTsgKytpKQorICAgICAgICBiID0gYi5GdW5jdGlvbigiaW1wIiwg
InJlZiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAidm9pZCIgfSkKKyAgICBiID0gYi5FbmQoKS5GdW5j
dGlvbigpLkVuZCgpLlRhYmxlKCkKKyAgICBmb3IgKGxldCBpPTA7IGk8bnVtOyArK2kpCisgICAg
ICAgIGIgPSBiLlRhYmxlKHtpbml0aWFsOiAwLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55cmVm
In0pCisgICAgcmV0dXJuIGIKK30KKworYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1i
bHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSh0YWJsZUluc2FuaXR5KDEwMDAwMDAs
IChuZXcgQnVpbGRlcigpKQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkpCisgICAgICAgICAgICAg
ICAgLlRhYmxlKHtpbml0aWFsOiAzLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55cmVmIn0pCisg
ICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9u
KCJmdW4iLCB7IHBhcmFtczogWyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAg
ICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAg
ICAuVGFibGVTZXQoMSkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbmQoKS5XZWJB
c3NlbWJseSgpLmdldCgpKSksIEVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFy
c2UgYXQgYnl0ZSA1MDAwMDI3OiBUYWJsZSBjb3VudCBvZiAxMDAwMDAwIGlzIHRvbyBiaWcsIG1h
eGltdW0gMTAwMDAwMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScpIikKK3sK
KyAgICBjb25zdCAkMSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHku
TW9kdWxlKHRhYmxlSW5zYW5pdHkoMTAwMDAwMC0xLCAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAg
ICAuVHlwZSgpLkVuZCgpKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMywgbWF4
aW11bTogMywgZWxlbWVudDogImFueXJlZiJ9KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAg
IC5FeHBvcnQoKQorICAgICAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibCIpCisgICAgICAg
ICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsIikKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAg
ICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oInNldF90YmwiLCB7IHBhcmFtczogWyJh
bnlyZWYiXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAg
ICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAuVGFibGVTZXQoMTAwMDAwMC0x
KQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImdldF90YmwiLCB7
IHBhcmFtczogW10sIHJldDogImFueXJlZiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDAp
CisgICAgICAgICAgICAgIC5UYWJsZUdldCgxMDAwMDAwLTEpCisgICAgICAgICAgICAuRW5kKCkK
KyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSksIHsgaW1wOiB7IHJlZjogZnVu
Y3Rpb24gKCkge30gfSB9KQorICAgICQxLmV4cG9ydHMuc2V0X3RibCgiaGkiKQorICAgIGFzc2Vy
dC5lcSgkMS5leHBvcnRzLmdldF90YmwoKSwgImhpIikKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
d2FzbS9yZWZlcmVuY2VzL3ZhbGlkYXRpb24uanMgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy92
YWxpZGF0aW9uLmpzCmluZGV4IDhmODE2MzY5YTc0ZTg5ZTQ5ZTY5MDlkZjQ0NTU1MGZkMGY2NmMy
MTYuLjdmN2QxODQyN2I3NWQzNzA1MmFkNjQ4NDVlMzcxNWMxY2FlZGVlM2QgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL3ZhbGlkYXRpb24uanMKKysrIGIvSlNUZXN0cy93YXNt
L3JlZmVyZW5jZXMvdmFsaWRhdGlvbi5qcwpAQCAtMjQsNiArMjQsOSBAQCBpbXBvcnQgQnVpbGRl
ciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKIHsKICAgICBjb25zdCBidWlsZGVyID0gKG5ldyBCdWls
ZGVyKCkpCiAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAuSW1wb3J0KCkKKyAgICAgICAgICAg
IC5UYWJsZSgiaW1wIiwgInRibCIsIHtpbml0aWFsOiAyLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQor
ICAgICAgLkVuZCgpCiAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQogICAgICAgLkV4cG9ydCgpCiAg
ICAgICAgICAgLkZ1bmN0aW9uKCJqIikKQEAgLTMyLDE0ICszNSwxNCBAQCBpbXBvcnQgQnVpbGRl
ciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKICAgICAgICAgLkZ1bmN0aW9uKCJqIiwgeyBwYXJhbXM6
IFtdLCByZXQ6ICJ2b2lkIiB9KQogICAgICAgICAgICAgLkkzMkNvbnN0KDApCiAgICAgICAgICAg
ICAuSTMyQ29uc3QoMCkKLSAgICAgICAgICAgIC5UYWJsZVNldCgpCisgICAgICAgICAgICAuVGFi
bGVTZXQoMCkKICAgICAgICAgLkVuZCgpCiAgICAgICAuRW5kKCk7CiAKICAgICBjb25zdCBiaW4g
PSBidWlsZGVyLldlYkFzc2VtYmx5KCk7CiAgICAgYmluLnRyaW0oKTsKIAotICAgIGFzc2VydC50
aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4uZ2V0KCkpLCBXZWJBc3NlbWJs
eS5Db21waWxlRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCB2YWxpZGF0ZTogdGFi
bGUuc2V0IHZhbHVlIHRvIHR5cGUgSTMyIGV4cGVjdGVkIEFueXJlZiwgaW4gZnVuY3Rpb24gYXQg
aW5kZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4uZ2V0KCkpJyki
KTsKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluLmdl
dCgpKSwgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNu
J3QgdmFsaWRhdGU6IHRhYmxlLnNldCB2YWx1ZSB0byB0eXBlIEkzMiBleHBlY3RlZCBBbnlmdW5j
LCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9k
dWxlKGJpbi5nZXQoKSknKSIpOwogfQogCiB7CkBAIC01Niw3ICs1OSw3IEBAIGltcG9ydCBCdWls
ZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwogICAgICAgICAuRnVuY3Rpb24oImoiLCB7IHBhcmFt
czogWyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkKICAgICAgICAgICAgIC5JMzJDb25zdCgwKQog
ICAgICAgICAgICAgLkdldExvY2FsKDApCi0gICAgICAgICAgICAuVGFibGVTZXQoKQorICAgICAg
ICAgICAgLlRhYmxlU2V0KDApCiAgICAgICAgIC5FbmQoKQogICAgICAgLkVuZCgpOwogCkBAIC03
OSw3ICs4Miw3IEBAIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwogICAgICAg
LkNvZGUoKQogICAgICAgICAuRnVuY3Rpb24oImoiLCB7IHBhcmFtczogW10sIHJldDogImFueXJl
ZiIgfSkKICAgICAgICAgICAgIC5JMzJDb25zdCgwKQotICAgICAgICAgICAgLlRhYmxlR2V0KCkK
KyAgICAgICAgICAgIC5UYWJsZUdldCgwKQogICAgICAgICAuRW5kKCkKICAgICAgIC5FbmQoKTsK
IApkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3NwZWMtdGVzdHMvaW1wb3J0cy53YXN0LmpzIGIv
SlNUZXN0cy93YXNtL3NwZWMtdGVzdHMvaW1wb3J0cy53YXN0LmpzCmluZGV4IDQ4ZDE0MDk2NmE0
Zjc1ODM2NzA4MDI5N2E0YzAzY2FhNzQ4MzM1MzEuLjZiM2ZhYWZhZDk2ZjdlYmVmNDI5OGQ0Mjlh
YmQ5MWIwYmZhODY2OGIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9zcGVjLXRlc3RzL2ltcG9y
dHMud2FzdC5qcworKysgYi9KU1Rlc3RzL3dhc20vc3BlYy10ZXN0cy9pbXBvcnRzLndhc3QuanMK
QEAgLTE4OCwxNSArMTg4LDYgQEAgYXNzZXJ0X3RyYXAoKCkgPT4gY2FsbCgkMTQsICJjYWxsIiwg
WzNdKSk7CiAvLyBpbXBvcnRzLndhc3Q6MjkwCiBhc3NlcnRfdHJhcCgoKSA9PiBjYWxsKCQxNCwg
ImNhbGwiLCBbMTAwXSkpOwogCi0vLyBpbXBvcnRzLndhc3Q6MjkzCi1hc3NlcnRfaW52YWxpZCgi
XHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAyXHg4ZFx4ODBceDgwXHg4MFx4MDBc
eDAyXHgwMFx4MDBceDAxXHg3MFx4MDBceDBhXHgwMFx4MDBceDAxXHg3MFx4MDBceDBhIik7Ci0K
LS8vIGltcG9ydHMud2FzdDoyOTcKLWFzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgw
MVx4MDBceDAwXHgwMFx4MDJceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwMFx4MDFceDcw
XHgwMFx4MGFceDA0XHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg3MFx4MDBceDBhIik7Ci0KLS8v
IGltcG9ydHMud2FzdDozMDEKLWFzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4
MDBceDAwXHgwMFx4MDRceDg3XHg4MFx4ODBceDgwXHgwMFx4MDJceDcwXHgwMFx4MGFceDcwXHgw
MFx4MGEiKTsKLQogLy8gaW1wb3J0cy53YXN0OjMwNgogbGV0ICQxNSA9IGluc3RhbmNlKCJceDAw
XHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDJceDk3XHg4MFx4ODBceDgwXHgwMFx4MDFc
eDA0XHg3NFx4NjVceDczXHg3NFx4MGNceDc0XHg2MVx4NjJceDZjXHg2NVx4MmRceDMxXHgzMFx4
MmRceDY5XHg2ZVx4NjZceDAxXHg3MFx4MDBceDBhIik7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
d2FzbS93YXNtLmpzb24gYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCmluZGV4IDY0Y2EwYjViMjA4
ZDkxYjJiZjc4NjU1NzU3MTI0NzNkNWI3MjUwYTMuLjQ1MzA4ZmJiZDU3NTMyZjVlYmExMzk1NmNh
YWNkMDU1OTM0YWNiYWYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KKysrIGIv
SlNUZXN0cy93YXNtL3dhc20uanNvbgpAQCAtNjcsMTAgKzY3LDEwIEBACiAgICAgICAgICJ0ZWVf
bG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAz
NCwgInJldHVybiI6IFsiYW55Il0sICAgICAgInBhcmFtZXRlciI6IFsiYW55Il0sICAgICAgICAg
ICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAibG9jYWxfaW5kZXgiLCAgICAidHlwZSI6
ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAid3JpdGUgYSBsb2NhbCB2YXJpYWJsZSBvciBwYXJhbWV0ZXIgYW5k
IHJldHVybiB0aGUgc2FtZSB2YWx1ZSIgfSwKICAgICAgICAgImdldF9nbG9iYWwiOiAgICAgICAg
ICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM1LCAicmV0dXJuIjogWyJh
bnkiXSwgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJnbG9iYWxfaW5kZXgiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJyZWFkIGEgZ2xvYmFsIHZhcmlhYmxlIiB9LAogICAgICAgICAic2V0X2dsb2JhbCI6ICAgICAg
ICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzYsICJyZXR1cm4iOiBb
XSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFueSJdLCAgICAgICAgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbeyJuYW1lIjogImdsb2JhbF9pbmRleCIsICAgInR5cGUiOiAidmFydWludDMyIn1d
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIndyaXRlIGEgZ2xvYmFsIHZhcmlhYmxlIiB9LAotICAgICAgICAidGFibGUuZ2V0IjogICAg
ICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzcsICJyZXR1cm4i
OiBbImFueXJlZiJdLCAgICJwYXJhbWV0ZXIiOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICJp
bW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogImdldCBhIHRhYmxlIHZhbHVlIiB9LAotICAgICAgICAidGFibGUuc2V0IjogICAgICAg
ICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzgsICJyZXR1cm4iOiBb
XSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImkzMiIsICJhbnlyZWYiXSwgICAgICAgICJpbW1l
ZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogInNldCBhIHRhYmxlIHZhbHVlIiB9LAorICAgICAgICAidGFibGUuZ2V0IjogICAgICAgICAg
IHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzcsICJyZXR1cm4iOiBbImFu
eXJlZiJdLCAgICJwYXJhbWV0ZXIiOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlh
dGUiOiBbeyJuYW1lIjogInRhYmxlX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
ImdldCBhIHRhYmxlIHZhbHVlIiB9LAorICAgICAgICAidGFibGUuc2V0IjogICAgICAgICAgIHsg
ImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzgsICJyZXR1cm4iOiBbXSwgICAg
ICAgICAgICJwYXJhbWV0ZXIiOiBbImkzMiIsICJhbnlyZWYiXSwgICAgICAgICJpbW1lZGlhdGUi
OiBbeyJuYW1lIjogInRhYmxlX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInNl
dCBhIHRhYmxlIHZhbHVlIiB9LAogICAgICAgICAiY2FsbCI6ICAgICAgICAgICAgICAgIHsgImNh
dGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTYsICJyZXR1cm4iOiBbImNhbGwiXSwg
ICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBb
eyJuYW1lIjogImZ1bmN0aW9uX2luZGV4IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImNhbGwg
YSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0sCi0gICAgICAgICJjYWxsX2luZGlyZWN0IjogICAg
ICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxNywgInJldHVybiI6IFsi
Y2FsbCJdLCAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgImltbWVk
aWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwg
eyJuYW1lIjogInJlc2VydmVkIiwgInR5cGUiOiAidmFydWludDEifV0sICAiZGVzY3JpcHRpb24i
OiAiY2FsbCBhIGZ1bmN0aW9uIGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9
LAorICAgICAgICAiY2FsbF9pbmRpcmVjdCI6ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAg
ICAgICAidmFsdWUiOiAgMTcsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICJwYXJhbWV0ZXIiOiBb
ImNhbGwiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5k
ZXgiLCAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJ0YWJsZV9pbmRleCIsInR5
cGUiOiAidmFydWludDMyIn1dLCJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gaW5kaXJl
Y3Qgd2l0aCBhbiBleHBlY3RlZCBzaWduYXR1cmUiIH0sCiAgICAgICAgICJpMzIubG9hZDhfcyI6
ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NCwgInJldHVy
biI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAg
ImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50
MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3Jp
cHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKICAgICAgICAgImkzMi5sb2FkOF91IjogICAg
ICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ1LCAicmV0dXJuIjog
WyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICAiaW1t
ZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9
LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlv
biI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAgICAiaTMyLmxvYWQxNl9zIjogICAgICAg
IHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDYsICJyZXR1cm4iOiBbImkz
MiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlh
dGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsi
bmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjog
ImxvYWQgZnJvbSBtZW1vcnkiIH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372376</attachid>
            <date>2019-06-18 13:51:50 -0700</date>
            <delta_ts>2019-06-18 14:13:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198760-20190618135149.patch</filename>
            <type>text/plain</type>
            <size>102768</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZDBlOGJmYWJmOGRmOTZhOWM0ZWI5ZTQyZmMzYWYxMGQyNDE1MTA5Li45MjgzOTQzZDAxYWU5Njhh
ZWM3M2MxYTJlMGQwNmJiMTQ1NGZiMmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTkgQEAKKzIwMTktMDYtMTcgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBzdXBwb3J0IGZvciBt
dWx0aXBsZSB0YWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5ODc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAg
ICAgIFN1cHBvcnQgbXVsdGlwbGUgd2FzbSB0YWJsZXMuIFdlIHR1cm4gdGFibGVJbmZvcm1hdGlv
biBpbnRvIGEgdGFibGVzIGFycmF5LCBhbmQgdXBkYXRlIGFsbCBvZiB0aGUKKyAgICAgICAgZXhp
c3RpbmcgdXNlcnMgdG8gZ2l2ZSBhIHRhYmxlIGluZGV4LgorCisgICAgICAgICogd2FzbS9XYXNt
QWlySVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6
QWlySVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRk
VGFibGVHZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVT
ZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0
KToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206
OkIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdl
bmVyYXRvcjo6YWRkVGFibGVTZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9y
OjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAqIHdhc20vV2FzbUV4Y2VwdGlvblR5cGUuaDoK
KyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RWxlbWVu
dDo6RWxlbWVudCk6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZVVucmVh
Y2hhYmxlRXhwcmVzc2lvbik6CisgICAgICAgICogd2FzbS9XYXNtSW5zdGFuY2UuY3BwOgorICAg
ICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6SW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpXYXNt
OjpJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OmV4dHJh
TWVtb3J5QWxsb2NhdGVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnRh
YmxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnNldFRhYmxlKToKKyAgICAgICAg
KiB3YXNtL1dhc21JbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6dXBk
YXRlQ2FjaGVkTWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9m
R2xvYmFscyk6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpvZmZzZXRPZlRhYmxlUHRy
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OmFsbG9jYXRpb25TaXplKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
V2FzbTo6SW5zdGFuY2U6OnNldFRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6
SW5zdGFuY2U6Om9mZnNldE9mVGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbU1v
ZHVsZUluZm9ybWF0aW9uLmg6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZUluZm9ybWF0aW9u
Ojp0YWJsZUNvdW50IGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJbXBvcnQpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZVRhYmxlSGVscGVyKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VUYWJsZSk6CisgICAgICAgIChKU0M6
Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCk6CisgICAgICAgICogd2FzbS9XYXNt
VGFibGUuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6VGFibGU6Om93bmVyIGNvbnN0KToKKyAgICAg
ICAgKiB3YXNtL1dhc21WYWxpZGF0ZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRl
OjphZGRUYWJsZUdldCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRUYWJsZVNl
dCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRDYWxsSW5kaXJlY3QpOgorICAg
ICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdh
c20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3Nl
bWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkOjpsaW5rKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1
YXRlKToKKyAgICAgICAgKiB3YXNtL3dhc20uanNvbjoKKworICAgICAgICAqIHdhc20vV2FzbUFp
cklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OkFp
cklSR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFRh
YmxlR2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlU2V0
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCk6
CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OkIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpC
M0lSR2VuZXJhdG9yOjphZGRUYWJsZUdldCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5l
cmF0b3I6OmFkZFRhYmxlU2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6
YWRkQ2FsbEluZGlyZWN0KToKKyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6RWxlbWVudDo6RWxlbWVudCk6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rp
b25QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46
OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENv
bnRleHQ+OjpwYXJzZVVucmVhY2hhYmxlRXhwcmVzc2lvbik6CisgICAgICAgICogd2FzbS9XYXNt
SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6SW5zdGFuY2UpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6SW5zdGFuY2U6OmV4dHJhTWVtb3J5QWxsb2NhdGVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
V2FzbTo6SW5zdGFuY2U6OnRhYmxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnNl
dFRhYmxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6Z2V0V2FzbVRhYmxlRWxlbWVudCk6CisgICAg
ICAgIChKU0M6Oldhc206OnNldFdhc21UYWJsZUVsZW1lbnQpOgorICAgICAgICAqIHdhc20vV2Fz
bUluc3RhbmNlLmg6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjp1cGRhdGVDYWNoZWRN
ZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZHbG9iYWxzKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mVGFibGVQdHIpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpX
YXNtOjpJbnN0YW5jZTo6dGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0
YW5jZTo6c2V0VGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6
b2Zmc2V0T2ZUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtTGltaXRzLmg6Cisg
ICAgICAgICogd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6TW9kdWxlSW5mb3JtYXRpb246OnRhYmxlQ291bnQgY29uc3QpOgorICAgICAgICAqIHdhc20v
V2FzbVNlY3Rpb25QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2Vy
OjpwYXJzZUltcG9ydCk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNl
VGFibGVIZWxwZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZVRh
YmxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KToK
KyAgICAgICAgKiB3YXNtL1dhc21UYWJsZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpUYWJsZTo6
b3duZXIgY29uc3QpOgorICAgICAgICAqIHdhc20vV2FzbVZhbGlkYXRlLmNwcDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6VmFsaWRhdGU6OmFkZFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6
VmFsaWRhdGU6OmFkZFRhYmxlU2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsaWRhdGU6OmFk
ZENhbGxJbmRpcmVjdCk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2Uu
Y3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OkpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaDoKKyAgICAg
ICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmspOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJs
eU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUpOgorICAgICAgICAqIHdhc20vd2FzbS5qc29uOgorCiAy
MDE5LTA2LTE3ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBWYWxpZGF0ZSB0aGF0IHRhYmxlIGVsZW1lbnQgdHlwZSBpcyBmdW5jcmVmIGlmIHVz
aW5nIGFuIGVsZW1lbnQgc2VjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21BaXJJUkdlbmVyYXRvci5jcHAKaW5kZXggYWIzMDRhNTVkMzZiMzU4NDIyYjFhMDdkMmE0
NGIwMDBkZjUyMmRlNy4uZWZmN2UzMjI3YmY5ZGYyNGMyMTYyM2VkZjg5M2Y1YzkzMzhkNzdiMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwCkBAIC0yMzcsOCArMjM3LDggQEAgcHVibGljOgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIGFkZFJlZkZ1bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpOwogCiAgICAgLy8gVGFibGVzCi0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gYWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZVNl
dChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSk7CisgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQodW5zaWduZWQsIEV4cHJl
c3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVTZXQodW5zaWduZWQsIEV4cHJlc3Npb25U
eXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKTsKIAogICAgIC8vIExvY2FscwogICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBDYWxscwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENh
bGwodWludDMyX3QgY2FsbGVlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNz
aW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmLCBW
ZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QodW5zaWdu
ZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYg
YXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkVW5yZWFjaGFibGUoKTsKIAogICAgIFBhcnRpYWxSZXN1bHQgYWRkU2hp
ZnQoVHlwZSwgQjM6OkFpcjo6T3Bjb2RlLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSwgRXhwcmVzc2lv
blR5cGUgc2hpZnQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwpAQCAtNjI2LDYgKzYyNiw3IEBA
IHByaXZhdGU6CiAgICAgfQogCiAgICAgdWludDMyX3QgbV9tYXhOdW1KU0NhbGxBcmd1bWVudHMg
eyAwIH07CisgICAgdW5zaWduZWQgbV9udW1JbXBvcnRGdW5jdGlvbnM7CiAKICAgICBCMzo6UGF0
Y2hwb2ludFNwZWNpYWwqIG1fcGF0Y2hwb2ludFNwZWNpYWwgeyBudWxscHRyIH07CiB9OwpAQCAt
NjgxLDYgKzY4Miw3IEBAIEFpcklSR2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcihjb25zdCBNb2R1
bGVJbmZvcm1hdGlvbiYgaW5mbywgQjM6OlByb2NlZHVyZSYgcHJvCiAgICAgLCBtX3Byb2MocHJv
Y2VkdXJlKQogICAgICwgbV9jb2RlKG1fcHJvYy5jb2RlKCkpCiAgICAgLCBtX3VubGlua2VkV2Fz
bVRvV2FzbUNhbGxzKHVubGlua2VkV2FzbVRvV2FzbUNhbGxzKQorICAgICwgbV9udW1JbXBvcnRG
dW5jdGlvbnMoaW5mby5pbXBvcnRGdW5jdGlvbkNvdW50KCkpCiB7CiAgICAgbV9jdXJyZW50Qmxv
Y2sgPSBtX2NvZGUuYWRkQmxvY2soKTsKICAgICBtX3Jvb3RCbG9jayA9IG1fY3VycmVudEJsb2Nr
OwpAQCAtOTY4LDE0ICs5NzAsMTQgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyh1
aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGkKICAgICByZXR1
cm4geyB9OwogfQogCi1hdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZUdldChFeHByZXNzaW9u
VHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1
dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJl
c3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3Vs
dAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KICAgICBBU1NFUlQoaW5kZXgudG1wKCkpOwog
ICAgIEFTU0VSVChpbmRleC50eXBlKCkgPT0gVHlwZTo6STMyKTsKICAgICByZXN1bHQgPSB0bXBG
b3JUeXBlKFR5cGU6OkFueXJlZik7CiAKLSAgICBlbWl0Q0NhbGwoJmdldFdhc21UYWJsZUVsZW1l
bnQsIHJlc3VsdCwgaW5zdGFuY2VWYWx1ZSgpLCBpbmRleCk7CisgICAgZW1pdENDYWxsKCZnZXRX
YXNtVGFibGVFbGVtZW50LCByZXN1bHQsIGluc3RhbmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlw
ZTo6STMyLCB0YWJsZUluZGV4KSwgaW5kZXgpOwogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAg
ICByZXR1cm4gSW5zdChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fz
c2VtYmxlcjo6WmVybyksIHJlc3VsdCwgcmVzdWx0KTsKICAgICB9LCBbPV0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewpAQCAtOTg1LDcg
Kzk4Nyw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBl
JiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKICAgICByZXR1cm4geyB9OwogfQogCi1h
dXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4
cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBBaXJJUkdlbmVyYXRv
cjo6YWRkVGFibGVTZXQodW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUmIGluZGV4
LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBGSVhN
RTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5ODUwNj4uCiAgICAgQVNTRVJUKGluZGV4LnRtcCgpKTsKQEAgLTk5Myw3ICs5OTUsNyBA
QCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5kZXgs
IEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLQogICAgIEFTU0VSVCh2YWx1ZS50bXAoKSk7CiAKICAg
ICBhdXRvIHNob3VsZFRocm93ID0gZzMyKCk7Ci0gICAgZW1pdENDYWxsKCZzZXRXYXNtVGFibGVF
bGVtZW50LCBzaG91bGRUaHJvdywgaW5zdGFuY2VWYWx1ZSgpLCBpbmRleCwgdmFsdWUpOworICAg
IGVtaXRDQ2FsbCgmc2V0V2FzbVRhYmxlRWxlbWVudCwgc2hvdWxkVGhyb3csIGluc3RhbmNlVmFs
dWUoKSwgYWRkQ29uc3RhbnQoVHlwZTo6STMyLCB0YWJsZUluZGV4KSwgaW5kZXgsIHZhbHVlKTsK
IAogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICByZXR1cm4gSW5zdChCcmFuY2hUZXN0MzIs
IG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIHNob3VsZFRocm93
LCBzaG91bGRUaHJvdyk7CkBAIC0xODkzLDExICsxODk1LDEyIEBAIGF1dG8gQWlySVJHZW5lcmF0
b3I6OmFkZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUsCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2Fs
bEluZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5
cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CithdXRv
IEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29u
c3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBFeHByZXNzaW9u
VHlwZSBjYWxsZWVJbmRleCA9IGFyZ3MudGFrZUxhc3QoKTsKICAgICBBU1NFUlQoc2lnbmF0dXJl
LmFyZ3VtZW50Q291bnQoKSA9PSBhcmdzLnNpemUoKSk7Ci0gICAgQVNTRVJUKG1faW5mby50YWJs
ZUluZm9ybWF0aW9uLnR5cGUoKSA9PSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmKTsKKyAgICBB
U1NFUlQobV9pbmZvLnRhYmxlQ291bnQoKSA+IHRhYmxlSW5kZXgpOworICAgIEFTU0VSVChtX2lu
Zm8udGFibGVzW3RhYmxlSW5kZXhdLnR5cGUoKSA9PSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVm
KTsKIAogICAgIG1fbWFrZXNDYWxscyA9IHRydWU7CiAgICAgLy8gTm90ZTogY2FsbCBpbmRpcmVj
dCBjYW4gY2FsbCBlaXRoZXIgV2ViQXNzZW1ibHlGdW5jdGlvbiBvciBXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbi4gQmVjYXVzZQpAQCAtMTkxMiwxMiArMTkxNSwxNiBAQCBhdXRvIEFpcklSR2Vu
ZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3Rv
cjxFeHByZXNzaQogICAgIEV4cHJlc3Npb25UeXBlIGluc3RhbmNlc0J1ZmZlciA9IGc2NCgpOwog
ICAgIEV4cHJlc3Npb25UeXBlIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGggPSBnNjQoKTsK
ICAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEluc3Rh
bmNlOjpvZmZzZXRPZlRhYmxlKCksIEIzOjpXaWR0aDY0KSk7CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEZ1bmNSZWZUYWJsZTo6b2Zmc2V0T2ZGdW5jdGlvbnMo
KSwgQjM6OldpZHRoNjQpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoQXJnOjppc1ZhbGlkQWRk
ckZvcm0oRnVuY1JlZlRhYmxlOjpvZmZzZXRPZkluc3RhbmNlcygpLCBCMzo6V2lkdGg2NCkpOwog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChBcmc6OmlzVmFsaWRBZGRyRm9ybShGdW5jUmVmVGFibGU6
Om9mZnNldE9mTGVuZ3RoKCksIEIzOjpXaWR0aDY0KSk7CiAKLSAgICAgICAgYXBwZW5kKE1vdmUs
IEFyZzo6YWRkcihpbnN0YW5jZVZhbHVlKCksIEluc3RhbmNlOjpvZmZzZXRPZlRhYmxlKCkpLCBj
YWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFBcmc6
OmlzVmFsaWRBZGRyRm9ybShJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZVB0cihtX251bUltcG9ydEZ1
bmN0aW9ucywgdGFibGVJbmRleCksIEIzOjpXaWR0aDY0KSkpIHsKKyAgICAgICAgICAgIGFwcGVu
ZChNb3ZlLCBBcmc6OmJpZ0ltbShJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZVB0cihtX251bUltcG9y
dEZ1bmN0aW9ucywgdGFibGVJbmRleCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKTsK
KyAgICAgICAgICAgIGFwcGVuZChBZGQ2NCwgaW5zdGFuY2VWYWx1ZSgpLCBjYWxsYWJsZUZ1bmN0
aW9uQnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoY2Fs
bGFibGVGdW5jdGlvbkJ1ZmZlckxlbmd0aCksIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGgp
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoaW5z
dGFuY2VWYWx1ZSgpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZVB0cihtX251bUltcG9ydEZ1bmN0
aW9ucywgdGFibGVJbmRleCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKTsKICAgICAg
ICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoLCBG
dW5jUmVmVGFibGU6Om9mZnNldE9mRnVuY3Rpb25zKCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVy
KTsKICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihjYWxsYWJsZUZ1bmN0aW9uQnVmZmVy
TGVuZ3RoLCBGdW5jUmVmVGFibGU6Om9mZnNldE9mSW5zdGFuY2VzKCkpLCBpbnN0YW5jZXNCdWZm
ZXIpOwogICAgICAgICBhcHBlbmQoTW92ZTMyLCBBcmc6OmFkZHIoY2FsbGFibGVGdW5jdGlvbkJ1
ZmZlckxlbmd0aCwgVGFibGU6Om9mZnNldE9mTGVuZ3RoKCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVm
ZmVyTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcAppbmRleCA3NzYwOTc0ODQzZWNjZTJmMWU5YjE3MDU5MjVlOTg0YWFjY2JhMjkz
Li4xZWIyNDY1MmFlNGVkNmIzMjkwNzE5ZjdlZDUzMzY5MmQ1MTFkMmY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0xOTAsOCAr
MTkwLDggQEAgcHVibGljOgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFk
ZFJlZkZ1bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCiAgICAg
Ly8gVGFibGVzCi0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVH
ZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKLSAgICBQ
YXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZVNldChFeHByZXNzaW9uVHlw
ZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQodW5zaWduZWQsIEV4cHJlc3Npb25UeXBlJiBpbmRl
eCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkVGFibGVTZXQodW5zaWduZWQsIEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhw
cmVzc2lvblR5cGUmIHZhbHVlKTsKIAogICAgIC8vIExvY2FscwogICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxscwog
ICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2Fs
bGVlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3Ms
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURf
UkVUVVJOIGFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmLCBWZWN0b3I8RXhwcmVzc2lv
blR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwg
Y29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRk
VW5yZWFjaGFibGUoKTsKIAogICAgIHZvaWQgZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbEVudHJ5
PiYgY29udHJvbFN0YWNrLCBjb25zdCBFeHByZXNzaW9uTGlzdCogZXhwcmVzc2lvblN0YWNrKTsK
QEAgLTI5Miw2ICsyOTIsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHVpbnQzMl90IG1fbWF4
TnVtSlNDYWxsQXJndW1lbnRzIHsgMCB9OworICAgIHVuc2lnbmVkIG1fbnVtSW1wb3J0RnVuY3Rp
b25zOwogfTsKIAogLy8gTWVtb3J5IGFjY2Vzc2VzIGluIFdlYkFzc2VtYmx5IGhhdmUgdW5zaWdu
ZWQgMzItYml0IG9mZnNldHMsIHdoZXJlYXMgdGhleSBoYXZlIHNpZ25lZCAzMi1iaXQgb2Zmc2V0
cyBpbiBCMy4KQEAgLTM0Myw2ICszNDQsNyBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9y
KGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHByb2NlZHVyZQogICAg
ICwgbV9wcm9jKHByb2NlZHVyZSkKICAgICAsIG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHModW5s
aW5rZWRXYXNtVG9XYXNtQ2FsbHMpCiAgICAgLCBtX2NvbnN0YW50SW5zZXJ0aW9uVmFsdWVzKG1f
cHJvYykKKyAgICAsIG1fbnVtSW1wb3J0RnVuY3Rpb25zKGluZm8uaW1wb3J0RnVuY3Rpb25Db3Vu
dCgpKQogewogICAgIG1fY3VycmVudEJsb2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7CiAKQEAgLTU2
NiwxMiArNTY4LDEyIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkUmVmSXNOdWxsKEV4cHJlc3Np
b25UeXBlJiB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKICAgICByZXR1cm4geyB9Owog
fQogCi1hdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBpbmRl
eCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBCM0lSR2Vu
ZXJhdG9yOjphZGRUYWJsZUdldCh1bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSYg
aW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAv
LyBGSVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5ODUwNj4uCiAgICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxDQ2FsbFZhbHVlPihtX3Byb2MsIHRvQjNUeXBlKEFueXJlZiksIG9yaWdpbigpLAogICAgICAg
ICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2lu
KCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oJmdldFdhc21UYWJsZUVsZW1lbnQsIEIzQ0NhbGxQ
dHJUYWcpKSwKLSAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBpbmRleCk7CisgICAgICAgIGluc3Rh
bmNlVmFsdWUoKSwgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJv
Yywgb3JpZ2luKCksIHRhYmxlSW5kZXgpLCBpbmRleCk7CiAKICAgICB7CiAgICAgICAgIENoZWNr
VmFsdWUqIGNoZWNrID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3By
b2MsIENoZWNrLCBvcmlnaW4oKSwKQEAgLTU4NSwxMiArNTg3LDEyIEBAIGF1dG8gQjNJUkdlbmVy
YXRvcjo6YWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KSAtCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBCM0lSR2VuZXJhdG9yOjphZGRU
YWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4g
UGFydGlhbFJlc3VsdAorYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZVNldCh1bnNpZ25lZCB0
YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkg
LT4gUGFydGlhbFJlc3VsdAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KICAgICBhdXRvIHNo
b3VsZFRocm93ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2Ms
IEIzOjpJbnQzMiwgb3JpZ2luKCksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPigm
c2V0V2FzbVRhYmxlRWxlbWVudCwgQjNDQ2FsbFB0clRhZykpLAotICAgICAgICBpbnN0YW5jZVZh
bHVlKCksIGluZGV4LCB2YWx1ZSk7CisgICAgICAgIGluc3RhbmNlVmFsdWUoKSwgbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhYmxlSW5k
ZXgpLCBpbmRleCwgdmFsdWUpOwogCiAgICAgewogICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3Jp
Z2luKCksCkBAIC0xMjk4LDcgKzEzMDAsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGwo
dWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsCiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29u
c3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQjNJUkdlbmVyYXRv
cjo6YWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYg
c2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlSW5k
ZXggPSBhcmdzLnRha2VMYXN0KCk7CiAgICAgQVNTRVJUKHNpZ25hdHVyZS5hcmd1bWVudENvdW50
KCkgPT0gYXJncy5zaXplKCkpOwpAQCAtMTMxNSw3ICsxMzE3LDcgQEAgYXV0byBCM0lSR2VuZXJh
dG9yOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxF
eHByZXNzaW8KICAgICBFeHByZXNzaW9uVHlwZSBtYXNrOwogICAgIHsKICAgICAgICAgRXhwcmVz
c2lvblR5cGUgdGFibGUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPiht
X3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAotICAgICAgICAgICAgaW5zdGFu
Y2VWYWx1ZSgpLCBzYWZlQ2FzdDxpbnQzMl90PihJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZSgpKSk7
CisgICAgICAgICAgICBpbnN0YW5jZVZhbHVlKCksIHNhZmVDYXN0PGludDMyX3Q+KEluc3RhbmNl
OjpvZmZzZXRPZlRhYmxlUHRyKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCB0YWJsZUluZGV4KSkpOwog
ICAgICAgICBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwKICAg
ICAgICAgICAgIHRhYmxlLCBzYWZlQ2FzdDxpbnQzMl90PihGdW5jUmVmVGFibGU6Om9mZnNldE9m
RnVuY3Rpb25zKCkpKTsKICAgICAgICAgaW5zdGFuY2VzQnVmZmVyID0gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmln
aW4oKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAppbmRleCA3YzAzNDQx
N2ExM2YyNjFiODQ3NWM4ZWRjNDI3NGZhODA1MThiOWViLi40ZGIyOGE0ZTJiNmU5ZDU1MjI4MTY4
OGZhOWZhZGRmODkzZTVmYjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1h
dC5oCkBAIC0yMTMsMTAgKzIxMywxMiBAQCBzdHJ1Y3QgU2VnbWVudCB7CiB9OwogCiBzdHJ1Y3Qg
RWxlbWVudCB7Ci0gICAgRWxlbWVudChJMzJJbml0RXhwciBvZmZzZXQpCi0gICAgICAgIDogb2Zm
c2V0KG9mZnNldCkKKyAgICBFbGVtZW50KHVpbnQzMl90IHRhYmxlSW5kZXgsIEkzMkluaXRFeHBy
IG9mZnNldCkKKyAgICAgICAgOiB0YWJsZUluZGV4KHRhYmxlSW5kZXgpCisgICAgICAgICwgb2Zm
c2V0KG9mZnNldCkKICAgICB7IH0KIAorICAgIHVpbnQzMl90IHRhYmxlSW5kZXg7CiAgICAgSTMy
SW5pdEV4cHIgb2Zmc2V0OwogICAgIFZlY3Rvcjx1aW50MzJfdD4gZnVuY3Rpb25JbmRpY2VzOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBh
cnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgK
aW5kZXggNTllZWUyNjIyZGUyNjg1OTMyYzUxYzQyZmJlOGMxOTkzZjg0ZTk1Zi4uNzI1MDU0Mjhh
OWVlNDU2MDU5N2VlNzFjZDZlM2I0ZWZiOTUwMjAxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTI4MywxOSArMjgzLDIzIEBAIGF1
dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbigpIC0+IFBhcnRpYWxS
ZXN1bHQKIAogICAgIGNhc2UgVGFibGVHZXQ6IHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9J
RighT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzKCksICJyZWZlcmVuY2VzIGFyZSBu
b3QgZW5hYmxlZCIpOworICAgICAgICB1bnNpZ25lZCB0YWJsZUluZGV4OworICAgICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMih0YWJsZUluZGV4KSwgImNhbid0IHBhcnNl
IHRhYmxlIGluZGV4Iik7CiAgICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdCwgaW5kZXg7CiAg
ICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8oaW5kZXgsICJ0YWJsZS5n
ZXQiKTsKLSAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkVGFibGVHZXQoaW5kZXgs
IHJlc3VsdCkpOworICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRUYWJsZUdldCh0
YWJsZUluZGV4LCBpbmRleCwgcmVzdWx0KSk7CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFw
cGVuZChyZXN1bHQpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIGNhc2UgVGFi
bGVTZXQ6IHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNz
ZW1ibHlSZWZlcmVuY2VzKCksICJyZWZlcmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAg
ICB1bnNpZ25lZCB0YWJsZUluZGV4OworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJz
ZVZhclVJbnQzMih0YWJsZUluZGV4KSwgImNhbid0IHBhcnNlIHRhYmxlIGluZGV4Iik7CiAgICAg
ICAgIEV4cHJlc3Npb25UeXBlIHZhbCwgaW5kZXg7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBS
RVNTSU9OX1NUQUNLX0lOVE8odmFsLCAidGFibGUuc2V0Iik7CiAgICAgICAgIFdBU01fVFJZX1BP
UF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8oaW5kZXgsICJ0YWJsZS5zZXQiKTsKLSAgICAgICAgV0FT
TV9UUllfQUREX1RPX0NPTlRFWFQoYWRkVGFibGVTZXQoaW5kZXgsIHZhbCkpOworICAgICAgICBX
QVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRUYWJsZVNldCh0YWJsZUluZGV4LCBpbmRleCwgdmFs
KSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0zOTYsMTMgKzQwMCwxMyBAQCBh
dXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFs
UmVzdWx0CiAKICAgICBjYXNlIENhbGxJbmRpcmVjdDogewogICAgICAgICB1aW50MzJfdCBzaWdu
YXR1cmVJbmRleDsKLSAgICAgICAgdWludDhfdCByZXNlcnZlZDsKLSAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighbV9pbmZvLnRhYmxlSW5mb3JtYXRpb24sICJjYWxsX2luZGlyZWN0IGlzIG9u
bHkgdmFsaWQgd2hlbiBhIHRhYmxlIGlzIGRlZmluZWQgb3IgaW1wb3J0ZWQiKTsKKyAgICAgICAg
dWludDMyX3QgdGFibGVJbmRleDsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighbV9pbmZv
LnRhYmxlQ291bnQoKSwgImNhbGxfaW5kaXJlY3QgaXMgb25seSB2YWxpZCB3aGVuIGEgdGFibGUg
aXMgZGVmaW5lZCBvciBpbXBvcnRlZCIpOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFw
YXJzZVZhclVJbnQzMihzaWduYXR1cmVJbmRleCksICJjYW4ndCBnZXQgY2FsbF9pbmRpcmVjdCdz
IHNpZ25hdHVyZSBpbmRleCIpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZh
clVJbnQxKHJlc2VydmVkKSwgImNhbid0IGdldCBjYWxsX2luZGlyZWN0J3MgcmVzZXJ2ZWQgYnl0
ZSIpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHJlc2VydmVkLCAiY2FsbF9pbmRpcmVj
dCdzICdyZXNlcnZlZCcgdmFydWludDEgbXVzdCBiZSAweDAiKTsKKyAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIodGFibGVJbmRleCksICJjYW4ndCBnZXQgY2FsbF9p
bmRpcmVjdCdzIHRhYmxlIGluZGV4Iik7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodGFi
bGVJbmRleCA+PSBtX2luZm8udGFibGVDb3VudCgpLCAiY2FsbF9pbmRpcmVjdCdzIHRhYmxlIGlu
ZGV4ICIsIHRhYmxlSW5kZXgsICIgaW52YWxpZCwgbGltaXQgaXMgIiwgbV9pbmZvLnRhYmxlQ291
bnQoKSk7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYobV9pbmZvLnVzZWRTaWduYXR1cmVz
LnNpemUoKSA8PSBzaWduYXR1cmVJbmRleCwgImNhbGxfaW5kaXJlY3QncyBzaWduYXR1cmUgaW5k
ZXggIiwgc2lnbmF0dXJlSW5kZXgsICIgZXhjZWVkcyBrbm93biBzaWduYXR1cmVzICIsIG1faW5m
by51c2VkU2lnbmF0dXJlcy5zaXplKCkpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1f
aW5mby50YWJsZUluZm9ybWF0aW9uLnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVm
LCAiY2FsbF9pbmRpcmVjdCBpcyBvbmx5IHZhbGlkIHdoZW4gYSB0YWJsZSBoYXMgdHlwZSBhbnlm
dW5jIik7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYobV9pbmZvLnRhYmxlc1t0YWJsZUlu
ZGV4XS50eXBlKCkgIT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgImNhbGxfaW5kaXJlY3Qg
aXMgb25seSB2YWxpZCB3aGVuIGEgdGFibGUgaGFzIHR5cGUgYW55ZnVuYyIpOwogCiAgICAgICAg
IGNvbnN0IFNpZ25hdHVyZSYgY2FsbGVlU2lnbmF0dXJlID0gbV9pbmZvLnVzZWRTaWduYXR1cmVz
W3NpZ25hdHVyZUluZGV4XS5nZXQoKTsKICAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBj
YWxsZWVTaWduYXR1cmUuYXJndW1lbnRDb3VudCgpICsgMTsgLy8gQWRkIHRoZSBjYWxsZWUncyBp
bmRleC4KQEAgLTQxNiw3ICs0MjAsNyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+Ojpw
YXJzZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIG1fZXhwcmVzc2lvblN0
YWNrLnNocmluayhmaXJzdEFyZ3VtZW50SW5kZXgpOwogCiAgICAgICAgIEV4cHJlc3Npb25UeXBl
IHJlc3VsdCA9IENvbnRleHQ6OmVtcHR5RXhwcmVzc2lvbigpOwotICAgICAgICBXQVNNX1RSWV9B
RERfVE9fQ09OVEVYVChhZGRDYWxsSW5kaXJlY3QoY2FsbGVlU2lnbmF0dXJlLCBhcmdzLCByZXN1
bHQpKTsKKyAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkQ2FsbEluZGlyZWN0KHRh
YmxlSW5kZXgsIGNhbGxlZVNpZ25hdHVyZSwgYXJncywgcmVzdWx0KSk7CiAKICAgICAgICAgaWYg
KHJlc3VsdCAhPSBDb250ZXh0OjplbXB0eUV4cHJlc3Npb24oKSkKICAgICAgICAgICAgIG1fZXhw
cmVzc2lvblN0YWNrLmFwcGVuZChyZXN1bHQpOwpAQCAtNjMxLDkgKzYzNSw5IEBAIGF1dG8gRnVu
Y3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlVW5yZWFjaGFibGVFeHByZXNzaW9uKCkgLT4gUGFy
dGlhbFJlc3VsdAogCiAgICAgY2FzZSBDYWxsSW5kaXJlY3Q6IHsKICAgICAgICAgdWludDMyX3Qg
dW51c2VkOwotICAgICAgICB1aW50OF90IHVudXNlZDI7CisgICAgICAgIHVpbnQzMl90IHVudXNl
ZDI7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHVudXNlZCks
ICJjYW4ndCBnZXQgY2FsbF9pbmRpcmVjdCdzIHNpZ25hdHVyZSBpbmRleCBpbiB1bnJlYWNoYWJs
ZSBjb250ZXh0Iik7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDEo
dW51c2VkMiksICJjYW4ndCBnZXQgY2FsbF9pbmRpcmVjdCdzIHJlc2VydmVkIGJ5dGUgaW4gdW5y
ZWFjaGFibGUgY29udGV4dCIpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZh
clVJbnQzMih1bnVzZWQyKSwgImNhbid0IGdldCBjYWxsX2luZGlyZWN0J3MgcmVzZXJ2ZWQgYnl0
ZSBpbiB1bnJlYWNoYWJsZSBjb250ZXh0Iik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQog
CkBAIC02ODUsNyArNjg5LDExIEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNl
VW5yZWFjaGFibGVFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogICAgIH0KIAogICAgIGNh
c2UgVGFibGVHZXQ6Ci0gICAgY2FzZSBUYWJsZVNldDoKKyAgICBjYXNlIFRhYmxlU2V0OiB7Cisg
ICAgICAgIHVuc2lnbmVkIHRhYmxlSW5kZXg7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
IXBhcnNlVmFyVUludDMyKHRhYmxlSW5kZXgpLCAiY2FuJ3QgcGFyc2UgdGFibGUgaW5kZXgiKTsK
KyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgfQogICAgIGNhc2UgUmVmSXNOdWxsOgogICAgIGNh
c2UgUmVmTnVsbDogewogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VX
ZWJBc3NlbWJseVJlZmVyZW5jZXMoKSwgInJlZmVyZW5jZXMgYXJlIG5vdCBlbmFibGVkIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcAppbmRleCA1MmJmMGYy
YjMzMTBkOGJhZGIwMmQ0Mzk5NTAwMWQ0M2YxYmYyYzgwLi5kNWQzYWFiMTRlY2YyNWVmNDE3NzQ4
OTM3OTAzMjE0YjMzMDU2ZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21J
bnN0YW5jZS5jcHAKQEAgLTYxLDE4ICs2MSwxOSBAQCBJbnN0YW5jZTo6SW5zdGFuY2UoQ29udGV4
dCogY29udGV4dCwgUmVmPE1vZHVsZT4mJiBtb2R1bGUsIEVudHJ5RnJhbWUqKiBwb2ludGVyVAog
ICAgICAgICBpZiAoaXNTdWJ0eXBlKG1fbW9kdWxlLmdldCgpLm1vZHVsZUluZm9ybWF0aW9uKCku
Z2xvYmFsc1tpXS50eXBlLCBBbnlyZWYpKQogICAgICAgICAgICAgbV9nbG9iYWxzVG9NYXJrLnNl
dChpKTsKICAgICB9CisgICAgbWVtc2V0KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZz
ZXRPZlRhYmxlUHRyKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCAwKSwgMCwgbV9tb2R1bGUtPm1vZHVs
ZUluZm9ybWF0aW9uKCkudGFibGVDb3VudCgpICogc2l6ZW9mKFRhYmxlKikpOwogfQogCiBSZWY8
SW5zdGFuY2U+IEluc3RhbmNlOjpjcmVhdGUoQ29udGV4dCogY29udGV4dCwgUmVmPE1vZHVsZT4m
JiBtb2R1bGUsIEVudHJ5RnJhbWUqKiBwb2ludGVyVG9Ub3BFbnRyeUZyYW1lLCB2b2lkKiogcG9p
bnRlclRvQWN0dWFsU3RhY2tMaW1pdCwgU3RvcmVUb3BDYWxsRnJhbWVDYWxsYmFjayYmIHN0b3Jl
VG9wQ2FsbEZyYW1lKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBmYXN0
TWFsbG9jKGFsbG9jYXRpb25TaXplKG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5pbXBvcnRG
dW5jdGlvbkNvdW50KCkpKSkgSW5zdGFuY2UoY29udGV4dCwgV1RGTW92ZShtb2R1bGUpLCBwb2lu
dGVyVG9Ub3BFbnRyeUZyYW1lLCBwb2ludGVyVG9BY3R1YWxTdGFja0xpbWl0LCBXVEZNb3ZlKHN0
b3JlVG9wQ2FsbEZyYW1lKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBm
YXN0TWFsbG9jKGFsbG9jYXRpb25TaXplKG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5pbXBv
cnRGdW5jdGlvbkNvdW50KCksIG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50
KCkpKSkgSW5zdGFuY2UoY29udGV4dCwgV1RGTW92ZShtb2R1bGUpLCBwb2ludGVyVG9Ub3BFbnRy
eUZyYW1lLCBwb2ludGVyVG9BY3R1YWxTdGFja0xpbWl0LCBXVEZNb3ZlKHN0b3JlVG9wQ2FsbEZy
YW1lKSkpOwogfQogCiBJbnN0YW5jZTo6fkluc3RhbmNlKCkgeyB9CiAKIHNpemVfdCBJbnN0YW5j
ZTo6ZXh0cmFNZW1vcnlBbGxvY2F0ZWQoKSBjb25zdAogewotICAgIHJldHVybiBnbG9iYWxNZW1v
cnlCeXRlU2l6ZShtX21vZHVsZS5nZXQoKSkgKyBhbGxvY2F0aW9uU2l6ZShtX251bUltcG9ydEZ1
bmN0aW9ucyk7CisgICAgcmV0dXJuIGdsb2JhbE1lbW9yeUJ5dGVTaXplKG1fbW9kdWxlLmdldCgp
KSArIGFsbG9jYXRpb25TaXplKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCBtX21vZHVsZS0+bW9kdWxl
SW5mb3JtYXRpb24oKS50YWJsZUNvdW50KCkpOwogfQogCiB2b2lkIEluc3RhbmNlOjpzZXRHbG9i
YWwodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTk5LDQyICsxMDAsNTggQEAgdm9pZCBJ
bnN0YW5jZTo6c2V0RnVuY3Rpb25XcmFwcGVyKHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiAg
ICAgQVNTRVJUKGdldEZ1bmN0aW9uV3JhcHBlcihpKSA9PSB2YWx1ZSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIGdldFdhc21UYWJsZUVsZW1lbnQoSW5zdGFuY2UqIGluc3RhbmNlLCBpbnQzMl90IHNp
Z25lZEluZGV4KQorVGFibGUqIEluc3RhbmNlOjp0YWJsZSh1bnNpZ25lZCBpKQogeworICAgIFJF
TEVBU0VfQVNTRVJUKGkgPCBtX21vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50
KCkpOworICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFRhYmxlKio+KGJpdHdpc2VfY2FzdDxjaGFy
Kj4odGhpcykgKyBvZmZzZXRPZlRhYmxlUHRyKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCBpKSk7Cit9
CisKK3ZvaWQgSW5zdGFuY2U6OnNldFRhYmxlKHVuc2lnbmVkIGksIFJlZjxUYWJsZT4mJiB0YWJs
ZSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChpIDwgbV9tb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9u
KCkudGFibGVDb3VudCgpKTsKKyAgICBpZiAoYXV0byogdGFibGUgPSB0aGlzLT50YWJsZShpKSkK
KyAgICAgICAgdGFibGUtPmRlcmVmKCk7CisgICAgKmJpdHdpc2VfY2FzdDxUYWJsZSoqPihiaXR3
aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZUYWJsZVB0cihtX251bUltcG9ydEZ1bmN0
aW9ucywgaSkpID0gJnRhYmxlLmxlYWtSZWYoKTsKK30KKworRW5jb2RlZEpTVmFsdWUgZ2V0V2Fz
bVRhYmxlRWxlbWVudChJbnN0YW5jZSogaW5zdGFuY2UsIHVuc2lnbmVkIHRhYmxlSW5kZXgsIGlu
dDMyX3Qgc2lnbmVkSW5kZXgpCit7CisgICAgQVNTRVJUKHRhYmxlSW5kZXggPCBpbnN0YW5jZS0+
bW9kdWxlKCkubW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50KCkpOwogICAgIGlmIChzaWdu
ZWRJbmRleCA8IDApCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgdWludDMyX3QgaW5kZXggPSBz
aWduZWRJbmRleDsKLSAgICBpZiAoaW5kZXggPj0gaW5zdGFuY2UtPnRhYmxlKCktPmxlbmd0aCgp
KQorICAgIGlmIChpbmRleCA+PSBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPmxlbmd0aCgp
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaW5zdGFu
Y2UtPnRhYmxlKCktPmdldChpbmRleCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaW5z
dGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5nZXQoaW5kZXgpKTsKIH0KIAotYm9vbCBzZXRXYXNt
VGFibGVFbGVtZW50KEluc3RhbmNlKiBpbnN0YW5jZSwgaW50MzJfdCBzaWduZWRJbmRleCwgRW5j
b2RlZEpTVmFsdWUgZW5jVmFsdWUpCitib29sIHNldFdhc21UYWJsZUVsZW1lbnQoSW5zdGFuY2Uq
IGluc3RhbmNlLCB1bnNpZ25lZCB0YWJsZUluZGV4LCBpbnQzMl90IHNpZ25lZEluZGV4LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNWYWx1ZSkKIHsKKyAgICBBU1NFUlQodGFibGVJbmRleCA8IGluc3RhbmNl
LT5tb2R1bGUoKS5tb2R1bGVJbmZvcm1hdGlvbigpLnRhYmxlQ291bnQoKSk7CiAgICAgaWYgKHNp
Z25lZEluZGV4IDwgMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdWludDMyX3QgaW5k
ZXggPSBzaWduZWRJbmRleDsKLSAgICBpZiAoaW5kZXggPj0gaW5zdGFuY2UtPnRhYmxlKCktPmxl
bmd0aCgpKQorICAgIGlmIChpbmRleCA+PSBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPmxl
bmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY1ZhbHVlKTsKLSAgICBpZiAoaW5zdGFuY2UtPnRhYmxlKCktPnR5cGUo
KSA9PSBXYXNtOjpUYWJsZUVsZW1lbnRUeXBlOjpBbnlyZWYpCi0gICAgICAgIGluc3RhbmNlLT50
YWJsZSgpLT5zZXQoaW5kZXgsIHZhbHVlKTsKLSAgICBlbHNlIGlmIChpbnN0YW5jZS0+dGFibGUo
KS0+dHlwZSgpID09IFdhc206OlRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpIHsKKyAgICBpZiAo
aW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT50eXBlKCkgPT0gV2FzbTo6VGFibGVFbGVtZW50
VHlwZTo6QW55cmVmKQorICAgICAgICBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPnNldChp
bmRleCwgdmFsdWUpOworICAgIGVsc2UgaWYgKGluc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+
dHlwZSgpID09IFdhc206OlRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpIHsKICAgICAgICAgV2Vi
QXNzZW1ibHlGdW5jdGlvbiogd2FzbUZ1bmN0aW9uOwogICAgICAgICBXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbiogd2FzbVdyYXBwZXJGdW5jdGlvbjsKIAogICAgICAgICBpZiAoaXNXZWJBc3Nl
bWJseUhvc3RGdW5jdGlvbigqaW5zdGFuY2UtPm93bmVyPEpTT2JqZWN0PigpLT52bSgpLCB2YWx1
ZSwgd2FzbUZ1bmN0aW9uLCB3YXNtV3JhcHBlckZ1bmN0aW9uKSkgewogICAgICAgICAgICAgQVNT
RVJUKCEhd2FzbUZ1bmN0aW9uIHx8ICEhd2FzbVdyYXBwZXJGdW5jdGlvbik7CiAgICAgICAgICAg
ICBpZiAod2FzbUZ1bmN0aW9uKQotICAgICAgICAgICAgICAgIGluc3RhbmNlLT50YWJsZSgpLT5h
c0Z1bmNyZWZUYWJsZSgpLT5zZXRGdW5jdGlvbihpbmRleCwganNDYXN0PEpTT2JqZWN0Kj4odmFs
dWUpLCB3YXNtRnVuY3Rpb24tPmltcG9ydGFibGVGdW5jdGlvbigpLCAmd2FzbUZ1bmN0aW9uLT5p
bnN0YW5jZSgpLT5pbnN0YW5jZSgpKTsKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+dGFibGUo
dGFibGVJbmRleCktPmFzRnVuY3JlZlRhYmxlKCktPnNldEZ1bmN0aW9uKGluZGV4LCBqc0Nhc3Q8
SlNPYmplY3QqPih2YWx1ZSksIHdhc21GdW5jdGlvbi0+aW1wb3J0YWJsZUZ1bmN0aW9uKCksICZ3
YXNtRnVuY3Rpb24tPmluc3RhbmNlKCktPmluc3RhbmNlKCkpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGluc3RhbmNlLT50YWJsZSgpLT5hc0Z1bmNyZWZUYWJsZSgpLT5zZXRG
dW5jdGlvbihpbmRleCwganNDYXN0PEpTT2JqZWN0Kj4odmFsdWUpLCB3YXNtV3JhcHBlckZ1bmN0
aW9uLT5pbXBvcnRhYmxlRnVuY3Rpb24oKSwgJndhc21XcmFwcGVyRnVuY3Rpb24tPmluc3RhbmNl
KCktPmluc3RhbmNlKCkpOworICAgICAgICAgICAgICAgIGluc3RhbmNlLT50YWJsZSh0YWJsZUlu
ZGV4KS0+YXNGdW5jcmVmVGFibGUoKS0+c2V0RnVuY3Rpb24oaW5kZXgsIGpzQ2FzdDxKU09iamVj
dCo+KHZhbHVlKSwgd2FzbVdyYXBwZXJGdW5jdGlvbi0+aW1wb3J0YWJsZUZ1bmN0aW9uKCksICZ3
YXNtV3JhcHBlckZ1bmN0aW9uLT5pbnN0YW5jZSgpLT5pbnN0YW5jZSgpKTsKICAgICAgICAgfSBl
bHNlIGlmICh2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAgIGluc3RhbmNlLT50YWJsZSgpLT5j
bGVhcihpbmRleCk7CisgICAgICAgICAgICBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPmNs
ZWFyKGluZGV4KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtSW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5o
CmluZGV4IDdhMjNlNTYyODI0ZjgxZTM1ODYwZWU3YWIwZDk4NThhZjNiM2IyNzkuLjAxMmNkNDU3
M2FhODRmOTY0NzBjYjA3MTk4YzdhNzBiYjBmM2E3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21JbnN0YW5jZS5oCkBAIC00MSw4ICs0MSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgV2FzbSB7CiBzdHJ1Y3QgQ29udGV4dDsKIGNsYXNzIEluc3RhbmNlOwogCi1FbmNv
ZGVkSlNWYWx1ZSBnZXRXYXNtVGFibGVFbGVtZW50KEluc3RhbmNlKiwgaW50MzJfdCk7Ci1ib29s
IHNldFdhc21UYWJsZUVsZW1lbnQoSW5zdGFuY2UqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSBl
bmNWYWx1ZSk7CitFbmNvZGVkSlNWYWx1ZSBnZXRXYXNtVGFibGVFbGVtZW50KEluc3RhbmNlKiwg
dW5zaWduZWQsIGludDMyX3QpOworYm9vbCBzZXRXYXNtVGFibGVFbGVtZW50KEluc3RhbmNlKiwg
dW5zaWduZWQsIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlIGVuY1ZhbHVlKTsKIEVuY29kZWRKU1Zh
bHVlIGRvV2FzbVJlZkZ1bmMoSW5zdGFuY2UqLCB1aW50MzJfdCk7CiAKIGNsYXNzIEluc3RhbmNl
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPEluc3RhbmNlPiB7CkBAIC03MCw3ICs3MCw4IEBAIHB1YmxpYzoKICAgICBNb2R1bGUm
IG1vZHVsZSgpIHsgcmV0dXJuIG1fbW9kdWxlLmdldCgpOyB9CiAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2soKSB7IHJldHVybiBtX2NvZGVCbG9jay5nZXQoKTsgfQogICAgIE1lbW9yeSogbWVtb3J5
KCkgeyByZXR1cm4gbV9tZW1vcnkuZ2V0KCk7IH0KLSAgICBUYWJsZSogdGFibGUoKSB7IHJldHVy
biBtX3RhYmxlLmdldCgpOyB9CisgICAgVGFibGUqIHRhYmxlKHVuc2lnbmVkKTsKKyAgICB2b2lk
IHNldFRhYmxlKHVuc2lnbmVkLCBSZWY8VGFibGU+JiYpOwogCiAgICAgdm9pZCogY2FjaGVkTWVt
b3J5KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRNZW1vcnkuZ2V0TWF5QmVOdWxsKGNhY2hlZE1l
bW9yeVNpemUoKSk7IH0KICAgICBzaXplX3QgY2FjaGVkTWVtb3J5U2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FjaGVkTWVtb3J5U2l6ZTsgfQpAQCAtODgsNyArODksNiBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBtX2NhY2hlZE1lbW9yeVNpemUgPSBtZW1vcnkoKS0+c2l6ZSgpOwogICAgICAgICB9
CiAgICAgfQotICAgIHZvaWQgc2V0VGFibGUoUmVmPFRhYmxlPiYmIHRhYmxlKSB7IG1fdGFibGUg
PSBXVEZNb3ZlKHRhYmxlKTsgfQogCiAgICAgaW50MzJfdCBsb2FkSTMyR2xvYmFsKHVuc2lnbmVk
IGkpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFscy5nZXQoKVtpXS5wcmltaXRpdmU7IH0KICAgICBp
bnQ2NF90IGxvYWRJNjRHbG9iYWwodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxz
LmdldCgpW2ldLnByaW1pdGl2ZTsgfQpAQCAtMTAzLDcgKzEwMyw2IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNZW1vcnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoSW5zdGFuY2UsIG1fbWVtb3J5KTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZH
bG9iYWxzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX2dsb2JhbHMpOyB9
Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlRhYmxlKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEluc3RhbmNlLCBtX3RhYmxlKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0
T2ZDYWNoZWRNZW1vcnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fY2Fj
aGVkTWVtb3J5KTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWNoZWRNZW1vcnlT
aXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX2NhY2hlZE1lbW9yeVNp
emUpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlBvaW50ZXJUb1RvcEVudHJ5RnJh
bWUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fcG9pbnRlclRvVG9wRW50
cnlGcmFtZSk7IH0KQEAgLTEyMiw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8g
VGFpbCBhY2Nlc3NvcnMuCi0gICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZlRhaWwoKSB7IHJldHVy
biBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHVpbnQ2NF90KT4oc2l6ZW9mKEluc3Rh
bmNlKSk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBvZmZzZXRPZlRhaWwoKSB7IHJl
dHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHVpbnQ2NF90KT4oc2l6ZW9mKElu
c3RhbmNlKSk7IH0KICAgICBzdHJ1Y3QgSW1wb3J0RnVuY3Rpb25JbmZvIHsKICAgICAgICAgLy8g
VGFyZ2V0IGluc3RhbmNlIGFuZCBlbnRyeXBvaW50IGFyZSBvbmx5IHNldCBmb3Igd2FzbS0+d2Fz
bSBjYWxscywgYW5kIGFyZSBvdGhlcndpc2UgbnVsbHB0ci4gVGhlIGVtYmVkZGVyLXNwZWNpZmlj
IGxvZ2ljIG9jY3VycyB0aHJvdWdoIGltcG9ydCBmdW5jdGlvbi4KICAgICAgICAgSW5zdGFuY2Uq
IHRhcmdldEluc3RhbmNlIHsgbnVsbHB0ciB9OwpAQCAtMTQyLDYgKzE0MSw5IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW1wb3J0RnVuY3Rpb24oc2l6ZV90IGltcG9ydEZ1
bmN0aW9uTnVtKSB7IHJldHVybiBvZmZzZXRPZlRhaWwoKSArIGltcG9ydEZ1bmN0aW9uTnVtICog
c2l6ZW9mKEltcG9ydEZ1bmN0aW9uSW5mbykgKyBPQkpFQ1RfT0ZGU0VUT0YoSW1wb3J0RnVuY3Rp
b25JbmZvLCBpbXBvcnRGdW5jdGlvbik7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUKiBp
bXBvcnRGdW5jdGlvbih1bnNpZ25lZCBpbXBvcnRGdW5jdGlvbk51bSkgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxUKj4oJmltcG9ydEZ1bmN0aW9uSW5mbyhpbXBvcnRGdW5jdGlvbk51bSktPmlt
cG9ydEZ1bmN0aW9uKTsgfQogCisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoSW1wb3J0RnVuY3Rp
b25JbmZvKSA9PSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHVpbnQ2NF90KT4oc2l6
ZW9mKEltcG9ydEZ1bmN0aW9uSW5mbykpLCAiV2UgcmVseSBvbiB0aGlzIGZvciB0aGUgYWxpZ25t
ZW50IHRvIGJlIGNvcnJlY3QiKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBvZmZzZXRP
ZlRhYmxlUHRyKHVuc2lnbmVkIG51bUltcG9ydEZ1bmN0aW9ucywgdW5zaWduZWQgaSkgeyByZXR1
cm4gb2Zmc2V0T2ZUYWlsKCkgKyBzaXplb2YoSW1wb3J0RnVuY3Rpb25JbmZvKSAqIG51bUltcG9y
dEZ1bmN0aW9ucyArIHNpemVvZihUYWJsZSopICogaTsgfQorCiAgICAgdm9pZCBzdG9yZVRvcENh
bGxGcmFtZSh2b2lkKiBjYWxsRnJhbWUpCiAgICAgewogICAgICAgICBtX3N0b3JlVG9wQ2FsbEZy
YW1lKGNhbGxGcmFtZSk7CkBAIC0xNTAsOSArMTUyLDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBJbnN0YW5jZShDb250ZXh0KiwgUmVmPE1vZHVsZT4mJiwgRW50cnlGcmFtZSoqLCB2b2lkKios
IFN0b3JlVG9wQ2FsbEZyYW1lQ2FsbGJhY2smJik7CiAgICAgCi0gICAgc3RhdGljIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gbnVtSW1wb3J0RnVuY3Rpb25zKQorICAgIHN0
YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IG51bUltcG9ydEZ1bmN0
aW9ucywgQ2hlY2tlZDxzaXplX3Q+IG51bVRhYmxlcykKICAgICB7Ci0gICAgICAgIHJldHVybiAo
b2Zmc2V0T2ZUYWlsKCkgKyBzaXplb2YoSW1wb3J0RnVuY3Rpb25JbmZvKSAqIG51bUltcG9ydEZ1
bmN0aW9ucykudW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiAob2Zmc2V0T2ZUYWlsKCkgKyBz
aXplb2YoSW1wb3J0RnVuY3Rpb25JbmZvKSAqIG51bUltcG9ydEZ1bmN0aW9ucyArIHNpemVvZihU
YWJsZSopICogbnVtVGFibGVzKS51bnNhZmVHZXQoKTsKICAgICB9CiAgICAgdm9pZCogbV9vd25l
ciB7IG51bGxwdHIgfTsgLy8gSW4gYSBKUyBlbWJlZGRpbmcsIHRoaXMgaXMgYSBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UqLgogICAgIENvbnRleHQqIG1fY29udGV4dCB7IG51bGxwdHIgfTsKQEAgLTE2
MSw3ICsxNjMsNiBAQCBwcml2YXRlOgogICAgIFJlZjxNb2R1bGU+IG1fbW9kdWxlOwogICAgIFJl
ZlB0cjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwogICAgIFJlZlB0cjxNZW1vcnk+IG1fbWVtb3J5
OwotICAgIFJlZlB0cjxUYWJsZT4gbV90YWJsZTsKIAogICAgIHVuaW9uIEdsb2JhbFZhbHVlIHsK
ICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IGFueXJlZjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MaW1pdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21MaW1pdHMuaAppbmRleCBjNmY2Y2RjYmJjZGNkNzg1ZTM1ZjY0MmM3ZTg4MGQ4
ODlmZGIzOGFhLi5jZjhiNDQ2MDM2ODExMjNlY2MyNWNmYzM3MjQ5OGI1ZjViNThjOTg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTGltaXRzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxpbWl0cy5oCkBAIC01MSw2ICs1MSw3IEBAIGNv
bnN0ZXhwciBzaXplX3QgbWF4RnVuY3Rpb25Mb2NhbHMgPSA1MDAwMDsKIGNvbnN0ZXhwciBzaXpl
X3QgbWF4RnVuY3Rpb25QYXJhbXMgPSAxMDAwOwogCiBjb25zdGV4cHIgc2l6ZV90IG1heFRhYmxl
RW50cmllcyA9IDEwMDAwMDAwOworY29uc3RleHByIHVuc2lnbmVkIG1heFRhYmxlcyA9IDEwMDAw
MDA7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgKaW5kZXggODhmNjZjYjYzOTE1
OWMzNjlkOWRkZTYwYTFmY2U2ZGE1ZDE3MTI4OS4uMjY4Zjg4YmIxMGJmNzQ4NWZhNjUxNjU1MjRl
NzA0YjY1OTk4NzI1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU1vZHVsZUluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU1vZHVsZUluZm9ybWF0aW9uLmgKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IE1vZHVsZUluZm9y
bWF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1vZHVsZUluZm9ybWF0aW9uPiB7
CiAgICAgLy8gQ3VycmVudGx5LCBvdXIgd2FzbSBpbXBsZW1lbnRhdGlvbiBhbGxvd3Mgb25seSBv
bmUgbWVtb3J5IGFuZCB0YWJsZS4KICAgICAvLyBJZiB3ZSBuZWVkIHRvIHJlbW92ZSB0aGlzIGxp
bWl0YXRpb24sIHdlIHdvdWxkIGhhdmUgTWVtb3J5SW5mb3JtYXRpb24gYW5kIFRhYmxlSW5mb3Jt
YXRpb24gaW4gdGhlIFZlY3RvcnMuCiAgICAgdWludDMyX3QgbWVtb3J5Q291bnQoKSBjb25zdCB7
IHJldHVybiBtZW1vcnkgPyAxIDogMDsgfQotICAgIHVpbnQzMl90IHRhYmxlQ291bnQoKSBjb25z
dCB7IHJldHVybiB0YWJsZUluZm9ybWF0aW9uID8gMSA6IDA7IH0KKyAgICB1aW50MzJfdCB0YWJs
ZUNvdW50KCkgY29uc3QgeyByZXR1cm4gdGFibGVzLnNpemUoKTsgfQogCiAgICAgY29uc3QgQml0
VmVjdG9yJiByZWZlcmVuY2VkRnVuY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2Vk
RnVuY3Rpb25zOyB9CiAgICAgdm9pZCBhZGRSZWZlcmVuY2VkRnVuY3Rpb24odW5zaWduZWQgaW5k
ZXgpIGNvbnN0IHsgbV9yZWZlcmVuY2VkRnVuY3Rpb25zLnNldChpbmRleCk7IH0KQEAgLTgzLDcg
KzgzLDcgQEAgc3RydWN0IE1vZHVsZUluZm9ybWF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPE1vZHVsZUluZm9ybWF0aW9uPiB7CiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IHN0YXJ0
RnVuY3Rpb25JbmRleFNwYWNlOwogICAgIFZlY3RvcjxTZWdtZW50OjpQdHI+IGRhdGE7CiAgICAg
VmVjdG9yPEVsZW1lbnQ+IGVsZW1lbnRzOwotICAgIFRhYmxlSW5mb3JtYXRpb24gdGFibGVJbmZv
cm1hdGlvbjsKKyAgICBWZWN0b3I8VGFibGVJbmZvcm1hdGlvbj4gdGFibGVzOwogICAgIFZlY3Rv
cjxHbG9iYWw+IGdsb2JhbHM7CiAgICAgdW5zaWduZWQgZmlyc3RJbnRlcm5hbEdsb2JhbCB7IDAg
fTsKICAgICBWZWN0b3I8Q3VzdG9tU2VjdGlvbj4gY3VzdG9tU2VjdGlvbnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKaW5kZXggYzgwMzE0
ZGZkYTAwM2ZlYjJiNWYwN2NhOWZhOTljZDg4ODNkZWE3MC4uZWY1MTIxNjc1MmExMjY1ZTEwMjRk
MzdlOTI4OWVjNDhiYWZmZGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TZWN0aW9uUGFyc2VyLmNwcApAQCAtMTE5LDYgKzExOSw3IEBAIGF1dG8gU2VjdGlvblBh
cnNlcjo6cGFyc2VJbXBvcnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBFeHRlcm5hbEtpbmQ6OlRhYmxlOiB7CiAgICAgICAgICAgICBib29sIGlzSW1wb3J0ID0g
dHJ1ZTsKKyAgICAgICAgICAgIGtpbmRJbmRleCA9IG1faW5mby0+dGFibGVzLnNpemUoKTsKICAg
ICAgICAgICAgIFBhcnRpYWxSZXN1bHQgcmVzdWx0ID0gcGFyc2VUYWJsZUhlbHBlcihpc0ltcG9y
dCk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUocmVzdWx0LmVycm9yKCkpKTsKQEAgLTE5Myw3
ICsxOTQsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlUmVzaXphYmxlTGltaXRzKHVpbnQz
Ml90JiBpbml0aWFsLCBPcHRpb25hbDx1aW50MzJfdD4mCiAKIGF1dG8gU2VjdGlvblBhcnNlcjo6
cGFyc2VUYWJsZUhlbHBlcihib29sIGlzSW1wb3J0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAg
V0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8tPnRhYmxlQ291bnQoKSA+IDAsICJDYW5ub3QgaGF2
ZSBtb3JlIHRoYW4gb25lIFRhYmxlIGZvciBub3ciKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KG1faW5mby0+dGFibGVDb3VudCgpID49IG1heFRhYmxlcywgIlRhYmxlIGNvdW50IG9mICIsIG1f
aW5mby0+dGFibGVDb3VudCgpLCAiIGlzIHRvbyBiaWcsIG1heGltdW0gIiwgbWF4VGFibGVzKTsK
IAogICAgIGludDhfdCB0eXBlOwogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlSW50Nyh0
eXBlKSwgImNhbid0IHBhcnNlIFRhYmxlIHR5cGUiKTsKQEAgLTIwOSw3ICsyMTAsNyBAQCBhdXRv
IFNlY3Rpb25QYXJzZXI6OnBhcnNlVGFibGVIZWxwZXIoYm9vbCBpc0ltcG9ydCkgLT4gUGFydGlh
bFJlc3VsdAogICAgIEFTU0VSVCghbWF4aW11bSB8fCAqbWF4aW11bSA+PSBpbml0aWFsKTsKIAog
ICAgIFRhYmxlRWxlbWVudFR5cGUgdGFibGVUeXBlID0gdHlwZSA9PSBXYXNtOjpBbnlmdW5jID8g
VGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiA6IFRhYmxlRWxlbWVudFR5cGU6OkFueXJlZjsKLSAg
ICBtX2luZm8tPnRhYmxlSW5mb3JtYXRpb24gPSBUYWJsZUluZm9ybWF0aW9uKGluaXRpYWwsIG1h
eGltdW0sIGlzSW1wb3J0LCB0YWJsZVR5cGUpOworICAgIG1faW5mby0+dGFibGVzLmFwcGVuZChU
YWJsZUluZm9ybWF0aW9uKGluaXRpYWwsIG1heGltdW0sIGlzSW1wb3J0LCB0YWJsZVR5cGUpKTsK
IAogICAgIHJldHVybiB7IH07CiB9CkBAIC0yMTgsMTUgKzIxOSwxMyBAQCBhdXRvIFNlY3Rpb25Q
YXJzZXI6OnBhcnNlVGFibGUoKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgdWludDMyX3QgY291
bnQ7CiAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoY291bnQpLCAiY2Fu
J3QgZ2V0IFRhYmxlJ3MgY291bnQiKTsKLSAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGNvdW50ID4g
MSwgIlRhYmxlIGNvdW50IG9mICIsIGNvdW50LCAiIGlzIGludmFsaWQsIGF0IG1vc3QgMSBpcyBh
bGxvd2VkIGZvciBub3ciKTsKIAotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVybiB7IH07
Ci0KLSAgICBib29sIGlzSW1wb3J0ID0gZmFsc2U7Ci0gICAgUGFydGlhbFJlc3VsdCByZXN1bHQg
PSBwYXJzZVRhYmxlSGVscGVyKGlzSW1wb3J0KTsKLSAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkp
Ci0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZNb3ZlKHJlc3VsdC5lcnJvcigpKSk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgYm9v
bCBpc0ltcG9ydCA9IGZhbHNlOworICAgICAgICBQYXJ0aWFsUmVzdWx0IHJlc3VsdCA9IHBhcnNl
VGFibGVIZWxwZXIoaXNJbXBvcnQpOworICAgICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkpCisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShyZXN1bHQuZXJyb3IoKSkp
OworICAgIH0KIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0zNzksMTYgKzM3OCwxNiBAQCBhdXRv
IFNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxSZXN1bHQKIAogICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMih0YWJsZUluZGV4KSwgImNhbid0
IGdldCAiLCBlbGVtZW50TnVtLCAidGggRWxlbWVudCB0YWJsZSBpbmRleCIpOwogICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKHRhYmxlSW5kZXggPj0gbV9pbmZvLT50YWJsZUNvdW50KCksICJF
bGVtZW50IHNlY3Rpb24gZm9yIFRhYmxlICIsIHRhYmxlSW5kZXgsICIgZXhjZWVkcyBhdmFpbGFi
bGUgVGFibGUgIiwgbV9pbmZvLT50YWJsZUNvdW50KCkpOwotICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKG1faW5mby0+dGFibGVJbmZvcm1hdGlvbi50eXBlKCkgIT0gVGFibGVFbGVtZW50VHlw
ZTo6RnVuY3JlZiwgIlRhYmxlICIsIHRhYmxlSW5kZXgsICIgbXVzdCBoYXZlIHR5cGUgJ2FueWZ1
bmMnIHRvIGhhdmUgYW4gZWxlbWVudCBzZWN0aW9uIik7CisgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYobV9pbmZvLT50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpICE9IFRhYmxlRWxlbWVudFR5
cGU6OkZ1bmNyZWYsICJUYWJsZSAiLCB0YWJsZUluZGV4LCAiIG11c3QgaGF2ZSB0eXBlICdhbnlm
dW5jJyB0byBoYXZlIGFuIGVsZW1lbnQgc2VjdGlvbiIpOwogICAgICAgICBUeXBlIGluaXRFeHBy
VHlwZTsKICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUluaXRFeHByKGlu
aXRPcGNvZGUsIGluaXRFeHByQml0cywgaW5pdEV4cHJUeXBlKSk7CiAgICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoaW5pdEV4cHJUeXBlICE9IEkzMiwgIkVsZW1lbnQgaW5pdF9leHByIG11c3Qg
cHJvZHVjZSBhbiBpMzIiKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJV
SW50MzIoaW5kZXhDb3VudCksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIGluZGV4IGNv
dW50IGZvciBFbGVtZW50IHNlY3Rpb24iKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihp
bmRleENvdW50ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwgIkVsZW1l
bnQgc2VjdGlvbidzICIsIGVsZW1lbnROdW0sICJ0aCBpbmRleCBjb3VudCBpcyB0b28gYmlnICIs
IGluZGV4Q291bnQpOwogCi0gICAgICAgIEFTU0VSVCghIW1faW5mby0+dGFibGVJbmZvcm1hdGlv
bik7CisgICAgICAgIEFTU0VSVCghIW1faW5mby0+dGFibGVzW3RhYmxlSW5kZXhdKTsKIAotICAg
ICAgICBFbGVtZW50IGVsZW1lbnQobWFrZUkzMkluaXRFeHByKGluaXRPcGNvZGUsIGluaXRFeHBy
Qml0cykpOworICAgICAgICBFbGVtZW50IGVsZW1lbnQodGFibGVJbmRleCwgbWFrZUkzMkluaXRF
eHByKGluaXRPcGNvZGUsIGluaXRFeHByQml0cykpOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy50cnlSZXNlcnZlQ2FwYWNpdHkoaW5kZXhDb3Vu
dCksICJjYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yICIsIGluZGV4Q291bnQsICIgRWxlbWVudCBp
bmRpY2VzIik7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgaW5k
ZXhDb3VudDsgKytpbmRleCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaApp
bmRleCBiMWUyYjVkZjRkZjFjNjQ1Y2Y5YjMzMDJlYTU4N2EwN2ZlZWM4ZDZjLi5kNmFhYzViNTU4
MmRhNDIwY2Q0MTYzNGUwZTUzMmJjNTI1NDhhOTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtVGFibGUuaApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHVpbnQz
Ml90IGFsbG9jYXRlZExlbmd0aCh1aW50MzJfdCBsZW5ndGgpOwogICAgIHVpbnQzMl90IG1hc2so
KSBjb25zdCB7IHJldHVybiBtX21hc2s7IH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQq
IG93bmVyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4obV9vd25lcik7IH0K
ICAgICB2b2lkIHNldE93bmVyKEpTT2JqZWN0KiBvd25lcikKICAgICB7CiAgICAgICAgIEFTU0VS
VCghbV9vd25lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
VmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNw
cAppbmRleCA3ZjFhYzYxZWU4YTI0Y2QxZTkxOGI4YmRlYWNjYjhkYmU0MzQ4ZTk4Li5iZDIxZDgw
ZWYxYTUzZjM3OWIxNWM3MDg4MjFlOGM2NzY1ZGJkZmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAKQEAgLTEwNiw4ICsxMDYsOCBAQCBwdWJsaWM6CiAg
ICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4LCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKIAogICAgIC8vIFRhYmxlcwotICAgIFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNz
aW9uVHlwZSYgcmVzdWx0KTsKLSAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxl
U2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKTsKKyAgICBS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlR2V0KHVuc2lnbmVkLCBFeHByZXNzaW9u
VHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkVGFibGVTZXQodW5zaWduZWQsIEV4cHJlc3Npb25UeXBlJiBpbmRleCwg
RXhwcmVzc2lvblR5cGUmIHZhbHVlKTsKIAogICAgIC8vIExvY2FscwogICAgIFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gZ2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbGxzCiAgICAg
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsKHVuc2lnbmVkIGNhbGxlZUluZGV4LCBj
b25zdCBTaWduYXR1cmUmLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0KTsKLSAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENh
bGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+
JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBSZXN1bHQgV0FSTl9VTlVTRURf
UkVUVVJOIGFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1
cmUmLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KTsKIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkaWRLaWxsKEV4cHJlc3Npb25UeXBl
KSB7IH0KIApAQCAtMTc4LDIxICsxNzgsMjIgQEAgYXV0byBWYWxpZGF0ZTo6YWRkQXJndW1lbnRz
KGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBSZXN1bHQKICAgICByZXR1cm4geyB9Owog
fQogCi1hdXRvIFZhbGlkYXRlOjphZGRUYWJsZUdldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFJlc3VsdAorYXV0byBWYWxpZGF0ZTo6YWRkVGFibGVH
ZXQodW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KSAtPiBSZXN1bHQKIHsKLSAgICByZXN1bHQgPSBtX21vZHVsZS50YWJsZUlu
Zm9ybWF0aW9uLndhc21UeXBlKCk7CisgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRih0YWJsZUlu
ZGV4ID49IG1fbW9kdWxlLnRhYmxlQ291bnQoKSwgInRhYmxlIGluZGV4ICIsIHRhYmxlSW5kZXgs
ICIgaXMgaW52YWxpZCwgbGltaXQgaXMgIiwgbV9tb2R1bGUudGFibGVDb3VudCgpKTsKKyAgICBy
ZXN1bHQgPSBtX21vZHVsZS50YWJsZXNbdGFibGVJbmRleF0ud2FzbVR5cGUoKTsKICAgICBXQVNN
X1ZBTElEQVRPUl9GQUlMX0lGKFR5cGU6OkkzMiAhPSBpbmRleCwgInRhYmxlLmdldCBpbmRleCB0
byB0eXBlICIsIGluZGV4LCAiIGV4cGVjdGVkICIsIFR5cGU6OkkzMik7CiAKICAgICByZXR1cm4g
eyB9OwogfQogCi1hdXRvIFZhbGlkYXRlOjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5k
ZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4gUmVzdWx0CithdXRvIFZhbGlkYXRlOjphZGRU
YWJsZVNldCh1bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJl
c3Npb25UeXBlJiB2YWx1ZSkgLT4gUmVzdWx0CiB7Ci0gICAgYXV0byB0eXBlID0gbV9tb2R1bGUu
dGFibGVJbmZvcm1hdGlvbi53YXNtVHlwZSgpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYo
dGFibGVJbmRleCA+PSBtX21vZHVsZS50YWJsZUNvdW50KCksICJ0YWJsZSBpbmRleCAiLCB0YWJs
ZUluZGV4LCAiIGlzIGludmFsaWQsIGxpbWl0IGlzICIsIG1fbW9kdWxlLnRhYmxlQ291bnQoKSk7
CisgICAgYXV0byB0eXBlID0gbV9tb2R1bGUudGFibGVzW3RhYmxlSW5kZXhdLndhc21UeXBlKCk7
CiAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihUeXBlOjpJMzIgIT0gaW5kZXgsICJ0YWJsZS5z
ZXQgaW5kZXggdG8gdHlwZSAiLCBpbmRleCwgIiBleHBlY3RlZCAiLCBUeXBlOjpJMzIpOwogICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZSh2YWx1ZSwgdHlwZSksICJ0YWJsZS5z
ZXQgdmFsdWUgdG8gdHlwZSAiLCB2YWx1ZSwgIiBleHBlY3RlZCAiLCB0eXBlKTsKLSAgICBXQVNN
X1ZBTElEQVRPUl9GQUlMX0lGKG1fbW9kdWxlLnRhYmxlSW5mb3JtYXRpb24udHlwZSgpICE9IFRh
YmxlRWxlbWVudFR5cGU6OkFueXJlZgotICAgICAgICAmJiBtX21vZHVsZS50YWJsZUluZm9ybWF0
aW9uLnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCAidGFibGUuc2V0IGV4cGVj
dHMgdGhlIHRhYmxlIHRvIGhhdmUgdHlwZSBhbnlyZWYgb3IgYW55ZnVuYyIpOworICAgIFJFTEVB
U0VfQVNTRVJUKG1fbW9kdWxlLnRhYmxlc1t0YWJsZUluZGV4XS50eXBlKCkgPT0gVGFibGVFbGVt
ZW50VHlwZTo6QW55cmVmIHx8IG1fbW9kdWxlLnRhYmxlc1t0YWJsZUluZGV4XS50eXBlKCkgPT0g
VGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZik7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtMzc5
LDkgKzM4MCwxMCBAQCBhdXRvIFZhbGlkYXRlOjphZGRDYWxsKHVuc2lnbmVkLCBjb25zdCBTaWdu
YXR1cmUmIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPEV4cHJlcwogICAgIHJldHVybiB7IH07CiB9
CiAKLWF1dG8gVmFsaWRhdGU6OmFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmIHNpZ25h
dHVyZSwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCkgLT4gUmVzdWx0CithdXRvIFZhbGlkYXRlOjphZGRDYWxsSW5kaXJlY3QodW5zaWdu
ZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIGNvbnN0IFZlY3RvcjxF
eHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFJlc3VsdAog
ewotICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYobV9tb2R1bGUudGFibGVJbmZvcm1hdGlvbi50
eXBlKCkgIT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgIlRhYmxlIG11c3QgaGF2ZSB0eXBl
IEFueWZ1bmMgdG8gY2FsbCIpOworICAgIFJFTEVBU0VfQVNTRVJUKHRhYmxlSW5kZXggPCBtX21v
ZHVsZS50YWJsZUNvdW50KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fbW9kdWxlLnRhYmxlc1t0
YWJsZUluZGV4XS50eXBlKCkgPT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZik7CiAgICAgY29u
c3QgYXV0byBhcmd1bWVudENvdW50ID0gc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKTsKICAgICBX
QVNNX1ZBTElEQVRPUl9GQUlMX0lGKGFyZ3VtZW50Q291bnQgIT0gYXJncy5zaXplKCkgLSAxLCAi
YXJpdHkgbWlzbWF0Y2ggaW4gY2FsbF9pbmRpcmVjdCwgZ290ICIsIGFyZ3Muc2l6ZSgpIC0gMSwg
IiBhcmd1bWVudHMsIGV4cGVjdGVkICIsIGFyZ3VtZW50Q291bnQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcApp
bmRleCAzMjM0MjdmZDhhMGFmMjRjZTI5MzY0ZmU0MDRiMTY3MGE2ODNiNTk3Li45OWFmYTFhYzY3
NDNlOTI4ZmI1NTljOTgyN2FlNDgyMmFmY2IzZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKQEAgLTUzLDYg
KzUzLDcgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2UoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmPFcKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVy
ZSkKICAgICAsIG1faW5zdGFuY2UoV1RGTW92ZShpbnN0YW5jZSkpCiAgICAgLCBtX3ZtKCZ2bSkK
KyAgICAsIG1fdGFibGVzKG1faW5zdGFuY2UtPm1vZHVsZSgpLm1vZHVsZUluZm9ybWF0aW9uKCku
dGFibGVDb3VudCgpKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzLT5pbnN0
YW5jZSgpLm51bUltcG9ydEZ1bmN0aW9ucygpOyArK2kpCiAgICAgICAgIG5ldyAodGhpcy0+aW5z
dGFuY2UoKS5pbXBvcnRGdW5jdGlvbjxXcml0ZUJhcnJpZXI8SlNPYmplY3Q+PihpKSkgV3JpdGVC
YXJyaWVyPEpTT2JqZWN0PigpOwpAQCAtODUsNyArODYsOCBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY29kZUJsb2NrKTsKICAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdCk7CiAgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tZW1vcnkpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fdGFibGUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzT2Jq
ZWN0LT5pbnN0YW5jZSgpLm1vZHVsZSgpLm1vZHVsZUluZm9ybWF0aW9uKCkudGFibGVDb3VudCgp
OyArK2kpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdGFibGVzW2ldKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NhbGxlZSk7CiAgICAgdmlzaXRvci5y
ZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQodGhpc09iamVjdC0+bV9pbnN0YW5jZS0+ZXh0cmFNZW1v
cnlBbGxvY2F0ZWQoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNPYmplY3Qt
Pmluc3RhbmNlKCkubnVtSW1wb3J0RnVuY3Rpb25zKCk7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKaW5kZXggMjE3
ODRhOTM5ZDhlYjQ3ZThmNTI0NmUyNjYzZWYzNjc3MDQ5MjhlNS4uZTE2MzFmY2JiMTgzM2UwMThl
ZjdjNGQ2MTc4MDkxODI0ZDRlNjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKQEAgLTcxLDExICs3MSwxMyBAQCBw
dWJsaWM6CiAgICAgfQogICAgIFdhc206Ok1lbW9yeU1vZGUgbWVtb3J5TW9kZSgpIHsgcmV0dXJu
IG1lbW9yeSgpLT5tZW1vcnkoKS5tb2RlKCk7IH0KIAotICAgIEpTV2ViQXNzZW1ibHlUYWJsZSog
dGFibGUoKSB7IHJldHVybiBtX3RhYmxlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRUYWJsZShWTSYg
dm0sIEpTV2ViQXNzZW1ibHlUYWJsZSogdmFsdWUpIHsKLSAgICAgICAgQVNTRVJUKCF0YWJsZSgp
KTsKLSAgICAgICAgbV90YWJsZS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKLSAgICAgICAgaW5zdGFu
Y2UoKS5zZXRUYWJsZShtYWtlUmVmKCp0YWJsZSgpLT50YWJsZSgpKSk7CisgICAgSlNXZWJBc3Nl
bWJseVRhYmxlKiB0YWJsZSh1bnNpZ25lZCBpKSB7IHJldHVybiBtX3RhYmxlc1tpXS5nZXQoKTsg
fQorICAgIHZvaWQgc2V0VGFibGUoVk0mIHZtLCB1aW50MzJfdCBpbmRleCwgSlNXZWJBc3NlbWJs
eVRhYmxlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG1fdGFibGVzLnNp
emUoKSk7CisgICAgICAgIEFTU0VSVCghdGFibGUoaW5kZXgpKTsKKyAgICAgICAgbV90YWJsZXNb
aW5kZXhdLnNldCh2bSwgdGhpcywgdmFsdWUpOworICAgICAgICBpbnN0YW5jZSgpLnNldFRhYmxl
KGluZGV4LCBtYWtlUmVmKCp0YWJsZShpbmRleCktPnRhYmxlKCkpKTsKICAgICB9CiAKICAgICBK
U1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZS5nZXQo
KTsgfQpAQCAtOTgsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBXcml0ZUJhcnJpZXI8SlNXZWJB
c3NlbWJseUNvZGVCbG9jaz4gbV9jb2RlQmxvY2s7CiAgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0PiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdDsKICAgICBXcml0ZUJhcnJp
ZXI8SlNXZWJBc3NlbWJseU1lbW9yeT4gbV9tZW1vcnk7Ci0gICAgV3JpdGVCYXJyaWVyPEpTV2Vi
QXNzZW1ibHlUYWJsZT4gbV90YWJsZTsKKyAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTV2ViQXNz
ZW1ibHlUYWJsZT4+IG1fdGFibGVzOwogICAgIFdyaXRlQmFycmllcjxXZWJBc3NlbWJseVRvSlND
YWxsZWU+IG1fY2FsbGVlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDEyYjFjZWYyZGY0
Njg3OWEyYzdmMWIzNzFmNGM1OTM5OWJlYzY2MTMuLjA1MmQwODU4OTY4OTViOWQ5NDJiNDg5MGJl
YjM1NjA5YWI3MzVmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTExMyw4ICsxMTMsNiBAQCB2
b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSwgSlNPYmplY3QqIGltcG9ydE9iagogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhiZWZvcmUs
ICIgIiwgU3RyaW5nOjpmcm9tVVRGOChpbXBvcnQubW9kdWxlKSwgIjoiLCBTdHJpbmc6OmZyb21V
VEY4KGltcG9ydC5maWVsZCksICIgIiwgYWZ0ZXIpOwogICAgIH07CiAKLSAgICBib29sIGhhc1Rh
YmxlSW1wb3J0ID0gZmFsc2U7Ci0KICAgICBmb3IgKGNvbnN0IGF1dG8mIGltcG9ydCA6IG1vZHVs
ZUluZm9ybWF0aW9uLmltcG9ydHMpIHsKICAgICAgICAgLy8gVmFsaWRhdGlvbiBhbmQgbGlua2lu
ZyBvdGhlciB0aGFuIFdhc206OkV4dGVybmFsS2luZDo6RnVuY3Rpb24gaXMgYWxyZWFkeSBkb25l
IGluIEpTV2ViQXNzZW1ibHlJbnN0YW5jZS4KICAgICAgICAgLy8gRXZlbnR1YWxseSB3ZSB3aWxs
IG1vdmUgYWxsIHRoZSBsaW5raW5nIGNvZGUgaW4gSlNXZWJBc3NlbWJseUluc3RhbmNlIGhlcmUg
YW5kIHJlbW92ZSB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQuCkBAIC0yNjQsMjAgKzI2MiwxOCBAQCB2
b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSwgSlNPYmplY3QqIGltcG9ydE9iagogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBXYXNtOjpF
eHRlcm5hbEtpbmQ6OlRhYmxlOiB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghaGFzVGFi
bGVJbXBvcnQpOyAvLyBUaGlzIHNob3VsZCBiZSBndWFyYW50ZWVkIGJ5IGEgdmFsaWRhdGlvbiBm
YWlsdXJlLgogICAgICAgICAgICAgLy8gNy4gT3RoZXJ3aXNlIChpIGlzIGEgdGFibGUgaW1wb3J0
KToKLSAgICAgICAgICAgIGhhc1RhYmxlSW1wb3J0ID0gdHJ1ZTsKICAgICAgICAgICAgIEpTV2Vi
QXNzZW1ibHlUYWJsZSogdGFibGUgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlUYWJsZSo+
KHZtLCB2YWx1ZSk7CiAgICAgICAgICAgICAvLyBpLiBJZiB2IGlzIG5vdCBhIFdlYkFzc2VtYmx5
LlRhYmxlIG9iamVjdCwgdGhyb3cgYSBXZWJBc3NlbWJseS5MaW5rRXJyb3IuCiAgICAgICAgICAg
ICBpZiAoIXRhYmxlKQogICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNX
ZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAi
VGFibGUgaW1wb3J0IiwgImlzIG5vdCBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5UYWJsZSIp
KSk7CiAKLSAgICAgICAgICAgIHVpbnQzMl90IGV4cGVjdGVkSW5pdGlhbCA9IG1vZHVsZUluZm9y
bWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaW5pdGlhbCgpOworICAgICAgICAgICAgdWludDMyX3Qg
ZXhwZWN0ZWRJbml0aWFsID0gbW9kdWxlSW5mb3JtYXRpb24udGFibGVzW2ltcG9ydC5raW5kSW5k
ZXhdLmluaXRpYWwoKTsKICAgICAgICAgICAgIHVpbnQzMl90IGFjdHVhbEluaXRpYWwgPSB0YWJs
ZS0+bGVuZ3RoKCk7CiAgICAgICAgICAgICBpZiAoYWN0dWFsSW5pdGlhbCA8IGV4cGVjdGVkSW5p
dGlhbCkKICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1i
bHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgIlRhYmxlIGlt
cG9ydCIsICJwcm92aWRlZCBhbiAnaW5pdGlhbCcgdGhhdCBpcyB0b28gc21hbGwiKSkpOwogCi0g
ICAgICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGV4cGVjdGVkTWF4aW11bSA9IG1vZHVs
ZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24ubWF4aW11bSgpKSB7CisgICAgICAgICAgICBp
ZiAoT3B0aW9uYWw8dWludDMyX3Q+IGV4cGVjdGVkTWF4aW11bSA9IG1vZHVsZUluZm9ybWF0aW9u
LnRhYmxlc1tpbXBvcnQua2luZEluZGV4XS5tYXhpbXVtKCkpIHsKICAgICAgICAgICAgICAgICBP
cHRpb25hbDx1aW50MzJfdD4gYWN0dWFsTWF4aW11bSA9IHRhYmxlLT5tYXhpbXVtKCk7CiAgICAg
ICAgICAgICAgICAgaWYgKCFhY3R1YWxNYXhpbXVtKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9y
dEZhaWxNZXNzYWdlKGltcG9ydCwgIlRhYmxlIGltcG9ydCIsICJkb2VzIG5vdCBoYXZlIGEgJ21h
eGltdW0nIGJ1dCB0aGUgbW9kdWxlIHJlcXVpcmVzIHRoYXQgaXQgZG9lcyIpKSk7CkBAIC0yODUs
MTQgKzI4MSwxNCBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9iagogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0s
IGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgIkltcG9ydGVkIFRhYmxlIiwgIidtYXhpbXVtJyBp
cyBsYXJnZXIgdGhhbiB0aGUgbW9kdWxlJ3MgZXhwZWN0ZWQgJ21heGltdW0nIikpKTsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byBleHBlY3RlZFR5cGUgPSBtb2R1bGVJbmZvcm1h
dGlvbi50YWJsZUluZm9ybWF0aW9uLnR5cGUoKTsKKyAgICAgICAgICAgIGF1dG8gZXhwZWN0ZWRU
eXBlID0gbW9kdWxlSW5mb3JtYXRpb24udGFibGVzW2ltcG9ydC5raW5kSW5kZXhdLnR5cGUoKTsK
ICAgICAgICAgICAgIGF1dG8gYWN0dWFsVHlwZSA9IHRhYmxlLT50YWJsZSgpLT50eXBlKCk7CiAg
ICAgICAgICAgICBpZiAoZXhwZWN0ZWRUeXBlICE9IGFjdHVhbFR5cGUpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZt
LCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJUYWJsZSBpbXBvcnQiLCAicHJvdmlkZWQgYSAn
dHlwZScgdGhhdCBpcyB3cm9uZyIpKSk7CiAKICAgICAgICAgICAgIC8vIGlpLiBBcHBlbmQgdiB0
byB0YWJsZXMuCiAgICAgICAgICAgICAvLyBpaWkuIEFwcGVuZCB2LltbVGFibGVdXSB0byBpbXBv
cnRzLgotICAgICAgICAgICAgbV9pbnN0YW5jZS0+c2V0VGFibGUodm0sIHRhYmxlKTsKKyAgICAg
ICAgICAgIG1faW5zdGFuY2UtPnNldFRhYmxlKHZtLCBpbXBvcnQua2luZEluZGV4LCB0YWJsZSk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTMwMiwxNiArMjk4LDE2IEBAIHZvaWQgV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBKU09iamVj
dCogaW1wb3J0T2JqCiAgICAgICAgIH0KICAgICB9CiAKLSAgICB7Ci0gICAgICAgIGlmICghIW1v
ZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24gJiYgbW9kdWxlSW5mb3JtYXRpb24udGFi
bGVJbmZvcm1hdGlvbi5pc0ltcG9ydCgpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlQ291bnQoKTsgKytpKSB7CisgICAgICAgIGlmIChtb2R1
bGVJbmZvcm1hdGlvbi50YWJsZXNbaV0uaXNJbXBvcnQoKSkgewogICAgICAgICAgICAgLy8gV2Ug
c2hvdWxkIGVpdGhlciBoYXZlIGEgVGFibGUgaW1wb3J0IG9yIHdlIHNob3VsZCBoYXZlIHRocm93
biBhbiBleGNlcHRpb24uCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChoYXNUYWJsZUltcG9y
dCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2luc3RhbmNlLT50YWJsZShpKSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAoISFtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0
aW9uICYmICFoYXNUYWJsZUltcG9ydCkgewotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1v
ZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaXNJbXBvcnQoKSk7CisgICAgICAgIGlm
ICghbV9pbnN0YW5jZS0+dGFibGUoaSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFt
b2R1bGVJbmZvcm1hdGlvbi50YWJsZXNbaV0uaXNJbXBvcnQoKSk7CiAgICAgICAgICAgICAvLyBX
ZSBjcmVhdGUgYSBUYWJsZSB3aGVuIGl0J3MgYSBUYWJsZSBkZWZpbml0aW9uLgotICAgICAgICAg
ICAgUmVmUHRyPFdhc206OlRhYmxlPiB3YXNtVGFibGUgPSBXYXNtOjpUYWJsZTo6dHJ5Q3JlYXRl
KG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaW5pdGlhbCgpLCBtb2R1bGVJbmZv
cm1hdGlvbi50YWJsZUluZm9ybWF0aW9uLm1heGltdW0oKSwgbW9kdWxlSW5mb3JtYXRpb24udGFi
bGVJbmZvcm1hdGlvbi50eXBlKCkpOworICAgICAgICAgICAgUmVmUHRyPFdhc206OlRhYmxlPiB3
YXNtVGFibGUgPSBXYXNtOjpUYWJsZTo6dHJ5Q3JlYXRlKG1vZHVsZUluZm9ybWF0aW9uLnRhYmxl
c1tpXS5pbml0aWFsKCksIG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlc1tpXS5tYXhpbXVtKCksIG1v
ZHVsZUluZm9ybWF0aW9uLnRhYmxlc1tpXS50eXBlKCkpOwogICAgICAgICAgICAgaWYgKCF3YXNt
VGFibGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2Vt
Ymx5TGlua0Vycm9yKGV4ZWMsIHZtLCAiY291bGRuJ3QgY3JlYXRlIFRhYmxlIikpOwogICAgICAg
ICAgICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IEpTV2ViQXNzZW1ibHlUYWJsZTo6Y3Jl
YXRlKGV4ZWMsIHZtLCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5VGFibGVTdHJ1Y3R1cmUoKSwg
d2FzbVRhYmxlLnJlbGVhc2VOb25OdWxsKCkpOwpAQCAtMzE5LDcgKzMxNSw3IEBAIHZvaWQgV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBKU09i
amVjdCogaW1wb3J0T2JqCiAgICAgICAgICAgICAvLyBJZiBpdCdzIGRlZmluZWQgdG8gYmUgdG9v
IGxhcmdlLCB3ZSBzaG91bGQgaGF2ZSB0aHJvd24gYSB2YWxpZGF0aW9uIGVycm9yLgogICAgICAg
ICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICAgICAgICAgIEFTU0VSVCh0YWJs
ZSk7Ci0gICAgICAgICAgICBtX2luc3RhbmNlLT5zZXRUYWJsZSh2bSwgdGFibGUpOworICAgICAg
ICAgICAgbV9pbnN0YW5jZS0+c2V0VGFibGUodm0sIGksIHRhYmxlKTsKICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0z
OTcsMTAgKzM5Myw4IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlLCBKU09iamVjdCogaW1wb3J0T2JqCiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OlRhYmxlOiB7CiAgICAgICAgICAgICAvLyBUaGlz
IHNob3VsZCBiZSBndWFyYW50ZWVkIGJ5IG1vZHVsZSB2ZXJpZmljYXRpb24uCi0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtX2luc3RhbmNlLT50YWJsZSgpKTsgCi0gICAgICAgICAgICBBU1NF
UlQoZXhwLmtpbmRJbmRleCA9PSAwKTsKLQotICAgICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9IG1f
aW5zdGFuY2UtPnRhYmxlKCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2luc3RhbmNl
LT50YWJsZShleHAua2luZEluZGV4KSk7CisgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gbV9p
bnN0YW5jZS0+dGFibGUoZXhwLmtpbmRJbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIFdhc206OkV4dGVybmFsS2luZDo6TWVtb3J5OiB7CkBAIC00ODYs
NyArNDgwLDYgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoRXhl
Y1N0YXRlKiBleGVjKQogICAgIFdhc206Ok1vZHVsZSYgbW9kdWxlID0gbV9pbnN0YW5jZS0+aW5z
dGFuY2UoKS5tb2R1bGUoKTsKICAgICBXYXNtOjpDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1faW5z
dGFuY2UtPmluc3RhbmNlKCkuY29kZUJsb2NrKCk7CiAgICAgY29uc3QgV2FzbTo6TW9kdWxlSW5m
b3JtYXRpb24mIG1vZHVsZUluZm9ybWF0aW9uID0gbW9kdWxlLm1vZHVsZUluZm9ybWF0aW9uKCk7
Ci0gICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IG1faW5zdGFuY2UtPnRhYmxlKCk7CiAK
ICAgICBjb25zdCBWZWN0b3I8V2FzbTo6U2VnbWVudDo6UHRyPiYgZGF0YSA9IG1vZHVsZUluZm9y
bWF0aW9uLmRhdGE7CiAgICAgCkBAIC00OTgsMTYgKzQ5MSwxNiBAQCBKU1ZhbHVlIFdlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAv
LyBBbHNvLCBpdCBjb3VsZCBiZSB0aGF0IGEgdGFibGUgd2Fzbid0IGltcG9ydGVkLCBvciB0aGF0
IHRoZSB0YWJsZQogICAgICAgICAgICAgLy8gaW1wb3J0ZWQgd2Fzbid0IGNvbXBhdGlibGUuIEhv
d2V2ZXIsIHRob3NlIHNob3VsZCBlcnJvciBvdXQgYmVmb3JlCiAgICAgICAgICAgICAvLyBnZXR0
aW5nIGhlcmUuCi0gICAgICAgICAgICBBU1NFUlQoISF0YWJsZSk7CisgICAgICAgICAgICBBU1NF
UlQoISFtX2luc3RhbmNlLT50YWJsZShlbGVtZW50LnRhYmxlSW5kZXgpKTsKIAogICAgICAgICAg
ICAgaWYgKCFlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy5zaXplKCkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgICAgIHVpbnQzMl90IHRhYmxlSW5kZXggPSBlbGVtZW50Lm9m
ZnNldC5pc0dsb2JhbEltcG9ydCgpCisgICAgICAgICAgICB1aW50MzJfdCBlbGVtZW50SW5kZXgg
PSBlbGVtZW50Lm9mZnNldC5pc0dsb2JhbEltcG9ydCgpCiAgICAgICAgICAgICAgICAgPyBzdGF0
aWNfY2FzdDx1aW50MzJfdD4obV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5sb2FkSTMyR2xvYmFsKGVs
ZW1lbnQub2Zmc2V0Lmdsb2JhbEltcG9ydEluZGV4KCkpKQogICAgICAgICAgICAgICAgIDogZWxl
bWVudC5vZmZzZXQuY29uc3RWYWx1ZSgpOwogCi0gICAgICAgICAgICBmbihlbGVtZW50LCB0YWJs
ZUluZGV4KTsKKyAgICAgICAgICAgIGZuKGVsZW1lbnQsIGVsZW1lbnQudGFibGVJbmRleCwgZWxl
bWVudEluZGV4KTsKIAogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTUzMSw5ICs1MjQsOSBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfTsKIAogICAgIC8vIFZhbGlkYXRp
b24gb2YgYWxsIGVsZW1lbnQgcmFuZ2VzIGNvbWVzIGJlZm9yZSBhbGwgVGFibGUgYW5kIE1lbW9y
eSBpbml0aWFsaXphdGlvbi4KLSAgICBmb3JFYWNoRWxlbWVudChbJl0gKGNvbnN0IFdhc206OkVs
ZW1lbnQmIGVsZW1lbnQsIHVpbnQzMl90IHRhYmxlSW5kZXgpIHsKLSAgICAgICAgdWludDY0X3Qg
bGFzdFdyaXR0ZW5JbmRleCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0YWJsZUluZGV4KSArIHN0
YXRpY19jYXN0PHVpbnQ2NF90PihlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy5zaXplKCkpIC0gMTsK
LSAgICAgICAgaWYgKFVOTElLRUxZKGxhc3RXcml0dGVuSW5kZXggPj0gdGFibGUtPmxlbmd0aCgp
KSkKKyAgICBmb3JFYWNoRWxlbWVudChbJl0gKGNvbnN0IFdhc206OkVsZW1lbnQmIGVsZW1lbnQs
IHVpbnQzMl90IHRhYmxlSW5kZXgsIHVpbnQzMl90IGVsZW1lbnRJbmRleCkgeworICAgICAgICB1
aW50NjRfdCBsYXN0V3JpdHRlbkluZGV4ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVsZW1lbnRJ
bmRleCkgKyBzdGF0aWNfY2FzdDx1aW50NjRfdD4oZWxlbWVudC5mdW5jdGlvbkluZGljZXMuc2l6
ZSgpKSAtIDE7CisgICAgICAgIGlmIChVTkxJS0VMWShsYXN0V3JpdHRlbkluZGV4ID49IG1faW5z
dGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5sZW5ndGgoKSkpCiAgICAgICAgICAgICBleGNlcHRp
b24gPSBKU1ZhbHVlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVKU1dlYkFzc2Vt
Ymx5TGlua0Vycm9yKGV4ZWMsIHZtLCAiRWxlbWVudCBpcyB0cnlpbmcgdG8gc2V0IGFuIG91dCBv
ZiBib3VuZHMgdGFibGUgaW5kZXgiX3MpKSk7CiAgICAgfSk7CiAKQEAgLTU1Miw3ICs1NDUsNyBA
QCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgIHJldHVybiBleGNlcHRpb24udmFsdWUoKTsKIAogICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2luc3RhbmNlLT5nbG9iYWxPYmplY3Qodm0pOwotICAgIGZv
ckVhY2hFbGVtZW50KFsmXSAoY29uc3QgV2FzbTo6RWxlbWVudCYgZWxlbWVudCwgdWludDMyX3Qg
dGFibGVJbmRleCkgeworICAgIGZvckVhY2hFbGVtZW50KFsmXSAoY29uc3QgV2FzbTo6RWxlbWVu
dCYgZWxlbWVudCwgdWludDMyX3QgdGFibGVJbmRleCwgdWludDMyX3QgZWxlbWVudEluZGV4KSB7
CiAgICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBlbGVtZW50LmZ1bmN0aW9uSW5kaWNl
cy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZXNzZW50aWFsbHkg
bWVhbnMgd2UncmUgZXhwb3J0aW5nIGFuIGltcG9ydC4KICAgICAgICAgICAgIC8vIFdlIG5lZWQg
YSBzdG9yeSBoZXJlLiBXZSBuZWVkIHRvIGNyZWF0ZSBhIFdlYkFzc2VtYmx5RnVuY3Rpb24KQEAg
LTU2OCwxNCArNTYxLDE0IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1
YXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgICAgICAgLy8gQmVjYXVzZSBhIFdl
YkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uIGNhbiBuZXZlciB3cmFwIGFub3RoZXIgV2ViQXNzZW1i
bHlXcmFwcGVyRnVuY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvbmx5IHR5cGUg
dGhpcyBjb3VsZCBiZSBpcyBXZWJBc3NlbWJseUZ1bmN0aW9uLgogICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCh3YXNtRnVuY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICB0YWJs
ZS0+c2V0KHRhYmxlSW5kZXgsIHdhc21GdW5jdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgICsr
dGFibGVJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+dGFibGUodGFibGVJ
bmRleCktPnNldChlbGVtZW50SW5kZXgsIHdhc21GdW5jdGlvbik7CisgICAgICAgICAgICAgICAg
ICAgICsrZWxlbWVudEluZGV4OwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICB0YWJsZS0+c2V0KHRhYmxlSW5kZXgsCisg
ICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPnNldChlbGVtZW50
SW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseVdyYXBwZXJG
dW5jdGlvblN0cnVjdHVyZSgpLCBmdW5jdGlvbkltcG9ydCwgZnVuY3Rpb25JbmRleCwgbV9pbnN0
YW5jZS5nZXQoKSwgc2lnbmF0dXJlSW5kZXgpKTsKLSAgICAgICAgICAgICAgICArK3RhYmxlSW5k
ZXg7CisgICAgICAgICAgICAgICAgKytlbGVtZW50SW5kZXg7CiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICB9CiAKQEAgLTU4OSw4ICs1ODIsOCBAQCBKU1ZhbHVlIFdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAg
ICBXZWJBc3NlbWJseUZ1bmN0aW9uKiBmdW5jdGlvbiA9IFdlYkFzc2VtYmx5RnVuY3Rpb246OmNy
ZWF0ZSgKICAgICAgICAgICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndl
YkFzc2VtYmx5RnVuY3Rpb25TdHJ1Y3R1cmUoKSwgc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSwg
U3RyaW5nKCksIG1faW5zdGFuY2UuZ2V0KCksIGVtYmVkZGVyRW50cnlwb2ludENhbGxlZSwgZW50
cnlwb2ludExvYWRMb2NhdGlvbiwgc2lnbmF0dXJlSW5kZXgpOwogCi0gICAgICAgICAgICB0YWJs
ZS0+c2V0KHRhYmxlSW5kZXgsIGZ1bmN0aW9uKTsKLSAgICAgICAgICAgICsrdGFibGVJbmRleDsK
KyAgICAgICAgICAgIG1faW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5zZXQoZWxlbWVudElu
ZGV4LCBmdW5jdGlvbik7CisgICAgICAgICAgICArK2VsZW1lbnRJbmRleDsKICAgICAgICAgfQog
ICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpz
b24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KaW5kZXggNzUyODVkNmZi
NzAwOTAxY2E1Mjc1ZWEzZmQ3NWJiMThkMzBlNDEzYi4uOTZlOGExZDIwNzcyOTkwMGQzOTUxOGIx
MDk2NWU2YzU3NmQwZjgyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
d2FzbS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgpAQCAt
NjcsMTAgKzY3LDEwIEBACiAgICAgICAgICJ0ZWVfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdv
cnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzNCwgInJldHVybiI6IFsiYW55Il0sICAgICAg
InBhcmFtZXRlciI6IFsiYW55Il0sICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5h
bWUiOiAibG9jYWxfaW5kZXgiLCAgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAid3JpdGUgYSBs
b2NhbCB2YXJpYWJsZSBvciBwYXJhbWV0ZXIgYW5kIHJldHVybiB0aGUgc2FtZSB2YWx1ZSIgfSwK
ICAgICAgICAgImdldF9nbG9iYWwiOiAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwg
ICAgInZhbHVlIjogIDM1LCAicmV0dXJuIjogWyJhbnkiXSwgICAgICAicGFyYW1ldGVyIjogW10s
ICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJnbG9iYWxfaW5k
ZXgiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJyZWFkIGEgZ2xvYmFsIHZhcmlhYmxlIiB9
LAogICAgICAgICAic2V0X2dsb2JhbCI6ICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwi
LCAgICAidmFsdWUiOiAgMzYsICJyZXR1cm4iOiBbXSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBb
ImFueSJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImdsb2JhbF9p
bmRleCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIndyaXRlIGEgZ2xvYmFsIHZhcmlhYmxl
IiB9LAotICAgICAgICAidGFibGUuZ2V0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNp
YWwiLCAgICAidmFsdWUiOiAgMzcsICJyZXR1cm4iOiBbImFueXJlZiJdLCAgICJwYXJhbWV0ZXIi
OiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImdldCBhIHRhYmxlIHZhbHVlIiB9
LAotICAgICAgICAidGFibGUuc2V0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwi
LCAgICAidmFsdWUiOiAgMzgsICJyZXR1cm4iOiBbXSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBb
ImkzMiIsICJhbnlyZWYiXSwgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInNldCBhIHRhYmxlIHZhbHVlIiB9LAor
ICAgICAgICAidGFibGUuZ2V0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAg
ICAidmFsdWUiOiAgMzcsICJyZXR1cm4iOiBbImFueXJlZiJdLCAgICJwYXJhbWV0ZXIiOiBbImkz
MiJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInRhYmxlX2luZGV4
IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImdldCBhIHRhYmxlIHZhbHVlIiB9LAorICAg
ICAgICAidGFibGUuc2V0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAi
dmFsdWUiOiAgMzgsICJyZXR1cm4iOiBbXSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImkzMiIs
ICJhbnlyZWYiXSwgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInRhYmxlX2luZGV4Iiwg
ICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInNldCBhIHRhYmxlIHZhbHVlIiB9LAogICAgICAg
ICAiY2FsbCI6ICAgICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFs
dWUiOiAgMTYsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2luZGV4Iiwg
InR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0s
Ci0gICAgICAgICJjYWxsX2luZGlyZWN0IjogICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAg
ICAgICJ2YWx1ZSI6ICAxNywgInJldHVybiI6IFsiY2FsbCJdLCAgICAgInBhcmFtZXRlciI6IFsi
Y2FsbCJdLCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRl
eCIsICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogInJlc2VydmVkIiwgInR5cGUi
OiAidmFydWludDEifV0sICAiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIGluZGlyZWN0
IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAorICAgICAgICAiY2FsbF9pbmRpcmVjdCI6
ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTcsICJyZXR1cm4i
OiBbImNhbGwiXSwgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICJp
bW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFydWludDMy
In0sIHsibmFtZSI6ICJ0YWJsZV9pbmRleCIsInR5cGUiOiAidmFydWludDMyIn1dLCJkZXNjcmlw
dGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gaW5kaXJlY3Qgd2l0aCBhbiBleHBlY3RlZCBzaWduYXR1
cmUiIH0sCiAgICAgICAgICJpMzIubG9hZDhfcyI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVt
b3J5IiwgICAgICJ2YWx1ZSI6ICA0NCwgInJldHVybiI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRl
ciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxh
Z3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAg
InR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIg
fSwKICAgICAgICAgImkzMi5sb2FkOF91IjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnki
LCAgICAgInZhbHVlIjogIDQ1LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjog
WyJhZGRyIl0sICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIs
ICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlw
ZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAog
ICAgICAgICAiaTMyLmxvYWQxNl9zIjogICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAg
ICAidmFsdWUiOiAgNDYsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFk
ZHIiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAg
ICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjog
InZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgyYjI3
MjFmZGJhOTI1MTg5N2U2ZTljYjEzMDU3NzE1ZDc0NjMxOTUuLjE2ZGI4OWQyNjM2NzMwM2U2OWJi
NmZiMDg0MzhmNjAzZDFhNWYzYzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMTktMDYtMTcgIEp1c3RpbiBN
aWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVy
ZW5jZXNdIEFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSB0YWJsZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODc2MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgICogd2FzbS9CdWlsZGVyLmpzOgorICAgICAgICAq
IHdhc20vanMtYXBpL2NhbGwtaW5kaXJlY3QuanM6CisgICAgICAgIChjb25zdC5vbmVUYWJsZSk6
CisgICAgICAgIChjb25zdC5tdWx0aVRhYmxlKToKKyAgICAgICAgKG11bHRpVGFibGUpOgorICAg
ICAgICAobXVsdGlUYWJsZS5Qb2x5cGhpYzJJbXBvcnQpOgorICAgICAgICAobXVsdGlUYWJsZS5W
aXJ0dWFsSW1wb3J0KToKKyAgICAgICAgKGNvbnN0Lndhc21Nb2R1bGVXaGljaEltcG9ydEpTKTog
RGVsZXRlZC4KKyAgICAgICAgKGNvbnN0Lm1ha2VUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgICgp
OiBEZWxldGVkLgorICAgICAgICAoUG9seXBoaWMySW1wb3J0KTogRGVsZXRlZC4KKyAgICAgICAg
KFZpcnR1YWxJbXBvcnQpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vanMtYXBpL3RhYmxlLmpz
OgorICAgICAgICAobmV3LldlYkFzc2VtYmx5Lk1vZHVsZSk6CisgICAgICAgIChhc3NlcnQudGhy
b3dzKToKKyAgICAgICAgKGFzc2VydEJhZFRhYmxlSW1wb3J0KToKKyAgICAgICAgKGFzc2VydC50
cnV0aHkpOgorICAgICAgICAoYXNzZXJ0LnRocm93cy5uZXcuV2ViQXNzZW1ibHkuTW9kdWxlLmJ1
aWxkZXIuV2ViQXNzZW1ibHkpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy9h
bnlyZWZfdGFibGUuanM6CisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZV9p
bXBvcnQuanM6CisgICAgICAgIChtYWtlSW1wb3J0KToKKyAgICAgICAgKHN0cmluZ19hcHBlYXJl
ZF9oZXJlLmZ1bGxHQy5hc3NlcnQuZXEuMS5leHBvcnRzLmdldF90YmwubWFrZUltcG9ydCk6Cisg
ICAgICAgIChzdHJpbmdfYXBwZWFyZWRfaGVyZS5mdWxsR0MuYXNzZXJ0LmVxLjEuZXhwb3J0cy5n
ZXRfdGJsKToKKyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMvbXVsdGl0YWJsZS5qczogQWRkZWQu
CisgICAgICAgIChhc3NlcnQudGhyb3dzLjEuZXhwb3J0cy5zZXRfdGJsMCk6CisgICAgICAgIChh
c3NlcnQudGhyb3dzKToKKyAgICAgICAgKGFzc2VydC5lcSk6CisgICAgICAgICogd2FzbS9yZWZl
cmVuY2VzL3ZhbGlkYXRpb24uanM6CisgICAgICAgIChhc3NlcnQudGhyb3dzLm5ldy5XZWJBc3Nl
bWJseS5Nb2R1bGUuYmluKToKKyAgICAgICAgKGFzc2VydC50aHJvd3MpOgorICAgICAgICAqIHdh
c20vc3BlYy10ZXN0cy9pbXBvcnRzLndhc3QuanM6CisgICAgICAgICogd2FzbS93YXNtLmpzb246
CisKKyAgICAgICAgKiB3YXNtL0J1aWxkZXIuanM6CisgICAgICAgICogd2FzbS9qcy1hcGkvY2Fs
bC1pbmRpcmVjdC5qczoKKyAgICAgICAgKGNvbnN0Lm9uZVRhYmxlKToKKyAgICAgICAgKGNvbnN0
Lm11bHRpVGFibGUpOgorICAgICAgICAobXVsdGlUYWJsZSk6CisgICAgICAgIChtdWx0aVRhYmxl
LlBvbHlwaGljMkltcG9ydCk6CisgICAgICAgIChtdWx0aVRhYmxlLlZpcnR1YWxJbXBvcnQpOgor
ICAgICAgICAoY29uc3Qud2FzbU1vZHVsZVdoaWNoSW1wb3J0SlMpOiBEZWxldGVkLgorICAgICAg
ICAoY29uc3QubWFrZVRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAg
ICAgIChQb2x5cGhpYzJJbXBvcnQpOiBEZWxldGVkLgorICAgICAgICAoVmlydHVhbEltcG9ydCk6
IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy1hcGkvdGFibGUuanM6CisgICAgICAgIChuZXcu
V2ViQXNzZW1ibHkuTW9kdWxlKToKKyAgICAgICAgKGFzc2VydC50aHJvd3MpOgorICAgICAgICAo
YXNzZXJ0QmFkVGFibGVJbXBvcnQpOgorICAgICAgICAoYXNzZXJ0LnRydXRoeSk6CisgICAgICAg
IChhc3NlcnQudGhyb3dzLm5ldy5XZWJBc3NlbWJseS5Nb2R1bGUuYnVpbGRlci5XZWJBc3NlbWJs
eSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZS5qczoK
KyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMvYW55cmVmX3RhYmxlX2ltcG9ydC5qczoKKyAgICAg
ICAgKG1ha2VJbXBvcnQpOgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUuZnVsbEdDLmFz
c2VydC5lcS4xLmV4cG9ydHMuZ2V0X3RibC5tYWtlSW1wb3J0KToKKyAgICAgICAgKHN0cmluZ19h
cHBlYXJlZF9oZXJlLmZ1bGxHQy5hc3NlcnQuZXEuMS5leHBvcnRzLmdldF90YmwpOgorICAgICAg
ICAqIHdhc20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qczoKKyAgICAgICAgKEdldExvY2FsLjAuSTMy
Q29uc3QuMC5UYWJsZVNldC5FbmQuRW5kLldlYkFzc2VtYmx5LmZ1bik6IERlbGV0ZWQuCisgICAg
ICAgIChHZXRMb2NhbC4wLkkzMkNvbnN0LjAuVGFibGVTZXQuRW5kLkVuZC5XZWJBc3NlbWJseS5h
c3NlcnQudGhyb3dzKTogRGVsZXRlZC4KKyAgICAgICAgKEdldExvY2FsLjAuSTMyQ29uc3QuMC5U
YWJsZVNldC5FbmQuRW5kLldlYkFzc2VtYmx5KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL3Jl
ZmVyZW5jZXMvbXVsdGl0YWJsZS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQudGhyb3dzLjEu
ZXhwb3J0cy5zZXRfdGJsMCk6CisgICAgICAgIChhc3NlcnQudGhyb3dzKToKKyAgICAgICAgKGFz
c2VydC5lcSk6CisgICAgICAgIChzdHJpbmdfYXBwZWFyZWRfaGVyZS50YWJsZUluc2FuaXR5KToK
KyAgICAgICAgKEkzMkNvbnN0LjAuR2V0TG9jYWwuMC5UYWJsZVNldC4xLkVuZC5FbmQuV2ViQXNz
ZW1ibHkuKToKKyAgICAgICAgKEkzMkNvbnN0LjAuR2V0TG9jYWwuMC5UYWJsZVNldC4xLkVuZC5F
bmQuV2ViQXNzZW1ibHkpOgorICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy92YWxpZGF0aW9uLmpz
OgorICAgICAgICAoYXNzZXJ0LnRocm93cy5uZXcuV2ViQXNzZW1ibHkuTW9kdWxlLmJpbik6Cisg
ICAgICAgIChhc3NlcnQudGhyb3dzKToKKyAgICAgICAgKiB3YXNtL3NwZWMtdGVzdHMvaW1wb3J0
cy53YXN0LmpzOgorICAgICAgICAqIHdhc20vd2FzbS5qc29uOgorCiAyMDE5LTA2LTE3ICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAgICBWYWxpZGF0
ZSB0aGF0IHRhYmxlIGVsZW1lbnQgdHlwZSBpcyBmdW5jcmVmIGlmIHVzaW5nIGFuIGVsZW1lbnQg
c2VjdGlvbgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMgYi9KU1Rlc3RzL3dh
c20vQnVpbGRlci5qcwppbmRleCA2NWYxZjQ3N2E5OGI4NjIwZmNjZDJhYThmOGMxMTA5ZTBhZjY3
ODY2Li45NzYzNzdmN2IzZDkxM2Q0YjhkYjFmOGE3NTk2ZTczZDI3OTFjYjQ3IDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcworKysgYi9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcwpA
QCAtMzA2LDYgKzMwNiw3IEBAIGNvbnN0IF9jaGVja0ltbXMgPSAob3AsIGltbXMsIGV4cGVjdGVk
SW1tcywgcmV0KSA9PiB7CiAgICAgICAgIGNhc2UgInRhcmdldF9jb3VudCI6IGJyZWFrOyAvLyBp
bXByb3ZlIGNoZWNraW5nIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjM0MjEKICAgICAgICAgY2FzZSAidGFyZ2V0X3RhYmxlIjogYnJlYWs7IC8vIGltcHJvdmUgY2hl
Y2tpbmcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQogICAg
ICAgICBjYXNlICJyZXNlcnZlZCI6IGJyZWFrOyAvLyBpbXByb3ZlIGNoZWNraW5nIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKKyAgICAgICAgY2FzZSAidGFi
bGVfaW5kZXgiOiBicmVhazsgLy8gaW1wcm92ZSBjaGVja2luZyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCiAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBF
cnJvcihgSW1wbGVtZW50YXRpb24gcHJvYmxlbTogdW5oYW5kbGVkIGltbWVkaWF0ZSAiJHtleHBl
Y3QubmFtZX0iIG9uICIke29wfSJgKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvd2FzbS9qcy1hcGkvY2FsbC1pbmRpcmVjdC5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkv
Y2FsbC1pbmRpcmVjdC5qcwppbmRleCAwMWNkNDJmOWI3OWE5MjFiMWJiYWE1YWI1NzZmYzBkOTEw
NDM4MzI4Li4yZmFmY2MxOTJiMTIwNTM5YzdhYTQ1NTFkNDQzZGFhZTdiZDgxOTcyIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL3dhc20vanMtYXBpL2NhbGwtaW5kaXJlY3QuanMKKysrIGIvSlNUZXN0cy93
YXNtL2pzLWFwaS9jYWxsLWluZGlyZWN0LmpzCkBAIC0xLDcgKzEsNyBAQAogaW1wb3J0ICogYXMg
YXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CiBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWls
ZGVyLmpzJzsKIAotY29uc3Qgd2FzbU1vZHVsZVdoaWNoSW1wb3J0SlMgPSAoKSA9PiB7Citjb25z
dCBvbmVUYWJsZSA9ICgpID0+IHsKICAgICBjb25zdCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkp
CiAgICAgICAgIC5UeXBlKCkuRW5kKCkKICAgICAgICAgLkltcG9ydCgpCkBAIC0zMSw2ICszMSwz
OSBAQCBjb25zdCB3YXNtTW9kdWxlV2hpY2hJbXBvcnRKUyA9ICgpID0+IHsKICAgICByZXR1cm4g
bW9kdWxlOwogfTsKIAorY29uc3QgbXVsdGlUYWJsZSA9ICgpID0+IHsKKyAgICBjb25zdCBidWls
ZGVyID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLklt
cG9ydCgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImltcCIsICJmdW5jIiwgeyBwYXJhbXM6IFsi
aTMyIl0gfSkKKyAgICAgICAgICAgIC5UYWJsZSgiaW1wIiwgInRhYmxlMCIsIHsgaW5pdGlhbDog
MCwgbWF4aW11bTogMCwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAgICAgIC5UYWJsZSgi
aW1wIiwgInRhYmxlIiwgeyBpbml0aWFsOiAxLCBtYXhpbXVtOiAxLCBlbGVtZW50OiAiYW55ZnVu
YyJ9KQorICAgICAgICAuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAg
LkV4cG9ydCgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImNoYW5nZUNvdW50ZXIiKQorICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJjYWxsRnVuYyIpCisgICAgICAgIC5FbmQoKQorICAgICAgICAuQ29k
ZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImNoYW5nZUNvdW50ZXIiLCB7IHBhcmFtczogWyJp
MzIiLCAiaTMyIl0gfSkKKyAgICAgICAgICAgICAgICAuSTMyQ29uc3QoNDIpCisgICAgICAgICAg
ICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgICAgLkkzMkFkZCgpCisgICAgICAgICAg
ICAgICAgLkdldExvY2FsKDEpCisgICAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgwLCAxKSAv
LyBDYWxscyB0YWJsZVswXShwYXJhbVswXSArIDQyKS4KKyAgICAgICAgICAgIC5FbmQoKQorICAg
ICAgICAgICAgLkZ1bmN0aW9uKCJjYWxsRnVuYyIsIHsgcGFyYW1zOiBbImkzMiJdIH0pCisgICAg
ICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgICAgLkNhbGwoMCkgLy8gQ2Fs
bHMgZnVuYyhwYXJhbVswXSArIDQyKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgIC5FbmQo
KTsKKyAgICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCk7CisgICAgY29u
c3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pOworICAgIHJldHVybiBtb2R1
bGU7Cit9OworCitmb3IgKGNvbnN0IHdhc21Nb2R1bGVXaGljaEltcG9ydEpTIG9mIFtvbmVUYWJs
ZSwgbXVsdGlUYWJsZV0pIHsKKwogY29uc3QgbWFrZVRhYmxlID0gKCkgPT4gewogICAgIHJldHVy
biBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6IDEsIG1heGltdW06IDEsIGVsZW1lbnQ6
ICJhbnlmdW5jIn0pOwogfTsKQEAgLTQwLDcgKzczLDcgQEAgY29uc3QgbWFrZVRhYmxlID0gKCkg
PT4gewogICAgIGNvbnN0IGNvdW50ZXJTZXR0ZXIgPSB2ID0+IGNvdW50ZXIgPSB2OwogICAgIGNv
bnN0IHRhYmxlID0gbWFrZVRhYmxlKCk7CiAgICAgY29uc3QgbW9kdWxlID0gd2FzbU1vZHVsZVdo
aWNoSW1wb3J0SlMoKTsKLSAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0
YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJTZXR0ZXIsIHRhYmxlfSB9KTsKKyAg
ICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1w
OiB7IGZ1bmM6IGNvdW50ZXJTZXR0ZXIsIHRhYmxlLCB0YWJsZTA6IG5ldyBXZWJBc3NlbWJseS5U
YWJsZSh7aW5pdGlhbDogMCwgbWF4aW11bTogMCwgZWxlbWVudDogImFueWZ1bmMifSkgfSB9KTsK
ICAgICB0YWJsZS5zZXQoMCwgaW5zdGFuY2UuZXhwb3J0cy5jYWxsRnVuYyk7CiAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCA0MDk2OyArK2kpIHsKICAgICAgICAgLy8gSW52b2tlIHRoaXMgYSBidW5j
aCBvZiB0aW1lcyB0byBtYWtlIHN1cmUgdGhlIElDIGluIHRoZSB3YXNtIC0+IEpTIHN0dWIgd29y
a3MgY29ycmVjdGx5LgpAQCAtNTcsMTEgKzkwLDExIEBAIGNvbnN0IG1ha2VUYWJsZSA9ICgpID0+
IHsKICAgICBjb25zdCBtb2R1bGUgPSB3YXNtTW9kdWxlV2hpY2hJbXBvcnRKUygpOwogCiAgICAg
Y29uc3QgdGFibGVBID0gbWFrZVRhYmxlKCk7Ci0gICAgY29uc3QgaW5zdGFuY2VBID0gbmV3IFdl
YkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291bnRlckFTZXR0ZXIs
IHRhYmxlOiB0YWJsZUF9IH0pOworICAgIGNvbnN0IGluc3RhbmNlQSA9IG5ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJBU2V0dGVyLCB0YWJsZTog
dGFibGVBLCB0YWJsZTA6IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDogMCwgbWF4aW11
bTogMCwgZWxlbWVudDogImFueWZ1bmMifSkgfSB9KTsKICAgICB0YWJsZUEuc2V0KDAsIGluc3Rh
bmNlQS5leHBvcnRzLmNhbGxGdW5jKTsKIAogICAgIGNvbnN0IHRhYmxlQiA9IG1ha2VUYWJsZSgp
OwotICAgIGNvbnN0IGluc3RhbmNlQiA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUs
IHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJCU2V0dGVyLCB0YWJsZTogdGFibGVCfSB9KTsKKyAgICBj
b25zdCBpbnN0YW5jZUIgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDog
eyBmdW5jOiBjb3VudGVyQlNldHRlciwgdGFibGU6IHRhYmxlQiwgdGFibGUwOiBuZXcgV2ViQXNz
ZW1ibHkuVGFibGUoe2luaXRpYWw6IDAsIG1heGltdW06IDAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0p
IH0gfSk7CiAgICAgdGFibGVCLnNldCgwLCBpbnN0YW5jZUIuZXhwb3J0cy5jYWxsRnVuYyk7CiAg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDQ4OyArK2kpIHsKICAgICAgICAgaW5zdGFuY2VBLmV4
cG9ydHMuY2hhbmdlQ291bnRlcihpLCAwKTsKQEAgLTkzLDcgKzEyNiw3IEBAIGNvbnN0IG1ha2VU
YWJsZSA9ICgpID0+IHsKICAgICBsZXQgaW5zdGFuY2VzID0gW107CiAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBudW07ICsraSkgewogICAgICAgICBsZXQgdGFibGUgPSBtYWtlVGFibGUoKTsKLSAg
ICAgICAgaW5zdGFuY2VzW2ldID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBp
bXA6IHsgZnVuYzogY291bnRlclNldHRlcnNbaV0sIHRhYmxlfSB9KTsKKyAgICAgICAgaW5zdGFu
Y2VzW2ldID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzog
Y291bnRlclNldHRlcnNbaV0sIHRhYmxlLCB0YWJsZTA6IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7
aW5pdGlhbDogMCwgbWF4aW11bTogMCwgZWxlbWVudDogImFueWZ1bmMifSkgfSB9KTsKICAgICAg
ICAgdGFibGUuc2V0KDAsIGluc3RhbmNlc1tpXS5leHBvcnRzLmNhbGxGdW5jKTsKICAgICB9CiAg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDQ4OyArK2kpIHsKQEAgLTEwNCwzICsxMzcsNSBAQCBj
b25zdCBtYWtlVGFibGUgPSAoKSA9PiB7CiAgICAgICAgIH0KICAgICB9CiB9KSgpOworCit9CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL3RhYmxlLmpzIGIvSlNUZXN0cy93YXNtL2pz
LWFwaS90YWJsZS5qcwppbmRleCBiYmNhODllYzM0ZjcxOTEyMDg0ZjYzMDlhYWMyZDY0NTUwYTQz
YmQxLi4xYjg0NDQzMWNlNjVmOTFjNDM3NTMyNWQ1Y2FlNTNkYzhiYzI0M2M3IDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3dhc20vanMtYXBpL3RhYmxlLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkv
dGFibGUuanMKQEAgLTEzLDcgKzEzLDcgQEAgaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fz
c2VydC5qcyc7CiAgICAgICAgIC5FbmQoKQogICAgICAgICAuQ29kZSgpCiAgICAgICAgIC5FbmQo
KTsKLSAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRl
ci5XZWJBc3NlbWJseSgpLmdldCgpKSwgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLCAiV2ViQXNz
ZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAzNDogQ2Fubm90IGhhdmUgbW9yZSB0
aGFuIG9uZSBUYWJsZSBmb3Igbm93Iik7CisgICAgbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWls
ZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCkpCiB9CiAKIHsKQEAgLTM4LDcgKzM4LDcgQEAgaW1wb3J0
ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CiAgICAgICAgIC5FbmQoKQogICAgICAg
ICAuQ29kZSgpCiAgICAgICAgIC5FbmQoKTsKLSAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpKSwgV2ViQXNzZW1i
bHkuQ29tcGlsZUVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0
ZSAxNzogVGFibGUgY291bnQgb2YgMiBpcyBpbnZhbGlkLCBhdCBtb3N0IDEgaXMgYWxsb3dlZCBm
b3Igbm93IChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNz
ZW1ibHkoKS5nZXQoKSknKSIpOworICAgIG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5X
ZWJBc3NlbWJseSgpLmdldCgpKQogfQogCiB7CkBAIC03Myw3ICs3MywyOCBAQCBpbXBvcnQgKiBh
cyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKICAgICAgICAgICAgICAgICAuQ2FsbEluZGly
ZWN0KDAsIDEpCiAgICAgICAgICAgICAuRW5kKCkKICAgICAgICAgLkVuZCgpOwotICAgIGFzc2Vy
dC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5
KCkuZ2V0KCkpLCBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUg
ZG9lc24ndCBwYXJzZSBhdCBieXRlIDY6IGNhbGxfaW5kaXJlY3QncyAncmVzZXJ2ZWQnIHZhcnVp
bnQxIG11c3QgYmUgMHgwLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcg
V2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSknKSIpOworICAg
IGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFz
c2VtYmx5KCkuZ2V0KCkpLCBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsICJXZWJBc3NlbWJseS5N
b2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDY6IGNhbGxfaW5kaXJlY3QncyB0YWJsZSBpbmRl
eCAxIGludmFsaWQsIGxpbWl0IGlzIDEsIGluIGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRp
bmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpKScp
Iik7Cit9CisKK3sKKyAgICBjb25zdCBidWlsZGVyID0gbmV3IEJ1aWxkZXIoKQorICAgICAgICAu
VHlwZSgpLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5UYWJsZSgp
CisgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6MjAsIGVsZW1lbnQ6ImFueWZ1bmMifSkKKyAg
ICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDoyMCwgZWxlbWVudDoiYW55ZnVuYyJ9KQorICAgICAg
ICAuRW5kKCkKKyAgICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZvbyIp
CisgICAgICAgIC5FbmQoKQorICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24o
ImZvbyIsIHtwYXJhbXM6IFsiaTMyIl19KQorICAgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQor
ICAgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAgIC5DYWxsSW5kaXJl
Y3QoMCwgMSkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAuRW5kKCk7CisgICAgbmV3IFdl
YkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCkpCiB9CiAKIHsKQEAg
LTE4Niw3ICsyMDcsNyBAQCBmdW5jdGlvbiBhc3NlcnRCYWRUYWJsZUltcG9ydCh0YWJsZURlc2Ny
aXB0aW9uLCBtZXNzYWdlKSB7CiAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCiAgICAgICAgIC5D
b2RlKCkKICAgICAgICAgLkVuZCgpOwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFz
c2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCkpLCBXZWJBc3NlbWJseS5D
b21waWxlRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDM5
OiBDYW5ub3QgaGF2ZSBtb3JlIHRoYW4gb25lIFRhYmxlIGZvciBub3ciKTsKKyAgICBuZXcgV2Vi
QXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSkKIH0KIAogCkBAIC0z
MjAsMyArMzQxLDI2IEBAIGFzc2VydC50aHJvd3MoKCkgPT4gV2ViQXNzZW1ibHkuVGFibGUucHJv
dG90eXBlLmdyb3codW5kZWZpbmVkKSwgVHlwZUVycm9yLCBgZXhwCiAgICAgYXNzZXJ0LmVxKGlu
c3RhbmNlLmV4cG9ydHMudGFibGUubGVuZ3RoLCAyMCk7CiAgICAgYXNzZXJ0LnRydXRoeShpbnN0
YW5jZS5leHBvcnRzLnRhYmxlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuVGFibGUpOwogfQorCit7
CisgICAgY29uc3QgYnVpbGRlciA9IG5ldyBCdWlsZGVyKCkKKyAgICAgICAgLlR5cGUoKS5FbmQo
KQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAuVGFibGUoKQorICAgICAgICAg
ICAgLlRhYmxlKHtpbml0aWFsOiAwLCBtYXhpbXVtOiAxLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQor
ICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAyMCwgbWF4aW11bTogMzAsIGVsZW1lbnQ6ICJh
bnlmdW5jIn0pCisgICAgICAgIC5FbmQoKQorICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAg
IC5UYWJsZSgidGFibGUwIiwgMCkKKyAgICAgICAgICAgIC5UYWJsZSgidGFibGUiLCAxKQorICAg
ICAgICAgICAgLlRhYmxlKCJ0YWJsZTIiLCAxKQorICAgICAgICAuRW5kKCkKKyAgICAgICAgLkNv
ZGUoKS5FbmQoKTsKKworICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUo
YnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpKTsKKyAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBX
ZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUpOworICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBv
cnRzLnRhYmxlLCBpbnN0YW5jZS5leHBvcnRzLnRhYmxlMik7CisgICAgYXNzZXJ0LmVxKGluc3Rh
bmNlLmV4cG9ydHMudGFibGUubGVuZ3RoLCAyMCk7CisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4
cG9ydHMudGFibGUwLmxlbmd0aCwgMCk7CisgICAgYXNzZXJ0LnRydXRoeShpbnN0YW5jZS5leHBv
cnRzLnRhYmxlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuVGFibGUpOworfQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvYW55cmVmX3RhYmxlLmpzIGIvSlNUZXN0cy93YXNtL3Jl
ZmVyZW5jZXMvYW55cmVmX3RhYmxlLmpzCmluZGV4IGIyYmNhZWNiZWJkZmQzNjgzYjMxNzhkNDJl
NTg1MDYwYmI5OWJlMjAuLmJjOTVmNjdkYTE2ZmU2NTJjOTZjNjY5MjY1YzY2NDQ4ODZlZTg2NzQg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZS5qcworKysg
Yi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9hbnlyZWZfdGFibGUuanMKQEAgLTE4LDEyICsxOCwx
MiBAQCBjb25zdCAkMSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHku
TW9kdWxlKChuZXcgQnVpbGRlcigpKQogICAgICAgICAuRnVuY3Rpb24oInNldF90YmwiLCB7IHBh
cmFtczogWyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkKICAgICAgICAgICAuSTMyQ29uc3QoMCkK
ICAgICAgICAgICAuR2V0TG9jYWwoMCkKLSAgICAgICAgICAuVGFibGVTZXQoKQorICAgICAgICAg
IC5UYWJsZVNldCgwKQogICAgICAgICAuRW5kKCkKIAogICAgICAgICAuRnVuY3Rpb24oImdldF90
YmwiLCB7IHBhcmFtczogW10sIHJldDogImFueXJlZiIgfSkKICAgICAgICAgICAuSTMyQ29uc3Qo
MCkKLSAgICAgICAgICAuVGFibGVHZXQoKQorICAgICAgICAgIC5UYWJsZUdldCgwKQogICAgICAg
ICAuRW5kKCkKIAogICAgICAgICAuRnVuY3Rpb24oInRibF9pc19udWxsIiwgeyBwYXJhbXM6IFtd
LCByZXQ6ICJpMzIiIH0pCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9hbnly
ZWZfdGFibGVfaW1wb3J0LmpzIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvYW55cmVmX3RhYmxl
X2ltcG9ydC5qcwppbmRleCA4OGNhYjdjMjNmZTdiNDBhZDY5ZWMyMzZkNGJiNjlkMjM1MThiNjNl
Li4xNzQyYmIyMDhjMGE4MjQyNDI3MGVkNWI5MGZmMGE2YjQwODc1MzAxIDEwMDY0NAotLS0gYS9K
U1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9hbnlyZWZfdGFibGVfaW1wb3J0LmpzCisrKyBiL0pTVGVz
dHMvd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZV9pbXBvcnQuanMKQEAgLTIyLDEyICsyMiwx
MiBAQCBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKICAgICAgICAgICAgIC5G
dW5jdGlvbigic2V0X3RibCIsIHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQog
ICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKICAgICAgICAgICAgICAgLkdldExvY2FsKDApCi0g
ICAgICAgICAgICAgIC5UYWJsZVNldCgpCisgICAgICAgICAgICAgIC5UYWJsZVNldCgwKQogICAg
ICAgICAgICAgLkVuZCgpCiAKICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIsIHsgcGFy
YW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQogICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKLSAg
ICAgICAgICAgICAgLlRhYmxlR2V0KCkKKyAgICAgICAgICAgICAgLlRhYmxlR2V0KDApCiAgICAg
ICAgICAgICAuRW5kKCkKIAogICAgICAgICAgICAgLkZ1bmN0aW9uKCJ0YmxfaXNfbnVsbCIsIHsg
cGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KQpAQCAtODgsMTIgKzg4LDEyIEBAIGltcG9ydCBCdWls
ZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwogICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJs
IiwgeyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCiAgICAgICAgICAgICAgIC5J
MzJDb25zdCgwKQogICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKLSAgICAgICAgICAgICAgLlRh
YmxlU2V0KCkKKyAgICAgICAgICAgICAgLlRhYmxlU2V0KDApCiAgICAgICAgICAgICAuRW5kKCkK
IAogICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJh
bnlyZWYiIH0pCiAgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQotICAgICAgICAgICAgICAuVGFi
bGVHZXQoKQorICAgICAgICAgICAgICAuVGFibGVHZXQoMCkKICAgICAgICAgICAgIC5FbmQoKQog
CiAgICAgICAgICAgICAuRnVuY3Rpb24oInRibF9pc19udWxsIiwgeyBwYXJhbXM6IFtdLCByZXQ6
ICJpMzIiIH0pCkBAIC0xMjcsMTIgKzEyNywxMiBAQCBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9C
dWlsZGVyLmpzJzsKICAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibCIsIHsgcGFyYW1zOiBb
ImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQogICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKICAg
ICAgICAgICAgICAgLkdldExvY2FsKDApCi0gICAgICAgICAgICAgIC5UYWJsZVNldCgpCisgICAg
ICAgICAgICAgIC5UYWJsZVNldCgwKQogICAgICAgICAgICAgLkVuZCgpCiAKICAgICAgICAgICAg
IC5GdW5jdGlvbigiZ2V0X3RibCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQogICAg
ICAgICAgICAgICAuSTMyQ29uc3QoMCkKLSAgICAgICAgICAgICAgLlRhYmxlR2V0KCkKKyAgICAg
ICAgICAgICAgLlRhYmxlR2V0KDApCiAgICAgICAgICAgICAuRW5kKCkKIAogICAgICAgICAgICAg
LkZ1bmN0aW9uKCJ0YmxfaXNfbnVsbCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZnVuY19yZWYuanMgYi9KU1Rlc3RzL3dh
c20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qcwppbmRleCAzNWUwNmU0NjU4Mzg3MjgzYzU4MzM1Yjli
NjZmNzc4NTNmOWJiMTAyLi4zNmE3OWI2ZjM0MjIzMjY3ZGU0ZWU0ZDQyYjc2NzE1NjU5YTQ5Njhi
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qcworKysgYi9K
U1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qcwpAQCAtMjU3LDcgKzI1Nyw3IEBAIGFz
c2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkK
ICAgICAuRnVuY3Rpb24oImgiLCB7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAidm9pZCIgfSkKICAg
ICAgIC5HZXRMb2NhbCgwKQogICAgICAgLkkzMkNvbnN0KDApCi0gICAgICAuVGFibGVTZXQoKQor
ICAgICAgLlRhYmxlU2V0KDApCiAgICAgLkVuZCgpCiAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdl
dCgpKSwgRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCB2YWxpZGF0ZTogdGFibGUu
c2V0IHZhbHVlIHRvIHR5cGUgSTMyIGV4cGVjdGVkIEFueWZ1bmMsIGluIGZ1bmN0aW9uIGF0IGlu
ZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUnKSIpOwogCkBAIC0yNjcs
NiArMjY3LDcgQEAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChu
ZXcgQnVpbGRlcigpKQogICAgICAgLlR5cGUoKS5FbmQoKQogICAgICAgLkZ1bmN0aW9uKCkuRW5k
KCkKICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDAsIGVsZW1l
bnQ6ICJhbnlyZWYifSkKICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMSwgZWxlbWVudDog
ImFueWZ1bmMifSkKICAgICAgIC5FbmQoKQogICAgICAgLkdsb2JhbCgpCkBAIC0yOTEsMTEgKzI5
MiwxMSBAQCBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBC
dWlsZGVyKCkpCiAgICAgICAgIC5GdW5jdGlvbigiY2FsbF9nbG9iIiwgeyBwYXJhbXM6IFsiaTMy
Il0sIHJldDogImkzMiIgfSkKICAgICAgICAgICAgIC5JMzJDb25zdCgwKQogICAgICAgICAgICAg
LkdldEdsb2JhbCgwKQotICAgICAgICAgICAgLlRhYmxlU2V0KCkKKyAgICAgICAgICAgIC5UYWJs
ZVNldCgxKQogCiAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKICAgICAgICAgICAgIC5JMzJDb25z
dCgwKQotICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgyLDApCisgICAgICAgICAgICAuQ2FsbElu
ZGlyZWN0KDIsMSkKICAgICAgICAgLkVuZCgpCiAKICAgICAgICAgLkZ1bmN0aW9uKCJyZXRfMjAi
LCB7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9KQpAQCAtMzI4LDYgKzMyOSw3IEBAIGFz
c2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkK
ICAgICAgIC5UeXBlKCkuRW5kKCkKICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCiAgICAgICAuVGFi
bGUoKQorICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAwLCBlbGVtZW50OiAiYW55cmVmIn0p
CiAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDEsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCiAg
ICAgICAuRW5kKCkKICAgICAgIC5FeHBvcnQoKQpAQCAtMzM4LDEyICszNDAsMTIgQEAgYXNzZXJ0
LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQogICAg
ICAgICAuRnVuY3Rpb24oInNldCIsIHsgcGFyYW1zOiBbImFueWZ1bmMiXSwgcmV0OiAidm9pZCIg
fSkKICAgICAgICAgICAuSTMyQ29uc3QoMCkKICAgICAgICAgICAuR2V0TG9jYWwoMCkKLSAgICAg
ICAgICAuVGFibGVTZXQoKQorICAgICAgICAgIC5UYWJsZVNldCgxKQogICAgICAgICAuRW5kKCkK
IAogICAgICAgICAuRnVuY3Rpb24oImdldCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55ZnVuYyIg
fSkKICAgICAgICAgICAgIC5JMzJDb25zdCgwKQotICAgICAgICAgICAgLlRhYmxlR2V0KCkKKyAg
ICAgICAgICAgIC5UYWJsZUdldCgxKQogICAgICAgICAuRW5kKCkKICAgICAgIC5FbmQoKS5XZWJB
c3NlbWJseSgpLmdldCgpKSk7CiAKQEAgLTQwNSw3ICs0MDcsNyBAQCBmb3IgKGxldCBpbXBvcnRl
ZEZ1biBvZiBbZnVuY3Rpb24oaSkgeyByZXR1cm4gaTsgfSwgbWFrZUFueWZ1bmNJZGVudCgpXSkg
ewogICAgICAgICAgIC5HZXRMb2NhbCgwKQogICAgICAgICAgIC5JMzJDb25zdCgwKQogICAgICAg
ICAgIC5SZWZGdW5jKDApCi0gICAgICAgICAgLlRhYmxlU2V0KCkKKyAgICAgICAgICAuVGFibGVT
ZXQoMCkKICAgICAgICAgICAuSTMyQ29uc3QoMCkKICAgICAgICAgICAuQ2FsbEluZGlyZWN0KDAs
IDApCiAgICAgICAgIC5FbmQoKQpAQCAtNDE0LDcgKzQxNiw3IEBAIGZvciAobGV0IGltcG9ydGVk
RnVuIG9mIFtmdW5jdGlvbihpKSB7IHJldHVybiBpOyB9LCBtYWtlQW55ZnVuY0lkZW50KCldKSB7
CiAgICAgICAgICAgLlJlZkZ1bmMoMSkKICAgICAgICAgICAuSTMyQ29uc3QoMCkKICAgICAgICAg
ICAuUmVmRnVuYygwKQotICAgICAgICAgIC5UYWJsZVNldCgpCisgICAgICAgICAgLlRhYmxlU2V0
KDApCiAgICAgICAgICAgLkkzMkNvbnN0KDApCiAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgwLCAw
KQogICAgICAgICAuRW5kKCkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL211
bHRpdGFibGUuanMgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9tdWx0aXRhYmxlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjkzODJmM2YwMGQ1OTlkMzFjYmFjYjBjNDcwZWI2OTg2OGYzZDczMWEKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9tdWx0aXRhYmxlLmpzCkBAIC0wLDAg
KzEsNDYwIEBACitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKK2ltcG9y
dCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOworCit7CisgICAgY29uc3QgJDEgPSBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIo
KSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkK
KyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMCwg
bWF4aW11bTogMCwgZWxlbWVudDogImFueXJlZiJ9KQorICAgICAgICAgICAgICAgIC5UYWJsZSh7
aW5pdGlhbDogMjAsIG1heGltdW06IDMwLCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAgICAgICAg
LkVuZCgpCisgICAgICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigic2V0
X3RibCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIpCisgICAgICAgICAgICAg
IC5GdW5jdGlvbigiZ2V0X3RibDAiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oInNldF90Ymww
IikKKyAgICAgICAgICAgICAgLlRhYmxlKCJ0YmwiLCAxKQorICAgICAgICAgIC5FbmQoKQorICAg
ICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibCIsIHsgcGFyYW1z
OiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkK
KyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5UYWJsZVNldCgxKQor
ICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIsIHsg
cGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkK
KyAgICAgICAgICAgICAgLlRhYmxlR2V0KDEpCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsMCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9
KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLlRhYmxlR2V0KDAp
CisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsMCIs
IHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgICAuSTMy
Q29uc3QoMCkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5UYWJs
ZVNldCgwKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5
KCkuZ2V0KCkpKTsKKworICAgIGZ1bGxHQygpCisKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5n
ZXRfdGJsKCksIG51bGwpCisKKyAgICAkMS5leHBvcnRzLnNldF90YmwoImhpIikKKyAgICBmdWxs
R0MoKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF90YmwoKSwgImhpIikKKyAgICBhc3Nl
cnQuZXEoJDEuZXhwb3J0cy50YmwuZ2V0KDApLCAiaGkiKQorICAgIGFzc2VydC5lcSgkMS5leHBv
cnRzLnRibC5nZXQoMSksIG51bGwpCisKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9y
dHMuZ2V0X3RibDAoKSwgRXJyb3IsICJPdXQgb2YgYm91bmRzIHRhYmxlIGFjY2VzcyAoZXZhbHVh
dGluZyAnZnVuYyguLi5hcmdzKScpIik7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBv
cnRzLnNldF90YmwwKG51bGwpLCBFcnJvciwgIk91dCBvZiBib3VuZHMgdGFibGUgYWNjZXNzIChl
dmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKTsKK30KKworeworICAgIGNvbnN0IHRibCA9IG5l
dyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDowLCBlbGVtZW50OiJhbnlyZWYifSk7CisgICAg
Y29uc3QgJDEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVs
ZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLklt
cG9ydCgpCisgICAgICAgICAgICAgICAgLlRhYmxlKCJpbXAiLCAidGJsIiwge2luaXRpYWw6IDAs
IGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rp
b24oKS5FbmQoKQorICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAgICAgLlRhYmxlKHtp
bml0aWFsOiAyMCwgbWF4aW11bTogMzAsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAu
RW5kKCkKKyAgICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRf
dGJsIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsIikKKyAgICAgICAgICAgICAg
LkZ1bmN0aW9uKCJnZXRfdGJsMCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibDAi
KQorICAgICAgICAgICAgICAuVGFibGUoInRibCIsIDEpCisgICAgICAgICAgLkVuZCgpCisgICAg
ICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsIiwgeyBwYXJhbXM6
IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQor
ICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLlRhYmxlU2V0KDEpCisg
ICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsIiwgeyBw
YXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQor
ICAgICAgICAgICAgICAuVGFibGVHZXQoMSkKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAg
ICAgICAuRnVuY3Rpb24oImdldF90YmwwIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0p
CisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuVGFibGVHZXQoMCkK
KyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oInNldF90YmwwIiwg
eyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5JMzJD
b25zdCgwKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLlRhYmxl
U2V0KDApCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHko
KS5nZXQoKSksIHsgaW1wOiB7IHRibCB9fSk7CisKKyAgICBmdWxsR0MoKQorCisgICAgYXNzZXJ0
LmVxKCQxLmV4cG9ydHMuZ2V0X3RibCgpLCBudWxsKQorCisgICAgJDEuZXhwb3J0cy5zZXRfdGJs
KCJoaSIpCisgICAgZnVsbEdDKCkKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfdGJsKCks
ICJoaSIpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMudGJsLmdldCgwKSwgImhpIikKKyAgICBh
c3NlcnQuZXEoJDEuZXhwb3J0cy50YmwuZ2V0KDEpLCBudWxsKQorCisgICAgYXNzZXJ0LnRocm93
cygoKSA9PiAkMS5leHBvcnRzLmdldF90YmwwKCksIEVycm9yLCAiT3V0IG9mIGJvdW5kcyB0YWJs
ZSBhY2Nlc3MgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpOworICAgIGFzc2VydC50aHJv
d3MoKCkgPT4gJDEuZXhwb3J0cy5zZXRfdGJsMChudWxsKSwgRXJyb3IsICJPdXQgb2YgYm91bmRz
IHRhYmxlIGFjY2VzcyAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIik7Cit9CisKK3sKKyAg
ICBjb25zdCB0YmwgPSBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6MSwgZWxlbWVudDoi
YW55cmVmIn0pOworICAgIGNvbnN0ICQxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQo
KQorICAgICAgICAgIC5JbXBvcnQoKQorICAgICAgICAgICAgICAgIC5UYWJsZSgiaW1wIiwgInRi
bCIsIHtpbml0aWFsOiAxLCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAgICAgICAgLkVuZCgpCisg
ICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAg
ICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMjAsIG1heGltdW06IDMwLCBlbGVtZW50OiAiYW55cmVm
In0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgICAg
IC5GdW5jdGlvbigic2V0X3RibCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIp
CisgICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibDAiKQorICAgICAgICAgICAgICAuRnVu
Y3Rpb24oInNldF90YmwwIikKKyAgICAgICAgICAgICAgLlRhYmxlKCJ0YmwiLCAxKQorICAgICAg
ICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigic2V0
X3RibCIsIHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAg
ICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAg
IC5UYWJsZVNldCgxKQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlv
bigiZ2V0X3RibCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQorICAgICAgICAgICAg
ICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLlRhYmxlR2V0KDEpCisgICAgICAgICAgICAu
RW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsMCIsIHsgcGFyYW1zOiBbXSwg
cmV0OiAiYW55cmVmIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAg
ICAgLlRhYmxlR2V0KDApCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0
aW9uKCJzZXRfdGJsMCIsIHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQorICAg
ICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAg
ICAgICAgICAgIC5UYWJsZVNldCgwKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVu
ZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpLCB7IGltcDogeyB0YmwgfX0pOworCisgICAgZnVsbEdD
KCkKKworICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF90YmwoKSwgbnVsbCkKKworICAgICQx
LmV4cG9ydHMuc2V0X3RibCgiaGkiKQorICAgIGZ1bGxHQygpCisgICAgJDEuZXhwb3J0cy5zZXRf
dGJsMChudWxsKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF90YmwoKSwgImhpIikKKyAg
ICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfdGJsMCgpLCBudWxsKQorICAgIGFzc2VydC5lcSgk
MS5leHBvcnRzLnRibC5nZXQoMCksICJoaSIpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMudGJs
LmdldCgxKSwgbnVsbCkKKyAgICBhc3NlcnQuZXEodGJsLmdldCgwKSwgbnVsbCkKK30KKworewor
ICAgIGNvbnN0ICQxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5N
b2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAg
IC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgICAgICAu
VGFibGUoe2luaXRpYWw6IDMsIG1heGltdW06IDMwLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAg
ICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMiwgbWF4aW11bTogMzAsIGVsZW1lbnQ6ICJh
bnlmdW5jIn0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkV4cG9ydCgpCisgICAgICAg
ICAgICAgIC5GdW5jdGlvbigiY2FsbF90YmwwIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJj
YWxsX3RibDEiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oInJldDQyIikKKyAgICAgICAgICAg
ICAgLkZ1bmN0aW9uKCJyZXQxMzM3IikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQyNTYi
KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbGVtZW50KCkKKyAgICAgICAgICAgICAg
ICAuRWxlbWVudCh7dGFibGVJbmRleDogMSwgb2Zmc2V0OiAwLCBmdW5jdGlvbkluZGljZXM6IFsy
XX0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1
bmN0aW9uKCJjYWxsX3RibDAiLCB7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9KQorICAg
ICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgxLDAp
CisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJjYWxsX3RibDEi
LCB7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgICAgICAuR2V0TG9j
YWwoMCkKKyAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgxLDEpCisgICAgICAgICAgICAuRW5k
KCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQ0MiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAi
aTMyIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoNDIpCisgICAgICAgICAgICAuRW5kKCkK
KworICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQxMzM3IiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJp
MzIiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgxMzM3KQorICAgICAgICAgICAgLkVuZCgp
CisKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0MjU2IiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJp
MzIiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgyNTYpCisgICAgICAgICAgICAuRW5kKCkK
KyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSkpOworCisgICAgZnVsbEdDKCkK
KworICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmNhbGxfdGJsMSgwKSwgNDIpCisgICAgYXNzZXJ0
LnRocm93cygoKSA9PiAkMS5leHBvcnRzLmNhbGxfdGJsMCgwKSwgRXJyb3IsICJjYWxsX2luZGly
ZWN0IHRvIGEgbnVsbCB0YWJsZSBlbnRyeSAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikK
KyAgICBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuY2FsbF90YmwxKDEpLCBFcnJvciwg
ImNhbGxfaW5kaXJlY3QgdG8gYSBudWxsIHRhYmxlIGVudHJ5IChldmFsdWF0aW5nICdmdW5jKC4u
LmFyZ3MpJykiKQorfQorCit7CisgICAgY29uc3QgJDEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFu
Y2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlw
ZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAuVGFibGUo
KQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMywgbWF4aW11bTogMzAsIGVsZW1l
bnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAyLCBtYXhp
bXVtOiAzMCwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAg
ICAuRXhwb3J0KCkKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJjYWxsX3RibDAiKQorICAgICAg
ICAgICAgICAuRnVuY3Rpb24oImNhbGxfdGJsMSIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigi
cmV0NDIiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oInJldDEzMzciKQorICAgICAgICAgICAg
ICAuRnVuY3Rpb24oInJldDI1NiIpCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVsZW1l
bnQoKQorICAgICAgICAgICAgICAgIC5FbGVtZW50KHt0YWJsZUluZGV4OiAxLCBvZmZzZXQ6IDAs
IGZ1bmN0aW9uSW5kaWNlczogWzJdfSkKKyAgICAgICAgICAgICAgICAuRWxlbWVudCh7dGFibGVJ
bmRleDogMCwgb2Zmc2V0OiAwLCBmdW5jdGlvbkluZGljZXM6IFszXX0pCisgICAgICAgICAgICAg
ICAgLkVsZW1lbnQoe3RhYmxlSW5kZXg6IDEsIG9mZnNldDogMSwgZnVuY3Rpb25JbmRpY2VzOiBb
NF19KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5G
dW5jdGlvbigiY2FsbF90YmwwIiwgeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSkKKyAg
ICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMSww
KQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigiY2FsbF90Ymwx
IiwgeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAgICAgLkdldExv
Y2FsKDApCisgICAgICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMSwxKQorICAgICAgICAgICAgLkVu
ZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0NDIiLCB7IHBhcmFtczogW10sIHJldDog
ImkzMiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDQyKQorICAgICAgICAgICAgLkVuZCgp
CisKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0MTMzNyIsIHsgcGFyYW1zOiBbXSwgcmV0OiAi
aTMyIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMTMzNykKKyAgICAgICAgICAgIC5FbmQo
KQorCisgICAgICAgICAgICAuRnVuY3Rpb24oInJldDI1NiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAi
aTMyIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMjU2KQorICAgICAgICAgICAgLkVuZCgp
CisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKTsKKworICAgIGZ1bGxHQygp
CisKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5jYWxsX3RibDEoMCksIDQyKQorICAgIGFzc2Vy
dC5lcSgkMS5leHBvcnRzLmNhbGxfdGJsMCgwKSwgMTMzNykKKyAgICBhc3NlcnQuZXEoJDEuZXhw
b3J0cy5jYWxsX3RibDEoMSksIDI1NikKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9y
dHMuY2FsbF90YmwwKDEpLCBFcnJvciwgImNhbGxfaW5kaXJlY3QgdG8gYSBudWxsIHRhYmxlIGVu
dHJ5IChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorICAgIGFzc2VydC50aHJvd3MoKCkg
PT4gJDEuZXhwb3J0cy5jYWxsX3RibDAoMiksIEVycm9yLCAiY2FsbF9pbmRpcmVjdCB0byBhIG51
bGwgdGFibGUgZW50cnkgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisgICAgYXNzZXJ0
LnRocm93cygoKSA9PiAkMS5leHBvcnRzLmNhbGxfdGJsMSgyKSwgRXJyb3IsICJPdXQgb2YgYm91
bmRzIGNhbGxfaW5kaXJlY3QgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCit9CisgYXNz
ZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5
Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAg
ICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAg
IC5UYWJsZSh7aW5pdGlhbDogMywgbWF4aW11bTogMywgZWxlbWVudDogImFueWZ1bmMifSkKKyAg
ICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDIsIG1heGltdW06IDIsIGVsZW1lbnQ6ICJh
bnlmdW5jIn0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVsZW1lbnQoKQorICAgICAg
ICAgICAgICAgIC5FbGVtZW50KHt0YWJsZUluZGV4OiAxLCBvZmZzZXQ6IDAsIGZ1bmN0aW9uSW5k
aWNlczogWzBdfSkKKyAgICAgICAgICAgICAgICAuRWxlbWVudCh7dGFibGVJbmRleDogMCwgb2Zm
c2V0OiAwLCBmdW5jdGlvbkluZGljZXM6IFswXX0pCisgICAgICAgICAgICAgICAgLkVsZW1lbnQo
e3RhYmxlSW5kZXg6IDEsIG9mZnNldDogMiwgZnVuY3Rpb25JbmRpY2VzOiBbMF19KQorICAgICAg
ICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0
NDIiLCB7IHBhcmFtczogW10sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0
KDQyKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCku
Z2V0KCkpKSwgRXJyb3IsICJFbGVtZW50IGlzIHRyeWluZyB0byBzZXQgYW4gb3V0IG9mIGJvdW5k
cyB0YWJsZSBpbmRleCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlJykiKQor
Cithc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNz
ZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAg
ICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAg
ICAgICAgLlRhYmxlKHtpbml0aWFsOiAzLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55cmVmIn0p
CisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAyLCBtYXhpbXVtOiAzLCBlbGVtZW50
OiAiYW55ZnVuYyJ9KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbGVtZW50KCkKKyAg
ICAgICAgICAgICAgICAuRWxlbWVudCh7dGFibGVJbmRleDogMSwgb2Zmc2V0OiAwLCBmdW5jdGlv
bkluZGljZXM6IFswXX0pCisgICAgICAgICAgICAgICAgLkVsZW1lbnQoe3RhYmxlSW5kZXg6IDAs
IG9mZnNldDogMCwgZnVuY3Rpb25JbmRpY2VzOiBbMF19KQorICAgICAgICAgICAgICAgIC5FbGVt
ZW50KHt0YWJsZUluZGV4OiAxLCBvZmZzZXQ6IDIsIGZ1bmN0aW9uSW5kaWNlczogWzBdfSkKKyAg
ICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24o
InJldDQyIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCisgICAgICAgICAgICAgIC5JMzJD
b25zdCg0MikKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJs
eSgpLmdldCgpKSksIEVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQg
Ynl0ZSA0MDogVGFibGUgMCBtdXN0IGhhdmUgdHlwZSAnYW55ZnVuYycgdG8gaGF2ZSBhbiBlbGVt
ZW50IHNlY3Rpb24gKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUnKSIpCisKK2Fz
c2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJs
eS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAg
ICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgICAg
ICAuVGFibGUoe2luaXRpYWw6IDMsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAg
ICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDIsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJh
bnlmdW5jIn0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAg
ICAgLkZ1bmN0aW9uKCJmdW4iLCB7IHBhcmFtczogW10sIHJldDogImFueXJlZiIgfSkKKyAgICAg
ICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgIC5UYWJsZUdldCgyKQorICAgICAg
ICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKSwgRXJy
b3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCB2YWxpZGF0ZTogdGFibGUgaW5kZXggMiBp
cyBpbnZhbGlkLCBsaW1pdCBpcyAyLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5n
ICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlJykiKQorCithc3NlcnQudGhyb3dzKCgpID0+IG5ldyBX
ZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigp
KQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQor
ICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAzLCBt
YXhpbXVtOiAzLCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAgICAgICAgICAgICAgLlRhYmxlKHtp
bml0aWFsOiAyLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgICAgIC5F
bmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZnVuIiwgeyBw
YXJhbXM6IFtdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAg
ICAgICAgICAgICAgLlJlZk51bGwoKQorICAgICAgICAgICAgICAuVGFibGVTZXQoMikKKyAgICAg
ICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSksIEVy
cm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgdmFsaWRhdGU6IHRhYmxlIGluZGV4IDIg
aXMgaW52YWxpZCwgbGltaXQgaXMgMiwgaW4gZnVuY3Rpb24gYXQgaW5kZXggMCAoZXZhbHVhdGlu
ZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScpIikKKworYXNzZXJ0LnRocm93cygoKSA9PiBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIo
KSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkK
KyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMywg
bWF4aW11bTogMywgZWxlbWVudDogImFueXJlZiJ9KQorICAgICAgICAgICAgICAgIC5UYWJsZSh7
aW5pdGlhbDogMiwgbWF4aW11bTogMywgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAgICAu
RW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZ1biIsIHsg
cGFyYW1zOiBbXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgw
LCAyKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCku
Z2V0KCkpKSwgRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRl
IDQ6IGNhbGxfaW5kaXJlY3QncyB0YWJsZSBpbmRleCAyIGludmFsaWQsIGxpbWl0IGlzIDIsIGlu
IGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUn
KSIpCisKK2Fzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQo
KQorICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgLlRhYmxlKCkKKyAgICAg
ICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDMsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnly
ZWYifSkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDIsIG1heGltdW06IDMsIGVs
ZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQor
ICAgICAgICAgICAgLkZ1bmN0aW9uKCJmdW4iLCB7IHBhcmFtczogW10sIHJldDogInZvaWQiIH0p
CisgICAgICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMCwwKQorICAgICAgICAgICAgLkVuZCgpCisg
ICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKSwgRXJyb3IsICJXZWJBc3NlbWJs
eS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDQ6IGNhbGxfaW5kaXJlY3QgaXMgb25seSB2
YWxpZCB3aGVuIGEgdGFibGUgaGFzIHR5cGUgYW55ZnVuYywgaW4gZnVuY3Rpb24gYXQgaW5kZXgg
MCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScpIikKKworYXNzZXJ0LnRocm93
cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgo
bmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0
aW9uKCkuRW5kKCkKKyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7
aW5pdGlhbDogMywgbWF4aW11bTogMywgZWxlbWVudDogImFueXJlZiJ9KQorICAgICAgICAgICAg
ICAgIC5UYWJsZSh7aW5pdGlhbDogMiwgbWF4aW11bTogMywgZWxlbWVudDogImFueWZ1bmMifSkK
KyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rp
b24oImZ1biIsIHsgcGFyYW1zOiBbXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAgICAgLlJl
Zk51bGwoKQorICAgICAgICAgICAgICAuVGFibGVHZXQoMCkKKyAgICAgICAgICAgIC5FbmQoKQor
ICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSksIEVycm9yLCAiV2ViQXNzZW1i
bHkuTW9kdWxlIGRvZXNuJ3QgdmFsaWRhdGU6IHRhYmxlLmdldCBpbmRleCB0byB0eXBlIEFueWZ1
bmMgZXhwZWN0ZWQgSTMyLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcg
V2ViQXNzZW1ibHkuTW9kdWxlJykiKQorCisKK2Fzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisg
ICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAg
ICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDMsIG1heGlt
dW06IDMsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRp
YWw6IDIsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgLkVuZCgp
CisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJmdW4iLCB7IHBhcmFt
czogW10sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5SZWZOdWxsKCkKKyAgICAgICAg
ICAgICAgLlJlZk51bGwoKQorICAgICAgICAgICAgICAuVGFibGVTZXQoMCkKKyAgICAgICAgICAg
IC5FbmQoKQorICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSksIEVycm9yLCAi
V2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgdmFsaWRhdGU6IHRhYmxlLnNldCBpbmRleCB0byB0
eXBlIEFueWZ1bmMgZXhwZWN0ZWQgSTMyLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0
aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlJykiKQorCithc3NlcnQudGhyb3dzKCgpID0+IG5l
dyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRl
cigpKQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQo
KQorICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAz
LCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAgICAgICAgICAgICAgLlRhYmxl
KHtpbml0aWFsOiAyLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgICAg
IC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZnVuIiwg
eyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5JMzJD
b25zdCgwKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLlRhYmxl
U2V0KDEpCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHko
KS5nZXQoKSkpLCBFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHZhbGlkYXRlOiB0
YWJsZS5zZXQgdmFsdWUgdG8gdHlwZSBBbnlyZWYgZXhwZWN0ZWQgQW55ZnVuYywgaW4gZnVuY3Rp
b24gYXQgaW5kZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScpIikKKwor
ZnVuY3Rpb24gdGFibGVJbnNhbml0eShudW0sIGIpIHsKKyAgICBiID0gYi5JbXBvcnQoKQorICAg
IGZvciAobGV0IGk9MDsgaTwxMDAwMDAtMTsgKytpKQorICAgICAgICBiID0gYi5GdW5jdGlvbigi
aW1wIiwgInJlZiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAidm9pZCIgfSkKKyAgICBiID0gYi5FbmQo
KS5GdW5jdGlvbigpLkVuZCgpLlRhYmxlKCkKKyAgICBmb3IgKGxldCBpPTA7IGk8bnVtOyArK2kp
CisgICAgICAgIGIgPSBiLlRhYmxlKHtpbml0aWFsOiAwLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAi
YW55cmVmIn0pCisgICAgcmV0dXJuIGIKK30KKworLy9hc3NlcnQudGhyb3dzKCgpID0+IG5ldyBX
ZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKHRhYmxlSW5zYW5pdHko
MTAwMDAwMCwgKG5ldyBCdWlsZGVyKCkpCisvLyAgICAgICAgICAuVHlwZSgpLkVuZCgpKQorLy8g
ICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAzLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAi
YW55cmVmIn0pCisvLyAgICAgICAgICAuRW5kKCkKKy8vICAgICAgICAgIC5Db2RlKCkKKy8vICAg
ICAgICAgICAgLkZ1bmN0aW9uKCJmdW4iLCB7IHBhcmFtczogWyJhbnlyZWYiXSwgcmV0OiAidm9p
ZCIgfSkKKy8vICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKy8vICAgICAgICAgICAgICAuR2V0
TG9jYWwoMCkKKy8vICAgICAgICAgICAgICAuVGFibGVTZXQoMSkKKy8vICAgICAgICAgICAgLkVu
ZCgpCisvLyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSkpLCBFcnJvciwgIldl
YkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgNTAwMDAyNzogVGFibGUgY291
bnQgb2YgMTAwMDAwMCBpcyB0b28gYmlnLCBtYXhpbXVtIDEwMDAwMDAgKGV2YWx1YXRpbmcgJ25l
dyBXZWJBc3NlbWJseS5Nb2R1bGUnKSIpCit7CisgICAgY29uc3QgJDEgPSBuZXcgV2ViQXNzZW1i
bHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSh0YWJsZUluc2FuaXR5KDEwMDAwMDAt
MiwgKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKSkKKyAgICAgICAgICAg
ICAgICAuVGFibGUoe2luaXRpYWw6IDMsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlmdW5jIn0p
CisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAzLCBtYXhpbXVtOiAzLCBlbGVtZW50
OiAiYW55cmVmIn0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkV4cG9ydCgpCisgICAg
ICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsIikKKyAgICAgICAgICAgICAgICAuRnVuY3Rp
b24oImdldF90YmwiKQorICAgICAgICAgICAgICAgIC5GdW5jdGlvbigiY2FsbCIpCisgICAgICAg
ICAgLkVuZCgpCisgICAgICAgICAgLkVsZW1lbnQoKQorICAgICAgICAgICAgICAgIC5FbGVtZW50
KHt0YWJsZUluZGV4OiAxMDAwMDAwLTIsIG9mZnNldDogMCwgZnVuY3Rpb25JbmRpY2VzOiBbMF19
KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5j
dGlvbigic2V0X3RibCIsIHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQorICAg
ICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAg
ICAgICAgICAgIC5UYWJsZVNldCgxMDAwMDAwLTEpCisgICAgICAgICAgICAuRW5kKCkKKyAgICAg
ICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9
KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLlRhYmxlR2V0KDEw
MDAwMDAtMSkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJjYWxs
IiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3Qo
MCkKKyAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgwLCAxMDAwMDAwLTIpCisgICAgICAgICAg
ICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSksIHsgaW1wOiB7
IHJlZjogZnVuY3Rpb24gKCkge30gfSB9KQorICAgICQxLmV4cG9ydHMuc2V0X3RibCgiaGkiKQor
ICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF90YmwoKSwgImhpIikKKyAgICAkMS5leHBvcnRz
LmNhbGwoKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvdmFsaWRhdGlv
bi5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL3ZhbGlkYXRpb24uanMKaW5kZXggOGY4MTYz
NjlhNzRlODllNDllNjkwOWRmNDQ1NTUwZmQwZjY2YzIxNi4uN2Y3ZDE4NDI3Yjc1ZDM3MDUyYWQ2
NDg0NWUzNzE1YzFjYWVkZWUzZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMv
dmFsaWRhdGlvbi5qcworKysgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy92YWxpZGF0aW9uLmpz
CkBAIC0yNCw2ICsyNCw5IEBAIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwog
ewogICAgIGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKICAgICAgIC5UeXBlKCkuRW5k
KCkKKyAgICAgIC5JbXBvcnQoKQorICAgICAgICAgICAgLlRhYmxlKCJpbXAiLCAidGJsIiwge2lu
aXRpYWw6IDIsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAuRW5kKCkKICAgICAgIC5GdW5j
dGlvbigpLkVuZCgpCiAgICAgICAuRXhwb3J0KCkKICAgICAgICAgICAuRnVuY3Rpb24oImoiKQpA
QCAtMzIsMTQgKzM1LDE0IEBAIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwog
ICAgICAgICAuRnVuY3Rpb24oImoiLCB7IHBhcmFtczogW10sIHJldDogInZvaWQiIH0pCiAgICAg
ICAgICAgICAuSTMyQ29uc3QoMCkKICAgICAgICAgICAgIC5JMzJDb25zdCgwKQotICAgICAgICAg
ICAgLlRhYmxlU2V0KCkKKyAgICAgICAgICAgIC5UYWJsZVNldCgwKQogICAgICAgICAuRW5kKCkK
ICAgICAgIC5FbmQoKTsKIAogICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKTsK
ICAgICBiaW4udHJpbSgpOwogCi0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1i
bHkuTW9kdWxlKGJpbi5nZXQoKSksIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgIldlYkFzc2Vt
Ymx5Lk1vZHVsZSBkb2Vzbid0IHZhbGlkYXRlOiB0YWJsZS5zZXQgdmFsdWUgdG8gdHlwZSBJMzIg
ZXhwZWN0ZWQgQW55cmVmLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcg
V2ViQXNzZW1ibHkuTW9kdWxlKGJpbi5nZXQoKSknKSIpOworICAgIGFzc2VydC50aHJvd3MoKCkg
PT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4uZ2V0KCkpLCBXZWJBc3NlbWJseS5Db21waWxl
RXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCB2YWxpZGF0ZTogdGFibGUuc2V0IHZh
bHVlIHRvIHR5cGUgSTMyIGV4cGVjdGVkIEFueWZ1bmMsIGluIGZ1bmN0aW9uIGF0IGluZGV4IDAg
KGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluLmdldCgpKScpIik7CiB9CiAK
IHsKQEAgLTU2LDcgKzU5LDcgQEAgaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7
CiAgICAgICAgIC5GdW5jdGlvbigiaiIsIHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lk
IiB9KQogICAgICAgICAgICAgLkkzMkNvbnN0KDApCiAgICAgICAgICAgICAuR2V0TG9jYWwoMCkK
LSAgICAgICAgICAgIC5UYWJsZVNldCgpCisgICAgICAgICAgICAuVGFibGVTZXQoMCkKICAgICAg
ICAgLkVuZCgpCiAgICAgICAuRW5kKCk7CiAKQEAgLTc5LDcgKzgyLDcgQEAgaW1wb3J0IEJ1aWxk
ZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CiAgICAgICAuQ29kZSgpCiAgICAgICAgIC5GdW5jdGlv
bigiaiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQogICAgICAgICAgICAgLkkzMkNv
bnN0KDApCi0gICAgICAgICAgICAuVGFibGVHZXQoKQorICAgICAgICAgICAgLlRhYmxlR2V0KDAp
CiAgICAgICAgIC5FbmQoKQogICAgICAgLkVuZCgpOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dh
c20vc3BlYy10ZXN0cy9pbXBvcnRzLndhc3QuanMgYi9KU1Rlc3RzL3dhc20vc3BlYy10ZXN0cy9p
bXBvcnRzLndhc3QuanMKaW5kZXggNDhkMTQwOTY2YTRmNzU4MzY3MDgwMjk3YTRjMDNjYWE3NDgz
MzUzMS4uNmIzZmFhZmFkOTZmN2ViZWY0Mjk4ZDQyOWFiZDkxYjBiZmE4NjY4YiAxMDA2NDQKLS0t
IGEvSlNUZXN0cy93YXNtL3NwZWMtdGVzdHMvaW1wb3J0cy53YXN0LmpzCisrKyBiL0pTVGVzdHMv
d2FzbS9zcGVjLXRlc3RzL2ltcG9ydHMud2FzdC5qcwpAQCAtMTg4LDE1ICsxODgsNiBAQCBhc3Nl
cnRfdHJhcCgoKSA9PiBjYWxsKCQxNCwgImNhbGwiLCBbM10pKTsKIC8vIGltcG9ydHMud2FzdDoy
OTAKIGFzc2VydF90cmFwKCgpID0+IGNhbGwoJDE0LCAiY2FsbCIsIFsxMDBdKSk7CiAKLS8vIGlt
cG9ydHMud2FzdDoyOTMKLWFzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBc
eDAwXHgwMFx4MDJceDhkXHg4MFx4ODBceDgwXHgwMFx4MDJceDAwXHgwMFx4MDFceDcwXHgwMFx4
MGFceDAwXHgwMFx4MDFceDcwXHgwMFx4MGEiKTsKLQotLy8gaW1wb3J0cy53YXN0OjI5NwotYXNz
ZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMlx4ODdceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDBceDAwXHgwMVx4NzBceDAwXHgwYVx4MDRceDg0XHg4MFx4ODBc
eDgwXHgwMFx4MDFceDcwXHgwMFx4MGEiKTsKLQotLy8gaW1wb3J0cy53YXN0OjMwMQotYXNzZXJ0
X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwNFx4ODdceDgwXHg4
MFx4ODBceDAwXHgwMlx4NzBceDAwXHgwYVx4NzBceDAwXHgwYSIpOwotCiAvLyBpbXBvcnRzLndh
c3Q6MzA2CiBsZXQgJDE1ID0gaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBc
eDAwXHgwMlx4OTdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDRceDc0XHg2NVx4NzNceDc0XHgwY1x4
NzRceDYxXHg2Mlx4NmNceDY1XHgyZFx4MzFceDMwXHgyZFx4NjlceDZlXHg2Nlx4MDFceDcwXHgw
MFx4MGEiKTsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3dhc20uanNvbiBiL0pTVGVzdHMv
d2FzbS93YXNtLmpzb24KaW5kZXggNjRjYTBiNWIyMDhkOTFiMmJmNzg2NTU3NTcxMjQ3M2Q1Yjcy
NTBhMy4uNDUzMDhmYmJkNTc1MzJmNWViYTEzOTU2Y2FhY2QwNTU5MzRhY2JhZiAxMDA2NDQKLS0t
IGEvSlNUZXN0cy93YXNtL3dhc20uanNvbgorKysgYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCkBA
IC02NywxMCArNjcsMTAgQEAKICAgICAgICAgInRlZV9sb2NhbCI6ICAgICAgICAgICB7ICJjYXRl
Z29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM0LCAicmV0dXJuIjogWyJhbnkiXSwgICAg
ICAicGFyYW1ldGVyIjogWyJhbnkiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3si
bmFtZSI6ICJsb2NhbF9pbmRleCIsICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3cml0ZSBh
IGxvY2FsIHZhcmlhYmxlIG9yIHBhcmFtZXRlciBhbmQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIiB9
LAogICAgICAgICAiZ2V0X2dsb2JhbCI6ICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwi
LCAgICAidmFsdWUiOiAgMzUsICJyZXR1cm4iOiBbImFueSJdLCAgICAgICJwYXJhbWV0ZXIiOiBb
XSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImdsb2JhbF9p
bmRleCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInJlYWQgYSBnbG9iYWwgdmFyaWFibGUi
IH0sCiAgICAgICAgICJzZXRfZ2xvYmFsIjogICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lh
bCIsICAgICJ2YWx1ZSI6ICAzNiwgInJldHVybiI6IFtdLCAgICAgICAgICAgInBhcmFtZXRlciI6
IFsiYW55Il0sICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZ2xvYmFs
X2luZGV4IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAid3JpdGUgYSBnbG9iYWwgdmFyaWFi
bGUiIH0sCi0gICAgICAgICJ0YWJsZS5nZXQiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3Bl
Y2lhbCIsICAgICJ2YWx1ZSI6ICAzNywgInJldHVybiI6IFsiYW55cmVmIl0sICAgInBhcmFtZXRl
ciI6IFsiaTMyIl0sICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiZ2V0IGEgdGFibGUgdmFsdWUi
IH0sCi0gICAgICAgICJ0YWJsZS5zZXQiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lh
bCIsICAgICJ2YWx1ZSI6ICAzOCwgInJldHVybiI6IFtdLCAgICAgICAgICAgInBhcmFtZXRlciI6
IFsiaTMyIiwgImFueXJlZiJdLCAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAic2V0IGEgdGFibGUgdmFsdWUiIH0s
CisgICAgICAgICJ0YWJsZS5nZXQiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIs
ICAgICJ2YWx1ZSI6ICAzNywgInJldHVybiI6IFsiYW55cmVmIl0sICAgInBhcmFtZXRlciI6IFsi
aTMyIl0sICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidGFibGVfaW5k
ZXgiLCAgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiZ2V0IGEgdGFibGUgdmFsdWUiIH0sCisg
ICAgICAgICJ0YWJsZS5zZXQiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAg
ICJ2YWx1ZSI6ICAzOCwgInJldHVybiI6IFtdLCAgICAgICAgICAgInBhcmFtZXRlciI6IFsiaTMy
IiwgImFueXJlZiJdLCAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidGFibGVfaW5kZXgi
LCAgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAic2V0IGEgdGFibGUgdmFsdWUiIH0sCiAgICAg
ICAgICJjYWxsIjogICAgICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2
YWx1ZSI6ICAxNiwgInJldHVybiI6IFsiY2FsbCJdLCAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJd
LCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZnVuY3Rpb25faW5kZXgi
LCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIGJ5IGl0cyBpbmRleCIg
fSwKLSAgICAgICAgImNhbGxfaW5kaXJlY3QiOiAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwg
ICAgICAgInZhbHVlIjogIDE3LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAicGFyYW1ldGVyIjog
WyJjYWxsIl0sICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBlX2lu
ZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAicmVzZXJ2ZWQiLCAidHlw
ZSI6ICJ2YXJ1aW50MSJ9XSwgICJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gaW5kaXJl
Y3Qgd2l0aCBhbiBleHBlY3RlZCBzaWduYXR1cmUiIH0sCisgICAgICAgICJjYWxsX2luZGlyZWN0
IjogICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxNywgInJldHVy
biI6IFsiY2FsbCJdLCAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAg
ImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1aW50
MzIifSwgeyJuYW1lIjogInRhYmxlX2luZGV4IiwidHlwZSI6ICJ2YXJ1aW50MzIifV0sImRlc2Ny
aXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBpbmRpcmVjdCB3aXRoIGFuIGV4cGVjdGVkIHNpZ25h
dHVyZSIgfSwKICAgICAgICAgImkzMi5sb2FkOF9zIjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJt
ZW1vcnkiLCAgICAgInZhbHVlIjogIDQ0LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1l
dGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJm
bGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0Iiwg
ICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5
IiB9LAogICAgICAgICAiaTMyLmxvYWQ4X3UiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9y
eSIsICAgICAidmFsdWUiOiAgNDUsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIi
OiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdz
IiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0
eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0s
CiAgICAgICAgICJpMzIubG9hZDE2X3MiOiAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5Iiwg
ICAgICJ2YWx1ZSI6ICA0NiwgInJldHVybiI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRlciI6IFsi
YWRkciJdLCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAg
ICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUi
OiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372380</attachid>
            <date>2019-06-18 13:59:14 -0700</date>
            <delta_ts>2019-06-18 14:13:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198760-20190618135913.patch</filename>
            <type>text/plain</type>
            <size>102746</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZDBlOGJmYWJmOGRmOTZhOWM0ZWI5ZTQyZmMzYWYxMGQyNDE1MTA5Li45MjgzOTQzZDAxYWU5Njhh
ZWM3M2MxYTJlMGQwNmJiMTQ1NGZiMmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTkgQEAKKzIwMTktMDYtMTcgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBzdXBwb3J0IGZvciBt
dWx0aXBsZSB0YWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5ODc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAg
ICAgIFN1cHBvcnQgbXVsdGlwbGUgd2FzbSB0YWJsZXMuIFdlIHR1cm4gdGFibGVJbmZvcm1hdGlv
biBpbnRvIGEgdGFibGVzIGFycmF5LCBhbmQgdXBkYXRlIGFsbCBvZiB0aGUKKyAgICAgICAgZXhp
c3RpbmcgdXNlcnMgdG8gZ2l2ZSBhIHRhYmxlIGluZGV4LgorCisgICAgICAgICogd2FzbS9XYXNt
QWlySVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6
QWlySVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRk
VGFibGVHZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVT
ZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0
KToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206
OkIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdl
bmVyYXRvcjo6YWRkVGFibGVTZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9y
OjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAqIHdhc20vV2FzbUV4Y2VwdGlvblR5cGUuaDoK
KyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RWxlbWVu
dDo6RWxlbWVudCk6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZVVucmVh
Y2hhYmxlRXhwcmVzc2lvbik6CisgICAgICAgICogd2FzbS9XYXNtSW5zdGFuY2UuY3BwOgorICAg
ICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6SW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpXYXNt
OjpJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OmV4dHJh
TWVtb3J5QWxsb2NhdGVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnRh
YmxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnNldFRhYmxlKToKKyAgICAgICAg
KiB3YXNtL1dhc21JbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6dXBk
YXRlQ2FjaGVkTWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9m
R2xvYmFscyk6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpvZmZzZXRPZlRhYmxlUHRy
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OmFsbG9jYXRpb25TaXplKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
V2FzbTo6SW5zdGFuY2U6OnNldFRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6
SW5zdGFuY2U6Om9mZnNldE9mVGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbU1v
ZHVsZUluZm9ybWF0aW9uLmg6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZUluZm9ybWF0aW9u
Ojp0YWJsZUNvdW50IGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJbXBvcnQpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZVRhYmxlSGVscGVyKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VUYWJsZSk6CisgICAgICAgIChKU0M6
Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCk6CisgICAgICAgICogd2FzbS9XYXNt
VGFibGUuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6VGFibGU6Om93bmVyIGNvbnN0KToKKyAgICAg
ICAgKiB3YXNtL1dhc21WYWxpZGF0ZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRl
OjphZGRUYWJsZUdldCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRUYWJsZVNl
dCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRDYWxsSW5kaXJlY3QpOgorICAg
ICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdh
c20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3Nl
bWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkOjpsaW5rKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1
YXRlKToKKyAgICAgICAgKiB3YXNtL3dhc20uanNvbjoKKworICAgICAgICAqIHdhc20vV2FzbUFp
cklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OkFp
cklSR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFRh
YmxlR2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlU2V0
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCk6
CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OkIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpC
M0lSR2VuZXJhdG9yOjphZGRUYWJsZUdldCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5l
cmF0b3I6OmFkZFRhYmxlU2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6
YWRkQ2FsbEluZGlyZWN0KToKKyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6RWxlbWVudDo6RWxlbWVudCk6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rp
b25QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46
OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENv
bnRleHQ+OjpwYXJzZVVucmVhY2hhYmxlRXhwcmVzc2lvbik6CisgICAgICAgICogd2FzbS9XYXNt
SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6SW5zdGFuY2UpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6SW5zdGFuY2U6OmV4dHJhTWVtb3J5QWxsb2NhdGVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
V2FzbTo6SW5zdGFuY2U6OnRhYmxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnNl
dFRhYmxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6Z2V0V2FzbVRhYmxlRWxlbWVudCk6CisgICAg
ICAgIChKU0M6Oldhc206OnNldFdhc21UYWJsZUVsZW1lbnQpOgorICAgICAgICAqIHdhc20vV2Fz
bUluc3RhbmNlLmg6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjp1cGRhdGVDYWNoZWRN
ZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZHbG9iYWxzKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mVGFibGVQdHIpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpX
YXNtOjpJbnN0YW5jZTo6dGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0
YW5jZTo6c2V0VGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6
b2Zmc2V0T2ZUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtTGltaXRzLmg6Cisg
ICAgICAgICogd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6TW9kdWxlSW5mb3JtYXRpb246OnRhYmxlQ291bnQgY29uc3QpOgorICAgICAgICAqIHdhc20v
V2FzbVNlY3Rpb25QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2Vy
OjpwYXJzZUltcG9ydCk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNl
VGFibGVIZWxwZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZVRh
YmxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KToK
KyAgICAgICAgKiB3YXNtL1dhc21UYWJsZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpUYWJsZTo6
b3duZXIgY29uc3QpOgorICAgICAgICAqIHdhc20vV2FzbVZhbGlkYXRlLmNwcDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6VmFsaWRhdGU6OmFkZFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6
VmFsaWRhdGU6OmFkZFRhYmxlU2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsaWRhdGU6OmFk
ZENhbGxJbmRpcmVjdCk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2Uu
Y3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OkpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaDoKKyAgICAg
ICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmspOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJs
eU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUpOgorICAgICAgICAqIHdhc20vd2FzbS5qc29uOgorCiAy
MDE5LTA2LTE3ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBWYWxpZGF0ZSB0aGF0IHRhYmxlIGVsZW1lbnQgdHlwZSBpcyBmdW5jcmVmIGlmIHVz
aW5nIGFuIGVsZW1lbnQgc2VjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21BaXJJUkdlbmVyYXRvci5jcHAKaW5kZXggYWIzMDRhNTVkMzZiMzU4NDIyYjFhMDdkMmE0
NGIwMDBkZjUyMmRlNy4uZWZmN2UzMjI3YmY5ZGYyNGMyMTYyM2VkZjg5M2Y1YzkzMzhkNzdiMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwCkBAIC0yMzcsOCArMjM3LDggQEAgcHVibGljOgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIGFkZFJlZkZ1bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpOwogCiAgICAgLy8gVGFibGVzCi0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gYWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZVNl
dChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSk7CisgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQodW5zaWduZWQsIEV4cHJl
c3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVTZXQodW5zaWduZWQsIEV4cHJlc3Npb25U
eXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKTsKIAogICAgIC8vIExvY2FscwogICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBDYWxscwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENh
bGwodWludDMyX3QgY2FsbGVlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNz
aW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmLCBW
ZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QodW5zaWdu
ZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYg
YXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkVW5yZWFjaGFibGUoKTsKIAogICAgIFBhcnRpYWxSZXN1bHQgYWRkU2hp
ZnQoVHlwZSwgQjM6OkFpcjo6T3Bjb2RlLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSwgRXhwcmVzc2lv
blR5cGUgc2hpZnQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwpAQCAtNjI2LDYgKzYyNiw3IEBA
IHByaXZhdGU6CiAgICAgfQogCiAgICAgdWludDMyX3QgbV9tYXhOdW1KU0NhbGxBcmd1bWVudHMg
eyAwIH07CisgICAgdW5zaWduZWQgbV9udW1JbXBvcnRGdW5jdGlvbnM7CiAKICAgICBCMzo6UGF0
Y2hwb2ludFNwZWNpYWwqIG1fcGF0Y2hwb2ludFNwZWNpYWwgeyBudWxscHRyIH07CiB9OwpAQCAt
NjgxLDYgKzY4Miw3IEBAIEFpcklSR2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcihjb25zdCBNb2R1
bGVJbmZvcm1hdGlvbiYgaW5mbywgQjM6OlByb2NlZHVyZSYgcHJvCiAgICAgLCBtX3Byb2MocHJv
Y2VkdXJlKQogICAgICwgbV9jb2RlKG1fcHJvYy5jb2RlKCkpCiAgICAgLCBtX3VubGlua2VkV2Fz
bVRvV2FzbUNhbGxzKHVubGlua2VkV2FzbVRvV2FzbUNhbGxzKQorICAgICwgbV9udW1JbXBvcnRG
dW5jdGlvbnMoaW5mby5pbXBvcnRGdW5jdGlvbkNvdW50KCkpCiB7CiAgICAgbV9jdXJyZW50Qmxv
Y2sgPSBtX2NvZGUuYWRkQmxvY2soKTsKICAgICBtX3Jvb3RCbG9jayA9IG1fY3VycmVudEJsb2Nr
OwpAQCAtOTY4LDE0ICs5NzAsMTQgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyh1
aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGkKICAgICByZXR1
cm4geyB9OwogfQogCi1hdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZUdldChFeHByZXNzaW9u
VHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1
dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJl
c3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3Vs
dAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KICAgICBBU1NFUlQoaW5kZXgudG1wKCkpOwog
ICAgIEFTU0VSVChpbmRleC50eXBlKCkgPT0gVHlwZTo6STMyKTsKICAgICByZXN1bHQgPSB0bXBG
b3JUeXBlKFR5cGU6OkFueXJlZik7CiAKLSAgICBlbWl0Q0NhbGwoJmdldFdhc21UYWJsZUVsZW1l
bnQsIHJlc3VsdCwgaW5zdGFuY2VWYWx1ZSgpLCBpbmRleCk7CisgICAgZW1pdENDYWxsKCZnZXRX
YXNtVGFibGVFbGVtZW50LCByZXN1bHQsIGluc3RhbmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlw
ZTo6STMyLCB0YWJsZUluZGV4KSwgaW5kZXgpOwogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAg
ICByZXR1cm4gSW5zdChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fz
c2VtYmxlcjo6WmVybyksIHJlc3VsdCwgcmVzdWx0KTsKICAgICB9LCBbPV0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewpAQCAtOTg1LDcg
Kzk4Nyw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBl
JiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKICAgICByZXR1cm4geyB9OwogfQogCi1h
dXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4
cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBBaXJJUkdlbmVyYXRv
cjo6YWRkVGFibGVTZXQodW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUmIGluZGV4
LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBGSVhN
RTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5ODUwNj4uCiAgICAgQVNTRVJUKGluZGV4LnRtcCgpKTsKQEAgLTk5Myw3ICs5OTUsNyBA
QCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5kZXgs
IEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLQogICAgIEFTU0VSVCh2YWx1ZS50bXAoKSk7CiAKICAg
ICBhdXRvIHNob3VsZFRocm93ID0gZzMyKCk7Ci0gICAgZW1pdENDYWxsKCZzZXRXYXNtVGFibGVF
bGVtZW50LCBzaG91bGRUaHJvdywgaW5zdGFuY2VWYWx1ZSgpLCBpbmRleCwgdmFsdWUpOworICAg
IGVtaXRDQ2FsbCgmc2V0V2FzbVRhYmxlRWxlbWVudCwgc2hvdWxkVGhyb3csIGluc3RhbmNlVmFs
dWUoKSwgYWRkQ29uc3RhbnQoVHlwZTo6STMyLCB0YWJsZUluZGV4KSwgaW5kZXgsIHZhbHVlKTsK
IAogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICByZXR1cm4gSW5zdChCcmFuY2hUZXN0MzIs
IG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIHNob3VsZFRocm93
LCBzaG91bGRUaHJvdyk7CkBAIC0xODkzLDExICsxODk1LDEyIEBAIGF1dG8gQWlySVJHZW5lcmF0
b3I6OmFkZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUsCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2Fs
bEluZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5
cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CithdXRv
IEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29u
c3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBFeHByZXNzaW9u
VHlwZSBjYWxsZWVJbmRleCA9IGFyZ3MudGFrZUxhc3QoKTsKICAgICBBU1NFUlQoc2lnbmF0dXJl
LmFyZ3VtZW50Q291bnQoKSA9PSBhcmdzLnNpemUoKSk7Ci0gICAgQVNTRVJUKG1faW5mby50YWJs
ZUluZm9ybWF0aW9uLnR5cGUoKSA9PSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmKTsKKyAgICBB
U1NFUlQobV9pbmZvLnRhYmxlQ291bnQoKSA+IHRhYmxlSW5kZXgpOworICAgIEFTU0VSVChtX2lu
Zm8udGFibGVzW3RhYmxlSW5kZXhdLnR5cGUoKSA9PSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVm
KTsKIAogICAgIG1fbWFrZXNDYWxscyA9IHRydWU7CiAgICAgLy8gTm90ZTogY2FsbCBpbmRpcmVj
dCBjYW4gY2FsbCBlaXRoZXIgV2ViQXNzZW1ibHlGdW5jdGlvbiBvciBXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbi4gQmVjYXVzZQpAQCAtMTkxMiwxMiArMTkxNSwxNiBAQCBhdXRvIEFpcklSR2Vu
ZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3Rv
cjxFeHByZXNzaQogICAgIEV4cHJlc3Npb25UeXBlIGluc3RhbmNlc0J1ZmZlciA9IGc2NCgpOwog
ICAgIEV4cHJlc3Npb25UeXBlIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGggPSBnNjQoKTsK
ICAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEluc3Rh
bmNlOjpvZmZzZXRPZlRhYmxlKCksIEIzOjpXaWR0aDY0KSk7CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEZ1bmNSZWZUYWJsZTo6b2Zmc2V0T2ZGdW5jdGlvbnMo
KSwgQjM6OldpZHRoNjQpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoQXJnOjppc1ZhbGlkQWRk
ckZvcm0oRnVuY1JlZlRhYmxlOjpvZmZzZXRPZkluc3RhbmNlcygpLCBCMzo6V2lkdGg2NCkpOwog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChBcmc6OmlzVmFsaWRBZGRyRm9ybShGdW5jUmVmVGFibGU6
Om9mZnNldE9mTGVuZ3RoKCksIEIzOjpXaWR0aDY0KSk7CiAKLSAgICAgICAgYXBwZW5kKE1vdmUs
IEFyZzo6YWRkcihpbnN0YW5jZVZhbHVlKCksIEluc3RhbmNlOjpvZmZzZXRPZlRhYmxlKCkpLCBj
YWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFBcmc6
OmlzVmFsaWRBZGRyRm9ybShJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZVB0cihtX251bUltcG9ydEZ1
bmN0aW9ucywgdGFibGVJbmRleCksIEIzOjpXaWR0aDY0KSkpIHsKKyAgICAgICAgICAgIGFwcGVu
ZChNb3ZlLCBBcmc6OmJpZ0ltbShJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZVB0cihtX251bUltcG9y
dEZ1bmN0aW9ucywgdGFibGVJbmRleCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKTsK
KyAgICAgICAgICAgIGFwcGVuZChBZGQ2NCwgaW5zdGFuY2VWYWx1ZSgpLCBjYWxsYWJsZUZ1bmN0
aW9uQnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoY2Fs
bGFibGVGdW5jdGlvbkJ1ZmZlckxlbmd0aCksIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGgp
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoaW5z
dGFuY2VWYWx1ZSgpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZVB0cihtX251bUltcG9ydEZ1bmN0
aW9ucywgdGFibGVJbmRleCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKTsKICAgICAg
ICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoLCBG
dW5jUmVmVGFibGU6Om9mZnNldE9mRnVuY3Rpb25zKCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVy
KTsKICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihjYWxsYWJsZUZ1bmN0aW9uQnVmZmVy
TGVuZ3RoLCBGdW5jUmVmVGFibGU6Om9mZnNldE9mSW5zdGFuY2VzKCkpLCBpbnN0YW5jZXNCdWZm
ZXIpOwogICAgICAgICBhcHBlbmQoTW92ZTMyLCBBcmc6OmFkZHIoY2FsbGFibGVGdW5jdGlvbkJ1
ZmZlckxlbmd0aCwgVGFibGU6Om9mZnNldE9mTGVuZ3RoKCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVm
ZmVyTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcAppbmRleCA3NzYwOTc0ODQzZWNjZTJmMWU5YjE3MDU5MjVlOTg0YWFjY2JhMjkz
Li4xZWIyNDY1MmFlNGVkNmIzMjkwNzE5ZjdlZDUzMzY5MmQ1MTFkMmY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0xOTAsOCAr
MTkwLDggQEAgcHVibGljOgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFk
ZFJlZkZ1bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCiAgICAg
Ly8gVGFibGVzCi0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVH
ZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKLSAgICBQ
YXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZVNldChFeHByZXNzaW9uVHlw
ZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQodW5zaWduZWQsIEV4cHJlc3Npb25UeXBlJiBpbmRl
eCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkVGFibGVTZXQodW5zaWduZWQsIEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhw
cmVzc2lvblR5cGUmIHZhbHVlKTsKIAogICAgIC8vIExvY2FscwogICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxscwog
ICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2Fs
bGVlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3Ms
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURf
UkVUVVJOIGFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmLCBWZWN0b3I8RXhwcmVzc2lv
blR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwg
Y29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRk
VW5yZWFjaGFibGUoKTsKIAogICAgIHZvaWQgZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbEVudHJ5
PiYgY29udHJvbFN0YWNrLCBjb25zdCBFeHByZXNzaW9uTGlzdCogZXhwcmVzc2lvblN0YWNrKTsK
QEAgLTI5Miw2ICsyOTIsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHVpbnQzMl90IG1fbWF4
TnVtSlNDYWxsQXJndW1lbnRzIHsgMCB9OworICAgIHVuc2lnbmVkIG1fbnVtSW1wb3J0RnVuY3Rp
b25zOwogfTsKIAogLy8gTWVtb3J5IGFjY2Vzc2VzIGluIFdlYkFzc2VtYmx5IGhhdmUgdW5zaWdu
ZWQgMzItYml0IG9mZnNldHMsIHdoZXJlYXMgdGhleSBoYXZlIHNpZ25lZCAzMi1iaXQgb2Zmc2V0
cyBpbiBCMy4KQEAgLTM0Myw2ICszNDQsNyBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9y
KGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHByb2NlZHVyZQogICAg
ICwgbV9wcm9jKHByb2NlZHVyZSkKICAgICAsIG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHModW5s
aW5rZWRXYXNtVG9XYXNtQ2FsbHMpCiAgICAgLCBtX2NvbnN0YW50SW5zZXJ0aW9uVmFsdWVzKG1f
cHJvYykKKyAgICAsIG1fbnVtSW1wb3J0RnVuY3Rpb25zKGluZm8uaW1wb3J0RnVuY3Rpb25Db3Vu
dCgpKQogewogICAgIG1fY3VycmVudEJsb2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7CiAKQEAgLTU2
NiwxMiArNTY4LDEyIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkUmVmSXNOdWxsKEV4cHJlc3Np
b25UeXBlJiB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKICAgICByZXR1cm4geyB9Owog
fQogCi1hdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBpbmRl
eCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBCM0lSR2Vu
ZXJhdG9yOjphZGRUYWJsZUdldCh1bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSYg
aW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAv
LyBGSVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5ODUwNj4uCiAgICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxDQ2FsbFZhbHVlPihtX3Byb2MsIHRvQjNUeXBlKEFueXJlZiksIG9yaWdpbigpLAogICAgICAg
ICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2lu
KCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oJmdldFdhc21UYWJsZUVsZW1lbnQsIEIzQ0NhbGxQ
dHJUYWcpKSwKLSAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBpbmRleCk7CisgICAgICAgIGluc3Rh
bmNlVmFsdWUoKSwgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJv
Yywgb3JpZ2luKCksIHRhYmxlSW5kZXgpLCBpbmRleCk7CiAKICAgICB7CiAgICAgICAgIENoZWNr
VmFsdWUqIGNoZWNrID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3By
b2MsIENoZWNrLCBvcmlnaW4oKSwKQEAgLTU4NSwxMiArNTg3LDEyIEBAIGF1dG8gQjNJUkdlbmVy
YXRvcjo6YWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KSAtCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBCM0lSR2VuZXJhdG9yOjphZGRU
YWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4g
UGFydGlhbFJlc3VsdAorYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZVNldCh1bnNpZ25lZCB0
YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkg
LT4gUGFydGlhbFJlc3VsdAogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KICAgICBhdXRvIHNo
b3VsZFRocm93ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2Ms
IEIzOjpJbnQzMiwgb3JpZ2luKCksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPigm
c2V0V2FzbVRhYmxlRWxlbWVudCwgQjNDQ2FsbFB0clRhZykpLAotICAgICAgICBpbnN0YW5jZVZh
bHVlKCksIGluZGV4LCB2YWx1ZSk7CisgICAgICAgIGluc3RhbmNlVmFsdWUoKSwgbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhYmxlSW5k
ZXgpLCBpbmRleCwgdmFsdWUpOwogCiAgICAgewogICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3Jp
Z2luKCksCkBAIC0xMjk4LDcgKzEzMDAsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGwo
dWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsCiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29u
c3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQjNJUkdlbmVyYXRv
cjo6YWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYg
c2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlSW5k
ZXggPSBhcmdzLnRha2VMYXN0KCk7CiAgICAgQVNTRVJUKHNpZ25hdHVyZS5hcmd1bWVudENvdW50
KCkgPT0gYXJncy5zaXplKCkpOwpAQCAtMTMxNSw3ICsxMzE3LDcgQEAgYXV0byBCM0lSR2VuZXJh
dG9yOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxF
eHByZXNzaW8KICAgICBFeHByZXNzaW9uVHlwZSBtYXNrOwogICAgIHsKICAgICAgICAgRXhwcmVz
c2lvblR5cGUgdGFibGUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPiht
X3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAotICAgICAgICAgICAgaW5zdGFu
Y2VWYWx1ZSgpLCBzYWZlQ2FzdDxpbnQzMl90PihJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZSgpKSk7
CisgICAgICAgICAgICBpbnN0YW5jZVZhbHVlKCksIHNhZmVDYXN0PGludDMyX3Q+KEluc3RhbmNl
OjpvZmZzZXRPZlRhYmxlUHRyKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCB0YWJsZUluZGV4KSkpOwog
ICAgICAgICBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwKICAg
ICAgICAgICAgIHRhYmxlLCBzYWZlQ2FzdDxpbnQzMl90PihGdW5jUmVmVGFibGU6Om9mZnNldE9m
RnVuY3Rpb25zKCkpKTsKICAgICAgICAgaW5zdGFuY2VzQnVmZmVyID0gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmln
aW4oKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAppbmRleCA3YzAzNDQx
N2ExM2YyNjFiODQ3NWM4ZWRjNDI3NGZhODA1MThiOWViLi40ZGIyOGE0ZTJiNmU5ZDU1MjI4MTY4
OGZhOWZhZGRmODkzZTVmYjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1h
dC5oCkBAIC0yMTMsMTAgKzIxMywxMiBAQCBzdHJ1Y3QgU2VnbWVudCB7CiB9OwogCiBzdHJ1Y3Qg
RWxlbWVudCB7Ci0gICAgRWxlbWVudChJMzJJbml0RXhwciBvZmZzZXQpCi0gICAgICAgIDogb2Zm
c2V0KG9mZnNldCkKKyAgICBFbGVtZW50KHVpbnQzMl90IHRhYmxlSW5kZXgsIEkzMkluaXRFeHBy
IG9mZnNldCkKKyAgICAgICAgOiB0YWJsZUluZGV4KHRhYmxlSW5kZXgpCisgICAgICAgICwgb2Zm
c2V0KG9mZnNldCkKICAgICB7IH0KIAorICAgIHVpbnQzMl90IHRhYmxlSW5kZXg7CiAgICAgSTMy
SW5pdEV4cHIgb2Zmc2V0OwogICAgIFZlY3Rvcjx1aW50MzJfdD4gZnVuY3Rpb25JbmRpY2VzOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBh
cnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgK
aW5kZXggNTllZWUyNjIyZGUyNjg1OTMyYzUxYzQyZmJlOGMxOTkzZjg0ZTk1Zi4uNzI1MDU0Mjhh
OWVlNDU2MDU5N2VlNzFjZDZlM2I0ZWZiOTUwMjAxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTI4MywxOSArMjgzLDIzIEBAIGF1
dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbigpIC0+IFBhcnRpYWxS
ZXN1bHQKIAogICAgIGNhc2UgVGFibGVHZXQ6IHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9J
RighT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzKCksICJyZWZlcmVuY2VzIGFyZSBu
b3QgZW5hYmxlZCIpOworICAgICAgICB1bnNpZ25lZCB0YWJsZUluZGV4OworICAgICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMih0YWJsZUluZGV4KSwgImNhbid0IHBhcnNl
IHRhYmxlIGluZGV4Iik7CiAgICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdCwgaW5kZXg7CiAg
ICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8oaW5kZXgsICJ0YWJsZS5n
ZXQiKTsKLSAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkVGFibGVHZXQoaW5kZXgs
IHJlc3VsdCkpOworICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRUYWJsZUdldCh0
YWJsZUluZGV4LCBpbmRleCwgcmVzdWx0KSk7CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFw
cGVuZChyZXN1bHQpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIGNhc2UgVGFi
bGVTZXQ6IHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNz
ZW1ibHlSZWZlcmVuY2VzKCksICJyZWZlcmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAg
ICB1bnNpZ25lZCB0YWJsZUluZGV4OworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJz
ZVZhclVJbnQzMih0YWJsZUluZGV4KSwgImNhbid0IHBhcnNlIHRhYmxlIGluZGV4Iik7CiAgICAg
ICAgIEV4cHJlc3Npb25UeXBlIHZhbCwgaW5kZXg7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBS
RVNTSU9OX1NUQUNLX0lOVE8odmFsLCAidGFibGUuc2V0Iik7CiAgICAgICAgIFdBU01fVFJZX1BP
UF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8oaW5kZXgsICJ0YWJsZS5zZXQiKTsKLSAgICAgICAgV0FT
TV9UUllfQUREX1RPX0NPTlRFWFQoYWRkVGFibGVTZXQoaW5kZXgsIHZhbCkpOworICAgICAgICBX
QVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRUYWJsZVNldCh0YWJsZUluZGV4LCBpbmRleCwgdmFs
KSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0zOTYsMTMgKzQwMCwxMyBAQCBh
dXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFs
UmVzdWx0CiAKICAgICBjYXNlIENhbGxJbmRpcmVjdDogewogICAgICAgICB1aW50MzJfdCBzaWdu
YXR1cmVJbmRleDsKLSAgICAgICAgdWludDhfdCByZXNlcnZlZDsKLSAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighbV9pbmZvLnRhYmxlSW5mb3JtYXRpb24sICJjYWxsX2luZGlyZWN0IGlzIG9u
bHkgdmFsaWQgd2hlbiBhIHRhYmxlIGlzIGRlZmluZWQgb3IgaW1wb3J0ZWQiKTsKKyAgICAgICAg
dWludDMyX3QgdGFibGVJbmRleDsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighbV9pbmZv
LnRhYmxlQ291bnQoKSwgImNhbGxfaW5kaXJlY3QgaXMgb25seSB2YWxpZCB3aGVuIGEgdGFibGUg
aXMgZGVmaW5lZCBvciBpbXBvcnRlZCIpOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFw
YXJzZVZhclVJbnQzMihzaWduYXR1cmVJbmRleCksICJjYW4ndCBnZXQgY2FsbF9pbmRpcmVjdCdz
IHNpZ25hdHVyZSBpbmRleCIpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZh
clVJbnQxKHJlc2VydmVkKSwgImNhbid0IGdldCBjYWxsX2luZGlyZWN0J3MgcmVzZXJ2ZWQgYnl0
ZSIpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHJlc2VydmVkLCAiY2FsbF9pbmRpcmVj
dCdzICdyZXNlcnZlZCcgdmFydWludDEgbXVzdCBiZSAweDAiKTsKKyAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIodGFibGVJbmRleCksICJjYW4ndCBnZXQgY2FsbF9p
bmRpcmVjdCdzIHRhYmxlIGluZGV4Iik7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodGFi
bGVJbmRleCA+PSBtX2luZm8udGFibGVDb3VudCgpLCAiY2FsbF9pbmRpcmVjdCdzIHRhYmxlIGlu
ZGV4ICIsIHRhYmxlSW5kZXgsICIgaW52YWxpZCwgbGltaXQgaXMgIiwgbV9pbmZvLnRhYmxlQ291
bnQoKSk7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYobV9pbmZvLnVzZWRTaWduYXR1cmVz
LnNpemUoKSA8PSBzaWduYXR1cmVJbmRleCwgImNhbGxfaW5kaXJlY3QncyBzaWduYXR1cmUgaW5k
ZXggIiwgc2lnbmF0dXJlSW5kZXgsICIgZXhjZWVkcyBrbm93biBzaWduYXR1cmVzICIsIG1faW5m
by51c2VkU2lnbmF0dXJlcy5zaXplKCkpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1f
aW5mby50YWJsZUluZm9ybWF0aW9uLnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVm
LCAiY2FsbF9pbmRpcmVjdCBpcyBvbmx5IHZhbGlkIHdoZW4gYSB0YWJsZSBoYXMgdHlwZSBhbnlm
dW5jIik7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYobV9pbmZvLnRhYmxlc1t0YWJsZUlu
ZGV4XS50eXBlKCkgIT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgImNhbGxfaW5kaXJlY3Qg
aXMgb25seSB2YWxpZCB3aGVuIGEgdGFibGUgaGFzIHR5cGUgYW55ZnVuYyIpOwogCiAgICAgICAg
IGNvbnN0IFNpZ25hdHVyZSYgY2FsbGVlU2lnbmF0dXJlID0gbV9pbmZvLnVzZWRTaWduYXR1cmVz
W3NpZ25hdHVyZUluZGV4XS5nZXQoKTsKICAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBj
YWxsZWVTaWduYXR1cmUuYXJndW1lbnRDb3VudCgpICsgMTsgLy8gQWRkIHRoZSBjYWxsZWUncyBp
bmRleC4KQEAgLTQxNiw3ICs0MjAsNyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+Ojpw
YXJzZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIG1fZXhwcmVzc2lvblN0
YWNrLnNocmluayhmaXJzdEFyZ3VtZW50SW5kZXgpOwogCiAgICAgICAgIEV4cHJlc3Npb25UeXBl
IHJlc3VsdCA9IENvbnRleHQ6OmVtcHR5RXhwcmVzc2lvbigpOwotICAgICAgICBXQVNNX1RSWV9B
RERfVE9fQ09OVEVYVChhZGRDYWxsSW5kaXJlY3QoY2FsbGVlU2lnbmF0dXJlLCBhcmdzLCByZXN1
bHQpKTsKKyAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkQ2FsbEluZGlyZWN0KHRh
YmxlSW5kZXgsIGNhbGxlZVNpZ25hdHVyZSwgYXJncywgcmVzdWx0KSk7CiAKICAgICAgICAgaWYg
KHJlc3VsdCAhPSBDb250ZXh0OjplbXB0eUV4cHJlc3Npb24oKSkKICAgICAgICAgICAgIG1fZXhw
cmVzc2lvblN0YWNrLmFwcGVuZChyZXN1bHQpOwpAQCAtNjMxLDkgKzYzNSw5IEBAIGF1dG8gRnVu
Y3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlVW5yZWFjaGFibGVFeHByZXNzaW9uKCkgLT4gUGFy
dGlhbFJlc3VsdAogCiAgICAgY2FzZSBDYWxsSW5kaXJlY3Q6IHsKICAgICAgICAgdWludDMyX3Qg
dW51c2VkOwotICAgICAgICB1aW50OF90IHVudXNlZDI7CisgICAgICAgIHVpbnQzMl90IHVudXNl
ZDI7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHVudXNlZCks
ICJjYW4ndCBnZXQgY2FsbF9pbmRpcmVjdCdzIHNpZ25hdHVyZSBpbmRleCBpbiB1bnJlYWNoYWJs
ZSBjb250ZXh0Iik7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDEo
dW51c2VkMiksICJjYW4ndCBnZXQgY2FsbF9pbmRpcmVjdCdzIHJlc2VydmVkIGJ5dGUgaW4gdW5y
ZWFjaGFibGUgY29udGV4dCIpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZh
clVJbnQzMih1bnVzZWQyKSwgImNhbid0IGdldCBjYWxsX2luZGlyZWN0J3MgcmVzZXJ2ZWQgYnl0
ZSBpbiB1bnJlYWNoYWJsZSBjb250ZXh0Iik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQog
CkBAIC02ODUsNyArNjg5LDExIEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNl
VW5yZWFjaGFibGVFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogICAgIH0KIAogICAgIGNh
c2UgVGFibGVHZXQ6Ci0gICAgY2FzZSBUYWJsZVNldDoKKyAgICBjYXNlIFRhYmxlU2V0OiB7Cisg
ICAgICAgIHVuc2lnbmVkIHRhYmxlSW5kZXg7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
IXBhcnNlVmFyVUludDMyKHRhYmxlSW5kZXgpLCAiY2FuJ3QgcGFyc2UgdGFibGUgaW5kZXgiKTsK
KyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgfQogICAgIGNhc2UgUmVmSXNOdWxsOgogICAgIGNh
c2UgUmVmTnVsbDogewogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VX
ZWJBc3NlbWJseVJlZmVyZW5jZXMoKSwgInJlZmVyZW5jZXMgYXJlIG5vdCBlbmFibGVkIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcAppbmRleCA1MmJmMGYy
YjMzMTBkOGJhZGIwMmQ0Mzk5NTAwMWQ0M2YxYmYyYzgwLi5kNWQzYWFiMTRlY2YyNWVmNDE3NzQ4
OTM3OTAzMjE0YjMzMDU2ZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21J
bnN0YW5jZS5jcHAKQEAgLTYxLDE4ICs2MSwxOSBAQCBJbnN0YW5jZTo6SW5zdGFuY2UoQ29udGV4
dCogY29udGV4dCwgUmVmPE1vZHVsZT4mJiBtb2R1bGUsIEVudHJ5RnJhbWUqKiBwb2ludGVyVAog
ICAgICAgICBpZiAoaXNTdWJ0eXBlKG1fbW9kdWxlLmdldCgpLm1vZHVsZUluZm9ybWF0aW9uKCku
Z2xvYmFsc1tpXS50eXBlLCBBbnlyZWYpKQogICAgICAgICAgICAgbV9nbG9iYWxzVG9NYXJrLnNl
dChpKTsKICAgICB9CisgICAgbWVtc2V0KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZz
ZXRPZlRhYmxlUHRyKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCAwKSwgMCwgbV9tb2R1bGUtPm1vZHVs
ZUluZm9ybWF0aW9uKCkudGFibGVDb3VudCgpICogc2l6ZW9mKFRhYmxlKikpOwogfQogCiBSZWY8
SW5zdGFuY2U+IEluc3RhbmNlOjpjcmVhdGUoQ29udGV4dCogY29udGV4dCwgUmVmPE1vZHVsZT4m
JiBtb2R1bGUsIEVudHJ5RnJhbWUqKiBwb2ludGVyVG9Ub3BFbnRyeUZyYW1lLCB2b2lkKiogcG9p
bnRlclRvQWN0dWFsU3RhY2tMaW1pdCwgU3RvcmVUb3BDYWxsRnJhbWVDYWxsYmFjayYmIHN0b3Jl
VG9wQ2FsbEZyYW1lKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBmYXN0
TWFsbG9jKGFsbG9jYXRpb25TaXplKG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5pbXBvcnRG
dW5jdGlvbkNvdW50KCkpKSkgSW5zdGFuY2UoY29udGV4dCwgV1RGTW92ZShtb2R1bGUpLCBwb2lu
dGVyVG9Ub3BFbnRyeUZyYW1lLCBwb2ludGVyVG9BY3R1YWxTdGFja0xpbWl0LCBXVEZNb3ZlKHN0
b3JlVG9wQ2FsbEZyYW1lKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBm
YXN0TWFsbG9jKGFsbG9jYXRpb25TaXplKG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5pbXBv
cnRGdW5jdGlvbkNvdW50KCksIG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50
KCkpKSkgSW5zdGFuY2UoY29udGV4dCwgV1RGTW92ZShtb2R1bGUpLCBwb2ludGVyVG9Ub3BFbnRy
eUZyYW1lLCBwb2ludGVyVG9BY3R1YWxTdGFja0xpbWl0LCBXVEZNb3ZlKHN0b3JlVG9wQ2FsbEZy
YW1lKSkpOwogfQogCiBJbnN0YW5jZTo6fkluc3RhbmNlKCkgeyB9CiAKIHNpemVfdCBJbnN0YW5j
ZTo6ZXh0cmFNZW1vcnlBbGxvY2F0ZWQoKSBjb25zdAogewotICAgIHJldHVybiBnbG9iYWxNZW1v
cnlCeXRlU2l6ZShtX21vZHVsZS5nZXQoKSkgKyBhbGxvY2F0aW9uU2l6ZShtX251bUltcG9ydEZ1
bmN0aW9ucyk7CisgICAgcmV0dXJuIGdsb2JhbE1lbW9yeUJ5dGVTaXplKG1fbW9kdWxlLmdldCgp
KSArIGFsbG9jYXRpb25TaXplKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCBtX21vZHVsZS0+bW9kdWxl
SW5mb3JtYXRpb24oKS50YWJsZUNvdW50KCkpOwogfQogCiB2b2lkIEluc3RhbmNlOjpzZXRHbG9i
YWwodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTk5LDQyICsxMDAsNTggQEAgdm9pZCBJ
bnN0YW5jZTo6c2V0RnVuY3Rpb25XcmFwcGVyKHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiAg
ICAgQVNTRVJUKGdldEZ1bmN0aW9uV3JhcHBlcihpKSA9PSB2YWx1ZSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIGdldFdhc21UYWJsZUVsZW1lbnQoSW5zdGFuY2UqIGluc3RhbmNlLCBpbnQzMl90IHNp
Z25lZEluZGV4KQorVGFibGUqIEluc3RhbmNlOjp0YWJsZSh1bnNpZ25lZCBpKQogeworICAgIFJF
TEVBU0VfQVNTRVJUKGkgPCBtX21vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50
KCkpOworICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFRhYmxlKio+KGJpdHdpc2VfY2FzdDxjaGFy
Kj4odGhpcykgKyBvZmZzZXRPZlRhYmxlUHRyKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCBpKSk7Cit9
CisKK3ZvaWQgSW5zdGFuY2U6OnNldFRhYmxlKHVuc2lnbmVkIGksIFJlZjxUYWJsZT4mJiB0YWJs
ZSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChpIDwgbV9tb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9u
KCkudGFibGVDb3VudCgpKTsKKyAgICBpZiAoYXV0byogdGFibGUgPSB0aGlzLT50YWJsZShpKSkK
KyAgICAgICAgdGFibGUtPmRlcmVmKCk7CisgICAgKmJpdHdpc2VfY2FzdDxUYWJsZSoqPihiaXR3
aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZUYWJsZVB0cihtX251bUltcG9ydEZ1bmN0
aW9ucywgaSkpID0gJnRhYmxlLmxlYWtSZWYoKTsKK30KKworRW5jb2RlZEpTVmFsdWUgZ2V0V2Fz
bVRhYmxlRWxlbWVudChJbnN0YW5jZSogaW5zdGFuY2UsIHVuc2lnbmVkIHRhYmxlSW5kZXgsIGlu
dDMyX3Qgc2lnbmVkSW5kZXgpCit7CisgICAgQVNTRVJUKHRhYmxlSW5kZXggPCBpbnN0YW5jZS0+
bW9kdWxlKCkubW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50KCkpOwogICAgIGlmIChzaWdu
ZWRJbmRleCA8IDApCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgdWludDMyX3QgaW5kZXggPSBz
aWduZWRJbmRleDsKLSAgICBpZiAoaW5kZXggPj0gaW5zdGFuY2UtPnRhYmxlKCktPmxlbmd0aCgp
KQorICAgIGlmIChpbmRleCA+PSBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPmxlbmd0aCgp
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaW5zdGFu
Y2UtPnRhYmxlKCktPmdldChpbmRleCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaW5z
dGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5nZXQoaW5kZXgpKTsKIH0KIAotYm9vbCBzZXRXYXNt
VGFibGVFbGVtZW50KEluc3RhbmNlKiBpbnN0YW5jZSwgaW50MzJfdCBzaWduZWRJbmRleCwgRW5j
b2RlZEpTVmFsdWUgZW5jVmFsdWUpCitib29sIHNldFdhc21UYWJsZUVsZW1lbnQoSW5zdGFuY2Uq
IGluc3RhbmNlLCB1bnNpZ25lZCB0YWJsZUluZGV4LCBpbnQzMl90IHNpZ25lZEluZGV4LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNWYWx1ZSkKIHsKKyAgICBBU1NFUlQodGFibGVJbmRleCA8IGluc3RhbmNl
LT5tb2R1bGUoKS5tb2R1bGVJbmZvcm1hdGlvbigpLnRhYmxlQ291bnQoKSk7CiAgICAgaWYgKHNp
Z25lZEluZGV4IDwgMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdWludDMyX3QgaW5k
ZXggPSBzaWduZWRJbmRleDsKLSAgICBpZiAoaW5kZXggPj0gaW5zdGFuY2UtPnRhYmxlKCktPmxl
bmd0aCgpKQorICAgIGlmIChpbmRleCA+PSBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPmxl
bmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY1ZhbHVlKTsKLSAgICBpZiAoaW5zdGFuY2UtPnRhYmxlKCktPnR5cGUo
KSA9PSBXYXNtOjpUYWJsZUVsZW1lbnRUeXBlOjpBbnlyZWYpCi0gICAgICAgIGluc3RhbmNlLT50
YWJsZSgpLT5zZXQoaW5kZXgsIHZhbHVlKTsKLSAgICBlbHNlIGlmIChpbnN0YW5jZS0+dGFibGUo
KS0+dHlwZSgpID09IFdhc206OlRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpIHsKKyAgICBpZiAo
aW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT50eXBlKCkgPT0gV2FzbTo6VGFibGVFbGVtZW50
VHlwZTo6QW55cmVmKQorICAgICAgICBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPnNldChp
bmRleCwgdmFsdWUpOworICAgIGVsc2UgaWYgKGluc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+
dHlwZSgpID09IFdhc206OlRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpIHsKICAgICAgICAgV2Vi
QXNzZW1ibHlGdW5jdGlvbiogd2FzbUZ1bmN0aW9uOwogICAgICAgICBXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbiogd2FzbVdyYXBwZXJGdW5jdGlvbjsKIAogICAgICAgICBpZiAoaXNXZWJBc3Nl
bWJseUhvc3RGdW5jdGlvbigqaW5zdGFuY2UtPm93bmVyPEpTT2JqZWN0PigpLT52bSgpLCB2YWx1
ZSwgd2FzbUZ1bmN0aW9uLCB3YXNtV3JhcHBlckZ1bmN0aW9uKSkgewogICAgICAgICAgICAgQVNT
RVJUKCEhd2FzbUZ1bmN0aW9uIHx8ICEhd2FzbVdyYXBwZXJGdW5jdGlvbik7CiAgICAgICAgICAg
ICBpZiAod2FzbUZ1bmN0aW9uKQotICAgICAgICAgICAgICAgIGluc3RhbmNlLT50YWJsZSgpLT5h
c0Z1bmNyZWZUYWJsZSgpLT5zZXRGdW5jdGlvbihpbmRleCwganNDYXN0PEpTT2JqZWN0Kj4odmFs
dWUpLCB3YXNtRnVuY3Rpb24tPmltcG9ydGFibGVGdW5jdGlvbigpLCAmd2FzbUZ1bmN0aW9uLT5p
bnN0YW5jZSgpLT5pbnN0YW5jZSgpKTsKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+dGFibGUo
dGFibGVJbmRleCktPmFzRnVuY3JlZlRhYmxlKCktPnNldEZ1bmN0aW9uKGluZGV4LCBqc0Nhc3Q8
SlNPYmplY3QqPih2YWx1ZSksIHdhc21GdW5jdGlvbi0+aW1wb3J0YWJsZUZ1bmN0aW9uKCksICZ3
YXNtRnVuY3Rpb24tPmluc3RhbmNlKCktPmluc3RhbmNlKCkpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGluc3RhbmNlLT50YWJsZSgpLT5hc0Z1bmNyZWZUYWJsZSgpLT5zZXRG
dW5jdGlvbihpbmRleCwganNDYXN0PEpTT2JqZWN0Kj4odmFsdWUpLCB3YXNtV3JhcHBlckZ1bmN0
aW9uLT5pbXBvcnRhYmxlRnVuY3Rpb24oKSwgJndhc21XcmFwcGVyRnVuY3Rpb24tPmluc3RhbmNl
KCktPmluc3RhbmNlKCkpOworICAgICAgICAgICAgICAgIGluc3RhbmNlLT50YWJsZSh0YWJsZUlu
ZGV4KS0+YXNGdW5jcmVmVGFibGUoKS0+c2V0RnVuY3Rpb24oaW5kZXgsIGpzQ2FzdDxKU09iamVj
dCo+KHZhbHVlKSwgd2FzbVdyYXBwZXJGdW5jdGlvbi0+aW1wb3J0YWJsZUZ1bmN0aW9uKCksICZ3
YXNtV3JhcHBlckZ1bmN0aW9uLT5pbnN0YW5jZSgpLT5pbnN0YW5jZSgpKTsKICAgICAgICAgfSBl
bHNlIGlmICh2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAgIGluc3RhbmNlLT50YWJsZSgpLT5j
bGVhcihpbmRleCk7CisgICAgICAgICAgICBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPmNs
ZWFyKGluZGV4KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtSW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5o
CmluZGV4IDdhMjNlNTYyODI0ZjgxZTM1ODYwZWU3YWIwZDk4NThhZjNiM2IyNzkuLjAxMmNkNDU3
M2FhODRmOTY0NzBjYjA3MTk4YzdhNzBiYjBmM2E3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21JbnN0YW5jZS5oCkBAIC00MSw4ICs0MSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgV2FzbSB7CiBzdHJ1Y3QgQ29udGV4dDsKIGNsYXNzIEluc3RhbmNlOwogCi1FbmNv
ZGVkSlNWYWx1ZSBnZXRXYXNtVGFibGVFbGVtZW50KEluc3RhbmNlKiwgaW50MzJfdCk7Ci1ib29s
IHNldFdhc21UYWJsZUVsZW1lbnQoSW5zdGFuY2UqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSBl
bmNWYWx1ZSk7CitFbmNvZGVkSlNWYWx1ZSBnZXRXYXNtVGFibGVFbGVtZW50KEluc3RhbmNlKiwg
dW5zaWduZWQsIGludDMyX3QpOworYm9vbCBzZXRXYXNtVGFibGVFbGVtZW50KEluc3RhbmNlKiwg
dW5zaWduZWQsIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlIGVuY1ZhbHVlKTsKIEVuY29kZWRKU1Zh
bHVlIGRvV2FzbVJlZkZ1bmMoSW5zdGFuY2UqLCB1aW50MzJfdCk7CiAKIGNsYXNzIEluc3RhbmNl
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPEluc3RhbmNlPiB7CkBAIC03MCw3ICs3MCw4IEBAIHB1YmxpYzoKICAgICBNb2R1bGUm
IG1vZHVsZSgpIHsgcmV0dXJuIG1fbW9kdWxlLmdldCgpOyB9CiAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2soKSB7IHJldHVybiBtX2NvZGVCbG9jay5nZXQoKTsgfQogICAgIE1lbW9yeSogbWVtb3J5
KCkgeyByZXR1cm4gbV9tZW1vcnkuZ2V0KCk7IH0KLSAgICBUYWJsZSogdGFibGUoKSB7IHJldHVy
biBtX3RhYmxlLmdldCgpOyB9CisgICAgVGFibGUqIHRhYmxlKHVuc2lnbmVkKTsKKyAgICB2b2lk
IHNldFRhYmxlKHVuc2lnbmVkLCBSZWY8VGFibGU+JiYpOwogCiAgICAgdm9pZCogY2FjaGVkTWVt
b3J5KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRNZW1vcnkuZ2V0TWF5QmVOdWxsKGNhY2hlZE1l
bW9yeVNpemUoKSk7IH0KICAgICBzaXplX3QgY2FjaGVkTWVtb3J5U2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FjaGVkTWVtb3J5U2l6ZTsgfQpAQCAtODgsNyArODksNiBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBtX2NhY2hlZE1lbW9yeVNpemUgPSBtZW1vcnkoKS0+c2l6ZSgpOwogICAgICAgICB9
CiAgICAgfQotICAgIHZvaWQgc2V0VGFibGUoUmVmPFRhYmxlPiYmIHRhYmxlKSB7IG1fdGFibGUg
PSBXVEZNb3ZlKHRhYmxlKTsgfQogCiAgICAgaW50MzJfdCBsb2FkSTMyR2xvYmFsKHVuc2lnbmVk
IGkpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFscy5nZXQoKVtpXS5wcmltaXRpdmU7IH0KICAgICBp
bnQ2NF90IGxvYWRJNjRHbG9iYWwodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxz
LmdldCgpW2ldLnByaW1pdGl2ZTsgfQpAQCAtMTAzLDcgKzEwMyw2IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNZW1vcnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoSW5zdGFuY2UsIG1fbWVtb3J5KTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZH
bG9iYWxzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX2dsb2JhbHMpOyB9
Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlRhYmxlKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEluc3RhbmNlLCBtX3RhYmxlKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0
T2ZDYWNoZWRNZW1vcnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fY2Fj
aGVkTWVtb3J5KTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWNoZWRNZW1vcnlT
aXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX2NhY2hlZE1lbW9yeVNp
emUpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlBvaW50ZXJUb1RvcEVudHJ5RnJh
bWUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fcG9pbnRlclRvVG9wRW50
cnlGcmFtZSk7IH0KQEAgLTEyMiw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8g
VGFpbCBhY2Nlc3NvcnMuCi0gICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZlRhaWwoKSB7IHJldHVy
biBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHVpbnQ2NF90KT4oc2l6ZW9mKEluc3Rh
bmNlKSk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBvZmZzZXRPZlRhaWwoKSB7IHJl
dHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHVpbnQ2NF90KT4oc2l6ZW9mKElu
c3RhbmNlKSk7IH0KICAgICBzdHJ1Y3QgSW1wb3J0RnVuY3Rpb25JbmZvIHsKICAgICAgICAgLy8g
VGFyZ2V0IGluc3RhbmNlIGFuZCBlbnRyeXBvaW50IGFyZSBvbmx5IHNldCBmb3Igd2FzbS0+d2Fz
bSBjYWxscywgYW5kIGFyZSBvdGhlcndpc2UgbnVsbHB0ci4gVGhlIGVtYmVkZGVyLXNwZWNpZmlj
IGxvZ2ljIG9jY3VycyB0aHJvdWdoIGltcG9ydCBmdW5jdGlvbi4KICAgICAgICAgSW5zdGFuY2Uq
IHRhcmdldEluc3RhbmNlIHsgbnVsbHB0ciB9OwpAQCAtMTQyLDYgKzE0MSw5IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW1wb3J0RnVuY3Rpb24oc2l6ZV90IGltcG9ydEZ1
bmN0aW9uTnVtKSB7IHJldHVybiBvZmZzZXRPZlRhaWwoKSArIGltcG9ydEZ1bmN0aW9uTnVtICog
c2l6ZW9mKEltcG9ydEZ1bmN0aW9uSW5mbykgKyBPQkpFQ1RfT0ZGU0VUT0YoSW1wb3J0RnVuY3Rp
b25JbmZvLCBpbXBvcnRGdW5jdGlvbik7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUKiBp
bXBvcnRGdW5jdGlvbih1bnNpZ25lZCBpbXBvcnRGdW5jdGlvbk51bSkgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxUKj4oJmltcG9ydEZ1bmN0aW9uSW5mbyhpbXBvcnRGdW5jdGlvbk51bSktPmlt
cG9ydEZ1bmN0aW9uKTsgfQogCisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoSW1wb3J0RnVuY3Rp
b25JbmZvKSA9PSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHVpbnQ2NF90KT4oc2l6
ZW9mKEltcG9ydEZ1bmN0aW9uSW5mbykpLCAiV2UgcmVseSBvbiB0aGlzIGZvciB0aGUgYWxpZ25t
ZW50IHRvIGJlIGNvcnJlY3QiKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBvZmZzZXRP
ZlRhYmxlUHRyKHVuc2lnbmVkIG51bUltcG9ydEZ1bmN0aW9ucywgdW5zaWduZWQgaSkgeyByZXR1
cm4gb2Zmc2V0T2ZUYWlsKCkgKyBzaXplb2YoSW1wb3J0RnVuY3Rpb25JbmZvKSAqIG51bUltcG9y
dEZ1bmN0aW9ucyArIHNpemVvZihUYWJsZSopICogaTsgfQorCiAgICAgdm9pZCBzdG9yZVRvcENh
bGxGcmFtZSh2b2lkKiBjYWxsRnJhbWUpCiAgICAgewogICAgICAgICBtX3N0b3JlVG9wQ2FsbEZy
YW1lKGNhbGxGcmFtZSk7CkBAIC0xNTAsOSArMTUyLDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBJbnN0YW5jZShDb250ZXh0KiwgUmVmPE1vZHVsZT4mJiwgRW50cnlGcmFtZSoqLCB2b2lkKios
IFN0b3JlVG9wQ2FsbEZyYW1lQ2FsbGJhY2smJik7CiAgICAgCi0gICAgc3RhdGljIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gbnVtSW1wb3J0RnVuY3Rpb25zKQorICAgIHN0
YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IG51bUltcG9ydEZ1bmN0
aW9ucywgQ2hlY2tlZDxzaXplX3Q+IG51bVRhYmxlcykKICAgICB7Ci0gICAgICAgIHJldHVybiAo
b2Zmc2V0T2ZUYWlsKCkgKyBzaXplb2YoSW1wb3J0RnVuY3Rpb25JbmZvKSAqIG51bUltcG9ydEZ1
bmN0aW9ucykudW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiAob2Zmc2V0T2ZUYWlsKCkgKyBz
aXplb2YoSW1wb3J0RnVuY3Rpb25JbmZvKSAqIG51bUltcG9ydEZ1bmN0aW9ucyArIHNpemVvZihU
YWJsZSopICogbnVtVGFibGVzKS51bnNhZmVHZXQoKTsKICAgICB9CiAgICAgdm9pZCogbV9vd25l
ciB7IG51bGxwdHIgfTsgLy8gSW4gYSBKUyBlbWJlZGRpbmcsIHRoaXMgaXMgYSBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UqLgogICAgIENvbnRleHQqIG1fY29udGV4dCB7IG51bGxwdHIgfTsKQEAgLTE2
MSw3ICsxNjMsNiBAQCBwcml2YXRlOgogICAgIFJlZjxNb2R1bGU+IG1fbW9kdWxlOwogICAgIFJl
ZlB0cjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwogICAgIFJlZlB0cjxNZW1vcnk+IG1fbWVtb3J5
OwotICAgIFJlZlB0cjxUYWJsZT4gbV90YWJsZTsKIAogICAgIHVuaW9uIEdsb2JhbFZhbHVlIHsK
ICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IGFueXJlZjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MaW1pdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21MaW1pdHMuaAppbmRleCBjNmY2Y2RjYmJjZGNkNzg1ZTM1ZjY0MmM3ZTg4MGQ4
ODlmZGIzOGFhLi5jZjhiNDQ2MDM2ODExMjNlY2MyNWNmYzM3MjQ5OGI1ZjViNThjOTg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTGltaXRzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxpbWl0cy5oCkBAIC01MSw2ICs1MSw3IEBAIGNv
bnN0ZXhwciBzaXplX3QgbWF4RnVuY3Rpb25Mb2NhbHMgPSA1MDAwMDsKIGNvbnN0ZXhwciBzaXpl
X3QgbWF4RnVuY3Rpb25QYXJhbXMgPSAxMDAwOwogCiBjb25zdGV4cHIgc2l6ZV90IG1heFRhYmxl
RW50cmllcyA9IDEwMDAwMDAwOworY29uc3RleHByIHVuc2lnbmVkIG1heFRhYmxlcyA9IDEwMDAw
MDA7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgKaW5kZXggODhmNjZjYjYzOTE1
OWMzNjlkOWRkZTYwYTFmY2U2ZGE1ZDE3MTI4OS4uMjY4Zjg4YmIxMGJmNzQ4NWZhNjUxNjU1MjRl
NzA0YjY1OTk4NzI1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU1vZHVsZUluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU1vZHVsZUluZm9ybWF0aW9uLmgKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IE1vZHVsZUluZm9y
bWF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1vZHVsZUluZm9ybWF0aW9uPiB7
CiAgICAgLy8gQ3VycmVudGx5LCBvdXIgd2FzbSBpbXBsZW1lbnRhdGlvbiBhbGxvd3Mgb25seSBv
bmUgbWVtb3J5IGFuZCB0YWJsZS4KICAgICAvLyBJZiB3ZSBuZWVkIHRvIHJlbW92ZSB0aGlzIGxp
bWl0YXRpb24sIHdlIHdvdWxkIGhhdmUgTWVtb3J5SW5mb3JtYXRpb24gYW5kIFRhYmxlSW5mb3Jt
YXRpb24gaW4gdGhlIFZlY3RvcnMuCiAgICAgdWludDMyX3QgbWVtb3J5Q291bnQoKSBjb25zdCB7
IHJldHVybiBtZW1vcnkgPyAxIDogMDsgfQotICAgIHVpbnQzMl90IHRhYmxlQ291bnQoKSBjb25z
dCB7IHJldHVybiB0YWJsZUluZm9ybWF0aW9uID8gMSA6IDA7IH0KKyAgICB1aW50MzJfdCB0YWJs
ZUNvdW50KCkgY29uc3QgeyByZXR1cm4gdGFibGVzLnNpemUoKTsgfQogCiAgICAgY29uc3QgQml0
VmVjdG9yJiByZWZlcmVuY2VkRnVuY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2Vk
RnVuY3Rpb25zOyB9CiAgICAgdm9pZCBhZGRSZWZlcmVuY2VkRnVuY3Rpb24odW5zaWduZWQgaW5k
ZXgpIGNvbnN0IHsgbV9yZWZlcmVuY2VkRnVuY3Rpb25zLnNldChpbmRleCk7IH0KQEAgLTgzLDcg
KzgzLDcgQEAgc3RydWN0IE1vZHVsZUluZm9ybWF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPE1vZHVsZUluZm9ybWF0aW9uPiB7CiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IHN0YXJ0
RnVuY3Rpb25JbmRleFNwYWNlOwogICAgIFZlY3RvcjxTZWdtZW50OjpQdHI+IGRhdGE7CiAgICAg
VmVjdG9yPEVsZW1lbnQ+IGVsZW1lbnRzOwotICAgIFRhYmxlSW5mb3JtYXRpb24gdGFibGVJbmZv
cm1hdGlvbjsKKyAgICBWZWN0b3I8VGFibGVJbmZvcm1hdGlvbj4gdGFibGVzOwogICAgIFZlY3Rv
cjxHbG9iYWw+IGdsb2JhbHM7CiAgICAgdW5zaWduZWQgZmlyc3RJbnRlcm5hbEdsb2JhbCB7IDAg
fTsKICAgICBWZWN0b3I8Q3VzdG9tU2VjdGlvbj4gY3VzdG9tU2VjdGlvbnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKaW5kZXggYzgwMzE0
ZGZkYTAwM2ZlYjJiNWYwN2NhOWZhOTljZDg4ODNkZWE3MC4uZWY1MTIxNjc1MmExMjY1ZTEwMjRk
MzdlOTI4OWVjNDhiYWZmZGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TZWN0aW9uUGFyc2VyLmNwcApAQCAtMTE5LDYgKzExOSw3IEBAIGF1dG8gU2VjdGlvblBh
cnNlcjo6cGFyc2VJbXBvcnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBFeHRlcm5hbEtpbmQ6OlRhYmxlOiB7CiAgICAgICAgICAgICBib29sIGlzSW1wb3J0ID0g
dHJ1ZTsKKyAgICAgICAgICAgIGtpbmRJbmRleCA9IG1faW5mby0+dGFibGVzLnNpemUoKTsKICAg
ICAgICAgICAgIFBhcnRpYWxSZXN1bHQgcmVzdWx0ID0gcGFyc2VUYWJsZUhlbHBlcihpc0ltcG9y
dCk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUocmVzdWx0LmVycm9yKCkpKTsKQEAgLTE5Myw3
ICsxOTQsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlUmVzaXphYmxlTGltaXRzKHVpbnQz
Ml90JiBpbml0aWFsLCBPcHRpb25hbDx1aW50MzJfdD4mCiAKIGF1dG8gU2VjdGlvblBhcnNlcjo6
cGFyc2VUYWJsZUhlbHBlcihib29sIGlzSW1wb3J0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAg
V0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8tPnRhYmxlQ291bnQoKSA+IDAsICJDYW5ub3QgaGF2
ZSBtb3JlIHRoYW4gb25lIFRhYmxlIGZvciBub3ciKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KG1faW5mby0+dGFibGVDb3VudCgpID49IG1heFRhYmxlcywgIlRhYmxlIGNvdW50IG9mICIsIG1f
aW5mby0+dGFibGVDb3VudCgpLCAiIGlzIHRvbyBiaWcsIG1heGltdW0gIiwgbWF4VGFibGVzKTsK
IAogICAgIGludDhfdCB0eXBlOwogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlSW50Nyh0
eXBlKSwgImNhbid0IHBhcnNlIFRhYmxlIHR5cGUiKTsKQEAgLTIwOSw3ICsyMTAsNyBAQCBhdXRv
IFNlY3Rpb25QYXJzZXI6OnBhcnNlVGFibGVIZWxwZXIoYm9vbCBpc0ltcG9ydCkgLT4gUGFydGlh
bFJlc3VsdAogICAgIEFTU0VSVCghbWF4aW11bSB8fCAqbWF4aW11bSA+PSBpbml0aWFsKTsKIAog
ICAgIFRhYmxlRWxlbWVudFR5cGUgdGFibGVUeXBlID0gdHlwZSA9PSBXYXNtOjpBbnlmdW5jID8g
VGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiA6IFRhYmxlRWxlbWVudFR5cGU6OkFueXJlZjsKLSAg
ICBtX2luZm8tPnRhYmxlSW5mb3JtYXRpb24gPSBUYWJsZUluZm9ybWF0aW9uKGluaXRpYWwsIG1h
eGltdW0sIGlzSW1wb3J0LCB0YWJsZVR5cGUpOworICAgIG1faW5mby0+dGFibGVzLmFwcGVuZChU
YWJsZUluZm9ybWF0aW9uKGluaXRpYWwsIG1heGltdW0sIGlzSW1wb3J0LCB0YWJsZVR5cGUpKTsK
IAogICAgIHJldHVybiB7IH07CiB9CkBAIC0yMTgsMTUgKzIxOSwxMyBAQCBhdXRvIFNlY3Rpb25Q
YXJzZXI6OnBhcnNlVGFibGUoKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgdWludDMyX3QgY291
bnQ7CiAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoY291bnQpLCAiY2Fu
J3QgZ2V0IFRhYmxlJ3MgY291bnQiKTsKLSAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGNvdW50ID4g
MSwgIlRhYmxlIGNvdW50IG9mICIsIGNvdW50LCAiIGlzIGludmFsaWQsIGF0IG1vc3QgMSBpcyBh
bGxvd2VkIGZvciBub3ciKTsKIAotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVybiB7IH07
Ci0KLSAgICBib29sIGlzSW1wb3J0ID0gZmFsc2U7Ci0gICAgUGFydGlhbFJlc3VsdCByZXN1bHQg
PSBwYXJzZVRhYmxlSGVscGVyKGlzSW1wb3J0KTsKLSAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkp
Ci0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZNb3ZlKHJlc3VsdC5lcnJvcigpKSk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgYm9v
bCBpc0ltcG9ydCA9IGZhbHNlOworICAgICAgICBQYXJ0aWFsUmVzdWx0IHJlc3VsdCA9IHBhcnNl
VGFibGVIZWxwZXIoaXNJbXBvcnQpOworICAgICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkpCisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShyZXN1bHQuZXJyb3IoKSkp
OworICAgIH0KIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0zNzksMTYgKzM3OCwxNiBAQCBhdXRv
IFNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxSZXN1bHQKIAogICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMih0YWJsZUluZGV4KSwgImNhbid0
IGdldCAiLCBlbGVtZW50TnVtLCAidGggRWxlbWVudCB0YWJsZSBpbmRleCIpOwogICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKHRhYmxlSW5kZXggPj0gbV9pbmZvLT50YWJsZUNvdW50KCksICJF
bGVtZW50IHNlY3Rpb24gZm9yIFRhYmxlICIsIHRhYmxlSW5kZXgsICIgZXhjZWVkcyBhdmFpbGFi
bGUgVGFibGUgIiwgbV9pbmZvLT50YWJsZUNvdW50KCkpOwotICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKG1faW5mby0+dGFibGVJbmZvcm1hdGlvbi50eXBlKCkgIT0gVGFibGVFbGVtZW50VHlw
ZTo6RnVuY3JlZiwgIlRhYmxlICIsIHRhYmxlSW5kZXgsICIgbXVzdCBoYXZlIHR5cGUgJ2FueWZ1
bmMnIHRvIGhhdmUgYW4gZWxlbWVudCBzZWN0aW9uIik7CisgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYobV9pbmZvLT50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpICE9IFRhYmxlRWxlbWVudFR5
cGU6OkZ1bmNyZWYsICJUYWJsZSAiLCB0YWJsZUluZGV4LCAiIG11c3QgaGF2ZSB0eXBlICdhbnlm
dW5jJyB0byBoYXZlIGFuIGVsZW1lbnQgc2VjdGlvbiIpOwogICAgICAgICBUeXBlIGluaXRFeHBy
VHlwZTsKICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUluaXRFeHByKGlu
aXRPcGNvZGUsIGluaXRFeHByQml0cywgaW5pdEV4cHJUeXBlKSk7CiAgICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoaW5pdEV4cHJUeXBlICE9IEkzMiwgIkVsZW1lbnQgaW5pdF9leHByIG11c3Qg
cHJvZHVjZSBhbiBpMzIiKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJV
SW50MzIoaW5kZXhDb3VudCksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIGluZGV4IGNv
dW50IGZvciBFbGVtZW50IHNlY3Rpb24iKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihp
bmRleENvdW50ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwgIkVsZW1l
bnQgc2VjdGlvbidzICIsIGVsZW1lbnROdW0sICJ0aCBpbmRleCBjb3VudCBpcyB0b28gYmlnICIs
IGluZGV4Q291bnQpOwogCi0gICAgICAgIEFTU0VSVCghIW1faW5mby0+dGFibGVJbmZvcm1hdGlv
bik7CisgICAgICAgIEFTU0VSVCghIW1faW5mby0+dGFibGVzW3RhYmxlSW5kZXhdKTsKIAotICAg
ICAgICBFbGVtZW50IGVsZW1lbnQobWFrZUkzMkluaXRFeHByKGluaXRPcGNvZGUsIGluaXRFeHBy
Qml0cykpOworICAgICAgICBFbGVtZW50IGVsZW1lbnQodGFibGVJbmRleCwgbWFrZUkzMkluaXRF
eHByKGluaXRPcGNvZGUsIGluaXRFeHByQml0cykpOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy50cnlSZXNlcnZlQ2FwYWNpdHkoaW5kZXhDb3Vu
dCksICJjYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yICIsIGluZGV4Q291bnQsICIgRWxlbWVudCBp
bmRpY2VzIik7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgaW5k
ZXhDb3VudDsgKytpbmRleCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaApp
bmRleCBiMWUyYjVkZjRkZjFjNjQ1Y2Y5YjMzMDJlYTU4N2EwN2ZlZWM4ZDZjLi5kNmFhYzViNTU4
MmRhNDIwY2Q0MTYzNGUwZTUzMmJjNTI1NDhhOTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtVGFibGUuaApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHVpbnQz
Ml90IGFsbG9jYXRlZExlbmd0aCh1aW50MzJfdCBsZW5ndGgpOwogICAgIHVpbnQzMl90IG1hc2so
KSBjb25zdCB7IHJldHVybiBtX21hc2s7IH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQq
IG93bmVyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4obV9vd25lcik7IH0K
ICAgICB2b2lkIHNldE93bmVyKEpTT2JqZWN0KiBvd25lcikKICAgICB7CiAgICAgICAgIEFTU0VS
VCghbV9vd25lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
VmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNw
cAppbmRleCA3ZjFhYzYxZWU4YTI0Y2QxZTkxOGI4YmRlYWNjYjhkYmU0MzQ4ZTk4Li5iZDIxZDgw
ZWYxYTUzZjM3OWIxNWM3MDg4MjFlOGM2NzY1ZGJkZmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAKQEAgLTEwNiw4ICsxMDYsOCBAQCBwdWJsaWM6CiAg
ICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4LCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKIAogICAgIC8vIFRhYmxlcwotICAgIFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNz
aW9uVHlwZSYgcmVzdWx0KTsKLSAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxl
U2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKTsKKyAgICBS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlR2V0KHVuc2lnbmVkLCBFeHByZXNzaW9u
VHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkVGFibGVTZXQodW5zaWduZWQsIEV4cHJlc3Npb25UeXBlJiBpbmRleCwg
RXhwcmVzc2lvblR5cGUmIHZhbHVlKTsKIAogICAgIC8vIExvY2FscwogICAgIFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gZ2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbGxzCiAgICAg
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsKHVuc2lnbmVkIGNhbGxlZUluZGV4LCBj
b25zdCBTaWduYXR1cmUmLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0KTsKLSAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENh
bGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+
JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBSZXN1bHQgV0FSTl9VTlVTRURf
UkVUVVJOIGFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1
cmUmLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KTsKIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkaWRLaWxsKEV4cHJlc3Npb25UeXBl
KSB7IH0KIApAQCAtMTc4LDIxICsxNzgsMjIgQEAgYXV0byBWYWxpZGF0ZTo6YWRkQXJndW1lbnRz
KGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBSZXN1bHQKICAgICByZXR1cm4geyB9Owog
fQogCi1hdXRvIFZhbGlkYXRlOjphZGRUYWJsZUdldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFJlc3VsdAorYXV0byBWYWxpZGF0ZTo6YWRkVGFibGVH
ZXQodW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KSAtPiBSZXN1bHQKIHsKLSAgICByZXN1bHQgPSBtX21vZHVsZS50YWJsZUlu
Zm9ybWF0aW9uLndhc21UeXBlKCk7CisgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRih0YWJsZUlu
ZGV4ID49IG1fbW9kdWxlLnRhYmxlQ291bnQoKSwgInRhYmxlIGluZGV4ICIsIHRhYmxlSW5kZXgs
ICIgaXMgaW52YWxpZCwgbGltaXQgaXMgIiwgbV9tb2R1bGUudGFibGVDb3VudCgpKTsKKyAgICBy
ZXN1bHQgPSBtX21vZHVsZS50YWJsZXNbdGFibGVJbmRleF0ud2FzbVR5cGUoKTsKICAgICBXQVNN
X1ZBTElEQVRPUl9GQUlMX0lGKFR5cGU6OkkzMiAhPSBpbmRleCwgInRhYmxlLmdldCBpbmRleCB0
byB0eXBlICIsIGluZGV4LCAiIGV4cGVjdGVkICIsIFR5cGU6OkkzMik7CiAKICAgICByZXR1cm4g
eyB9OwogfQogCi1hdXRvIFZhbGlkYXRlOjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5k
ZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4gUmVzdWx0CithdXRvIFZhbGlkYXRlOjphZGRU
YWJsZVNldCh1bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJl
c3Npb25UeXBlJiB2YWx1ZSkgLT4gUmVzdWx0CiB7Ci0gICAgYXV0byB0eXBlID0gbV9tb2R1bGUu
dGFibGVJbmZvcm1hdGlvbi53YXNtVHlwZSgpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYo
dGFibGVJbmRleCA+PSBtX21vZHVsZS50YWJsZUNvdW50KCksICJ0YWJsZSBpbmRleCAiLCB0YWJs
ZUluZGV4LCAiIGlzIGludmFsaWQsIGxpbWl0IGlzICIsIG1fbW9kdWxlLnRhYmxlQ291bnQoKSk7
CisgICAgYXV0byB0eXBlID0gbV9tb2R1bGUudGFibGVzW3RhYmxlSW5kZXhdLndhc21UeXBlKCk7
CiAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihUeXBlOjpJMzIgIT0gaW5kZXgsICJ0YWJsZS5z
ZXQgaW5kZXggdG8gdHlwZSAiLCBpbmRleCwgIiBleHBlY3RlZCAiLCBUeXBlOjpJMzIpOwogICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZSh2YWx1ZSwgdHlwZSksICJ0YWJsZS5z
ZXQgdmFsdWUgdG8gdHlwZSAiLCB2YWx1ZSwgIiBleHBlY3RlZCAiLCB0eXBlKTsKLSAgICBXQVNN
X1ZBTElEQVRPUl9GQUlMX0lGKG1fbW9kdWxlLnRhYmxlSW5mb3JtYXRpb24udHlwZSgpICE9IFRh
YmxlRWxlbWVudFR5cGU6OkFueXJlZgotICAgICAgICAmJiBtX21vZHVsZS50YWJsZUluZm9ybWF0
aW9uLnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCAidGFibGUuc2V0IGV4cGVj
dHMgdGhlIHRhYmxlIHRvIGhhdmUgdHlwZSBhbnlyZWYgb3IgYW55ZnVuYyIpOworICAgIFJFTEVB
U0VfQVNTRVJUKG1fbW9kdWxlLnRhYmxlc1t0YWJsZUluZGV4XS50eXBlKCkgPT0gVGFibGVFbGVt
ZW50VHlwZTo6QW55cmVmIHx8IG1fbW9kdWxlLnRhYmxlc1t0YWJsZUluZGV4XS50eXBlKCkgPT0g
VGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZik7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtMzc5
LDkgKzM4MCwxMCBAQCBhdXRvIFZhbGlkYXRlOjphZGRDYWxsKHVuc2lnbmVkLCBjb25zdCBTaWdu
YXR1cmUmIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPEV4cHJlcwogICAgIHJldHVybiB7IH07CiB9
CiAKLWF1dG8gVmFsaWRhdGU6OmFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmIHNpZ25h
dHVyZSwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCkgLT4gUmVzdWx0CithdXRvIFZhbGlkYXRlOjphZGRDYWxsSW5kaXJlY3QodW5zaWdu
ZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIGNvbnN0IFZlY3RvcjxF
eHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFJlc3VsdAog
ewotICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYobV9tb2R1bGUudGFibGVJbmZvcm1hdGlvbi50
eXBlKCkgIT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgIlRhYmxlIG11c3QgaGF2ZSB0eXBl
IEFueWZ1bmMgdG8gY2FsbCIpOworICAgIFJFTEVBU0VfQVNTRVJUKHRhYmxlSW5kZXggPCBtX21v
ZHVsZS50YWJsZUNvdW50KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fbW9kdWxlLnRhYmxlc1t0
YWJsZUluZGV4XS50eXBlKCkgPT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZik7CiAgICAgY29u
c3QgYXV0byBhcmd1bWVudENvdW50ID0gc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKTsKICAgICBX
QVNNX1ZBTElEQVRPUl9GQUlMX0lGKGFyZ3VtZW50Q291bnQgIT0gYXJncy5zaXplKCkgLSAxLCAi
YXJpdHkgbWlzbWF0Y2ggaW4gY2FsbF9pbmRpcmVjdCwgZ290ICIsIGFyZ3Muc2l6ZSgpIC0gMSwg
IiBhcmd1bWVudHMsIGV4cGVjdGVkICIsIGFyZ3VtZW50Q291bnQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcApp
bmRleCAzMjM0MjdmZDhhMGFmMjRjZTI5MzY0ZmU0MDRiMTY3MGE2ODNiNTk3Li45OWFmYTFhYzY3
NDNlOTI4ZmI1NTljOTgyN2FlNDgyMmFmY2IzZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKQEAgLTUzLDYg
KzUzLDcgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2UoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmPFcKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVy
ZSkKICAgICAsIG1faW5zdGFuY2UoV1RGTW92ZShpbnN0YW5jZSkpCiAgICAgLCBtX3ZtKCZ2bSkK
KyAgICAsIG1fdGFibGVzKG1faW5zdGFuY2UtPm1vZHVsZSgpLm1vZHVsZUluZm9ybWF0aW9uKCku
dGFibGVDb3VudCgpKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzLT5pbnN0
YW5jZSgpLm51bUltcG9ydEZ1bmN0aW9ucygpOyArK2kpCiAgICAgICAgIG5ldyAodGhpcy0+aW5z
dGFuY2UoKS5pbXBvcnRGdW5jdGlvbjxXcml0ZUJhcnJpZXI8SlNPYmplY3Q+PihpKSkgV3JpdGVC
YXJyaWVyPEpTT2JqZWN0PigpOwpAQCAtODUsNyArODYsOCBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY29kZUJsb2NrKTsKICAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdCk7CiAgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tZW1vcnkpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fdGFibGUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzT2Jq
ZWN0LT5pbnN0YW5jZSgpLm1vZHVsZSgpLm1vZHVsZUluZm9ybWF0aW9uKCkudGFibGVDb3VudCgp
OyArK2kpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdGFibGVzW2ldKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NhbGxlZSk7CiAgICAgdmlzaXRvci5y
ZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQodGhpc09iamVjdC0+bV9pbnN0YW5jZS0+ZXh0cmFNZW1v
cnlBbGxvY2F0ZWQoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNPYmplY3Qt
Pmluc3RhbmNlKCkubnVtSW1wb3J0RnVuY3Rpb25zKCk7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKaW5kZXggMjE3
ODRhOTM5ZDhlYjQ3ZThmNTI0NmUyNjYzZWYzNjc3MDQ5MjhlNS4uZTE2MzFmY2JiMTgzM2UwMThl
ZjdjNGQ2MTc4MDkxODI0ZDRlNjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKQEAgLTcxLDExICs3MSwxMyBAQCBw
dWJsaWM6CiAgICAgfQogICAgIFdhc206Ok1lbW9yeU1vZGUgbWVtb3J5TW9kZSgpIHsgcmV0dXJu
IG1lbW9yeSgpLT5tZW1vcnkoKS5tb2RlKCk7IH0KIAotICAgIEpTV2ViQXNzZW1ibHlUYWJsZSog
dGFibGUoKSB7IHJldHVybiBtX3RhYmxlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRUYWJsZShWTSYg
dm0sIEpTV2ViQXNzZW1ibHlUYWJsZSogdmFsdWUpIHsKLSAgICAgICAgQVNTRVJUKCF0YWJsZSgp
KTsKLSAgICAgICAgbV90YWJsZS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKLSAgICAgICAgaW5zdGFu
Y2UoKS5zZXRUYWJsZShtYWtlUmVmKCp0YWJsZSgpLT50YWJsZSgpKSk7CisgICAgSlNXZWJBc3Nl
bWJseVRhYmxlKiB0YWJsZSh1bnNpZ25lZCBpKSB7IHJldHVybiBtX3RhYmxlc1tpXS5nZXQoKTsg
fQorICAgIHZvaWQgc2V0VGFibGUoVk0mIHZtLCB1aW50MzJfdCBpbmRleCwgSlNXZWJBc3NlbWJs
eVRhYmxlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG1fdGFibGVzLnNp
emUoKSk7CisgICAgICAgIEFTU0VSVCghdGFibGUoaW5kZXgpKTsKKyAgICAgICAgbV90YWJsZXNb
aW5kZXhdLnNldCh2bSwgdGhpcywgdmFsdWUpOworICAgICAgICBpbnN0YW5jZSgpLnNldFRhYmxl
KGluZGV4LCBtYWtlUmVmKCp0YWJsZShpbmRleCktPnRhYmxlKCkpKTsKICAgICB9CiAKICAgICBK
U1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZS5nZXQo
KTsgfQpAQCAtOTgsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBXcml0ZUJhcnJpZXI8SlNXZWJB
c3NlbWJseUNvZGVCbG9jaz4gbV9jb2RlQmxvY2s7CiAgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0PiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdDsKICAgICBXcml0ZUJhcnJp
ZXI8SlNXZWJBc3NlbWJseU1lbW9yeT4gbV9tZW1vcnk7Ci0gICAgV3JpdGVCYXJyaWVyPEpTV2Vi
QXNzZW1ibHlUYWJsZT4gbV90YWJsZTsKKyAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTV2ViQXNz
ZW1ibHlUYWJsZT4+IG1fdGFibGVzOwogICAgIFdyaXRlQmFycmllcjxXZWJBc3NlbWJseVRvSlND
YWxsZWU+IG1fY2FsbGVlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDEyYjFjZWYyZGY0
Njg3OWEyYzdmMWIzNzFmNGM1OTM5OWJlYzY2MTMuLjA1MmQwODU4OTY4OTViOWQ5NDJiNDg5MGJl
YjM1NjA5YWI3MzVmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTExMyw4ICsxMTMsNiBAQCB2
b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSwgSlNPYmplY3QqIGltcG9ydE9iagogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhiZWZvcmUs
ICIgIiwgU3RyaW5nOjpmcm9tVVRGOChpbXBvcnQubW9kdWxlKSwgIjoiLCBTdHJpbmc6OmZyb21V
VEY4KGltcG9ydC5maWVsZCksICIgIiwgYWZ0ZXIpOwogICAgIH07CiAKLSAgICBib29sIGhhc1Rh
YmxlSW1wb3J0ID0gZmFsc2U7Ci0KICAgICBmb3IgKGNvbnN0IGF1dG8mIGltcG9ydCA6IG1vZHVs
ZUluZm9ybWF0aW9uLmltcG9ydHMpIHsKICAgICAgICAgLy8gVmFsaWRhdGlvbiBhbmQgbGlua2lu
ZyBvdGhlciB0aGFuIFdhc206OkV4dGVybmFsS2luZDo6RnVuY3Rpb24gaXMgYWxyZWFkeSBkb25l
IGluIEpTV2ViQXNzZW1ibHlJbnN0YW5jZS4KICAgICAgICAgLy8gRXZlbnR1YWxseSB3ZSB3aWxs
IG1vdmUgYWxsIHRoZSBsaW5raW5nIGNvZGUgaW4gSlNXZWJBc3NlbWJseUluc3RhbmNlIGhlcmUg
YW5kIHJlbW92ZSB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQuCkBAIC0yNjQsMjAgKzI2MiwxOCBAQCB2
b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSwgSlNPYmplY3QqIGltcG9ydE9iagogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBXYXNtOjpF
eHRlcm5hbEtpbmQ6OlRhYmxlOiB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghaGFzVGFi
bGVJbXBvcnQpOyAvLyBUaGlzIHNob3VsZCBiZSBndWFyYW50ZWVkIGJ5IGEgdmFsaWRhdGlvbiBm
YWlsdXJlLgogICAgICAgICAgICAgLy8gNy4gT3RoZXJ3aXNlIChpIGlzIGEgdGFibGUgaW1wb3J0
KToKLSAgICAgICAgICAgIGhhc1RhYmxlSW1wb3J0ID0gdHJ1ZTsKICAgICAgICAgICAgIEpTV2Vi
QXNzZW1ibHlUYWJsZSogdGFibGUgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlUYWJsZSo+
KHZtLCB2YWx1ZSk7CiAgICAgICAgICAgICAvLyBpLiBJZiB2IGlzIG5vdCBhIFdlYkFzc2VtYmx5
LlRhYmxlIG9iamVjdCwgdGhyb3cgYSBXZWJBc3NlbWJseS5MaW5rRXJyb3IuCiAgICAgICAgICAg
ICBpZiAoIXRhYmxlKQogICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNX
ZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAi
VGFibGUgaW1wb3J0IiwgImlzIG5vdCBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5UYWJsZSIp
KSk7CiAKLSAgICAgICAgICAgIHVpbnQzMl90IGV4cGVjdGVkSW5pdGlhbCA9IG1vZHVsZUluZm9y
bWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaW5pdGlhbCgpOworICAgICAgICAgICAgdWludDMyX3Qg
ZXhwZWN0ZWRJbml0aWFsID0gbW9kdWxlSW5mb3JtYXRpb24udGFibGVzW2ltcG9ydC5raW5kSW5k
ZXhdLmluaXRpYWwoKTsKICAgICAgICAgICAgIHVpbnQzMl90IGFjdHVhbEluaXRpYWwgPSB0YWJs
ZS0+bGVuZ3RoKCk7CiAgICAgICAgICAgICBpZiAoYWN0dWFsSW5pdGlhbCA8IGV4cGVjdGVkSW5p
dGlhbCkKICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1i
bHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgIlRhYmxlIGlt
cG9ydCIsICJwcm92aWRlZCBhbiAnaW5pdGlhbCcgdGhhdCBpcyB0b28gc21hbGwiKSkpOwogCi0g
ICAgICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGV4cGVjdGVkTWF4aW11bSA9IG1vZHVs
ZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24ubWF4aW11bSgpKSB7CisgICAgICAgICAgICBp
ZiAoT3B0aW9uYWw8dWludDMyX3Q+IGV4cGVjdGVkTWF4aW11bSA9IG1vZHVsZUluZm9ybWF0aW9u
LnRhYmxlc1tpbXBvcnQua2luZEluZGV4XS5tYXhpbXVtKCkpIHsKICAgICAgICAgICAgICAgICBP
cHRpb25hbDx1aW50MzJfdD4gYWN0dWFsTWF4aW11bSA9IHRhYmxlLT5tYXhpbXVtKCk7CiAgICAg
ICAgICAgICAgICAgaWYgKCFhY3R1YWxNYXhpbXVtKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9y
dEZhaWxNZXNzYWdlKGltcG9ydCwgIlRhYmxlIGltcG9ydCIsICJkb2VzIG5vdCBoYXZlIGEgJ21h
eGltdW0nIGJ1dCB0aGUgbW9kdWxlIHJlcXVpcmVzIHRoYXQgaXQgZG9lcyIpKSk7CkBAIC0yODUs
MTQgKzI4MSwxNCBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9iagogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0s
IGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgIkltcG9ydGVkIFRhYmxlIiwgIidtYXhpbXVtJyBp
cyBsYXJnZXIgdGhhbiB0aGUgbW9kdWxlJ3MgZXhwZWN0ZWQgJ21heGltdW0nIikpKTsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byBleHBlY3RlZFR5cGUgPSBtb2R1bGVJbmZvcm1h
dGlvbi50YWJsZUluZm9ybWF0aW9uLnR5cGUoKTsKKyAgICAgICAgICAgIGF1dG8gZXhwZWN0ZWRU
eXBlID0gbW9kdWxlSW5mb3JtYXRpb24udGFibGVzW2ltcG9ydC5raW5kSW5kZXhdLnR5cGUoKTsK
ICAgICAgICAgICAgIGF1dG8gYWN0dWFsVHlwZSA9IHRhYmxlLT50YWJsZSgpLT50eXBlKCk7CiAg
ICAgICAgICAgICBpZiAoZXhwZWN0ZWRUeXBlICE9IGFjdHVhbFR5cGUpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZt
LCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJUYWJsZSBpbXBvcnQiLCAicHJvdmlkZWQgYSAn
dHlwZScgdGhhdCBpcyB3cm9uZyIpKSk7CiAKICAgICAgICAgICAgIC8vIGlpLiBBcHBlbmQgdiB0
byB0YWJsZXMuCiAgICAgICAgICAgICAvLyBpaWkuIEFwcGVuZCB2LltbVGFibGVdXSB0byBpbXBv
cnRzLgotICAgICAgICAgICAgbV9pbnN0YW5jZS0+c2V0VGFibGUodm0sIHRhYmxlKTsKKyAgICAg
ICAgICAgIG1faW5zdGFuY2UtPnNldFRhYmxlKHZtLCBpbXBvcnQua2luZEluZGV4LCB0YWJsZSk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTMwMiwxNiArMjk4LDE2IEBAIHZvaWQgV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBKU09iamVj
dCogaW1wb3J0T2JqCiAgICAgICAgIH0KICAgICB9CiAKLSAgICB7Ci0gICAgICAgIGlmICghIW1v
ZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24gJiYgbW9kdWxlSW5mb3JtYXRpb24udGFi
bGVJbmZvcm1hdGlvbi5pc0ltcG9ydCgpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlQ291bnQoKTsgKytpKSB7CisgICAgICAgIGlmIChtb2R1
bGVJbmZvcm1hdGlvbi50YWJsZXNbaV0uaXNJbXBvcnQoKSkgewogICAgICAgICAgICAgLy8gV2Ug
c2hvdWxkIGVpdGhlciBoYXZlIGEgVGFibGUgaW1wb3J0IG9yIHdlIHNob3VsZCBoYXZlIHRocm93
biBhbiBleGNlcHRpb24uCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChoYXNUYWJsZUltcG9y
dCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2luc3RhbmNlLT50YWJsZShpKSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAoISFtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUluZm9ybWF0
aW9uICYmICFoYXNUYWJsZUltcG9ydCkgewotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1v
ZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaXNJbXBvcnQoKSk7CisgICAgICAgIGlm
ICghbV9pbnN0YW5jZS0+dGFibGUoaSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFt
b2R1bGVJbmZvcm1hdGlvbi50YWJsZXNbaV0uaXNJbXBvcnQoKSk7CiAgICAgICAgICAgICAvLyBX
ZSBjcmVhdGUgYSBUYWJsZSB3aGVuIGl0J3MgYSBUYWJsZSBkZWZpbml0aW9uLgotICAgICAgICAg
ICAgUmVmUHRyPFdhc206OlRhYmxlPiB3YXNtVGFibGUgPSBXYXNtOjpUYWJsZTo6dHJ5Q3JlYXRl
KG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaW5pdGlhbCgpLCBtb2R1bGVJbmZv
cm1hdGlvbi50YWJsZUluZm9ybWF0aW9uLm1heGltdW0oKSwgbW9kdWxlSW5mb3JtYXRpb24udGFi
bGVJbmZvcm1hdGlvbi50eXBlKCkpOworICAgICAgICAgICAgUmVmUHRyPFdhc206OlRhYmxlPiB3
YXNtVGFibGUgPSBXYXNtOjpUYWJsZTo6dHJ5Q3JlYXRlKG1vZHVsZUluZm9ybWF0aW9uLnRhYmxl
c1tpXS5pbml0aWFsKCksIG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlc1tpXS5tYXhpbXVtKCksIG1v
ZHVsZUluZm9ybWF0aW9uLnRhYmxlc1tpXS50eXBlKCkpOwogICAgICAgICAgICAgaWYgKCF3YXNt
VGFibGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2Vt
Ymx5TGlua0Vycm9yKGV4ZWMsIHZtLCAiY291bGRuJ3QgY3JlYXRlIFRhYmxlIikpOwogICAgICAg
ICAgICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IEpTV2ViQXNzZW1ibHlUYWJsZTo6Y3Jl
YXRlKGV4ZWMsIHZtLCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5VGFibGVTdHJ1Y3R1cmUoKSwg
d2FzbVRhYmxlLnJlbGVhc2VOb25OdWxsKCkpOwpAQCAtMzE5LDcgKzMxNSw3IEBAIHZvaWQgV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBKU09i
amVjdCogaW1wb3J0T2JqCiAgICAgICAgICAgICAvLyBJZiBpdCdzIGRlZmluZWQgdG8gYmUgdG9v
IGxhcmdlLCB3ZSBzaG91bGQgaGF2ZSB0aHJvd24gYSB2YWxpZGF0aW9uIGVycm9yLgogICAgICAg
ICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICAgICAgICAgIEFTU0VSVCh0YWJs
ZSk7Ci0gICAgICAgICAgICBtX2luc3RhbmNlLT5zZXRUYWJsZSh2bSwgdGFibGUpOworICAgICAg
ICAgICAgbV9pbnN0YW5jZS0+c2V0VGFibGUodm0sIGksIHRhYmxlKTsKICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0z
OTcsMTAgKzM5Myw4IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlLCBKU09iamVjdCogaW1wb3J0T2JqCiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OlRhYmxlOiB7CiAgICAgICAgICAgICAvLyBUaGlz
IHNob3VsZCBiZSBndWFyYW50ZWVkIGJ5IG1vZHVsZSB2ZXJpZmljYXRpb24uCi0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtX2luc3RhbmNlLT50YWJsZSgpKTsgCi0gICAgICAgICAgICBBU1NF
UlQoZXhwLmtpbmRJbmRleCA9PSAwKTsKLQotICAgICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9IG1f
aW5zdGFuY2UtPnRhYmxlKCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2luc3RhbmNl
LT50YWJsZShleHAua2luZEluZGV4KSk7CisgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gbV9p
bnN0YW5jZS0+dGFibGUoZXhwLmtpbmRJbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIFdhc206OkV4dGVybmFsS2luZDo6TWVtb3J5OiB7CkBAIC00ODYs
NyArNDgwLDYgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoRXhl
Y1N0YXRlKiBleGVjKQogICAgIFdhc206Ok1vZHVsZSYgbW9kdWxlID0gbV9pbnN0YW5jZS0+aW5z
dGFuY2UoKS5tb2R1bGUoKTsKICAgICBXYXNtOjpDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1faW5z
dGFuY2UtPmluc3RhbmNlKCkuY29kZUJsb2NrKCk7CiAgICAgY29uc3QgV2FzbTo6TW9kdWxlSW5m
b3JtYXRpb24mIG1vZHVsZUluZm9ybWF0aW9uID0gbW9kdWxlLm1vZHVsZUluZm9ybWF0aW9uKCk7
Ci0gICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IG1faW5zdGFuY2UtPnRhYmxlKCk7CiAK
ICAgICBjb25zdCBWZWN0b3I8V2FzbTo6U2VnbWVudDo6UHRyPiYgZGF0YSA9IG1vZHVsZUluZm9y
bWF0aW9uLmRhdGE7CiAgICAgCkBAIC00OTgsMTYgKzQ5MSwxNiBAQCBKU1ZhbHVlIFdlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAv
LyBBbHNvLCBpdCBjb3VsZCBiZSB0aGF0IGEgdGFibGUgd2Fzbid0IGltcG9ydGVkLCBvciB0aGF0
IHRoZSB0YWJsZQogICAgICAgICAgICAgLy8gaW1wb3J0ZWQgd2Fzbid0IGNvbXBhdGlibGUuIEhv
d2V2ZXIsIHRob3NlIHNob3VsZCBlcnJvciBvdXQgYmVmb3JlCiAgICAgICAgICAgICAvLyBnZXR0
aW5nIGhlcmUuCi0gICAgICAgICAgICBBU1NFUlQoISF0YWJsZSk7CisgICAgICAgICAgICBBU1NF
UlQoISFtX2luc3RhbmNlLT50YWJsZShlbGVtZW50LnRhYmxlSW5kZXgpKTsKIAogICAgICAgICAg
ICAgaWYgKCFlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy5zaXplKCkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgICAgIHVpbnQzMl90IHRhYmxlSW5kZXggPSBlbGVtZW50Lm9m
ZnNldC5pc0dsb2JhbEltcG9ydCgpCisgICAgICAgICAgICB1aW50MzJfdCBlbGVtZW50SW5kZXgg
PSBlbGVtZW50Lm9mZnNldC5pc0dsb2JhbEltcG9ydCgpCiAgICAgICAgICAgICAgICAgPyBzdGF0
aWNfY2FzdDx1aW50MzJfdD4obV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5sb2FkSTMyR2xvYmFsKGVs
ZW1lbnQub2Zmc2V0Lmdsb2JhbEltcG9ydEluZGV4KCkpKQogICAgICAgICAgICAgICAgIDogZWxl
bWVudC5vZmZzZXQuY29uc3RWYWx1ZSgpOwogCi0gICAgICAgICAgICBmbihlbGVtZW50LCB0YWJs
ZUluZGV4KTsKKyAgICAgICAgICAgIGZuKGVsZW1lbnQsIGVsZW1lbnQudGFibGVJbmRleCwgZWxl
bWVudEluZGV4KTsKIAogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTUzMSw5ICs1MjQsOSBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfTsKIAogICAgIC8vIFZhbGlkYXRp
b24gb2YgYWxsIGVsZW1lbnQgcmFuZ2VzIGNvbWVzIGJlZm9yZSBhbGwgVGFibGUgYW5kIE1lbW9y
eSBpbml0aWFsaXphdGlvbi4KLSAgICBmb3JFYWNoRWxlbWVudChbJl0gKGNvbnN0IFdhc206OkVs
ZW1lbnQmIGVsZW1lbnQsIHVpbnQzMl90IHRhYmxlSW5kZXgpIHsKLSAgICAgICAgdWludDY0X3Qg
bGFzdFdyaXR0ZW5JbmRleCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0YWJsZUluZGV4KSArIHN0
YXRpY19jYXN0PHVpbnQ2NF90PihlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy5zaXplKCkpIC0gMTsK
LSAgICAgICAgaWYgKFVOTElLRUxZKGxhc3RXcml0dGVuSW5kZXggPj0gdGFibGUtPmxlbmd0aCgp
KSkKKyAgICBmb3JFYWNoRWxlbWVudChbJl0gKGNvbnN0IFdhc206OkVsZW1lbnQmIGVsZW1lbnQs
IHVpbnQzMl90IHRhYmxlSW5kZXgsIHVpbnQzMl90IGVsZW1lbnRJbmRleCkgeworICAgICAgICB1
aW50NjRfdCBsYXN0V3JpdHRlbkluZGV4ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVsZW1lbnRJ
bmRleCkgKyBzdGF0aWNfY2FzdDx1aW50NjRfdD4oZWxlbWVudC5mdW5jdGlvbkluZGljZXMuc2l6
ZSgpKSAtIDE7CisgICAgICAgIGlmIChVTkxJS0VMWShsYXN0V3JpdHRlbkluZGV4ID49IG1faW5z
dGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5sZW5ndGgoKSkpCiAgICAgICAgICAgICBleGNlcHRp
b24gPSBKU1ZhbHVlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVKU1dlYkFzc2Vt
Ymx5TGlua0Vycm9yKGV4ZWMsIHZtLCAiRWxlbWVudCBpcyB0cnlpbmcgdG8gc2V0IGFuIG91dCBv
ZiBib3VuZHMgdGFibGUgaW5kZXgiX3MpKSk7CiAgICAgfSk7CiAKQEAgLTU1Miw3ICs1NDUsNyBA
QCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgIHJldHVybiBleGNlcHRpb24udmFsdWUoKTsKIAogICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2luc3RhbmNlLT5nbG9iYWxPYmplY3Qodm0pOwotICAgIGZv
ckVhY2hFbGVtZW50KFsmXSAoY29uc3QgV2FzbTo6RWxlbWVudCYgZWxlbWVudCwgdWludDMyX3Qg
dGFibGVJbmRleCkgeworICAgIGZvckVhY2hFbGVtZW50KFsmXSAoY29uc3QgV2FzbTo6RWxlbWVu
dCYgZWxlbWVudCwgdWludDMyX3QgdGFibGVJbmRleCwgdWludDMyX3QgZWxlbWVudEluZGV4KSB7
CiAgICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBlbGVtZW50LmZ1bmN0aW9uSW5kaWNl
cy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZXNzZW50aWFsbHkg
bWVhbnMgd2UncmUgZXhwb3J0aW5nIGFuIGltcG9ydC4KICAgICAgICAgICAgIC8vIFdlIG5lZWQg
YSBzdG9yeSBoZXJlLiBXZSBuZWVkIHRvIGNyZWF0ZSBhIFdlYkFzc2VtYmx5RnVuY3Rpb24KQEAg
LTU2OCwxNCArNTYxLDE0IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1
YXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgICAgICAgLy8gQmVjYXVzZSBhIFdl
YkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uIGNhbiBuZXZlciB3cmFwIGFub3RoZXIgV2ViQXNzZW1i
bHlXcmFwcGVyRnVuY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvbmx5IHR5cGUg
dGhpcyBjb3VsZCBiZSBpcyBXZWJBc3NlbWJseUZ1bmN0aW9uLgogICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCh3YXNtRnVuY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICB0YWJs
ZS0+c2V0KHRhYmxlSW5kZXgsIHdhc21GdW5jdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgICsr
dGFibGVJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+dGFibGUodGFibGVJ
bmRleCktPnNldChlbGVtZW50SW5kZXgsIHdhc21GdW5jdGlvbik7CisgICAgICAgICAgICAgICAg
ICAgICsrZWxlbWVudEluZGV4OwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICB0YWJsZS0+c2V0KHRhYmxlSW5kZXgsCisg
ICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPnNldChlbGVtZW50
SW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseVdyYXBwZXJG
dW5jdGlvblN0cnVjdHVyZSgpLCBmdW5jdGlvbkltcG9ydCwgZnVuY3Rpb25JbmRleCwgbV9pbnN0
YW5jZS5nZXQoKSwgc2lnbmF0dXJlSW5kZXgpKTsKLSAgICAgICAgICAgICAgICArK3RhYmxlSW5k
ZXg7CisgICAgICAgICAgICAgICAgKytlbGVtZW50SW5kZXg7CiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICB9CiAKQEAgLTU4OSw4ICs1ODIsOCBAQCBKU1ZhbHVlIFdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAg
ICBXZWJBc3NlbWJseUZ1bmN0aW9uKiBmdW5jdGlvbiA9IFdlYkFzc2VtYmx5RnVuY3Rpb246OmNy
ZWF0ZSgKICAgICAgICAgICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndl
YkFzc2VtYmx5RnVuY3Rpb25TdHJ1Y3R1cmUoKSwgc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSwg
U3RyaW5nKCksIG1faW5zdGFuY2UuZ2V0KCksIGVtYmVkZGVyRW50cnlwb2ludENhbGxlZSwgZW50
cnlwb2ludExvYWRMb2NhdGlvbiwgc2lnbmF0dXJlSW5kZXgpOwogCi0gICAgICAgICAgICB0YWJs
ZS0+c2V0KHRhYmxlSW5kZXgsIGZ1bmN0aW9uKTsKLSAgICAgICAgICAgICsrdGFibGVJbmRleDsK
KyAgICAgICAgICAgIG1faW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5zZXQoZWxlbWVudElu
ZGV4LCBmdW5jdGlvbik7CisgICAgICAgICAgICArK2VsZW1lbnRJbmRleDsKICAgICAgICAgfQog
ICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpz
b24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KaW5kZXggNzUyODVkNmZi
NzAwOTAxY2E1Mjc1ZWEzZmQ3NWJiMThkMzBlNDEzYi4uOTZlOGExZDIwNzcyOTkwMGQzOTUxOGIx
MDk2NWU2YzU3NmQwZjgyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
d2FzbS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgpAQCAt
NjcsMTAgKzY3LDEwIEBACiAgICAgICAgICJ0ZWVfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdv
cnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzNCwgInJldHVybiI6IFsiYW55Il0sICAgICAg
InBhcmFtZXRlciI6IFsiYW55Il0sICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5h
bWUiOiAibG9jYWxfaW5kZXgiLCAgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAid3JpdGUgYSBs
b2NhbCB2YXJpYWJsZSBvciBwYXJhbWV0ZXIgYW5kIHJldHVybiB0aGUgc2FtZSB2YWx1ZSIgfSwK
ICAgICAgICAgImdldF9nbG9iYWwiOiAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwg
ICAgInZhbHVlIjogIDM1LCAicmV0dXJuIjogWyJhbnkiXSwgICAgICAicGFyYW1ldGVyIjogW10s
ICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJnbG9iYWxfaW5k
ZXgiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJyZWFkIGEgZ2xvYmFsIHZhcmlhYmxlIiB9
LAogICAgICAgICAic2V0X2dsb2JhbCI6ICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwi
LCAgICAidmFsdWUiOiAgMzYsICJyZXR1cm4iOiBbXSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBb
ImFueSJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImdsb2JhbF9p
bmRleCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIndyaXRlIGEgZ2xvYmFsIHZhcmlhYmxl
IiB9LAotICAgICAgICAidGFibGUuZ2V0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNp
YWwiLCAgICAidmFsdWUiOiAgMzcsICJyZXR1cm4iOiBbImFueXJlZiJdLCAgICJwYXJhbWV0ZXIi
OiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImdldCBhIHRhYmxlIHZhbHVlIiB9
LAotICAgICAgICAidGFibGUuc2V0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwi
LCAgICAidmFsdWUiOiAgMzgsICJyZXR1cm4iOiBbXSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBb
ImkzMiIsICJhbnlyZWYiXSwgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInNldCBhIHRhYmxlIHZhbHVlIiB9LAor
ICAgICAgICAidGFibGUuZ2V0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAg
ICAidmFsdWUiOiAgMzcsICJyZXR1cm4iOiBbImFueXJlZiJdLCAgICJwYXJhbWV0ZXIiOiBbImkz
MiJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInRhYmxlX2luZGV4
IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImdldCBhIHRhYmxlIHZhbHVlIiB9LAorICAg
ICAgICAidGFibGUuc2V0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAi
dmFsdWUiOiAgMzgsICJyZXR1cm4iOiBbXSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImkzMiIs
ICJhbnlyZWYiXSwgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInRhYmxlX2luZGV4Iiwg
ICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInNldCBhIHRhYmxlIHZhbHVlIiB9LAogICAgICAg
ICAiY2FsbCI6ICAgICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFs
dWUiOiAgMTYsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2luZGV4Iiwg
InR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0s
Ci0gICAgICAgICJjYWxsX2luZGlyZWN0IjogICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAg
ICAgICJ2YWx1ZSI6ICAxNywgInJldHVybiI6IFsiY2FsbCJdLCAgICAgInBhcmFtZXRlciI6IFsi
Y2FsbCJdLCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRl
eCIsICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogInJlc2VydmVkIiwgInR5cGUi
OiAidmFydWludDEifV0sICAiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIGluZGlyZWN0
IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAorICAgICAgICAiY2FsbF9pbmRpcmVjdCI6
ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTcsICJyZXR1cm4i
OiBbImNhbGwiXSwgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICJp
bW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFydWludDMy
In0sIHsibmFtZSI6ICJ0YWJsZV9pbmRleCIsInR5cGUiOiAidmFydWludDMyIn1dLCJkZXNjcmlw
dGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gaW5kaXJlY3Qgd2l0aCBhbiBleHBlY3RlZCBzaWduYXR1
cmUiIH0sCiAgICAgICAgICJpMzIubG9hZDhfcyI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVt
b3J5IiwgICAgICJ2YWx1ZSI6ICA0NCwgInJldHVybiI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRl
ciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxh
Z3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAg
InR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIg
fSwKICAgICAgICAgImkzMi5sb2FkOF91IjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnki
LCAgICAgInZhbHVlIjogIDQ1LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjog
WyJhZGRyIl0sICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIs
ICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlw
ZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAog
ICAgICAgICAiaTMyLmxvYWQxNl9zIjogICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAg
ICAidmFsdWUiOiAgNDYsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFk
ZHIiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAg
ICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjog
InZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgyYjI3
MjFmZGJhOTI1MTg5N2U2ZTljYjEzMDU3NzE1ZDc0NjMxOTUuLjE2ZGI4OWQyNjM2NzMwM2U2OWJi
NmZiMDg0MzhmNjAzZDFhNWYzYzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMTktMDYtMTcgIEp1c3RpbiBN
aWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVy
ZW5jZXNdIEFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSB0YWJsZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODc2MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgICogd2FzbS9CdWlsZGVyLmpzOgorICAgICAgICAq
IHdhc20vanMtYXBpL2NhbGwtaW5kaXJlY3QuanM6CisgICAgICAgIChjb25zdC5vbmVUYWJsZSk6
CisgICAgICAgIChjb25zdC5tdWx0aVRhYmxlKToKKyAgICAgICAgKG11bHRpVGFibGUpOgorICAg
ICAgICAobXVsdGlUYWJsZS5Qb2x5cGhpYzJJbXBvcnQpOgorICAgICAgICAobXVsdGlUYWJsZS5W
aXJ0dWFsSW1wb3J0KToKKyAgICAgICAgKGNvbnN0Lndhc21Nb2R1bGVXaGljaEltcG9ydEpTKTog
RGVsZXRlZC4KKyAgICAgICAgKGNvbnN0Lm1ha2VUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgICgp
OiBEZWxldGVkLgorICAgICAgICAoUG9seXBoaWMySW1wb3J0KTogRGVsZXRlZC4KKyAgICAgICAg
KFZpcnR1YWxJbXBvcnQpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vanMtYXBpL3RhYmxlLmpz
OgorICAgICAgICAobmV3LldlYkFzc2VtYmx5Lk1vZHVsZSk6CisgICAgICAgIChhc3NlcnQudGhy
b3dzKToKKyAgICAgICAgKGFzc2VydEJhZFRhYmxlSW1wb3J0KToKKyAgICAgICAgKGFzc2VydC50
cnV0aHkpOgorICAgICAgICAoYXNzZXJ0LnRocm93cy5uZXcuV2ViQXNzZW1ibHkuTW9kdWxlLmJ1
aWxkZXIuV2ViQXNzZW1ibHkpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy9h
bnlyZWZfdGFibGUuanM6CisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZV9p
bXBvcnQuanM6CisgICAgICAgIChtYWtlSW1wb3J0KToKKyAgICAgICAgKHN0cmluZ19hcHBlYXJl
ZF9oZXJlLmZ1bGxHQy5hc3NlcnQuZXEuMS5leHBvcnRzLmdldF90YmwubWFrZUltcG9ydCk6Cisg
ICAgICAgIChzdHJpbmdfYXBwZWFyZWRfaGVyZS5mdWxsR0MuYXNzZXJ0LmVxLjEuZXhwb3J0cy5n
ZXRfdGJsKToKKyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMvbXVsdGl0YWJsZS5qczogQWRkZWQu
CisgICAgICAgIChhc3NlcnQudGhyb3dzLjEuZXhwb3J0cy5zZXRfdGJsMCk6CisgICAgICAgIChh
c3NlcnQudGhyb3dzKToKKyAgICAgICAgKGFzc2VydC5lcSk6CisgICAgICAgICogd2FzbS9yZWZl
cmVuY2VzL3ZhbGlkYXRpb24uanM6CisgICAgICAgIChhc3NlcnQudGhyb3dzLm5ldy5XZWJBc3Nl
bWJseS5Nb2R1bGUuYmluKToKKyAgICAgICAgKGFzc2VydC50aHJvd3MpOgorICAgICAgICAqIHdh
c20vc3BlYy10ZXN0cy9pbXBvcnRzLndhc3QuanM6CisgICAgICAgICogd2FzbS93YXNtLmpzb246
CisKKyAgICAgICAgKiB3YXNtL0J1aWxkZXIuanM6CisgICAgICAgICogd2FzbS9qcy1hcGkvY2Fs
bC1pbmRpcmVjdC5qczoKKyAgICAgICAgKGNvbnN0Lm9uZVRhYmxlKToKKyAgICAgICAgKGNvbnN0
Lm11bHRpVGFibGUpOgorICAgICAgICAobXVsdGlUYWJsZSk6CisgICAgICAgIChtdWx0aVRhYmxl
LlBvbHlwaGljMkltcG9ydCk6CisgICAgICAgIChtdWx0aVRhYmxlLlZpcnR1YWxJbXBvcnQpOgor
ICAgICAgICAoY29uc3Qud2FzbU1vZHVsZVdoaWNoSW1wb3J0SlMpOiBEZWxldGVkLgorICAgICAg
ICAoY29uc3QubWFrZVRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAg
ICAgIChQb2x5cGhpYzJJbXBvcnQpOiBEZWxldGVkLgorICAgICAgICAoVmlydHVhbEltcG9ydCk6
IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy1hcGkvdGFibGUuanM6CisgICAgICAgIChuZXcu
V2ViQXNzZW1ibHkuTW9kdWxlKToKKyAgICAgICAgKGFzc2VydC50aHJvd3MpOgorICAgICAgICAo
YXNzZXJ0QmFkVGFibGVJbXBvcnQpOgorICAgICAgICAoYXNzZXJ0LnRydXRoeSk6CisgICAgICAg
IChhc3NlcnQudGhyb3dzLm5ldy5XZWJBc3NlbWJseS5Nb2R1bGUuYnVpbGRlci5XZWJBc3NlbWJs
eSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZS5qczoK
KyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMvYW55cmVmX3RhYmxlX2ltcG9ydC5qczoKKyAgICAg
ICAgKG1ha2VJbXBvcnQpOgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUuZnVsbEdDLmFz
c2VydC5lcS4xLmV4cG9ydHMuZ2V0X3RibC5tYWtlSW1wb3J0KToKKyAgICAgICAgKHN0cmluZ19h
cHBlYXJlZF9oZXJlLmZ1bGxHQy5hc3NlcnQuZXEuMS5leHBvcnRzLmdldF90YmwpOgorICAgICAg
ICAqIHdhc20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qczoKKyAgICAgICAgKEdldExvY2FsLjAuSTMy
Q29uc3QuMC5UYWJsZVNldC5FbmQuRW5kLldlYkFzc2VtYmx5LmZ1bik6IERlbGV0ZWQuCisgICAg
ICAgIChHZXRMb2NhbC4wLkkzMkNvbnN0LjAuVGFibGVTZXQuRW5kLkVuZC5XZWJBc3NlbWJseS5h
c3NlcnQudGhyb3dzKTogRGVsZXRlZC4KKyAgICAgICAgKEdldExvY2FsLjAuSTMyQ29uc3QuMC5U
YWJsZVNldC5FbmQuRW5kLldlYkFzc2VtYmx5KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL3Jl
ZmVyZW5jZXMvbXVsdGl0YWJsZS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQudGhyb3dzLjEu
ZXhwb3J0cy5zZXRfdGJsMCk6CisgICAgICAgIChhc3NlcnQudGhyb3dzKToKKyAgICAgICAgKGFz
c2VydC5lcSk6CisgICAgICAgIChzdHJpbmdfYXBwZWFyZWRfaGVyZS50YWJsZUluc2FuaXR5KToK
KyAgICAgICAgKEkzMkNvbnN0LjAuR2V0TG9jYWwuMC5UYWJsZVNldC4xLkVuZC5FbmQuV2ViQXNz
ZW1ibHkuKToKKyAgICAgICAgKEkzMkNvbnN0LjAuR2V0TG9jYWwuMC5UYWJsZVNldC4xLkVuZC5F
bmQuV2ViQXNzZW1ibHkpOgorICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy92YWxpZGF0aW9uLmpz
OgorICAgICAgICAoYXNzZXJ0LnRocm93cy5uZXcuV2ViQXNzZW1ibHkuTW9kdWxlLmJpbik6Cisg
ICAgICAgIChhc3NlcnQudGhyb3dzKToKKyAgICAgICAgKiB3YXNtL3NwZWMtdGVzdHMvaW1wb3J0
cy53YXN0LmpzOgorICAgICAgICAqIHdhc20vd2FzbS5qc29uOgorCiAyMDE5LTA2LTE3ICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAgICBWYWxpZGF0
ZSB0aGF0IHRhYmxlIGVsZW1lbnQgdHlwZSBpcyBmdW5jcmVmIGlmIHVzaW5nIGFuIGVsZW1lbnQg
c2VjdGlvbgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMgYi9KU1Rlc3RzL3dh
c20vQnVpbGRlci5qcwppbmRleCA2NWYxZjQ3N2E5OGI4NjIwZmNjZDJhYThmOGMxMTA5ZTBhZjY3
ODY2Li45NzYzNzdmN2IzZDkxM2Q0YjhkYjFmOGE3NTk2ZTczZDI3OTFjYjQ3IDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcworKysgYi9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcwpA
QCAtMzA2LDYgKzMwNiw3IEBAIGNvbnN0IF9jaGVja0ltbXMgPSAob3AsIGltbXMsIGV4cGVjdGVk
SW1tcywgcmV0KSA9PiB7CiAgICAgICAgIGNhc2UgInRhcmdldF9jb3VudCI6IGJyZWFrOyAvLyBp
bXByb3ZlIGNoZWNraW5nIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjM0MjEKICAgICAgICAgY2FzZSAidGFyZ2V0X3RhYmxlIjogYnJlYWs7IC8vIGltcHJvdmUgY2hl
Y2tpbmcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQogICAg
ICAgICBjYXNlICJyZXNlcnZlZCI6IGJyZWFrOyAvLyBpbXByb3ZlIGNoZWNraW5nIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKKyAgICAgICAgY2FzZSAidGFi
bGVfaW5kZXgiOiBicmVhazsgLy8gaW1wcm92ZSBjaGVja2luZyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCiAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBF
cnJvcihgSW1wbGVtZW50YXRpb24gcHJvYmxlbTogdW5oYW5kbGVkIGltbWVkaWF0ZSAiJHtleHBl
Y3QubmFtZX0iIG9uICIke29wfSJgKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvd2FzbS9qcy1hcGkvY2FsbC1pbmRpcmVjdC5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkv
Y2FsbC1pbmRpcmVjdC5qcwppbmRleCAwMWNkNDJmOWI3OWE5MjFiMWJiYWE1YWI1NzZmYzBkOTEw
NDM4MzI4Li4yZmFmY2MxOTJiMTIwNTM5YzdhYTQ1NTFkNDQzZGFhZTdiZDgxOTcyIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL3dhc20vanMtYXBpL2NhbGwtaW5kaXJlY3QuanMKKysrIGIvSlNUZXN0cy93
YXNtL2pzLWFwaS9jYWxsLWluZGlyZWN0LmpzCkBAIC0xLDcgKzEsNyBAQAogaW1wb3J0ICogYXMg
YXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CiBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWls
ZGVyLmpzJzsKIAotY29uc3Qgd2FzbU1vZHVsZVdoaWNoSW1wb3J0SlMgPSAoKSA9PiB7Citjb25z
dCBvbmVUYWJsZSA9ICgpID0+IHsKICAgICBjb25zdCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkp
CiAgICAgICAgIC5UeXBlKCkuRW5kKCkKICAgICAgICAgLkltcG9ydCgpCkBAIC0zMSw2ICszMSwz
OSBAQCBjb25zdCB3YXNtTW9kdWxlV2hpY2hJbXBvcnRKUyA9ICgpID0+IHsKICAgICByZXR1cm4g
bW9kdWxlOwogfTsKIAorY29uc3QgbXVsdGlUYWJsZSA9ICgpID0+IHsKKyAgICBjb25zdCBidWls
ZGVyID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLklt
cG9ydCgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImltcCIsICJmdW5jIiwgeyBwYXJhbXM6IFsi
aTMyIl0gfSkKKyAgICAgICAgICAgIC5UYWJsZSgiaW1wIiwgInRhYmxlMCIsIHsgaW5pdGlhbDog
MCwgbWF4aW11bTogMCwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAgICAgIC5UYWJsZSgi
aW1wIiwgInRhYmxlIiwgeyBpbml0aWFsOiAxLCBtYXhpbXVtOiAxLCBlbGVtZW50OiAiYW55ZnVu
YyJ9KQorICAgICAgICAuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAg
LkV4cG9ydCgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImNoYW5nZUNvdW50ZXIiKQorICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJjYWxsRnVuYyIpCisgICAgICAgIC5FbmQoKQorICAgICAgICAuQ29k
ZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImNoYW5nZUNvdW50ZXIiLCB7IHBhcmFtczogWyJp
MzIiLCAiaTMyIl0gfSkKKyAgICAgICAgICAgICAgICAuSTMyQ29uc3QoNDIpCisgICAgICAgICAg
ICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgICAgLkkzMkFkZCgpCisgICAgICAgICAg
ICAgICAgLkdldExvY2FsKDEpCisgICAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgwLCAxKSAv
LyBDYWxscyB0YWJsZVswXShwYXJhbVswXSArIDQyKS4KKyAgICAgICAgICAgIC5FbmQoKQorICAg
ICAgICAgICAgLkZ1bmN0aW9uKCJjYWxsRnVuYyIsIHsgcGFyYW1zOiBbImkzMiJdIH0pCisgICAg
ICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgICAgLkNhbGwoMCkgLy8gQ2Fs
bHMgZnVuYyhwYXJhbVswXSArIDQyKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgIC5FbmQo
KTsKKyAgICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCk7CisgICAgY29u
c3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pOworICAgIHJldHVybiBtb2R1
bGU7Cit9OworCitmb3IgKGNvbnN0IHdhc21Nb2R1bGVXaGljaEltcG9ydEpTIG9mIFtvbmVUYWJs
ZSwgbXVsdGlUYWJsZV0pIHsKKwogY29uc3QgbWFrZVRhYmxlID0gKCkgPT4gewogICAgIHJldHVy
biBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6IDEsIG1heGltdW06IDEsIGVsZW1lbnQ6
ICJhbnlmdW5jIn0pOwogfTsKQEAgLTQwLDcgKzczLDcgQEAgY29uc3QgbWFrZVRhYmxlID0gKCkg
PT4gewogICAgIGNvbnN0IGNvdW50ZXJTZXR0ZXIgPSB2ID0+IGNvdW50ZXIgPSB2OwogICAgIGNv
bnN0IHRhYmxlID0gbWFrZVRhYmxlKCk7CiAgICAgY29uc3QgbW9kdWxlID0gd2FzbU1vZHVsZVdo
aWNoSW1wb3J0SlMoKTsKLSAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0
YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJTZXR0ZXIsIHRhYmxlfSB9KTsKKyAg
ICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1w
OiB7IGZ1bmM6IGNvdW50ZXJTZXR0ZXIsIHRhYmxlLCB0YWJsZTA6IG5ldyBXZWJBc3NlbWJseS5U
YWJsZSh7aW5pdGlhbDogMCwgbWF4aW11bTogMCwgZWxlbWVudDogImFueWZ1bmMifSkgfSB9KTsK
ICAgICB0YWJsZS5zZXQoMCwgaW5zdGFuY2UuZXhwb3J0cy5jYWxsRnVuYyk7CiAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCA0MDk2OyArK2kpIHsKICAgICAgICAgLy8gSW52b2tlIHRoaXMgYSBidW5j
aCBvZiB0aW1lcyB0byBtYWtlIHN1cmUgdGhlIElDIGluIHRoZSB3YXNtIC0+IEpTIHN0dWIgd29y
a3MgY29ycmVjdGx5LgpAQCAtNTcsMTEgKzkwLDExIEBAIGNvbnN0IG1ha2VUYWJsZSA9ICgpID0+
IHsKICAgICBjb25zdCBtb2R1bGUgPSB3YXNtTW9kdWxlV2hpY2hJbXBvcnRKUygpOwogCiAgICAg
Y29uc3QgdGFibGVBID0gbWFrZVRhYmxlKCk7Ci0gICAgY29uc3QgaW5zdGFuY2VBID0gbmV3IFdl
YkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291bnRlckFTZXR0ZXIs
IHRhYmxlOiB0YWJsZUF9IH0pOworICAgIGNvbnN0IGluc3RhbmNlQSA9IG5ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJBU2V0dGVyLCB0YWJsZTog
dGFibGVBLCB0YWJsZTA6IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDogMCwgbWF4aW11
bTogMCwgZWxlbWVudDogImFueWZ1bmMifSkgfSB9KTsKICAgICB0YWJsZUEuc2V0KDAsIGluc3Rh
bmNlQS5leHBvcnRzLmNhbGxGdW5jKTsKIAogICAgIGNvbnN0IHRhYmxlQiA9IG1ha2VUYWJsZSgp
OwotICAgIGNvbnN0IGluc3RhbmNlQiA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUs
IHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJCU2V0dGVyLCB0YWJsZTogdGFibGVCfSB9KTsKKyAgICBj
b25zdCBpbnN0YW5jZUIgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDog
eyBmdW5jOiBjb3VudGVyQlNldHRlciwgdGFibGU6IHRhYmxlQiwgdGFibGUwOiBuZXcgV2ViQXNz
ZW1ibHkuVGFibGUoe2luaXRpYWw6IDAsIG1heGltdW06IDAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0p
IH0gfSk7CiAgICAgdGFibGVCLnNldCgwLCBpbnN0YW5jZUIuZXhwb3J0cy5jYWxsRnVuYyk7CiAg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDQ4OyArK2kpIHsKICAgICAgICAgaW5zdGFuY2VBLmV4
cG9ydHMuY2hhbmdlQ291bnRlcihpLCAwKTsKQEAgLTkzLDcgKzEyNiw3IEBAIGNvbnN0IG1ha2VU
YWJsZSA9ICgpID0+IHsKICAgICBsZXQgaW5zdGFuY2VzID0gW107CiAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBudW07ICsraSkgewogICAgICAgICBsZXQgdGFibGUgPSBtYWtlVGFibGUoKTsKLSAg
ICAgICAgaW5zdGFuY2VzW2ldID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBp
bXA6IHsgZnVuYzogY291bnRlclNldHRlcnNbaV0sIHRhYmxlfSB9KTsKKyAgICAgICAgaW5zdGFu
Y2VzW2ldID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzog
Y291bnRlclNldHRlcnNbaV0sIHRhYmxlLCB0YWJsZTA6IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7
aW5pdGlhbDogMCwgbWF4aW11bTogMCwgZWxlbWVudDogImFueWZ1bmMifSkgfSB9KTsKICAgICAg
ICAgdGFibGUuc2V0KDAsIGluc3RhbmNlc1tpXS5leHBvcnRzLmNhbGxGdW5jKTsKICAgICB9CiAg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDQ4OyArK2kpIHsKQEAgLTEwNCwzICsxMzcsNSBAQCBj
b25zdCBtYWtlVGFibGUgPSAoKSA9PiB7CiAgICAgICAgIH0KICAgICB9CiB9KSgpOworCit9CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL3RhYmxlLmpzIGIvSlNUZXN0cy93YXNtL2pz
LWFwaS90YWJsZS5qcwppbmRleCBiYmNhODllYzM0ZjcxOTEyMDg0ZjYzMDlhYWMyZDY0NTUwYTQz
YmQxLi4xYjg0NDQzMWNlNjVmOTFjNDM3NTMyNWQ1Y2FlNTNkYzhiYzI0M2M3IDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3dhc20vanMtYXBpL3RhYmxlLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkv
dGFibGUuanMKQEAgLTEzLDcgKzEzLDcgQEAgaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fz
c2VydC5qcyc7CiAgICAgICAgIC5FbmQoKQogICAgICAgICAuQ29kZSgpCiAgICAgICAgIC5FbmQo
KTsKLSAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRl
ci5XZWJBc3NlbWJseSgpLmdldCgpKSwgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLCAiV2ViQXNz
ZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAzNDogQ2Fubm90IGhhdmUgbW9yZSB0
aGFuIG9uZSBUYWJsZSBmb3Igbm93Iik7CisgICAgbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWls
ZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCkpCiB9CiAKIHsKQEAgLTM4LDcgKzM4LDcgQEAgaW1wb3J0
ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CiAgICAgICAgIC5FbmQoKQogICAgICAg
ICAuQ29kZSgpCiAgICAgICAgIC5FbmQoKTsKLSAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpKSwgV2ViQXNzZW1i
bHkuQ29tcGlsZUVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0
ZSAxNzogVGFibGUgY291bnQgb2YgMiBpcyBpbnZhbGlkLCBhdCBtb3N0IDEgaXMgYWxsb3dlZCBm
b3Igbm93IChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNz
ZW1ibHkoKS5nZXQoKSknKSIpOworICAgIG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5X
ZWJBc3NlbWJseSgpLmdldCgpKQogfQogCiB7CkBAIC03Myw3ICs3MywyOCBAQCBpbXBvcnQgKiBh
cyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKICAgICAgICAgICAgICAgICAuQ2FsbEluZGly
ZWN0KDAsIDEpCiAgICAgICAgICAgICAuRW5kKCkKICAgICAgICAgLkVuZCgpOwotICAgIGFzc2Vy
dC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5
KCkuZ2V0KCkpLCBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUg
ZG9lc24ndCBwYXJzZSBhdCBieXRlIDY6IGNhbGxfaW5kaXJlY3QncyAncmVzZXJ2ZWQnIHZhcnVp
bnQxIG11c3QgYmUgMHgwLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcg
V2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSknKSIpOworICAg
IGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFz
c2VtYmx5KCkuZ2V0KCkpLCBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsICJXZWJBc3NlbWJseS5N
b2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDY6IGNhbGxfaW5kaXJlY3QncyB0YWJsZSBpbmRl
eCAxIGludmFsaWQsIGxpbWl0IGlzIDEsIGluIGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRp
bmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpKScp
Iik7Cit9CisKK3sKKyAgICBjb25zdCBidWlsZGVyID0gbmV3IEJ1aWxkZXIoKQorICAgICAgICAu
VHlwZSgpLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5UYWJsZSgp
CisgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6MjAsIGVsZW1lbnQ6ImFueWZ1bmMifSkKKyAg
ICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDoyMCwgZWxlbWVudDoiYW55ZnVuYyJ9KQorICAgICAg
ICAuRW5kKCkKKyAgICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZvbyIp
CisgICAgICAgIC5FbmQoKQorICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24o
ImZvbyIsIHtwYXJhbXM6IFsiaTMyIl19KQorICAgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQor
ICAgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAgIC5DYWxsSW5kaXJl
Y3QoMCwgMSkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAuRW5kKCk7CisgICAgbmV3IFdl
YkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCkpCiB9CiAKIHsKQEAg
LTE4Niw3ICsyMDcsNyBAQCBmdW5jdGlvbiBhc3NlcnRCYWRUYWJsZUltcG9ydCh0YWJsZURlc2Ny
aXB0aW9uLCBtZXNzYWdlKSB7CiAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCiAgICAgICAgIC5D
b2RlKCkKICAgICAgICAgLkVuZCgpOwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFz
c2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCkpLCBXZWJBc3NlbWJseS5D
b21waWxlRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDM5
OiBDYW5ub3QgaGF2ZSBtb3JlIHRoYW4gb25lIFRhYmxlIGZvciBub3ciKTsKKyAgICBuZXcgV2Vi
QXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSkKIH0KIAogCkBAIC0z
MjAsMyArMzQxLDI2IEBAIGFzc2VydC50aHJvd3MoKCkgPT4gV2ViQXNzZW1ibHkuVGFibGUucHJv
dG90eXBlLmdyb3codW5kZWZpbmVkKSwgVHlwZUVycm9yLCBgZXhwCiAgICAgYXNzZXJ0LmVxKGlu
c3RhbmNlLmV4cG9ydHMudGFibGUubGVuZ3RoLCAyMCk7CiAgICAgYXNzZXJ0LnRydXRoeShpbnN0
YW5jZS5leHBvcnRzLnRhYmxlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuVGFibGUpOwogfQorCit7
CisgICAgY29uc3QgYnVpbGRlciA9IG5ldyBCdWlsZGVyKCkKKyAgICAgICAgLlR5cGUoKS5FbmQo
KQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAuVGFibGUoKQorICAgICAgICAg
ICAgLlRhYmxlKHtpbml0aWFsOiAwLCBtYXhpbXVtOiAxLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQor
ICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAyMCwgbWF4aW11bTogMzAsIGVsZW1lbnQ6ICJh
bnlmdW5jIn0pCisgICAgICAgIC5FbmQoKQorICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAg
IC5UYWJsZSgidGFibGUwIiwgMCkKKyAgICAgICAgICAgIC5UYWJsZSgidGFibGUiLCAxKQorICAg
ICAgICAgICAgLlRhYmxlKCJ0YWJsZTIiLCAxKQorICAgICAgICAuRW5kKCkKKyAgICAgICAgLkNv
ZGUoKS5FbmQoKTsKKworICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUo
YnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpKTsKKyAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBX
ZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUpOworICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBv
cnRzLnRhYmxlLCBpbnN0YW5jZS5leHBvcnRzLnRhYmxlMik7CisgICAgYXNzZXJ0LmVxKGluc3Rh
bmNlLmV4cG9ydHMudGFibGUubGVuZ3RoLCAyMCk7CisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4
cG9ydHMudGFibGUwLmxlbmd0aCwgMCk7CisgICAgYXNzZXJ0LnRydXRoeShpbnN0YW5jZS5leHBv
cnRzLnRhYmxlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuVGFibGUpOworfQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvYW55cmVmX3RhYmxlLmpzIGIvSlNUZXN0cy93YXNtL3Jl
ZmVyZW5jZXMvYW55cmVmX3RhYmxlLmpzCmluZGV4IGIyYmNhZWNiZWJkZmQzNjgzYjMxNzhkNDJl
NTg1MDYwYmI5OWJlMjAuLmJjOTVmNjdkYTE2ZmU2NTJjOTZjNjY5MjY1YzY2NDQ4ODZlZTg2NzQg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZS5qcworKysg
Yi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9hbnlyZWZfdGFibGUuanMKQEAgLTE4LDEyICsxOCwx
MiBAQCBjb25zdCAkMSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHku
TW9kdWxlKChuZXcgQnVpbGRlcigpKQogICAgICAgICAuRnVuY3Rpb24oInNldF90YmwiLCB7IHBh
cmFtczogWyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkKICAgICAgICAgICAuSTMyQ29uc3QoMCkK
ICAgICAgICAgICAuR2V0TG9jYWwoMCkKLSAgICAgICAgICAuVGFibGVTZXQoKQorICAgICAgICAg
IC5UYWJsZVNldCgwKQogICAgICAgICAuRW5kKCkKIAogICAgICAgICAuRnVuY3Rpb24oImdldF90
YmwiLCB7IHBhcmFtczogW10sIHJldDogImFueXJlZiIgfSkKICAgICAgICAgICAuSTMyQ29uc3Qo
MCkKLSAgICAgICAgICAuVGFibGVHZXQoKQorICAgICAgICAgIC5UYWJsZUdldCgwKQogICAgICAg
ICAuRW5kKCkKIAogICAgICAgICAuRnVuY3Rpb24oInRibF9pc19udWxsIiwgeyBwYXJhbXM6IFtd
LCByZXQ6ICJpMzIiIH0pCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9hbnly
ZWZfdGFibGVfaW1wb3J0LmpzIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvYW55cmVmX3RhYmxl
X2ltcG9ydC5qcwppbmRleCA4OGNhYjdjMjNmZTdiNDBhZDY5ZWMyMzZkNGJiNjlkMjM1MThiNjNl
Li4xNzQyYmIyMDhjMGE4MjQyNDI3MGVkNWI5MGZmMGE2YjQwODc1MzAxIDEwMDY0NAotLS0gYS9K
U1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9hbnlyZWZfdGFibGVfaW1wb3J0LmpzCisrKyBiL0pTVGVz
dHMvd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZV9pbXBvcnQuanMKQEAgLTIyLDEyICsyMiwx
MiBAQCBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKICAgICAgICAgICAgIC5G
dW5jdGlvbigic2V0X3RibCIsIHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQog
ICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKICAgICAgICAgICAgICAgLkdldExvY2FsKDApCi0g
ICAgICAgICAgICAgIC5UYWJsZVNldCgpCisgICAgICAgICAgICAgIC5UYWJsZVNldCgwKQogICAg
ICAgICAgICAgLkVuZCgpCiAKICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIsIHsgcGFy
YW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQogICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKLSAg
ICAgICAgICAgICAgLlRhYmxlR2V0KCkKKyAgICAgICAgICAgICAgLlRhYmxlR2V0KDApCiAgICAg
ICAgICAgICAuRW5kKCkKIAogICAgICAgICAgICAgLkZ1bmN0aW9uKCJ0YmxfaXNfbnVsbCIsIHsg
cGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KQpAQCAtODgsMTIgKzg4LDEyIEBAIGltcG9ydCBCdWls
ZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwogICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJs
IiwgeyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCiAgICAgICAgICAgICAgIC5J
MzJDb25zdCgwKQogICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKLSAgICAgICAgICAgICAgLlRh
YmxlU2V0KCkKKyAgICAgICAgICAgICAgLlRhYmxlU2V0KDApCiAgICAgICAgICAgICAuRW5kKCkK
IAogICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJh
bnlyZWYiIH0pCiAgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQotICAgICAgICAgICAgICAuVGFi
bGVHZXQoKQorICAgICAgICAgICAgICAuVGFibGVHZXQoMCkKICAgICAgICAgICAgIC5FbmQoKQog
CiAgICAgICAgICAgICAuRnVuY3Rpb24oInRibF9pc19udWxsIiwgeyBwYXJhbXM6IFtdLCByZXQ6
ICJpMzIiIH0pCkBAIC0xMjcsMTIgKzEyNywxMiBAQCBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9C
dWlsZGVyLmpzJzsKICAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibCIsIHsgcGFyYW1zOiBb
ImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQogICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKICAg
ICAgICAgICAgICAgLkdldExvY2FsKDApCi0gICAgICAgICAgICAgIC5UYWJsZVNldCgpCisgICAg
ICAgICAgICAgIC5UYWJsZVNldCgwKQogICAgICAgICAgICAgLkVuZCgpCiAKICAgICAgICAgICAg
IC5GdW5jdGlvbigiZ2V0X3RibCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQogICAg
ICAgICAgICAgICAuSTMyQ29uc3QoMCkKLSAgICAgICAgICAgICAgLlRhYmxlR2V0KCkKKyAgICAg
ICAgICAgICAgLlRhYmxlR2V0KDApCiAgICAgICAgICAgICAuRW5kKCkKIAogICAgICAgICAgICAg
LkZ1bmN0aW9uKCJ0YmxfaXNfbnVsbCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZnVuY19yZWYuanMgYi9KU1Rlc3RzL3dh
c20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qcwppbmRleCAzNWUwNmU0NjU4Mzg3MjgzYzU4MzM1Yjli
NjZmNzc4NTNmOWJiMTAyLi4zNmE3OWI2ZjM0MjIzMjY3ZGU0ZWU0ZDQyYjc2NzE1NjU5YTQ5Njhi
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qcworKysgYi9K
U1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qcwpAQCAtMjU3LDcgKzI1Nyw3IEBAIGFz
c2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkK
ICAgICAuRnVuY3Rpb24oImgiLCB7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAidm9pZCIgfSkKICAg
ICAgIC5HZXRMb2NhbCgwKQogICAgICAgLkkzMkNvbnN0KDApCi0gICAgICAuVGFibGVTZXQoKQor
ICAgICAgLlRhYmxlU2V0KDApCiAgICAgLkVuZCgpCiAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdl
dCgpKSwgRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCB2YWxpZGF0ZTogdGFibGUu
c2V0IHZhbHVlIHRvIHR5cGUgSTMyIGV4cGVjdGVkIEFueWZ1bmMsIGluIGZ1bmN0aW9uIGF0IGlu
ZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUnKSIpOwogCkBAIC0yNjcs
NiArMjY3LDcgQEAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChu
ZXcgQnVpbGRlcigpKQogICAgICAgLlR5cGUoKS5FbmQoKQogICAgICAgLkZ1bmN0aW9uKCkuRW5k
KCkKICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDAsIGVsZW1l
bnQ6ICJhbnlyZWYifSkKICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMSwgZWxlbWVudDog
ImFueWZ1bmMifSkKICAgICAgIC5FbmQoKQogICAgICAgLkdsb2JhbCgpCkBAIC0yOTEsMTEgKzI5
MiwxMSBAQCBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBC
dWlsZGVyKCkpCiAgICAgICAgIC5GdW5jdGlvbigiY2FsbF9nbG9iIiwgeyBwYXJhbXM6IFsiaTMy
Il0sIHJldDogImkzMiIgfSkKICAgICAgICAgICAgIC5JMzJDb25zdCgwKQogICAgICAgICAgICAg
LkdldEdsb2JhbCgwKQotICAgICAgICAgICAgLlRhYmxlU2V0KCkKKyAgICAgICAgICAgIC5UYWJs
ZVNldCgxKQogCiAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKICAgICAgICAgICAgIC5JMzJDb25z
dCgwKQotICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgyLDApCisgICAgICAgICAgICAuQ2FsbElu
ZGlyZWN0KDIsMSkKICAgICAgICAgLkVuZCgpCiAKICAgICAgICAgLkZ1bmN0aW9uKCJyZXRfMjAi
LCB7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9KQpAQCAtMzI4LDYgKzMyOSw3IEBAIGFz
c2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkK
ICAgICAgIC5UeXBlKCkuRW5kKCkKICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCiAgICAgICAuVGFi
bGUoKQorICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAwLCBlbGVtZW50OiAiYW55cmVmIn0p
CiAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDEsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCiAg
ICAgICAuRW5kKCkKICAgICAgIC5FeHBvcnQoKQpAQCAtMzM4LDEyICszNDAsMTIgQEAgYXNzZXJ0
LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQogICAg
ICAgICAuRnVuY3Rpb24oInNldCIsIHsgcGFyYW1zOiBbImFueWZ1bmMiXSwgcmV0OiAidm9pZCIg
fSkKICAgICAgICAgICAuSTMyQ29uc3QoMCkKICAgICAgICAgICAuR2V0TG9jYWwoMCkKLSAgICAg
ICAgICAuVGFibGVTZXQoKQorICAgICAgICAgIC5UYWJsZVNldCgxKQogICAgICAgICAuRW5kKCkK
IAogICAgICAgICAuRnVuY3Rpb24oImdldCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55ZnVuYyIg
fSkKICAgICAgICAgICAgIC5JMzJDb25zdCgwKQotICAgICAgICAgICAgLlRhYmxlR2V0KCkKKyAg
ICAgICAgICAgIC5UYWJsZUdldCgxKQogICAgICAgICAuRW5kKCkKICAgICAgIC5FbmQoKS5XZWJB
c3NlbWJseSgpLmdldCgpKSk7CiAKQEAgLTQwNSw3ICs0MDcsNyBAQCBmb3IgKGxldCBpbXBvcnRl
ZEZ1biBvZiBbZnVuY3Rpb24oaSkgeyByZXR1cm4gaTsgfSwgbWFrZUFueWZ1bmNJZGVudCgpXSkg
ewogICAgICAgICAgIC5HZXRMb2NhbCgwKQogICAgICAgICAgIC5JMzJDb25zdCgwKQogICAgICAg
ICAgIC5SZWZGdW5jKDApCi0gICAgICAgICAgLlRhYmxlU2V0KCkKKyAgICAgICAgICAuVGFibGVT
ZXQoMCkKICAgICAgICAgICAuSTMyQ29uc3QoMCkKICAgICAgICAgICAuQ2FsbEluZGlyZWN0KDAs
IDApCiAgICAgICAgIC5FbmQoKQpAQCAtNDE0LDcgKzQxNiw3IEBAIGZvciAobGV0IGltcG9ydGVk
RnVuIG9mIFtmdW5jdGlvbihpKSB7IHJldHVybiBpOyB9LCBtYWtlQW55ZnVuY0lkZW50KCldKSB7
CiAgICAgICAgICAgLlJlZkZ1bmMoMSkKICAgICAgICAgICAuSTMyQ29uc3QoMCkKICAgICAgICAg
ICAuUmVmRnVuYygwKQotICAgICAgICAgIC5UYWJsZVNldCgpCisgICAgICAgICAgLlRhYmxlU2V0
KDApCiAgICAgICAgICAgLkkzMkNvbnN0KDApCiAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgwLCAw
KQogICAgICAgICAuRW5kKCkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL211
bHRpdGFibGUuanMgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9tdWx0aXRhYmxlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM3MWMyZjA0ZDk4ZDAzZmEzNjJiMjQwMjM4NTZhOGM5MjRmMTJkOTgKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9tdWx0aXRhYmxlLmpzCkBAIC0wLDAg
KzEsNDYwIEBACitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKK2ltcG9y
dCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOworCit7CisgICAgY29uc3QgJDEgPSBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIo
KSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkK
KyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMCwg
bWF4aW11bTogMCwgZWxlbWVudDogImFueXJlZiJ9KQorICAgICAgICAgICAgICAgIC5UYWJsZSh7
aW5pdGlhbDogMjAsIG1heGltdW06IDMwLCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAgICAgICAg
LkVuZCgpCisgICAgICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigic2V0
X3RibCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIpCisgICAgICAgICAgICAg
IC5GdW5jdGlvbigiZ2V0X3RibDAiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oInNldF90Ymww
IikKKyAgICAgICAgICAgICAgLlRhYmxlKCJ0YmwiLCAxKQorICAgICAgICAgIC5FbmQoKQorICAg
ICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibCIsIHsgcGFyYW1z
OiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkK
KyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5UYWJsZVNldCgxKQor
ICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIsIHsg
cGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkK
KyAgICAgICAgICAgICAgLlRhYmxlR2V0KDEpCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsMCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9
KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLlRhYmxlR2V0KDAp
CisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsMCIs
IHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgICAuSTMy
Q29uc3QoMCkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5UYWJs
ZVNldCgwKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5
KCkuZ2V0KCkpKTsKKworICAgIGZ1bGxHQygpCisKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5n
ZXRfdGJsKCksIG51bGwpCisKKyAgICAkMS5leHBvcnRzLnNldF90YmwoImhpIikKKyAgICBmdWxs
R0MoKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF90YmwoKSwgImhpIikKKyAgICBhc3Nl
cnQuZXEoJDEuZXhwb3J0cy50YmwuZ2V0KDApLCAiaGkiKQorICAgIGFzc2VydC5lcSgkMS5leHBv
cnRzLnRibC5nZXQoMSksIG51bGwpCisKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9y
dHMuZ2V0X3RibDAoKSwgRXJyb3IsICJPdXQgb2YgYm91bmRzIHRhYmxlIGFjY2VzcyAoZXZhbHVh
dGluZyAnZnVuYyguLi5hcmdzKScpIik7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBv
cnRzLnNldF90YmwwKG51bGwpLCBFcnJvciwgIk91dCBvZiBib3VuZHMgdGFibGUgYWNjZXNzIChl
dmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKTsKK30KKworeworICAgIGNvbnN0IHRibCA9IG5l
dyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDowLCBlbGVtZW50OiJhbnlyZWYifSk7CisgICAg
Y29uc3QgJDEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVs
ZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLklt
cG9ydCgpCisgICAgICAgICAgICAgICAgLlRhYmxlKCJpbXAiLCAidGJsIiwge2luaXRpYWw6IDAs
IGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rp
b24oKS5FbmQoKQorICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAgICAgLlRhYmxlKHtp
bml0aWFsOiAyMCwgbWF4aW11bTogMzAsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAu
RW5kKCkKKyAgICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRf
dGJsIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsIikKKyAgICAgICAgICAgICAg
LkZ1bmN0aW9uKCJnZXRfdGJsMCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibDAi
KQorICAgICAgICAgICAgICAuVGFibGUoInRibCIsIDEpCisgICAgICAgICAgLkVuZCgpCisgICAg
ICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsIiwgeyBwYXJhbXM6
IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQor
ICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLlRhYmxlU2V0KDEpCisg
ICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsIiwgeyBw
YXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQor
ICAgICAgICAgICAgICAuVGFibGVHZXQoMSkKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAg
ICAgICAuRnVuY3Rpb24oImdldF90YmwwIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0p
CisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuVGFibGVHZXQoMCkK
KyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oInNldF90YmwwIiwg
eyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5JMzJD
b25zdCgwKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLlRhYmxl
U2V0KDApCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHko
KS5nZXQoKSksIHsgaW1wOiB7IHRibCB9fSk7CisKKyAgICBmdWxsR0MoKQorCisgICAgYXNzZXJ0
LmVxKCQxLmV4cG9ydHMuZ2V0X3RibCgpLCBudWxsKQorCisgICAgJDEuZXhwb3J0cy5zZXRfdGJs
KCJoaSIpCisgICAgZnVsbEdDKCkKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfdGJsKCks
ICJoaSIpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMudGJsLmdldCgwKSwgImhpIikKKyAgICBh
c3NlcnQuZXEoJDEuZXhwb3J0cy50YmwuZ2V0KDEpLCBudWxsKQorCisgICAgYXNzZXJ0LnRocm93
cygoKSA9PiAkMS5leHBvcnRzLmdldF90YmwwKCksIEVycm9yLCAiT3V0IG9mIGJvdW5kcyB0YWJs
ZSBhY2Nlc3MgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpOworICAgIGFzc2VydC50aHJv
d3MoKCkgPT4gJDEuZXhwb3J0cy5zZXRfdGJsMChudWxsKSwgRXJyb3IsICJPdXQgb2YgYm91bmRz
IHRhYmxlIGFjY2VzcyAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIik7Cit9CisKK3sKKyAg
ICBjb25zdCB0YmwgPSBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6MSwgZWxlbWVudDoi
YW55cmVmIn0pOworICAgIGNvbnN0ICQxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQo
KQorICAgICAgICAgIC5JbXBvcnQoKQorICAgICAgICAgICAgICAgIC5UYWJsZSgiaW1wIiwgInRi
bCIsIHtpbml0aWFsOiAxLCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAgICAgICAgLkVuZCgpCisg
ICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAg
ICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMjAsIG1heGltdW06IDMwLCBlbGVtZW50OiAiYW55cmVm
In0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgICAg
IC5GdW5jdGlvbigic2V0X3RibCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIp
CisgICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibDAiKQorICAgICAgICAgICAgICAuRnVu
Y3Rpb24oInNldF90YmwwIikKKyAgICAgICAgICAgICAgLlRhYmxlKCJ0YmwiLCAxKQorICAgICAg
ICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigic2V0
X3RibCIsIHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAg
ICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAg
IC5UYWJsZVNldCgxKQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlv
bigiZ2V0X3RibCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQorICAgICAgICAgICAg
ICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLlRhYmxlR2V0KDEpCisgICAgICAgICAgICAu
RW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsMCIsIHsgcGFyYW1zOiBbXSwg
cmV0OiAiYW55cmVmIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAg
ICAgLlRhYmxlR2V0KDApCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0
aW9uKCJzZXRfdGJsMCIsIHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQorICAg
ICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAg
ICAgICAgICAgIC5UYWJsZVNldCgwKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVu
ZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpLCB7IGltcDogeyB0YmwgfX0pOworCisgICAgZnVsbEdD
KCkKKworICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF90YmwoKSwgbnVsbCkKKworICAgICQx
LmV4cG9ydHMuc2V0X3RibCgiaGkiKQorICAgIGZ1bGxHQygpCisgICAgJDEuZXhwb3J0cy5zZXRf
dGJsMChudWxsKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF90YmwoKSwgImhpIikKKyAg
ICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5nZXRfdGJsMCgpLCBudWxsKQorICAgIGFzc2VydC5lcSgk
MS5leHBvcnRzLnRibC5nZXQoMCksICJoaSIpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMudGJs
LmdldCgxKSwgbnVsbCkKKyAgICBhc3NlcnQuZXEodGJsLmdldCgwKSwgbnVsbCkKK30KKworewor
ICAgIGNvbnN0ICQxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5N
b2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAg
IC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgICAgICAu
VGFibGUoe2luaXRpYWw6IDMsIG1heGltdW06IDMwLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAg
ICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMiwgbWF4aW11bTogMzAsIGVsZW1lbnQ6ICJh
bnlmdW5jIn0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkV4cG9ydCgpCisgICAgICAg
ICAgICAgIC5GdW5jdGlvbigiY2FsbF90YmwwIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJj
YWxsX3RibDEiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oInJldDQyIikKKyAgICAgICAgICAg
ICAgLkZ1bmN0aW9uKCJyZXQxMzM3IikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQyNTYi
KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbGVtZW50KCkKKyAgICAgICAgICAgICAg
ICAuRWxlbWVudCh7dGFibGVJbmRleDogMSwgb2Zmc2V0OiAwLCBmdW5jdGlvbkluZGljZXM6IFsy
XX0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1
bmN0aW9uKCJjYWxsX3RibDAiLCB7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9KQorICAg
ICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgxLDAp
CisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJjYWxsX3RibDEi
LCB7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgICAgICAuR2V0TG9j
YWwoMCkKKyAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgxLDEpCisgICAgICAgICAgICAuRW5k
KCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQ0MiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAi
aTMyIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoNDIpCisgICAgICAgICAgICAuRW5kKCkK
KworICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQxMzM3IiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJp
MzIiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgxMzM3KQorICAgICAgICAgICAgLkVuZCgp
CisKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0MjU2IiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJp
MzIiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgyNTYpCisgICAgICAgICAgICAuRW5kKCkK
KyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSkpOworCisgICAgZnVsbEdDKCkK
KworICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmNhbGxfdGJsMSgwKSwgNDIpCisgICAgYXNzZXJ0
LnRocm93cygoKSA9PiAkMS5leHBvcnRzLmNhbGxfdGJsMCgwKSwgRXJyb3IsICJjYWxsX2luZGly
ZWN0IHRvIGEgbnVsbCB0YWJsZSBlbnRyeSAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikK
KyAgICBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuY2FsbF90YmwxKDEpLCBFcnJvciwg
ImNhbGxfaW5kaXJlY3QgdG8gYSBudWxsIHRhYmxlIGVudHJ5IChldmFsdWF0aW5nICdmdW5jKC4u
LmFyZ3MpJykiKQorfQorCit7CisgICAgY29uc3QgJDEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFu
Y2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlw
ZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAuVGFibGUo
KQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMywgbWF4aW11bTogMzAsIGVsZW1l
bnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAyLCBtYXhp
bXVtOiAzMCwgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAg
ICAuRXhwb3J0KCkKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJjYWxsX3RibDAiKQorICAgICAg
ICAgICAgICAuRnVuY3Rpb24oImNhbGxfdGJsMSIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigi
cmV0NDIiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oInJldDEzMzciKQorICAgICAgICAgICAg
ICAuRnVuY3Rpb24oInJldDI1NiIpCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVsZW1l
bnQoKQorICAgICAgICAgICAgICAgIC5FbGVtZW50KHt0YWJsZUluZGV4OiAxLCBvZmZzZXQ6IDAs
IGZ1bmN0aW9uSW5kaWNlczogWzJdfSkKKyAgICAgICAgICAgICAgICAuRWxlbWVudCh7dGFibGVJ
bmRleDogMCwgb2Zmc2V0OiAwLCBmdW5jdGlvbkluZGljZXM6IFszXX0pCisgICAgICAgICAgICAg
ICAgLkVsZW1lbnQoe3RhYmxlSW5kZXg6IDEsIG9mZnNldDogMSwgZnVuY3Rpb25JbmRpY2VzOiBb
NF19KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5G
dW5jdGlvbigiY2FsbF90YmwwIiwgeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSkKKyAg
ICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMSww
KQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigiY2FsbF90Ymwx
IiwgeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAgICAgLkdldExv
Y2FsKDApCisgICAgICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMSwxKQorICAgICAgICAgICAgLkVu
ZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0NDIiLCB7IHBhcmFtczogW10sIHJldDog
ImkzMiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDQyKQorICAgICAgICAgICAgLkVuZCgp
CisKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0MTMzNyIsIHsgcGFyYW1zOiBbXSwgcmV0OiAi
aTMyIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMTMzNykKKyAgICAgICAgICAgIC5FbmQo
KQorCisgICAgICAgICAgICAuRnVuY3Rpb24oInJldDI1NiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAi
aTMyIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMjU2KQorICAgICAgICAgICAgLkVuZCgp
CisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKTsKKworICAgIGZ1bGxHQygp
CisKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy5jYWxsX3RibDEoMCksIDQyKQorICAgIGFzc2Vy
dC5lcSgkMS5leHBvcnRzLmNhbGxfdGJsMCgwKSwgMTMzNykKKyAgICBhc3NlcnQuZXEoJDEuZXhw
b3J0cy5jYWxsX3RibDEoMSksIDI1NikKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9y
dHMuY2FsbF90YmwwKDEpLCBFcnJvciwgImNhbGxfaW5kaXJlY3QgdG8gYSBudWxsIHRhYmxlIGVu
dHJ5IChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorICAgIGFzc2VydC50aHJvd3MoKCkg
PT4gJDEuZXhwb3J0cy5jYWxsX3RibDAoMiksIEVycm9yLCAiY2FsbF9pbmRpcmVjdCB0byBhIG51
bGwgdGFibGUgZW50cnkgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisgICAgYXNzZXJ0
LnRocm93cygoKSA9PiAkMS5leHBvcnRzLmNhbGxfdGJsMSgyKSwgRXJyb3IsICJPdXQgb2YgYm91
bmRzIGNhbGxfaW5kaXJlY3QgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCit9CisgYXNz
ZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5
Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAg
ICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAg
IC5UYWJsZSh7aW5pdGlhbDogMywgbWF4aW11bTogMywgZWxlbWVudDogImFueWZ1bmMifSkKKyAg
ICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDIsIG1heGltdW06IDIsIGVsZW1lbnQ6ICJh
bnlmdW5jIn0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVsZW1lbnQoKQorICAgICAg
ICAgICAgICAgIC5FbGVtZW50KHt0YWJsZUluZGV4OiAxLCBvZmZzZXQ6IDAsIGZ1bmN0aW9uSW5k
aWNlczogWzBdfSkKKyAgICAgICAgICAgICAgICAuRWxlbWVudCh7dGFibGVJbmRleDogMCwgb2Zm
c2V0OiAwLCBmdW5jdGlvbkluZGljZXM6IFswXX0pCisgICAgICAgICAgICAgICAgLkVsZW1lbnQo
e3RhYmxlSW5kZXg6IDEsIG9mZnNldDogMiwgZnVuY3Rpb25JbmRpY2VzOiBbMF19KQorICAgICAg
ICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0
NDIiLCB7IHBhcmFtczogW10sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0
KDQyKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCku
Z2V0KCkpKSwgRXJyb3IsICJFbGVtZW50IGlzIHRyeWluZyB0byBzZXQgYW4gb3V0IG9mIGJvdW5k
cyB0YWJsZSBpbmRleCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlJykiKQor
Cithc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNz
ZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAg
ICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAg
ICAgICAgLlRhYmxlKHtpbml0aWFsOiAzLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55cmVmIn0p
CisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAyLCBtYXhpbXVtOiAzLCBlbGVtZW50
OiAiYW55ZnVuYyJ9KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbGVtZW50KCkKKyAg
ICAgICAgICAgICAgICAuRWxlbWVudCh7dGFibGVJbmRleDogMSwgb2Zmc2V0OiAwLCBmdW5jdGlv
bkluZGljZXM6IFswXX0pCisgICAgICAgICAgICAgICAgLkVsZW1lbnQoe3RhYmxlSW5kZXg6IDAs
IG9mZnNldDogMCwgZnVuY3Rpb25JbmRpY2VzOiBbMF19KQorICAgICAgICAgICAgICAgIC5FbGVt
ZW50KHt0YWJsZUluZGV4OiAxLCBvZmZzZXQ6IDIsIGZ1bmN0aW9uSW5kaWNlczogWzBdfSkKKyAg
ICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24o
InJldDQyIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCisgICAgICAgICAgICAgIC5JMzJD
b25zdCg0MikKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJs
eSgpLmdldCgpKSksIEVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQg
Ynl0ZSA0MDogVGFibGUgMCBtdXN0IGhhdmUgdHlwZSAnYW55ZnVuYycgdG8gaGF2ZSBhbiBlbGVt
ZW50IHNlY3Rpb24gKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUnKSIpCisKK2Fz
c2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJs
eS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAg
ICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgICAg
ICAuVGFibGUoe2luaXRpYWw6IDMsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAg
ICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDIsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJh
bnlmdW5jIn0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAg
ICAgLkZ1bmN0aW9uKCJmdW4iLCB7IHBhcmFtczogW10sIHJldDogImFueXJlZiIgfSkKKyAgICAg
ICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgIC5UYWJsZUdldCgyKQorICAgICAg
ICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKSwgRXJy
b3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCB2YWxpZGF0ZTogdGFibGUgaW5kZXggMiBp
cyBpbnZhbGlkLCBsaW1pdCBpcyAyLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5n
ICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlJykiKQorCithc3NlcnQudGhyb3dzKCgpID0+IG5ldyBX
ZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigp
KQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQor
ICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAzLCBt
YXhpbXVtOiAzLCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAgICAgICAgICAgICAgLlRhYmxlKHtp
bml0aWFsOiAyLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgICAgIC5F
bmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZnVuIiwgeyBw
YXJhbXM6IFtdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKKyAg
ICAgICAgICAgICAgLlJlZk51bGwoKQorICAgICAgICAgICAgICAuVGFibGVTZXQoMikKKyAgICAg
ICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSksIEVy
cm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgdmFsaWRhdGU6IHRhYmxlIGluZGV4IDIg
aXMgaW52YWxpZCwgbGltaXQgaXMgMiwgaW4gZnVuY3Rpb24gYXQgaW5kZXggMCAoZXZhbHVhdGlu
ZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScpIikKKworYXNzZXJ0LnRocm93cygoKSA9PiBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIo
KSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkK
KyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMywg
bWF4aW11bTogMywgZWxlbWVudDogImFueXJlZiJ9KQorICAgICAgICAgICAgICAgIC5UYWJsZSh7
aW5pdGlhbDogMiwgbWF4aW11bTogMywgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAgICAu
RW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZ1biIsIHsg
cGFyYW1zOiBbXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgw
LCAyKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCku
Z2V0KCkpKSwgRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRl
IDQ6IGNhbGxfaW5kaXJlY3QncyB0YWJsZSBpbmRleCAyIGludmFsaWQsIGxpbWl0IGlzIDIsIGlu
IGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUn
KSIpCisKK2Fzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQo
KQorICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgLlRhYmxlKCkKKyAgICAg
ICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDMsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnly
ZWYifSkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDIsIG1heGltdW06IDMsIGVs
ZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQor
ICAgICAgICAgICAgLkZ1bmN0aW9uKCJmdW4iLCB7IHBhcmFtczogW10sIHJldDogInZvaWQiIH0p
CisgICAgICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMCwwKQorICAgICAgICAgICAgLkVuZCgpCisg
ICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKSwgRXJyb3IsICJXZWJBc3NlbWJs
eS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDQ6IGNhbGxfaW5kaXJlY3QgaXMgb25seSB2
YWxpZCB3aGVuIGEgdGFibGUgaGFzIHR5cGUgYW55ZnVuYywgaW4gZnVuY3Rpb24gYXQgaW5kZXgg
MCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScpIikKKworYXNzZXJ0LnRocm93
cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgo
bmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0
aW9uKCkuRW5kKCkKKyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7
aW5pdGlhbDogMywgbWF4aW11bTogMywgZWxlbWVudDogImFueXJlZiJ9KQorICAgICAgICAgICAg
ICAgIC5UYWJsZSh7aW5pdGlhbDogMiwgbWF4aW11bTogMywgZWxlbWVudDogImFueWZ1bmMifSkK
KyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rp
b24oImZ1biIsIHsgcGFyYW1zOiBbXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAgICAgLlJl
Zk51bGwoKQorICAgICAgICAgICAgICAuVGFibGVHZXQoMCkKKyAgICAgICAgICAgIC5FbmQoKQor
ICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSksIEVycm9yLCAiV2ViQXNzZW1i
bHkuTW9kdWxlIGRvZXNuJ3QgdmFsaWRhdGU6IHRhYmxlLmdldCBpbmRleCB0byB0eXBlIEFueWZ1
bmMgZXhwZWN0ZWQgSTMyLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcg
V2ViQXNzZW1ibHkuTW9kdWxlJykiKQorCisKK2Fzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisg
ICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAg
ICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDMsIG1heGlt
dW06IDMsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRp
YWw6IDIsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgLkVuZCgp
CisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJmdW4iLCB7IHBhcmFt
czogW10sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5SZWZOdWxsKCkKKyAgICAgICAg
ICAgICAgLlJlZk51bGwoKQorICAgICAgICAgICAgICAuVGFibGVTZXQoMCkKKyAgICAgICAgICAg
IC5FbmQoKQorICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSksIEVycm9yLCAi
V2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgdmFsaWRhdGU6IHRhYmxlLnNldCBpbmRleCB0byB0
eXBlIEFueWZ1bmMgZXhwZWN0ZWQgSTMyLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0
aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlJykiKQorCithc3NlcnQudGhyb3dzKCgpID0+IG5l
dyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRl
cigpKQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQo
KQorICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAz
LCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAgICAgICAgICAgICAgLlRhYmxl
KHtpbml0aWFsOiAyLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgICAg
IC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZnVuIiwg
eyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5JMzJD
b25zdCgwKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLlRhYmxl
U2V0KDEpCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHko
KS5nZXQoKSkpLCBFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHZhbGlkYXRlOiB0
YWJsZS5zZXQgdmFsdWUgdG8gdHlwZSBBbnlyZWYgZXhwZWN0ZWQgQW55ZnVuYywgaW4gZnVuY3Rp
b24gYXQgaW5kZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScpIikKKwor
ZnVuY3Rpb24gdGFibGVJbnNhbml0eShudW0sIGIpIHsKKyAgICBiID0gYi5JbXBvcnQoKQorICAg
IGZvciAobGV0IGk9MDsgaTwxMDAwMDAtMTsgKytpKQorICAgICAgICBiID0gYi5GdW5jdGlvbigi
aW1wIiwgInJlZiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAidm9pZCIgfSkKKyAgICBiID0gYi5FbmQo
KS5GdW5jdGlvbigpLkVuZCgpLlRhYmxlKCkKKyAgICBmb3IgKGxldCBpPTA7IGk8bnVtOyArK2kp
CisgICAgICAgIGIgPSBiLlRhYmxlKHtpbml0aWFsOiAwLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAi
YW55cmVmIn0pCisgICAgcmV0dXJuIGIKK30KKworYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2Vi
QXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSh0YWJsZUluc2FuaXR5KDEw
MDAwMDAsIChuZXcgQnVpbGRlcigpKQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkpCisgICAgICAg
ICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAzLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55cmVm
In0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1
bmN0aW9uKCJmdW4iLCB7IHBhcmFtczogWyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkKKyAgICAg
ICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAg
ICAgICAgICAuVGFibGVTZXQoMSkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbmQo
KS5XZWJBc3NlbWJseSgpLmdldCgpKSksIEVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNu
J3QgcGFyc2UgYXQgYnl0ZSA1MDAwMDI3OiBUYWJsZSBjb3VudCBvZiAxMDAwMDAwIGlzIHRvbyBi
aWcsIG1heGltdW0gMTAwMDAwMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScp
IikKK3sKKyAgICBjb25zdCAkMSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNz
ZW1ibHkuTW9kdWxlKHRhYmxlSW5zYW5pdHkoMTAwMDAwMC0yLCAobmV3IEJ1aWxkZXIoKSkKKyAg
ICAgICAgICAuVHlwZSgpLkVuZCgpKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDog
MywgbWF4aW11bTogMywgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAgICAgICAgICAuVGFi
bGUoe2luaXRpYWw6IDMsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAg
ICAuRW5kKCkKKyAgICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAgICAgICAuRnVuY3Rpb24o
InNldF90YmwiKQorICAgICAgICAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3RibCIpCisgICAgICAg
ICAgICAgICAgLkZ1bmN0aW9uKCJjYWxsIikKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAu
RWxlbWVudCgpCisgICAgICAgICAgICAgICAgLkVsZW1lbnQoe3RhYmxlSW5kZXg6IDEwMDAwMDAt
Miwgb2Zmc2V0OiAwLCBmdW5jdGlvbkluZGljZXM6IFswXX0pCisgICAgICAgICAgLkVuZCgpCisg
ICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsIiwgeyBwYXJh
bXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgw
KQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLlRhYmxlU2V0KDEw
MDAwMDAtMSkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRf
dGJsIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCisgICAgICAgICAgICAgIC5JMzJD
b25zdCgwKQorICAgICAgICAgICAgICAuVGFibGVHZXQoMTAwMDAwMC0xKQorICAgICAgICAgICAg
LkVuZCgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImNhbGwiLCB7IHBhcmFtczogW10sIHJldDog
InZvaWQiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuQ2Fs
bEluZGlyZWN0KDAsIDEwMDAwMDAtMikKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5F
bmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSwgeyBpbXA6IHsgcmVmOiBmdW5jdGlvbiAoKSB7fSB9
IH0pCisgICAgJDEuZXhwb3J0cy5zZXRfdGJsKCJoaSIpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9y
dHMuZ2V0X3RibCgpLCAiaGkiKQorICAgICQxLmV4cG9ydHMuY2FsbCgpCit9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy92YWxpZGF0aW9uLmpzIGIvSlNUZXN0cy93YXNtL3Jl
ZmVyZW5jZXMvdmFsaWRhdGlvbi5qcwppbmRleCA4ZjgxNjM2OWE3NGU4OWU0OWU2OTA5ZGY0NDU1
NTBmZDBmNjZjMjE2Li43ZjdkMTg0MjdiNzVkMzcwNTJhZDY0ODQ1ZTM3MTVjMWNhZWRlZTNkIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy92YWxpZGF0aW9uLmpzCisrKyBiL0pT
VGVzdHMvd2FzbS9yZWZlcmVuY2VzL3ZhbGlkYXRpb24uanMKQEAgLTI0LDYgKzI0LDkgQEAgaW1w
b3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CiB7CiAgICAgY29uc3QgYnVpbGRlciA9
IChuZXcgQnVpbGRlcigpKQogICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgLkltcG9ydCgpCisg
ICAgICAgICAgICAuVGFibGUoImltcCIsICJ0YmwiLCB7aW5pdGlhbDogMiwgZWxlbWVudDogImFu
eWZ1bmMifSkKKyAgICAgIC5FbmQoKQogICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKICAgICAgIC5F
eHBvcnQoKQogICAgICAgICAgIC5GdW5jdGlvbigiaiIpCkBAIC0zMiwxNCArMzUsMTQgQEAgaW1w
b3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CiAgICAgICAgIC5GdW5jdGlvbigiaiIs
IHsgcGFyYW1zOiBbXSwgcmV0OiAidm9pZCIgfSkKICAgICAgICAgICAgIC5JMzJDb25zdCgwKQog
ICAgICAgICAgICAgLkkzMkNvbnN0KDApCi0gICAgICAgICAgICAuVGFibGVTZXQoKQorICAgICAg
ICAgICAgLlRhYmxlU2V0KDApCiAgICAgICAgIC5FbmQoKQogICAgICAgLkVuZCgpOwogCiAgICAg
Y29uc3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgpOwogICAgIGJpbi50cmltKCk7CiAKLSAg
ICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluLmdldCgpKSwg
V2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgdmFs
aWRhdGU6IHRhYmxlLnNldCB2YWx1ZSB0byB0eXBlIEkzMiBleHBlY3RlZCBBbnlyZWYsIGluIGZ1
bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmlu
LmdldCgpKScpIik7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9k
dWxlKGJpbi5nZXQoKSksIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgIldlYkFzc2VtYmx5Lk1v
ZHVsZSBkb2Vzbid0IHZhbGlkYXRlOiB0YWJsZS5zZXQgdmFsdWUgdG8gdHlwZSBJMzIgZXhwZWN0
ZWQgQW55ZnVuYywgaW4gZnVuY3Rpb24gYXQgaW5kZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFz
c2VtYmx5Lk1vZHVsZShiaW4uZ2V0KCkpJykiKTsKIH0KIAogewpAQCAtNTYsNyArNTksNyBAQCBp
bXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKICAgICAgICAgLkZ1bmN0aW9uKCJq
IiwgeyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCiAgICAgICAgICAgICAuSTMy
Q29uc3QoMCkKICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQotICAgICAgICAgICAgLlRhYmxlU2V0
KCkKKyAgICAgICAgICAgIC5UYWJsZVNldCgwKQogICAgICAgICAuRW5kKCkKICAgICAgIC5FbmQo
KTsKIApAQCAtNzksNyArODIsNyBAQCBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpz
JzsKICAgICAgIC5Db2RlKCkKICAgICAgICAgLkZ1bmN0aW9uKCJqIiwgeyBwYXJhbXM6IFtdLCBy
ZXQ6ICJhbnlyZWYiIH0pCiAgICAgICAgICAgICAuSTMyQ29uc3QoMCkKLSAgICAgICAgICAgIC5U
YWJsZUdldCgpCisgICAgICAgICAgICAuVGFibGVHZXQoMCkKICAgICAgICAgLkVuZCgpCiAgICAg
ICAuRW5kKCk7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9zcGVjLXRlc3RzL2ltcG9ydHMu
d2FzdC5qcyBiL0pTVGVzdHMvd2FzbS9zcGVjLXRlc3RzL2ltcG9ydHMud2FzdC5qcwppbmRleCA0
OGQxNDA5NjZhNGY3NTgzNjcwODAyOTdhNGMwM2NhYTc0ODMzNTMxLi42YjNmYWFmYWQ5NmY3ZWJl
ZjQyOThkNDI5YWJkOTFiMGJmYTg2NjhiIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vc3BlYy10
ZXN0cy9pbXBvcnRzLndhc3QuanMKKysrIGIvSlNUZXN0cy93YXNtL3NwZWMtdGVzdHMvaW1wb3J0
cy53YXN0LmpzCkBAIC0xODgsMTUgKzE4OCw2IEBAIGFzc2VydF90cmFwKCgpID0+IGNhbGwoJDE0
LCAiY2FsbCIsIFszXSkpOwogLy8gaW1wb3J0cy53YXN0OjI5MAogYXNzZXJ0X3RyYXAoKCkgPT4g
Y2FsbCgkMTQsICJjYWxsIiwgWzEwMF0pKTsKIAotLy8gaW1wb3J0cy53YXN0OjI5MwotYXNzZXJ0
X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMlx4OGRceDgwXHg4
MFx4ODBceDAwXHgwMlx4MDBceDAwXHgwMVx4NzBceDAwXHgwYVx4MDBceDAwXHgwMVx4NzBceDAw
XHgwYSIpOwotCi0vLyBpbXBvcnRzLndhc3Q6Mjk3Ci1hc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFc
eDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAyXHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4
MDBceDAxXHg3MFx4MDBceDBhXHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBceDAwXHgw
YSIpOwotCi0vLyBpbXBvcnRzLndhc3Q6MzAxCi1hc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDcz
XHg2ZFx4MDFceDAwXHgwMFx4MDBceDA0XHg4N1x4ODBceDgwXHg4MFx4MDBceDAyXHg3MFx4MDBc
eDBhXHg3MFx4MDBceDBhIik7Ci0KIC8vIGltcG9ydHMud2FzdDozMDYKIGxldCAkMTUgPSBpbnN0
YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAyXHg5N1x4ODBceDgwXHg4
MFx4MDBceDAxXHgwNFx4NzRceDY1XHg3M1x4NzRceDBjXHg3NFx4NjFceDYyXHg2Y1x4NjVceDJk
XHgzMVx4MzBceDJkXHg2OVx4NmVceDY2XHgwMVx4NzBceDAwXHgwYSIpOwogCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgppbmRleCA2
NGNhMGI1YjIwOGQ5MWIyYmY3ODY1NTc1NzEyNDczZDViNzI1MGEzLi40NTMwOGZiYmQ1NzUzMmY1
ZWJhMTM5NTZjYWFjZDA1NTkzNGFjYmFmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vd2FzbS5q
c29uCisrKyBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KQEAgLTY3LDEwICs2NywxMCBAQAogICAg
ICAgICAidGVlX2xvY2FsIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAi
dmFsdWUiOiAgMzQsICJyZXR1cm4iOiBbImFueSJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFueSJd
LCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImxvY2FsX2luZGV4Iiwg
ICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIndyaXRlIGEgbG9jYWwgdmFyaWFibGUgb3IgcGFy
YW1ldGVyIGFuZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUiIH0sCiAgICAgICAgICJnZXRfZ2xvYmFs
IjogICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzNSwgInJl
dHVybiI6IFsiYW55Il0sICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAg
ICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZ2xvYmFsX2luZGV4IiwgICAidHlwZSI6ICJ2YXJ1
aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAicmVhZCBhIGdsb2JhbCB2YXJpYWJsZSIgfSwKICAgICAgICAgInNldF9nbG9i
YWwiOiAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM2LCAi
cmV0dXJuIjogW10sICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhbnkiXSwgICAgICAgICAgICAg
ICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJnbG9iYWxfaW5kZXgiLCAgICJ0eXBlIjogInZh
cnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJ3cml0ZSBhIGdsb2JhbCB2YXJpYWJsZSIgfSwKLSAgICAgICAgInRhYmxl
LmdldCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM3
LCAicmV0dXJuIjogWyJhbnlyZWYiXSwgICAicGFyYW1ldGVyIjogWyJpMzIiXSwgICAgICAgICAg
ICAgICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJnZXQgYSB0YWJsZSB2YWx1ZSIgfSwKLSAgICAgICAgInRhYmxlLnNl
dCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM4LCAi
cmV0dXJuIjogW10sICAgICAgICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiYW55cmVmIl0sICAg
ICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJzZXQgYSB0YWJsZSB2YWx1ZSIgfSwKKyAgICAgICAgInRhYmxlLmdldCI6
ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM3LCAicmV0
dXJuIjogWyJhbnlyZWYiXSwgICAicGFyYW1ldGVyIjogWyJpMzIiXSwgICAgICAgICAgICAgICAg
ICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0YWJsZV9pbmRleCIsICAgICJ0eXBlIjogInZhcnVp
bnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJnZXQgYSB0YWJsZSB2YWx1ZSIgfSwKKyAgICAgICAgInRhYmxlLnNldCI6ICAg
ICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM4LCAicmV0dXJu
IjogW10sICAgICAgICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiYW55cmVmIl0sICAgICAgICAi
aW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0YWJsZV9pbmRleCIsICAgICJ0eXBlIjogInZhcnVpbnQz
MiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJzZXQgYSB0YWJsZSB2YWx1ZSIgfSwKICAgICAgICAgImNhbGwiOiAgICAgICAgICAg
ICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE2LCAicmV0dXJuIjog
WyJjYWxsIl0sICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAiaW1t
ZWRpYXRlIjogW3sibmFtZSI6ICJmdW5jdGlvbl9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9
XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJjYWxsIGEgZnVuY3Rpb24gYnkgaXRzIGluZGV4IiB9LAotICAgICAgICAiY2FsbF9pbmRp
cmVjdCI6ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTcsICJy
ZXR1cm4iOiBbImNhbGwiXSwgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFy
dWludDMyIn0sIHsibmFtZSI6ICJyZXNlcnZlZCIsICJ0eXBlIjogInZhcnVpbnQxIn1dLCAgImRl
c2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBpbmRpcmVjdCB3aXRoIGFuIGV4cGVjdGVkIHNp
Z25hdHVyZSIgfSwKKyAgICAgICAgImNhbGxfaW5kaXJlY3QiOiAgICAgICB7ICJjYXRlZ29yeSI6
ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE3LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAicGFy
YW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6
ICJ0eXBlX2luZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAidGFibGVf
aW5kZXgiLCJ0eXBlIjogInZhcnVpbnQzMiJ9XSwiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0
aW9uIGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAogICAgICAgICAiaTMy
LmxvYWQ4X3MiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAg
NDQsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAg
ICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUi
OiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9
XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCiAgICAgICAgICJpMzIubG9h
ZDhfdSI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NSwg
InJldHVybiI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAg
ICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2
YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAi
ZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKICAgICAgICAgImkzMi5sb2FkMTZf
cyI6ICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ2LCAicmV0
dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAg
ICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVp
bnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNj
cmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372381</attachid>
            <date>2019-06-18 14:13:08 -0700</date>
            <delta_ts>2019-06-18 15:01:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198760-20190618141308.patch</filename>
            <type>text/plain</type>
            <size>100294</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
N2VlOTVlN2I2NzhhMWY4N2YxZTQ4NzkxNGRhZjdiNGJlZTdmNWM3Li45OWU1ZDQ4ODVmNjUwMzMy
NTM3MzI2OTU2MTlkOTFlYjkyOWUzYjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NiBAQAorMjAxOS0wNi0xOCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gQWRkIHN1cHBvcnQgZm9yIG11
bHRpcGxlIHRhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk4NzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAg
ICAgU3VwcG9ydCBtdWx0aXBsZSB3YXNtIHRhYmxlcy4gV2UgdHVybiB0YWJsZUluZm9ybWF0aW9u
IGludG8gYSB0YWJsZXMgYXJyYXksIGFuZCB1cGRhdGUgYWxsIG9mIHRoZQorICAgICAgICBleGlz
dGluZyB1c2VycyB0byBnaXZlIGEgdGFibGUgaW5kZXguIFRoZSBhcnJheSBvZiBUYWJsZXMgaW4g
V2FzbTo6SW5zdGFuY2UgaXMgaHVuZyBvZmYgdGhlIHRhaWwKKyAgICAgICAgdG8gbWFrZSBpdCBl
YXNpZXIgdG8gdXNlIGZyb20gaml0IGNvZGUuIAorCisgICAgICAgICogd2FzbS9XYXNtQWlySVJH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6QWlySVJH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVH
ZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVTZXQpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KToKKyAg
ICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6
QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJH
ZW5lcmF0b3I6OmFkZFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRv
cjo6YWRkVGFibGVTZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRD
YWxsSW5kaXJlY3QpOgorICAgICAgICAqIHdhc20vV2FzbUV4Y2VwdGlvblR5cGUuaDoKKyAgICAg
ICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RWxlbWVudDo6RWxl
bWVudCk6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbik6CisgICAg
ICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZVVucmVhY2hhYmxl
RXhwcmVzc2lvbik6CisgICAgICAgICogd2FzbS9XYXNtSW5zdGFuY2UuY3BwOgorICAgICAgICAo
SlNDOjpXYXNtOjpJbnN0YW5jZTo6SW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0
YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OmV4dHJhTWVtb3J5
QWxsb2NhdGVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnRhYmxlKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnNldFRhYmxlKToKKyAgICAgICAgKiB3YXNt
L1dhc21JbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6dXBkYXRlQ2Fj
aGVkTWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mR2xvYmFs
cyk6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpvZmZzZXRPZlRhYmxlUHRyKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6SW5zdGFuY2U6OnRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6
SW5zdGFuY2U6OnNldFRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFu
Y2U6Om9mZnNldE9mVGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbU1vZHVsZUlu
Zm9ybWF0aW9uLmg6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZUluZm9ybWF0aW9uOjp0YWJs
ZUNvdW50IGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJbXBvcnQpOgorICAgICAgICAo
SlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZVRhYmxlSGVscGVyKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VUYWJsZSk6CisgICAgICAgIChKU0M6Oldhc206
OlNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCk6CisgICAgICAgICogd2FzbS9XYXNtVGFibGUu
aDoKKyAgICAgICAgKEpTQzo6V2FzbTo6VGFibGU6Om93bmVyIGNvbnN0KToKKyAgICAgICAgKiB3
YXNtL1dhc21WYWxpZGF0ZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRU
YWJsZUdldCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRUYWJsZVNldCk6Cisg
ICAgICAgIChKU0M6Oldhc206OlZhbGlkYXRlOjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAq
IHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseUluc3RhbmNlOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpK
U1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vanMv
SlNXZWJBc3NlbWJseUluc3RhbmNlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1v
ZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjps
aW5rKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKToK
KyAgICAgICAgKiB3YXNtL3dhc20uanNvbjoKKwogMjAxOS0wNi0xOCAgS2VpdGggTWlsbGVyICA8
a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV2Vha1Jl
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5j
cHAKaW5kZXggYWIzMDRhNTVkMzZiMzU4NDIyYjFhMDdkMmE0NGIwMDBkZjUyMmRlNy4uZWZmN2Uz
MjI3YmY5ZGYyNGMyMTYyM2VkZjg5M2Y1YzkzMzhkNzdiMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC0yMzcsOCArMjM3LDgg
QEAgcHVibGljOgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJlZkZ1
bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCiAgICAgLy8gVGFi
bGVzCi0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQoRXhw
cmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKLSAgICBQYXJ0aWFs
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5k
ZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkVGFibGVHZXQodW5zaWduZWQsIEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkVGFibGVTZXQodW5zaWduZWQsIEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lv
blR5cGUmIHZhbHVlKTsKIAogICAgIC8vIExvY2FscwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0KTsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxscwogICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2FsbGVlSW5k
ZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpOwotICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+
JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3Qg
U2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVW5yZWFj
aGFibGUoKTsKIAogICAgIFBhcnRpYWxSZXN1bHQgYWRkU2hpZnQoVHlwZSwgQjM6OkFpcjo6T3Bj
b2RlLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSwgRXhwcmVzc2lvblR5cGUgc2hpZnQsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpOwpAQCAtNjI2LDYgKzYyNiw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAg
ICAgdWludDMyX3QgbV9tYXhOdW1KU0NhbGxBcmd1bWVudHMgeyAwIH07CisgICAgdW5zaWduZWQg
bV9udW1JbXBvcnRGdW5jdGlvbnM7CiAKICAgICBCMzo6UGF0Y2hwb2ludFNwZWNpYWwqIG1fcGF0
Y2hwb2ludFNwZWNpYWwgeyBudWxscHRyIH07CiB9OwpAQCAtNjgxLDYgKzY4Miw3IEBAIEFpcklS
R2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcihjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywg
QjM6OlByb2NlZHVyZSYgcHJvCiAgICAgLCBtX3Byb2MocHJvY2VkdXJlKQogICAgICwgbV9jb2Rl
KG1fcHJvYy5jb2RlKCkpCiAgICAgLCBtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzKHVubGlua2Vk
V2FzbVRvV2FzbUNhbGxzKQorICAgICwgbV9udW1JbXBvcnRGdW5jdGlvbnMoaW5mby5pbXBvcnRG
dW5jdGlvbkNvdW50KCkpCiB7CiAgICAgbV9jdXJyZW50QmxvY2sgPSBtX2NvZGUuYWRkQmxvY2so
KTsKICAgICBtX3Jvb3RCbG9jayA9IG1fY3VycmVudEJsb2NrOwpAQCAtOTY4LDE0ICs5NzAsMTQg
QEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyh1aW50MzJfdCBpbmRleCwgRXhwcmVz
c2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGkKICAgICByZXR1cm4geyB9OwogfQogCi1hdXRvIEFp
cklSR2VuZXJhdG9yOjphZGRUYWJsZUdldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFk
ZFRhYmxlR2V0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIC8vIEZJWE1FOiBF
bWl0IHRoaXMgaW5saW5lIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4NTA2Pi4KICAgICBBU1NFUlQoaW5kZXgudG1wKCkpOwogICAgIEFTU0VSVChpbmRleC50eXBl
KCkgPT0gVHlwZTo6STMyKTsKICAgICByZXN1bHQgPSB0bXBGb3JUeXBlKFR5cGU6OkFueXJlZik7
CiAKLSAgICBlbWl0Q0NhbGwoJmdldFdhc21UYWJsZUVsZW1lbnQsIHJlc3VsdCwgaW5zdGFuY2VW
YWx1ZSgpLCBpbmRleCk7CisgICAgZW1pdENDYWxsKCZnZXRXYXNtVGFibGVFbGVtZW50LCByZXN1
bHQsIGluc3RhbmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlwZTo6STMyLCB0YWJsZUluZGV4KSwg
aW5kZXgpOwogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICByZXR1cm4gSW5zdChCcmFuY2hU
ZXN0MzIsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIHJlc3Vs
dCwgcmVzdWx0KTsKICAgICB9LCBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewpAQCAtOTg1LDcgKzk4Nyw3IEBAIGF1dG8gQWlySVJH
ZW5lcmF0b3I6OmFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5
cGUmIHJlc3VsdCkKICAgICByZXR1cm4geyB9OwogfQogCi1hdXRvIEFpcklSR2VuZXJhdG9yOjph
ZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkg
LT4gUGFydGlhbFJlc3VsdAorYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVTZXQodW5zaWdu
ZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgdmFs
dWUpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlubGluZSA8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCiAgICAgQVNT
RVJUKGluZGV4LnRtcCgpKTsKQEAgLTk5Myw3ICs5OTUsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9y
OjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1
ZSkgLQogICAgIEFTU0VSVCh2YWx1ZS50bXAoKSk7CiAKICAgICBhdXRvIHNob3VsZFRocm93ID0g
ZzMyKCk7Ci0gICAgZW1pdENDYWxsKCZzZXRXYXNtVGFibGVFbGVtZW50LCBzaG91bGRUaHJvdywg
aW5zdGFuY2VWYWx1ZSgpLCBpbmRleCwgdmFsdWUpOworICAgIGVtaXRDQ2FsbCgmc2V0V2FzbVRh
YmxlRWxlbWVudCwgc2hvdWxkVGhyb3csIGluc3RhbmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlw
ZTo6STMyLCB0YWJsZUluZGV4KSwgaW5kZXgsIHZhbHVlKTsKIAogICAgIGVtaXRDaGVjayhbJl0g
ewogICAgICAgICByZXR1cm4gSW5zdChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6cmVzQ29u
ZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIHNob3VsZFRocm93LCBzaG91bGRUaHJvdyk7CkBAIC0x
ODkzLDExICsxODk1LDEyIEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGwodWludDMyX3Qg
ZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsCiAgICAgcmV0dXJuIHsg
fTsKIH0KIAotYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNpZ25h
dHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CithdXRvIEFpcklSR2VuZXJhdG9yOjphZGRD
YWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1
cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQp
IC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVJbmRleCA9IGFy
Z3MudGFrZUxhc3QoKTsKICAgICBBU1NFUlQoc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSA9PSBh
cmdzLnNpemUoKSk7Ci0gICAgQVNTRVJUKG1faW5mby50YWJsZUluZm9ybWF0aW9uLnR5cGUoKSA9
PSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmKTsKKyAgICBBU1NFUlQobV9pbmZvLnRhYmxlQ291
bnQoKSA+IHRhYmxlSW5kZXgpOworICAgIEFTU0VSVChtX2luZm8udGFibGVzW3RhYmxlSW5kZXhd
LnR5cGUoKSA9PSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmKTsKIAogICAgIG1fbWFrZXNDYWxs
cyA9IHRydWU7CiAgICAgLy8gTm90ZTogY2FsbCBpbmRpcmVjdCBjYW4gY2FsbCBlaXRoZXIgV2Vi
QXNzZW1ibHlGdW5jdGlvbiBvciBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi4gQmVjYXVzZQpA
QCAtMTkxMiwxMiArMTkxNSwxNiBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJl
Y3QoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaQogICAgIEV4cHJl
c3Npb25UeXBlIGluc3RhbmNlc0J1ZmZlciA9IGc2NCgpOwogICAgIEV4cHJlc3Npb25UeXBlIGNh
bGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGggPSBnNjQoKTsKICAgICB7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEluc3RhbmNlOjpvZmZzZXRPZlRhYmxlKCks
IEIzOjpXaWR0aDY0KSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJG
b3JtKEZ1bmNSZWZUYWJsZTo6b2Zmc2V0T2ZGdW5jdGlvbnMoKSwgQjM6OldpZHRoNjQpKTsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZvcm0oRnVuY1JlZlRhYmxlOjpv
ZmZzZXRPZkluc3RhbmNlcygpLCBCMzo6V2lkdGg2NCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VS
VChBcmc6OmlzVmFsaWRBZGRyRm9ybShGdW5jUmVmVGFibGU6Om9mZnNldE9mTGVuZ3RoKCksIEIz
OjpXaWR0aDY0KSk7CiAKLSAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihpbnN0YW5jZVZh
bHVlKCksIEluc3RhbmNlOjpvZmZzZXRPZlRhYmxlKCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVy
TGVuZ3RoKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFBcmc6OmlzVmFsaWRBZGRyRm9ybShJbnN0
YW5jZTo6b2Zmc2V0T2ZUYWJsZVB0cihtX251bUltcG9ydEZ1bmN0aW9ucywgdGFibGVJbmRleCks
IEIzOjpXaWR0aDY0KSkpIHsKKyAgICAgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmJpZ0ltbShJ
bnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZVB0cihtX251bUltcG9ydEZ1bmN0aW9ucywgdGFibGVJbmRl
eCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgICAgIGFwcGVuZChB
ZGQ2NCwgaW5zdGFuY2VWYWx1ZSgpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKTsKKyAg
ICAgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoY2FsbGFibGVGdW5jdGlvbkJ1ZmZlckxl
bmd0aCksIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGgpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoaW5zdGFuY2VWYWx1ZSgpLCBJbnN0YW5j
ZTo6b2Zmc2V0T2ZUYWJsZVB0cihtX251bUltcG9ydEZ1bmN0aW9ucywgdGFibGVJbmRleCkpLCBj
YWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKTsKICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6
YWRkcihjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoLCBGdW5jUmVmVGFibGU6Om9mZnNldE9m
RnVuY3Rpb25zKCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyKTsKICAgICAgICAgYXBwZW5kKE1v
dmUsIEFyZzo6YWRkcihjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoLCBGdW5jUmVmVGFibGU6
Om9mZnNldE9mSW5zdGFuY2VzKCkpLCBpbnN0YW5jZXNCdWZmZXIpOwogICAgICAgICBhcHBlbmQo
TW92ZTMyLCBBcmc6OmFkZHIoY2FsbGFibGVGdW5jdGlvbkJ1ZmZlckxlbmd0aCwgVGFibGU6Om9m
ZnNldE9mTGVuZ3RoKCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCA3NzYw
OTc0ODQzZWNjZTJmMWU5YjE3MDU5MjVlOTg0YWFjY2JhMjkzLi4xZWIyNDY1MmFlNGVkNmIzMjkw
NzE5ZjdlZDUzMzY5MmQ1MTFkMmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0xOTAsOCArMTkwLDggQEAgcHVibGljOgogICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJlZkZ1bmModWludDMyX3QgaW5k
ZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCiAgICAgLy8gVGFibGVzCi0gICAgUGFydGlh
bFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQoRXhwcmVzc2lvblR5cGUmIGlu
ZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5V
U0VEX1JFVFVSTiBhZGRUYWJsZVNldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25U
eXBlJiB2YWx1ZSk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFi
bGVHZXQodW5zaWduZWQsIEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVTZXQo
dW5zaWduZWQsIEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKTsK
IAogICAgIC8vIExvY2FscwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdl
dExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAgLTIzMCw3
ICsyMzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxscwogICAgIFBhcnRpYWxSZXN1bHQgV0FS
Tl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2FsbGVlSW5kZXgsIGNvbnN0IFNpZ25h
dHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1
bHQpOwotICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVj
dChjb25zdCBTaWduYXR1cmUmLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNz
aW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgVmVj
dG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAg
UGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVW5yZWFjaGFibGUoKTsKIAogICAg
IHZvaWQgZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbEVudHJ5PiYgY29udHJvbFN0YWNrLCBjb25z
dCBFeHByZXNzaW9uTGlzdCogZXhwcmVzc2lvblN0YWNrKTsKQEAgLTI5Miw2ICsyOTIsNyBAQCBw
cml2YXRlOgogICAgIH0KIAogICAgIHVpbnQzMl90IG1fbWF4TnVtSlNDYWxsQXJndW1lbnRzIHsg
MCB9OworICAgIHVuc2lnbmVkIG1fbnVtSW1wb3J0RnVuY3Rpb25zOwogfTsKIAogLy8gTWVtb3J5
IGFjY2Vzc2VzIGluIFdlYkFzc2VtYmx5IGhhdmUgdW5zaWduZWQgMzItYml0IG9mZnNldHMsIHdo
ZXJlYXMgdGhleSBoYXZlIHNpZ25lZCAzMi1iaXQgb2Zmc2V0cyBpbiBCMy4KQEAgLTM0Myw2ICsz
NDQsNyBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKGNvbnN0IE1vZHVsZUluZm9ybWF0
aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHByb2NlZHVyZQogICAgICwgbV9wcm9jKHByb2NlZHVyZSkK
ICAgICAsIG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHModW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMp
CiAgICAgLCBtX2NvbnN0YW50SW5zZXJ0aW9uVmFsdWVzKG1fcHJvYykKKyAgICAsIG1fbnVtSW1w
b3J0RnVuY3Rpb25zKGluZm8uaW1wb3J0RnVuY3Rpb25Db3VudCgpKQogewogICAgIG1fY3VycmVu
dEJsb2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7CiAKQEAgLTU2NiwxMiArNTY4LDEyIEBAIGF1dG8g
QjNJUkdlbmVyYXRvcjo6YWRkUmVmSXNOdWxsKEV4cHJlc3Npb25UeXBlJiB2YWx1ZSwgRXhwcmVz
c2lvblR5cGUmIHJlc3VsdCkKICAgICByZXR1cm4geyB9OwogfQogCi1hdXRvIEIzSVJHZW5lcmF0
b3I6OmFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZUdldCh1
bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlu
bGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCiAg
ICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2Ms
IHRvQjNUeXBlKEFueXJlZiksIG9yaWdpbigpLAogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2
b2lkKj4oJmdldFdhc21UYWJsZUVsZW1lbnQsIEIzQ0NhbGxQdHJUYWcpKSwKLSAgICAgICAgaW5z
dGFuY2VWYWx1ZSgpLCBpbmRleCk7CisgICAgICAgIGluc3RhbmNlVmFsdWUoKSwgbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhYmxlSW5k
ZXgpLCBpbmRleCk7CiAKICAgICB7CiAgICAgICAgIENoZWNrVmFsdWUqIGNoZWNrID0gbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBvcmlnaW4oKSwK
QEAgLTU4NSwxMiArNTg3LDEyIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGFibGVHZXQoRXhw
cmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtCiAgICAgcmV0dXJu
IHsgfTsKIH0KIAotYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZVNldChFeHByZXNzaW9uVHlw
ZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBC
M0lSR2VuZXJhdG9yOjphZGRUYWJsZVNldCh1bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9u
VHlwZSYgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiB2YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAogewog
ICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KICAgICBhdXRvIHNob3VsZFRocm93ID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEIzOjpJbnQzMiwgb3JpZ2luKCks
CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9j
LCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPigmc2V0V2FzbVRhYmxlRWxlbWVudCwg
QjNDQ2FsbFB0clRhZykpLAotICAgICAgICBpbnN0YW5jZVZhbHVlKCksIGluZGV4LCB2YWx1ZSk7
CisgICAgICAgIGluc3RhbmNlVmFsdWUoKSwgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhYmxlSW5kZXgpLCBpbmRleCwgdmFsdWUpOwog
CiAgICAgewogICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCksCkBAIC0xMjk4LDcgKzEz
MDAsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRl
eCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0
byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1
cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQp
IC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KHVu
c2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhw
cmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVz
dWx0CiB7CiAgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlSW5kZXggPSBhcmdzLnRha2VMYXN0KCk7
CiAgICAgQVNTRVJUKHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgPT0gYXJncy5zaXplKCkpOwpA
QCAtMTMxNSw3ICsxMzE3LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3Qo
Y29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW8KICAgICBFeHByZXNz
aW9uVHlwZSBtYXNrOwogICAgIHsKICAgICAgICAgRXhwcmVzc2lvblR5cGUgdGFibGUgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJU
eXBlKCksIG9yaWdpbigpLAotICAgICAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBzYWZlQ2FzdDxp
bnQzMl90PihJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZSgpKSk7CisgICAgICAgICAgICBpbnN0YW5j
ZVZhbHVlKCksIHNhZmVDYXN0PGludDMyX3Q+KEluc3RhbmNlOjpvZmZzZXRPZlRhYmxlUHRyKG1f
bnVtSW1wb3J0RnVuY3Rpb25zLCB0YWJsZUluZGV4KSkpOwogICAgICAgICBjYWxsYWJsZUZ1bmN0
aW9uQnVmZmVyID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9j
LCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwKICAgICAgICAgICAgIHRhYmxlLCBzYWZl
Q2FzdDxpbnQzMl90PihGdW5jUmVmVGFibGU6Om9mZnNldE9mRnVuY3Rpb25zKCkpKTsKICAgICAg
ICAgaW5zdGFuY2VzQnVmZmVyID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21Gb3JtYXQuaAppbmRleCA3YzAzNDQxN2ExM2YyNjFiODQ3NWM4ZWRjNDI3
NGZhODA1MThiOWViLi40ZGIyOGE0ZTJiNmU5ZDU1MjI4MTY4OGZhOWZhZGRmODkzZTVmYjljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCkBAIC0yMTMsMTAgKzIxMywx
MiBAQCBzdHJ1Y3QgU2VnbWVudCB7CiB9OwogCiBzdHJ1Y3QgRWxlbWVudCB7Ci0gICAgRWxlbWVu
dChJMzJJbml0RXhwciBvZmZzZXQpCi0gICAgICAgIDogb2Zmc2V0KG9mZnNldCkKKyAgICBFbGVt
ZW50KHVpbnQzMl90IHRhYmxlSW5kZXgsIEkzMkluaXRFeHByIG9mZnNldCkKKyAgICAgICAgOiB0
YWJsZUluZGV4KHRhYmxlSW5kZXgpCisgICAgICAgICwgb2Zmc2V0KG9mZnNldCkKICAgICB7IH0K
IAorICAgIHVpbnQzMl90IHRhYmxlSW5kZXg7CiAgICAgSTMySW5pdEV4cHIgb2Zmc2V0OwogICAg
IFZlY3Rvcjx1aW50MzJfdD4gZnVuY3Rpb25JbmRpY2VzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggNTllZWUyNjIyZGUyNjg1
OTMyYzUxYzQyZmJlOGMxOTkzZjg0ZTk1Zi4uNzI1MDU0MjhhOWVlNDU2MDU5N2VlNzFjZDZlM2I0
ZWZiOTUwMjAxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1
bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0
aW9uUGFyc2VyLmgKQEAgLTI4MywxOSArMjgzLDIzIEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29u
dGV4dD46OnBhcnNlRXhwcmVzc2lvbigpIC0+IFBhcnRpYWxSZXN1bHQKIAogICAgIGNhc2UgVGFi
bGVHZXQ6IHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNz
ZW1ibHlSZWZlcmVuY2VzKCksICJyZWZlcmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAg
ICB1bnNpZ25lZCB0YWJsZUluZGV4OworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJz
ZVZhclVJbnQzMih0YWJsZUluZGV4KSwgImNhbid0IHBhcnNlIHRhYmxlIGluZGV4Iik7CiAgICAg
ICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdCwgaW5kZXg7CiAgICAgICAgIFdBU01fVFJZX1BPUF9F
WFBSRVNTSU9OX1NUQUNLX0lOVE8oaW5kZXgsICJ0YWJsZS5nZXQiKTsKLSAgICAgICAgV0FTTV9U
UllfQUREX1RPX0NPTlRFWFQoYWRkVGFibGVHZXQoaW5kZXgsIHJlc3VsdCkpOworICAgICAgICBX
QVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRUYWJsZUdldCh0YWJsZUluZGV4LCBpbmRleCwgcmVz
dWx0KSk7CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFwcGVuZChyZXN1bHQpOwogICAgICAg
ICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIGNhc2UgVGFibGVTZXQ6IHsKICAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzKCksICJy
ZWZlcmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAgICB1bnNpZ25lZCB0YWJsZUluZGV4
OworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMih0YWJsZUluZGV4
KSwgImNhbid0IHBhcnNlIHRhYmxlIGluZGV4Iik7CiAgICAgICAgIEV4cHJlc3Npb25UeXBlIHZh
bCwgaW5kZXg7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8odmFs
LCAidGFibGUuc2V0Iik7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lO
VE8oaW5kZXgsICJ0YWJsZS5zZXQiKTsKLSAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQo
YWRkVGFibGVTZXQoaW5kZXgsIHZhbCkpOworICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVY
VChhZGRUYWJsZVNldCh0YWJsZUluZGV4LCBpbmRleCwgdmFsKSk7CiAgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQogCkBAIC0zOTYsMTMgKzQwMCwxMyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENv
bnRleHQ+OjpwYXJzZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAKICAgICBjYXNlIENh
bGxJbmRpcmVjdDogewogICAgICAgICB1aW50MzJfdCBzaWduYXR1cmVJbmRleDsKLSAgICAgICAg
dWludDhfdCByZXNlcnZlZDsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighbV9pbmZvLnRh
YmxlSW5mb3JtYXRpb24sICJjYWxsX2luZGlyZWN0IGlzIG9ubHkgdmFsaWQgd2hlbiBhIHRhYmxl
IGlzIGRlZmluZWQgb3IgaW1wb3J0ZWQiKTsKKyAgICAgICAgdWludDMyX3QgdGFibGVJbmRleDsK
KyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighbV9pbmZvLnRhYmxlQ291bnQoKSwgImNhbGxf
aW5kaXJlY3QgaXMgb25seSB2YWxpZCB3aGVuIGEgdGFibGUgaXMgZGVmaW5lZCBvciBpbXBvcnRl
ZCIpOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihzaWduYXR1
cmVJbmRleCksICJjYW4ndCBnZXQgY2FsbF9pbmRpcmVjdCdzIHNpZ25hdHVyZSBpbmRleCIpOwot
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQxKHJlc2VydmVkKSwgImNh
bid0IGdldCBjYWxsX2luZGlyZWN0J3MgcmVzZXJ2ZWQgYnl0ZSIpOwotICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKHJlc2VydmVkLCAiY2FsbF9pbmRpcmVjdCdzICdyZXNlcnZlZCcgdmFydWlu
dDEgbXVzdCBiZSAweDAiKTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJV
SW50MzIodGFibGVJbmRleCksICJjYW4ndCBnZXQgY2FsbF9pbmRpcmVjdCdzIHRhYmxlIGluZGV4
Iik7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodGFibGVJbmRleCA+PSBtX2luZm8udGFi
bGVDb3VudCgpLCAiY2FsbF9pbmRpcmVjdCdzIHRhYmxlIGluZGV4ICIsIHRhYmxlSW5kZXgsICIg
aW52YWxpZCwgbGltaXQgaXMgIiwgbV9pbmZvLnRhYmxlQ291bnQoKSk7CiAgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYobV9pbmZvLnVzZWRTaWduYXR1cmVzLnNpemUoKSA8PSBzaWduYXR1cmVJ
bmRleCwgImNhbGxfaW5kaXJlY3QncyBzaWduYXR1cmUgaW5kZXggIiwgc2lnbmF0dXJlSW5kZXgs
ICIgZXhjZWVkcyBrbm93biBzaWduYXR1cmVzICIsIG1faW5mby51c2VkU2lnbmF0dXJlcy5zaXpl
KCkpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1faW5mby50YWJsZUluZm9ybWF0aW9u
LnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCAiY2FsbF9pbmRpcmVjdCBpcyBv
bmx5IHZhbGlkIHdoZW4gYSB0YWJsZSBoYXMgdHlwZSBhbnlmdW5jIik7CisgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYobV9pbmZvLnRhYmxlc1t0YWJsZUluZGV4XS50eXBlKCkgIT0gVGFibGVF
bGVtZW50VHlwZTo6RnVuY3JlZiwgImNhbGxfaW5kaXJlY3QgaXMgb25seSB2YWxpZCB3aGVuIGEg
dGFibGUgaGFzIHR5cGUgYW55ZnVuYyIpOwogCiAgICAgICAgIGNvbnN0IFNpZ25hdHVyZSYgY2Fs
bGVlU2lnbmF0dXJlID0gbV9pbmZvLnVzZWRTaWduYXR1cmVzW3NpZ25hdHVyZUluZGV4XS5nZXQo
KTsKICAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBjYWxsZWVTaWduYXR1cmUuYXJndW1l
bnRDb3VudCgpICsgMTsgLy8gQWRkIHRoZSBjYWxsZWUncyBpbmRleC4KQEAgLTQxNiw3ICs0MjAs
NyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24oKSAtPiBQ
YXJ0aWFsUmVzdWx0CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLnNocmluayhmaXJzdEFyZ3Vt
ZW50SW5kZXgpOwogCiAgICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdCA9IENvbnRleHQ6OmVt
cHR5RXhwcmVzc2lvbigpOwotICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRDYWxs
SW5kaXJlY3QoY2FsbGVlU2lnbmF0dXJlLCBhcmdzLCByZXN1bHQpKTsKKyAgICAgICAgV0FTTV9U
UllfQUREX1RPX0NPTlRFWFQoYWRkQ2FsbEluZGlyZWN0KHRhYmxlSW5kZXgsIGNhbGxlZVNpZ25h
dHVyZSwgYXJncywgcmVzdWx0KSk7CiAKICAgICAgICAgaWYgKHJlc3VsdCAhPSBDb250ZXh0Ojpl
bXB0eUV4cHJlc3Npb24oKSkKICAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFwcGVuZChy
ZXN1bHQpOwpAQCAtNjMxLDkgKzYzNSw5IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46
OnBhcnNlVW5yZWFjaGFibGVFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogCiAgICAgY2Fz
ZSBDYWxsSW5kaXJlY3Q6IHsKICAgICAgICAgdWludDMyX3QgdW51c2VkOwotICAgICAgICB1aW50
OF90IHVudXNlZDI7CisgICAgICAgIHVpbnQzMl90IHVudXNlZDI7CiAgICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHVudXNlZCksICJjYW4ndCBnZXQgY2FsbF9pbmRp
cmVjdCdzIHNpZ25hdHVyZSBpbmRleCBpbiB1bnJlYWNoYWJsZSBjb250ZXh0Iik7Ci0gICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDEodW51c2VkMiksICJjYW4ndCBnZXQg
Y2FsbF9pbmRpcmVjdCdzIHJlc2VydmVkIGJ5dGUgaW4gdW5yZWFjaGFibGUgY29udGV4dCIpOwor
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMih1bnVzZWQyKSwgImNh
bid0IGdldCBjYWxsX2luZGlyZWN0J3MgcmVzZXJ2ZWQgYnl0ZSBpbiB1bnJlYWNoYWJsZSBjb250
ZXh0Iik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC02ODUsNyArNjg5LDExIEBA
IGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlVW5yZWFjaGFibGVFeHByZXNzaW9u
KCkgLT4gUGFydGlhbFJlc3VsdAogICAgIH0KIAogICAgIGNhc2UgVGFibGVHZXQ6Ci0gICAgY2Fz
ZSBUYWJsZVNldDoKKyAgICBjYXNlIFRhYmxlU2V0OiB7CisgICAgICAgIHVuc2lnbmVkIHRhYmxl
SW5kZXg7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHRhYmxl
SW5kZXgpLCAiY2FuJ3QgcGFyc2UgdGFibGUgaW5kZXgiKTsKKyAgICAgICAgRkFMTFRIUk9VR0g7
CisgICAgfQogICAgIGNhc2UgUmVmSXNOdWxsOgogICAgIGNhc2UgUmVmTnVsbDogewogICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMo
KSwgInJlZmVyZW5jZXMgYXJlIG5vdCBlbmFibGVkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUluc3RhbmNlLmNwcAppbmRleCA1MmJmMGYyYjMzMTBkOGJhZGIwMmQ0Mzk5NTAw
MWQ0M2YxYmYyYzgwLi5jNDE1NDliZTUxNTg0ODgwZmViMjYyZTllZTcyYTkxZDQ3ZTNiNDc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5jcHAKQEAgLTYxLDE4
ICs2MSwxOSBAQCBJbnN0YW5jZTo6SW5zdGFuY2UoQ29udGV4dCogY29udGV4dCwgUmVmPE1vZHVs
ZT4mJiBtb2R1bGUsIEVudHJ5RnJhbWUqKiBwb2ludGVyVAogICAgICAgICBpZiAoaXNTdWJ0eXBl
KG1fbW9kdWxlLmdldCgpLm1vZHVsZUluZm9ybWF0aW9uKCkuZ2xvYmFsc1tpXS50eXBlLCBBbnly
ZWYpKQogICAgICAgICAgICAgbV9nbG9iYWxzVG9NYXJrLnNldChpKTsKICAgICB9CisgICAgbWVt
c2V0KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZlRhYmxlUHRyKG1fbnVtSW1w
b3J0RnVuY3Rpb25zLCAwKSwgMCwgbV9tb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkudGFibGVD
b3VudCgpICogc2l6ZW9mKFRhYmxlKikpOwogfQogCiBSZWY8SW5zdGFuY2U+IEluc3RhbmNlOjpj
cmVhdGUoQ29udGV4dCogY29udGV4dCwgUmVmPE1vZHVsZT4mJiBtb2R1bGUsIEVudHJ5RnJhbWUq
KiBwb2ludGVyVG9Ub3BFbnRyeUZyYW1lLCB2b2lkKiogcG9pbnRlclRvQWN0dWFsU3RhY2tMaW1p
dCwgU3RvcmVUb3BDYWxsRnJhbWVDYWxsYmFjayYmIHN0b3JlVG9wQ2FsbEZyYW1lKQogewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKGFsbG9jYXRpb25TaXpl
KG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5pbXBvcnRGdW5jdGlvbkNvdW50KCkpKSkgSW5z
dGFuY2UoY29udGV4dCwgV1RGTW92ZShtb2R1bGUpLCBwb2ludGVyVG9Ub3BFbnRyeUZyYW1lLCBw
b2ludGVyVG9BY3R1YWxTdGFja0xpbWl0LCBXVEZNb3ZlKHN0b3JlVG9wQ2FsbEZyYW1lKSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKGFsbG9jYXRpb25T
aXplKG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5pbXBvcnRGdW5jdGlvbkNvdW50KCksIG1v
ZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50KCkpKSkgSW5zdGFuY2UoY29udGV4
dCwgV1RGTW92ZShtb2R1bGUpLCBwb2ludGVyVG9Ub3BFbnRyeUZyYW1lLCBwb2ludGVyVG9BY3R1
YWxTdGFja0xpbWl0LCBXVEZNb3ZlKHN0b3JlVG9wQ2FsbEZyYW1lKSkpOwogfQogCiBJbnN0YW5j
ZTo6fkluc3RhbmNlKCkgeyB9CiAKIHNpemVfdCBJbnN0YW5jZTo6ZXh0cmFNZW1vcnlBbGxvY2F0
ZWQoKSBjb25zdAogewotICAgIHJldHVybiBnbG9iYWxNZW1vcnlCeXRlU2l6ZShtX21vZHVsZS5n
ZXQoKSkgKyBhbGxvY2F0aW9uU2l6ZShtX251bUltcG9ydEZ1bmN0aW9ucyk7CisgICAgcmV0dXJu
IGdsb2JhbE1lbW9yeUJ5dGVTaXplKG1fbW9kdWxlLmdldCgpKSArIGFsbG9jYXRpb25TaXplKG1f
bnVtSW1wb3J0RnVuY3Rpb25zLCBtX21vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNv
dW50KCkpOwogfQogCiB2b2lkIEluc3RhbmNlOjpzZXRHbG9iYWwodW5zaWduZWQgaSwgSlNWYWx1
ZSB2YWx1ZSkKQEAgLTk5LDQyICsxMDAsNTcgQEAgdm9pZCBJbnN0YW5jZTo6c2V0RnVuY3Rpb25X
cmFwcGVyKHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiAgICAgQVNTRVJUKGdldEZ1bmN0aW9u
V3JhcHBlcihpKSA9PSB2YWx1ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGdldFdhc21UYWJsZUVs
ZW1lbnQoSW5zdGFuY2UqIGluc3RhbmNlLCBpbnQzMl90IHNpZ25lZEluZGV4KQorVGFibGUqIElu
c3RhbmNlOjp0YWJsZSh1bnNpZ25lZCBpKQogeworICAgIFJFTEVBU0VfQVNTRVJUKGkgPCBtX21v
ZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50KCkpOworICAgIHJldHVybiAqYml0
d2lzZV9jYXN0PFRhYmxlKio+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZlRh
YmxlUHRyKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCBpKSk7Cit9CisKK3ZvaWQgSW5zdGFuY2U6OnNl
dFRhYmxlKHVuc2lnbmVkIGksIFJlZjxUYWJsZT4mJiB0YWJsZSkKK3sKKyAgICBSRUxFQVNFX0FT
U0VSVChpIDwgbV9tb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkudGFibGVDb3VudCgpKTsKKyAg
ICBBU1NFUlQoIXRoaXMtPnRhYmxlKGkpKTsKKyAgICAqYml0d2lzZV9jYXN0PFRhYmxlKio+KGJp
dHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZlRhYmxlUHRyKG1fbnVtSW1wb3J0RnVu
Y3Rpb25zLCBpKSkgPSAmdGFibGUubGVha1JlZigpOworfQorCitFbmNvZGVkSlNWYWx1ZSBnZXRX
YXNtVGFibGVFbGVtZW50KEluc3RhbmNlKiBpbnN0YW5jZSwgdW5zaWduZWQgdGFibGVJbmRleCwg
aW50MzJfdCBzaWduZWRJbmRleCkKK3sKKyAgICBBU1NFUlQodGFibGVJbmRleCA8IGluc3RhbmNl
LT5tb2R1bGUoKS5tb2R1bGVJbmZvcm1hdGlvbigpLnRhYmxlQ291bnQoKSk7CiAgICAgaWYgKHNp
Z25lZEluZGV4IDwgMCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICB1aW50MzJfdCBpbmRleCA9
IHNpZ25lZEluZGV4OwotICAgIGlmIChpbmRleCA+PSBpbnN0YW5jZS0+dGFibGUoKS0+bGVuZ3Ro
KCkpCisgICAgaWYgKGluZGV4ID49IGluc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+bGVuZ3Ro
KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShpbnN0
YW5jZS0+dGFibGUoKS0+Z2V0KGluZGV4KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShp
bnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPmdldChpbmRleCkpOwogfQogCi1ib29sIHNldFdh
c21UYWJsZUVsZW1lbnQoSW5zdGFuY2UqIGluc3RhbmNlLCBpbnQzMl90IHNpZ25lZEluZGV4LCBF
bmNvZGVkSlNWYWx1ZSBlbmNWYWx1ZSkKK2Jvb2wgc2V0V2FzbVRhYmxlRWxlbWVudChJbnN0YW5j
ZSogaW5zdGFuY2UsIHVuc2lnbmVkIHRhYmxlSW5kZXgsIGludDMyX3Qgc2lnbmVkSW5kZXgsIEVu
Y29kZWRKU1ZhbHVlIGVuY1ZhbHVlKQogeworICAgIEFTU0VSVCh0YWJsZUluZGV4IDwgaW5zdGFu
Y2UtPm1vZHVsZSgpLm1vZHVsZUluZm9ybWF0aW9uKCkudGFibGVDb3VudCgpKTsKICAgICBpZiAo
c2lnbmVkSW5kZXggPCAwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB1aW50MzJfdCBp
bmRleCA9IHNpZ25lZEluZGV4OwotICAgIGlmIChpbmRleCA+PSBpbnN0YW5jZS0+dGFibGUoKS0+
bGVuZ3RoKCkpCisgICAgaWYgKGluZGV4ID49IGluc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+
bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jVmFsdWUpOwotICAgIGlmIChpbnN0YW5jZS0+dGFibGUoKS0+dHlw
ZSgpID09IFdhc206OlRhYmxlRWxlbWVudFR5cGU6OkFueXJlZikKLSAgICAgICAgaW5zdGFuY2Ut
PnRhYmxlKCktPnNldChpbmRleCwgdmFsdWUpOwotICAgIGVsc2UgaWYgKGluc3RhbmNlLT50YWJs
ZSgpLT50eXBlKCkgPT0gV2FzbTo6VGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZikgeworICAgIGlm
IChpbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPnR5cGUoKSA9PSBXYXNtOjpUYWJsZUVsZW1l
bnRUeXBlOjpBbnlyZWYpCisgICAgICAgIGluc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+c2V0
KGluZGV4LCB2YWx1ZSk7CisgICAgZWxzZSBpZiAoaW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgp
LT50eXBlKCkgPT0gV2FzbTo6VGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZikgewogICAgICAgICBX
ZWJBc3NlbWJseUZ1bmN0aW9uKiB3YXNtRnVuY3Rpb247CiAgICAgICAgIFdlYkFzc2VtYmx5V3Jh
cHBlckZ1bmN0aW9uKiB3YXNtV3JhcHBlckZ1bmN0aW9uOwogCiAgICAgICAgIGlmIChpc1dlYkFz
c2VtYmx5SG9zdEZ1bmN0aW9uKCppbnN0YW5jZS0+b3duZXI8SlNPYmplY3Q+KCktPnZtKCksIHZh
bHVlLCB3YXNtRnVuY3Rpb24sIHdhc21XcmFwcGVyRnVuY3Rpb24pKSB7CiAgICAgICAgICAgICBB
U1NFUlQoISF3YXNtRnVuY3Rpb24gfHwgISF3YXNtV3JhcHBlckZ1bmN0aW9uKTsKICAgICAgICAg
ICAgIGlmICh3YXNtRnVuY3Rpb24pCi0gICAgICAgICAgICAgICAgaW5zdGFuY2UtPnRhYmxlKCkt
PmFzRnVuY3JlZlRhYmxlKCktPnNldEZ1bmN0aW9uKGluZGV4LCBqc0Nhc3Q8SlNPYmplY3QqPih2
YWx1ZSksIHdhc21GdW5jdGlvbi0+aW1wb3J0YWJsZUZ1bmN0aW9uKCksICZ3YXNtRnVuY3Rpb24t
Pmluc3RhbmNlKCktPmluc3RhbmNlKCkpOworICAgICAgICAgICAgICAgIGluc3RhbmNlLT50YWJs
ZSh0YWJsZUluZGV4KS0+YXNGdW5jcmVmVGFibGUoKS0+c2V0RnVuY3Rpb24oaW5kZXgsIGpzQ2Fz
dDxKU09iamVjdCo+KHZhbHVlKSwgd2FzbUZ1bmN0aW9uLT5pbXBvcnRhYmxlRnVuY3Rpb24oKSwg
Jndhc21GdW5jdGlvbi0+aW5zdGFuY2UoKS0+aW5zdGFuY2UoKSk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgaW5zdGFuY2UtPnRhYmxlKCktPmFzRnVuY3JlZlRhYmxlKCktPnNl
dEZ1bmN0aW9uKGluZGV4LCBqc0Nhc3Q8SlNPYmplY3QqPih2YWx1ZSksIHdhc21XcmFwcGVyRnVu
Y3Rpb24tPmltcG9ydGFibGVGdW5jdGlvbigpLCAmd2FzbVdyYXBwZXJGdW5jdGlvbi0+aW5zdGFu
Y2UoKS0+aW5zdGFuY2UoKSk7CisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPnRhYmxlKHRhYmxl
SW5kZXgpLT5hc0Z1bmNyZWZUYWJsZSgpLT5zZXRGdW5jdGlvbihpbmRleCwganNDYXN0PEpTT2Jq
ZWN0Kj4odmFsdWUpLCB3YXNtV3JhcHBlckZ1bmN0aW9uLT5pbXBvcnRhYmxlRnVuY3Rpb24oKSwg
Jndhc21XcmFwcGVyRnVuY3Rpb24tPmluc3RhbmNlKCktPmluc3RhbmNlKCkpOwogICAgICAgICB9
IGVsc2UgaWYgKHZhbHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgaW5zdGFuY2UtPnRhYmxlKCkt
PmNsZWFyKGluZGV4KTsKKyAgICAgICAgICAgIGluc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+
Y2xlYXIoaW5kZXgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21JbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNl
LmgKaW5kZXggN2EyM2U1NjI4MjRmODFlMzU4NjBlZTdhYjBkOTg1OGFmM2IzYjI3OS4uMDEyY2Q0
NTczYWE4NGY5NjQ3MGNiMDcxOThjN2E3MGJiMGYzYTdjNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUluc3RhbmNlLmgKQEAgLTQxLDggKzQxLDggQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBXYXNtIHsKIHN0cnVjdCBDb250ZXh0OwogY2xhc3MgSW5zdGFuY2U7CiAKLUVu
Y29kZWRKU1ZhbHVlIGdldFdhc21UYWJsZUVsZW1lbnQoSW5zdGFuY2UqLCBpbnQzMl90KTsKLWJv
b2wgc2V0V2FzbVRhYmxlRWxlbWVudChJbnN0YW5jZSosIGludDMyX3QsIEVuY29kZWRKU1ZhbHVl
IGVuY1ZhbHVlKTsKK0VuY29kZWRKU1ZhbHVlIGdldFdhc21UYWJsZUVsZW1lbnQoSW5zdGFuY2Uq
LCB1bnNpZ25lZCwgaW50MzJfdCk7Citib29sIHNldFdhc21UYWJsZUVsZW1lbnQoSW5zdGFuY2Uq
LCB1bnNpZ25lZCwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUgZW5jVmFsdWUpOwogRW5jb2RlZEpT
VmFsdWUgZG9XYXNtUmVmRnVuYyhJbnN0YW5jZSosIHVpbnQzMl90KTsKIAogY2xhc3MgSW5zdGFu
Y2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW5zdGFuY2U+LCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8SW5zdGFuY2U+IHsKQEAgLTcwLDcgKzcwLDggQEAgcHVibGljOgogICAgIE1vZHVs
ZSYgbW9kdWxlKCkgeyByZXR1cm4gbV9tb2R1bGUuZ2V0KCk7IH0KICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jaygpIHsgcmV0dXJuIG1fY29kZUJsb2NrLmdldCgpOyB9CiAgICAgTWVtb3J5KiBtZW1v
cnkoKSB7IHJldHVybiBtX21lbW9yeS5nZXQoKTsgfQotICAgIFRhYmxlKiB0YWJsZSgpIHsgcmV0
dXJuIG1fdGFibGUuZ2V0KCk7IH0KKyAgICBUYWJsZSogdGFibGUodW5zaWduZWQpOworICAgIHZv
aWQgc2V0VGFibGUodW5zaWduZWQsIFJlZjxUYWJsZT4mJik7CiAKICAgICB2b2lkKiBjYWNoZWRN
ZW1vcnkoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZE1lbW9yeS5nZXRNYXlCZU51bGwoY2FjaGVk
TWVtb3J5U2l6ZSgpKTsgfQogICAgIHNpemVfdCBjYWNoZWRNZW1vcnlTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWNoZWRNZW1vcnlTaXplOyB9CkBAIC04OCw3ICs4OSw2IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIG1fY2FjaGVkTWVtb3J5U2l6ZSA9IG1lbW9yeSgpLT5zaXplKCk7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgdm9pZCBzZXRUYWJsZShSZWY8VGFibGU+JiYgdGFibGUpIHsgbV90YWJs
ZSA9IFdURk1vdmUodGFibGUpOyB9CiAKICAgICBpbnQzMl90IGxvYWRJMzJHbG9iYWwodW5zaWdu
ZWQgaSkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxzLmdldCgpW2ldLnByaW1pdGl2ZTsgfQogICAg
IGludDY0X3QgbG9hZEk2NEdsb2JhbCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX2dsb2Jh
bHMuZ2V0KClbaV0ucHJpbWl0aXZlOyB9CkBAIC0xMDMsNyArMTAzLDYgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk1lbW9yeSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihJbnN0YW5jZSwgbV9tZW1vcnkpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
Zkdsb2JhbHMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fZ2xvYmFscyk7
IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVGFibGUoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoSW5zdGFuY2UsIG1fdGFibGUpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZkNhY2hlZE1lbW9yeSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV9j
YWNoZWRNZW1vcnkpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhY2hlZE1lbW9y
eVNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fY2FjaGVkTWVtb3J5
U2l6ZSk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUG9pbnRlclRvVG9wRW50cnlG
cmFtZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV9wb2ludGVyVG9Ub3BF
bnRyeUZyYW1lKTsgfQpAQCAtMTIyLDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAv
LyBUYWlsIGFjY2Vzc29ycy4KLSAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mVGFpbCgpIHsgcmV0
dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YodWludDY0X3QpPihzaXplb2YoSW5z
dGFuY2UpKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mVGFpbCgpIHsg
cmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YodWludDY0X3QpPihzaXplb2Yo
SW5zdGFuY2UpKTsgfQogICAgIHN0cnVjdCBJbXBvcnRGdW5jdGlvbkluZm8gewogICAgICAgICAv
LyBUYXJnZXQgaW5zdGFuY2UgYW5kIGVudHJ5cG9pbnQgYXJlIG9ubHkgc2V0IGZvciB3YXNtLT53
YXNtIGNhbGxzLCBhbmQgYXJlIG90aGVyd2lzZSBudWxscHRyLiBUaGUgZW1iZWRkZXItc3BlY2lm
aWMgbG9naWMgb2NjdXJzIHRocm91Z2ggaW1wb3J0IGZ1bmN0aW9uLgogICAgICAgICBJbnN0YW5j
ZSogdGFyZ2V0SW5zdGFuY2UgeyBudWxscHRyIH07CkBAIC0xNDIsNiArMTQxLDkgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbXBvcnRGdW5jdGlvbihzaXplX3QgaW1wb3J0
RnVuY3Rpb25OdW0pIHsgcmV0dXJuIG9mZnNldE9mVGFpbCgpICsgaW1wb3J0RnVuY3Rpb25OdW0g
KiBzaXplb2YoSW1wb3J0RnVuY3Rpb25JbmZvKSArIE9CSkVDVF9PRkZTRVRPRihJbXBvcnRGdW5j
dGlvbkluZm8sIGltcG9ydEZ1bmN0aW9uKTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQq
IGltcG9ydEZ1bmN0aW9uKHVuc2lnbmVkIGltcG9ydEZ1bmN0aW9uTnVtKSB7IHJldHVybiByZWlu
dGVycHJldF9jYXN0PFQqPigmaW1wb3J0RnVuY3Rpb25JbmZvKGltcG9ydEZ1bmN0aW9uTnVtKS0+
aW1wb3J0RnVuY3Rpb24pOyB9CiAKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihJbXBvcnRGdW5j
dGlvbkluZm8pID09IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YodWludDY0X3QpPihz
aXplb2YoSW1wb3J0RnVuY3Rpb25JbmZvKSksICJXZSByZWx5IG9uIHRoaXMgZm9yIHRoZSBhbGln
bm1lbnQgdG8gYmUgY29ycmVjdCIpOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG9mZnNl
dE9mVGFibGVQdHIodW5zaWduZWQgbnVtSW1wb3J0RnVuY3Rpb25zLCB1bnNpZ25lZCBpKSB7IHJl
dHVybiBvZmZzZXRPZlRhaWwoKSArIHNpemVvZihJbXBvcnRGdW5jdGlvbkluZm8pICogbnVtSW1w
b3J0RnVuY3Rpb25zICsgc2l6ZW9mKFRhYmxlKikgKiBpOyB9CisKICAgICB2b2lkIHN0b3JlVG9w
Q2FsbEZyYW1lKHZvaWQqIGNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIG1fc3RvcmVUb3BDYWxs
RnJhbWUoY2FsbEZyYW1lKTsKQEAgLTE1MCw5ICsxNTIsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIEluc3RhbmNlKENvbnRleHQqLCBSZWY8TW9kdWxlPiYmLCBFbnRyeUZyYW1lKiosIHZvaWQq
KiwgU3RvcmVUb3BDYWxsRnJhbWVDYWxsYmFjayYmKTsKICAgICAKLSAgICBzdGF0aWMgc2l6ZV90
IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBudW1JbXBvcnRGdW5jdGlvbnMpCisgICAg
c3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gbnVtSW1wb3J0RnVu
Y3Rpb25zLCBDaGVja2VkPHNpemVfdD4gbnVtVGFibGVzKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IChvZmZzZXRPZlRhaWwoKSArIHNpemVvZihJbXBvcnRGdW5jdGlvbkluZm8pICogbnVtSW1wb3J0
RnVuY3Rpb25zKS51bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIChvZmZzZXRPZlRhaWwoKSAr
IHNpemVvZihJbXBvcnRGdW5jdGlvbkluZm8pICogbnVtSW1wb3J0RnVuY3Rpb25zICsgc2l6ZW9m
KFRhYmxlKikgKiBudW1UYWJsZXMpLnVuc2FmZUdldCgpOwogICAgIH0KICAgICB2b2lkKiBtX293
bmVyIHsgbnVsbHB0ciB9OyAvLyBJbiBhIEpTIGVtYmVkZGluZywgdGhpcyBpcyBhIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSouCiAgICAgQ29udGV4dCogbV9jb250ZXh0IHsgbnVsbHB0ciB9OwpAQCAt
MTYxLDcgKzE2Myw2IEBAIHByaXZhdGU6CiAgICAgUmVmPE1vZHVsZT4gbV9tb2R1bGU7CiAgICAg
UmVmUHRyPENvZGVCbG9jaz4gbV9jb2RlQmxvY2s7CiAgICAgUmVmUHRyPE1lbW9yeT4gbV9tZW1v
cnk7Ci0gICAgUmVmUHRyPFRhYmxlPiBtX3RhYmxlOwogCiAgICAgdW5pb24gR2xvYmFsVmFsdWUg
ewogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gYW55cmVmOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxpbWl0cy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUxpbWl0cy5oCmluZGV4IGM2ZjZjZGNiYmNkY2Q3ODVlMzVmNjQyYzdlODgw
ZDg4OWZkYjM4YWEuLmNmOGI0NDYwMzY4MTEyM2VjYzI1Y2ZjMzcyNDk4YjVmNWI1OGM5ODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MaW1pdHMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTGltaXRzLmgKQEAgLTUxLDYgKzUxLDcgQEAg
Y29uc3RleHByIHNpemVfdCBtYXhGdW5jdGlvbkxvY2FscyA9IDUwMDAwOwogY29uc3RleHByIHNp
emVfdCBtYXhGdW5jdGlvblBhcmFtcyA9IDEwMDA7CiAKIGNvbnN0ZXhwciBzaXplX3QgbWF4VGFi
bGVFbnRyaWVzID0gMTAwMDAwMDA7Citjb25zdGV4cHIgdW5zaWduZWQgbWF4VGFibGVzID0gMTAw
MDAwMDsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaAppbmRleCA4OGY2NmNiNjM5
MTU5YzM2OWQ5ZGRlNjBhMWZjZTZkYTVkMTcxMjg5Li4yNjhmODhiYjEwYmY3NDg1ZmE2NTE2NTUy
NGU3MDRiNjU5OTg3MjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTW9kdWxlSW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTW9kdWxlSW5mb3JtYXRpb24uaApAQCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgTW9kdWxlSW5m
b3JtYXRpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TW9kdWxlSW5mb3JtYXRpb24+
IHsKICAgICAvLyBDdXJyZW50bHksIG91ciB3YXNtIGltcGxlbWVudGF0aW9uIGFsbG93cyBvbmx5
IG9uZSBtZW1vcnkgYW5kIHRhYmxlLgogICAgIC8vIElmIHdlIG5lZWQgdG8gcmVtb3ZlIHRoaXMg
bGltaXRhdGlvbiwgd2Ugd291bGQgaGF2ZSBNZW1vcnlJbmZvcm1hdGlvbiBhbmQgVGFibGVJbmZv
cm1hdGlvbiBpbiB0aGUgVmVjdG9ycy4KICAgICB1aW50MzJfdCBtZW1vcnlDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1lbW9yeSA/IDEgOiAwOyB9Ci0gICAgdWludDMyX3QgdGFibGVDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIHRhYmxlSW5mb3JtYXRpb24gPyAxIDogMDsgfQorICAgIHVpbnQzMl90IHRh
YmxlQ291bnQoKSBjb25zdCB7IHJldHVybiB0YWJsZXMuc2l6ZSgpOyB9CiAKICAgICBjb25zdCBC
aXRWZWN0b3ImIHJlZmVyZW5jZWRGdW5jdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5j
ZWRGdW5jdGlvbnM7IH0KICAgICB2b2lkIGFkZFJlZmVyZW5jZWRGdW5jdGlvbih1bnNpZ25lZCBp
bmRleCkgY29uc3QgeyBtX3JlZmVyZW5jZWRGdW5jdGlvbnMuc2V0KGluZGV4KTsgfQpAQCAtODMs
NyArODMsNyBAQCBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8TW9kdWxlSW5mb3JtYXRpb24+IHsKICAgICBPcHRpb25hbDx1aW50MzJfdD4gc3Rh
cnRGdW5jdGlvbkluZGV4U3BhY2U7CiAgICAgVmVjdG9yPFNlZ21lbnQ6OlB0cj4gZGF0YTsKICAg
ICBWZWN0b3I8RWxlbWVudD4gZWxlbWVudHM7Ci0gICAgVGFibGVJbmZvcm1hdGlvbiB0YWJsZUlu
Zm9ybWF0aW9uOworICAgIFZlY3RvcjxUYWJsZUluZm9ybWF0aW9uPiB0YWJsZXM7CiAgICAgVmVj
dG9yPEdsb2JhbD4gZ2xvYmFsczsKICAgICB1bnNpZ25lZCBmaXJzdEludGVybmFsR2xvYmFsIHsg
MCB9OwogICAgIFZlY3RvcjxDdXN0b21TZWN0aW9uPiBjdXN0b21TZWN0aW9uczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAppbmRleCBjODAz
MTRkZmRhMDAzZmViMmI1ZjA3Y2E5ZmE5OWNkODg4M2RlYTcwLi5lZjUxMjE2NzUyYTEyNjVlMTAy
NGQzN2U5Mjg5ZWM0OGJhZmZkZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCkBAIC0xMTksNiArMTE5LDcgQEAgYXV0byBTZWN0aW9u
UGFyc2VyOjpwYXJzZUltcG9ydCgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgfQogICAgICAg
ICBjYXNlIEV4dGVybmFsS2luZDo6VGFibGU6IHsKICAgICAgICAgICAgIGJvb2wgaXNJbXBvcnQg
PSB0cnVlOworICAgICAgICAgICAga2luZEluZGV4ID0gbV9pbmZvLT50YWJsZXMuc2l6ZSgpOwog
ICAgICAgICAgICAgUGFydGlhbFJlc3VsdCByZXN1bHQgPSBwYXJzZVRhYmxlSGVscGVyKGlzSW1w
b3J0KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShyZXN1bHQuZXJyb3IoKSkpOwpAQCAtMTkz
LDcgKzE5NCw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VSZXNpemFibGVMaW1pdHModWlu
dDMyX3QmIGluaXRpYWwsIE9wdGlvbmFsPHVpbnQzMl90PiYKIAogYXV0byBTZWN0aW9uUGFyc2Vy
OjpwYXJzZVRhYmxlSGVscGVyKGJvb2wgaXNJbXBvcnQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1faW5mby0+dGFibGVDb3VudCgpID4gMCwgIkNhbm5vdCBo
YXZlIG1vcmUgdGhhbiBvbmUgVGFibGUgZm9yIG5vdyIpOworICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYobV9pbmZvLT50YWJsZUNvdW50KCkgPj0gbWF4VGFibGVzLCAiVGFibGUgY291bnQgb2YgIiwg
bV9pbmZvLT50YWJsZUNvdW50KCksICIgaXMgdG9vIGJpZywgbWF4aW11bSAiLCBtYXhUYWJsZXMp
OwogCiAgICAgaW50OF90IHR5cGU7CiAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VJbnQ3
KHR5cGUpLCAiY2FuJ3QgcGFyc2UgVGFibGUgdHlwZSIpOwpAQCAtMjA5LDcgKzIxMCw3IEBAIGF1
dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VUYWJsZUhlbHBlcihib29sIGlzSW1wb3J0KSAtPiBQYXJ0
aWFsUmVzdWx0CiAgICAgQVNTRVJUKCFtYXhpbXVtIHx8ICptYXhpbXVtID49IGluaXRpYWwpOwog
CiAgICAgVGFibGVFbGVtZW50VHlwZSB0YWJsZVR5cGUgPSB0eXBlID09IFdhc206OkFueWZ1bmMg
PyBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmIDogVGFibGVFbGVtZW50VHlwZTo6QW55cmVmOwot
ICAgIG1faW5mby0+dGFibGVJbmZvcm1hdGlvbiA9IFRhYmxlSW5mb3JtYXRpb24oaW5pdGlhbCwg
bWF4aW11bSwgaXNJbXBvcnQsIHRhYmxlVHlwZSk7CisgICAgbV9pbmZvLT50YWJsZXMuYXBwZW5k
KFRhYmxlSW5mb3JtYXRpb24oaW5pdGlhbCwgbWF4aW11bSwgaXNJbXBvcnQsIHRhYmxlVHlwZSkp
OwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTIxOCwxNSArMjE5LDEzIEBAIGF1dG8gU2VjdGlv
blBhcnNlcjo6cGFyc2VUYWJsZSgpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICB1aW50MzJfdCBj
b3VudDsKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihjb3VudCksICJj
YW4ndCBnZXQgVGFibGUncyBjb3VudCIpOwotICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoY291bnQg
PiAxLCAiVGFibGUgY291bnQgb2YgIiwgY291bnQsICIgaXMgaW52YWxpZCwgYXQgbW9zdCAxIGlz
IGFsbG93ZWQgZm9yIG5vdyIpOwogCi0gICAgaWYgKCFjb3VudCkKLSAgICAgICAgcmV0dXJuIHsg
fTsKLQotICAgIGJvb2wgaXNJbXBvcnQgPSBmYWxzZTsKLSAgICBQYXJ0aWFsUmVzdWx0IHJlc3Vs
dCA9IHBhcnNlVGFibGVIZWxwZXIoaXNJbXBvcnQpOwotICAgIGlmIChVTkxJS0VMWSghcmVzdWx0
KSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUocmVzdWx0LmVycm9yKCkp
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBi
b29sIGlzSW1wb3J0ID0gZmFsc2U7CisgICAgICAgIFBhcnRpYWxSZXN1bHQgcmVzdWx0ID0gcGFy
c2VUYWJsZUhlbHBlcihpc0ltcG9ydCk7CisgICAgICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZNb3ZlKHJlc3VsdC5lcnJvcigp
KSk7CisgICAgfQogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTM3OSwxNiArMzc4LDE2IEBAIGF1
dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KCkgLT4gUGFydGlhbFJlc3VsdAogCiAgICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHRhYmxlSW5kZXgpLCAiY2Fu
J3QgZ2V0ICIsIGVsZW1lbnROdW0sICJ0aCBFbGVtZW50IHRhYmxlIGluZGV4Iik7CiAgICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYodGFibGVJbmRleCA+PSBtX2luZm8tPnRhYmxlQ291bnQoKSwg
IkVsZW1lbnQgc2VjdGlvbiBmb3IgVGFibGUgIiwgdGFibGVJbmRleCwgIiBleGNlZWRzIGF2YWls
YWJsZSBUYWJsZSAiLCBtX2luZm8tPnRhYmxlQ291bnQoKSk7Ci0gICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYobV9pbmZvLT50YWJsZUluZm9ybWF0aW9uLnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRU
eXBlOjpGdW5jcmVmLCAiVGFibGUgIiwgdGFibGVJbmRleCwgIiBtdXN0IGhhdmUgdHlwZSAnYW55
ZnVuYycgdG8gaGF2ZSBhbiBlbGVtZW50IHNlY3Rpb24iKTsKKyAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRihtX2luZm8tPnRhYmxlc1t0YWJsZUluZGV4XS50eXBlKCkgIT0gVGFibGVFbGVtZW50
VHlwZTo6RnVuY3JlZiwgIlRhYmxlICIsIHRhYmxlSW5kZXgsICIgbXVzdCBoYXZlIHR5cGUgJ2Fu
eWZ1bmMnIHRvIGhhdmUgYW4gZWxlbWVudCBzZWN0aW9uIik7CiAgICAgICAgIFR5cGUgaW5pdEV4
cHJUeXBlOwogICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSW5pdEV4cHIo
aW5pdE9wY29kZSwgaW5pdEV4cHJCaXRzLCBpbml0RXhwclR5cGUpKTsKICAgICAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRihpbml0RXhwclR5cGUgIT0gSTMyLCAiRWxlbWVudCBpbml0X2V4cHIgbXVz
dCBwcm9kdWNlIGFuIGkzMiIpOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZh
clVJbnQzMihpbmRleENvdW50KSwgImNhbid0IGdldCAiLCBlbGVtZW50TnVtLCAidGggaW5kZXgg
Y291bnQgZm9yIEVsZW1lbnQgc2VjdGlvbiIpOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KGluZGV4Q291bnQgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLCAiRWxl
bWVudCBzZWN0aW9uJ3MgIiwgZWxlbWVudE51bSwgInRoIGluZGV4IGNvdW50IGlzIHRvbyBiaWcg
IiwgaW5kZXhDb3VudCk7CiAKLSAgICAgICAgQVNTRVJUKCEhbV9pbmZvLT50YWJsZUluZm9ybWF0
aW9uKTsKKyAgICAgICAgQVNTRVJUKCEhbV9pbmZvLT50YWJsZXNbdGFibGVJbmRleF0pOwogCi0g
ICAgICAgIEVsZW1lbnQgZWxlbWVudChtYWtlSTMySW5pdEV4cHIoaW5pdE9wY29kZSwgaW5pdEV4
cHJCaXRzKSk7CisgICAgICAgIEVsZW1lbnQgZWxlbWVudCh0YWJsZUluZGV4LCBtYWtlSTMySW5p
dEV4cHIoaW5pdE9wY29kZSwgaW5pdEV4cHJCaXRzKSk7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoIWVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnRyeVJlc2VydmVDYXBhY2l0eShpbmRleENv
dW50KSwgImNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgIiwgaW5kZXhDb3VudCwgIiBFbGVtZW50
IGluZGljZXMiKTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBp
bmRleENvdW50OyArK2luZGV4KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5o
CmluZGV4IGIxZTJiNWRmNGRmMWM2NDVjZjliMzMwMmVhNTg3YTA3ZmVlYzhkNmMuLmQ2YWFjNWI1
NTgyZGE0MjBjZDQxNjM0ZTBlNTMyYmM1MjU0OGE5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21UYWJsZS5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdWlu
dDMyX3QgYWxsb2NhdGVkTGVuZ3RoKHVpbnQzMl90IGxlbmd0aCk7CiAgICAgdWludDMyX3QgbWFz
aygpIGNvbnN0IHsgcmV0dXJuIG1fbWFzazsgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
VCogb3duZXIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PFQqPihtX293bmVyKTsg
fQogICAgIHZvaWQgc2V0T3duZXIoSlNPYmplY3QqIG93bmVyKQogICAgIHsKICAgICAgICAgQVNT
RVJUKCFtX293bmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21WYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUu
Y3BwCmluZGV4IDdmMWFjNjFlZThhMjRjZDFlOTE4YjhiZGVhY2NiOGRiZTQzNDhlOTguLmJkMjFk
ODBlZjFhNTNmMzc5YjE1YzcwODgyMWU4YzY3NjVkYmRmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcApAQCAtMTA2LDggKzEwNiw4IEBAIHB1YmxpYzoK
ICAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJlZkZ1bmModWludDMyX3QgaW5kZXgs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCiAgICAgLy8gVGFibGVzCi0gICAgUmVzdWx0IFdB
Uk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZUdldChFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpOwotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFi
bGVTZXQoRXhwcmVzc2lvblR5cGUmIGluZGV4LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUpOworICAg
IFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVHZXQodW5zaWduZWQsIEV4cHJlc3Np
b25UeXBlJiBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBhZGRUYWJsZVNldCh1bnNpZ25lZCwgRXhwcmVzc2lvblR5cGUmIGluZGV4
LCBFeHByZXNzaW9uVHlwZSYgdmFsdWUpOwogCiAgICAgLy8gTG9jYWxzCiAgICAgUmVzdWx0IFdB
Uk5fVU5VU0VEX1JFVFVSTiBnZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbHMKICAg
ICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodW5zaWduZWQgY2FsbGVlSW5kZXgs
IGNvbnN0IFNpZ25hdHVyZSYsIGNvbnN0IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRk
Q2FsbEluZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSYsIGNvbnN0IFZlY3RvcjxFeHByZXNzaW9uVHlw
ZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25h
dHVyZSYsIGNvbnN0IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpOwogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGRpZEtpbGwoRXhwcmVzc2lvblR5
cGUpIHsgfQogCkBAIC0xNzgsMjEgKzE3OCwyMiBAQCBhdXRvIFZhbGlkYXRlOjphZGRBcmd1bWVu
dHMoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IFJlc3VsdAogICAgIHJldHVybiB7IH07
CiB9CiAKLWF1dG8gVmFsaWRhdGU6OmFkZFRhYmxlR2V0KEV4cHJlc3Npb25UeXBlJiBpbmRleCwg
RXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUmVzdWx0CithdXRvIFZhbGlkYXRlOjphZGRUYWJs
ZUdldCh1bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSYgaW5kZXgsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpIC0+IFJlc3VsdAogewotICAgIHJlc3VsdCA9IG1fbW9kdWxlLnRhYmxl
SW5mb3JtYXRpb24ud2FzbVR5cGUoKTsKKyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKHRhYmxl
SW5kZXggPj0gbV9tb2R1bGUudGFibGVDb3VudCgpLCAidGFibGUgaW5kZXggIiwgdGFibGVJbmRl
eCwgIiBpcyBpbnZhbGlkLCBsaW1pdCBpcyAiLCBtX21vZHVsZS50YWJsZUNvdW50KCkpOworICAg
IHJlc3VsdCA9IG1fbW9kdWxlLnRhYmxlc1t0YWJsZUluZGV4XS53YXNtVHlwZSgpOwogICAgIFdB
U01fVkFMSURBVE9SX0ZBSUxfSUYoVHlwZTo6STMyICE9IGluZGV4LCAidGFibGUuZ2V0IGluZGV4
IHRvIHR5cGUgIiwgaW5kZXgsICIgZXhwZWN0ZWQgIiwgVHlwZTo6STMyKTsKIAogICAgIHJldHVy
biB7IH07CiB9CiAKLWF1dG8gVmFsaWRhdGU6OmFkZFRhYmxlU2V0KEV4cHJlc3Npb25UeXBlJiBp
bmRleCwgRXhwcmVzc2lvblR5cGUmIHZhbHVlKSAtPiBSZXN1bHQKK2F1dG8gVmFsaWRhdGU6OmFk
ZFRhYmxlU2V0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlJiBpbmRleCwgRXhw
cmVzc2lvblR5cGUmIHZhbHVlKSAtPiBSZXN1bHQKIHsKLSAgICBhdXRvIHR5cGUgPSBtX21vZHVs
ZS50YWJsZUluZm9ybWF0aW9uLndhc21UeXBlKCk7CisgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9J
Rih0YWJsZUluZGV4ID49IG1fbW9kdWxlLnRhYmxlQ291bnQoKSwgInRhYmxlIGluZGV4ICIsIHRh
YmxlSW5kZXgsICIgaXMgaW52YWxpZCwgbGltaXQgaXMgIiwgbV9tb2R1bGUudGFibGVDb3VudCgp
KTsKKyAgICBhdXRvIHR5cGUgPSBtX21vZHVsZS50YWJsZXNbdGFibGVJbmRleF0ud2FzbVR5cGUo
KTsKICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKFR5cGU6OkkzMiAhPSBpbmRleCwgInRhYmxl
LnNldCBpbmRleCB0byB0eXBlICIsIGluZGV4LCAiIGV4cGVjdGVkICIsIFR5cGU6OkkzMik7CiAg
ICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKHZhbHVlLCB0eXBlKSwgInRhYmxl
LnNldCB2YWx1ZSB0byB0eXBlICIsIHZhbHVlLCAiIGV4cGVjdGVkICIsIHR5cGUpOwotICAgIFdB
U01fVkFMSURBVE9SX0ZBSUxfSUYobV9tb2R1bGUudGFibGVJbmZvcm1hdGlvbi50eXBlKCkgIT0g
VGFibGVFbGVtZW50VHlwZTo6QW55cmVmCi0gICAgICAgICYmIG1fbW9kdWxlLnRhYmxlSW5mb3Jt
YXRpb24udHlwZSgpICE9IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYsICJ0YWJsZS5zZXQgZXhw
ZWN0cyB0aGUgdGFibGUgdG8gaGF2ZSB0eXBlIGFueXJlZiBvciBhbnlmdW5jIik7CisgICAgUkVM
RUFTRV9BU1NFUlQobV9tb2R1bGUudGFibGVzW3RhYmxlSW5kZXhdLnR5cGUoKSA9PSBUYWJsZUVs
ZW1lbnRUeXBlOjpBbnlyZWYgfHwgbV9tb2R1bGUudGFibGVzW3RhYmxlSW5kZXhdLnR5cGUoKSA9
PSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmKTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0z
NzksOSArMzgwLDEwIEBAIGF1dG8gVmFsaWRhdGU6OmFkZENhbGwodW5zaWduZWQsIGNvbnN0IFNp
Z25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8RXhwcmVzCiAgICAgcmV0dXJuIHsgfTsK
IH0KIAotYXV0byBWYWxpZGF0ZTo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSYgc2ln
bmF0dXJlLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KSAtPiBSZXN1bHQKK2F1dG8gVmFsaWRhdGU6OmFkZENhbGxJbmRpcmVjdCh1bnNp
Z25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9y
PEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUmVzdWx0
CiB7Ci0gICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihtX21vZHVsZS50YWJsZUluZm9ybWF0aW9u
LnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCAiVGFibGUgbXVzdCBoYXZlIHR5
cGUgQW55ZnVuYyB0byBjYWxsIik7CisgICAgUkVMRUFTRV9BU1NFUlQodGFibGVJbmRleCA8IG1f
bW9kdWxlLnRhYmxlQ291bnQoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9tb2R1bGUudGFibGVz
W3RhYmxlSW5kZXhdLnR5cGUoKSA9PSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmKTsKICAgICBj
b25zdCBhdXRvIGFyZ3VtZW50Q291bnQgPSBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOwogICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoYXJndW1lbnRDb3VudCAhPSBhcmdzLnNpemUoKSAtIDEs
ICJhcml0eSBtaXNtYXRjaCBpbiBjYWxsX2luZGlyZWN0LCBnb3QgIiwgYXJncy5zaXplKCkgLSAx
LCAiIGFyZ3VtZW50cywgZXhwZWN0ZWQgIiwgYXJndW1lbnRDb3VudCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3Bw
CmluZGV4IDMyMzQyN2ZkOGEwYWYyNGNlMjkzNjRmZTQwNGIxNjcwYTY4M2I1OTcuLjk5YWZhMWFj
Njc0M2U5MjhmYjU1OWM5ODI3YWU0ODIyYWZjYjNlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcApAQCAtNTMs
NiArNTMsNyBAQCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8VwogICAgIDogQmFzZSh2bSwgc3RydWN0
dXJlKQogICAgICwgbV9pbnN0YW5jZShXVEZNb3ZlKGluc3RhbmNlKSkKICAgICAsIG1fdm0oJnZt
KQorICAgICwgbV90YWJsZXMobV9pbnN0YW5jZS0+bW9kdWxlKCkubW9kdWxlSW5mb3JtYXRpb24o
KS50YWJsZUNvdW50KCkpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXMtPmlu
c3RhbmNlKCkubnVtSW1wb3J0RnVuY3Rpb25zKCk7ICsraSkKICAgICAgICAgbmV3ICh0aGlzLT5p
bnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPFdyaXRlQmFycmllcjxKU09iamVjdD4+KGkpKSBXcml0
ZUJhcnJpZXI8SlNPYmplY3Q+KCk7CkBAIC04NSw3ICs4Niw4IEBAIHZvaWQgSlNXZWJBc3NlbWJs
eUluc3RhbmNlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jb2RlQmxvY2spOwogICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KTsKICAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21lbW9yeSk7Ci0gICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV90YWJsZSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNP
YmplY3QtPmluc3RhbmNlKCkubW9kdWxlKCkubW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50
KCk7ICsraSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV90YWJsZXNbaV0p
OwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FsbGVlKTsKICAgICB2aXNpdG9y
LnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0aGlzT2JqZWN0LT5tX2luc3RhbmNlLT5leHRyYU1l
bW9yeUFsbG9jYXRlZCgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGhpc09iamVj
dC0+aW5zdGFuY2UoKS5udW1JbXBvcnRGdW5jdGlvbnMoKTsgKytpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaAppbmRleCAy
MTc4NGE5MzlkOGViNDdlOGY1MjQ2ZTI2NjNlZjM2NzcwNDkyOGU1Li5lMTYzMWZjYmIxODMzZTAx
OGVmN2M0ZDYxNzgwOTE4MjRkNGU2MTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaApAQCAtNzEsMTEgKzcxLDEzIEBA
IHB1YmxpYzoKICAgICB9CiAgICAgV2FzbTo6TWVtb3J5TW9kZSBtZW1vcnlNb2RlKCkgeyByZXR1
cm4gbWVtb3J5KCktPm1lbW9yeSgpLm1vZGUoKTsgfQogCi0gICAgSlNXZWJBc3NlbWJseVRhYmxl
KiB0YWJsZSgpIHsgcmV0dXJuIG1fdGFibGUuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFRhYmxlKFZN
JiB2bSwgSlNXZWJBc3NlbWJseVRhYmxlKiB2YWx1ZSkgewotICAgICAgICBBU1NFUlQoIXRhYmxl
KCkpOwotICAgICAgICBtX3RhYmxlLnNldCh2bSwgdGhpcywgdmFsdWUpOwotICAgICAgICBpbnN0
YW5jZSgpLnNldFRhYmxlKG1ha2VSZWYoKnRhYmxlKCktPnRhYmxlKCkpKTsKKyAgICBKU1dlYkFz
c2VtYmx5VGFibGUqIHRhYmxlKHVuc2lnbmVkIGkpIHsgcmV0dXJuIG1fdGFibGVzW2ldLmdldCgp
OyB9CisgICAgdm9pZCBzZXRUYWJsZShWTSYgdm0sIHVpbnQzMl90IGluZGV4LCBKU1dlYkFzc2Vt
Ymx5VGFibGUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbV90YWJsZXMu
c2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKCF0YWJsZShpbmRleCkpOworICAgICAgICBtX3RhYmxl
c1tpbmRleF0uc2V0KHZtLCB0aGlzLCB2YWx1ZSk7CisgICAgICAgIGluc3RhbmNlKCkuc2V0VGFi
bGUoaW5kZXgsIG1ha2VSZWYoKnRhYmxlKGluZGV4KS0+dGFibGUoKSkpOwogICAgIH0KIAogICAg
IEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlLmdl
dCgpOyB9CkBAIC05OCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxKU1dl
YkFzc2VtYmx5Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKICAgICBXcml0ZUJhcnJpZXI8SlNNb2R1
bGVOYW1lc3BhY2VPYmplY3Q+IG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0OwogICAgIFdyaXRlQmFy
cmllcjxKU1dlYkFzc2VtYmx5TWVtb3J5PiBtX21lbW9yeTsKLSAgICBXcml0ZUJhcnJpZXI8SlNX
ZWJBc3NlbWJseVRhYmxlPiBtX3RhYmxlOworICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNXZWJB
c3NlbWJseVRhYmxlPj4gbV90YWJsZXM7CiAgICAgV3JpdGVCYXJyaWVyPFdlYkFzc2VtYmx5VG9K
U0NhbGxlZT4gbV9jYWxsZWU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKaW5kZXggMTJiMWNlZjJk
ZjQ2ODc5YTJjN2YxYjM3MWY0YzU5Mzk5YmVjNjYxMy4uMDUyZDA4NTg5Njg5NWI5ZDk0MmI0ODkw
YmViMzU2MDlhYjczNWY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcApAQCAtMTEzLDggKzExMyw2IEBA
IHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlLCBKU09iamVjdCogaW1wb3J0T2JqCiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGJlZm9y
ZSwgIiAiLCBTdHJpbmc6OmZyb21VVEY4KGltcG9ydC5tb2R1bGUpLCAiOiIsIFN0cmluZzo6ZnJv
bVVURjgoaW1wb3J0LmZpZWxkKSwgIiAiLCBhZnRlcik7CiAgICAgfTsKIAotICAgIGJvb2wgaGFz
VGFibGVJbXBvcnQgPSBmYWxzZTsKLQogICAgIGZvciAoY29uc3QgYXV0byYgaW1wb3J0IDogbW9k
dWxlSW5mb3JtYXRpb24uaW1wb3J0cykgewogICAgICAgICAvLyBWYWxpZGF0aW9uIGFuZCBsaW5r
aW5nIG90aGVyIHRoYW4gV2FzbTo6RXh0ZXJuYWxLaW5kOjpGdW5jdGlvbiBpcyBhbHJlYWR5IGRv
bmUgaW4gSlNXZWJBc3NlbWJseUluc3RhbmNlLgogICAgICAgICAvLyBFdmVudHVhbGx5IHdlIHdp
bGwgbW92ZSBhbGwgdGhlIGxpbmtpbmcgY29kZSBpbiBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgaGVy
ZSBhbmQgcmVtb3ZlIHRoaXMgc3dpdGNoIHN0YXRlbWVudC4KQEAgLTI2NCwyMCArMjYyLDE4IEBA
IHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlLCBKU09iamVjdCogaW1wb3J0T2JqCiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFdhc206
OkV4dGVybmFsS2luZDo6VGFibGU6IHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFoYXNU
YWJsZUltcG9ydCk7IC8vIFRoaXMgc2hvdWxkIGJlIGd1YXJhbnRlZWQgYnkgYSB2YWxpZGF0aW9u
IGZhaWx1cmUuCiAgICAgICAgICAgICAvLyA3LiBPdGhlcndpc2UgKGkgaXMgYSB0YWJsZSBpbXBv
cnQpOgotICAgICAgICAgICAgaGFzVGFibGVJbXBvcnQgPSB0cnVlOwogICAgICAgICAgICAgSlNX
ZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseVRhYmxl
Kj4odm0sIHZhbHVlKTsKICAgICAgICAgICAgIC8vIGkuIElmIHYgaXMgbm90IGEgV2ViQXNzZW1i
bHkuVGFibGUgb2JqZWN0LCB0aHJvdyBhIFdlYkFzc2VtYmx5LkxpbmtFcnJvci4KICAgICAgICAg
ICAgIGlmICghdGFibGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVK
U1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQs
ICJUYWJsZSBpbXBvcnQiLCAiaXMgbm90IGFuIGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5LlRhYmxl
IikpKTsKIAotICAgICAgICAgICAgdWludDMyX3QgZXhwZWN0ZWRJbml0aWFsID0gbW9kdWxlSW5m
b3JtYXRpb24udGFibGVJbmZvcm1hdGlvbi5pbml0aWFsKCk7CisgICAgICAgICAgICB1aW50MzJf
dCBleHBlY3RlZEluaXRpYWwgPSBtb2R1bGVJbmZvcm1hdGlvbi50YWJsZXNbaW1wb3J0LmtpbmRJ
bmRleF0uaW5pdGlhbCgpOwogICAgICAgICAgICAgdWludDMyX3QgYWN0dWFsSW5pdGlhbCA9IHRh
YmxlLT5sZW5ndGgoKTsKICAgICAgICAgICAgIGlmIChhY3R1YWxJbml0aWFsIDwgZXhwZWN0ZWRJ
bml0aWFsKQogICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3Nl
bWJseUxpbmtFcnJvcihleGVjLCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiVGFibGUg
aW1wb3J0IiwgInByb3ZpZGVkIGFuICdpbml0aWFsJyB0aGF0IGlzIHRvbyBzbWFsbCIpKSk7CiAK
LSAgICAgICAgICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gZXhwZWN0ZWRNYXhpbXVtID0gbW9k
dWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlvbi5tYXhpbXVtKCkpIHsKKyAgICAgICAgICAg
IGlmIChPcHRpb25hbDx1aW50MzJfdD4gZXhwZWN0ZWRNYXhpbXVtID0gbW9kdWxlSW5mb3JtYXRp
b24udGFibGVzW2ltcG9ydC5raW5kSW5kZXhdLm1heGltdW0oKSkgewogICAgICAgICAgICAgICAg
IE9wdGlvbmFsPHVpbnQzMl90PiBhY3R1YWxNYXhpbXVtID0gdGFibGUtPm1heGltdW0oKTsKICAg
ICAgICAgICAgICAgICBpZiAoIWFjdHVhbE1heGltdW0pCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgaW1w
b3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiVGFibGUgaW1wb3J0IiwgImRvZXMgbm90IGhhdmUgYSAn
bWF4aW11bScgYnV0IHRoZSBtb2R1bGUgcmVxdWlyZXMgdGhhdCBpdCBkb2VzIikpKTsKQEAgLTI4
NSwxNCArMjgxLDE0IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlLCBKU09iamVjdCogaW1wb3J0T2JqCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2
bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiSW1wb3J0ZWQgVGFibGUiLCAiJ21heGltdW0n
IGlzIGxhcmdlciB0aGFuIHRoZSBtb2R1bGUncyBleHBlY3RlZCAnbWF4aW11bSciKSkpOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGV4cGVjdGVkVHlwZSA9IG1vZHVsZUluZm9y
bWF0aW9uLnRhYmxlSW5mb3JtYXRpb24udHlwZSgpOworICAgICAgICAgICAgYXV0byBleHBlY3Rl
ZFR5cGUgPSBtb2R1bGVJbmZvcm1hdGlvbi50YWJsZXNbaW1wb3J0LmtpbmRJbmRleF0udHlwZSgp
OwogICAgICAgICAgICAgYXV0byBhY3R1YWxUeXBlID0gdGFibGUtPnRhYmxlKCktPnR5cGUoKTsK
ICAgICAgICAgICAgIGlmIChleHBlY3RlZFR5cGUgIT0gYWN0dWFsVHlwZSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywg
dm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgIlRhYmxlIGltcG9ydCIsICJwcm92aWRlZCBh
ICd0eXBlJyB0aGF0IGlzIHdyb25nIikpKTsKIAogICAgICAgICAgICAgLy8gaWkuIEFwcGVuZCB2
IHRvIHRhYmxlcy4KICAgICAgICAgICAgIC8vIGlpaS4gQXBwZW5kIHYuW1tUYWJsZV1dIHRvIGlt
cG9ydHMuCi0gICAgICAgICAgICBtX2luc3RhbmNlLT5zZXRUYWJsZSh2bSwgdGFibGUpOworICAg
ICAgICAgICAgbV9pbnN0YW5jZS0+c2V0VGFibGUodm0sIGltcG9ydC5raW5kSW5kZXgsIHRhYmxl
KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzAyLDE2ICsyOTgsMTYgQEAgdm9pZCBXZWJB
c3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2Jq
ZWN0KiBpbXBvcnRPYmoKICAgICAgICAgfQogICAgIH0KIAotICAgIHsKLSAgICAgICAgaWYgKCEh
bW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlvbiAmJiBtb2R1bGVJbmZvcm1hdGlvbi50
YWJsZUluZm9ybWF0aW9uLmlzSW1wb3J0KCkpIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbW9kdWxlSW5mb3JtYXRpb24udGFibGVDb3VudCgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1v
ZHVsZUluZm9ybWF0aW9uLnRhYmxlc1tpXS5pc0ltcG9ydCgpKSB7CiAgICAgICAgICAgICAvLyBX
ZSBzaG91bGQgZWl0aGVyIGhhdmUgYSBUYWJsZSBpbXBvcnQgb3Igd2Ugc2hvdWxkIGhhdmUgdGhy
b3duIGFuIGV4Y2VwdGlvbi4KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGhhc1RhYmxlSW1w
b3J0KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faW5zdGFuY2UtPnRhYmxlKGkpKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmICghIW1vZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5mb3Jt
YXRpb24gJiYgIWhhc1RhYmxlSW1wb3J0KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlvbi5pc0ltcG9ydCgpKTsKKyAgICAgICAg
aWYgKCFtX2luc3RhbmNlLT50YWJsZShpKSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IW1vZHVsZUluZm9ybWF0aW9uLnRhYmxlc1tpXS5pc0ltcG9ydCgpKTsKICAgICAgICAgICAgIC8v
IFdlIGNyZWF0ZSBhIFRhYmxlIHdoZW4gaXQncyBhIFRhYmxlIGRlZmluaXRpb24uCi0gICAgICAg
ICAgICBSZWZQdHI8V2FzbTo6VGFibGU+IHdhc21UYWJsZSA9IFdhc206OlRhYmxlOjp0cnlDcmVh
dGUobW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlvbi5pbml0aWFsKCksIG1vZHVsZUlu
Zm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24ubWF4aW11bSgpLCBtb2R1bGVJbmZvcm1hdGlvbi50
YWJsZUluZm9ybWF0aW9uLnR5cGUoKSk7CisgICAgICAgICAgICBSZWZQdHI8V2FzbTo6VGFibGU+
IHdhc21UYWJsZSA9IFdhc206OlRhYmxlOjp0cnlDcmVhdGUobW9kdWxlSW5mb3JtYXRpb24udGFi
bGVzW2ldLmluaXRpYWwoKSwgbW9kdWxlSW5mb3JtYXRpb24udGFibGVzW2ldLm1heGltdW0oKSwg
bW9kdWxlSW5mb3JtYXRpb24udGFibGVzW2ldLnR5cGUoKSk7CiAgICAgICAgICAgICBpZiAoIXdh
c21UYWJsZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNz
ZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sICJjb3VsZG4ndCBjcmVhdGUgVGFibGUiKSk7CiAgICAg
ICAgICAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gSlNXZWJBc3NlbWJseVRhYmxlOjpj
cmVhdGUoZXhlYywgdm0sIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlUYWJsZVN0cnVjdHVyZSgp
LCB3YXNtVGFibGUucmVsZWFzZU5vbk51bGwoKSk7CkBAIC0zMTksNyArMzE1LDcgQEAgdm9pZCBX
ZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpT
T2JqZWN0KiBpbXBvcnRPYmoKICAgICAgICAgICAgIC8vIElmIGl0J3MgZGVmaW5lZCB0byBiZSB0
b28gbGFyZ2UsIHdlIHNob3VsZCBoYXZlIHRocm93biBhIHZhbGlkYXRpb24gZXJyb3IuCiAgICAg
ICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgQVNTRVJUKHRh
YmxlKTsKLSAgICAgICAgICAgIG1faW5zdGFuY2UtPnNldFRhYmxlKHZtLCB0YWJsZSk7CisgICAg
ICAgICAgICBtX2luc3RhbmNlLT5zZXRUYWJsZSh2bSwgaSwgdGFibGUpOwogICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICAgICAgfQogICAgIH0KQEAg
LTM5NywxMCArMzkzLDggQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRPYmoKICAgICAgICAgfQogICAg
ICAgICBjYXNlIFdhc206OkV4dGVybmFsS2luZDo6VGFibGU6IHsKICAgICAgICAgICAgIC8vIFRo
aXMgc2hvdWxkIGJlIGd1YXJhbnRlZWQgYnkgbW9kdWxlIHZlcmlmaWNhdGlvbi4KLSAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG1faW5zdGFuY2UtPnRhYmxlKCkpOyAKLSAgICAgICAgICAgIEFT
U0VSVChleHAua2luZEluZGV4ID09IDApOwotCi0gICAgICAgICAgICBleHBvcnRlZFZhbHVlID0g
bV9pbnN0YW5jZS0+dGFibGUoKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faW5zdGFu
Y2UtPnRhYmxlKGV4cC5raW5kSW5kZXgpKTsKKyAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBt
X2luc3RhbmNlLT50YWJsZShleHAua2luZEluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxLaW5kOjpNZW1vcnk6IHsKQEAgLTQ4
Niw3ICs0ODAsNiBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgV2FzbTo6TW9kdWxlJiBtb2R1bGUgPSBtX2luc3RhbmNlLT5p
bnN0YW5jZSgpLm1vZHVsZSgpOwogICAgIFdhc206OkNvZGVCbG9jayogY29kZUJsb2NrID0gbV9p
bnN0YW5jZS0+aW5zdGFuY2UoKS5jb2RlQmxvY2soKTsKICAgICBjb25zdCBXYXNtOjpNb2R1bGVJ
bmZvcm1hdGlvbiYgbW9kdWxlSW5mb3JtYXRpb24gPSBtb2R1bGUubW9kdWxlSW5mb3JtYXRpb24o
KTsKLSAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gbV9pbnN0YW5jZS0+dGFibGUoKTsK
IAogICAgIGNvbnN0IFZlY3RvcjxXYXNtOjpTZWdtZW50OjpQdHI+JiBkYXRhID0gbW9kdWxlSW5m
b3JtYXRpb24uZGF0YTsKICAgICAKQEAgLTQ5OCwxNiArNDkxLDE2IEBAIEpTVmFsdWUgV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAg
IC8vIEFsc28sIGl0IGNvdWxkIGJlIHRoYXQgYSB0YWJsZSB3YXNuJ3QgaW1wb3J0ZWQsIG9yIHRo
YXQgdGhlIHRhYmxlCiAgICAgICAgICAgICAvLyBpbXBvcnRlZCB3YXNuJ3QgY29tcGF0aWJsZS4g
SG93ZXZlciwgdGhvc2Ugc2hvdWxkIGVycm9yIG91dCBiZWZvcmUKICAgICAgICAgICAgIC8vIGdl
dHRpbmcgaGVyZS4KLSAgICAgICAgICAgIEFTU0VSVCghIXRhYmxlKTsKKyAgICAgICAgICAgIEFT
U0VSVCghIW1faW5zdGFuY2UtPnRhYmxlKGVsZW1lbnQudGFibGVJbmRleCkpOwogCiAgICAgICAg
ICAgICBpZiAoIWVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnNpemUoKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICAgICAgdWludDMyX3QgdGFibGVJbmRleCA9IGVsZW1lbnQu
b2Zmc2V0LmlzR2xvYmFsSW1wb3J0KCkKKyAgICAgICAgICAgIHVpbnQzMl90IGVsZW1lbnRJbmRl
eCA9IGVsZW1lbnQub2Zmc2V0LmlzR2xvYmFsSW1wb3J0KCkKICAgICAgICAgICAgICAgICA/IHN0
YXRpY19jYXN0PHVpbnQzMl90PihtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmxvYWRJMzJHbG9iYWwo
ZWxlbWVudC5vZmZzZXQuZ2xvYmFsSW1wb3J0SW5kZXgoKSkpCiAgICAgICAgICAgICAgICAgOiBl
bGVtZW50Lm9mZnNldC5jb25zdFZhbHVlKCk7CiAKLSAgICAgICAgICAgIGZuKGVsZW1lbnQsIHRh
YmxlSW5kZXgpOworICAgICAgICAgICAgZm4oZWxlbWVudCwgZWxlbWVudC50YWJsZUluZGV4LCBl
bGVtZW50SW5kZXgpOwogCiAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNTMxLDkgKzUyNCw5IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQ6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9OwogCiAgICAgLy8gVmFsaWRh
dGlvbiBvZiBhbGwgZWxlbWVudCByYW5nZXMgY29tZXMgYmVmb3JlIGFsbCBUYWJsZSBhbmQgTWVt
b3J5IGluaXRpYWxpemF0aW9uLgotICAgIGZvckVhY2hFbGVtZW50KFsmXSAoY29uc3QgV2FzbTo6
RWxlbWVudCYgZWxlbWVudCwgdWludDMyX3QgdGFibGVJbmRleCkgewotICAgICAgICB1aW50NjRf
dCBsYXN0V3JpdHRlbkluZGV4ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRhYmxlSW5kZXgpICsg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnNpemUoKSkgLSAx
OwotICAgICAgICBpZiAoVU5MSUtFTFkobGFzdFdyaXR0ZW5JbmRleCA+PSB0YWJsZS0+bGVuZ3Ro
KCkpKQorICAgIGZvckVhY2hFbGVtZW50KFsmXSAoY29uc3QgV2FzbTo6RWxlbWVudCYgZWxlbWVu
dCwgdWludDMyX3QgdGFibGVJbmRleCwgdWludDMyX3QgZWxlbWVudEluZGV4KSB7CisgICAgICAg
IHVpbnQ2NF90IGxhc3RXcml0dGVuSW5kZXggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oZWxlbWVu
dEluZGV4KSArIHN0YXRpY19jYXN0PHVpbnQ2NF90PihlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy5z
aXplKCkpIC0gMTsKKyAgICAgICAgaWYgKFVOTElLRUxZKGxhc3RXcml0dGVuSW5kZXggPj0gbV9p
bnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPmxlbmd0aCgpKSkKICAgICAgICAgICAgIGV4Y2Vw
dGlvbiA9IEpTVmFsdWUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUpTV2ViQXNz
ZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sICJFbGVtZW50IGlzIHRyeWluZyB0byBzZXQgYW4gb3V0
IG9mIGJvdW5kcyB0YWJsZSBpbmRleCJfcykpKTsKICAgICB9KTsKIApAQCAtNTUyLDcgKzU0NSw3
IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbi52YWx1ZSgpOwogCiAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1faW5zdGFuY2UtPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAg
Zm9yRWFjaEVsZW1lbnQoWyZdIChjb25zdCBXYXNtOjpFbGVtZW50JiBlbGVtZW50LCB1aW50MzJf
dCB0YWJsZUluZGV4KSB7CisgICAgZm9yRWFjaEVsZW1lbnQoWyZdIChjb25zdCBXYXNtOjpFbGVt
ZW50JiBlbGVtZW50LCB1aW50MzJfdCB0YWJsZUluZGV4LCB1aW50MzJfdCBlbGVtZW50SW5kZXgp
IHsKICAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGVsZW1lbnQuZnVuY3Rpb25JbmRp
Y2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBlc3NlbnRpYWxs
eSBtZWFucyB3ZSdyZSBleHBvcnRpbmcgYW4gaW1wb3J0LgogICAgICAgICAgICAgLy8gV2UgbmVl
ZCBhIHN0b3J5IGhlcmUuIFdlIG5lZWQgdG8gY3JlYXRlIGEgV2ViQXNzZW1ibHlGdW5jdGlvbgpA
QCAtNTY4LDE0ICs1NjEsMTQgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZh
bHVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIGEg
V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24gY2FuIG5ldmVyIHdyYXAgYW5vdGhlciBXZWJBc3Nl
bWJseVdyYXBwZXJGdW5jdGlvbiwKICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG9ubHkgdHlw
ZSB0aGlzIGNvdWxkIGJlIGlzIFdlYkFzc2VtYmx5RnVuY3Rpb24uCiAgICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHdhc21GdW5jdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIHRh
YmxlLT5zZXQodGFibGVJbmRleCwgd2FzbUZ1bmN0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAg
Kyt0YWJsZUluZGV4OworICAgICAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT50YWJsZSh0YWJs
ZUluZGV4KS0+c2V0KGVsZW1lbnRJbmRleCwgd2FzbUZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAg
ICAgICAgKytlbGVtZW50SW5kZXg7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHRhYmxlLT5zZXQodGFibGVJbmRleCwK
KyAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+c2V0KGVsZW1l
bnRJbmRleCwKICAgICAgICAgICAgICAgICAgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5V3JhcHBl
ckZ1bmN0aW9uU3RydWN0dXJlKCksIGZ1bmN0aW9uSW1wb3J0LCBmdW5jdGlvbkluZGV4LCBtX2lu
c3RhbmNlLmdldCgpLCBzaWduYXR1cmVJbmRleCkpOwotICAgICAgICAgICAgICAgICsrdGFibGVJ
bmRleDsKKyAgICAgICAgICAgICAgICArK2VsZW1lbnRJbmRleDsKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIH0KIApAQCAtNTg5LDggKzU4Miw4IEBAIEpTVmFsdWUgV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAg
ICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gV2ViQXNzZW1ibHlGdW5jdGlvbjo6
Y3JlYXRlKAogICAgICAgICAgICAgICAgIHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
d2ViQXNzZW1ibHlGdW5jdGlvblN0cnVjdHVyZSgpLCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgp
LCBTdHJpbmcoKSwgbV9pbnN0YW5jZS5nZXQoKSwgZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVlLCBl
bnRyeXBvaW50TG9hZExvY2F0aW9uLCBzaWduYXR1cmVJbmRleCk7CiAKLSAgICAgICAgICAgIHRh
YmxlLT5zZXQodGFibGVJbmRleCwgZnVuY3Rpb24pOwotICAgICAgICAgICAgKyt0YWJsZUluZGV4
OworICAgICAgICAgICAgbV9pbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPnNldChlbGVtZW50
SW5kZXgsIGZ1bmN0aW9uKTsKKyAgICAgICAgICAgICsrZWxlbWVudEluZGV4OwogICAgICAgICB9
CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20u
anNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgppbmRleCA3NTI4NWQ2
ZmI3MDA5MDFjYTUyNzVlYTNmZDc1YmIxOGQzMGU0MTNiLi45NmU4YTFkMjA3NzI5OTAwZDM5NTE4
YjEwOTY1ZTZjNTc2ZDBmODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS93YXNtLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCkBA
IC02NywxMCArNjcsMTAgQEAKICAgICAgICAgInRlZV9sb2NhbCI6ICAgICAgICAgICB7ICJjYXRl
Z29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM0LCAicmV0dXJuIjogWyJhbnkiXSwgICAg
ICAicGFyYW1ldGVyIjogWyJhbnkiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3si
bmFtZSI6ICJsb2NhbF9pbmRleCIsICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3cml0ZSBh
IGxvY2FsIHZhcmlhYmxlIG9yIHBhcmFtZXRlciBhbmQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIiB9
LAogICAgICAgICAiZ2V0X2dsb2JhbCI6ICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwi
LCAgICAidmFsdWUiOiAgMzUsICJyZXR1cm4iOiBbImFueSJdLCAgICAgICJwYXJhbWV0ZXIiOiBb
XSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImdsb2JhbF9p
bmRleCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInJlYWQgYSBnbG9iYWwgdmFyaWFibGUi
IH0sCiAgICAgICAgICJzZXRfZ2xvYmFsIjogICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lh
bCIsICAgICJ2YWx1ZSI6ICAzNiwgInJldHVybiI6IFtdLCAgICAgICAgICAgInBhcmFtZXRlciI6
IFsiYW55Il0sICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZ2xvYmFs
X2luZGV4IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAid3JpdGUgYSBnbG9iYWwgdmFyaWFi
bGUiIH0sCi0gICAgICAgICJ0YWJsZS5nZXQiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3Bl
Y2lhbCIsICAgICJ2YWx1ZSI6ICAzNywgInJldHVybiI6IFsiYW55cmVmIl0sICAgInBhcmFtZXRl
ciI6IFsiaTMyIl0sICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiZ2V0IGEgdGFibGUgdmFsdWUi
IH0sCi0gICAgICAgICJ0YWJsZS5zZXQiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lh
bCIsICAgICJ2YWx1ZSI6ICAzOCwgInJldHVybiI6IFtdLCAgICAgICAgICAgInBhcmFtZXRlciI6
IFsiaTMyIiwgImFueXJlZiJdLCAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAic2V0IGEgdGFibGUgdmFsdWUiIH0s
CisgICAgICAgICJ0YWJsZS5nZXQiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIs
ICAgICJ2YWx1ZSI6ICAzNywgInJldHVybiI6IFsiYW55cmVmIl0sICAgInBhcmFtZXRlciI6IFsi
aTMyIl0sICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidGFibGVfaW5k
ZXgiLCAgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiZ2V0IGEgdGFibGUgdmFsdWUiIH0sCisg
ICAgICAgICJ0YWJsZS5zZXQiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAg
ICJ2YWx1ZSI6ICAzOCwgInJldHVybiI6IFtdLCAgICAgICAgICAgInBhcmFtZXRlciI6IFsiaTMy
IiwgImFueXJlZiJdLCAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidGFibGVfaW5kZXgi
LCAgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAic2V0IGEgdGFibGUgdmFsdWUiIH0sCiAgICAg
ICAgICJjYWxsIjogICAgICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2
YWx1ZSI6ICAxNiwgInJldHVybiI6IFsiY2FsbCJdLCAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJd
LCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZnVuY3Rpb25faW5kZXgi
LCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIGJ5IGl0cyBpbmRleCIg
fSwKLSAgICAgICAgImNhbGxfaW5kaXJlY3QiOiAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwg
ICAgICAgInZhbHVlIjogIDE3LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAicGFyYW1ldGVyIjog
WyJjYWxsIl0sICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBlX2lu
ZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAicmVzZXJ2ZWQiLCAidHlw
ZSI6ICJ2YXJ1aW50MSJ9XSwgICJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gaW5kaXJl
Y3Qgd2l0aCBhbiBleHBlY3RlZCBzaWduYXR1cmUiIH0sCisgICAgICAgICJjYWxsX2luZGlyZWN0
IjogICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxNywgInJldHVy
biI6IFsiY2FsbCJdLCAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAg
ImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1aW50
MzIifSwgeyJuYW1lIjogInRhYmxlX2luZGV4IiwidHlwZSI6ICJ2YXJ1aW50MzIifV0sImRlc2Ny
aXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBpbmRpcmVjdCB3aXRoIGFuIGV4cGVjdGVkIHNpZ25h
dHVyZSIgfSwKICAgICAgICAgImkzMi5sb2FkOF9zIjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJt
ZW1vcnkiLCAgICAgInZhbHVlIjogIDQ0LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1l
dGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJm
bGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0Iiwg
ICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5
IiB9LAogICAgICAgICAiaTMyLmxvYWQ4X3UiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9y
eSIsICAgICAidmFsdWUiOiAgNDUsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIi
OiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdz
IiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0
eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0s
CiAgICAgICAgICJpMzIubG9hZDE2X3MiOiAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5Iiwg
ICAgICJ2YWx1ZSI6ICA0NiwgInJldHVybiI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRlciI6IFsi
YWRkciJdLCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAg
ICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUi
OiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGE2
ZjYxMzJjMTIxOWMwODc4MTgzZDBiM2QxY2RlZmZkY2U3NDA5Ny4uYzkzNDNlZGZhZjVlNWY1OTFj
ZTg1NjllNTMxODkyM2Q0NzY5ODQ3MSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MyBAQAorMjAxOS0wNi0xOCAgSnVzdGlu
IE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dBU00tUmVm
ZXJlbmNlc10gQWRkIHN1cHBvcnQgZm9yIG11bHRpcGxlIHRhYmxlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NzYwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgKiB3YXNtL0J1aWxkZXIuanM6CisgICAgICAg
ICogd2FzbS9qcy1hcGkvY2FsbC1pbmRpcmVjdC5qczoKKyAgICAgICAgKGNvbnN0Lm9uZVRhYmxl
KToKKyAgICAgICAgKGNvbnN0Lm11bHRpVGFibGUpOgorICAgICAgICAobXVsdGlUYWJsZSk6Cisg
ICAgICAgIChtdWx0aVRhYmxlLlBvbHlwaGljMkltcG9ydCk6CisgICAgICAgIChtdWx0aVRhYmxl
LlZpcnR1YWxJbXBvcnQpOgorICAgICAgICAoY29uc3Qud2FzbU1vZHVsZVdoaWNoSW1wb3J0SlMp
OiBEZWxldGVkLgorICAgICAgICAoY29uc3QubWFrZVRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAg
KCk6IERlbGV0ZWQuCisgICAgICAgIChQb2x5cGhpYzJJbXBvcnQpOiBEZWxldGVkLgorICAgICAg
ICAoVmlydHVhbEltcG9ydCk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy1hcGkvdGFibGUu
anM6CisgICAgICAgIChuZXcuV2ViQXNzZW1ibHkuTW9kdWxlKToKKyAgICAgICAgKGFzc2VydC50
aHJvd3MpOgorICAgICAgICAoYXNzZXJ0QmFkVGFibGVJbXBvcnQpOgorICAgICAgICAoYXNzZXJ0
LnRydXRoeSk6CisgICAgICAgIChhc3NlcnQudGhyb3dzLm5ldy5XZWJBc3NlbWJseS5Nb2R1bGUu
YnVpbGRlci5XZWJBc3NlbWJseSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9yZWZlcmVuY2Vz
L2FueXJlZl90YWJsZS5qczoKKyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMvYW55cmVmX3RhYmxl
X2ltcG9ydC5qczoKKyAgICAgICAgKG1ha2VJbXBvcnQpOgorICAgICAgICAoc3RyaW5nX2FwcGVh
cmVkX2hlcmUuZnVsbEdDLmFzc2VydC5lcS4xLmV4cG9ydHMuZ2V0X3RibC5tYWtlSW1wb3J0KToK
KyAgICAgICAgKHN0cmluZ19hcHBlYXJlZF9oZXJlLmZ1bGxHQy5hc3NlcnQuZXEuMS5leHBvcnRz
LmdldF90YmwpOgorICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy9tdWx0aXRhYmxlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGFzc2VydC50aHJvd3MuMS5leHBvcnRzLnNldF90YmwwKToKKyAgICAgICAg
KGFzc2VydC50aHJvd3MpOgorICAgICAgICAoYXNzZXJ0LmVxKToKKyAgICAgICAgKiB3YXNtL3Jl
ZmVyZW5jZXMvdmFsaWRhdGlvbi5qczoKKyAgICAgICAgKGFzc2VydC50aHJvd3MubmV3LldlYkFz
c2VtYmx5Lk1vZHVsZS5iaW4pOgorICAgICAgICAoYXNzZXJ0LnRocm93cyk6CisgICAgICAgICog
d2FzbS9zcGVjLXRlc3RzL2ltcG9ydHMud2FzdC5qczoKKyAgICAgICAgKiB3YXNtL3dhc20uanNv
bjoKKworICAgICAgICAqIHdhc20vQnVpbGRlci5qczoKKyAgICAgICAgKiB3YXNtL2pzLWFwaS9j
YWxsLWluZGlyZWN0LmpzOgorICAgICAgICAoY29uc3Qub25lVGFibGUpOgorICAgICAgICAoY29u
c3QubXVsdGlUYWJsZSk6CisgICAgICAgIChtdWx0aVRhYmxlKToKKyAgICAgICAgKG11bHRpVGFi
bGUuUG9seXBoaWMySW1wb3J0KToKKyAgICAgICAgKG11bHRpVGFibGUuVmlydHVhbEltcG9ydCk6
CisgICAgICAgIChjb25zdC53YXNtTW9kdWxlV2hpY2hJbXBvcnRKUyk6IERlbGV0ZWQuCisgICAg
ICAgIChjb25zdC5tYWtlVGFibGUpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKyAg
ICAgICAgKFBvbHlwaGljMkltcG9ydCk6IERlbGV0ZWQuCisgICAgICAgIChWaXJ0dWFsSW1wb3J0
KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2pzLWFwaS90YWJsZS5qczoKKyAgICAgICAgKG5l
dy5XZWJBc3NlbWJseS5Nb2R1bGUpOgorICAgICAgICAoYXNzZXJ0LnRocm93cyk6CisgICAgICAg
IChhc3NlcnRCYWRUYWJsZUltcG9ydCk6CisgICAgICAgIChhc3NlcnQudHJ1dGh5KToKKyAgICAg
ICAgKGFzc2VydC50aHJvd3MubmV3LldlYkFzc2VtYmx5Lk1vZHVsZS5idWlsZGVyLldlYkFzc2Vt
Ymx5KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMvYW55cmVmX3RhYmxlLmpz
OgorICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy9hbnlyZWZfdGFibGVfaW1wb3J0LmpzOgorICAg
ICAgICAobWFrZUltcG9ydCk6CisgICAgICAgIChzdHJpbmdfYXBwZWFyZWRfaGVyZS5mdWxsR0Mu
YXNzZXJ0LmVxLjEuZXhwb3J0cy5nZXRfdGJsLm1ha2VJbXBvcnQpOgorICAgICAgICAoc3RyaW5n
X2FwcGVhcmVkX2hlcmUuZnVsbEdDLmFzc2VydC5lcS4xLmV4cG9ydHMuZ2V0X3RibCk6CisgICAg
ICAgICogd2FzbS9yZWZlcmVuY2VzL2Z1bmNfcmVmLmpzOgorICAgICAgICAoR2V0TG9jYWwuMC5J
MzJDb25zdC4wLlRhYmxlU2V0LkVuZC5FbmQuV2ViQXNzZW1ibHkuZnVuKTogRGVsZXRlZC4KKyAg
ICAgICAgKEdldExvY2FsLjAuSTMyQ29uc3QuMC5UYWJsZVNldC5FbmQuRW5kLldlYkFzc2VtYmx5
LmFzc2VydC50aHJvd3MpOiBEZWxldGVkLgorICAgICAgICAoR2V0TG9jYWwuMC5JMzJDb25zdC4w
LlRhYmxlU2V0LkVuZC5FbmQuV2ViQXNzZW1ibHkpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20v
cmVmZXJlbmNlcy9tdWx0aXRhYmxlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydC50aHJvd3Mu
MS5leHBvcnRzLnNldF90YmwwKToKKyAgICAgICAgKGFzc2VydC50aHJvd3MpOgorICAgICAgICAo
YXNzZXJ0LmVxKToKKyAgICAgICAgKHN0cmluZ19hcHBlYXJlZF9oZXJlLnRhYmxlSW5zYW5pdHkp
OgorICAgICAgICAoSTMyQ29uc3QuMC5HZXRMb2NhbC4wLlRhYmxlU2V0LjEuRW5kLkVuZC5XZWJB
c3NlbWJseS4pOgorICAgICAgICAoSTMyQ29uc3QuMC5HZXRMb2NhbC4wLlRhYmxlU2V0LjEuRW5k
LkVuZC5XZWJBc3NlbWJseSk6CisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL3ZhbGlkYXRpb24u
anM6CisgICAgICAgIChhc3NlcnQudGhyb3dzLm5ldy5XZWJBc3NlbWJseS5Nb2R1bGUuYmluKToK
KyAgICAgICAgKGFzc2VydC50aHJvd3MpOgorICAgICAgICAqIHdhc20vc3BlYy10ZXN0cy9pbXBv
cnRzLndhc3QuanM6CisgICAgICAgICogd2FzbS93YXNtLmpzb246CisKIDIwMTktMDYtMTggIFRh
ZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIGNvZGUgc2hv
dWxkIG5vdCByZWlmeSB0aGUgbmFtZXMgb2YgYnVpbHRpbiBmdW5jdGlvbnMgd2l0aCBwcml2YXRl
IG5hbWVzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcyBiL0pTVGVzdHMvd2Fz
bS9CdWlsZGVyLmpzCmluZGV4IDY1ZjFmNDc3YTk4Yjg2MjBmY2NkMmFhOGY4YzExMDllMGFmNjc4
NjYuLjk3NjM3N2Y3YjNkOTEzZDRiOGRiMWY4YTc1OTZlNzNkMjc5MWNiNDcgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCkBA
IC0zMDYsNiArMzA2LDcgQEAgY29uc3QgX2NoZWNrSW1tcyA9IChvcCwgaW1tcywgZXhwZWN0ZWRJ
bW1zLCByZXQpID0+IHsKICAgICAgICAgY2FzZSAidGFyZ2V0X2NvdW50IjogYnJlYWs7IC8vIGlt
cHJvdmUgY2hlY2tpbmcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MzQyMQogICAgICAgICBjYXNlICJ0YXJnZXRfdGFibGUiOiBicmVhazsgLy8gaW1wcm92ZSBjaGVj
a2luZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCiAgICAg
ICAgIGNhc2UgInJlc2VydmVkIjogYnJlYWs7IC8vIGltcHJvdmUgY2hlY2tpbmcgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQorICAgICAgICBjYXNlICJ0YWJs
ZV9pbmRleCI6IGJyZWFrOyAvLyBpbXByb3ZlIGNoZWNraW5nIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVy
cm9yKGBJbXBsZW1lbnRhdGlvbiBwcm9ibGVtOiB1bmhhbmRsZWQgaW1tZWRpYXRlICIke2V4cGVj
dC5uYW1lfSIgb24gIiR7b3B9ImApOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy93YXNtL2pzLWFwaS9jYWxsLWluZGlyZWN0LmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9j
YWxsLWluZGlyZWN0LmpzCmluZGV4IDAxY2Q0MmY5Yjc5YTkyMWIxYmJhYTVhYjU3NmZjMGQ5MTA0
MzgzMjguLjJmYWZjYzE5MmIxMjA1MzljN2FhNDU1MWQ0NDNkYWFlN2JkODE5NzIgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvY2FsbC1pbmRpcmVjdC5qcworKysgYi9KU1Rlc3RzL3dh
c20vanMtYXBpL2NhbGwtaW5kaXJlY3QuanMKQEAgLTEsNyArMSw3IEBACiBpbXBvcnQgKiBhcyBh
c3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxk
ZXIuanMnOwogCi1jb25zdCB3YXNtTW9kdWxlV2hpY2hJbXBvcnRKUyA9ICgpID0+IHsKK2NvbnN0
IG9uZVRhYmxlID0gKCkgPT4gewogICAgIGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkK
ICAgICAgICAgLlR5cGUoKS5FbmQoKQogICAgICAgICAuSW1wb3J0KCkKQEAgLTMxLDYgKzMxLDM5
IEBAIGNvbnN0IHdhc21Nb2R1bGVXaGljaEltcG9ydEpTID0gKCkgPT4gewogICAgIHJldHVybiBt
b2R1bGU7CiB9OwogCitjb25zdCBtdWx0aVRhYmxlID0gKCkgPT4geworICAgIGNvbnN0IGJ1aWxk
ZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAuSW1w
b3J0KCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiaW1wIiwgImZ1bmMiLCB7IHBhcmFtczogWyJp
MzIiXSB9KQorICAgICAgICAgICAgLlRhYmxlKCJpbXAiLCAidGFibGUwIiwgeyBpbml0aWFsOiAw
LCBtYXhpbXVtOiAwLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgICAgICAgLlRhYmxlKCJp
bXAiLCAidGFibGUiLCB7IGluaXRpYWw6IDEsIG1heGltdW06IDEsIGVsZW1lbnQ6ICJhbnlmdW5j
In0pCisgICAgICAgIC5FbmQoKQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAu
RXhwb3J0KCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiY2hhbmdlQ291bnRlciIpCisgICAgICAg
ICAgICAuRnVuY3Rpb24oImNhbGxGdW5jIikKKyAgICAgICAgLkVuZCgpCisgICAgICAgIC5Db2Rl
KCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiY2hhbmdlQ291bnRlciIsIHsgcGFyYW1zOiBbImkz
MiIsICJpMzIiXSB9KQorICAgICAgICAgICAgICAgIC5JMzJDb25zdCg0MikKKyAgICAgICAgICAg
ICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgICAuSTMyQWRkKCkKKyAgICAgICAgICAg
ICAgICAuR2V0TG9jYWwoMSkKKyAgICAgICAgICAgICAgICAuQ2FsbEluZGlyZWN0KDAsIDEpIC8v
IENhbGxzIHRhYmxlWzBdKHBhcmFtWzBdICsgNDIpLgorICAgICAgICAgICAgLkVuZCgpCisgICAg
ICAgICAgICAuRnVuY3Rpb24oImNhbGxGdW5jIiwgeyBwYXJhbXM6IFsiaTMyIl0gfSkKKyAgICAg
ICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgICAuQ2FsbCgwKSAvLyBDYWxs
cyBmdW5jKHBhcmFtWzBdICsgNDIpCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgLkVuZCgp
OworICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKKyAgICBjb25z
dCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CisgICAgcmV0dXJuIG1vZHVs
ZTsKK307CisKK2ZvciAoY29uc3Qgd2FzbU1vZHVsZVdoaWNoSW1wb3J0SlMgb2YgW29uZVRhYmxl
LCBtdWx0aVRhYmxlXSkgeworCiBjb25zdCBtYWtlVGFibGUgPSAoKSA9PiB7CiAgICAgcmV0dXJu
IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDogMSwgbWF4aW11bTogMSwgZWxlbWVudDog
ImFueWZ1bmMifSk7CiB9OwpAQCAtNDAsNyArNzMsNyBAQCBjb25zdCBtYWtlVGFibGUgPSAoKSA9
PiB7CiAgICAgY29uc3QgY291bnRlclNldHRlciA9IHYgPT4gY291bnRlciA9IHY7CiAgICAgY29u
c3QgdGFibGUgPSBtYWtlVGFibGUoKTsKICAgICBjb25zdCBtb2R1bGUgPSB3YXNtTW9kdWxlV2hp
Y2hJbXBvcnRKUygpOwotICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3Rh
bmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291bnRlclNldHRlciwgdGFibGV9IH0pOworICAg
IGNvbnN0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6
IHsgZnVuYzogY291bnRlclNldHRlciwgdGFibGUsIHRhYmxlMDogbmV3IFdlYkFzc2VtYmx5LlRh
YmxlKHtpbml0aWFsOiAwLCBtYXhpbXVtOiAwLCBlbGVtZW50OiAiYW55ZnVuYyJ9KSB9IH0pOwog
ICAgIHRhYmxlLnNldCgwLCBpbnN0YW5jZS5leHBvcnRzLmNhbGxGdW5jKTsKICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDQwOTY7ICsraSkgewogICAgICAgICAvLyBJbnZva2UgdGhpcyBhIGJ1bmNo
IG9mIHRpbWVzIHRvIG1ha2Ugc3VyZSB0aGUgSUMgaW4gdGhlIHdhc20gLT4gSlMgc3R1YiB3b3Jr
cyBjb3JyZWN0bHkuCkBAIC01NywxMSArOTAsMTEgQEAgY29uc3QgbWFrZVRhYmxlID0gKCkgPT4g
ewogICAgIGNvbnN0IG1vZHVsZSA9IHdhc21Nb2R1bGVXaGljaEltcG9ydEpTKCk7CiAKICAgICBj
b25zdCB0YWJsZUEgPSBtYWtlVGFibGUoKTsKLSAgICBjb25zdCBpbnN0YW5jZUEgPSBuZXcgV2Vi
QXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDogeyBmdW5jOiBjb3VudGVyQVNldHRlciwg
dGFibGU6IHRhYmxlQX0gfSk7CisgICAgY29uc3QgaW5zdGFuY2VBID0gbmV3IFdlYkFzc2VtYmx5
Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291bnRlckFTZXR0ZXIsIHRhYmxlOiB0
YWJsZUEsIHRhYmxlMDogbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOiAwLCBtYXhpbXVt
OiAwLCBlbGVtZW50OiAiYW55ZnVuYyJ9KSB9IH0pOwogICAgIHRhYmxlQS5zZXQoMCwgaW5zdGFu
Y2VBLmV4cG9ydHMuY2FsbEZ1bmMpOwogCiAgICAgY29uc3QgdGFibGVCID0gbWFrZVRhYmxlKCk7
Ci0gICAgY29uc3QgaW5zdGFuY2VCID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwg
eyBpbXA6IHsgZnVuYzogY291bnRlckJTZXR0ZXIsIHRhYmxlOiB0YWJsZUJ9IH0pOworICAgIGNv
bnN0IGluc3RhbmNlQiA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7
IGZ1bmM6IGNvdW50ZXJCU2V0dGVyLCB0YWJsZTogdGFibGVCLCB0YWJsZTA6IG5ldyBXZWJBc3Nl
bWJseS5UYWJsZSh7aW5pdGlhbDogMCwgbWF4aW11bTogMCwgZWxlbWVudDogImFueWZ1bmMifSkg
fSB9KTsKICAgICB0YWJsZUIuc2V0KDAsIGluc3RhbmNlQi5leHBvcnRzLmNhbGxGdW5jKTsKICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDIwNDg7ICsraSkgewogICAgICAgICBpbnN0YW5jZUEuZXhw
b3J0cy5jaGFuZ2VDb3VudGVyKGksIDApOwpAQCAtOTMsNyArMTI2LDcgQEAgY29uc3QgbWFrZVRh
YmxlID0gKCkgPT4gewogICAgIGxldCBpbnN0YW5jZXMgPSBbXTsKICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IG51bTsgKytpKSB7CiAgICAgICAgIGxldCB0YWJsZSA9IG1ha2VUYWJsZSgpOwotICAg
ICAgICBpbnN0YW5jZXNbaV0gPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGlt
cDogeyBmdW5jOiBjb3VudGVyU2V0dGVyc1tpXSwgdGFibGV9IH0pOworICAgICAgICBpbnN0YW5j
ZXNbaV0gPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDogeyBmdW5jOiBj
b3VudGVyU2V0dGVyc1tpXSwgdGFibGUsIHRhYmxlMDogbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtp
bml0aWFsOiAwLCBtYXhpbXVtOiAwLCBlbGVtZW50OiAiYW55ZnVuYyJ9KSB9IH0pOwogICAgICAg
ICB0YWJsZS5zZXQoMCwgaW5zdGFuY2VzW2ldLmV4cG9ydHMuY2FsbEZ1bmMpOwogICAgIH0KICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDIwNDg7ICsraSkgewpAQCAtMTA0LDMgKzEzNyw1IEBAIGNv
bnN0IG1ha2VUYWJsZSA9ICgpID0+IHsKICAgICAgICAgfQogICAgIH0KIH0pKCk7CisKK30KZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGFibGUuanMgYi9KU1Rlc3RzL3dhc20vanMt
YXBpL3RhYmxlLmpzCmluZGV4IGJiY2E4OWVjMzRmNzE5MTIwODRmNjMwOWFhYzJkNjQ1NTBhNDNi
ZDEuLjFiODQ0NDMxY2U2NWY5MWM0Mzc1MzI1ZDVjYWU1M2RjOGJjMjQzYzcgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvd2FzbS9qcy1hcGkvdGFibGUuanMKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90
YWJsZS5qcwpAQCAtMTMsNyArMTMsNyBAQCBpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNz
ZXJ0LmpzJzsKICAgICAgICAgLkVuZCgpCiAgICAgICAgIC5Db2RlKCkKICAgICAgICAgLkVuZCgp
OwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWlsZGVy
LldlYkFzc2VtYmx5KCkuZ2V0KCkpLCBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsICJXZWJBc3Nl
bWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDM0OiBDYW5ub3QgaGF2ZSBtb3JlIHRo
YW4gb25lIFRhYmxlIGZvciBub3ciKTsKKyAgICBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxk
ZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSkKIH0KIAogewpAQCAtMzgsNyArMzgsNyBAQCBpbXBvcnQg
KiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKICAgICAgICAgLkVuZCgpCiAgICAgICAg
IC5Db2RlKCkKICAgICAgICAgLkVuZCgpOwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdl
YkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCkpLCBXZWJBc3NlbWJs
eS5Db21waWxlRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRl
IDE3OiBUYWJsZSBjb3VudCBvZiAyIGlzIGludmFsaWQsIGF0IG1vc3QgMSBpcyBhbGxvd2VkIGZv
ciBub3cgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3Nl
bWJseSgpLmdldCgpKScpIik7CisgICAgbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldl
YkFzc2VtYmx5KCkuZ2V0KCkpCiB9CiAKIHsKQEAgLTczLDcgKzczLDI4IEBAIGltcG9ydCAqIGFz
IGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOwogICAgICAgICAgICAgICAgIC5DYWxsSW5kaXJl
Y3QoMCwgMSkKICAgICAgICAgICAgIC5FbmQoKQogICAgICAgICAuRW5kKCk7Ci0gICAgYXNzZXJ0
LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHko
KS5nZXQoKSksIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBk
b2Vzbid0IHBhcnNlIGF0IGJ5dGUgNjogY2FsbF9pbmRpcmVjdCdzICdyZXNlcnZlZCcgdmFydWlu
dDEgbXVzdCBiZSAweDAsIGluIGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpKScpIik7CisgICAg
YXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNz
ZW1ibHkoKS5nZXQoKSksIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgIldlYkFzc2VtYmx5Lk1v
ZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgNjogY2FsbF9pbmRpcmVjdCdzIHRhYmxlIGluZGV4
IDEgaW52YWxpZCwgbGltaXQgaXMgMSwgaW4gZnVuY3Rpb24gYXQgaW5kZXggMCAoZXZhbHVhdGlu
ZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCkpJyki
KTsKK30KKworeworICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQnVpbGRlcigpCisgICAgICAgIC5U
eXBlKCkuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlRhYmxlKCkK
KyAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDoyMCwgZWxlbWVudDoiYW55ZnVuYyJ9KQorICAg
ICAgICAgICAgLlRhYmxlKHtpbml0aWFsOjIwLCBlbGVtZW50OiJhbnlmdW5jIn0pCisgICAgICAg
IC5FbmQoKQorICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZm9vIikK
KyAgICAgICAgLkVuZCgpCisgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigi
Zm9vIiwge3BhcmFtczogWyJpMzIiXX0pCisgICAgICAgICAgICAgICAgLkdldExvY2FsKDApCisg
ICAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgICAgLkNhbGxJbmRpcmVj
dCgwLCAxKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgIC5FbmQoKTsKKyAgICBuZXcgV2Vi
QXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSkKIH0KIAogewpAQCAt
MTg2LDcgKzIwNyw3IEBAIGZ1bmN0aW9uIGFzc2VydEJhZFRhYmxlSW1wb3J0KHRhYmxlRGVzY3Jp
cHRpb24sIG1lc3NhZ2UpIHsKICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKICAgICAgICAgLkNv
ZGUoKQogICAgICAgICAuRW5kKCk7Ci0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNz
ZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSksIFdlYkFzc2VtYmx5LkNv
bXBpbGVFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgMzk6
IENhbm5vdCBoYXZlIG1vcmUgdGhhbiBvbmUgVGFibGUgZm9yIG5vdyIpOworICAgIG5ldyBXZWJB
c3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpKQogfQogCiAKQEAgLTMy
MCwzICszNDEsMjYgQEAgYXNzZXJ0LnRocm93cygoKSA9PiBXZWJBc3NlbWJseS5UYWJsZS5wcm90
b3R5cGUuZ3Jvdyh1bmRlZmluZWQpLCBUeXBlRXJyb3IsIGBleHAKICAgICBhc3NlcnQuZXEoaW5z
dGFuY2UuZXhwb3J0cy50YWJsZS5sZW5ndGgsIDIwKTsKICAgICBhc3NlcnQudHJ1dGh5KGluc3Rh
bmNlLmV4cG9ydHMudGFibGUgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5UYWJsZSk7CiB9CisKK3sK
KyAgICBjb25zdCBidWlsZGVyID0gbmV3IEJ1aWxkZXIoKQorICAgICAgICAuVHlwZSgpLkVuZCgp
CisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAg
ICAuVGFibGUoe2luaXRpYWw6IDAsIG1heGltdW06IDEsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisg
ICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDIwLCBtYXhpbXVtOiAzMCwgZWxlbWVudDogImFu
eWZ1bmMifSkKKyAgICAgICAgLkVuZCgpCisgICAgICAgIC5FeHBvcnQoKQorICAgICAgICAgICAg
LlRhYmxlKCJ0YWJsZTAiLCAwKQorICAgICAgICAgICAgLlRhYmxlKCJ0YWJsZSIsIDEpCisgICAg
ICAgICAgICAuVGFibGUoInRhYmxlMiIsIDEpCisgICAgICAgIC5FbmQoKQorICAgICAgICAuQ29k
ZSgpLkVuZCgpOworCisgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShi
dWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCkpOworICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFdl
YkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSk7CisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9y
dHMudGFibGUsIGluc3RhbmNlLmV4cG9ydHMudGFibGUyKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFu
Y2UuZXhwb3J0cy50YWJsZS5sZW5ndGgsIDIwKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhw
b3J0cy50YWJsZTAubGVuZ3RoLCAwKTsKKyAgICBhc3NlcnQudHJ1dGh5KGluc3RhbmNlLmV4cG9y
dHMudGFibGUgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5UYWJsZSk7Cit9CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9hbnlyZWZfdGFibGUuanMgYi9KU1Rlc3RzL3dhc20vcmVm
ZXJlbmNlcy9hbnlyZWZfdGFibGUuanMKaW5kZXggYjJiY2FlY2JlYmRmZDM2ODNiMzE3OGQ0MmU1
ODUwNjBiYjk5YmUyMC4uYmM5NWY2N2RhMTZmZTY1MmM5NmM2NjkyNjVjNjY0NDg4NmVlODY3NCAx
MDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvYW55cmVmX3RhYmxlLmpzCisrKyBi
L0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZS5qcwpAQCAtMTgsMTIgKzE4LDEy
IEBAIGNvbnN0ICQxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5N
b2R1bGUoKG5ldyBCdWlsZGVyKCkpCiAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibCIsIHsgcGFy
YW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQogICAgICAgICAgIC5JMzJDb25zdCgwKQog
ICAgICAgICAgIC5HZXRMb2NhbCgwKQotICAgICAgICAgIC5UYWJsZVNldCgpCisgICAgICAgICAg
LlRhYmxlU2V0KDApCiAgICAgICAgIC5FbmQoKQogCiAgICAgICAgIC5GdW5jdGlvbigiZ2V0X3Ri
bCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQogICAgICAgICAgIC5JMzJDb25zdCgw
KQotICAgICAgICAgIC5UYWJsZUdldCgpCisgICAgICAgICAgLlRhYmxlR2V0KDApCiAgICAgICAg
IC5FbmQoKQogCiAgICAgICAgIC5GdW5jdGlvbigidGJsX2lzX251bGwiLCB7IHBhcmFtczogW10s
IHJldDogImkzMiIgfSkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2FueXJl
Zl90YWJsZV9pbXBvcnQuanMgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9hbnlyZWZfdGFibGVf
aW1wb3J0LmpzCmluZGV4IDg4Y2FiN2MyM2ZlN2I0MGFkNjllYzIzNmQ0YmI2OWQyMzUxOGI2M2Uu
LjE3NDJiYjIwOGMwYTgyNDI0MjcwZWQ1YjkwZmYwYTZiNDA4NzUzMDEgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvd2FzbS9yZWZlcmVuY2VzL2FueXJlZl90YWJsZV9pbXBvcnQuanMKKysrIGIvSlNUZXN0
cy93YXNtL3JlZmVyZW5jZXMvYW55cmVmX3RhYmxlX2ltcG9ydC5qcwpAQCAtMjIsMTIgKzIyLDEy
IEBAIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwogICAgICAgICAgICAgLkZ1
bmN0aW9uKCJzZXRfdGJsIiwgeyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCiAg
ICAgICAgICAgICAgIC5JMzJDb25zdCgwKQogICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKLSAg
ICAgICAgICAgICAgLlRhYmxlU2V0KCkKKyAgICAgICAgICAgICAgLlRhYmxlU2V0KDApCiAgICAg
ICAgICAgICAuRW5kKCkKIAogICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsIiwgeyBwYXJh
bXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCiAgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQotICAg
ICAgICAgICAgICAuVGFibGVHZXQoKQorICAgICAgICAgICAgICAuVGFibGVHZXQoMCkKICAgICAg
ICAgICAgIC5FbmQoKQogCiAgICAgICAgICAgICAuRnVuY3Rpb24oInRibF9pc19udWxsIiwgeyBw
YXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCkBAIC04OCwxMiArODgsMTIgQEAgaW1wb3J0IEJ1aWxk
ZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CiAgICAgICAgICAgICAuRnVuY3Rpb24oInNldF90Ymwi
LCB7IHBhcmFtczogWyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkKICAgICAgICAgICAgICAgLkkz
MkNvbnN0KDApCiAgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQotICAgICAgICAgICAgICAuVGFi
bGVTZXQoKQorICAgICAgICAgICAgICAuVGFibGVTZXQoMCkKICAgICAgICAgICAgIC5FbmQoKQog
CiAgICAgICAgICAgICAuRnVuY3Rpb24oImdldF90YmwiLCB7IHBhcmFtczogW10sIHJldDogImFu
eXJlZiIgfSkKICAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCi0gICAgICAgICAgICAgIC5UYWJs
ZUdldCgpCisgICAgICAgICAgICAgIC5UYWJsZUdldCgwKQogICAgICAgICAgICAgLkVuZCgpCiAK
ICAgICAgICAgICAgIC5GdW5jdGlvbigidGJsX2lzX251bGwiLCB7IHBhcmFtczogW10sIHJldDog
ImkzMiIgfSkKQEAgLTEyNywxMiArMTI3LDEyIEBAIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1
aWxkZXIuanMnOwogICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsIiwgeyBwYXJhbXM6IFsi
YW55cmVmIl0sIHJldDogInZvaWQiIH0pCiAgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQogICAg
ICAgICAgICAgICAuR2V0TG9jYWwoMCkKLSAgICAgICAgICAgICAgLlRhYmxlU2V0KCkKKyAgICAg
ICAgICAgICAgLlRhYmxlU2V0KDApCiAgICAgICAgICAgICAuRW5kKCkKIAogICAgICAgICAgICAg
LkZ1bmN0aW9uKCJnZXRfdGJsIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCiAgICAg
ICAgICAgICAgIC5JMzJDb25zdCgwKQotICAgICAgICAgICAgICAuVGFibGVHZXQoKQorICAgICAg
ICAgICAgICAuVGFibGVHZXQoMCkKICAgICAgICAgICAgIC5FbmQoKQogCiAgICAgICAgICAgICAu
RnVuY3Rpb24oInRibF9pc19udWxsIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qcyBiL0pTVGVzdHMvd2Fz
bS9yZWZlcmVuY2VzL2Z1bmNfcmVmLmpzCmluZGV4IDM1ZTA2ZTQ2NTgzODcyODNjNTgzMzViOWI2
NmY3Nzg1M2Y5YmIxMDIuLjM2YTc5YjZmMzQyMjMyNjdkZTRlZTRkNDJiNzY3MTU2NTlhNDk2OGIg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2Z1bmNfcmVmLmpzCisrKyBiL0pT
VGVzdHMvd2FzbS9yZWZlcmVuY2VzL2Z1bmNfcmVmLmpzCkBAIC0yNTcsNyArMjU3LDcgQEAgYXNz
ZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQog
ICAgIC5GdW5jdGlvbigiaCIsIHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJ2b2lkIiB9KQogICAg
ICAgLkdldExvY2FsKDApCiAgICAgICAuSTMyQ29uc3QoMCkKLSAgICAgIC5UYWJsZVNldCgpCisg
ICAgICAuVGFibGVTZXQoMCkKICAgICAuRW5kKCkKICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0
KCkpLCBFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHZhbGlkYXRlOiB0YWJsZS5z
ZXQgdmFsdWUgdG8gdHlwZSBJMzIgZXhwZWN0ZWQgQW55ZnVuYywgaW4gZnVuY3Rpb24gYXQgaW5k
ZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScpIik7CiAKQEAgLTI2Nyw2
ICsyNjcsNyBAQCBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5l
dyBCdWlsZGVyKCkpCiAgICAgICAuVHlwZSgpLkVuZCgpCiAgICAgICAuRnVuY3Rpb24oKS5FbmQo
KQogICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMCwgZWxlbWVu
dDogImFueXJlZiJ9KQogICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAxLCBlbGVtZW50OiAi
YW55ZnVuYyJ9KQogICAgICAgLkVuZCgpCiAgICAgICAuR2xvYmFsKCkKQEAgLTI5MSwxMSArMjky
LDExIEBAIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1
aWxkZXIoKSkKICAgICAgICAgLkZ1bmN0aW9uKCJjYWxsX2dsb2IiLCB7IHBhcmFtczogWyJpMzIi
XSwgcmV0OiAiaTMyIiB9KQogICAgICAgICAgICAgLkkzMkNvbnN0KDApCiAgICAgICAgICAgICAu
R2V0R2xvYmFsKDApCi0gICAgICAgICAgICAuVGFibGVTZXQoKQorICAgICAgICAgICAgLlRhYmxl
U2V0KDEpCiAKICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQogICAgICAgICAgICAgLkkzMkNvbnN0
KDApCi0gICAgICAgICAgICAuQ2FsbEluZGlyZWN0KDIsMCkKKyAgICAgICAgICAgIC5DYWxsSW5k
aXJlY3QoMiwxKQogICAgICAgICAuRW5kKCkKIAogICAgICAgICAuRnVuY3Rpb24oInJldF8yMCIs
IHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIiIH0pCkBAIC0zMjgsNiArMzI5LDcgQEAgYXNz
ZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQog
ICAgICAgLlR5cGUoKS5FbmQoKQogICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKICAgICAgIC5UYWJs
ZSgpCisgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDAsIGVsZW1lbnQ6ICJhbnlyZWYifSkK
ICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMSwgZWxlbWVudDogImFueWZ1bmMifSkKICAg
ICAgIC5FbmQoKQogICAgICAgLkV4cG9ydCgpCkBAIC0zMzgsMTIgKzM0MCwxMiBAQCBhc3NlcnQu
dGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCiAgICAg
ICAgIC5GdW5jdGlvbigic2V0IiwgeyBwYXJhbXM6IFsiYW55ZnVuYyJdLCByZXQ6ICJ2b2lkIiB9
KQogICAgICAgICAgIC5JMzJDb25zdCgwKQogICAgICAgICAgIC5HZXRMb2NhbCgwKQotICAgICAg
ICAgIC5UYWJsZVNldCgpCisgICAgICAgICAgLlRhYmxlU2V0KDEpCiAgICAgICAgIC5FbmQoKQog
CiAgICAgICAgIC5GdW5jdGlvbigiZ2V0IiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlmdW5jIiB9
KQogICAgICAgICAgICAgLkkzMkNvbnN0KDApCi0gICAgICAgICAgICAuVGFibGVHZXQoKQorICAg
ICAgICAgICAgLlRhYmxlR2V0KDEpCiAgICAgICAgIC5FbmQoKQogICAgICAgLkVuZCgpLldlYkFz
c2VtYmx5KCkuZ2V0KCkpKTsKIApAQCAtNDA1LDcgKzQwNyw3IEBAIGZvciAobGV0IGltcG9ydGVk
RnVuIG9mIFtmdW5jdGlvbihpKSB7IHJldHVybiBpOyB9LCBtYWtlQW55ZnVuY0lkZW50KCldKSB7
CiAgICAgICAgICAgLkdldExvY2FsKDApCiAgICAgICAgICAgLkkzMkNvbnN0KDApCiAgICAgICAg
ICAgLlJlZkZ1bmMoMCkKLSAgICAgICAgICAuVGFibGVTZXQoKQorICAgICAgICAgIC5UYWJsZVNl
dCgwKQogICAgICAgICAgIC5JMzJDb25zdCgwKQogICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMCwg
MCkKICAgICAgICAgLkVuZCgpCkBAIC00MTQsNyArNDE2LDcgQEAgZm9yIChsZXQgaW1wb3J0ZWRG
dW4gb2YgW2Z1bmN0aW9uKGkpIHsgcmV0dXJuIGk7IH0sIG1ha2VBbnlmdW5jSWRlbnQoKV0pIHsK
ICAgICAgICAgICAuUmVmRnVuYygxKQogICAgICAgICAgIC5JMzJDb25zdCgwKQogICAgICAgICAg
IC5SZWZGdW5jKDApCi0gICAgICAgICAgLlRhYmxlU2V0KCkKKyAgICAgICAgICAuVGFibGVTZXQo
MCkKICAgICAgICAgICAuSTMyQ29uc3QoMCkKICAgICAgICAgICAuQ2FsbEluZGlyZWN0KDAsIDAp
CiAgICAgICAgIC5FbmQoKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvbXVs
dGl0YWJsZS5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL211bHRpdGFibGUuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzcxYzJmMDRkOThkMDNmYTM2MmIyNDAyMzg1NmE4YzkyNGYxMmQ5OAotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL211bHRpdGFibGUuanMKQEAgLTAsMCAr
MSw0NjAgQEAKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworaW1wb3J0
IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CisKK3sKKyAgICBjb25zdCAkMSA9IG5ldyBX
ZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigp
KQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQor
ICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAwLCBt
YXhpbXVtOiAwLCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAgICAgICAgICAgICAgLlRhYmxlKHtp
bml0aWFsOiAyMCwgbWF4aW11bTogMzAsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAu
RW5kKCkKKyAgICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRf
dGJsIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsIikKKyAgICAgICAgICAgICAg
LkZ1bmN0aW9uKCJnZXRfdGJsMCIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibDAi
KQorICAgICAgICAgICAgICAuVGFibGUoInRibCIsIDEpCisgICAgICAgICAgLkVuZCgpCisgICAg
ICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsIiwgeyBwYXJhbXM6
IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQor
ICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLlRhYmxlU2V0KDEpCisg
ICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsIiwgeyBw
YXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQor
ICAgICAgICAgICAgICAuVGFibGVHZXQoMSkKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAg
ICAgICAuRnVuY3Rpb24oImdldF90YmwwIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0p
CisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuVGFibGVHZXQoMCkK
KyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oInNldF90YmwwIiwg
eyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5JMzJD
b25zdCgwKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLlRhYmxl
U2V0KDApCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHko
KS5nZXQoKSkpOworCisgICAgZnVsbEdDKCkKKworICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdl
dF90YmwoKSwgbnVsbCkKKworICAgICQxLmV4cG9ydHMuc2V0X3RibCgiaGkiKQorICAgIGZ1bGxH
QygpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X3RibCgpLCAiaGkiKQorICAgIGFzc2Vy
dC5lcSgkMS5leHBvcnRzLnRibC5nZXQoMCksICJoaSIpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9y
dHMudGJsLmdldCgxKSwgbnVsbCkKKworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gJDEuZXhwb3J0
cy5nZXRfdGJsMCgpLCBFcnJvciwgIk91dCBvZiBib3VuZHMgdGFibGUgYWNjZXNzIChldmFsdWF0
aW5nICdmdW5jKC4uLmFyZ3MpJykiKTsKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9y
dHMuc2V0X3RibDAobnVsbCksIEVycm9yLCAiT3V0IG9mIGJvdW5kcyB0YWJsZSBhY2Nlc3MgKGV2
YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpOworfQorCit7CisgICAgY29uc3QgdGJsID0gbmV3
IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOjAsIGVsZW1lbnQ6ImFueXJlZiJ9KTsKKyAgICBj
b25zdCAkMSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxl
KChuZXcgQnVpbGRlcigpKQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgICAuSW1w
b3J0KCkKKyAgICAgICAgICAgICAgICAuVGFibGUoImltcCIsICJ0YmwiLCB7aW5pdGlhbDogMCwg
ZWxlbWVudDogImFueXJlZiJ9KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5GdW5jdGlv
bigpLkVuZCgpCisgICAgICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2lu
aXRpYWw6IDIwLCBtYXhpbXVtOiAzMCwgZWxlbWVudDogImFueXJlZiJ9KQorICAgICAgICAgIC5F
bmQoKQorICAgICAgICAgIC5FeHBvcnQoKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oInNldF90
YmwiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oImdldF90YmwiKQorICAgICAgICAgICAgICAu
RnVuY3Rpb24oImdldF90YmwwIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRfdGJsMCIp
CisgICAgICAgICAgICAgIC5UYWJsZSgidGJsIiwgMSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAg
ICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oInNldF90YmwiLCB7IHBhcmFtczog
WyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCisg
ICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAuVGFibGVTZXQoMSkKKyAg
ICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oImdldF90YmwiLCB7IHBh
cmFtczogW10sIHJldDogImFueXJlZiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCisg
ICAgICAgICAgICAgIC5UYWJsZUdldCgxKQorICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAg
ICAgIC5GdW5jdGlvbigiZ2V0X3RibDAiLCB7IHBhcmFtczogW10sIHJldDogImFueXJlZiIgfSkK
KyAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgIC5UYWJsZUdldCgwKQor
ICAgICAgICAgICAgLkVuZCgpCisKKyAgICAgICAgICAgIC5GdW5jdGlvbigic2V0X3RibDAiLCB7
IHBhcmFtczogWyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAgICAgLkkzMkNv
bnN0KDApCisgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAuVGFibGVT
ZXQoMCkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgp
LmdldCgpKSwgeyBpbXA6IHsgdGJsIH19KTsKKworICAgIGZ1bGxHQygpCisKKyAgICBhc3NlcnQu
ZXEoJDEuZXhwb3J0cy5nZXRfdGJsKCksIG51bGwpCisKKyAgICAkMS5leHBvcnRzLnNldF90Ymwo
ImhpIikKKyAgICBmdWxsR0MoKQorICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF90YmwoKSwg
ImhpIikKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy50YmwuZ2V0KDApLCAiaGkiKQorICAgIGFz
c2VydC5lcSgkMS5leHBvcnRzLnRibC5nZXQoMSksIG51bGwpCisKKyAgICBhc3NlcnQudGhyb3dz
KCgpID0+ICQxLmV4cG9ydHMuZ2V0X3RibDAoKSwgRXJyb3IsICJPdXQgb2YgYm91bmRzIHRhYmxl
IGFjY2VzcyAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIik7CisgICAgYXNzZXJ0LnRocm93
cygoKSA9PiAkMS5leHBvcnRzLnNldF90YmwwKG51bGwpLCBFcnJvciwgIk91dCBvZiBib3VuZHMg
dGFibGUgYWNjZXNzIChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKTsKK30KKworeworICAg
IGNvbnN0IHRibCA9IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDoxLCBlbGVtZW50OiJh
bnlyZWYifSk7CisgICAgY29uc3QgJDEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdl
YkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgp
CisgICAgICAgICAgLkltcG9ydCgpCisgICAgICAgICAgICAgICAgLlRhYmxlKCJpbXAiLCAidGJs
Iiwge2luaXRpYWw6IDEsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAuRW5kKCkKKyAg
ICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAg
ICAgICAgLlRhYmxlKHtpbml0aWFsOiAyMCwgbWF4aW11bTogMzAsIGVsZW1lbnQ6ICJhbnlyZWYi
fSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAgICAg
LkZ1bmN0aW9uKCJzZXRfdGJsIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsIikK
KyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsMCIpCisgICAgICAgICAgICAgIC5GdW5j
dGlvbigic2V0X3RibDAiKQorICAgICAgICAgICAgICAuVGFibGUoInRibCIsIDEpCisgICAgICAg
ICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJzZXRf
dGJsIiwgeyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAg
IC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAg
LlRhYmxlU2V0KDEpCisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9u
KCJnZXRfdGJsIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJhbnlyZWYiIH0pCisgICAgICAgICAgICAg
IC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuVGFibGVHZXQoMSkKKyAgICAgICAgICAgIC5F
bmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oImdldF90YmwwIiwgeyBwYXJhbXM6IFtdLCBy
ZXQ6ICJhbnlyZWYiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAg
ICAuVGFibGVHZXQoMCkKKyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rp
b24oInNldF90YmwwIiwgeyBwYXJhbXM6IFsiYW55cmVmIl0sIHJldDogInZvaWQiIH0pCisgICAg
ICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAg
ICAgICAgICAgLlRhYmxlU2V0KDApCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5k
KCkuV2ViQXNzZW1ibHkoKS5nZXQoKSksIHsgaW1wOiB7IHRibCB9fSk7CisKKyAgICBmdWxsR0Mo
KQorCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X3RibCgpLCBudWxsKQorCisgICAgJDEu
ZXhwb3J0cy5zZXRfdGJsKCJoaSIpCisgICAgZnVsbEdDKCkKKyAgICAkMS5leHBvcnRzLnNldF90
YmwwKG51bGwpCisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuZ2V0X3RibCgpLCAiaGkiKQorICAg
IGFzc2VydC5lcSgkMS5leHBvcnRzLmdldF90YmwwKCksIG51bGwpCisgICAgYXNzZXJ0LmVxKCQx
LmV4cG9ydHMudGJsLmdldCgwKSwgImhpIikKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0cy50Ymwu
Z2V0KDEpLCBudWxsKQorICAgIGFzc2VydC5lcSh0YmwuZ2V0KDApLCBudWxsKQorfQorCit7Cisg
ICAgY29uc3QgJDEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1v
ZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAg
LkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAgIC5U
YWJsZSh7aW5pdGlhbDogMywgbWF4aW11bTogMzAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAg
ICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAyLCBtYXhpbXVtOiAzMCwgZWxlbWVudDogImFu
eWZ1bmMifSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJjYWxsX3RibDAiKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oImNh
bGxfdGJsMSIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigicmV0NDIiKQorICAgICAgICAgICAg
ICAuRnVuY3Rpb24oInJldDEzMzciKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oInJldDI1NiIp
CisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVsZW1lbnQoKQorICAgICAgICAgICAgICAg
IC5FbGVtZW50KHt0YWJsZUluZGV4OiAxLCBvZmZzZXQ6IDAsIGZ1bmN0aW9uSW5kaWNlczogWzJd
fSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVu
Y3Rpb24oImNhbGxfdGJsMCIsIHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIiIH0pCisgICAg
ICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAuQ2FsbEluZGlyZWN0KDEsMCkK
KyAgICAgICAgICAgIC5FbmQoKQorCisgICAgICAgICAgICAuRnVuY3Rpb24oImNhbGxfdGJsMSIs
IHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIiIH0pCisgICAgICAgICAgICAgIC5HZXRMb2Nh
bCgwKQorICAgICAgICAgICAgICAuQ2FsbEluZGlyZWN0KDEsMSkKKyAgICAgICAgICAgIC5FbmQo
KQorCisgICAgICAgICAgICAuRnVuY3Rpb24oInJldDQyIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJp
MzIiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCg0MikKKyAgICAgICAgICAgIC5FbmQoKQor
CisgICAgICAgICAgICAuRnVuY3Rpb24oInJldDEzMzciLCB7IHBhcmFtczogW10sIHJldDogImkz
MiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDEzMzcpCisgICAgICAgICAgICAuRW5kKCkK
KworICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQyNTYiLCB7IHBhcmFtczogW10sIHJldDogImkz
MiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDI1NikKKyAgICAgICAgICAgIC5FbmQoKQor
ICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSk7CisKKyAgICBmdWxsR0MoKQor
CisgICAgYXNzZXJ0LmVxKCQxLmV4cG9ydHMuY2FsbF90YmwxKDApLCA0MikKKyAgICBhc3NlcnQu
dGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuY2FsbF90YmwwKDApLCBFcnJvciwgImNhbGxfaW5kaXJl
Y3QgdG8gYSBudWxsIHRhYmxlIGVudHJ5IChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQor
ICAgIGFzc2VydC50aHJvd3MoKCkgPT4gJDEuZXhwb3J0cy5jYWxsX3RibDEoMSksIEVycm9yLCAi
Y2FsbF9pbmRpcmVjdCB0byBhIG51bGwgdGFibGUgZW50cnkgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4u
YXJncyknKSIpCit9CisKK3sKKyAgICBjb25zdCAkMSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5j
ZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAgICAgICAgIC5UeXBl
KCkuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAgIC5UYWJsZSgp
CisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAzLCBtYXhpbXVtOiAzMCwgZWxlbWVu
dDogImFueWZ1bmMifSkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDIsIG1heGlt
dW06IDMwLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAg
IC5FeHBvcnQoKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oImNhbGxfdGJsMCIpCisgICAgICAg
ICAgICAgIC5GdW5jdGlvbigiY2FsbF90YmwxIikKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJy
ZXQ0MiIpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigicmV0MTMzNyIpCisgICAgICAgICAgICAg
IC5GdW5jdGlvbigicmV0MjU2IikKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRWxlbWVu
dCgpCisgICAgICAgICAgICAgICAgLkVsZW1lbnQoe3RhYmxlSW5kZXg6IDEsIG9mZnNldDogMCwg
ZnVuY3Rpb25JbmRpY2VzOiBbMl19KQorICAgICAgICAgICAgICAgIC5FbGVtZW50KHt0YWJsZUlu
ZGV4OiAwLCBvZmZzZXQ6IDAsIGZ1bmN0aW9uSW5kaWNlczogWzNdfSkKKyAgICAgICAgICAgICAg
ICAuRWxlbWVudCh7dGFibGVJbmRleDogMSwgb2Zmc2V0OiAxLCBmdW5jdGlvbkluZGljZXM6IFs0
XX0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1
bmN0aW9uKCJjYWxsX3RibDAiLCB7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9KQorICAg
ICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgxLDAp
CisgICAgICAgICAgICAuRW5kKCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJjYWxsX3RibDEi
LCB7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgICAgICAuR2V0TG9j
YWwoMCkKKyAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgxLDEpCisgICAgICAgICAgICAuRW5k
KCkKKworICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQ0MiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAi
aTMyIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3QoNDIpCisgICAgICAgICAgICAuRW5kKCkK
KworICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQxMzM3IiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJp
MzIiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgxMzM3KQorICAgICAgICAgICAgLkVuZCgp
CisKKyAgICAgICAgICAgIC5GdW5jdGlvbigicmV0MjU2IiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJp
MzIiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgyNTYpCisgICAgICAgICAgICAuRW5kKCkK
KyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSkpOworCisgICAgZnVsbEdDKCkK
KworICAgIGFzc2VydC5lcSgkMS5leHBvcnRzLmNhbGxfdGJsMSgwKSwgNDIpCisgICAgYXNzZXJ0
LmVxKCQxLmV4cG9ydHMuY2FsbF90YmwwKDApLCAxMzM3KQorICAgIGFzc2VydC5lcSgkMS5leHBv
cnRzLmNhbGxfdGJsMSgxKSwgMjU2KQorICAgIGFzc2VydC50aHJvd3MoKCkgPT4gJDEuZXhwb3J0
cy5jYWxsX3RibDAoMSksIEVycm9yLCAiY2FsbF9pbmRpcmVjdCB0byBhIG51bGwgdGFibGUgZW50
cnkgKGV2YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisgICAgYXNzZXJ0LnRocm93cygoKSA9
PiAkMS5leHBvcnRzLmNhbGxfdGJsMCgyKSwgRXJyb3IsICJjYWxsX2luZGlyZWN0IHRvIGEgbnVs
bCB0YWJsZSBlbnRyeSAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikKKyAgICBhc3NlcnQu
dGhyb3dzKCgpID0+ICQxLmV4cG9ydHMuY2FsbF90YmwxKDIpLCBFcnJvciwgIk91dCBvZiBib3Vu
ZHMgY2FsbF9pbmRpcmVjdCAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikKK30KKyBhc3Nl
cnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHku
TW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAg
ICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAgICAg
LlRhYmxlKHtpbml0aWFsOiAzLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAg
ICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMiwgbWF4aW11bTogMiwgZWxlbWVudDogImFu
eWZ1bmMifSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRWxlbWVudCgpCisgICAgICAg
ICAgICAgICAgLkVsZW1lbnQoe3RhYmxlSW5kZXg6IDEsIG9mZnNldDogMCwgZnVuY3Rpb25JbmRp
Y2VzOiBbMF19KQorICAgICAgICAgICAgICAgIC5FbGVtZW50KHt0YWJsZUluZGV4OiAwLCBvZmZz
ZXQ6IDAsIGZ1bmN0aW9uSW5kaWNlczogWzBdfSkKKyAgICAgICAgICAgICAgICAuRWxlbWVudCh7
dGFibGVJbmRleDogMSwgb2Zmc2V0OiAyLCBmdW5jdGlvbkluZGljZXM6IFswXX0pCisgICAgICAg
ICAgLkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJyZXQ0
MiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgICAgICAuSTMyQ29uc3Qo
NDIpCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5n
ZXQoKSkpLCBFcnJvciwgIkVsZW1lbnQgaXMgdHJ5aW5nIHRvIHNldCBhbiBvdXQgb2YgYm91bmRz
IHRhYmxlIGluZGV4IChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UnKSIpCisK
K2Fzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3Nl
bWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAg
ICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAg
ICAgICAuVGFibGUoe2luaXRpYWw6IDMsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlyZWYifSkK
KyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDIsIG1heGltdW06IDMsIGVsZW1lbnQ6
ICJhbnlmdW5jIn0pCisgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVsZW1lbnQoKQorICAg
ICAgICAgICAgICAgIC5FbGVtZW50KHt0YWJsZUluZGV4OiAxLCBvZmZzZXQ6IDAsIGZ1bmN0aW9u
SW5kaWNlczogWzBdfSkKKyAgICAgICAgICAgICAgICAuRWxlbWVudCh7dGFibGVJbmRleDogMCwg
b2Zmc2V0OiAwLCBmdW5jdGlvbkluZGljZXM6IFswXX0pCisgICAgICAgICAgICAgICAgLkVsZW1l
bnQoe3RhYmxlSW5kZXg6IDEsIG9mZnNldDogMiwgZnVuY3Rpb25JbmRpY2VzOiBbMF19KQorICAg
ICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigi
cmV0NDIiLCB7IHBhcmFtczogW10sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNv
bnN0KDQyKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5
KCkuZ2V0KCkpKSwgRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBi
eXRlIDQwOiBUYWJsZSAwIG11c3QgaGF2ZSB0eXBlICdhbnlmdW5jJyB0byBoYXZlIGFuIGVsZW1l
bnQgc2VjdGlvbiAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScpIikKKworYXNz
ZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5
Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAg
ICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAg
IC5UYWJsZSh7aW5pdGlhbDogMywgbWF4aW11bTogMywgZWxlbWVudDogImFueXJlZiJ9KQorICAg
ICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMiwgbWF4aW11bTogMywgZWxlbWVudDogImFu
eWZ1bmMifSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAg
ICAuRnVuY3Rpb24oImZ1biIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiYW55cmVmIiB9KQorICAgICAg
ICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLlRhYmxlR2V0KDIpCisgICAgICAg
ICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSkpLCBFcnJv
ciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHZhbGlkYXRlOiB0YWJsZSBpbmRleCAyIGlz
IGludmFsaWQsIGxpbWl0IGlzIDIsIGluIGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcg
J25ldyBXZWJBc3NlbWJseS5Nb2R1bGUnKSIpCisKK2Fzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdl
YkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkp
CisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisg
ICAgICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDMsIG1h
eGltdW06IDMsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2lu
aXRpYWw6IDIsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgLkVu
ZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJmdW4iLCB7IHBh
cmFtczogW10sIHJldDogInZvaWQiIH0pCisgICAgICAgICAgICAgIC5JMzJDb25zdCgwKQorICAg
ICAgICAgICAgICAuUmVmTnVsbCgpCisgICAgICAgICAgICAgIC5UYWJsZVNldCgyKQorICAgICAg
ICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKSwgRXJy
b3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCB2YWxpZGF0ZTogdGFibGUgaW5kZXggMiBp
cyBpbnZhbGlkLCBsaW1pdCBpcyAyLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5n
ICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlJykiKQorCithc3NlcnQudGhyb3dzKCgpID0+IG5ldyBX
ZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigp
KQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQor
ICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAzLCBt
YXhpbXVtOiAzLCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAgICAgICAgICAgICAgLlRhYmxlKHtp
bml0aWFsOiAyLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgICAgIC5F
bmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZnVuIiwgeyBw
YXJhbXM6IFtdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgICAuQ2FsbEluZGlyZWN0KDAs
IDIpCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5n
ZXQoKSkpLCBFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUg
NDogY2FsbF9pbmRpcmVjdCdzIHRhYmxlIGluZGV4IDIgaW52YWxpZCwgbGltaXQgaXMgMiwgaW4g
ZnVuY3Rpb24gYXQgaW5kZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScp
IikKKworYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdl
YkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAuVHlwZSgpLkVuZCgp
CisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAuVGFibGUoKQorICAgICAg
ICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMywgbWF4aW11bTogMywgZWxlbWVudDogImFueXJl
ZiJ9KQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMiwgbWF4aW11bTogMywgZWxl
bWVudDogImFueWZ1bmMifSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisg
ICAgICAgICAgICAuRnVuY3Rpb24oImZ1biIsIHsgcGFyYW1zOiBbXSwgcmV0OiAidm9pZCIgfSkK
KyAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgwLDApCisgICAgICAgICAgICAuRW5kKCkKKyAg
ICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSkpLCBFcnJvciwgIldlYkFzc2VtYmx5
Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgNDogY2FsbF9pbmRpcmVjdCBpcyBvbmx5IHZh
bGlkIHdoZW4gYSB0YWJsZSBoYXMgdHlwZSBhbnlmdW5jLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAw
IChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlJykiKQorCithc3NlcnQudGhyb3dz
KCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChu
ZXcgQnVpbGRlcigpKQorICAgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgICAuRnVuY3Rp
b24oKS5FbmQoKQorICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAgICAgLlRhYmxlKHtp
bml0aWFsOiAzLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55cmVmIn0pCisgICAgICAgICAgICAg
ICAgLlRhYmxlKHtpbml0aWFsOiAyLCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQor
ICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlv
bigiZnVuIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAgICAgICAgICAuUmVm
TnVsbCgpCisgICAgICAgICAgICAgIC5UYWJsZUdldCgwKQorICAgICAgICAgICAgLkVuZCgpCisg
ICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKSwgRXJyb3IsICJXZWJBc3NlbWJs
eS5Nb2R1bGUgZG9lc24ndCB2YWxpZGF0ZTogdGFibGUuZ2V0IGluZGV4IHRvIHR5cGUgQW55ZnVu
YyBleHBlY3RlZCBJMzIsIGluIGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUnKSIpCisKKworYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNz
ZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAg
ICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAg
ICAgICAuVGFibGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMywgbWF4aW11
bTogMywgZWxlbWVudDogImFueXJlZiJ9KQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlh
bDogMiwgbWF4aW11bTogMywgZWxlbWVudDogImFueWZ1bmMifSkKKyAgICAgICAgICAuRW5kKCkK
KyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZ1biIsIHsgcGFyYW1z
OiBbXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAgICAgLlJlZk51bGwoKQorICAgICAgICAg
ICAgICAuUmVmTnVsbCgpCisgICAgICAgICAgICAgIC5UYWJsZVNldCgwKQorICAgICAgICAgICAg
LkVuZCgpCisgICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKSwgRXJyb3IsICJX
ZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCB2YWxpZGF0ZTogdGFibGUuc2V0IGluZGV4IHRvIHR5
cGUgQW55ZnVuYyBleHBlY3RlZCBJMzIsIGluIGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRp
bmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUnKSIpCisKK2Fzc2VydC50aHJvd3MoKCkgPT4gbmV3
IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVy
KCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgp
CisgICAgICAgICAgLlRhYmxlKCkKKyAgICAgICAgICAgICAgICAuVGFibGUoe2luaXRpYWw6IDMs
IG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlyZWYifSkKKyAgICAgICAgICAgICAgICAuVGFibGUo
e2luaXRpYWw6IDIsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAg
LkVuZCgpCisgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJmdW4iLCB7
IHBhcmFtczogWyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAgICAgLkkzMkNv
bnN0KDApCisgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAuVGFibGVT
ZXQoMSkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgp
LmdldCgpKSksIEVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgdmFsaWRhdGU6IHRh
YmxlLnNldCB2YWx1ZSB0byB0eXBlIEFueXJlZiBleHBlY3RlZCBBbnlmdW5jLCBpbiBmdW5jdGlv
biBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlJykiKQorCitm
dW5jdGlvbiB0YWJsZUluc2FuaXR5KG51bSwgYikgeworICAgIGIgPSBiLkltcG9ydCgpCisgICAg
Zm9yIChsZXQgaT0wOyBpPDEwMDAwMC0xOyArK2kpCisgICAgICAgIGIgPSBiLkZ1bmN0aW9uKCJp
bXAiLCAicmVmIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJ2b2lkIiB9KQorICAgIGIgPSBiLkVuZCgp
LkZ1bmN0aW9uKCkuRW5kKCkuVGFibGUoKQorICAgIGZvciAobGV0IGk9MDsgaTxudW07ICsraSkK
KyAgICAgICAgYiA9IGIuVGFibGUoe2luaXRpYWw6IDAsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJh
bnlyZWYifSkKKyAgICByZXR1cm4gYgorfQorCithc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJB
c3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKHRhYmxlSW5zYW5pdHkoMTAw
MDAwMCwgKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgLlR5cGUoKS5FbmQoKSkKKyAgICAgICAg
ICAgICAgICAuVGFibGUoe2luaXRpYWw6IDMsIG1heGltdW06IDMsIGVsZW1lbnQ6ICJhbnlyZWYi
fSkKKyAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVu
Y3Rpb24oImZ1biIsIHsgcGFyYW1zOiBbImFueXJlZiJdLCByZXQ6ICJ2b2lkIiB9KQorICAgICAg
ICAgICAgICAuSTMyQ29uc3QoMCkKKyAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAg
ICAgICAgIC5UYWJsZVNldCgxKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVuZCgp
LldlYkFzc2VtYmx5KCkuZ2V0KCkpKSwgRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24n
dCBwYXJzZSBhdCBieXRlIDUwMDAwMjc6IFRhYmxlIGNvdW50IG9mIDEwMDAwMDAgaXMgdG9vIGJp
ZywgbWF4aW11bSAxMDAwMDAwIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlJyki
KQoreworICAgIGNvbnN0ICQxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3Nl
bWJseS5Nb2R1bGUodGFibGVJbnNhbml0eSgxMDAwMDAwLTIsIChuZXcgQnVpbGRlcigpKQorICAg
ICAgICAgIC5UeXBlKCkuRW5kKCkpCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFsOiAz
LCBtYXhpbXVtOiAzLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgICAgICAgICAgIC5UYWJs
ZSh7aW5pdGlhbDogMywgbWF4aW11bTogMywgZWxlbWVudDogImFueXJlZiJ9KQorICAgICAgICAg
IC5FbmQoKQorICAgICAgICAgIC5FeHBvcnQoKQorICAgICAgICAgICAgICAgIC5GdW5jdGlvbigi
c2V0X3RibCIpCisgICAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJnZXRfdGJsIikKKyAgICAgICAg
ICAgICAgICAuRnVuY3Rpb24oImNhbGwiKQorICAgICAgICAgIC5FbmQoKQorICAgICAgICAgIC5F
bGVtZW50KCkKKyAgICAgICAgICAgICAgICAuRWxlbWVudCh7dGFibGVJbmRleDogMTAwMDAwMC0y
LCBvZmZzZXQ6IDAsIGZ1bmN0aW9uSW5kaWNlczogWzBdfSkKKyAgICAgICAgICAuRW5kKCkKKyAg
ICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oInNldF90YmwiLCB7IHBhcmFt
czogWyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDAp
CisgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAuVGFibGVTZXQoMTAw
MDAwMC0xKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImdldF90
YmwiLCB7IHBhcmFtczogW10sIHJldDogImFueXJlZiIgfSkKKyAgICAgICAgICAgICAgLkkzMkNv
bnN0KDApCisgICAgICAgICAgICAgIC5UYWJsZUdldCgxMDAwMDAwLTEpCisgICAgICAgICAgICAu
RW5kKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiY2FsbCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAi
dm9pZCIgfSkKKyAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAgIC5DYWxs
SW5kaXJlY3QoMCwgMTAwMDAwMC0yKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgLkVu
ZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpLCB7IGltcDogeyByZWY6IGZ1bmN0aW9uICgpIHt9IH0g
fSkKKyAgICAkMS5leHBvcnRzLnNldF90YmwoImhpIikKKyAgICBhc3NlcnQuZXEoJDEuZXhwb3J0
cy5nZXRfdGJsKCksICJoaSIpCisgICAgJDEuZXhwb3J0cy5jYWxsKCkKK30KZGlmZiAtLWdpdCBh
L0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL3ZhbGlkYXRpb24uanMgYi9KU1Rlc3RzL3dhc20vcmVm
ZXJlbmNlcy92YWxpZGF0aW9uLmpzCmluZGV4IDhmODE2MzY5YTc0ZTg5ZTQ5ZTY5MDlkZjQ0NTU1
MGZkMGY2NmMyMTYuLjdmN2QxODQyN2I3NWQzNzA1MmFkNjQ4NDVlMzcxNWMxY2FlZGVlM2QgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL3ZhbGlkYXRpb24uanMKKysrIGIvSlNU
ZXN0cy93YXNtL3JlZmVyZW5jZXMvdmFsaWRhdGlvbi5qcwpAQCAtMjQsNiArMjQsOSBAQCBpbXBv
cnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKIHsKICAgICBjb25zdCBidWlsZGVyID0g
KG5ldyBCdWlsZGVyKCkpCiAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAuSW1wb3J0KCkKKyAg
ICAgICAgICAgIC5UYWJsZSgiaW1wIiwgInRibCIsIHtpbml0aWFsOiAyLCBlbGVtZW50OiAiYW55
ZnVuYyJ9KQorICAgICAgLkVuZCgpCiAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQogICAgICAgLkV4
cG9ydCgpCiAgICAgICAgICAgLkZ1bmN0aW9uKCJqIikKQEAgLTMyLDE0ICszNSwxNCBAQCBpbXBv
cnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKICAgICAgICAgLkZ1bmN0aW9uKCJqIiwg
eyBwYXJhbXM6IFtdLCByZXQ6ICJ2b2lkIiB9KQogICAgICAgICAgICAgLkkzMkNvbnN0KDApCiAg
ICAgICAgICAgICAuSTMyQ29uc3QoMCkKLSAgICAgICAgICAgIC5UYWJsZVNldCgpCisgICAgICAg
ICAgICAuVGFibGVTZXQoMCkKICAgICAgICAgLkVuZCgpCiAgICAgICAuRW5kKCk7CiAKICAgICBj
b25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCk7CiAgICAgYmluLnRyaW0oKTsKIAotICAg
IGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4uZ2V0KCkpLCBX
ZWJBc3NlbWJseS5Db21waWxlRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCB2YWxp
ZGF0ZTogdGFibGUuc2V0IHZhbHVlIHRvIHR5cGUgSTMyIGV4cGVjdGVkIEFueXJlZiwgaW4gZnVu
Y3Rpb24gYXQgaW5kZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4u
Z2V0KCkpJykiKTsKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1
bGUoYmluLmdldCgpKSwgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLCAiV2ViQXNzZW1ibHkuTW9k
dWxlIGRvZXNuJ3QgdmFsaWRhdGU6IHRhYmxlLnNldCB2YWx1ZSB0byB0eXBlIEkzMiBleHBlY3Rl
ZCBBbnlmdW5jLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNz
ZW1ibHkuTW9kdWxlKGJpbi5nZXQoKSknKSIpOwogfQogCiB7CkBAIC01Niw3ICs1OSw3IEBAIGlt
cG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwogICAgICAgICAuRnVuY3Rpb24oImoi
LCB7IHBhcmFtczogWyJhbnlyZWYiXSwgcmV0OiAidm9pZCIgfSkKICAgICAgICAgICAgIC5JMzJD
b25zdCgwKQogICAgICAgICAgICAgLkdldExvY2FsKDApCi0gICAgICAgICAgICAuVGFibGVTZXQo
KQorICAgICAgICAgICAgLlRhYmxlU2V0KDApCiAgICAgICAgIC5FbmQoKQogICAgICAgLkVuZCgp
OwogCkBAIC03OSw3ICs4Miw3IEBAIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMn
OwogICAgICAgLkNvZGUoKQogICAgICAgICAuRnVuY3Rpb24oImoiLCB7IHBhcmFtczogW10sIHJl
dDogImFueXJlZiIgfSkKICAgICAgICAgICAgIC5JMzJDb25zdCgwKQotICAgICAgICAgICAgLlRh
YmxlR2V0KCkKKyAgICAgICAgICAgIC5UYWJsZUdldCgwKQogICAgICAgICAuRW5kKCkKICAgICAg
IC5FbmQoKTsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3NwZWMtdGVzdHMvaW1wb3J0cy53
YXN0LmpzIGIvSlNUZXN0cy93YXNtL3NwZWMtdGVzdHMvaW1wb3J0cy53YXN0LmpzCmluZGV4IDQ4
ZDE0MDk2NmE0Zjc1ODM2NzA4MDI5N2E0YzAzY2FhNzQ4MzM1MzEuLjZiM2ZhYWZhZDk2ZjdlYmVm
NDI5OGQ0MjlhYmQ5MWIwYmZhODY2OGIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9zcGVjLXRl
c3RzL2ltcG9ydHMud2FzdC5qcworKysgYi9KU1Rlc3RzL3dhc20vc3BlYy10ZXN0cy9pbXBvcnRz
Lndhc3QuanMKQEAgLTE4OCwxNSArMTg4LDYgQEAgYXNzZXJ0X3RyYXAoKCkgPT4gY2FsbCgkMTQs
ICJjYWxsIiwgWzNdKSk7CiAvLyBpbXBvcnRzLndhc3Q6MjkwCiBhc3NlcnRfdHJhcCgoKSA9PiBj
YWxsKCQxNCwgImNhbGwiLCBbMTAwXSkpOwogCi0vLyBpbXBvcnRzLndhc3Q6MjkzCi1hc3NlcnRf
aW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAyXHg4ZFx4ODBceDgw
XHg4MFx4MDBceDAyXHgwMFx4MDBceDAxXHg3MFx4MDBceDBhXHgwMFx4MDBceDAxXHg3MFx4MDBc
eDBhIik7Ci0KLS8vIGltcG9ydHMud2FzdDoyOTcKLWFzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4
NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDJceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgw
MFx4MDFceDcwXHgwMFx4MGFceDA0XHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg3MFx4MDBceDBh
Iik7Ci0KLS8vIGltcG9ydHMud2FzdDozMDEKLWFzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDRceDg3XHg4MFx4ODBceDgwXHgwMFx4MDJceDcwXHgwMFx4
MGFceDcwXHgwMFx4MGEiKTsKLQogLy8gaW1wb3J0cy53YXN0OjMwNgogbGV0ICQxNSA9IGluc3Rh
bmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDJceDk3XHg4MFx4ODBceDgw
XHgwMFx4MDFceDA0XHg3NFx4NjVceDczXHg3NFx4MGNceDc0XHg2MVx4NjJceDZjXHg2NVx4MmRc
eDMxXHgzMFx4MmRceDY5XHg2ZVx4NjZceDAxXHg3MFx4MDBceDBhIik7CiAKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvd2FzbS93YXNtLmpzb24gYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCmluZGV4IDY0
Y2EwYjViMjA4ZDkxYjJiZjc4NjU1NzU3MTI0NzNkNWI3MjUwYTMuLjQ1MzA4ZmJiZDU3NTMyZjVl
YmExMzk1NmNhYWNkMDU1OTM0YWNiYWYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS93YXNtLmpz
b24KKysrIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgpAQCAtNjcsMTAgKzY3LDEwIEBACiAgICAg
ICAgICJ0ZWVfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2
YWx1ZSI6ICAzNCwgInJldHVybiI6IFsiYW55Il0sICAgICAgInBhcmFtZXRlciI6IFsiYW55Il0s
ICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAibG9jYWxfaW5kZXgiLCAg
ICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAid3JpdGUgYSBsb2NhbCB2YXJpYWJsZSBvciBwYXJh
bWV0ZXIgYW5kIHJldHVybiB0aGUgc2FtZSB2YWx1ZSIgfSwKICAgICAgICAgImdldF9nbG9iYWwi
OiAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM1LCAicmV0
dXJuIjogWyJhbnkiXSwgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAg
ICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJnbG9iYWxfaW5kZXgiLCAgICJ0eXBlIjogInZhcnVp
bnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJyZWFkIGEgZ2xvYmFsIHZhcmlhYmxlIiB9LAogICAgICAgICAic2V0X2dsb2Jh
bCI6ICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzYsICJy
ZXR1cm4iOiBbXSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFueSJdLCAgICAgICAgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImdsb2JhbF9pbmRleCIsICAgInR5cGUiOiAidmFy
dWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIndyaXRlIGEgZ2xvYmFsIHZhcmlhYmxlIiB9LAotICAgICAgICAidGFibGUu
Z2V0IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzcs
ICJyZXR1cm4iOiBbImFueXJlZiJdLCAgICJwYXJhbWV0ZXIiOiBbImkzMiJdLCAgICAgICAgICAg
ICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogImdldCBhIHRhYmxlIHZhbHVlIiB9LAotICAgICAgICAidGFibGUuc2V0
IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzgsICJy
ZXR1cm4iOiBbXSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImkzMiIsICJhbnlyZWYiXSwgICAg
ICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogInNldCBhIHRhYmxlIHZhbHVlIiB9LAorICAgICAgICAidGFibGUuZ2V0Ijog
ICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzcsICJyZXR1
cm4iOiBbImFueXJlZiJdLCAgICJwYXJhbWV0ZXIiOiBbImkzMiJdLCAgICAgICAgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInRhYmxlX2luZGV4IiwgICAgInR5cGUiOiAidmFydWlu
dDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogImdldCBhIHRhYmxlIHZhbHVlIiB9LAorICAgICAgICAidGFibGUuc2V0IjogICAg
ICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzgsICJyZXR1cm4i
OiBbXSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImkzMiIsICJhbnlyZWYiXSwgICAgICAgICJp
bW1lZGlhdGUiOiBbeyJuYW1lIjogInRhYmxlX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMy
In1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogInNldCBhIHRhYmxlIHZhbHVlIiB9LAogICAgICAgICAiY2FsbCI6ICAgICAgICAgICAg
ICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTYsICJyZXR1cm4iOiBb
ImNhbGwiXSwgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2luZGV4IiwgInR5cGUiOiAidmFydWludDMyIn1d
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogImNhbGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0sCi0gICAgICAgICJjYWxsX2luZGly
ZWN0IjogICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxNywgInJl
dHVybiI6IFsiY2FsbCJdLCAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAg
ICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1
aW50MzIifSwgeyJuYW1lIjogInJlc2VydmVkIiwgInR5cGUiOiAidmFydWludDEifV0sICAiZGVz
Y3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2ln
bmF0dXJlIiB9LAorICAgICAgICAiY2FsbF9pbmRpcmVjdCI6ICAgICAgIHsgImNhdGVnb3J5Ijog
ImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTcsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICJwYXJh
bWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjog
InR5cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJ0YWJsZV9p
bmRleCIsInR5cGUiOiAidmFydWludDMyIn1dLCJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rp
b24gaW5kaXJlY3Qgd2l0aCBhbiBleHBlY3RlZCBzaWduYXR1cmUiIH0sCiAgICAgICAgICJpMzIu
bG9hZDhfcyI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0
NCwgInJldHVybiI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAg
ICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6
ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAidmFydWludDMyIn1d
LCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKICAgICAgICAgImkzMi5sb2Fk
OF91IjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ1LCAi
cmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAg
ICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZh
cnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJk
ZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAgICAiaTMyLmxvYWQxNl9z
IjogICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDYsICJyZXR1
cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWlu
dDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2Ny
aXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>